From 25adbdabb47499fe641c7bd9595024ff82667058 Mon Sep 17 00:00:00 2001 From: Xavier Roche Date: Mon, 19 Mar 2012 12:51:31 +0000 Subject: httrack 3.30.1 --- AUTHORS | 1 + COPYING | 680 +- ChangeLog | 0 HelpHtml/abuse.html | 580 -- HelpHtml/addurl.html | 155 - HelpHtml/cmddoc.html | 155 - HelpHtml/contact.html | 227 - HelpHtml/dev.html | 262 - HelpHtml/div/search.sh | 59 - HelpHtml/faq.html | 902 --- HelpHtml/fcguide.html | 2719 ------- HelpHtml/filters.html | 261 - HelpHtml/httrack.css | 70 - HelpHtml/httrack.man.html | 2122 ----- HelpHtml/images/bg_rings.gif | Bin 4243 -> 0 bytes HelpHtml/images/header_title_4.gif | Bin 2000 -> 0 bytes HelpHtml/images/screenshot_01.jpg | Bin 6046 -> 0 bytes HelpHtml/img/addurl1.gif | Bin 9690 -> 0 bytes HelpHtml/img/addurl2.gif | Bin 9834 -> 0 bytes HelpHtml/img/addurl3.gif | Bin 10533 -> 0 bytes HelpHtml/img/addurl4.gif | Bin 9686 -> 0 bytes HelpHtml/img/addurl5.gif | Bin 9680 -> 0 bytes HelpHtml/img/backblue.gif | Bin 5616 -> 0 bytes HelpHtml/img/fade.gif | Bin 828 -> 0 bytes HelpHtml/img/httrack.gif | Bin 4908 -> 0 bytes HelpHtml/img/snap1_a.gif | Bin 9925 -> 0 bytes HelpHtml/img/snap1_b.gif | Bin 10569 -> 0 bytes HelpHtml/img/snap1_c.gif | Bin 21952 -> 0 bytes HelpHtml/img/snap2_a.gif | Bin 49391 -> 0 bytes HelpHtml/img/snap2_b.gif | Bin 41329 -> 0 bytes HelpHtml/img/snap3_a.gif | Bin 40089 -> 0 bytes HelpHtml/img/snap4_a.gif | Bin 37990 -> 0 bytes HelpHtml/img/snap5_a.gif | Bin 14993 -> 0 bytes HelpHtml/img/snap9.gif | Bin 4847 -> 0 bytes HelpHtml/img/snap9_a.gif | Bin 3450 -> 0 bytes HelpHtml/img/snap9_b.gif | Bin 4458 -> 0 bytes HelpHtml/img/snap9_c.gif | Bin 3445 -> 0 bytes HelpHtml/img/snap9_d.gif | Bin 6850 -> 0 bytes HelpHtml/img/snap9_d2.gif | Bin 9871 -> 0 bytes HelpHtml/img/snap9_d3.gif | Bin 8199 -> 0 bytes HelpHtml/img/snap9_d4.gif | Bin 8083 -> 0 bytes HelpHtml/img/snap9_d5.gif | Bin 10404 -> 0 bytes HelpHtml/img/snap9_d6.gif | Bin 9051 -> 0 bytes HelpHtml/img/snap9_d7.gif | Bin 9088 -> 0 bytes HelpHtml/img/snap9_d8.gif | Bin 3525 -> 0 bytes HelpHtml/img/snap9_e.gif | Bin 3491 -> 0 bytes HelpHtml/img/snap9_f.gif | Bin 3380 -> 0 bytes HelpHtml/img/snap9_g.gif | Bin 2888 -> 0 bytes HelpHtml/img/snap9_g2.gif | Bin 9388 -> 0 bytes HelpHtml/img/snap9_g3.gif | Bin 13593 -> 0 bytes HelpHtml/img/snap9_h.gif | Bin 2874 -> 0 bytes HelpHtml/img/snap9_i.gif | Bin 2459 -> 0 bytes HelpHtml/img/snap9_j.gif | Bin 4844 -> 0 bytes HelpHtml/img/snap9_k.gif | Bin 4935 -> 0 bytes HelpHtml/index.html | 153 - HelpHtml/options.html | 363 - HelpHtml/overview.html | 156 - HelpHtml/shelldoc.html | 135 - HelpHtml/start.html | 16 - HelpHtml/step.html | 139 - HelpHtml/step1.html | 154 - HelpHtml/step2.html | 168 - HelpHtml/step3.html | 140 - HelpHtml/step4.html | 139 - HelpHtml/step5.html | 138 - HelpHtml/step9.html | 155 - HelpHtml/step9_opt1.html | 156 - HelpHtml/step9_opt10.html | 162 - HelpHtml/step9_opt11.html | 193 - HelpHtml/step9_opt2.html | 192 - HelpHtml/step9_opt3.html | 156 - HelpHtml/step9_opt4.html | 187 - HelpHtml/step9_opt5.html | 176 - HelpHtml/step9_opt6.html | 173 - HelpHtml/step9_opt7.html | 162 - HelpHtml/step9_opt8.html | 152 - HelpHtml/step9_opt9.html | 167 - INSTALL | 265 +- Makefile | 9 - Makefile.am | 6 + Makefile.in | 543 ++ NEWS | 0 README | 6 +- aclocal.m4 | 4460 +++++++++++ config.guess | 1391 ++++ config.h.in | 94 + config.sub | 1492 ++++ configure | 10879 ++++++++++++++++++++++++++ configure.in | 173 + depcomp | 423 + greetings.txt | 20 +- history.txt | 90 +- html/Makefile.am | 32 + html/Makefile.in | 539 ++ html/abuse.html | 591 ++ html/addurl.html | 155 + html/cmddoc.html | 155 + html/contact.html | 270 + html/dev.html | 147 + html/div/search.sh | 60 + html/faq.html | 937 +++ html/fcguide.html | 2719 +++++++ html/filters.html | 276 + html/httrack.css | 70 + html/httrack.man.html | 2447 ++++++ html/images/bg_rings.gif | Bin 0 -> 4243 bytes html/images/header_title_4.gif | Bin 0 -> 2000 bytes html/images/screenshot_01.jpg | Bin 0 -> 6046 bytes html/images/screenshot_01b.jpg | Bin 0 -> 8473 bytes html/img/addurl1.gif | Bin 0 -> 9690 bytes html/img/addurl2.gif | Bin 0 -> 9834 bytes html/img/addurl3.gif | Bin 0 -> 10533 bytes html/img/addurl4.gif | Bin 0 -> 9686 bytes html/img/addurl5.gif | Bin 0 -> 9680 bytes html/img/backblue.gif | Bin 0 -> 5616 bytes html/img/fade.gif | Bin 0 -> 828 bytes html/img/httrack.gif | Bin 0 -> 4908 bytes html/img/snap1_a.gif | Bin 0 -> 9925 bytes html/img/snap1_b.gif | Bin 0 -> 10569 bytes html/img/snap1_c.gif | Bin 0 -> 21952 bytes html/img/snap2_a.gif | Bin 0 -> 49391 bytes html/img/snap2_b.gif | Bin 0 -> 41329 bytes html/img/snap3_a.gif | Bin 0 -> 40089 bytes html/img/snap4_a.gif | Bin 0 -> 37990 bytes html/img/snap5_a.gif | Bin 0 -> 14993 bytes html/img/snap9.gif | Bin 0 -> 4847 bytes html/img/snap9_a.gif | Bin 0 -> 3450 bytes html/img/snap9_b.gif | Bin 0 -> 4458 bytes html/img/snap9_c.gif | Bin 0 -> 3445 bytes html/img/snap9_d.gif | Bin 0 -> 6850 bytes html/img/snap9_d2.gif | Bin 0 -> 9871 bytes html/img/snap9_d3.gif | Bin 0 -> 8199 bytes html/img/snap9_d4.gif | Bin 0 -> 8083 bytes html/img/snap9_d5.gif | Bin 0 -> 10404 bytes html/img/snap9_d6.gif | Bin 0 -> 9051 bytes html/img/snap9_d7.gif | Bin 0 -> 9088 bytes html/img/snap9_d8.gif | Bin 0 -> 3525 bytes html/img/snap9_e.gif | Bin 0 -> 3491 bytes html/img/snap9_f.gif | Bin 0 -> 3380 bytes html/img/snap9_g.gif | Bin 0 -> 2888 bytes html/img/snap9_g2.gif | Bin 0 -> 9388 bytes html/img/snap9_g3.gif | Bin 0 -> 13593 bytes html/img/snap9_h.gif | Bin 0 -> 2874 bytes html/img/snap9_i.gif | Bin 0 -> 2459 bytes html/img/snap9_j.gif | Bin 0 -> 4844 bytes html/img/snap9_k.gif | Bin 0 -> 4935 bytes html/index.html | 153 + html/library.html | 136 + html/options.html | 363 + html/overview.html | 156 + html/plug.html | 183 + html/scripting.html | 261 + html/server/about.html | 173 + html/server/addurl.html | 229 + html/server/div/WebHTTrack-Websites.desktop | 12 + html/server/div/WebHTTrack.desktop | 12 + html/server/div/httrack.xpm | 47 + html/server/div/webhttrack.xpm | 88 + html/server/error.html | 150 + html/server/exit.html | 35 + html/server/file.html | 178 + html/server/finished.html | 221 + html/server/help.html | 185 + html/server/images/bg_rings.gif | Bin 0 -> 4243 bytes html/server/images/fade.gif | Bin 0 -> 828 bytes html/server/images/header_title_4.gif | Bin 0 -> 2000 bytes html/server/index.html | 211 + html/server/option1.html | 240 + html/server/option10.html | 232 + html/server/option11.html | 332 + html/server/option2.html | 258 + html/server/option2b.html | 222 + html/server/option3.html | 273 + html/server/option4.html | 266 + html/server/option5.html | 302 + html/server/option6.html | 238 + html/server/option7.html | 230 + html/server/option8.html | 262 + html/server/option9.html | 248 + html/server/refresh.html | 282 + html/server/step2.html | 335 + html/server/step3.html | 287 + html/server/step4.html | 373 + html/shelldoc.html | 152 + html/start.html | 16 + html/step.html | 139 + html/step1.html | 154 + html/step2.html | 168 + html/step3.html | 140 + html/step4.html | 139 + html/step5.html | 138 + html/step9.html | 155 + html/step9_opt1.html | 156 + html/step9_opt10.html | 162 + html/step9_opt11.html | 193 + html/step9_opt2.html | 192 + html/step9_opt3.html | 156 + html/step9_opt4.html | 187 + html/step9_opt5.html | 176 + html/step9_opt6.html | 173 + html/step9_opt7.html | 162 + html/step9_opt8.html | 152 + html/step9_opt9.html | 167 + httrack-doc.html | 4 +- install-sh | 251 + lang.def | 972 +++ lang.indexes | 26 + lang/Castellano.txt | 920 +++ lang/Cesky.txt | 920 +++ lang/Chinese-BIG5.txt | 920 +++ lang/Chinese-Simplified.txt | 920 +++ lang/Dansk.txt | 920 +++ lang/Deutsch.txt | 920 +++ lang/Eesti.txt | 920 +++ lang/English.txt | 920 +++ lang/Francais.txt | 920 +++ lang/Greek.txt | 920 +++ lang/Italiano.txt | 920 +++ lang/Japanese.txt | 920 +++ lang/Macedonian.txt | 920 +++ lang/Magyar.txt | 920 +++ lang/Makefile.am | 7 + lang/Makefile.in | 330 + lang/Nederlands.txt | 920 +++ lang/Norsk.txt | 920 +++ lang/Polski.txt | 920 +++ lang/Portugues-Brasil.txt | 920 +++ lang/Portugues.txt | 920 +++ lang/Romanian.txt | 920 +++ lang/Russian.txt | 920 +++ lang/Slovak.txt | 920 +++ lang/Slovenian.txt | 920 +++ lang/Svenska.txt | 920 +++ lang/Turkish.txt | 918 +++ lang/Ukrainian.txt | 920 +++ lib/example.c | 156 - lib/example.dsp | 311 - lib/example.dsw | 29 - lib/example.h | 27 - lib/htssystem.h | 12 - lib/readme.txt | 35 - libtest/Makefile.am | 5 + libtest/Makefile.in | 307 + libtest/callbacks-example.c | 73 + libtest/example.c | 158 + libtest/example.dsp | 95 + libtest/example.dsw | 29 + libtest/example.h | 27 + libtest/htssystem.h | 2 + libtest/readme.txt | 34 + license.txt | 21 +- ltmain.sh | 5100 ++++++++++++ man/Makefile.am | 5 + man/Makefile.in | 335 + man/htsserver.1 | 67 + man/httrack.1 | 623 ++ man/httrack.1.gz | Bin 6494 -> 0 bytes man/webhttrack.1 | 68 + missing | 336 + mkinstalldirs | 99 + src/Makefile | 10 - src/Makefile.am | 60 + src/Makefile.in | 1052 ++- src/configure | 603 -- src/gpl.txt | 287 - src/hts-indextmpl.h | 12 +- src/htsalias.c | 80 +- src/htsalias.h | 2 +- src/htsback.c | 1037 ++- src/htsback.h | 13 +- src/htsbase.h | 343 +- src/htsbasenet.h | 80 + src/htsbauth.c | 70 +- src/htscache.c | 544 +- src/htscache.h | 6 +- src/htscatchurl.c | 36 +- src/htscatchurl.h | 8 +- src/htscore.c | 2799 +++---- src/htscore.h | 125 +- src/htscoremain.c | 569 +- src/htscoremain.h | 6 +- src/htsdefines.h | 10 +- src/htsfilters.c | 2 +- src/htsftp.c | 141 +- src/htsglobal.h | 187 +- src/htshash.c | 263 +- src/htshash.h | 57 +- src/htshelp.c | 144 +- src/htsindex.c | 15 +- src/htsinthash.c | 252 + src/htsinthash.h | 94 + src/htsjava.c | 100 +- src/htsjava.h | 9 +- src/htslib.c | 1319 +++- src/htslib.h | 123 +- src/htsmodules.c | 305 + src/htsmodules.h | 111 + src/htsname.c | 420 +- src/htsnet.h | 34 +- src/htsnostatic.c | 3 +- src/htsnostatic.h | 8 +- src/htsopt.h | 16 +- src/htsparse.c | 4164 +++++++--- src/htsparse.h | 108 + src/htsrobots.c | 9 +- src/htsrobots.h | 4 +- src/htsserver.c | 1814 +++++ src/htsserver.h | 149 + src/htssystem.h | 16 +- src/htssystem.h.windows9x | 11 - src/htsthread.c | 2 +- src/htsthread.h | 2 +- src/htstools.c | 144 +- src/htstools.h | 43 +- src/htsweb.c | 653 ++ src/htsweb.h | 110 + src/htswizard.c | 326 +- src/htswizard.h | 2 - src/htswrap.c | 9 +- src/htswrap.h | 14 +- src/htszlib.c | 11 +- src/htszlib.h | 21 + src/httrack-library.h | 154 +- src/httrack.c | 102 +- src/httrack.dsp | 213 +- src/httrack.dsw | 15 + src/httrack.h | 6 +- src/postinst-config.in | 55 - src/strip_cr.in | 32 - src/webhttrack | 101 + src/webhttrack.dsp | 120 + src/webhttrack.dsw | 44 + templates/Makefile.am | 6 + templates/Makefile.in | 309 + 334 files changed, 84962 insertions(+), 19048 deletions(-) create mode 100755 AUTHORS create mode 100644 ChangeLog delete mode 100644 HelpHtml/abuse.html delete mode 100644 HelpHtml/addurl.html delete mode 100644 HelpHtml/cmddoc.html delete mode 100644 HelpHtml/contact.html delete mode 100644 HelpHtml/dev.html delete mode 100644 HelpHtml/div/search.sh delete mode 100644 HelpHtml/faq.html delete mode 100644 HelpHtml/fcguide.html delete mode 100644 HelpHtml/filters.html delete mode 100644 HelpHtml/httrack.css delete mode 100644 HelpHtml/httrack.man.html delete mode 100644 HelpHtml/images/bg_rings.gif delete mode 100644 HelpHtml/images/header_title_4.gif delete mode 100644 HelpHtml/images/screenshot_01.jpg delete mode 100644 HelpHtml/img/addurl1.gif delete mode 100644 HelpHtml/img/addurl2.gif delete mode 100644 HelpHtml/img/addurl3.gif delete mode 100644 HelpHtml/img/addurl4.gif delete mode 100644 HelpHtml/img/addurl5.gif delete mode 100644 HelpHtml/img/backblue.gif delete mode 100644 HelpHtml/img/fade.gif delete mode 100644 HelpHtml/img/httrack.gif delete mode 100644 HelpHtml/img/snap1_a.gif delete mode 100644 HelpHtml/img/snap1_b.gif delete mode 100644 HelpHtml/img/snap1_c.gif delete mode 100644 HelpHtml/img/snap2_a.gif delete mode 100644 HelpHtml/img/snap2_b.gif delete mode 100644 HelpHtml/img/snap3_a.gif delete mode 100644 HelpHtml/img/snap4_a.gif delete mode 100644 HelpHtml/img/snap5_a.gif delete mode 100644 HelpHtml/img/snap9.gif delete mode 100644 HelpHtml/img/snap9_a.gif delete mode 100644 HelpHtml/img/snap9_b.gif delete mode 100644 HelpHtml/img/snap9_c.gif delete mode 100644 HelpHtml/img/snap9_d.gif delete mode 100644 HelpHtml/img/snap9_d2.gif delete mode 100644 HelpHtml/img/snap9_d3.gif delete mode 100644 HelpHtml/img/snap9_d4.gif delete mode 100644 HelpHtml/img/snap9_d5.gif delete mode 100644 HelpHtml/img/snap9_d6.gif delete mode 100644 HelpHtml/img/snap9_d7.gif delete mode 100644 HelpHtml/img/snap9_d8.gif delete mode 100644 HelpHtml/img/snap9_e.gif delete mode 100644 HelpHtml/img/snap9_f.gif delete mode 100644 HelpHtml/img/snap9_g.gif delete mode 100644 HelpHtml/img/snap9_g2.gif delete mode 100644 HelpHtml/img/snap9_g3.gif delete mode 100644 HelpHtml/img/snap9_h.gif delete mode 100644 HelpHtml/img/snap9_i.gif delete mode 100644 HelpHtml/img/snap9_j.gif delete mode 100644 HelpHtml/img/snap9_k.gif delete mode 100644 HelpHtml/index.html delete mode 100644 HelpHtml/options.html delete mode 100644 HelpHtml/overview.html delete mode 100644 HelpHtml/shelldoc.html delete mode 100644 HelpHtml/start.html delete mode 100644 HelpHtml/step.html delete mode 100644 HelpHtml/step1.html delete mode 100644 HelpHtml/step2.html delete mode 100644 HelpHtml/step3.html delete mode 100644 HelpHtml/step4.html delete mode 100644 HelpHtml/step5.html delete mode 100644 HelpHtml/step9.html delete mode 100644 HelpHtml/step9_opt1.html delete mode 100644 HelpHtml/step9_opt10.html delete mode 100644 HelpHtml/step9_opt11.html delete mode 100644 HelpHtml/step9_opt2.html delete mode 100644 HelpHtml/step9_opt3.html delete mode 100644 HelpHtml/step9_opt4.html delete mode 100644 HelpHtml/step9_opt5.html delete mode 100644 HelpHtml/step9_opt6.html delete mode 100644 HelpHtml/step9_opt7.html delete mode 100644 HelpHtml/step9_opt8.html delete mode 100644 HelpHtml/step9_opt9.html delete mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 NEWS create mode 100644 aclocal.m4 create mode 100755 config.guess create mode 100644 config.h.in create mode 100755 config.sub create mode 100755 configure create mode 100644 configure.in create mode 100755 depcomp create mode 100755 html/Makefile.am create mode 100644 html/Makefile.in create mode 100644 html/abuse.html create mode 100644 html/addurl.html create mode 100644 html/cmddoc.html create mode 100644 html/contact.html create mode 100644 html/dev.html create mode 100644 html/div/search.sh create mode 100644 html/faq.html create mode 100644 html/fcguide.html create mode 100644 html/filters.html create mode 100644 html/httrack.css create mode 100644 html/httrack.man.html create mode 100644 html/images/bg_rings.gif create mode 100644 html/images/header_title_4.gif create mode 100644 html/images/screenshot_01.jpg create mode 100755 html/images/screenshot_01b.jpg create mode 100644 html/img/addurl1.gif create mode 100644 html/img/addurl2.gif create mode 100644 html/img/addurl3.gif create mode 100644 html/img/addurl4.gif create mode 100644 html/img/addurl5.gif create mode 100644 html/img/backblue.gif create mode 100644 html/img/fade.gif create mode 100644 html/img/httrack.gif create mode 100644 html/img/snap1_a.gif create mode 100644 html/img/snap1_b.gif create mode 100644 html/img/snap1_c.gif create mode 100644 html/img/snap2_a.gif create mode 100644 html/img/snap2_b.gif create mode 100644 html/img/snap3_a.gif create mode 100644 html/img/snap4_a.gif create mode 100644 html/img/snap5_a.gif create mode 100644 html/img/snap9.gif create mode 100644 html/img/snap9_a.gif create mode 100644 html/img/snap9_b.gif create mode 100644 html/img/snap9_c.gif create mode 100644 html/img/snap9_d.gif create mode 100644 html/img/snap9_d2.gif create mode 100644 html/img/snap9_d3.gif create mode 100644 html/img/snap9_d4.gif create mode 100644 html/img/snap9_d5.gif create mode 100644 html/img/snap9_d6.gif create mode 100644 html/img/snap9_d7.gif create mode 100644 html/img/snap9_d8.gif create mode 100644 html/img/snap9_e.gif create mode 100644 html/img/snap9_f.gif create mode 100644 html/img/snap9_g.gif create mode 100644 html/img/snap9_g2.gif create mode 100644 html/img/snap9_g3.gif create mode 100644 html/img/snap9_h.gif create mode 100644 html/img/snap9_i.gif create mode 100644 html/img/snap9_j.gif create mode 100644 html/img/snap9_k.gif create mode 100644 html/index.html create mode 100755 html/library.html create mode 100644 html/options.html create mode 100644 html/overview.html create mode 100755 html/plug.html create mode 100755 html/scripting.html create mode 100755 html/server/about.html create mode 100755 html/server/addurl.html create mode 100644 html/server/div/WebHTTrack-Websites.desktop create mode 100644 html/server/div/WebHTTrack.desktop create mode 100644 html/server/div/httrack.xpm create mode 100644 html/server/div/webhttrack.xpm create mode 100755 html/server/error.html create mode 100755 html/server/exit.html create mode 100755 html/server/file.html create mode 100755 html/server/finished.html create mode 100755 html/server/help.html create mode 100755 html/server/images/bg_rings.gif create mode 100755 html/server/images/fade.gif create mode 100755 html/server/images/header_title_4.gif create mode 100755 html/server/index.html create mode 100755 html/server/option1.html create mode 100755 html/server/option10.html create mode 100755 html/server/option11.html create mode 100755 html/server/option2.html create mode 100755 html/server/option2b.html create mode 100755 html/server/option3.html create mode 100755 html/server/option4.html create mode 100755 html/server/option5.html create mode 100755 html/server/option6.html create mode 100755 html/server/option7.html create mode 100755 html/server/option8.html create mode 100755 html/server/option9.html create mode 100755 html/server/refresh.html create mode 100755 html/server/step2.html create mode 100755 html/server/step3.html create mode 100755 html/server/step4.html create mode 100644 html/shelldoc.html create mode 100644 html/start.html create mode 100644 html/step.html create mode 100644 html/step1.html create mode 100644 html/step2.html create mode 100644 html/step3.html create mode 100644 html/step4.html create mode 100644 html/step5.html create mode 100644 html/step9.html create mode 100644 html/step9_opt1.html create mode 100644 html/step9_opt10.html create mode 100644 html/step9_opt11.html create mode 100644 html/step9_opt2.html create mode 100644 html/step9_opt3.html create mode 100644 html/step9_opt4.html create mode 100644 html/step9_opt5.html create mode 100644 html/step9_opt6.html create mode 100644 html/step9_opt7.html create mode 100644 html/step9_opt8.html create mode 100644 html/step9_opt9.html create mode 100755 install-sh create mode 100755 lang.def create mode 100644 lang.indexes create mode 100755 lang/Castellano.txt create mode 100755 lang/Cesky.txt create mode 100755 lang/Chinese-BIG5.txt create mode 100755 lang/Chinese-Simplified.txt create mode 100755 lang/Dansk.txt create mode 100755 lang/Deutsch.txt create mode 100755 lang/Eesti.txt create mode 100755 lang/English.txt create mode 100755 lang/Francais.txt create mode 100755 lang/Greek.txt create mode 100755 lang/Italiano.txt create mode 100755 lang/Japanese.txt create mode 100755 lang/Macedonian.txt create mode 100755 lang/Magyar.txt create mode 100644 lang/Makefile.am create mode 100644 lang/Makefile.in create mode 100755 lang/Nederlands.txt create mode 100755 lang/Norsk.txt create mode 100755 lang/Polski.txt create mode 100755 lang/Portugues-Brasil.txt create mode 100755 lang/Portugues.txt create mode 100755 lang/Romanian.txt create mode 100755 lang/Russian.txt create mode 100755 lang/Slovak.txt create mode 100755 lang/Slovenian.txt create mode 100755 lang/Svenska.txt create mode 100755 lang/Turkish.txt create mode 100755 lang/Ukrainian.txt delete mode 100644 lib/example.c delete mode 100644 lib/example.dsp delete mode 100644 lib/example.dsw delete mode 100644 lib/example.h delete mode 100644 lib/htssystem.h delete mode 100644 lib/readme.txt create mode 100644 libtest/Makefile.am create mode 100644 libtest/Makefile.in create mode 100755 libtest/callbacks-example.c create mode 100644 libtest/example.c create mode 100644 libtest/example.dsp create mode 100644 libtest/example.dsw create mode 100644 libtest/example.h create mode 100644 libtest/htssystem.h create mode 100644 libtest/readme.txt create mode 100644 ltmain.sh create mode 100644 man/Makefile.am create mode 100644 man/Makefile.in create mode 100644 man/htsserver.1 create mode 100644 man/httrack.1 delete mode 100644 man/httrack.1.gz create mode 100644 man/webhttrack.1 create mode 100755 missing create mode 100755 mkinstalldirs delete mode 100644 src/Makefile create mode 100644 src/Makefile.am delete mode 100755 src/configure delete mode 100644 src/gpl.txt create mode 100644 src/htsinthash.c create mode 100644 src/htsinthash.h create mode 100644 src/htsmodules.c create mode 100644 src/htsmodules.h create mode 100644 src/htsparse.h create mode 100644 src/htsserver.c create mode 100644 src/htsserver.h delete mode 100644 src/htssystem.h.windows9x create mode 100644 src/htsweb.c create mode 100644 src/htsweb.h delete mode 100755 src/postinst-config.in delete mode 100755 src/strip_cr.in create mode 100755 src/webhttrack create mode 100755 src/webhttrack.dsp create mode 100755 src/webhttrack.dsw create mode 100644 templates/Makefile.am create mode 100644 templates/Makefile.in diff --git a/AUTHORS b/AUTHORS new file mode 100755 index 0000000..66da09f --- /dev/null +++ b/AUTHORS @@ -0,0 +1 @@ +Xavier Roche diff --git a/COPYING b/COPYING index 196760e..d60c31a 100644 --- a/COPYING +++ b/COPYING @@ -1,340 +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) 19yy - - 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) 19yy 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. + 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/ChangeLog b/ChangeLog new file mode 100644 index 0000000..e69de29 diff --git a/HelpHtml/abuse.html b/HelpHtml/abuse.html deleted file mode 100644 index 4be36a1..0000000 --- a/HelpHtml/abuse.html +++ /dev/null @@ -1,580 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

For HTTrack users:

- -
- -

For webmasters having problems with bandwidth abuse / other abuses related to HTTrack:

- - -

-
- - - - - - - - - -

Advice & what not to do

- -

Please follow these common sense rules to avoid any network abuse

- -
- -
    -
  • Do not overload the websites!
  • -
    -Downloading a site can overload it, if you have a fast pipe, or if you capture too many simultaneous cgi (dynamically generated pages). -
    -
      -
    • Do not download too large websites: use filters
    • -
    • Do not use too many simultaneous connections
    • -
    • Use bandwidth limits
    • -
    • Use connection limits
    • -
    • Use size limits
    • -
    • Use time limits
    • -
    • Only disable robots.txt rules with great care
    • -
    • Try not to download during working hours
    • -
    • Check your mirror transfer rate/size
    • -
    • For large mirrors, first ask the webmaster of the site
    • -
    -
    -
  • Ensure that you can copy the website
  • -
      -
    • Are the pages copyrighted?
    • -
    • Can you copy them only for private purpose?
    • -
    • Do not make online mirrors unless you are authorized to do so
    • -
    -
    -
  • Do not overload your network
  • -
      -
    • Is your (corporate, private..) network connected through dialup ISP?
    • -
    • Is your network bandwidth limited (and expensive)?
    • -
    • Are you slowing down the traffic?
    • -
    -
    -
  • Do not steal private information
  • -
      -
    • Do not grab emails
    • -
    • Do not grab private information
    • -
    -
- -
-

-
- - - - - - - - - -

Abuse FAQ for webmasters

- -

How to limit network abuse -
-HTTrack Website Copier FAQ (updated - DRAFT) -

- -
-Q: How to block offline browsers, like HTTrack?
-
-A: This is a complex question, let's study it
-
-First, there are several different reasons for that
-Why do you want to block offline browsers? :
-
-
    -
  1. Because a large part of your bandwidth is used by some users, who are slowing down the rest
  2. -
  3. Because of copyright questions (you do not want people to copy parts of your website)
  4. -
  5. Because of privacy (you do not want email grabbers to steal all your user's emails)
  6. -
-
-
-
    - - -
  1. Bandwidth abuse:
    -
    -Many Webmasters are concerned about bandwidth abuse, even if this problem is caused by -a minority of people. Offline browsers tools, like HTTrack, can be used in a WRONG way, -and -therefore are sometimes considered as a potential danger.
    -But before thinking that all offline browsers are BAD, consider this: -students, teachers, IT consultants, websurfers and many people who like your website, may -want to copy -parts of it, for their work, their studies, to teach or demonstrate to people during class -school or -shows. They might do that because they are connected through expensive modem connection, -or because they would like to consult pages while travelling, or archive sites that may be -removed -one day, make some data mining, comiling information ("if only I could find this -website I saw one day..").
    -There are many good reasons to mirror websites, and this helps many good people.
    -As a webmaster, you might be interested to use such tools, too: test broken links, move a -website to -another location, control which external links are put on your website for legal/content -control, -test the webserver response and performances, index it..
    -
    -Anyway, bandwidth abuse can be a problem. If your site is regularly "clobbered" -by evil downloaders, you have
    -various solutions. You have radical solutions, and intermediate solutions. I strongly -recomment not to use
    -radical solutions, because of the previous remarks (good people often mirror websites).
    -
    -In general, for all solutions,
    -the good thing: it will limit the bandwidth abuse
    -the bad thing: depending on the solution, it will be either a small constraint, or a fatal -nuisance (you'll get 0 visitors)
    -or, to be extreme: if you unplug the wire, there will be no bandwidth abuse
    -
    -
      - -
    1. Inform people, explain why ("please do not clobber the bandwidth")
      -Good: Will work with good people. Many good people just don't KNOW that they can slow down -a network.
      -Bad: Will **only** work with good people
      -How to do: Obvious - place a note, a warning, an article, a draw, a poeme or whatever you -want
      -
      -
    2. Use "robots.txt" file
      -Good: Easy to setup
      -Bad: Easy to override
      -How to do: Create a robots.txt file on top dir, with proper parameters
      -Example:
      -    User-agent: *
      -
      -    Disallow: /bigfolder
      -
      -
    3. Ban registered offline-browsers User-agents
      -Good: Easy to setup
      -Bad: Radical, and easy to override
      -How to do: Filter the "User-agent" HTTP header field
      -
      -
    4. Limit the bandwidth per IP (or by folders)
      -Good: Efficient
      -Bad: Multiple users behind proxies will be slow down, not really easy to setup
      -How to do: Depends on webserver. Might be done with low-level IP rules (QoS)
      -
      -
    5. Priorize small files, against large files
      -Good: Efficient if large files are the cause of abuse
      -Bad: Not always efficient
      -How to do: Depends on the webserver
      -
      -
    6. Ban abuser IPs
      -Good: Immediate solution
      -Bad: Annoying to do, useless for dynamic IPs, and not very user friendly
      -How to do: Either ban IP's on the firewall, or on the webserver (see ACLs)
      -
      -
    7. Limit abusers IPs
      -Good: Intermediate and immediate solution
      -Bad: Annoying to do, useless for dynamic IPs, and annoying to maintain..
      -How to do: Use routine QoS (fair queuing), or webserver options
      -
      -
    8. Use technical tricks (like javascript) to hide URLs
      -Good: Efficient
      -Bad: The most efficient tricks will also cause your website to he heavy, and not -user-friendly (and therefore less attractive, even for surfing users). Remember: clients -or visitors might want to consult offline your website. Advanced users will also be still -able to note the URLs and catch them. Will not work on non-javascript browsers. It will -not work if the user clicks 50 times and put downloads in background with a standard -browser
      -How to do: Most offline browsers (I would say all, but let's say most) are unable to -"understand" javascript/java properly. Reason: very tricky to handle!
      -Example:
      -You can replace:
      - - -    <a href="bigfile.zip">Foo</a>
      -
      - -by:
      - -    <script language="javascript">
      -    <!--
      -    document.write('<a h' + 're' + 'f="');
      -    document.write('bigfile' + '.' + 'zip">');
      -    // -->
      -    </script>
      -    Foo
      -    </a>
      -
      -
      -You can also use java-based applets. I would say that it is the "best of the -horrors". A big, fat, slow, bogus java applet. Avoid!
      -
      -
    9. Use technical tricks to lag offline browsers
      -Good: Efficient
      -Bad: Can be avoided by advanced users, annoying to maintain, AND potentially worst that -the illness (cgi's are often taking some CPU usage). . It will not work if the user clicks -50 times and put downloads in background with a standard browser
      -How to do: Create fake empty links that point to cgi's, with long delays
      -Example: Use things like - - -<ahref="slow.cgi?p=12786549"><nothing></a> (example in php:)
      -    <?php
      -    for($i=0;$i<10;$i++) {
      -        sleep(6);
      -        echo " ";
      -    }
      -    ?>
      -
      - -
      -
    10. Use technical tricks to temporarily ban IPs
      -Good: Efficient
      -Bad: Radical (your site will only be available online for all users), not easy to setup
      -How to to: Create fake links with "killing" targets
      -Example: Use things like <a href="killme.cgi"><nothing></a> -(again an example in php:)
      - -    <?php
      -        // Of course, -"add_temp_firewall_rule" has to be written..
      -        add_temp_firewall_rule($REMOTE_ADDR,"30s");
      -    ?>
      -
      -
      -
      -
    11. -
    - - -
  2. Copyright issues
    -
    -You do not want people to "steal" your website, or even copy parts of it. First, -stealing a website does not
    -require to have an offline browser. Second, direct (and credited) copy is sometimes better -than disguised
    -plagiarism. Besides, several previous remarks are also interesting here: the more -protected your website will be,
    -the potentially less attractive it will also be. There is no perfect solution, too. A -webmaster asked me one day
    -to give him a solution to prevent any website copy. Not only for offline browsers, but -also against "save as",
    -cut and paste, print.. and print screen. I replied that is was not possible, especially -for the print screen - and
    -that another potential threat was the evil photographer. Maybe with a "this document -will self-destruct in 5 seconds.."
    -or by shooting users after consulting the document.
    -More seriously, once a document is being placed on a website, there will always be the -risks of copy (or plagiarism)
    -
    -To limit the risk, previous a- and h- solutions, in "bandwidth abuse" section, -can be used
    -
    -
    -
  3. - - -
  4. Privacy
    -
    -Might be related to section 2.
    -But the greatest risk is maybe email grabbers.
    -
    -
      -
    1. A solution can be to use javascript to hide emails.
      -Good: Efficient
      -Bad: Will not work on non-javascript browsers
      -How to do: Use javascript to build mailto: links
      -Example: (in php)
      - -    <script language="javascript">
      -    <!--
      -    function FOS(host,nom,info) {
      -      var s;
      -      if (info == "") info=nom+"@"+host;
      -      s="mail";
      -      document.write("<a href='"+s+"to:"+nom+"@"+host+"'>"+info+"</a>");
      -    }
      -    FOS('mycompany.com','smith?subject=Hi, John','Click here to email me!')
      -    // -->
      -    </script>
      -
      -
      -
    2. Another one is to create images of emails
      -Good: Efficient, does not require javascript
      -Bad: There is still the problem of the link (mailto:), images are bigger than text
      -How to do: Not so obvious of you do not want to create images by yourself
      -Example: (php, Unix)
      - - -<?php
      -/*
      -Email contact displayer
      -Usage: email.php3?id=<4 bytes of user's md5>
      -The <4 bytes of user's md5> can be calculated using the 2nd script (see below)
      -Example: http://yourhost/email.php3?id=91ff1a48
      -*/
      -$domain="mycompany.com";
      -$size=12;
      -
      -/* Find the user in the system database */
      -if (!$id)
      -  exit;
      -unset($email);
      -unset($name);
      -unset($pwd);
      -unset($apwd);
      -$email="";
      -$name="";
      -$fp=@fopen("/etc/passwd","r");
      -if ($fp) {
      -  $pwd=@fread($fp,filesize("/etc/passwd"));
      -  @fclose($fp);
      -}
      -$apwd=split("\n",$pwd);
      -foreach($apwd as $line) {
      -  $fld=split(":",$line);
      -  if (substr(md5($fld[0]),0,8) == $id) {
      -    $email=$fld[0]."@".$domain;
      -    $nm=substr($fld[4],0,strpos($fld[4],","));
      -    $name=$email;
      -    if ($nm)
      -      $name="\"".$nm."\" <".$email.">";
      -  }
      -}
      -if (!$name)
      -  exit;
      -
      -/* Create and show the image */
      -Header ("Content-type: image/gif");
      -$im = imagecreate ($size*strlen($name), $size*1.5);
      -$black = ImageColorAllocate ($im, 255, 255, 255);
      -$white = ImageColorAllocate ($im, 0,0,0);
      -ImageTTFText($im, $size, 0, 0, $size , $white, -"/usr/share/enlightenment/E-docs/aircut3.ttf",$name);
      -ImageGif ($im);
      -ImageDestroy ($im);
      -?>
      -
      -
      - -The script to find the id:
      -
      - - -#!/bin/sh
      -
      -# small script for email.php3
      -echo "Enter login:"
      -read login
      -echo "The URL is:"
      -printf "http://yourhost/email.php3?id="
      -printf $login|md5sum|cut -c1-8
      -echo
      -
      -
      - -
    3. You can also create temporary email aliases, each week, for all users
      -Good: Efficient, and you can give your real email in your reply-to address
      -Bad: Temporary emails
      -How to do: Not so hard todo
      -Example: (script & php, Unix)
      - - -#!/bin/sh
      -#
      -# Anonymous random aliases for all users
      -# changed each week, to avoid spam problems
      -# on websites
      -# (to put into /etc/cron.weekly/)
      -
      -# Each alias is regenerated each week, and valid for 2 weeks
      -
      -# prefix for all users
      -# must not be the prefix of another alias!
      -USER_PREFIX="user-"
      -
      -# valid for 2 weeks
      -ALIAS_VALID=2
      -
      -# random string
      -SECRET="my secret string `hostname -f`"
      -
      -# build
      -grep -vE "^$USER_PREFIX" /etc/aliases > /etc/aliases.new
      -for i in `cut -f1 -d':' /etc/passwd`; do
      -  if test `id -u $i` -ge 500; then
      -    off=0
      -    while test "$off" -lt $ALIAS_VALID; do
      -      THISWEEK="`date +'%Y'` $[`date +'%U'`-$off]"
      -      SECRET="`echo \"$SECRET $i $THISWEEK\" | md5sum | cut -c1-4`"
      -      FIRST=`echo $i | cut -c1-3`
      -      NAME="$USER_PREFIX$FIRST$SECRET"
      -      echo "$NAME : $i" >> /etc/aliases.new
      -      #
      -      off=$[$off+1]
      -    done
      -  fi
      -done
      -
      -# move file
      -mv -f /etc/aliases /etc/aliases.old
      -mv -f /etc/aliases.new /etc/aliases
      -
      -# update aliases
      -newaliases
      -
      -
      - -And then, put the email address in your pages through: -
      -
      - - -<a href="mailto:<?php
      -    $user="smith";
      -    $alias=exec("grep ".$user." /etc/aliases | cut -f1 -d' ' | head -n1");
      -    print $alias;
      -?>@mycompany.com>> -
      - -
    4. -
    - -
  5. - - - - - - -
- -
- - -
-
-
- - - - - -
- - - - - - - diff --git a/HelpHtml/addurl.html b/HelpHtml/addurl.html deleted file mode 100644 index a09d01b..0000000 --- a/HelpHtml/addurl.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Add a URL

- -
- -
    -
  1. Enter a typical Web address
  2. -
    Just type in your address in the field

    -
    -

    OR

    -
  3. Enter a Web address with authentication
  4. -
    Useful when you need basic authentication to watch the Web page

    -
    -

    OR

    -
  5. Capture a link from your Web browser to HTTrack
  6. -
    Use this tool only for form-based pages (pages delivered after submiting a form) that need some analysis

    -
    -
    -
    -Set, as explained, your Web browser proxy preferences to the values indicated : set the proxy's address, and the proxy's port, - then click on the button or link as you usually do in your Web browser. -
    The temporary proxy, installed by HTTrack, will then - capture the link and display a confirmation page. -

    -
    -
    -
    -
    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/cmddoc.html b/HelpHtml/cmddoc.html deleted file mode 100644 index 322f5fd..0000000 --- a/HelpHtml/cmddoc.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Command-Line Documentation

- -
- -The command-line version - -
    -
  • Command line Options
  • -
    List of all powerful command line options

    -
  • How to use httrack command-line version:
  • -
      -
    • Open a shell window
    • -
      -
      -
    • Type in httrack (or the complete path to the httrack executable)
    • -
      httrack -
      -
      -
    • Add the URLs, separated by a blank space
    • -
      httrack www.someweb.com/foo/ -
      -
      -
    • If you need, add some options (see the option list)
    • -
      httrack www.someweb.com/foo/ -O "/webs" -N4 -P proxy.myhost.com:3128 -
      -
      -
    • Launch the command line, and wait until the mirror is finishing
    • -
      You can (especially on the Unix release) press ^C to stop the mirror or put httrack in background -
      -
      -
    -
- - -
-
-
- - - - - -
- - - - - diff --git a/HelpHtml/contact.html b/HelpHtml/contact.html deleted file mode 100644 index 09ff760..0000000 --- a/HelpHtml/contact.html +++ /dev/null @@ -1,227 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Contact Us!

- -
- -

-
-Please visit our website! -
-
-

- -About this project: - - -
-
-Informations on this project:
-
-This project has been developed by:
-Xavier Roche (xroche@httrack.com)
-  for the main engine and Windows interface
-  and maintainer for v2.0 and v3.0
-Yann Philippot (yphilippot@lemel.fr)
-  for the java binary .class parser
-Robert Lagadec (rlagadec@yahoo.fr)
-  for checking both English & French translations
-Juan Pablo Barrio Lera (University of León)
-  for Spanish translations
-Rainer Klueting (rainer@klueting.de)
-Bastian Gorke (bastiang@yahoo.com)
-Rudi Ferrari (Wyando@netcologne.de)
-Marcus Gaza (MarcusGaza@t-online.de)
-  for German translations
-Rudi Ferrari (Wyando@netcologne.de)
-  for Dutch translations
-Lukasz Jokiel (Opole University of Technology, Lukasz.Jokiel@po.opole.pl)
-  for Polish translations
-Rui Fernandes (CANTIC, ruiefe@mail.malhatlantica.pt)
-Pedro T. Pinheiro (Universidade Nova de Lisboa-FCT, ptiago@mail.iupi.pt)
-  for Portuguese translations
-Andrei Iliev (iliev@vitaplus.ru)
-  for Russian translations
-Witold Krakowski (wkrakowski@libero.it)
-  for Italian translations
-Jozsef Tamas Herczeg (hdodi@freemail.hu)
-  for Hungarian translation
-Paulo Neto (company@layout.com.br)
-  for Brazilian translation
-Brook Qin (brookqwr@sina.com) 
-   for simplified Chinese translation
-Addy Lin (addy1975@pchome.com.tw)
-   for traditional Chinese translation
-Jesper Bramm (bramm@get2net.dk)
-   for Danish translation
-Tõnu Virma
-   for Estonian translation
-Staffan Ström (staffan@fam-strom.org)
-   for Swedish translation
-Mehmet Akif Köeoðlu (mak@ttnet.net.tr)
-  for Turkish translation
-Aleksandar Savic (aleks@macedonia.eu.org)
-  for Macedonian translation
-Takayoshi Nakasikiryo
-  for Japanese translation
-Martin Sereday (sereday@slovanet.sk)
-  for Slovak translation
-Antonín Matìjèík (matejcik@volny.cz)
-  for Czech translation
-
-Special Thanks to:
-Patrick Ducrot & Daniel Carré (ENSI of Caen)
-  for their initial support
-Fred Cohen (fc@all.net)
-  for HTTrack user's guide
-
-Greetings to:
-Jean-loup Gailly from gzip.org
-  for the help provided with Zlib
-Russ Freeman from gipsymedia
-  for hints on DLL dynamic load
-Paul DiLascia
-  for helping to fix problems with CHtmlView
-ISMRA/Ensi of Caen 
-  for their initial support
-..and all users that are using and supporting HTTrack!
-
-
-
-
- - If you want to ask any question to the authors, report bugs/problems, - please first check the HTTrack Website Copier forum.
- You can also contact by email, but due to the large volume of messages, it is impossible - to always respond (especially for configuration help or other configuration-related - questions). -
- HTTrack project, - Xavier ROCHE, -


-
- This program is covered by the GNU General Public License.
- HTTrack/HTTrack Website Copier is Copyright (C) 1998-2002 Xavier Roche and other contributors -
- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/dev.html b/HelpHtml/dev.html deleted file mode 100644 index cba5613..0000000 --- a/HelpHtml/dev.html +++ /dev/null @@ -1,262 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

HTTrack Programming page

- -
- -HTTrack can be used as a third-party program in batch files, or as library (see in the lib/ directory). -We will see here several examples, written in batch script (can be adapted to almost all batch script languages) or in C. - -

- -

- - - -
-How to get one single file

- -httrack --get http://localhost/ - -
- -

- - - -
-How to get one single file and pipe it to stdout

- -httrack --quiet --get http://localhost/ -O tmpget -V "cat \$0" | grep -iE "TITLE" -rm -rf tmpget - -
- -

- - - -
-How to search in all HTML files on a website

- -httrack --skeleton http://localhost/ -V "if grep -iE \"TITLE\" \"\$0\">/dev/null; then echo \"Match found at \$0\"; fi"
-rm -rf tmpget
-
- -
Same thing but matches only the first file:
- - -httrack --skeleton http://localhost/ -V "if grep -iE \"TITLE\" \"\$0\">/dev/null; then echo \"Match found at \$0\"; kill -9 \$PPID; fi"
-rm -rf tmpget
-
- -
- -

- - - - -
-Indexing a website, and using the index as a search engine

- -httrack localhost -%I
- -Will generate an index.txt file, which contains all detected keywords, sorted and indexed using this format:
- -
-
-keyword
-<tab>   number_of_hits_in_current_page_for_this_keyword   page_location
-<tab>   number_of_hits_in_current_page_for_this_keyword   page_location
-<tab>   number_of_hits_in_current_page_for_this_keyword   page_location
-...
-=total_number_of_hits_for_this_keyword
-((total_number_of_hits_for_this_keyword*1000)/total_number_of_keywords)
-
-
- -Example: - -
-
-
-abilities
-	1 localhost/manual/mod/index-2.html
-	1 localhost/manual/mod/index.html
-	1 localhost/manual/mod/mod_negotiation.html
-	=3
-	(0)
-ability
-	2 localhost/manual/misc/FAQ.html
-	2 localhost/manual/suexec.html
-	1 localhost/manual/handler.html
-	1 localhost/manual/misc/security_tips.html
-	1 localhost/manual/mod/mod_rewrite.html
-	1 localhost/manual/mod/mod_setenvif.html
-	1 localhost/manual/multilogs.html
-	1 localhost/manual/netware.html
-	1 localhost/manual/new_features_1_3.html
-	1 localhost/manual/windows.html
-	=12
-	(0)
-able
-	4 localhost/manual/dso.html
-	4 localhost/manual/mod/core.html
-	3 localhost/manual/dns-caveats.html
-	3 localhost/manual/mod/mod_auth.html
-	3 localhost/manual/mod/mod_rewrite.html
-	3 localhost/manual/upgrading_to_1_3.html
-	2 localhost/manual/misc/API.html
-	2 localhost/manual/misc/FAQ.html
-	2 localhost/manual/misc/windoz_keepalive.html
-	2 localhost/manual/mod/mod_auth_db.html
-	2 localhost/manual/mod/mod_auth_dbm.html
-	1 localhost/manual/misc/descriptors.html
-	1 localhost/manual/misc/fin_wait_2.html
-	1 localhost/manual/misc/security_tips.html
-	1 localhost/manual/mod/mod_auth_digest.html
-	1 localhost/manual/mod/mod_cern_meta.html
-	1 localhost/manual/mod/mod_env.html
-	1 localhost/manual/mod/mod_example.html
-	1 localhost/manual/mod/mod_unique_id.html
-	1 localhost/manual/mod/mod_usertrack.html
-	1 localhost/manual/stopping.html
-	1 localhost/manual/suexec.html
-	1 localhost/manual/vhosts/ip-based.html
-	1 localhost/manual/windows.html
-	=43
-	(0)
-
-... -
-
- -Script example: -search.sh - -
- -

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/div/search.sh b/HelpHtml/div/search.sh deleted file mode 100644 index fb0c7cd..0000000 --- a/HelpHtml/div/search.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/sh - -# Simple indexing test using HTTrack -# A "real" script/program would use advanced search, and -# use dichotomy to find the word in the index.txt file -# This script is really basic and NOT optimized, and -# should not be used for professional purpose :) - -TESTSITE="http://localhost/" - -# Create an index if necessary -if ! test -f "index.txt"; then - echo "Building the index .." - rm -rf test - httrack --display "$TESTSITE" -%I -O test - mv test/index.txt ./ -fi - -# Convert crlf to lf -if test "`head index.txt -n 1 | tr '\r' '#' | grep -c '#'`" = "1"; then - echo "Converting index to Unix LF style (not CR/LF) .." - mv -f index.txt index.txt.old - cat index.txt.old|tr -d '\r' > index.txt -fi - -keyword=- -while test -n "$keyword"; do - printf "Enter a keyword: " - read keyword - - if test -n "$keyword"; then - FOUNDK="`grep -niE \"^$keyword\" index.txt`" - - if test -n "$FOUNDK"; then - if ! test `echo "$FOUNDK"|wc -l` = "1"; then - # Multiple matches - printf "Found multiple keywords: " - echo "$FOUNDK"|cut -f2 -d':'|tr '\n' ' ' - echo "" - echo "Use keyword$ to find only one" - else - # One match - N=`echo "$FOUNDK"|cut -f1 -d':'` - PM=`tail +$N index.txt|grep -nE "\("|head -n 1` - if ! echo "$PM"|grep "ignored">/dev/null; then - M=`echo $PM|cut -f1 -d':'` - echo "Found in:" - cat index.txt | tail "+$N" | head -n "$M" | grep -E "[0-9]* " | cut -f2 -d' ' - else - echo "keyword ignored (too many hits)" - fi - fi - else - echo "not found" - fi - - fi -done - diff --git a/HelpHtml/faq.html b/HelpHtml/faq.html deleted file mode 100644 index 1beee2b..0000000 --- a/HelpHtml/faq.html +++ /dev/null @@ -1,902 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

F A Q

- -
- -


-

    -Tips: -
  • In case of troubles/problems during transfer, first check the hts-log.txt (and hts-err.txt) files to figure out what happened. These log files report all -events that may be useful to detect a problem. You can also ajust the debug level of the log files in the option -
  • -The tutorial written by Fred Cohen is a very good document to read, to understand how to use the engine, -how the command line version works, and how the window version works, too! All options are described and explained in -clear language! -
  • -
-

- - - -

- -
-
-
- -Very Frequently Asked Questions:

- -Q: HTTrack does not capture all files I want to capture!
-A: This is a frequent question, generally related to the filters. -BUT first check if your problem is not related to the
robots.txt website rules. -
-
-Okay, let me explain how to precisely control the capture process.
-
-Let's take an example:
-
-Imagine you want to capture the following site:
-www.someweb.com/gallery/flowers/
-
-HTTrack, by default, will capture all links encountered in www.someweb.com/gallery/flowers/ or in lower directories, like -www.someweb.com/gallery/flowers/roses/.
-It will not follow links to other websites, because this behaviour might cause to capture the Web entirely!
-It will not follow links located in higher directories, too (for example, www.someweb.com/gallery/flowers/ itself) because this -might cause to capture too much data.
-
-This is the default behaviour of HTTrack, BUT, of course, if you want, you can tell HTTrack to capture other directorie(s), website(s)!.. -
-In our example, we might want also to capture all links in www.someweb.com/gallery/trees/, and in www.someweb.com/photos/
-
-This can easily done by using filters: go to the Option panel, select the Filters tab, and enter this line: -(you can leave a blank space between each rules, instead of entering a carriage return)
-+www.someweb.com/gallery/trees/*
-+www.someweb.com/photos/*

-
-This means "accept all links begining with www.someweb.com/gallery/trees/ and www.someweb.com/photos/" -- the + means "accept" and the final * means "any character will match after the previous ones". -Remember the *.doc or *.zip encountered when you want to select all files from a certain type on your computer: -it is almost the same here, except the begining "+"
-
-Now, we might want to exclude all links in www.someweb.com/gallery/trees/hugetrees/, because with the previous filter, -we accepted too many files. Here again, you can add a filter rule to refuse these links. Modify the previous filters to:
-+www.someweb.com/gallery/trees/*
-+www.someweb.com/photos/*
--www.someweb.com/gallery/trees/hugetrees/*

-
-You have noticed the - in the begining of the third rule: this means "refuse links matching the rule" -; and the rule is "any files begining with www.someweb.com/gallery/trees/hugetrees/
- -Voila! With these three rules, you have precisely defined what you wanted to capture.
-
-A more complex example?
-
-Imagine that you want to accept all jpg files (files with .jpg type) that have "blue" in the name and located in www.someweb.com
-+www.someweb.com/*blue*.jpg
-
-More detailed information can be found here!
-
-
- -
-General questions:
-

- -Q: Is there any 'spyware' or 'adware' in this program? Can you prove that there isn't any?
-A: No ads (banners), and absolutely no 'spy' features inside the program.
-The best proof is the software status: all sources are released, and everybody can check them. Open source is the best protection against privacy problems - HTTrack is an open source project, free of charge and free of any spy 'features'.
- -

Q: Are there any risks of viruses with this software?
-A: For the software itself: -All official releases (at httrack.com) are checked against all known viruses, and the packaging process is also checked. Archives are stored on Un*x servers, not really concerned by viruses.
-For files you are downloading on the WWW using HTTrack: You may encounter websites which were corrupted by viruses, and downloading data on these websites might be dangerous (as dangerous as if using a regular Browser). Always ensure that websites you are crawling are safe. - (Note: remember that using an antivirus software is a good idea once you are connected to the Internet)
- -

Q: The install is not working on NT without administrator rights!
-A: That's right. You can, however, install WinHTTrack on your own machine, and then copy your WinHTTrack folder from your Program Files folder to another machine, in a temporary directory (e.g. C:\temp\) - -

Q: Where can I find French/other languages documentation?
-A: Windows interface is available on several languages, but not yet the documentation! - -

Q: Is HTTrack working on NT/2000?
-A: Yes, it does - -

Q: What's the difference between HTTrack and WinHTTrack?
-A: WinHTTrack is the Windows release of HTTrack (with a graphic shell) - -

Q: Is HTTrack Mac compatible?
-A: No, because of a lack of time. But sources are available - -

Q: Can HTTrack be compiled on all Un*x?
-A: It should. The Makefile may be modified in some cases, however - -

Q: I use HTTrack for professional purpose. What about restrictions/license fee?
-A: HTTrack is covered by the GNU General Public License (GPL). There is no restrictions using HTTrack for professional purpose, -except if you develop a software which uses HTTrack components (parts of the source, or any other component). -See the license.txt file for more information - -

Q: Is there any license royalties for distributing a mirror made with HTTrack?
-A: No. - -

Q: Is a DLL/library version available?
-A: Not yet. But, again, sources are available (see license.txt for distribution infos) - -

Q: Is there a X11/KDE shell available for Linux and Un*x?
-A: Yes. See the download/contribution section at www.httrack.com! - - -


-Troubleshooting:
-

- -Q: Some sites are captured very well, other aren't. Why?
-A: -There are several reasons (and solutions) for a mirror to fail. Reading the log files (ans this FAQ!) is generally a VERY good idea to figure out what occured. - -

- -There are cases, however, that can not be (yet) handled: - -
    -
  • Flash sites - not handled
  • -
  • Intensive Java/Javascript sites - might be bogus/incomplete
  • -
  • Complex CGI with built-in redirect, and other tricks - very complicated to handle, and therefore might cause problems
  • -
  • Parsing problem in the HTML code (cases where the engine is fooled, for example by a false comment (<!--) which has no closing comment (-->) detected. - Rare cases, but might occur. - A bug report is then generally good! -
  • -
- -Note: -For some sites, setting "Force old HTTP/1.0 requests" option can be useful, as this option uses more basic requests (no HEAD request for example). -This will cause a performance loss, but will increase the compatibility with some cgi-based sites. -
- -
- -Q: Only the first page is caught. What's wrong?
-A: First, check the hts-log.txt file (and/or hts-err.txt error log file) - this can give you precious information.
-The problem can be a website that redirects you to another site (for example, www.someweb.com to public.someweb.com) : -in this case, use filters to accept this site
-This can be, also, a problem in the HTTrack options (link depth too low, for example)
- -

Q: With WinHTTrack, sometimes the minimize in system tray causes a crash!
-A: This bug sometimes appears in the shell on some systems. If you encounter this problem, avoid minimizing the window! - -

Q: Are https URL working?
-A: Yes, HTTrack does support (since 3.20 release) https (secure socket layer protocol) sites - -

Q: Are ipv6 URL working?
-A: Yes, HTTrack does support (since 3.20 release) ipv6 sites, using A/AAAA entries, or direct v6 addresses (like http://[3ffe:b80:12:34:56::78]/) - -

Q: Files are created with strange names, like '-1.html'!
-A: Check the build options (you may have selected user-defined structure with wrong parameters!) - -

Q: When capturing real audio/video links (.ram), I only get a shortcut!
-A: Yes, but .ra/.rm associated file should be captured together - except if rtsp:// protocol is used (not supported by HTTrack yet), or if proper filters are needed - -

Q: Using user:password@address is not working!
-A: Again, first check the hts-log.txt and hts-err.txt error log files - this can give you precious information
-The site may have a different authentication scheme - form based authentication, for example. -In this case, use the URL capture features of HTTrack, it might work
-

- -Q: When I use HTTrack, nothing is mirrored (no files) What's -happening?
-A: First, be sure that the URL typed is correct. Then, check if you need to use a -proxy server (see proxy options in WinHTTrack or the -P proxy:port option in the -command line program). The site you want to mirror may only accept certain browsers. You -can change your "browser identity" with the Browser ID option in the OPTION box. -Finally, you can have a look at the hts-log.txt (and hts-err.txt) file to see what -happened.
-
- -
Q: There are missing files! What's happening?
-A: You may want to capture files that exist in a different folder, or in another web site. -You may also want to capture files that are forbidden by default by the
robots.txt website rules. -In these cases, HTTrack does not capture these links automatically, you have to tell it to do so. -

-
  • Either use the filters.
    -Example: You are downloading http://www.someweb.com/foo/ and can not get .jpg images located -in http://www.someweb.com/bar/ (for example, http://www.someweb.com/bar/blue.jpg)
    -Then, add the filter rule +www.someweb.com/bar/*.jpg to accept all .jpg files from this location
    -You can, also, accept all files from the /bar folder with +www.someweb.com/bar/*, or only html files with +www.someweb.com/bar/*.html and so on..

    -
  • -If the problems are related to robots.txt rules, that do not let you access some folders (check in the logs if you are not sure), -you may want to disable the default robots.txt rules in the options. (but only disable this option with great care, -some restricted parts of the website might be huge or not downloadable) -
-
-
- -Q: There are corrupted images/files! How to fix them?
-A: First check the log files to ensure that the images do really exist remotely and are not fake html error pages renamed into .jpg ("Not found" errors, for example). -Rescan the website with "Continue an interrupted download" to catch images that might be broken due to various errors (transfer timemout, for example). -Then, check if the broken image/file name is present in the log (hts-log.txt) - in this case you will find there the reason why the file has not been properly caught. -
If this doesn't work, delete the corrupted files (Note: to detect corrupted images, you can browse the directories with a tool like ACDSee and then delete them) -and rescan the website as described before. HTTrack will be obliged to recatch the deleted files, and this time it should work, if they do really exist remotely!.
-
-
- -
Q: FTP links are not caught! What's happening?
-A: FTP files might be seen as external links, especially if they are located in outside domain. You have either to accept all external links (See the links options, -n option) or -only specific files (see
filters section).
-Example: You are downloading http://www.someweb.com/foo/ and can not get ftp://ftp.someweb.com files
-Then, add the filter rule +ftp.someweb.com/* to accept all files from this (ftp) location
-
-
- -Q: I got some weird messages telling that robots.txt do not allow several files to be captured. What's going on?
-A: -These rules, stored in a file called robots.txt, are given by the website, to specify which links or folders should not be caught by robots and spiders -- for example, /cgi-bin or large images files. -They are followed by default by HTTrack, as it is advised. Therefore, you may miss some files that would have been downloaded without -these rules - check in your logs if it is the case:
-Info: Note: due to www.foobar.com remote robots.txt rules, links begining with these path will be forbidden: /cgi-bin/,/images/ (see in the options to disable this) - -
-If you want to disable them, just change the corresponding option in the option list! (but only disable this option with great care, -some restricted parts of the website might be huge or not downloadable) -
-
-
- -
Q: I have duplicate files! What's going on?
-A: This is generally the case for top indexes (index.html and index-2.html), isn't it? -
-This is a common issue, but that can not be easily avoided!
-For example, http://www.foobar.com/ and http://www.foobar.com/index.html might be the same pages. -But if links in the website refers both to http://www.foobar.com/ and http://www.foobar.com/index.html, these two pages will be caught. -And because http://www.foobar.com/ must have a name, as you may want to browse the website locally (the / would give a directory listing, NOT the index itself!), -HTTrack must find one. Therefore, two index.html will be produced, one with the -2 to show that the file had to be renamed. -
-It might be a good idea to consider that http://www.foobar.com/ and http://www.foobar.com/index.html are the same links, to avoid -duplicate files, isn't it? -NO, because the top index (/) can refer to ANY filename, and if index.html is generally the default name, index.htm can be choosen, -or index.php3, mydog.jpg, or anything you may imagine. (some webmasters are really crazy) -
-
-Note: In some rare cases, duplicate data files can be found when the website redirect to another file. This issue should be rare, and might be avoided using filters. -
-
-
- -
Q: I'm downloading too many files! What can I do?
-A: This is often the case when you use too large a filter, for example +*.html, which asks the -engine to catch all .html pages (even ones on other sites!). In this case, try to use more specific filters, like +www.someweb.com/specificfolder/*.html
-If you still have too many files, use filters to avoid somes files. For example, if you have too many files from www.someweb.com/big/, -use -www.someweb.com/big/* to avoid all files from this folder. Remember that the default behaviour of the engine, when -mirroring http://www.someweb.com/big/index.html, is to catch everything in http://www.someweb.com/big/. Filters are your friends, -use them! -
-
-
- -
Q: The engine turns crazy, getting thousands of files! What's going on?
-A: This can happen if a loop occurs in some bogus website. For example, a page that refers to itself, with a timestamp -in the query string (e.g. http://www.someweb.com/foo.asp?ts=2000/10/10,09:45:17:147). -These are really annoying, as it is VERY difficult to detect the loop (the timestamp might be a page number). -To limit the problem: set a recurse level (for example to 6), or avoid the bogus pages (use the filters) - -
-
- -
Q: File are sometimes renamed (the type is changed)! Why?
-A: By default, HTTrack tries to know the type of remote files. This is useful when links like -http://www.someweb.com/foo.cgi?id=1 can be either HTML pages, images or anything else. -Locally, foo.cgi will not be recognized as an html page, or as an image, by your browser. HTTrack has to rename the file -as foo.html or foo.gif so that it can be viewed.
-
-
- -
Q: File are sometimes *incorrectly* renamed! Why?
-A: Sometimes, some data files are seen by the remote server as html files, or images : in this case HTTrack is -being fooled.. and rename the file. This can generally be avoided by using the "use HTTP/1.0 requests" option. -You might also avoid this by disabling the type checking in the option panel. - -
-
- -
Q: How do I rename all ".dat" files into ".zip" files?
-A: Simply use the --assume dat=application/x-zip option - -
-
- -
Q: I can not access several pages (access forbidden, or redirect to another location), but I can with my browser, what's going on?
-A: You may need cookies! Cookies are specific data (for example, your username or password) that are sent to your browser once -you have logged in certain sites so that you only have to log-in once. For example, after having entered your username in a website, you can -view pages and articles, and the next time you will go to this site, you will not have to re-enter your username/password.
-To "merge" your personnal cookies to an HTTrack project, just copy the cookies.txt file from your Netscape folder (or the cookies located into the Temporary Internet Files folder for IE) -into your project folder (or even the HTTrack folder) -
-
-
- -
Q: Some pages can't be seen, or are displayed with errors!
-A: Some pages may include javascript or java files that are not recognized. For -example, generated filenames. There may be transfer problems, too (broken pipe, etc.). But -most mirrors do work. We still are working to improve the mirror quality of HTTrack.
-
-
- -
Q: Some Java applets do not work properly!
-A: Java applets may not work in some cases, for example if HTTrack failed to detect all included classes -or files called within the class file. Sometimes, Java applets need to be online, because remote files are -directly caught. Finally, the site structure can be incompatible with the class (always try to keep the original site structure -when you want to get Java classes)
-If there is no way to make some classes work properly, you can exclude them with the filters. -They will be available, but only online. -
-
-
- -
Q: HTTrack is taking too much time for parsing, it is very slow. What's wrong?
-A: Former (before 3.04) releases of HTTrack had problems with parsing. It was really slow, and performances -especially -with huge HTML files- were not really good. The engine is now optimized, and should parse very quickly all html files. -For example, a 10MB HTML file should be scanned in less than 3 or 4 seconds.
-
-Therefore, higher values mean that the engine had to wait a bit for testing several links. - -
    -
  • Sometimes, links are malformed in pages. -"a href="/foo"" instead of "a href="/foo/"", for example, is a common mistake. It will force the engine to -make a supplemental request, and find the real /foo/ location. -
  • -

    -
  • Dynamic pages. Links with names terminated by .php3, .asp or other type which are different from the regular -.html or .htm will require a supplemental request, too. HTTrack has to "know" the type (called "MIME type") of a file -before forming the destination filename. Files like foo.gif are "known" to be images, ".html" are obviously HTML pages - but ".php3" -pages may be either dynamically generated html pages, images, data files...
    -
    -If you KNOW that ALL ".php3" and ".asp" pages are in fact HTML pages on a mirror, use the assume option:
    ---assume php3=text/html,asp=text/html -

    -This option can be used to change the type of a file, too : the MIME type "application/x-MYTYPE" will always have the "MYTYPE" type. -Therefore,
    ---assume dat=application/x-zip -
    -will force the engine to rename all dat files into zip files -
  • -
- - -

-
- -
Q: HTTrack is being idle for a long time without -transfering. What's happening?
-A: Maybe you try to reach some very slow sites. Try a lower TimeOut value (see -options, or -Txx option in the command line program). Note that you will abandon -the entire site (except if the option is unchecked) if a timeout happen You can, with the -Shell version, skip some slow files, too.
-
- -
Q: I want to update a site, but it's taking too much time! What's happening?
-A: First, HTTrack always tries to minimize the download flow by interrogating the server about the -file changes. But, because HTTrack has to rescan all files from the begining to rebuild the local site structure, -it can take some time. -Besides, some servers are not very smart and always consider that they get newer files, forcing HTTrack to reload them, -even if no changes have been made! -
-
- -
Q: I wanted to update a site, but after the update the site disappeared!! What's going on?
-A: You may have done something wrong, but not always - -
    -
  • The site has moved : the current location only shows a notification. Therefore, all other files have been deleted to show the current state of the website!
  • -
  • The connection failed: the engine could not catch the first files, and therefore deleted everything. -To avoid that, using the option "do not purge old files" might be a good idea
  • -
  • You tried to add a site to the project BUT in fact deleted the former addresses.
    -Example: A project contains 'www.foo.com www.bar.com' and you want to add 'www.doe.com'. -Ensure that 'www.foo.com www.bar.com www.doe.com' is the new URL list, and NOT 'www.doe.com'! -
  • -
- -

- -
Q: I am behind a firewall. What can I do?
-A: You need to use a proxy, too. Ask your administrator to know the proxy server's -name/port. Then, use the proxy field in HTTrack or use the -P proxy:port option -in the command line program.
-

- -

Q: HTTrack has crashed during a mirror, what's happening?
-A: We are trying to avoid bugs and problems so that the program can be as reliable as -possible. But we can not be infallible. If you occurs a bug, please check if you have the -latest release of HTTrack, and send us an email with a detailed description of your -problem (OS type, addresses concerned, crash description, and everything you deem to be -necessary). This may help the other users too.
-
-
- -
Q: I want to update a mirrored project, but HTTrack is retransfering all pages. What's going on?
-A: First, HTTrack always rescans all local pages to reconstitute the website structure, and it can take some time. -Then, it asks the server if the files that are stored locally are up-to-date. On most sites, pages are not -updated frequently, and the update process is fast. But some sites have dynamically-generated pages that are considered as -"newer" than the local ones.. even if they are identical! Unfortunately, there is no possibility to avoid this problem, -which is strongly linked with the server abilities. - -
-
- -
Q: I want to continue a mirrored project, but HTTrack is rescanning all pages. What's going on?
-A: HTTrack has to (quickly) rescan all pages from the cache, without retransfering them, to rebuild the internal file structure. However, this process can take some time with huge sites -with numerous links. - -
-
- -
Q: HTTrack window sometimes "disappears" at then end of a mirrored project. What's going on?
-A: This is a known bug in the interface. It does NOT affect the quality of the mirror, however. We are still hunting it down, -but this is a smart bug.. - -
-
- -
Questions concerning a mirror:
- -
-
Q: I want to mirror a Web site, but there are some files outside -the domain, too. How to retrieve them?
-A: If you just want to retrieve files that can be reached through links, just activate -the 'get file near links' option. But if you want to retrieve html pages too, you can both -use wildcards or explicit addresses ; e.g. add www.someweb.com/* to accept all -files and pages from www.someweb.com.
-
-
Q: I have forgotten some URLs of files during a long -mirror.. Should I redo all?
-A: No, if you have kept the 'cache' files (in hts-cache), cached files will not be -retransfered.
-
-
Q: I just want to retrieve all ZIP files or other files in a web -site/in a page. How do I do it?
-A: You can use different methods. You can use the 'get files near a link' option if -files are in a foreign domain. You can use, too, a filter adress: adding +*.zip -in the URL list (or in the filter list) will accept all ZIP files, even if these files are -outside the address.
-Example : httrack www.someweb.com/someaddress.html +*.zip will allow -you to retrieve all zip files that are linked on the site.

-
-
Q: There are ZIP files in a page, but I don't want to transfer -them. How do I do it?
-A: Just filter them: add -*.zip in the filter list.
-
-
Q: I don't want to load gif files.. but what may happen if I -watch the page?
-A: If you have filtered gif files (-*.gif), links to gif files will be -rebuilt so that your browser can find them on the server.
-
-
Q: I get all types of files on a web site, but I didn't select -them on filters!
-A: By default, HTTrack retrieves all types of files on authorized links. To avoid -that, define filters like
-* +<website>/*.html -+<website>/*.htm +<website>/ +*.<type wanted>
-Example: httrack www.someweb.com/index.html -* +www.someweb.com/*.htm* +www.someweb.com/*.gif +www.someweb.com/*.jpg
-
-
Q: When I use filters, I get too many files!
-A: You might use too large a filter, for example *.html will get ALL html -files identified. If you want to get all files on an address, use www.<address>/*.html.
-If you want to get ONLY files defined by your filters, use something like -* +www.foo.com/*, because -+www.foo.com/* will only accept selected links without forbidding other ones!
-There are lots of possibilities using filters.
-Example:httrack www.someweb.com +*.someweb.com/*.htm*
-
-
Q: When I use filters, I can't access another domain, but I -have filtered it!
-A: You may have done a mistake declaring filters, for example +www.someweb.com/* --*someweb* will not work, because -*someweb* has an upper priority (because it has -been declared after +www.someweb.com)
-
-
Q: Must I add a  '+' or '-' in the filter list when I want -to use filters?
-A: YES. '+' is for accepting links and '-' to avoid them. If you forget it, HTTrack -will consider that you want to accept a filter if there is a wild card in the syntax - e.g. -+<filter> is identical to <filter> if <filter> contains a wild card (*) -(else it will be considered as a normal link to mirror)

-
-Q: I want to find file(s) in a web-site. How do I do it?
-A: You can use the filters: forbid all files (add a -* in the -filter list) and accept only html files and the file(s) you want to retrieve (BUT do not -forget to add +<website>*.html in the filter list, or pages will not be -scanned! Add the name of files you want with a */ before ; i.e. if you want to -retrieve file.zip, add */file.zip)
-Example:httrack www.someweb.com +www.someweb.com/*.htm* +thefileiwant.zip
-
-
- -
Q: I want to download ftp files/ftp site. How do I do it?
-A: First, HTTrack is not the best tool to download many ftp files. Its ftp engine is basic (even if reget are -possible) and if your purpose is to download a complete site, use a specific client.
-You can download ftp files just by typing the URL, such as ftp://ftp.somesite.com/pub/files/file010.zip and list ftp directories -like ftp://ftp.somesite.com/pub/files/
.
-Note: For the filters, use something like +ftp.somesite.com/* -
- -
Q: How can I retrieve .asp or .cgi sources instead of .html result?
-A: You can't! For security reasons, web servers do not allow that. - -

Q: How can I remove these annoying <!-- Mirrored from... --> from html files?
-A: Use the footer option (-%F, or see the WinHTTrack options) - -

Q: Do I have to select between ascii/binary transfer mode?
-A: No, http files are always transfered as binary files. Ftp files, too (even if ascii mode could be selected) - -

Q: Can HTTrack perform form-based authentication?
-A: Yes. See the URL capture abilities (--catchurl for command-line release, or in the WinHTTrack interface) - -

Q: Can I redirect downloads to tar/zip archive?
-A: Yes. See the shell system command option (-V option for command-line release) - -

Q: Can I use username/password authentication on a site?
-A: Yes. Use user:password@your_url (example: http://foo:bar@www.someweb.com/private/mybox.html) - -

Q: Can I use username/password authentication for a proxy?
-A: Yes. Use user:password@your_proxy_name as your proxy name (example: smith:foo@proxy.mycorp.com) - -

Q: Can HTTrack generates HP-UX or ISO9660 compatible files?
-A: Yes. See the build options (-N, or see the WinHTTrack options) - -

Q: If there any SOCKS support?
-A: Not yet! - -

Q: What's this hts-cache directory? Can I remove it?
-A: NO if you want to update the site, because this directory is used by HTTrack for this purpose. -If you remove it, options and URLs will not be available for updating the site - -

Q: Can I start a mirror from my bookmarks?
-A: Yes. Drag&Drop your bookmark.html file to the WinHTTrack window (or use file://filename for command-line release) and select -bookmark mirroring (mirror all links in pages, -Y) or bookmark testing (--testlinks) - -

Q: Can I convert a local website (file:// links) to a standard website?
-A: Yes. Just start from the top index (example: file://C:\foopages\index.html) and mirror the local website. -HTTrack will convert all file:// links to relative ones. - - -

Q: Can I copy a project to another folder - Will the mirror work?
-A: Yes. There is no absolute links, all links are relative. -You can copy a project to another drive/computer/OS, and browse is without installing anything. - -

Q: Can I copy a project to another computer/system? Can I then update it ?
-A: Absolutely! You can keep your HTTrack favorite folder (C:\My Web Sites) in your local hard disk, copy it -for a friend, and possibly update it, and then bring it back!
You can copy individual folders (projects), too: exchange -your favorite websites with your friends, or send an old version of a site to someone who has a faster connection, and -ask him to update it!
- - -
-Note: Export (Windows <-> Linux)
-The file and cache structure is compatible between Linux/Windows, but you may have to do some changes, like the path
- - - - - -
- Windows -> Linux/Unix -
- Copy (in binary mode) the entire folder and then to update it, enter into it and do a
- - httrack --update -O ./ - -

- - Note: You can then safely replace the existing folder (under Windows) with this one, because - the Linux/Unix version did not change any options
- Note: If you often switch between Windows/Linux with the same project, it might be a good idea to edit the hts-cache/doit.log file - and delete old "-O" entries, because each time you do a httrack --update -O ./ an entry is added, - causing the command line to be long -
-
- Linux/Unix -> Windows -
- Copy (in binary mode) the entire folder in your favorite Web mirror folder. - Then, select this project, AND retype ALL URLs AND redefine all options as if you were - creating a new project. - This is necessary because the profile (winprofile.ini) has not be created with the Linux/Unix version. - But do not be afraid, WinHTTrack will use cached files to update the project! -
-
- -
- -

Q: How can I grab email addresses in web pages?
-A: You can not. HTTrack has not be designed to be an email grabber, like many other (bad) products. - - -
-
-
-Other problems:
-
- -Q: My problerm is not listed!
-A: Feel free to
contact us! -
- -


- - -

-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/fcguide.html b/HelpHtml/fcguide.html deleted file mode 100644 index 34f9edd..0000000 --- a/HelpHtml/fcguide.html +++ /dev/null @@ -1,2719 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Httrack Users Guide (3.10)

-By Fred Cohen
- -
- -

Background and Introduction

- -

I started using httrack in mid-2000 and found it to be -an excellent tool for imaging web sites. Various words are used to -describe this process - from imaging to mirroring to snaking and so on. -I will be using a variety of these words in my description. - -

I have used many such tools over the years, have -performed many manual and semi-automatic operations of similar sorts, -and written partial programs to do similar functions, but - at least for -now - httrack seems to me to be the best option for this function. - -

The only problem I encountered when using httrack was -that it is so rich with features that I could never really figure out -precisely the right thing to do at any given point. I was using -recepies rather than knowledge to get the job done - and I was pestering -the authors for those recepies. After a few days of very helpful -assistance from the authors I volenteered to write a users manual for -httrack - and here it is. I hope it gets the job done. - -


-

Basics

- -

Httrack is a program that gets information from the -Internet, looks for pointers to other information, gets that -information, and so forth. If you ask it to, and have enough disk -space, it will try to make a copy of the whole Internet on your -computer. While this may be the answer to Dilbert's boss when he asks -to get a printout of the Internet for some legal document, for most of -us, we want to get copies of just the right part of the Internet, and -have them nicely organized for our use. This is where httrack does a -great job. Here's a simple example: - -


-httrack "http://www.all.net/" -O "/tmp/www.all.net" "+*.all.net/*" -v
-
- -

In this example, we ask httrack to start the Universal -Resource Locator (URL) http://www.all.net/ and store the results under -the directory /tmp/www.all.net (the -O stands for "output to") while not -going beyond the bounds of all the files in the www.all.net domain and -printing out any error messages along the way (-v means verbose). This -is the most common way that I use httrack. Please note that this -particular command might take you a while - and run you out of disk -space. - -

This sort of a mirror image is not an identical copy -of the original web site - in some ways it's better such as for local -use - while in other ways it may be problematic - such as for legal use. -This default mirroring method changes the URLs within the web site so -that the references are made relative to the location the copy is stored -in. This makes it very useful for navigating through the web site on -your local machine with a web browser since most things will work as you -would expect them to work. In this example, URLs that point outside of -the www.all.net domain space will still point there, and if you encounter -one, the web browser will try to get the data from that location. - -

For each of the issues discussed here - and many more -- httrack has options to allow you to make different choices and get -different results. This is one of the great things about httrack - and -one of the the real major problems with using it without the knowledge -of all that it can do. If you want to know all the things httrack can -do, you might try typing: - -


-httrack --help
-
- -

Unfortunately, while this outputs a though list of -options, it is somewhat less helpful it might be for those who don't -know what the options all mean and haven't used them before. On the -other hand, this is most useful for those who already know how to use -the program but don't remember some obscure option that they haven't -used for some time. - -

The rest of this manual is dedicated to detailing what -you find in the help message and providing examples - lots and lots of -examples... Here is what you get (page by page - use to move to -the next page in the real program) if you type 'httrack --help': - -

->httrack --help
- HTTrack version 3.03BETAo4 (compiled Jul  1 2001)
-	usage: ./httrack ] [-]
-	with options listed below: (* is the default value)
-
-General options:
-  O  path for mirror/logfiles+cache (-O path_mirror[,path_cache_and_logfiles]) (--path )
- %O  top path if no path defined (-O path_mirror[,path_cache_and_logfiles])
-
-Action options:
-  w *mirror web sites (--mirror)
-  W  mirror web sites, semi-automatic (asks questions) (--mirror-wizard)
-  g  just get files (saved in the current directory) (--get-files)
-  i  continue an interrupted mirror using the cache
-  Y   mirror ALL links located in the first level pages (mirror links) (--mirrorlinks)
-
-Proxy options:
-  P  proxy use (-P proxy:port or -P user:pass@proxy:port) (--proxy )
- %f *use proxy for ftp (f0 don't use) (--httpproxy-ftp[=N])
-
-Limits options:
-  rN set the mirror depth to N (* r9999) (--depth[=N])
- %eN set the external links depth to N (* %e0) (--ext-depth[=N])
-  mN maximum file length for a non-html file (--max-files[=N])
-  mN,N'                  for non html (N) and html (N')
-  MN maximum overall size that can be uploaded/scanned (--max-size[=N])
-  EN maximum mirror time in seconds (60=1 minute, 3600=1 hour) (--max-time[=N])
-  AN maximum transfer rate in bytes/seconds (1000=1kb/s max) (--max-rate[=N])
- %cN maximum number of connections/seconds (*%c10)
-  GN pause transfer if N bytes reached, and wait until lock file is deleted (--max-pause[=N])
-
-Flow control:
-  cN number of multiple connections (*c8) (--sockets[=N])
-  TN timeout, number of seconds after a non-responding link is shutdown (--timeout)
-  RN number of retries, in case of timeout or non-fatal errors (*R1) (--retries[=N])
-  JN traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link (--min-rate[=N])
-  HN host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow (--host-control[=N])
-
-Links options:
- %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use) (--extended-parsing[=N])
-  n  get non-html files 'near' an html file (ex: an image located outside) (--near)
-  t  test all URLs (even forbidden ones) (--test)
- %L )
-
-Build options:
-  NN structure type (0 *original structure, 1+: see below) (--structure[=N])
-     or user defined structure (-N "%h%p/%n%q.%t")
-  LN long names (L1 *long names / L0 8-3 conversion) (--long-names[=N])
-  KN keep original links (e.g. http://www.adr/link) (K0 *relative link, K absolute links, K3 absolute URI links) (--keep-links[=N])
-  x  replace external html links by error pages (--replace-external)
- %x  do not include any password for external password protected websites (%x0 include) (--no-passwords)
- %q *include query string for local files (useless, for information purpose only) (%q0 don't include) (--include-query-string)
-  o *generate output html file in case of error (404..) (o0 don't generate) (--generate-errors)
-  X *purge old files after update (X0 keep delete) (--purge-old[=N])
-
-Spider options:
-  bN accept cookies in cookies.txt (0=do not accept,* 1=accept) (--cookies[=N])
-  u  check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always) (--check-type[=N])
-  j *parse Java Classes (j0 don't parse) (--parse-java[=N])
-  sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) (--robots[=N])
- %h  force HTTP/1.0 requests (reduce update features, only for old servers or proxies) (--http-10)
- %B  tolerant requests (accept bogus responses on some servers, but not standard!) (--tolerant)
- %s  update hacks: various hacks to limit re-transfers when updating (identical size, bogus response..) (--updatehack)
- %A  assume that a type (cgi,asp..) is always linked with a mime type (-%A php3=text/html) (--assume )
-
-Browser ID:
-  F  user-agent field (-F "user-agent name") (--user-agent )
- %F  footer string in Html code (-%F "Mirrored [from host %s [file %s [at %s]]]" (--footer )
- %l  preffered language (-%l "fr, en, jp, *" (--language )
-
-Log, index, cache
-  C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before) (--cache[=N])
-  k  store all files in cache (not useful if files on disk) (--store-all-in-cache)
- %n  do not re-download locally erased files (--do-not-recatch)
- %v  display on screen filenames downloaded (in realtime) (--display)
-  Q  no log - quiet mode (--do-not-log)
-  q  no questions - quiet mode (--quiet)
-  z  log - extra infos (--extra-log)
-  Z  log - debug (--debug-log)
-  v  log on screen (--verbose)
-  f *log in files (--file-log)
-  f2 one single log file (--single-log)
-  I *make an index (I0 don't make) (--index)
- %I  make an searchable index for this mirror (* %I0 don't make) (--search-index)
-
-Expert options:
-  pN priority mode: (* p3) (--priority[=N])
-      0 just scan, don't save anything (for checking links)
-      1 save only html files
-      2 save only non html files
-     *3 save all files
-      7 get html files before, then treat other files
-  S  stay on the same directory
-  D *can only go down into subdirs
-  U  can only go to upper directories
-  B  can both go up&down into the directory structure
-  a *stay on the same address
-  d  stay on the same principal domain
-  l  stay on the same TLD (eg: .com)
-  e  go everywhere on the web
- %H  debug HTTP headers in logfile (--debug-headers)
-
-Guru options: (do NOT use)
- #0  Filter test (-#0 '*.gif' 'www.bar.com/foo.gif')
- #f  Always flush log files
- #FN Maximum number of filters
- #h  Version info
- #K  Scan stdin (debug)
- #L  Maximum number of links (-#L1000000)
- #p  Display ugly progress information
- #P  Catch URL
- #R  Old FTP routines (debug)
- #T  Generate transfer ops. log every minutes
- #u  Wait time
- #Z  Generate transfer rate statictics every minutes
- #!  Execute a shell command (-#! "echo hello")
-
-Command-line specific options:
-  V execute system command after each files ($0 is the filename: -V "rm \$0") (--userdef-cmd )
- %U run the engine with another id when called as root (-%U smith) (--user )
-
-Details: Option N
-  N0 Site-structure (default)
-  N1 HTML in web/, images/other files in web/images/
-  N2 HTML in web/HTML, images/other in web/images
-  N3 HTML in web/,  images/other in web/
-  N4 HTML in web/, images/other in web/xxx, where xxx is the file extension (all gif will be placed onto web/gif, for example)
-  N5 Images/other in web/xxx and HTML in web/HTML
-  N99 All files in web/, with random names (gadget !)
-  N100 Site-structure, without www.domain.xxx/
-  N101 Identical to N1 exept that "web" is replaced by the site's name
-  N102 Identical to N2 exept that "web" is replaced by the site's name
-  N103 Identical to N3 exept that "web" is replaced by the site's name
-  N104 Identical to N4 exept that "web" is replaced by the site's name
-  N105 Identical to N5 exept that "web" is replaced by the site's name
-  N199 Identical to N99 exept that "web" is replaced by the site's name
-  N1001 Identical to N1 exept that there is no "web" directory
-  N1002 Identical to N2 exept that there is no "web" directory
-  N1003 Identical to N3 exept that there is no "web" directory (option set for g option)
-  N1004 Identical to N4 exept that there is no "web" directory
-  N1005 Identical to N5 exept that there is no "web" directory
-  N1099 Identical to N99 exept that there is no "web" directory
-Details: User-defined option N
-  %n Name of file without file type (ex: image) (--do-not-recatch)
-  %N Name of file, including file type (ex: image.gif)
-  %t File type (ex: gif)
-  %p Path [without ending /] (ex: /someimages)
-  %h Host name (ex: www.someweb.com) (--http-10)
-  %M URL MD5 (128 bits, 32 ascii bytes)
-  %Q query string MD5 (128 bits, 32 ascii bytes)
-  %q small query string MD5 (16 bits, 4 ascii bytes) (--include-query-string)
-     %s? Short name version (ex: %sN)
-  %[param] param variable in query string
-
-Shortcuts:
---mirror      
-
-

For many of you, the manual is now complete, but for -the rest of us, I will now go through this listing one item at a time -with examples... I will be here a while... - -


-

Syntax

- -
httrack  [-option] [+] [-] 
- -

The syntax of httrack is quite simple. You specify -the URLs you wish to start the process from (), any options you -might want to add ([-option], any filters specifying places you should -([+]) and should not ([-]) go, and end the command -line by pressing . Httrack then goes off and does your bidding. -For example: - -


-httrack www.all.net/bob/
-
- -

This will use the 'defaults' (those selections from -the help page marked with '*' in the listing above) to image the web -site. Specifically, the defauls are: - -

-  w *mirror web sites
- %f *use proxy for ftp (f0 don't use)
-  cN number of multiple connections (*c8)
-  RN number of retries, in case of timeout or non-fatal errors (*R1)
- %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use)
-  NN  name conversion type (0 *original structure, 1+: see below)
-  LN  long names (L1 *long names / L0 8-3 conversion)
-  K   keep original links (e.g. http://www.adr/link) (K0 *relative link)
-  o *generate output html file in case of error (404..) (o0 don't generate)
-  X *purge old files after update (X0 keep delete)
-  bN  accept cookies in cookies.txt (0=do not accept,* 1=accept)
-  u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
-  j *parse Java Classes (j0 don't parse)
-  sN  follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
-  C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
-  f *log file mode
-  I *make an index (I0 don't make)
-  pN priority mode: (* p3)  *3 save all files
-  D  *can only go down into subdirs
-  a  *stay on the same address
-  --mirror       *make a mirror of site(s) (default)
-
- -

Here's what all of that means: - -

    -
      w *mirror web sites 
    - -

    Automatically go though each URL you download and look -for links to other URLs inside it, dowloading them as well. - -

     %f *use proxy for ftp (f0 don't use) 
    - -

    If there are and links to ftp URLs (URLs using the -file transfer protocol (FTP) rather than the hypertext transfer protocol -HTTP), go through an ftp proxy server to get them. - -

      cN number of multiple connections (*c8) 
    - -

    Use up to 8 simultaneous downloads so that at any -gioven time, up to 8 URLs may be underway. - -

      RN number of retries, in case of timeout or non-fatal errors (*R1) 
    - -

    Retry once if anything goes wrong with a download. - -

     %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use) 
    - -

    Try to parse all URLs - even if they are in -Javascript, Java, tags of unknown types, or anywhere else the program -can find things. - -

      NN  name conversion type (0 *original structure, 1+: see below) 
    - -

    Use the original directory and file structure of the -web site in your mirror image of the site. - -

      LN  long names (L1 *long names / L0 8-3 conversion) 
    - -

    If filenames do not follow the old DOS conventions, -store them with the same names used on the web site. - -

      K   keep original links (e.g. http://www.adr/link) (K0 *relative link) 
    - -

    Use relative rather than the original links so that -URLs within this web site are adjusted to point to the files in the -mirror. - -

      o *generate output html file in case of error (404..) (o0 don't generate) 
    - -

    IF there are errors in downloading, create a file that -indicates that the URL was not found. This makes browsing go a lot -smoother. - -

      X *purge old files after update (X0 keep delete) 
    - -

    Files not found on the web site that were previously -there get deleted so that you have an accurate snapshot of the site as -it is today - losing historical data. - -

      bN  accept cookies in cookies.txt (0=do not accept,* 1=accept) 
    - -

    Accept all cokkies sent to you and return them if -requested. This is required for many sites to function. These cookies -are only kept relative to the specific site, so you don't have to worry -about your browser retaining them. - -

      u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always) 
    - -

    This causes different document types to be analyzed -differently. - -

      j *parse Java Classes (j0 don't parse) 
    - -

    This causes Java class files to be parsed looking for -URLs. - -

      sN  follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) 
    - -

    This tells the program to follow the wishes of the -site owner with respect to limiting where robots like this one search. - -

      C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before) 
    - -

    If you are downloading a site you have a previous copy -of, supplemental parameters are transmitted to the server, for example -the 'If-Modified-Since:' field will be used to see if files are newer -than the last copy you have. If they are newer, they will be -downloaded, otherwise, they will not. - -

      f *log file mode 
    - -

    This retains a detailed log of any important events -that took place. - -

      I *make an index (I0 don't make) 
    - -

    This makes a top-level index.html file so that if you -image a set of sites, you can have one place to start reviewing the set -of sites. - -

      pN priority mode: (* p3)  *3 save all files 
    - -

    This will cause all downloaded files to be saved. - -

      D  *can only go down into subdirs 
    - -

    This prevents the program from going to higher level -directories than the initial subdirectory, but allows lower-level -subdirectories of the starting directory to be investigated. - -

      a  *stay on the same address 
    - -

    This indicates that only the web site(s) where the -search started are to be collected. Other sites they point to are not -to be imaged. - -

      --mirror       *make a mirror of site(s) (default) 
    - -

    This indicates that the program should try to make a -copy of the site as well as it can. - -

- -

Now that's a lot of options for the default - but of -course there are a lot more options to go. For the most part, the rest -of the options represent variations on these themes. For example, -instead of saving all files, we might only want to save html files, or -instead of 8 simultaneous sessions, we might want only 4. - -

If we wanted to make one of these changes, we would -specify the option on the command line. For example: - -


-httrack www.all.net/bob/ -c4 -B
-
- -

This would restrict httrack to only use 4 -siumultaneous sessions but allow it to go up the directory structure -(for example to www.all.net/joe/) as well as down it (for example to -www.all.net/bob/deeper/). - -

You can add a lot of options to a command line! - -


- -

A Thorough Going Over

- -

Now that you have an introduction, it's time for a -more though coverage. This is where I go through each of the options -and describe it in detail with examples... Actually, I won't quite do -that. But I will get close. - -

Options tend to come in groups. Each group tends to -be interrelated, so it's easier and more useful to go through them a -group at a time with some baseline project in mind. In my case, the -project is to collect all of the information on the Internet about some -given subject. We will assume that, through a previous process, I have -gotten a list of URLs of interest to me. Typically there will be -hundreds of these URLs, and they will be a mixed bag of sites that are -full of desired information, pages with lists of pointers to other -sites, URLs of portions of a web site that are of interest (like Bob's -home pages and subdirectories), and so forth. Let us say that for today -we are looking for the definitive colleciton of Internet information on -shoe sizes from around the world. - -


-

General Options

- -

-General options:
-  O  path for mirror/logfiles+cache (-O path_mirror[,path_cache_and_logfiles])
-
- -

For this project, I will want to keep all of the -information I gather in one place, so I will specify that output area of -the project as /tmp/shoesizes by adding '-O -/tmp/shoesizes' to every command line I use.. for example: - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes
-
- -

The action options tell httrack how to operate at the -larger level. - -


-

Action Options

- -

-Action options:
-  w *mirror web sites
-  W  mirror web sites, semi-automatic (asks questions)
-  g  just get files (saved in the current directory)
-  i  continue an interrupted mirror using the cache
-  Y   mirror ALL links located in the first level pages (mirror links)
-
- -

If I want httrack to ask me questions - such as what -options to use, what sites to mirror, etc. I can tell it to ask these -questions as follows: - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -W
-
-
-
-

I can also do: - -

httrack
-OR -
httrack -W
-OR -
httrack -w
- -

The '-W' options asks whether the or not a site has to -be mirrored, while the '-w' option does not ask this question but asks -the remainder of the questions required to mirror the site. - -

The -g option allows you to get the files exactly as -they are and store them in the currant directory. This is handy for a -relatively small collection of information where organization isn't -important. With this option, the html files will not even be parsed to -look for other URLs. This option is useful for getting isolated files -(e.g., httrack -g www.mydrivers.com/drivers/windrv32.exe). - - -

If I start a collection process and it fails for ome -reason or another - such as me interrupting it because I am running out -of disk space - or a network outage - then I can restart the process by -using the -i option: - -

httrack http://www.shoesizes.com -O /tmp/shoesizes -i 
- -

Finally, I can mirror all links in the first level -pages of the URLs I specify. A good example of where to use whis would -be in a case where I have a page that points to a lot of other sites and -I want to get the initial information on those sites before mirroring -them: - -

httrack http://www.shoesizes.com/othersites.html -O /tmp/shoesizes -Y 
- -
-

Proxy Options

- -

Many users use a proxy for many of their functions. -This is a key component in many firewalls, but it is also commonly used -for anonymizing access and for exploiting higher speed communications at -a remote server. - -

Proxy options:
-  P  proxy use (-P proxy:port or -P user:pass@proxy:port)
- %f *use proxy for ftp (f0 don't use)
-
- -

If you are using a standard proxy that doesn't require -a user ID and password, you would do something like this: - -

httrack http://www.shoesizes.com -O /tmp/shoesizes -P proxy.www.all.net:8080 
- -

In this case, we have asusmed that proxy.www.all.net is -the host that does the proxy service and that it uses port 8080 for this -service. In some cases you will have to ask your network or firewall -administrator for these details, however, in most cases they should be -the same as the options used in your web browser. - -

In some cases, a user ID and password are required for -the proxy server. This is common in corporate environments where only -authorized users may access the Internet. - -

httrack http://www.shoesizes.com -O /tmp/shoesizes -P fc:password@proxy.www.all.net:8080 
- -

In this case, the user ID 'fc' and the password -'password' are used on proxy.www.all.net port 8080. Again, your network or -firewall administrator can be most helpful in addressing the specifics -for your environment. - -

FTP normally operates through a proxy server, but for systems -that have direct connections to the Internet, the following option should help: - -

httrack ftp://ftp.shoesizes.com -O /tmp/shoesizes -%f0 
- -
-

Limits Options

- -

-Limits options:
-  rN set the mirror depth to N
-  mN maximum file length for a non-html file
-  mN,N'                  for non html (N) and html (N')
-  MN maximum overall size that can be uploaded/scanned
-  EN maximum mirror time in seconds (60=1 minute, 3600=1 hour)
-  AN maximum transfer rate in bytes/seconds (1000=1kb/s max)
-  GN pause transfer if N bytes reached, and wait until lock file is deleted
-  %eN set the external links depth to N (* %e0) (--ext-depth[=N])
-  %cN maximum number of connections/seconds (*%c10)
-
- -

Setting limits provides the means by which you can -avoid running out of disk space, CPU time, and so forth. This may be -particularly helpful for those who accidentally try to image the whole -Internet. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -r50
-
- -

In this example, we limit the directlry depth to 50 -levels deep. As a general rule, web sites don't go much deeper than 20 -levels or so, and if you think about it, if there are only 2 -subdirectories per directory level, a directory structure 50 deep would -have about 10 trillion directories. Of course many sites have a small -number of files many levels deep in a directory structure for various -reasons. In some cases, a symbolic link will cause an infinite -recursion of directory levels as well, so placing a limit may be -advisable. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -m50000000
-
- -

This example sets the maximum file length for non-HTML -files to 50 megabytes. This is not an unusual length for things like -tar files, and in some cases - for example when there are images of -CD-ROMs to fetch from sites, you might want a limit more like 750 -megabytes. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -m50000000,100000
-
- -

In this example, we have set a limit for html files -as well - at 100,000 bytes. HTML files are rarely larger than this, -however, in some cases larger sizes may be needed. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -M1000000000
-
- -

This option sets the maximum total size - in bytes - -that can be uploaded from a site - in this case to 1 gigabyte. -Depending on how much disk space you have, such an option may be -worthwhile. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -E3600
-
- -

This sets the maximum runtime for the download -process. Of course depending on the speed of your connection it may -take longer or shorter runtimes to get the same job done, and network -traffic is also a factor. 3600 seconds corresponds to one hour. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes A100000000
-
- -

This option specifies the largest number of bytes per -second that should be used for transfers. For example, you might want -to go slow for some servers that are heavily loaded in the middle of the -day, or to download slowly so that the servers at the other end are less -likely to identify you as mirroring their site. The setting above -limits my bandwidth to 100 million bytes per second - slow I know, but I -wouldn't want to stress the rest of the Internet. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -G100000000
-
- -

In this case, the G option is used to 'pause' a -download after the first gigabyte is downloaded pending manual removal -of the lockfile. This is handy of you want to download some portion of -the data, move it to secondary storage, and then continue - or if you -want to only download overnight and want to stop before daylight and -continue the next evening. You could even combine this option with a -cron job to remove the lock file so that the job automatically restarts -at 7PM every night and gets another gigabyte. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes %e5
-
- -

In this case, httrack will only go to depth 5 for external links, -thus not imaging the entire web, but only yhose links within 5 links of these web pages. - -

Also note that the interaction of these options may -cause unintended consequences. For example, limiting bandwidth and -download time conspire to limit the total amount of data that can -be downloaded. - -


-

Flow Control Options

- -

-Flow control:
-  cN number of multiple connections (*c8)
-  %cN maximum number of connections/seconds (*%c10)
-  TN timeout, number of seconds after a non-responding link is shutdown
-  RN number of retries, in case of timeout or non-fatal errors (*R1)
-  JN traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link
-  HN host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow
-
-
-

This example allows up to 128 simultaneous downloads. -Note that this is likely to crash remote web servers - or at least fail -to download many of the files - because of limits on the number of -simultaneous sessions at many sites. At busy times of day, you might -want to lower this to 1 or 2, especially at sites that limit the number -of simultaneous users. Otherwise you will not get all of the downloads. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -c128
-
- -

Many operating systems have a limit of 64 file -handles, including internet connections and all other files that can be -opened. Therefore, in many cases, more that 48 connections might cause -a "socket error" because the OS can not handle that many sockets. This -is also true for many servers. As an example, a test with 48 sockets on -a cgi-based web server (Pentium 166,80Meg RAM) overloaded the machine -and stopped other services from running correctly. Some servers will -ban users that try to brutally download the website. 8 sockets is -generally good, but when I'm getting large files (e.g., from a a site -with large graphical images) 1 or 2 sockets is a better selection. Here -are some other figures from one sample set of runs: - -

    -Tests: on a 10/100Mbps network, 30MB website, 99 files (70 images (some are
    -little, other are big (few MB)), 23 HTML)
    -With 8 sockets: 1,24MB/s
    -With 48 sockets: 1,30MB/s
    -With 128 sockets: 0,93MB/s
    -
- -

The timeout option causes downloads to time out after -a non-response from a download attempt. 30 seconds is pretty reasonable -for many sites. You might want to increase the number of retries as -well so that you try again and again after such timeouts. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -%c20
-
- -

This limits the number of connections per second. It -is similar to the above option but allows the pace to be controlled -rather than the simultanaety. It is particulsrly useful for long-term -pulls at low rates that allow little impact on remote infrastructure. -The default is 10 connections per second. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -T30
-
- -

This example increases the number of retries to 5. -This means that if a download fails 5 times, httrack will give up on it. -For relatively unreliable sites - or for busy times of day, this number -should be higher. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -R5
-
- -

This is an interesting option. It says that in a -traffic jam - where downloads are excessively slow - we might decide to -back off the download. In this case, we have limited downloads to stop -bothering once we reach 10 bytes per second. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -J10
-
- -

These three options will cause the download from a -host to be abandoned if (respectively) (0) never, (1) a timeout is -reached, (2) slow traffic is detected, (or) (3) a timeout is reached OR -slow traffic is detected. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -H0
-httrack http://www.shoesizes.com -O /tmp/shoesizes -H1
-httrack http://www.shoesizes.com -O /tmp/shoesizes -H2
-httrack http://www.shoesizes.com -O /tmp/shoesizes -H3
-
- -

Of course these options can be combined to provide a -powerful set of criteria for when to continue a download and when to -give it up, how hard to push other sites. and how much to stress -infrastructures. - -


-

Link Following Options

- -

-Links options:
- %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use)
-  n   get non-html files 'near' an html file (ex: an image located outside)
-  t   test all URLs (even forbidden ones)
- %L  add all URL located in this text file (one URL per line)
-
- -

The links options allow you to control what links are -followed and what links are not as well as to provide long lists of -links to investigate. Any setting other than the default for this -option forces the engine to use less reliable and more complex parsing. -'Dirty' parsing means that links like 'xsgfd syaze="foo.gif"' will cause -HTTrack to download foo.gif, even if HTTrack don't know what the "xsgfd -syaze=" tag actually means! This option is powerful because some links -might otherwise be missed, but it can cause errors in HTML or javascript. - -

This will direct the program to NOT search Javascript -for unknown tag fields (e.g., it will find things like -foo.location="bar.html"; but will not find things like bar="foo.gif";). -While I have never had a reason to use this, some users may decide that -they want to be more conservative in their searches. As a note, -javascript imported files (.js) are not currently searched for URLs. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes '%P0'
-
- -

Now here is a classic bit of cleaverness that 'does -the right thing' for some cases. In this instance, we are asking -httrack to get images - like gif and jpeg files that are used by a web -page in its display, even though we would not normally get them. For -example, if we were only getting a portion of a web site (e.g., -everything under the 'bob directory') we might want to get graphics from -the rest of the web sote - or the rest of the web - that are used in -those pages as well so that our mirror will look right. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -n
-
- -

Here, we limit the collection to bob's area of the -server - except that we get images and other such things that are used -by bob in his area of the server. - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -n
-
- -

This option 'tests' all links - even those forbidden -(by the robot exclusion protocol) - by using the 'HEAD' protocol to test -for the presence of a file. - -


-httrack http://www.shoesizes.com/ -O /tmp/shoesizes -t
-
- -

In this case, we use a file to list the URLs we wish -to mirror. This is particularly useful when we have a lot to do and -don't want to tirelessly type in URLs on command line after command line. -It's also useful - for example - if you update a set of mirrored sites -evey evening. You can set up a command like this to run automatically -from your cron file. - -


-httrack %L linkfile -O /tmp/shoesizes
-
- -

This will update the mirror of your list of sites -whenever it is run. - -


-httrack %L linkfile -O /tmp/shoesizes -B --update
-
- -

The link file is also useful for things like this -example where, after a binary image of a hard disk was analyzed (image) -URLs found on that disk were collected by httrack: - -


-strings image | grep "http://" > list;
-httrack %L list -O /tmp/shoesizes
-
- - -
-

Mirror Build Options

- -

-Build options:
-  NN  name conversion type (0 *original structure, 1+: see below)
-  N   user defined structure (-N "%h%p/%n%q.%t")
-  LN  long names (L1 *long names / L0 8-3 conversion)
-  K   keep original links (e.g. http://www.adr/link) (K0 *relative link)
-  x   replace external html links by error pages
-  o *generate output html file in case of error (404..) (o0 don't generate)
-  X *purge old files after update (X0 keep delete)
-  %x  do not include any password for external password protected websites (%x0 include) (--no-passwords)
-  %q *include query string for local files (information only) (%q0 don't include) (--include-query-string)
-
- -

The user can define naming conventions for building -the mirror of a site by using these options. For example, to retain the -original structure, the default is used. This only modifies the -structure to the extent that select characters (e.g., ~, :, <, >, \, and -@) are replaced by _ in all pathnames. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -N0
-
-

OR -


-httrack http://www.shoesizes.com -O /tmp/shoesizes
-
- -

In either case, the mirror will build with the same -directory hierarchy and name structure as the original site. For cases -when you want to define your own structure, you use a string like this: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -N "%h%p/%n.%t"
-
- -

In this case, %h, %p, $n, and %t stand for the href -element (e.g., http://www.shoesizes.com or ftp://ftp.shoesizes.com), %p -stands for the pathname (e.g., /bob/), %n stands for the name of the -file, and %t stands for type (file extension). The full list of these -options follows: - -

    -%n      Name of file without file type (ex: image)
    -%N      Name of file, including file type (ex: image.gif)
    -%t      File type (ex: gif)
    -%p      Path [without ending /] (ex: /someimages)
    -%h      Host name (ex: www.all.net)
    -%M      URL MD5 (128 bits, 32 ascii bytes)
    -%Q      query string MD5 (128 bits, 32 ascii bytes)
    -%q      small query string MD5 (16 bits, 4 ascii bytes)
    -%s?     Short name version (ex: %sN)
    -
- -

Other 'N' options include: - -

    -
    
    -Details: Option N
    -  N0 Site-structure (default)
    -  N1 HTML in web/, images/other files in web/images/
    -  N2 HTML in web/HTML, images/other in web/images
    -  N3 HTML in web/,  images/other in web/
    -  N4 HTML in web/, images/other in web/xxx, where xxx is the file extension (all gif will be placed onto web/gif, for example)
    -  N5 Images/other in web/xxx and HTML in web/HTML
    -  N99 All files in web/, with random names (gadget !)
    -  N100 Site-structure, without www.domain.xxx/
    -  N101 Identical to N1 exept that "web" is replaced by the site's name
    -  N102 Identical to N2 exept that "web" is replaced by the site's name
    -  N103 Identical to N3 exept that "web" is replaced by the site's name
    -  N104 Identical to N4 exept that "web" is replaced by the site's name
    -  N105 Identical to N5 exept that "web" is replaced by the site's name
    -  N199 Identical to N99 exept that "web" is replaced by the site's name
    -  N1001 Identical to N1 exept that there is no "web" directory
    -  N1002 Identical to N2 exept that there is no "web" directory
    -  N1003 Identical to N3 exept that there is no "web" directory (option set for g option)
    -  N1004 Identical to N4 exept that there is no "web" directory
    -  N1005 Identical to N5 exept that there is no "web" directory
    -  N1099 Identical to N99 exept that there is no "web" directory
    -
    -
- -

Long names are normally used (the -L0 -option) but if you are imaging to a DOS file system or want -accessibility from older versions of DOS and Windows, you can use the --L1 option to generate these filename sizes. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -L1
-
- -

With the 'K' option, you can keep the original links -in files. While this is less useful in being able to view a web site -froim the mirrored copy, it is vitally important if you want an accurate -copy of exactly what was on the web site in the first place. In a -forensic image, for example, you might want to use this option to -prevent the program from modifying the data as it is collected. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -K
-
- -

In this case, instead of leaving external links (URLs -that point to sites not being mirrored) in the pages, these links are -replaced by pages that leave messages indicating that they could not be -found. This is useful for local mirrors not on the Internet or mirrors -that are on the Internet but that are not supposed to lead users to -external sites. A really good use for this is that 'bugging' devices -placed in web pages to track who is using them and from where will be -deactivated byt his process. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -x
-
- -

This option prevents the generation of '404' error -files to replace files that were not found even though there were URLs -pointing to them. It is useful for saving space as well as eliminating -unnecessary files in operations where a working web site is not the -desired result. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -o0
-
- -

This option prevents the authoatic purging of files -from the mirror site that were not found in the original web site after -an 'update' is done. If you want to retain old data and old names for -files that were renamed, this option should be used. If you want an -up-to-date reflection of the current web site, you should not use this option. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -X0
-
- -

These options can be combined as desired to produce a -wide range of different arrangements, from collections of only graphical -files stored in a graphics area, to files identified by their MD5 -checksums only, all stored in the same directory. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes %x0 include
-
- -

This will not include passwords for web sites. If you -mirror http://smith_john:foobar@www.privatefoo.com/smith/, and exclude -using filters some links, these links will be by default rewritten with -password data. For example, "bar.html" will be renamed into -http://smith_john:foobar@www.privatefoo.com/smith/bar.html This can be a -problem if you don't want to disclose the username/password! The %x -option tell the engine not to include username/password data in -rewritten URLs. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes %q
-
- -

This option is not very useful, because parameters are -useless, as pages are not dynamic anymore when mirrored. But some -javascript code may use the query string, and it can give useful -information. For example: catalog4FB8.html?page=computer-science is -clearer than catalog4FB8.html Therefore, this option is activated by -default. - -


-

Spider Options

- -

These options provide for automation with regard to -the remote server. For example, some sites require that cookies be -accepted and sent back in order to allow access. - -


-Spider options:
- bN  accept cookies in cookies.txt (0=do not accept,* 1=accept)
- u   check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
- j   *parse Java Classes (j0 don't parse)
- sN  follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
- %h  force HTTP/1.0 requests (reduce update features, only for old servers or proxies)
- %B  tolerant requests (accept bogus responses on some servers, but not standard!)
- %s  update hacks: various hacks to limit re-transfers when updating
- %A  assume that a type (cgi,asp..) is always linked with a mime type (-%A php3=text/html) (--assume )
-
- -

By default, cookies are universally accepted and -returned. This makes for more effective collection of data, but allows -the site to be identified with its collection of data more easily. To -disable cookies, use this option: - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -b0
-
- -

Some documents have known extension types (e.g., -html), while others have unknown types (e.g., iuh87Zs) and others may -have misleading types (e.g., an html file with a 'gif' file extension. -These options provide for (0) not checking file types, (1) checking all -file types except directories, and (2) checking all file types including -directories. Choose from these options: - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -u0
-httrack http://www.shoesizes.com -O /tmp/shoesizes -u1
-httrack http://www.shoesizes.com -O /tmp/shoesizes -u2
-
- -

Meta tags or 'robots.txt' files on a web site are used -to indicate what files should and should not be visited by automatic -programs when collectiong data. The polite and prudent move for normal -data collection (and the default) is to follow this indication: - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -s2
-
- -

This follows the robots protocol and meta-tags EXCEPT -in cases where the filters disagree with the robots protocols or -meta-tags. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -s1
-
- -

In this next case, we ignore meta-tags and robots.txt -files completely and just take whatever we can get from the site. The -danger of this includes the fact that automated programs - like games or -search engines may generate an unlimited number of nearly identical or -identical outputs that will put us in an infinite loop collecting -useless data under different names. The benefit is that we will get all -the data there is to get. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -s0
-
- -

This next option uses strict HTTP/1.0 protocol. This -means the program will use HTTP/1.0 headers (as in RFC1945.TXT) and NOT -extended 1.1 features described in RFC2616.TXT. For example, reget -(complete a partially downloaded file) is a HTTP/1.1 feature. The Etag -feature is also a HTTP/1.1 feature (Etag is a special identifier that -allow to easily detect file changes). - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -%h
-
- -

Some servers give responses not strictly within the -requirements of the official http protocol. These 'Bogus' responses can -be accepted by using this option. For example, when requesting foo.gif -(5132 bytes), the server can, optionally, add: -

-Content-length: 5132
-
- -

This helps the client by allowing it to reserve a -block of memory, instead of collecting each byte and re-reserving memory -each time data is being received. But some servers are bogus, and send -a wrong filesize. When HTtrack detects the end of file (connection -broken), there are three cases: - -

    - -

    1- The connection has been closed by the server, and we -have received all data (we have received the number of bytes incicated -by the server). This is fine because we have successfully received the -file. - -

    2- The connection has been closed by the server, BUT -the filesize received is different from the server's headers: the -connection has been suddenly closed, due to network problems, so we -reget the file - -

    3- The connetion has been closed by the server, the -filesize received is different from the server's headers, BUT the file -is complete, because the server gave us a WRONG information! In this -case, we use the bogus server option: -

- -

-httrack http://www.shoesizes.com -O /tmp/shoesizes -%B
-
- -

These options can be combined for the particular needs -of the situaiton and are often adapted as a result of site-specific -experiences. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -%s
-
- -

This is a collection of "tricks" which are not really -"RFC compliant" but which can save bandwidth by trying not to retransfer -data in several cases. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -%A asp=text/html
-
- -

The most important new feature for some people, maybe. -This option tells the engine that if a link is en countered, with a -specific type (.cgi, .asp, or .php3 for example), it MUST assume that -this link has always the same MIME type, for example the "text/html" -MIME type. This is VERY important to speed up many mirrors. - -

We have done tests on big HTML files (approx. 150 MB, -150,000,000 bytes!) with 100,000 links inside. Such files are being -parsed in approx. 20 seconds on my own PC by the latest optimized -releases of HTTra ck. But these tests have been done with links of -known types, that is, html, gif, and so on.. If you have, say, 10,000 -links of unknown type, such as ".asp", this will cause the engine to -test ALL t hese files, and this will SLOOOOW down the parser. In this -example, the parser will take hours, instead of 20 seconds! In this -case, it would be great to tell HTTrack: ".asp pages are in fact HTML -pages" This is possible, using: -%A asp=text/html - -

The -%A option can be replaced by the alias --assume -asp=text/html which is MUCH more clear. You can use multiple -definitions, separed by ",", or use multiple options. Therefore, these -two lines are identical: - -

---assume asp=text/html --assume php3=text/html --assume cgi=image/gif
---assume asp=text/html,php3=text/html,cgi=image/gif
-
- -

The MIME type is the standard well known "MIME" type. -Here are the most important ones: -

-text/html       Html files, parsed by HTTrack
-image/gif       GIF files
-image/jpeg      Jpeg files
-image/png       PNG files
-
- -

There is also a collection of "non standard" MIME types. Example: - -

-application/x-foo       Files with "foo" type
-
- -

Therefore, you can give to all files terminated by -".mp3" the MIME type: application/x-mp3 - -

This allow you to rename files on a mirror. If you -KNOW that all "dat" files are in fact "zip" files ren amed into "dat", -you can tell httrack: - -

---assume dat=application/x-zip
-
- -

You can also "name" a file type, with its original -MIME type, if this type is not known by HTTrack. This will avoid a test -when the link will be reached: - -

---assume foo=application/foobar
-
- -

In this case, HTTrack won't check the type, because it -has learned that "foo" is a known type, or MIME type -"application/foobar". Therefore, it will let untouched the "foo" type. - -

A last remark, you can use complex definitions like: - -

---assume asp=text/html,php3=text/html,cgi=image/gif,dat=application/x-zip,mpg=application/x-mp3,application/foobar
-
- -

..and save it on your .httrackrc file: - -

-set assume asp=text/html,php3=text/html,cgi=image/gif,dat=application/x-zip,mpg=application/x-mp3,application/foobar
-
- -
-

Browser Options

- -

Browsers commonly leave footprints in web servers - as -web servers leave footprints in the browser. - -


-Browser ID:
-  F  user-agent field (-F "user-agent name")
- %F  footer string in Html code (-%F "Mirrored [from host %s [file %s [at %s]]]"
- %l  preffered language (-%l "fr, en, jp, *" (--language )
-
- -

The user-agent field is used by browsers to determine -what kind of browser you are using as well as other information - such -as your system type and operating system version. The 'User Agent' -field can be set to indicate whatever is desired to the server. In this -case, we are claiming to be a netscape browser (version 1.0) running a -non-exitent Solaris operating system version on a Sun Sparcstation. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -F "Mozilla 1.0, Sparc, Solaris 23.54.34"
-
- -

On the other side, we may wish to mark each page -collected with footer information so that we can see from the page where -it was collected from, when, and under what name it was stored. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -%F "Mirrored [from host %s [file %s [at %s]]]"
-
- -

This makes a modified copy of the file that may be -useful in future identification. While it is not 'pure' in some senses, -it may (or may not) be considered siilar to a camera that adds time and -date stamps from a legal perspective. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -%l "fr, en, jp, *"
-
- -

"I prefer to have pages with french language, then -english, then japanese, then any other language" - -


-

Log, Cache, and Index Options

- -

A lot of options are available for log files, indexing -of sites, and cached results: - -


-Log, index, cache
-  C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
-  k  store all files in cache (not useful if files on disk)
- %n  do not re-download locally erased files
-  Q  log quiet mode (no log)
-  q  quiet mode (no questions)
-  z  extra infos log
-  Z  debug log
-  v  verbose screen mode
-  %v display on screen filenames downloaded (in realtime) (--display)
-  f  log file mode
-  f2 one single log file (--single-log)
-  I  *make an index (I0 don't make)
-  %I make an searchable index for this mirror (* %I0 don't make) (--search-index)
-
-
- -

A cache memory area is used for updates and retries to -make the process far more efficient than it would otherwise be. You can -choose to (0) go without a cache, (1) do not check remotly if the file -has been updated or not, just load the cache content, or (2) see what -works best and use it (the default). Here is the no cache example. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -C0
-
- -

The cache can be used to store all files - if desired -- but if files are being stored on disk anyway (the normal process for a -mirroring operation), this is not helpful. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -k
-
- -

In some cases, a file from a mirror site is erased -locally. For example, if a file contains inappropriate content, it may -be erased from the mirror site but remain on the remote site. This -option allows you to leave deleted files permanently deleted when you -do a site update. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -update '%n'
-
- -

If no log is desired, the following option should be -added. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -Q
-
- -

If no questions should be asked of the user (in a mode -that would otherwise ask questions), the following option should be -added. - -


-
-httrack http://www.shoesizes.com -O /tmp/shoesizes -q - -

By adding these options, you get (-z) extra log -information or (-Z) debugging information, and (-v) verbose screen -output. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -z -Z -v
-
- -

Multiple log files can be created, but by default, -this option is used to put all logs into a single log file. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -f2
-
- -

Finally, an index is normally made of the sites -mirrored (a pointer to the first page found from each specified URL) in -an index.html file in the project directory. This can be prevented -through the use of this option: - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -I0
-
- - -

-httrack http://www.shoesizes.com -O /tmp/shoesizes %v
-
- -

Animated information when using consol-based version, -example: -

-17/95: localhost/manual/handler.html (6387 bytes) - OK
-
- -

-httrack http://www.shoesizes.com -O /tmp/shoesizes f2
-
- -

Do not split error and information log (hts-log.txt -and hts-err.txt) - use only one file (hts-log.txt) - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -%I linux.localdomain
-
- -

Still in testing, this option asks the engine to -generate an index.txt, useable by third-party programs or scripts, to -index all words contained in html files. The above example will produce -index.txt: - -

-..
-abridged
-        1 linux/manual/misc/API.html
-        =1
-        (0)
-absence
-        3 linux/manual/mod/core.html
-        2 linux/manual/mod/mod_imap.html
-        1 linux/manual/misc/nopgp.html
-        1 linux/manual/mod/mod_proxy.html
-        1 linux/manual/new_features_1_3.html
-        =8
-        (0)
-absolute
-        3 linux/manual/mod/mod_auth_digest.html
-        1 linux/manual/mod/mod_so.html
-        =4
-        (0)
-..
-
- -
-

Expert User Options

- -

For expert users, the following options provide further -options. - -


-Expert options:
-  pN priority mode: (* p3)
-      0 just scan, don't save anything (for checking links)
-      1 save only html files
-      2 save only non html files
-     *3 save all files
-      7 get html files before, then treat other files
-  S   stay on the same directory
-  D  *can only go down into subdirs
-  U   can only go to upper directories
-  B   can both go up&down into the directory structure
-  a  *stay on the same address
-  d   stay on the same principal domain
-  l   stay on the same location (.com, etc.)
-  e   go everywhere on the web
- %H  debug HTTP headers in logfile
-
- -

One interesting application allows the mirror utility -to check for valid and invalid links on a site. This is commonly used -in site tests to look for missing pages or other html errors. I often -run such programs against my web sites to verify that nothing is missing. - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -p0
-
- -

To check for valid links outside of a site, the '-t' -option can be used: - -


-httrack http://www.shoesizes.com -O /tmp/shoesizes -t
-
- -

These options can be combined, for example, to provide -a service that checks sites for validity of links and reports back a -list of missing files and statistics. - -

Other options allow the retention of select files - -for example - (1) only html files, (2) only non-html files, (3) all -files, and (7) get all html files first, then get other files. This -last option provides a fast way to get the web pointers so that, for -example, a time limited collection process will tend to get the most -important content first. - -

In many cases, we only want the files froma given -directory. In this case, we specify this option: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -S
-
- -

This option allows the mirror to go only into -subdirectories of the initial directory on the remote host. You might -want to combine it with the -n option to get all -non-html files linked from the pages you find. - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -D -n
-
- -

If you only want to work your way up the directory -structure from the specified URL (don't ask me why you might want to do -this), the following command line is for you: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -U
-
- -

If you want to go both up and down the directory -structure (i.e., anywhere on on this site that the requested page leads -you to), this option will be best: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -B
-
- -

The default is to remain on the same IP address - or -host name. This option specifes this explicitly: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -a
-
- -

If you want to restrict yourself only to the same -principal domain (e.g., include sites liks ftp.shoesizes.com), you would -use this option. - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -d
-
- -

To restrict yourself to the same major portion of the -Internet (e.g., .com, .net, .edu, etc.) try this option: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -l
-
- -

Finally, if you want to mirror the whole Internet - at -least every place on the internet that is ever led to - either directly -or indirectly - from the starting point, use this one... Please note -that this will almost always run you out of resources unless you use -other options - like limiting the depth of search. - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -e
-
- -

Last but not least, you can include debugging -informaiton on all headers from a collection process by using this -option: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -'%H'
-
- -

The options S, D, U, B, a, d, l, and e can be replaces -with filter options approximately as follows: - -


-S     -www.foo.com/* +www.foo.com/bar/*[file]
-D     (default)
-U     +www.foo.com/bar/* -www.foo.com/*[name]/*
-B     +www.foo.com/bar/*
-a     (default)
-d     +*[name].foo.com/*
-l     +*[name].com/*
-e     +* (this is crazy unless a depth limit is used!)
-
- -
-

Guru Options - DO NOT USE!!!

- -

This is a new section, for all "not very well -documented options". You can use them, in fact, do not believe what is -written above! - -

- #0  Filter test (-#0 '*.gif' 'www.bar.com/foo.gif')
-
- -

To test the filter system. Example: - -

-$ httrack -#0 'www.*.com/*foo*bar.gif' 'www.mysite.com/test/foo4bar.gif'
-www.mysite.com/test/foo4bar.gif does match www.*.com/*foo*bar.gif
-
- -
- #f  Always flush log files
-
- -

Useful if you want the hts-log.txt file to be flushed -regularly (not buffered) - -

- #FN Maximum number of filters
-
- -

Use if if you want to use more than the maximum -default number of filters, that is, 500 filters: -#F2000 for 2,000 filters - -

- #h  Version info
-
- -

Informations on the version number - -

- #K  Scan stdin (debug)
-
- -

Not useful (debug only) - -

- #L  Maximum number of links (-#L1000000)
-
- -

Use if if you want to use more than the maximum -default number of links, that is, 100,000 links: -#L2000000 for 2,000,000 links - -

- #p  Display ugly progress information
-
- -

Self-explanatory :) I will have to improve this one - -

- #P  Catch URL
-
- -

"Catch URL" feature, allows to setup a temporary proxy -to capture complex URLs, often linked with POST action (when using form -based authentication) - -

- #R  Old FTP routines (debug)
-
- -

Debug.. - -

- #T  Generate transfer ops. log every minutes
-
- -

Generate a log file with transfer statistics - -

- #u  Wait time
-
- -

"On hold" option, in seconds - -

- #Z  Generate transfer rate statictics every minutes
-
- -

Generate a log file with transfer statistics - -

- #!  Execute a shell command (-#! "echo hello")
-
- -

Debug.. - -


-

Command-line Specific Options

- -

-Command-line specific options:
-  V execute system command after each files ($0 is the filename: -V "rm \$0") (--userdef-cmd )
-
- -

This option is very nice for a wide array of actions -that might be based on file details. For example, a simple log of all -files collected could be generated by using: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -V "/bin/echo \$0"
-
- -
- %U run the engine with another id when called as root (-%U smith) (--user )
-
- -

Change the UID of the owner when running as r00t - -

-  Details: User-defined option N
-    %[param] param variable in query string
-
- -

-This new option is important: you can include query-string content when forming the destination filename! - -

-Example: you are mirroring a huge website, with many pages named as:
-www.foo.com/catalog.php3?page=engineering
-www.foo.com/catalog.php3?page=biology
-www.foo.com/catalog.php3?page=computing
-..
-
- -

Then you can use the -N option: - -

-httrack www.foo.com -N "%h%p/%n%[page].%t"
-
- -

If found, the "page" parameter will be included after -the filename, and the URLs above will be saved as: - -

-/home/mywebsites/foo/www.foo.com/catalogengineering.php3
-/home/mywebsites/foo/www.foo.com/catalogbiology.php3
-/home/mywebsites/foo/www.foo.com/catalogcomputing.php3
-...
-
- -
-

Shortcuts

- -

These options provide shortcust to combinations -of other options that are commonly used. - -


-Shortcuts:
---mirror       *make a mirror of site(s) (default)
---get           get the files indicated, do not seek other URLs (-qg)
---list     add all URL located in this text file (-%L)
---mirrorlinks   mirror all links in 1st level pages (-Y)
---testlinks     test links in pages (-r1p0C0I0t)
---spider        spider site(s), to test links: reports Errors & Warnings (-p0C0I0t)
---testsite      identical to --spider
---skeleton      make a mirror, but gets only html files (-p1)
---update              update a mirror, without confirmation (-iC2)
---continue            continue a mirror, without confirmation (-iC1)
---catchurl            create a temporary proxy to capture an URL or a form post URL
---clean               erase cache & log files
---http10              force http/1.0 requests (-%h)
-
- -

Mirror is the default behavior. It is detailed -earlier. - -

get simply gets the files specified on the command -line. - -

The list option is useful for including a list of -sites to collect data from. - -

The mirrorlinks option is ideal for using the result -of a previous search (like a list of pages found in a web search or -somebody's URL collection) to guide the collection of data. With -additional options (such as depth 1) it can be used to collect all of -the pages linked to a given page without going further. Here is an example: - -


-httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes --mirrorlinks -e -r1
-
- -

Testing links in pages is useful for automating the -verification that a link from a file is not pointing to a non-existent -page. - -

The spider option does a site test automatically and -returns errors for broken links. - -

The skeleton option makes a mirror of html files only. - -

The update option updates a site to match a remote -mirror. - -

The continue option continues a previously terminated -mirroring activity. This is useful for all sorts of mirror failures. - -

The catchurl option is a small application designed to -catch difficult pages, like sites protected via formulas. You can see -at http://httrack.free.fr/HelpHtml/addurl.html a Windows description of -this application. The purpose is to create a temporary proxy, that will -catch the user request to a page, and then store this request to -continue the mirror. For example, - -

    -1. browse www.foo.com/bar/ until you have a page with a form
    -2. fill this form to enter the site BUT do not click "submit"
    -3. start the --catchurl application
    -4. change your browser proxy settings according to the --catchurl application
    -5. click on "submit" on your browser
    -6. HTTrack has now captured this click and has stored it
    -7. restore your proxy settings
    -8. (click back in your browser)
    -
- -

The clean option erases cache and log files. - -

The http10 option forces http/1.0 requests (the same -as -%h). - -


- -

Filters

- -

Filters are normally placed at the end of the command -line, but can be intermixed with other command line options if desired, -except that if they are placed between (for example) the '-O' and the -pathname, your results may be different than you might otherwise -predict. There are two sorts of filters, filters that indicate what to -include (+) and filters that indicate what to exclude (-). - -

Starting with the initially specified URLs, the -default operation mode is to mirror starting from these URLs downward -into the directory structure of the host (i.e. if one of your starting -pagees was www.all.net/test/a.html, all links starting with www.all.net/test/ -will be collected but links in www.all.net/anything-else will not be -collected, because they are in a higher directory strcuture level. This -prevents HTTrack from mirroring the whole site. If you may want to -download files are in other parts of the site or pf particular types - -or to not download files in a particular part of the site or of a -particular type, you can use filters to specify more precisely what to -collect and what not to collect. - -

The syntax for filters is similar to Unix regular -expressions. A simple filter can be made by using characters from the -URL with '*' as a wildcard for 0 or more characters - with the last -filter rule having the highest precendence. An initial '+' indicates -URLs to include and an initial '-' indicated URLs to not include. For -example: - -


-'-*' '+*jpg'
-
- -

would only get files ending in the 'jpg' extension, -while: - -


-'-*jpg'
-
- -

would not get any files ending in the jpg extension. -You can add more filter lines to restrict or expand the scope as -desired. The last rule is checked first, and so on - so that the rules -are in reverse priority order. Here's an example: - - - - -
- +*.gif -image*.gif - - Will accept all gif files BUT image1.gif,imageblue.gif,imagery.gif and so on -
- -image*.gif +*.gif - - Will accept all gif files, because the second pattern is prioritary (because it is defined AFTER the first one) -
- -

The full syntax for filters follows: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*any characters (the most commonly used)
*[file] or *[name]any filename or name, e.g. not /,? and ; characters
*[path]any path (and filename), e.g. not ? and ; characters
*[a,z,e,r,t,y]any letters among a,z,e,r,t,y
*[a-z]any letters
*[0-9,a,z,e,r,t,y]any characters among 0..9 and a,z,e,r,t,y
*[]no characters must be present after
*[< NN] size less than NN Kbytes
*[> PP] size more than PP Kbytes
*[< NN > PP] size less than NN Kbytes and more than PP Kbytes
- - -

Here are some examples of filters: (that can be -generated automatically using the interface) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-www.all.net* This will refuse/accept this web site (all links located in it will be rejected)
+*.com/*This will accept all links that contains .com in them
-*cgi-bin* This will refuse all links that contains cgi-bin in them
+*.com/*[path].zip This will accept all zip files in .com addresses
-*someweb*/*.tar*This will refuse all tar (or tar.gz etc.) files in hosts containing someweb
+*/*somepage*This will accept all links containing somepage (but not in the address)
-*.htmlThis will refuse all html files from anywhere in the world.
+*.html*[]Accept *.html, but the link must not have any supplemental characters - at the end (e.g., links with parameters, like www.all.net/index.html?page=10 - will not match this filter)
-*.gif*[> 5] -*.zip +*.zip*[< 10] refuse all gif files smaller than 5KB, exlude all zip files, EXCEPT zip files smaller than 10KB
- -


- -

User Authentication Protocols

- -

Smoe servers require user ID and password information -in order to gain access. In this example, the user ID smith with -password foobar is accessing www.all.net/private/index.html - -


-httrack smith:foobar@www.all.net/private/index.html
-
- -

For more advanced forms of authentication, such as -those involving forms and cookies of various sorts, an emerging -capability is being provided through th URL capture features -(--catchurl). This feature don't work all of the time. - -


- -

.httrackrc

- -

A file called '.httrackrc' can be placed in the -current directory, or if not found there, in the home directory, to -include command line options. These options are included whenever -httrack is run. A sample .httrack follows: - -

    
    - set sockets 8
    - set retries 4
    - index on
    - set useragent "Mozilla [en] (foo)"
    - set proxy proxy:8080
    -
- -

But the syntax is not strict, you can use any of -these: - -

    
    - set sockets 8
    - set sockets=8
    - sockets=8
    - sockets 8
    -
- - -

.httrackrc is sought in the following sequence with -the first occurence used: - -

    -
  • in the dirctory indicated by -O option (.httrackrc) -
  • in the current directory (.httrackrc) -
  • in the user's home directory (.httrackrc) -
  • in /etc/httrack.conf (named httrack.conf to be "standard") -
- -

An example .httrackrc looks like: - -

    
    -set sockets=8
    -set index on
    -retries=2
    -allow *.gif
    -deny ad.doubleclick.net/*
    -
- -

Each line is composed of an option name and a -parameter. The "set" token can be used, but is not mandatory (it is -ignored, in fact). The "=" is also optionnal, and is replaced by a -space internally. The "on" and "off" are the same as "1" and "0" -respectively. Therefore, the example .httrackrc above is equivalent to: - -

    
    -sockets=8
    -index=1
    -retries=2
    -allow=*.gif
    -deny=ad.doubleclick.net/*
    -
- -

Because the "=" seems to (wrongly) imply a variable -assignment (the option can be defined more than once to define more than -one filter) the following .httrackrc: - -

    
    -allow *.gif
    -allow *.jpg
    -
- -

looks better for a human than: - -

    
    -allow=*.gif
    -allow=*.jpg
    -
- -

Here's a example run with the example .httrackrc file: - -

    
    -$ httrack ghost
    -$ cat hts-cache/doit.log
    --c8 -C1 -R2 +*.gif -ad.doubleclick.net/* ghost
    -
- -

The "-c8 -C1 -R2 +*.gif -ad.doubleclick.net/*" was -added by the .httrackrc - -


- -

Release Notes

- -

Some things change between releases. Here are some -recent changes in httrack that may affect some of these options: - -

Options S,D,U,B, and a,d,l,e are default behaviours of -HTTrack. they were the only options in old versions (1.0). With the -introduction of filters, their roles are now limited, because filters -can override them. - -

Note for the -N option: "%h%p/%n%q.%t" will be now be -used if possible. In normal cases, when a file does not have any -parameters (www.foo.com/bar.gif) the %q option does not add anything, so -there are no differences in file names. But when parameters are present -(for example, www.foo.com/bar.cgi?FileCollection=133.gif), the -additionnal query string (in this case, FileCollection=133.gif) will be -"hashed" and added to the filename. For example: - -

'www.all.net/bar.cgi?FileCollection=133.gif'
-

will be named -

'/tmp/mysite/bar4F2E.gif'
- -

The additionnal 4 letters/digits are VERY useful in -cases where there are a substantial number of identical files: - -


-www.all.net/bar.cgi?FileCollection=133.gif
-www.all.net/bar.cgi?FileCollection=rose.gif
-www.all.net/bar.cgi?FileCollection=plant4.gif
-www.all.net/bar.cgi?FileCollection=silver.gif
-and so on...
-
- -

In these cases, there is a small probability of a hash -collision forlarge numbers of files. - -


- -

Some More Examples

- -

Here are some examples of special purpose httrack -command lines that might be useful for your situation. - -

This is a 'forensic' dump of a web site - intended to -collect all URLs reachable from the initial point and at that particular -site. It is intended to make no changes whatsoever to the image. It -also prints out an MD5 checksum of each file imaged so that the image -can be verified later to detect and changes after imaging. It uses 5 -retries to be more certain than normal of getting the files, never -abandons its efforts, keeps original links, does not generate error -files, ignores site restrictions for robots, logs as much as it can, -stays in the principal domain, places debugging headers in the log file, - -


-httrack "www.website.com/" -O "/tmp/www.website.com" -R5H0Ko0s0zZd %H -V "md5 \$0" "+*.website.com/*" 
-
- -

Here's an example of a site where I pulled a set of -data related to some subject. In this case, I only wanted the -relevant subdirectory, all external links were to remain the same, a -verbose listing of URLs was to be printed, and I wanted files near (n) -and below (D) the original directory. Five retries just makes sure I -don't miss anything. - -


-httrack "http://www.somesite.com/~library/thing/thingmain.htm" -O /tmp/thing -R5s0zZvDn
-
- -

This listing is, of course, rather verbose. To reduce the noise, -you might want to do something more like this: - -


-httrack "http://www.somesite.com/~library/thing/thingmain.htm" -O /tmp/thing -R5s0zvDn
-
- -

A still quieter version - without any debugging -information but with a list of files loaded looks like this: - -


-httrack "http://www.somesite.com/~library/thing/thingmain.htm" -O /tmp/thing -R5s0vDn
-
- -

For the strong silent type, this might be still better: - -


-httrack "http://www.somesite.com/~library/thing/thingmain.htm" -O /tmp/thing -R5s0qDn
-
- -
- -

General questions:

- -

Q: The install is not working on NT without administrator rights! - -

A: That's right. You can, however, install WinHTTrack -on your own machine, and then copy your WinHTTrack folder from -your Program Files folder to another machine, in a temporary -directory (e.g. C:\temp\) - -

Q: Where can I find French/other languages documentation? - -

A: Windows interface is available on several -languages, but not yet the documentation! - -

Q: Is HTTrack working on NT/2000? - -

A: Yes, it should - -

Q: What's the difference between HTTrack and WinHTTrack? - -

A: WinHTTrack is the Windows release of HTTrack (with -a graphic shell) - -

Q: Is HTTrack Mac compatible? - -

A: No, because of a lack of time. But sources are -available - -

Q: Can HTTrack be compiled on all Un*x? - -

A: It should. The Makefile may be modified in -some cases, however - -

Q: I use HTTrack for professional purpose. What -about restrictions/license fee? - -

A: There is no restrictions using HTTrack for -professional purpose, except if you want to sell a product including -HTTrack components (parts of the source, or any other component). See -the license.txt file for more informations - -

Q: Is a DLL/library version available? - -

A: Not yet. But, again, sources are available (see -license.txt for distribution infos) - -

Q: Is there a X11/KDE shell available for Linux and -Un*x? - -

A: No. Unfortunately, we do not have enough time for -that - if you want to help us, please write one! - -


Troubleshooting:

- -

Q: Only the first page is caught. What's wrong? -
A: First, check the hts-err.txt error log file - this can -give you precious informations. - -

The problem can be a website that redirects you to -another site (for example, www.all.net to public.www.all.net) : in -this case, use filters to accept this site - -

This can be, also, a problem in the HTTrack options -(link depth too low, for example) - -

Q: With WinHTTrack, sometimes the minimize in system -tray causes a crash! - -

A: This bug sometimes appears in the shell on some -systems. If you encounter this problem, avoid minimizing the window! - -

Q: URLs with https:// are not working!
-A: HTTrack does not support https (secure socket layer protocol), only -http protocol - -

Q: Files are created with strange names, like -'-1.html'! - -

A: Check the build options (you may have selected -user-defined structure with wrong parameters!) - -

Q: When capturing real audio links (.ra), I only get -a shortcut! - -

A: Yes. The audio/video realtime streaming capture is -not yet supported - -

Q: Using user:password@address is not working! - -

A: Again, first check the hts-err.txt error log -file - this can give you precious informations - -

The site may have a different authentication scheme -(form based authentication, for example) - -

Q: When I use HTTrack, nothing is mirrored (no -files) What's happening? - -

A: First, be sure that the URL typed is correct. -Then, check if you need to use a proxy server (see proxy options in -WinHTTrack or the -P proxy:port option in the command line -program). The site you want to mirror may only accept certain browsers. -You can change your "browser identity" with the Browser ID -option in the OPTION box. Finally, you can have a look at the -hts-err.txt (and hts-log.txt) file to see what happened. - -

Q: There are missing files! What's happening? - -

A: You may want to capture files that are in a -different folder, or in another web site. In this case, HTTrack does not -capture them automatically, you have to ask it to do. For that, use the -filters. - -

Example: You are downloading -http://www.all.net/foo/ and can not get .jpg images located in -http://www.all.net/bar/ (for example, http://www.all.net/bar/blue.jpg) - -

Then, add the filter rule +www.all.net/bar/*.jpg to -accept all .jpg files from this location - -

You can, also, accept all files from the /bar folder -with +www.all.net/bar/*, or only html files with -+www.all.net/bar/*.html and so on.. - -

Q: I'm downloading too many files! What can I do? - - -

A: This is often the case when you use too large -filters, for example +*.html, which asks the engine to catch all -.html pages (even ones on other sites!). In this case, try to use more -specific filters, like +www.all.net/specificfolder/*.html - -

If you still have too many files, use filters to avoid -somes files. For example, if you have too many files from www.all.net/big/, -use -www.all.net/big/* to avoid all files from this folder. - -

Q: File types are sometimes changed! Why? - -

A: By default, HTTrack tries to know the type of -remote files. This is useful when links like -http://www.all.net/foo.cgi?id=1 can be either HTML pages, images or -anything else. Locally, foo.cgi will not be recognized as an html page, -or as an image, by your browser. HTTrack has to rename the file as -foo.html or foo.gif so that it can be viewed. - -

Sometimes, however, some data files are seen by the -remote server as html files, or images : in this case HTTrack is being -fooled.. and rename the file. You can avoid this by disabling the type -checking in the option panel. - -

Q: I can not access to several pages (access -forbidden, or redirect to another location), but I can with my browser, -what's going on? - -

A: You may need cookies! Cookies are specific datas -(for example, your username or password) that are sent to your browser -once you have logged in certain sites so that you only have to log-in -once. For example, after having entered your username in a website, you -can view pages and articles, and the next time you will go to this site, -you will not have to re-enter your username/password. - -

To "merge" your personnal cookies to an HTTrack -project, just copy the cookies.txt file from your Netscape folder (or -the cookies located into the Temporary Internet Files folder for IE) -into your project folder (or even the HTTrack folder) - -

Q: Some pages can't be seen, or are displayed -with errors! - -

A: Some pages may include javascript or java files -that are not recognized. For example, generated filenames. There may -be transfer problems, too (broken pipe, etc.). But most mirrors do -work. We still are working to improve the mirror quality of HTTrack. - -

Q: Some Java applets do not work properly! - -

A: Java applets may not work in some cases, for -example if HTTrack failed to detect all included classes or files called -within the class file. Sometimes, Java applets need to be online, -because remote files are directly caught. Finally, the site structure -can be incompatible with the class (always try to keep the original site -structure when you want to get Java classes) - -

If there is no way to make some classes work properly, -you can exclude them with the filters. They will be available, but only -online. - -

Q: HTTrack is being idle for a long time without -transfering. What's happening? - -

A: Maybe you try to reach some very slow sites. Try a -lower TimeOut value (see options, or -Txx option in the command -line program). Note that you will abandon the entire site (except if -the option is unchecked) if a timeout happen You can, with the Shell -version, skip some slow files, too. - -

Q: I want to update a site, but it's taking too much -time! What's happening? - -

A: First, HTTrack always tries to minimize the -download flow by interrogating the server about the file changes. But, -because HTTrack has to rescan all files from the begining to rebuild the -local site structure, it can takes some time. Besides, some servers are -not very smart and always consider that they get newer files, forcing -HTTrack to reload them, even if no changes have been made! - -

Q: I am behind a firewall. What can I do? - -

A: You need to use a proxy, too. Ask your -administrator to know the proxy server's name/port. Then, use the proxy -field in HTTrack or use the -P proxy:port option in the command -line program. - -

Q: HTTrack has crashed during a mirror, what's -happening? - -

A: We are trying to avoid bugs and problems so that -the program can be as reliable as possible. But we can not be -infallible. If you occurs a bug, please check if you have the latest -release of HTTrack, and send us an email with a detailed description of -your problem (OS type, addresses concerned, crash description, and -everything you deem to be necessary). This may help the other users -too. - -

Q: I want to update a mirrored project, but HTTrack -is retransfering all pages. What's going on? - -

A: First, HTTrack always rescan all local pages to -reconstitute the website structure, and it can take some time. Then, it -asks the server if the files that are stored locally are up-to-date. On -most sites, pages are not updated frequently, and the update process is -fast. But some sites have dynamically-generated pages that are -considered as "newer" than the local ones.. even if there are -identical! Unfortunately, there is no possibility to avoid this problem, -which is strongly linked with the server abilities. - -


Questions concerning a mirror:

- -

Q: I want to mirror a Web site, -but there are some files outside the domain, too. How to retrieve them? - - -

A: If you just want to retrieve files that can be -reached through links, just activate the 'get file near links' option. -But if you want to retrieve html pages too, you can both use wildcards -or explicit addresses ; e.g. add www.all.net/* to accept all -files and pages from www.all.net. - -

Q: I have forgotten some URLs of files during a long -mirror.. Should I redo all? - -

A: No, if you have kept the 'cache' files (in -hts-cache), cached files will not be retransfered. - -

Q: I just want to retrieve all ZIP files or other -files in a web site/in a page. How do I do it? - -

A: You can use different methods. You can use the -'get files near a link' option if files are in a foreign domain. You -can use, too, a filter adress: adding +*.zip in the URL list (or -in the filter list) will accept all ZIP files, even if these files are -outside the address. - -

Example : httrack www.all.net/someaddress.html -+*.zip will allow you to retrieve all zip files that are linked on -the site. - -

Q: There are ZIP files in a page, but I don't want -to transfer them. How do I do it? - -

A: Just filter them: add -*.zip in the filter -list. - -

Q: I don't want to load gif files.. but what may -happen if I watch the page? - -

A: If you have filtered gif files (-*.gif), -links to gif files will be rebuild so that your browser can find them on -the server. - -

Q: I get all types of files on a web site, but I -didn't select them on filters! - -

A: By default, HTTrack retrieves all types of files on -authorized links. To avoid that, define filters like - -

-* +<website>/*.html +<website>/*.htm -+<website>/ +*.<type wanted> - -

Example: httrack www.all.net/index.html -* -+www.all.net/*.htm* +www.all.net/*.gif +www.all.net/*.jpg - -

Q: When I use filters, I get too many files! - -

A: You are using too large a filter, for example -*.html will get ALL html files identified. If you want to get -all files on an address, use www.<address>/*.html. There -are lots of possibilities using filters. - -

Example:httrack www.all.net +*.www.all.net/*.htm* - -

Q: When I use filters, I can't access another -domain, but I have filtered it! - -

A: You may have done a mistake declaring filters, for -example +www.all.net/* -*all* will not work, because --*all* has an upper priority (because it has been declared after -+www.all.net) - -

Q: Must I add a  '+' or '-' in the filter list -when I want to use filters? - -

A: YES. '+' is for accepting links and '-' to avoid -them. If you forget it, HTTrack will consider that you want to accept a -filter if there is a wild card in the syntax - e.g. +<filter> if -identical to <filter> if <filter> contains a wild card (*) -(else it will be considered as a normal link to mirror) - -

Q: I want to find file(s) in a web-site. How do I do it? - - -

A: You can use the filters: forbid all files (add a --* in the filter list) and accept only html files and the file(s) -you want to retrieve (BUT do not forget to add -+<website>*.html in the filter list, or pages will not be -scanned! Add the name of files you want with a */ before ; i.e. -if you want to retrieve file.zip, add */file.zip) - -

Example:httrack www.all.net +www.all.net/*.htm* -+thefileiwant.zip - -

Q: I want to download ftp files/ftp site. How to -do? - -

A: First, HTTrack is not the best tool to download -many ftp files. Its ftp engine is basic (even if reget are possible) -and if your purpose is to download a complete site, use a specific -client. - -

You can download ftp files just by typing the URL, -such as ftp://ftp.www.all.net/pub/files/file010.zip and list ftp -directories like ftp://ftp.www.all.net/pub/files/ . - -

Note: For the filters, use something like -+ftp://ftp.www.all.net/* - -

Q: How can I retrieve .asp or .cgi sources instead -of .html result? - -

A: You can't! For security reasons, web servers do not -allow that. - -

Q: How can I remove these annoying <!-- -Mirrored from... --> from html files? - -

A: Use the footer option (-&F, or see the WinHTTrack -options) - -

Q: Do I have to select between ascii/binary transfer -mode? - -

A: No, http files are always transfered as binary -files. Ftp files, too (even if ascii mode could be selected) - -

Q: Can HTTrack perform form-based authentication? - - -

A: Yes. See the URL capture abilities (--catchurl for -command-line release, or in the WinHTTrack interface) - -

Q: Can I redirect downloads to tar/zip archive? - -

A: Yes. See the shell system command option (-V -option for command-line release) - -

Q: Can I use username/password authentication on a -site? - -

A: Yes. Use user:password@your_url (example: -http://foo:bar@www.all.net/private/mybox.html) - -

Q: Can I use username/password authentication for a -proxy? - -

A: Yes. Use user:password@your_proxy_name as your -proxy name (example: smith:foo@proxy.mycorp.com) - -

Q: Can HTTrack generates HP-UX or ISO9660 compatible -files? - -

A: Yes. See the build options (-N, or see the -WinHTTrack options) - -

Q: If there any SOCKS support? - -

A: Not yet! - -

Q: What's this hts-cache directory? Can I remove it? - - -

A: NO if you want to update the site, because this -directory is used by HTTrack for this purpose. If you remove it, -options and URLs will not be available for updating the site - -

Q: Can I start a mirror from my bookmarks? - -

A: Yes. Drag&Drop your bookmark.html file to the -WinHTTrack window (or use file://filename for command-line release) and -select bookmark mirroring (mirror all links in pages, -Y) or bookmark -testing (--testlinks) - -

Q: I am getting a "pipe broken" error and the mirror -stops, what should I do? - -

A: Chances are this is a result of downloading too -many pages at a time. Remote servers may not allow or be able to handle -too many sessions, or your system may be unable to provide the necessary -resources. Try redusing this number - for example using the -c2 options -for only 2 simultaneous sesions. - - -

-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/filters.html b/HelpHtml/filters.html deleted file mode 100644 index 6438dab..0000000 --- a/HelpHtml/filters.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Filters: Advanced

- -
- -See also: The FAQ
- -
- - You have to know that once you have defined - starts links, the default mode is to mirror these links - i.e. if one of your start page is - www.someweb.com/test/index.html, all links starting with www.someweb.com/test/ will be - accepted. But links directly in www.someweb.com/.. will not be accepted, however, because - they are in a higher strcuture. This prevent HTTrack from mirroring the whole site. (All - files in structure levels equal or lower than the primary links will be retrieved.)
-
-
- But you may want to download files that are not directly in the subfolders, or on the - contrary refuse files of a particular type. That is the purpose of filters. -
- -
- To accept a family of links (for example, all links with a specific name or type), you just have to add - an authorization filter, like +*.gif. The pattern is a plus (this one: +), - followed by a pattern composed of letters and wildcards (this one: *). -

- To forbide a family of links, define - an authorization filter, like -*.gif. The pattern is a dash (this one: -), - followed by a the same kind of pattern as for the authorization filter. -

- Example: +*.gif will accept all files finished by .gif
- Example: -*.gif will refuse all files finished by .gif
-
- -
- Let's talk a little more about patterns: - -
- Filters are analyzed by HTTrack from the first filter to the last one. The complete URL - name is compared to filters defined by the user or added automatically by HTTrack.

- A link has an higher priority than the one before it - hierarchy is important:
- -
- - - -
- +*.gif -image*.gif - - Will accept all gif files BUT image1.gif,imageblue.gif,imagery.gif and so on -
- -image*.gif +*.gif - - Will accept all gif files, because the second pattern is prioritary (because it is defined AFTER the first one) -
-
- -
- We saw that patterns are composed of letters and wildcards (*), as in */image*.gif - -


- Special wild cards can be used for specific characters: (*[..])

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
*any characters (the most commonly used)
*[file] or *[name]any filename or name, e.g. not /,? and ; characters
*[path]any path (and filename), e.g. not ? and ; characters
*[a,z,e,r,t,y]any letters among a,z,e,r,t,y
*[a-z]any letters
*[0-9,a,z,e,r,t,y]any characters among 0..9 and a,z,e,r,t,y
*[]no characters must be present after
- - -


- Here are some examples of filters: (that can be generated automatically using the - interface)

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
www.thisweb.com* This will refuse/accept this web site (all links located in it will be rejected)
*.com/*This will refuse/accept all links that contains .com in them
*cgi-bin* This will refuse/accept all links that contains cgi-bin in them
www.*.com/*[path].zip This will refuse/accept all zip files in .com addresses
*someweb*/*.tar*This will refuse/accept all tar (or tar.gz etc.) files in hosts containing someweb
*/*somepage*This will refuse/accept all links containing somepage (but not in the address)
*.htmlThis will refuse/accept all html files.
- Warning! With this filter you will accept ALL html files, even those in other addresses. - (causing a global (!) web mirror..) Use www.someweb.com/*.html to accept all html files from - a web.
*.html*[]Identical to *.html, but the link must not have any supplemental characters - at the end (links with parameters, like www.someweb.com/index.html?page=10, will be - refused)
- -
- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/httrack.css b/HelpHtml/httrack.css deleted file mode 100644 index 4f2c01b..0000000 --- a/HelpHtml/httrack.css +++ /dev/null @@ -1,70 +0,0 @@ - -body { - margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px; - background: #77b; -} -body, td { - font: 0.96em/1.3em "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; - } - -#subTitle { - background: #000; color: #fff; padding: 4px; font-weight: bold; - } - -/* - Width for "#siteNavigation td" based on number of buttons - Six: 16.6% -*/ -#siteNavigation td { width: 16.6%; } -#siteNavigation a { - display: block; padding: 2px; - text-align: center; font-weight: bold; color: #448; /* font-size: 12px; */ background-color: #99c; - } -#siteNavigation a:link { text-decoration: none; } -#siteNavigation a:visited { text-decoration: none; } -#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; } -#siteNavigation a:active { text-decoration: none; background-color: #ccc; } - -a:link { text-decoration: underline; color: #00f; } -a:visited { text-decoration: underline; color: #000; } -a:hover { text-decoration: underline; color: #c00; } -a:active { text-decoration: underline; } - - - -#pageContent { - clear: both; - border-bottom: 6px solid #000; - padding: 10px; padding-top: 20px; - line-height: 1.65em; - background-image: url(images/bg_rings.gif); - background-repeat: no-repeat; - background-position: top right; - } -#pageContent p { margin: 0; margin-bottom: 30px; } - - - -#pageContent, #siteNavigation { - background-color: #ccd; - } - -.tableWidth { min-width: 400px; } - - -/* ----------------------------------- */ - - -.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; } -.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; } - -hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; } - -h1 { margin: 0; font-weight: bold; font-size: 2em; } -h2 { margin: 0; font-weight: bold; font-size: 1.6em; } -h3 { margin: 0; font-weight: bold; font-size: 1.3em; } - -.blak { background-color: #000; } -.hide { display: none; } - - diff --git a/HelpHtml/httrack.man.html b/HelpHtml/httrack.man.html deleted file mode 100644 index 8a6fbc2..0000000 --- a/HelpHtml/httrack.man.html +++ /dev/null @@ -1,2122 +0,0 @@ - - - - -httrack - - - -

httrack

-NAME
-SYNOPSIS
-DESCRIPTION
-EXAMPLES
-OPTIONS
-FILES
-ENVIRONMENT
-DIAGNOSTICS
-LIMITS
-BUGS
-COPYRIGHT
-CRYPTOGRAPHY
-AVAILABILITY
-AUTHOR
-SEE ALSO
- -
- - - -

NAME

- - -
-httrack - offline browser : copy websites to a local directory
- -

SYNOPSIS

- - - -
-httrack [ url ]... [ -filter ]... [ +filter ]... [ ] -[ -w, --mirror ] [ -W, --mirror-wizard ] [ --g, --get-files ] [ -i, --continue ] [ -Y, ---mirrorlinks ] [ -P, --proxy ] [ -%f, ---httpproxy-ftp[=N] ] [ -rN, --depth[=N] ] [ --%eN, --ext-depth[=N] ] [ -mN, --max-files[=N] -] [ -MN, --max-size[=N] ] [ -EN, ---max-time[=N] ] [ -AN, --max-rate[=N] ] [ --%cN, --connection-per-second[=N] ] [ -GN, ---max-pause[=N] ] [ -cN, --sockets[=N] ] [ --TN, --timeout ] [ -RN, --retries[=N] ] [ --JN, --min-rate[=N] ] [ -HN, ---host-control[=N] ] [ -%P, ---extended-parsing[=N] ] [ -n, --near ] [ -t, ---test ] [ -%L, --list ] [ -NN, ---structure[=N] ] [ -LN, --long-names[=N] ] [ --KN, --keep-links[=N] ] [ -x, ---replace-external ] [ -%x, --no-passwords ] [ --%q, --include-query-string ] [ -o, ---generate-errors ] [ -X, --purge-old[=N] ] [ --%p, --preserve ] [ -bN, --cookies[=N] ] [ --u, --check-type[=N] ] [ -j, --parse-java[=N] -] [ -sN, --robots[=N] ] [ -%h, --http-10 ] [ --%B, --tolerant ] [ -%s, --updatehack ] [ --%A, --assume ] [ -@iN, --protocol[=N] ] [ --F, --user-agent ] [ -%F, --footer ] [ -%l, ---language ] [ -C, --cache[=N] ] [ -k, ---store-all-in-cache ] [ -%n, --do-not-recatch ] -[ -%v, --display ] [ -Q, --do-not-log ] [ --q, --quiet ] [ -z, --extra-log ] [ -Z, ---debug-log ] [ -v, --verbose ] [ -f, ---file-log ] [ -f2, --single-log ] [ -I, ---index ] [ -%I, --search-index ] [ -pN, ---priority[=N] ] [ -S, --stay-on-same-dir ] [ --D, --can-go-down ] [ -U, --can-go-up ] [ --B, --can-go-up-and-down ] [ -a, ---stay-on-same-address ] [ -d, ---stay-on-same-domain ] [ -l, --stay-on-same-tld -] [ -e, --go-everywhere ] [ -%H, ---debug-headers ] [ -V, --userdef-cmd ] [ -%U, ---user ] [ -K, --keep-links[=N] ] [
- -

DESCRIPTION

- - - -
-httrack allows you to download a World Wide Web site -from the Internet to a local directory, building recursively -all directories, getting HTML, images, and other files from -the server to your computer. HTTrack arranges the original -site's relative link-structure. Simply open a page of the -"mirrored" website in your browser, and you can -browse the site from link to link, as if you were viewing it -online. HTTrack can also update an existing mirrored site, -and resume interrupted downloads.
- -

EXAMPLES

- - - -
-httrack www.someweb.com/bob/
- - - -
-mirror site www.someweb.com/bob/ and only this -site
- - - -
-httrack www.someweb.com/bob/ www.anothertest.com/mike/ -+*.com/*.jpg
- - - -
-mirror the two sites together (with shared links) and accept -any .jpg files on .com sites
- - - -
-httrack www.someweb.com/bob/bobby.html +* --r6
- - - -
-means get all files starting from bobby.html, with 6 -link-depth, and possibility of going everywhere on the -web
- - - -
-httrack www.someweb.com/bob/bobby.html --spider -P -proxy.myhost.com:8080
- - - -
-runs the spider on www.someweb.com/bob/bobby.html using a -proxy
- - - -
-httrack --update
- - - -
-updates a mirror in the current folder
- - - -
-httrack
- - - -
-will bring you to the interactive mode
- - - -
-httrack --continue
- - - -
-continues a mirror in the current folder
- -

OPTIONS

- - - -
-General options:
- - - -
--O
- - - -
-path for mirror/logfiles+cache (-O path mirror[,path cache -and logfiles]) (--path <param>)
- - - -
-Action options:
- - - -
--w
- - - -
-*mirror web sites (--mirror)
- - - -
--W
- - - -
-mirror web sites, semi-automatic (asks questions) -(--mirror-wizard)
- - - -
--g
- - - -
-just get files (saved in the current directory) -(--get-files)
- - - -
--i
- - - -
-continue an interrupted mirror using the cache -(--continue)
- - - -
--Y
- - - -
-mirror ALL links located in the first level pages (mirror -links) (--mirrorlinks)
- - - -
-Proxy options:
- - - -
--P
- - - -
-proxy use (-P proxy:port or -P user:pass@proxy:port) -(--proxy <param>)
- - - -
--%f
- - - -
-*use proxy for ftp (f0 don t use) -(--httpproxy-ftp[=N])
- - - -
-Limits options:
- - - -
--rN
- - - -
-set the mirror depth to N (* r9999) -(--depth[=N])
- - - -
--%eN
- - - -
-set the external links depth to N (* %e0) -(--ext-depth[=N])
- - - -
--mN
- - - -
-maximum file length for a non-html file -(--max-files[=N])
- - - -
--mN,N2
- - - -
-maximum file length for non html (N) and html -(N2)
- - - -
--MN
- - - -
-maximum overall size that can be uploaded/scanned -(--max-size[=N])
- - - -
--EN
- - - -
-maximum mirror time in seconds (60=1 minute, 3600=1 hour) -(--max-time[=N])
- - - -
--AN
- - - -
-maximum transfer rate in bytes/seconds (1000=1KB/s max) -(--max-rate[=N])
- - - -
--%cN
- - - -
-maximum number of connections/seconds (*%c10) -(--connection-per-second[=N])
- - - -
--GN
- - - -
-pause transfer if N bytes reached, and wait until lock file -is deleted (--max-pause[=N])
- - - -
-Flow control:
- - - -
--cN
- - - -
-number of multiple connections (*c8) -(--sockets[=N])
- - - -
--TN
- - - -
-timeout, number of seconds after a non-responding link is -shutdown (--timeout)
- - - -
--RN
- - - -
-number of retries, in case of timeout or non-fatal errors -(*R1) (--retries[=N])
- - - -
--JN
- - - -
-traffic jam control, minimum transfert rate (bytes/seconds) -tolerated for a link (--min-rate[=N])
- - - -
--HN
- - - -
-host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout -or slow (--host-control[=N])
- - - -
-Links options:
- - - -
--%P
- - - -
-*extended parsing, attempt to parse all links, even in -unknown tags or Javascript (%P0 don t use) -(--extended-parsing[=N])
- - - -
--n
- - - -
-get non-html files near an html file (ex: an image located -outside) (--near)
- - - -
--t
- - - -
-test all URLs (even forbidden ones) (--test)
- - - -
--%L
- - - -
-<file> add all URL located in this text file (one URL -per line) (--list <param>)
- - - -
-Build options:
- - - -
--NN
- - - -
-structure type (0 *original structure, 1+: see below) -(--structure[=N])
- - - -
--or
- - - -
-user defined structure (-N -"%h%p/%n%q.%t")
- - - -
--LN
- - - -
-long names (L1 *long names / L0 8-3 conversion / L2 ISO9660 -compatible) (--long-names[=N])
- - - -
--KN
- - - -
-keep original links (e.g. http://www.adr/link) (K0 *relative -link, K absolute links, K4 original links, K3 absolute URI -links) (--keep-links[=N])
- - - -
--x
- - - -
-replace external html links by error pages -(--replace-external)
- - - -
--%x
- - - -
-do not include any password for external password protected -websites (%x0 include) (--no-passwords)
- - - -
--%q
- - - -
-*include query string for local files (useless, for -information purpose only) (%q0 don t include) -(--include-query-string)
- - - -
--o
- - - -
-*generate output html file in case of error (404..) (o0 don -t generate) (--generate-errors)
- - - -
--X
- - - -
-*purge old files after update (X0 keep delete) -(--purge-old[=N])
- - - -
--%p
- - - -
-preserve html files as is (identical to -K4 -%F "" -) (--preserve)
- - - -
-Spider options:
- - - -
--bN
- - - -
-accept cookies in cookies.txt (0=do not accept,* 1=accept) -(--cookies[=N])
- - - -
--u
- - - -
-check document type if unknown (cgi,asp..) (u0 don t check, -* u1 check but /, u2 check always) -(--check-type[=N])
- - - -
--j
- - - -
-*parse Java Classes (j0 don t parse) -(--parse-java[=N])
- - - -
--sN
- - - -
-follow robots.txt and meta robots tags -(0=never,1=sometimes,* 2=always) (--robots[=N])
- - - -
--%h
- - - -
-force HTTP/1.0 requests (reduce update features, only for -old servers or proxies) (--http-10)
- - - -
--%B
- - - -
-tolerant requests (accept bogus responses on some servers, -but not standard!) (--tolerant)
- - - -
--%s
- - - -
-update hacks: various hacks to limit re-transfers when -updating (identical size, bogus response..) -(--updatehack)
- - - -
--%A
- - - -
-assume that a type (cgi,asp..) is always linked with a mime -type (-%A php3,cgi=text/html;dat,bin=application/x-zip) -(--assume <param>)
- - - -
--@iN
- - - -
-internet protocol (0=both ipv6+ipv4, 4=ipv4 only, 6=ipv6 -only) (--protocol[=N])
- - - -
-Browser ID:
- - - -
--F
- - - -
-user-agent field (-F "user-agent name") -(--user-agent <param>)
- - - -
--%F
- - - -
-footer string in Html code (-%F "Mirrored [from host %s -[file %s [at %s]]]" (--footer -<param>)
- - - -
--%l
- - - -
-preffered language (-%l "fr, en, jp, *" -(--language <param>)
- - - -
-Log, index, cache
- - - -
--C
- - - -
-create/use a cache for updates and retries (C0 no cache,C1 -cache is prioritary,* C2 test update before) -(--cache[=N])
- - - -
--k
- - - -
-store all files in cache (not useful if files on disk) -(--store-all-in-cache)
- - - -
--%n
- - - -
-do not re-download locally erased files -(--do-not-recatch)
- - - -
--%v
- - - -
-display on screen filenames downloaded (in realtime) - * %v1 -short version (--display)
- - - -
--Q
- - - -
-no log - quiet mode (--do-not-log)
- - - -
--q
- - - -
-no questions - quiet mode (--quiet)
- - - -
--z
- - - -
-log - extra infos (--extra-log)
- - - -
--Z
- - - -
-log - debug (--debug-log)
- - - -
--v
- - - -
-log on screen (--verbose)
- - - -
--f
- - - -
-*log in files (--file-log)
- - - -
--f2
- - - -
-one single log file (--single-log)
- - - -
--I
- - - -
-*make an index (I0 don t make) (--index)
- - - -
--%I
- - - -
-make an searchable index for this mirror (* %I0 don t make) -(--search-index)
- - - -
-Expert options:
- - - -
--pN
- - - -
-priority mode: (* p3) (--priority[=N])
- - - -
--p0
- - - -
-just scan, don t save anything (for checking -links)
- - - -
--p1
- - - -
-save only html files
- - - -
--p2
- - - -
-save only non html files
- - - -
--*p3
- - - -
-save all files
- - - -
--p7
- - - -
-get html files before, then treat other files
- - - -
--S
- - - -
-stay on the same directory (--stay-on-same-dir)
- - - -
--D
- - - -
-*can only go down into subdirs (--can-go-down)
- - - -
--U
- - - -
-can only go to upper directories (--can-go-up)
- - - -
--B
- - - -
-can both go up&down into the directory structure -(--can-go-up-and-down)
- - - -
--a
- - - -
-*stay on the same address -(--stay-on-same-address)
- - - -
--d
- - - -
-stay on the same principal domain -(--stay-on-same-domain)
- - - -
--l
- - - -
-stay on the same TLD (eg: .com) -(--stay-on-same-tld)
- - - -
--e
- - - -
-go everywhere on the web (--go-everywhere)
- - - -
--%H
- - - -
-debug HTTP headers in logfile (--debug-headers)
- - - -
-Guru options: (do NOT use if possible)
- - - -
--#0
- - - -
-Filter test (-#0 *.gif www.bar.com/foo.gif ) -(--debug-testfilters <param>)
- - - -
--#f
- - - -
-Always flush log files (--advanced-flushlogs)
- - - -
--#FN
- - - -
-Maximum number of filters -(--advanced-maxfilters[=N])
- - - -
--#h
- - - -
-Version info (--version)
- - - -
--#K
- - - -
-Scan stdin (debug) (--debug-scanstdin)
- - - -
--#L
- - - -
-Maximum number of links (-#L1000000) -(--advanced-maxlinks)
- - - -
--#p
- - - -
-Display ugly progress information -(--advanced-progressinfo)
- - - -
--#P
- - - -
-Catch URL (--catch-url)
- - - -
--#R
- - - -
-Old FTP routines (debug) (--debug-oldftp)
- - - -
--#T
- - - -
-Generate transfer ops. log every minutes -(--debug-xfrstats)
- - - -
--#u
- - - -
-Wait time (--advanced-wait)
- - - -
--#Z
- - - -
-Generate transfer rate statictics every minutes -(--debug-ratestats)
- - - -
--#!
- - - -
-Execute a shell command (-#! "echo hello") (--exec -<param>)
- - - -
-Command-line specific options:
- - - -
--V
- - - -
-execute system command after each files ($0 is the filename: --V "rm ") (--userdef-cmd -<param>)
- - - -
--%U
- - - -
-run the engine with another id when called as root (-%U -smith) (--user <param>)
- - - -
-Details: Option N
- - - -
--N0
- - - -
-Site-structure (default)
- - - -
--N1
- - - -
-HTML in web/, images/other files in web/images/
- - - -
--N2
- - - -
-HTML in web/HTML, images/other in web/images
- - - -
--N3
- - - -
-HTML in web/, images/other in web/
- - - -
--N4
- - - -
-HTML in web/, images/other in web/xxx, where xxx is the file -extension (all gif will be placed onto web/gif, for -example)
- - - -
--N5
- - - -
-Images/other in web/xxx and HTML in web/HTML
- - - -
--N99
- - - -
-All files in web/, with random names (gadget !)
- - - -
--N100
- - - -
-Site-structure, without www.domain.xxx/
- - - -
--N101
- - - -
-Identical to N1 exept that "web" is replaced by -the site s name
- - - -
--N102
- - - -
-Identical to N2 exept that "web" is replaced by -the site s name
- - - -
--N103
- - - -
-Identical to N3 exept that "web" is replaced by -the site s name
- - - -
--N104
- - - -
-Identical to N4 exept that "web" is replaced by -the site s name
- - - -
--N105
- - - -
-Identical to N5 exept that "web" is replaced by -the site s name
- - - -
--N199
- - - -
-Identical to N99 exept that "web" is replaced by -the site s name
- - - -
--N1001
- - - -
-Identical to N1 exept that there is no "web" -directory
- - - -
--N1002
- - - -
-Identical to N2 exept that there is no "web" -directory
- - - -
--N1003
- - - -
-Identical to N3 exept that there is no "web" -directory (option set for g option)
- - - -
--N1004
- - - -
-Identical to N4 exept that there is no "web" -directory
- - - -
--N1005
- - - -
-Identical to N5 exept that there is no "web" -directory
- - - -
--N1099
- - - -
-Identical to N99 exept that there is no "web" -directory
- - - -
-Details: User-defined option N
- - - -
-%n Name of file without file type (ex: image) %N Name of -file, including file type (ex: image.gif) %t File type (ex: -gif) %p Path [without ending /] (ex: /someimages) %h Host -name (ex: www.someweb.com) %M URL MD5 (128 bits, 32 ascii -bytes) %Q query string MD5 (128 bits, 32 ascii bytes) %q -small query string MD5 (16 bits, 4 ascii bytes) %s? Short -name version (ex: %sN) %[param] param variable in query -string
- - - -
-Details: Option K
- - - -
--K0
- - - -
-foo.cgi?q=45 -> foo4B54.html?q=45 (relative URI, -default)
- - - -
--K
- - - -
--> http://www.foobar.com/folder/foo.cgi?q=45 (absolute -URL) (--keep-links[=N])
- - - -
--K4
- - - -
--> foo.cgi?q=45 (original URL)
- - - -
--K3
- - - -
--> /folder/foo.cgi?q=45 (absolute URI)
- - - -
-Shortcuts:
- - - -
---mirror
- - - -
-<URLs> *make a mirror of site(s) -(default)
- - - -
---get
- - - -
-<URLs> get the files indicated, do not seek other URLs -(-qg)
- - - -
---list
- - - -
-<text file> add all URL located in this text file -(-%L)
- - - -
---mirrorlinks
- - - -
-<URLs> mirror all links in 1st level pages -(-Y)
- - - -
---testlinks
- - - -
-<URLs> test links in pages (-r1p0C0I0t)
- - - -
---spider
- - - -
-<URLs> spider site(s), to test links: reports Errors -& Warnings (-p0C0I0t)
- - - -
---testsite
- - - -
-<URLs> identical to --spider
- - - -
---skeleton
- - - -
-<URLs> make a mirror, but gets only html files -(-p1)
- - - -
---update
- - - -
-update a mirror, without confirmation (-iC2)
- - - -
---continue
- - - -
-continue a mirror, without confirmation (-iC1)
- - - -
---catchurl
- - - -
-create a temporary proxy to capture an URL or a form post -URL
- - - -
---clean
- - - -
-erase cache & log files
- - - -
---http10
- - - -
-force http/1.0 requests (-%h)
- -

FILES

- - - -
-/etc/httrack.conf
- - - -
-The system wide configuration file.
- -

ENVIRONMENT

- - - -
-HOME
- - - -
-Is being used if you defined in /etc/httrack.conf the line -path ~/websites/#
- -

DIAGNOSTICS

- - - -
-Errors/Warnings are reported to hts-log.txt by -default, or to stderr if the -v option was -specified.
- -

LIMITS

- - - -
-These are the principals limits of HTTrack for that moment. -Note that most of them are generally shared among all -offline browsers, due to technological limits.
- - - -
-- Several scripts generating complex filenames may -not find them (ex: -img.src='image'+a+Mobj.dst+'.gif')
- - - -
-- Some java classes may not find some files on them -(class included)
- - - -
-- Cgi-bin links may not work properly in some cases -(parameters needed). To avoid them: use filters like --*cgi-bin*
- - - -
-- Flash files are not yet parsed
- -

BUGS

- - - -
-Please reports bugs to <bugs@httrack.com>. -Include a complete, self-contained example that will allow -the bug to be reproduced, and say which version of httrack -you are using. Do not forget to detail options used, OS -version, and any other information you deem -necessary.
- -

COPYRIGHT

- - - -
-Copyright (C) Xavier Roche and other -contributors
- - - -
-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 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.
- -

CRYPTOGRAPHY

- - - -
-PLEASE REMEMBER THAT EXPORT/IMPORT AND/OR USE OF STRONG -CRYPTOGRAPHY SOFTWARE, PROVIDING CRYPTOGRAPHY HOOKS OR EVEN -JUST COMMUNICATING TECHNICAL DETAILS ABOUT CRYPTOGRAPHY -SOFTWARE IS ILLEGAL IN SOME PARTS OF THE WORLD. SO, WHEN YOU -IMPORT THIS PACKAGE TO YOUR COUNTRY, RE-DISTRIBUTE IT FROM -THERE OR EVEN JUST EMAIL TECHNICAL SUGGESTIONS OR EVEN -SOURCE PATCHES TO THE AUTHOR OR OTHER PEOPLE YOU ARE -STRONGLY ADVISED TO PAY CLOSE ATTENTION TO ANY EXPORT/IMPORT -AND/OR USE LAWS WHICH APPLY TO YOU. THE AUTHORS ARE NOT -LIABLE FOR ANY VIOLATIONS YOU MAKE HERE. SO BE CAREFUL, IT -IS YOUR RESPONSIBILITY.
- -

AVAILABILITY

- - - -
-The most recent released version of httrack can be found at: -http://www.httrack.com
- -

AUTHOR

- - - -
-Xavier Roche <roche@httrack.com>
- -

SEE ALSO

- - - -
-The HTML documentation (available online at -http://www.httrack.com/HelpHtml/ ) contains more -detailed information. Please also refer to the httrack -FAQ (available online at -http://www.httrack.com/HelpHtml/faq.html -)
-
- - diff --git a/HelpHtml/images/bg_rings.gif b/HelpHtml/images/bg_rings.gif deleted file mode 100644 index da7c5c8..0000000 Binary files a/HelpHtml/images/bg_rings.gif and /dev/null differ diff --git a/HelpHtml/images/header_title_4.gif b/HelpHtml/images/header_title_4.gif deleted file mode 100644 index 93847d3..0000000 Binary files a/HelpHtml/images/header_title_4.gif and /dev/null differ diff --git a/HelpHtml/images/screenshot_01.jpg b/HelpHtml/images/screenshot_01.jpg deleted file mode 100644 index cbafd82..0000000 Binary files a/HelpHtml/images/screenshot_01.jpg and /dev/null differ diff --git a/HelpHtml/img/addurl1.gif b/HelpHtml/img/addurl1.gif deleted file mode 100644 index 009277c..0000000 Binary files a/HelpHtml/img/addurl1.gif and /dev/null differ diff --git a/HelpHtml/img/addurl2.gif b/HelpHtml/img/addurl2.gif deleted file mode 100644 index 92b1a11..0000000 Binary files a/HelpHtml/img/addurl2.gif and /dev/null differ diff --git a/HelpHtml/img/addurl3.gif b/HelpHtml/img/addurl3.gif deleted file mode 100644 index 6df70f8..0000000 Binary files a/HelpHtml/img/addurl3.gif and /dev/null differ diff --git a/HelpHtml/img/addurl4.gif b/HelpHtml/img/addurl4.gif deleted file mode 100644 index 721e463..0000000 Binary files a/HelpHtml/img/addurl4.gif and /dev/null differ diff --git a/HelpHtml/img/addurl5.gif b/HelpHtml/img/addurl5.gif deleted file mode 100644 index 4f61bc4..0000000 Binary files a/HelpHtml/img/addurl5.gif and /dev/null differ diff --git a/HelpHtml/img/backblue.gif b/HelpHtml/img/backblue.gif deleted file mode 100644 index 99cbbaa..0000000 Binary files a/HelpHtml/img/backblue.gif and /dev/null differ diff --git a/HelpHtml/img/fade.gif b/HelpHtml/img/fade.gif deleted file mode 100644 index 579cc5f..0000000 Binary files a/HelpHtml/img/fade.gif and /dev/null differ diff --git a/HelpHtml/img/httrack.gif b/HelpHtml/img/httrack.gif deleted file mode 100644 index 51da0d2..0000000 Binary files a/HelpHtml/img/httrack.gif and /dev/null differ diff --git a/HelpHtml/img/snap1_a.gif b/HelpHtml/img/snap1_a.gif deleted file mode 100644 index cd918e0..0000000 Binary files a/HelpHtml/img/snap1_a.gif and /dev/null differ diff --git a/HelpHtml/img/snap1_b.gif b/HelpHtml/img/snap1_b.gif deleted file mode 100644 index 539e7c1..0000000 Binary files a/HelpHtml/img/snap1_b.gif and /dev/null differ diff --git a/HelpHtml/img/snap1_c.gif b/HelpHtml/img/snap1_c.gif deleted file mode 100644 index 496e1cf..0000000 Binary files a/HelpHtml/img/snap1_c.gif and /dev/null differ diff --git a/HelpHtml/img/snap2_a.gif b/HelpHtml/img/snap2_a.gif deleted file mode 100644 index ddb0367..0000000 Binary files a/HelpHtml/img/snap2_a.gif and /dev/null differ diff --git a/HelpHtml/img/snap2_b.gif b/HelpHtml/img/snap2_b.gif deleted file mode 100644 index 6d6ad07..0000000 Binary files a/HelpHtml/img/snap2_b.gif and /dev/null differ diff --git a/HelpHtml/img/snap3_a.gif b/HelpHtml/img/snap3_a.gif deleted file mode 100644 index 84a32ef..0000000 Binary files a/HelpHtml/img/snap3_a.gif and /dev/null differ diff --git a/HelpHtml/img/snap4_a.gif b/HelpHtml/img/snap4_a.gif deleted file mode 100644 index 18a8df9..0000000 Binary files a/HelpHtml/img/snap4_a.gif and /dev/null differ diff --git a/HelpHtml/img/snap5_a.gif b/HelpHtml/img/snap5_a.gif deleted file mode 100644 index 450fa13..0000000 Binary files a/HelpHtml/img/snap5_a.gif and /dev/null differ diff --git a/HelpHtml/img/snap9.gif b/HelpHtml/img/snap9.gif deleted file mode 100644 index 1277e01..0000000 Binary files a/HelpHtml/img/snap9.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_a.gif b/HelpHtml/img/snap9_a.gif deleted file mode 100644 index 342f219..0000000 Binary files a/HelpHtml/img/snap9_a.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_b.gif b/HelpHtml/img/snap9_b.gif deleted file mode 100644 index 07b9bd4..0000000 Binary files a/HelpHtml/img/snap9_b.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_c.gif b/HelpHtml/img/snap9_c.gif deleted file mode 100644 index 0620351..0000000 Binary files a/HelpHtml/img/snap9_c.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_d.gif b/HelpHtml/img/snap9_d.gif deleted file mode 100644 index 120a26f..0000000 Binary files a/HelpHtml/img/snap9_d.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_d2.gif b/HelpHtml/img/snap9_d2.gif deleted file mode 100644 index 4970603..0000000 Binary files a/HelpHtml/img/snap9_d2.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_d3.gif b/HelpHtml/img/snap9_d3.gif deleted file mode 100644 index c8f666d..0000000 Binary files a/HelpHtml/img/snap9_d3.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_d4.gif b/HelpHtml/img/snap9_d4.gif deleted file mode 100644 index 82034eb..0000000 Binary files a/HelpHtml/img/snap9_d4.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_d5.gif b/HelpHtml/img/snap9_d5.gif deleted file mode 100644 index 5e4c4f8..0000000 Binary files a/HelpHtml/img/snap9_d5.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_d6.gif b/HelpHtml/img/snap9_d6.gif deleted file mode 100644 index e300bf3..0000000 Binary files a/HelpHtml/img/snap9_d6.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_d7.gif b/HelpHtml/img/snap9_d7.gif deleted file mode 100644 index 67d73bf..0000000 Binary files a/HelpHtml/img/snap9_d7.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_d8.gif b/HelpHtml/img/snap9_d8.gif deleted file mode 100644 index 994a15b..0000000 Binary files a/HelpHtml/img/snap9_d8.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_e.gif b/HelpHtml/img/snap9_e.gif deleted file mode 100644 index 2ac97d1..0000000 Binary files a/HelpHtml/img/snap9_e.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_f.gif b/HelpHtml/img/snap9_f.gif deleted file mode 100644 index 58fced6..0000000 Binary files a/HelpHtml/img/snap9_f.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_g.gif b/HelpHtml/img/snap9_g.gif deleted file mode 100644 index 4b26899..0000000 Binary files a/HelpHtml/img/snap9_g.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_g2.gif b/HelpHtml/img/snap9_g2.gif deleted file mode 100644 index 4dbd71a..0000000 Binary files a/HelpHtml/img/snap9_g2.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_g3.gif b/HelpHtml/img/snap9_g3.gif deleted file mode 100644 index 318f016..0000000 Binary files a/HelpHtml/img/snap9_g3.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_h.gif b/HelpHtml/img/snap9_h.gif deleted file mode 100644 index 8232bdc..0000000 Binary files a/HelpHtml/img/snap9_h.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_i.gif b/HelpHtml/img/snap9_i.gif deleted file mode 100644 index e671b61..0000000 Binary files a/HelpHtml/img/snap9_i.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_j.gif b/HelpHtml/img/snap9_j.gif deleted file mode 100644 index c154dca..0000000 Binary files a/HelpHtml/img/snap9_j.gif and /dev/null differ diff --git a/HelpHtml/img/snap9_k.gif b/HelpHtml/img/snap9_k.gif deleted file mode 100644 index 8c5621e..0000000 Binary files a/HelpHtml/img/snap9_k.gif and /dev/null differ diff --git a/HelpHtml/index.html b/HelpHtml/index.html deleted file mode 100644 index 8b3f732..0000000 --- a/HelpHtml/index.html +++ /dev/null @@ -1,153 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Documentation

- - - - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/options.html b/HelpHtml/options.html deleted file mode 100644 index 7db0516..0000000 --- a/HelpHtml/options.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Options

- -
    -
  • Filters: how to use them
  • -
    Here you can find informations on filters: how to accept all gif files in a mirror, for example -

    -
  • List of options
  • -
- - -
-
-w  mirror with automatic wizard
-This is the default scanning option, the engine automatically scans links according to the default options, and filters defined. It does not prompt a message when a "foreign" link is reached.
-
-W  semi-automatic mirror with help-wizard (asks questions)
-This option lets the engine ask the user if a link must be mirrored or not, when a new web has been found.
-
-g  just get files (saved in the current directory)
-This option forces the engine not to scan the files indicated - i.e. the engine only gets the files indicated.
-
-i  continue an interrupted mirror using the cache
-This option indicates to the engine that a mirror must be updated or continued.
-
-rN  recurse get with limited link depth of N
-This option sets the maximum recurse level. Default is infinite (the engine "knows" that it should not go out of current domain)
-
-a   stay on the same address
-This is the default primary scanning option, the engine does not go out of domains without permissions (filters, for example)
-
-d   stay on the same principal domain
-This option lets the engine go on all sites that exist on the same principal domain.
-Example: a link located at www.someweb.com that goes to members.someweb.com will be followed.
-
-l   stay on the same location (.com, etc.)
-This option lets the engine go on all sites that exist on the same location.
-Example: a link located at www.someweb.com that goes to www.anyotherweb.com will be followed.
-Warning: this is a potentially dangerous option, limit the recurse depth with r option.
-
-e   go everywhere on the web
-This option lets the engine go on any sites.
-Example: a link located at www.someweb.com that goes to www.anyotherweb.org will be followed.
-Warning: this is a potentially dangerous option, limit the recurse depth with r option.
-
-n   get non-html files 'near' an html file (ex: an image located outside)
-This option lets the engine catch all files that have references on a page, but that exist outside the web site.
-Example: List of ZIP files links on a page.
-
-t   test all URLs (even forbidden ones)
-This option lets the engine test all links that are not caught.
-Example: to test broken links in a site
-
-x   replace external html links by error pages
-This option tells the engine to rewrite all links not taken into warning pages.
-Example: to browse offline a site, and to warn people that they must be online if they click to external links.
-
-sN  follow robots.txt and meta robots tags
-This option sets the way the engine treats "robots.txt" files. This file is often set by webmasters to avoir cgi-bin directories, or other irrevelant pages.
-Values: 
-  s0  Do not take robots.txt rules
-  s1  Follow rules, if compatible with internal filters
-  s2  Always follow site's rules
-
-bN  accept cookies in cookies.txt
-This option activates or unactivates the cookie
-  b0 do not accept cookies
-  b1 accept cookies
-
-S   stay on the same directory
-This option asks the engine to stay on the same folder level.
-Example: A link in /index.html that points to /sub/other.html will not be followed
-
-D   can only go down into subdirs
-This is the default option, the engine can go everywhere on the same directoy, or in lower structures
-
-U   can only go to upper directories
-This option asks the engine to stay on the same folder level or in upper structures
-
-B   can both go up&down into the directory structure
-This option lets the engine to go in any directory level
-
-Y   mirror ALL links located in the first level pages (mirror links)
-This option is activated for the links typed in the command line
-Example: if you have a list of web sites in www.asitelist.com/index.html, then all these sites will be mirrored
-
-NN  name conversion type (0 *original structure 1,2,3 html/data in one directory)
-  N0 Site-structure (default)
-  N1 Html in web/, images/other files in web/images/
-  N2 Html in web/html, images/other in web/images
-  N3 Html in web/,  images/other in web/
-  N4 Html in web/, images/other in web/xxx, where xxx is the file extension (all gif will be placed onto web/gif, for example)
-  N5 Images/other in web/xxx and Html in web/html
-
-  N99 All files in web/, with random names (gadget !)
-
-  N100 Site-structure, without www.domain.xxx/
-  N101 Identical to N1 exept that "web" is replaced by the site's name
-  N102 Identical to N2 exept that "web" is replaced by the site's name
-  N103 Identical to N3 exept that "web" is replaced by the site's name
-  N104 Identical to N4 exept that "web" is replaced by the site's name
-  N105 Identical to N5 exept that "web" is replaced by the site's name
-  N199 Identical to N99 exept that "web" is replaced by the site's name
-
-  N1001 Identical to N1 exept that there is no "web" directory
-  N1002 Identical to N2 exept that there is no "web" directory
-  N1003 Identical to N3 exept that there is no "web" directory (option set for g option)
-  N1004 Identical to N4 exept that there is no "web" directory
-  N1005 Identical to N5 exept that there is no "web" directory
-  N1099 Identical to N99 exept that there is no "web" directory
-
-LN  long names
-  L0 Filenames and directory names are limited to 8 characters + 3 for extension
-  L1 No restrictions (default)
-
-K   keep original links (e.g. http://www.adr/link) (K0 *relative link)
-This option has only been kept for compatibility reasons
-
-pN  priority mode:
-  p0 just scan, don't save anything (for checking links)
-  p1 save only html files
-  p2 save only non html files
-  p3 save all files
-  p7 get html files before, then treat other files
-
-cN  number of multiple connections (*c8)
-Set the numer of multiple simultaneous connections
-
-O   path for mirror/logfiles+cache (-O path_mirror[,path_cache_and_logfiles])
-This option define the path for mirror and log files
-Example: -P "/user/webs","/user/logs"
-
-P   proxy use (-P proxy:port or -P user:pass@proxy:port)
-This option define the proxy used in this mirror
-Example: -P proxy.myhost.com:8080
-
-F   user-agent field (-F \"user-agent name\
-This option define the user-agent field
-Example: -F "Mozilla/4.5 (compatible; HTTrack 1.2x; Windows 98)"
-
-mN maximum file length for a non-html file
-This option define the maximum size for non-html files
-Example: -m100000
-
-mN,N'  for non html (N) and html (N')
-This option define the maximum size for non-html files and html-files
-Example: -m100000,250000
-
-MN maximum overall size that can be uploaded/scanned
-This option define the maximum amount of bytes that can be downloaded
-Example: -M1000000
-
-EN maximum mirror time in seconds (60=1 minute, 3600=1 hour)
-This option define the maximum time that the mirror can last
-Example: -E3600
-
-AN maximum transfer rate in bytes/seconds (1000=1kb/s max)
-This option define the maximum transfer rate
-Example: -A2000
-
-GN pause transfer if N bytes reached, and wait until lock file is deleted
-This option asks the engine to pause every time N bytes have been transfered, and restarts when the lock file "hts-pause.lock" is being deleted
-Example: -G20000000
-
-u check document type if unknown (cgi,asp..)
-This option define the way the engine checks the file type
-  u0 do not check
-  u1 check but /
-  u2 check always
-
-RN number of retries, in case of timeout or non-fatal errors (*R0)
-This option sets the maximum number of tries that can be processed for a file
-
-o *generate output html file in case of error (404..) (o0 don't generate)
-This option define whether the engine has to generate html output file or not if an error occured
-
-TN timeout, number of seconds after a non-responding link is shutdown
-This option define the timeout
-Example: -T120
-
-JN traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link
-This option define the minimum transfer rate
-Example: -J200
-
-HN host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow
-This option define whether the engine has to abandon a host if a timeout/"too slow" error occured
-
-&P extended parsing, attempt to parse all links (even in unknown tags or Javascript)
-This option activates the extended parsing, that attempt to find links in unknown Html code/javascript
-
-j *parse Java Classes (j0 don't parse)
-This option define whether the engine has to parse java files or not to catch included files
-
-I *make an index (I0 don't make)
-This option define whether the engine has to generate an index.html on the top directory
-
-X *delete old files after update (X0 keep delete)
-This option define whether the engine has to delete locally, after an update, files that have been deleted in the remote mirror, or that have been excluded
-
-C *create/use a cache for updates and retries (C0 no cache)
-This option define whether the engine has to generate a cache for retries and updates or not
-
-k  store all files in cache (not useful if files on disk)
-This option define whether the engine has to store all files in cache or not
-
-V execute system command after each files ($0 is the filename: -V \"rm \\$0\
-This option lets the engine execute a command for each file saved on disk
-
-q  quiet mode (no questions)
-Do not ask questions (for example, for confirm an option)
-
-Q  log quiet mode (no log)
-Do not generate log files
-
-v  verbose screen mode
-Log files are printed in the screen
-
-f *log file mode
-Log files are generated into two log files
-
-z  extra infos log
-Add more informations on log files
-
-Z  debug log
-Add debug informations on log files
-
-
---mirror   *make a mirror of site(s) 
---get   get the files indicated, do not seek other URLs
---mirrorlinks   test links in pages (identical to -Y)
---testlinks     test links in pages
---spider    spider site(s), to test links (reports Errors & Warnings)
---update    update a mirror, without confirmation
---skeleton  make a mirror, but gets only html files
-
---http10  force http/1.0 requests when possible
-
-
-
- - - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/overview.html b/HelpHtml/overview.html deleted file mode 100644 index e48add9..0000000 --- a/HelpHtml/overview.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Overview

- -
- -

-
-Please visit our website! -
-
-

-
- - - - - - -
-

WinHTTrack snapshot

-
-

- -HTTrack HTTrack is an easy-to-use offline browser utility. It allows you to download a World -Wide website from the Internet to a local directory, building recursively all directories, -getting html, images, and other files from the server to your computer. HTTrack arranges -the original site's relative link-structure. Simply open a page of the "mirrored" website in -your browser, and you can browse the site from link to link, as if you were viewing it -online. HTTrack can also update an existing mirrored site, and resume interrupted -downloads. HTTrack is fully configurable, and has an integrated help system. - -

-
- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/shelldoc.html b/HelpHtml/shelldoc.html deleted file mode 100644 index 826a8c8..0000000 --- a/HelpHtml/shelldoc.html +++ /dev/null @@ -1,135 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Windows Shell Documentation

- -
- - - - - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/start.html b/HelpHtml/start.html deleted file mode 100644 index fb66ab3..0000000 --- a/HelpHtml/start.html +++ /dev/null @@ -1,16 +0,0 @@ - - - -HTTrack documentation - - - -HTTrack documentation - - diff --git a/HelpHtml/step.html b/HelpHtml/step.html deleted file mode 100644 index 41fbe3e..0000000 --- a/HelpHtml/step.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

How to start, Step-by-step

- -
- - - -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step1.html b/HelpHtml/step1.html deleted file mode 100644 index 58f9045..0000000 --- a/HelpHtml/step1.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Step 1 : Choose a project name and destination folder

- -
- -
    -
  1. Change the destination folder if necessary
  2. -
    It is more convenient to organize all mirrors in one directory, for example My Web Sites -
    If you already have made mirrors using HTTrack, be sure that you have selected the correct folder.
    -

    -

    -
  3. Select the project name: -
      -
    • Select a new project name
    • -
      This name is, for example, the theme of the mirrored sites, for example My Friend's Site -

      -

      - OR -

      -
    • Select an existing project for update/retry
    • -
      Directly select the existing project name in the popup list

      -
      -
    -

    -
  4. Click on the NEXT button
  5. -

    -
  6. Go to the next step...
  7. -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step2.html b/HelpHtml/step2.html deleted file mode 100644 index 8874762..0000000 --- a/HelpHtml/step2.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Step 2 : Fill the addresses

- -
- -
    -
  1. Select an action
  2. -
    The default action is Download web sites

    -


    - -
      -
    • Download web site(s)
    • -
      Will transfert the desired sites with default options -
    • Download web site(s) + questions
    • -
      Will transfert the desired sites with default options, and ask questions if any links are considered as potentially downloadable -
    • Get individual files
    • -
      Will only get the desired files you specify (for example, ZIP files), but will not spider through HTML files -
    • Download all sites in pages (multiple mirror)
    • -
      Will download all sites that appears in the site(s) selected. If you drag&drop your boormark file, this option lets you mirror all your favorite sites -
    • Test links in pages (bookmark test)
    • -
      Will test all links indicated. Useful to check a bookmark file -
    • * Continue interrupted download
    • -
      Use this option if a download has been interrupted (user interruption,crash..) -
    • * Update existing download
    • -
      Use this option to update an existing project. The engine will recheck the complete structure, checking each downloaded file for any updates on the web site -
    - -

    -
  3. Enter the site's addresses
  4. -
    You can click on the Add a URL button to add each address, or just type them in the box

    -
    -

    -
  5. You may define options by clicking on the Set options button
  6. -
    You can define filters or download parameters in the option panel
    -

    -
  7. You may also add a URL by clicking on the Add a URL button
  8. -
    This option lets you define additional parameters (login/password) for the URL, or capture a complex URL from your browser
    -

    -
  9. Click on the NEXT button
  10. -

    -
  11. Go to the next step...
  12. -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step3.html b/HelpHtml/step3.html deleted file mode 100644 index 2738368..0000000 --- a/HelpHtml/step3.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Step 3 : Ready to start

- -
- -
    -
  1. If you want, you may connect immediately or delay the mirror
  2. -
    If you don't select anything, HTTrack will assume that you are already connected to the Internet and that you want to start the mirror action now

    -

    -
  3. Click on the START button
  4. -
    -

    -
  5. Go to the next step...
  6. -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step4.html b/HelpHtml/step4.html deleted file mode 100644 index 45041af..0000000 --- a/HelpHtml/step4.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Step 4 : Wait!

- -
- -
    -
  1. Wait until the mirror is finishing
  2. -
    You can cancel at any time the mirror, or cancel files currently downloaded for any reasons (file too big, for example) -
    Options can be changed during the mirror: maximum number of connections, limits...

    -
    -

    -
  3. Go to the next step...
  4. -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step5.html b/HelpHtml/step5.html deleted file mode 100644 index 549474b..0000000 --- a/HelpHtml/step5.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Step 5 : Check the result

- -
- -
    -
  1. Check log files
  2. -
    You may check the error log file, which could contain useful information if errors have occurred

    -
    -
    -
  3. See the troubleshooting page
  4. -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9.html b/HelpHtml/step9.html deleted file mode 100644 index caf696c..0000000 --- a/HelpHtml/step9.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel

- -
- -
    -
  • Click on one of the option tab below to have more informations
  • -
    Each option tab is described, including remarks and examples -
- -
- -
- - - - - - - - - - - - - - - - -
- -

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt1.html b/HelpHtml/step9_opt1.html deleted file mode 100644 index d4ba2f6..0000000 --- a/HelpHtml/step9_opt1.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Links

- -
- -
    -
    -

    - -
  • Attempt to detect all links
  • -
    Asks the engine to try to detect all links in a page, even for unknown tags or unknown javascript code. This can generate bad requests or error in pages, but may be helpful to catch all desired links -
    Useful, for example, in pages with many javascript tricks -


    - -
  • Get non-html files related to a link
  • -
    This option allows you to catch all file references in captured HTML files, even external ones -
    For example, if an image in an Html page has its source on another web site, this image will be captured together. -


    - -
  • Test validity of all links
  • -
    This option forces the engine to test all links in spidered pages, i.e. to check if every link is valid or not by performing a request to the server. If an error occured, it is reported to the error log-file. -
    Useful to test all external links in a website -


    - -
  • Get HTML files first!
  • -
    With this option enabled, the engine will attempt to download all HTML files first, and - then download other (images) files. This can speed up the parsing process, by efficiently scanning - the HTML structure. -

    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt10.html b/HelpHtml/step9_opt10.html deleted file mode 100644 index 64f5440..0000000 --- a/HelpHtml/step9_opt10.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Expert Options

- -
- -
    -
    -

    - Advice: leave these options to default values! -

    - -
  • Use a cache for updates
  • -
    This option MUST be set if you want to update the site later, or if you want to have the opportunity to continue a crashed mirror -
    Disable it only if you want to save few kilobytes, but, err, again, it is not advised to disable this option! -


    - -
  • Primary filter (scan mode)
  • -
    Which files must be saved? -
    You can choose Html and/or Non-Html, or none (this last option is automatically set for scanning) -


    - -
  • Travel mode
  • -
    Set the default spidering direction -
    The default is to catch all files in the same level and lower levels, which is the most logical -


    - -
  • Global travel mode
  • -
    Set the default global spidering direction -
    The default is to stay on the same address if no specific authorization has been delivered -


    - -
  • Activate debug mode
  • -
    Enables some extra debug informations, like headers debugging and some interface informations (for debugging purpose only) -

    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - - diff --git a/HelpHtml/step9_opt11.html b/HelpHtml/step9_opt11.html deleted file mode 100644 index 46c12fc..0000000 --- a/HelpHtml/step9_opt11.html +++ /dev/null @@ -1,193 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : MIME Types

- -
- -
    -
    -

    -

    - -
  • MIME Types
  • -
    -An important new feature for some people. This panel tells the engine that if a link is encountered, with a -specific type (.cgi, .asp, or .php3 for example), it MUST assume that this link has always the same MIME type, for example -the "text/html" MIME type. -This is VERY important to speed up many mirrors. -Some big HTML files which have many links of unknown type embedded, such as ".asp", cause the engine to test all links, and this -slows down the parser. -
    -
    -In this case, you can tell HTTrack: ".asp pages are in fact HTML pages" -
    -This is possible, using: -
    -
    -File type: asp MIME identity: text/html -
    -
    -You can declare multiple definitions, or declare multiple types separed by ",", like in: -
    -File type: asp,php,php3 MIME identity: text/html -
    -
    -Most important MIME types are: -
    - - - - - - - - - -
    text/htmlHtml files, parsed by HTTrack
    image/gifGIF files
    image/jpegJpeg files
    image/pngPNG files
    application/x-zip.zip files
    application/x-mp3.mp3 files
    application/x-foo.foo files
    application/octet-streamUnknown files
    - -
    - -You can rename files on a mirror. If you KNOW that all "dat" files are in fact "zip" files renamed into "dat", you can -tell httrack:
    - -File type: dat MIME identity: application/x-zip - -

    - -You can also "name" a file type, with its original MIME type, if this type is not known by HTTrack. This will avoid a test -when the link will be reached:
    - -File type: foo MIME identity: application/octet-stream - -

    - -In this case, HTTrack won't check the type, because it has learned that "foo" is a known type, or MIME type -"application/octet-stream". Therefore, it will let untouched the "foo" type. - -


    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt2.html b/HelpHtml/step9_opt2.html deleted file mode 100644 index 9afb2d0..0000000 --- a/HelpHtml/step9_opt2.html +++ /dev/null @@ -1,192 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Limits

- -
- -
    -
    -

    - -
  • Maximum mirror depth
  • -
    Define how deep will the engine seek in the site - A depth of 3 means that you will catch all pages you have indicated, plus all that can be accessed clicking twice on any link -
    - Note: This option is not filled by default, so the depth is infinite. But because the engine will stay on the site you indicated, only the desired sites will be mirrored, and not all the web! -


    - -
  • Maximum external depth
  • -
    Define how deep will the engine seek in external sites, or on addresses that were forbidden.
    - Normally, HTTrack will not go on external sites by default (except if authorized by filters), - and will avoid addresses forbidden by filters. You can override this behaviour, and - tell the engine to catch N levels of "external" sites.
    - Note: Use this option with great care, as it is overriding all other options (filters and default engine limiter) -
    - Note: This option is not filled by default, so the depth is equal to zero. -


    - -
  • Maximum size of an HTML file
  • -
    Define the biggest Html file the engine is allowed to catch.
    - This option allows you to avoid big files if you do not want to download them. -


    - -
  • Max size of a non-HTML file
  • -
    Define the biggest non-html file (image, ZIP file..) the engine is allowed to catch.
    - This option allows you to avoid big files if you do not want to download them. -


    - -
  • Site size limit
  • -
    This option limits the total amount of bytes that can be downloaded in the current mirror -

    - -
  • Pause after downloading..
  • -
    This option lets the engine do a pause every time it has retrieved a specific amount of bytes -
    Useful if you are mirroring a site bigger than the available space: you can then backup and erase the downloaded files during the pause -


    - -
  • Max time overall
  • -
    This option limits the total amount of time that can be spent on the current mirror -

    - -
  • Max transfer rate
  • -
    This option limits the transfer rate on the current mirror -
    Useful if you do not want HTTrack to monopolize the bandwidth! -


    - -
  • Max connections / seconds
  • -
    This option limits the number of connections per second for the current mirror -
    Useful to limit server load. -
    The default is 10, but you can disable it with a value of 0 - THIS IS NOT ADVISED UNLESS YOU KNOW WHAT YOU ARE DOING (risks of server overload) -


    - -
  • Maximum number of links
  • -
    Maximum number of links that can be analyzed, that is, either downloaded, or not downloaded. - Do not set a too low limit for that, because once the limit is reached, the engine will stop immediately. -
    Do not set a too high limit, too, because it will take some memory.. 100,000 links (default) is generally enough. -


    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt3.html b/HelpHtml/step9_opt3.html deleted file mode 100644 index 7ca208f..0000000 --- a/HelpHtml/step9_opt3.html +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Flow Control

- -
- -
    -
    -

    - -
  • Number of connections
  • -
    Define the number of simultaneous connections that can be initiated by the engine. -
    It is recommended to limit this number to 1 or 2 if you are mirroring big files on a site, more on standard sites (8 is recommended, up to 42 if it is supported by the system) -


    - -
  • TimeOut
  • -
    Define what time the engine has to wait if no response if given by a server. -
    120 seconds is recommended (less of fast pipes, more if you connection is sloppy) -
    You can optionally skip all links from a host that has generated a timeout. Warning: is this checkbox is selected, a timeout will eliminate all links from the origin server -


    - -
  • Retries
  • -
    Number of retries if a non-fatal error occured (timeout, for example) -
    Note that this will not solve fatal errors such as "Not Found" pages and so on! -


    - -
  • Min Transfer Rate
  • -
    Minimum transfer rate tolerated on a site. If the transfer rate if slower that the defined value, then the link is skipped -
    You can optionally skip all links from a host that has generated a "too slow" error. Warning: is this checkbox is selected, a "too slow" errors will eliminate all links from the origin server -


    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt4.html b/HelpHtml/step9_opt4.html deleted file mode 100644 index b6c666b..0000000 --- a/HelpHtml/step9_opt4.html +++ /dev/null @@ -1,187 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Scan Rules

- -
- - - -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt5.html b/HelpHtml/step9_opt5.html deleted file mode 100644 index 8aa6a8a..0000000 --- a/HelpHtml/step9_opt5.html +++ /dev/null @@ -1,176 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Build

- -
- -
    -
    -

    - -
  • Local Structure Type
  • -
    Lets you define the local structure of the site. -
    The default is "site structure": you will get the same folder/files names and structure as the original -
    You can, however, put all images in one single folder, html in another and so on.. -


    - -
  • DOS Names
  • -
    Force the engine to generate DOS names (8 characters for the name, 3 for the type) -

    - -
  • ISO9660 Names
  • -
    Force the engine to generate ISO9660-compatible names for storing on medias such as CDROM or DVDROM -

    - -
  • No error pages
  • -
    Do not generate error pages (if a 404 error occured, for example) -
    If a page is missing on the remote site, there will not be any warning on the local site -


    - -
  • No external pages
  • -
    Rewrite all external links (links that needs an Internet connection) so that there can be a warning page before ("Warning, you need to be online to go to this link..") -
    Useful if you want to separate the local and online realm -


    - -
  • Hide passwords
  • -
    Do not include username and password for protected sites in the code, when a link will not be caught. - This allow to remain the access data private. -

    - -
  • Hide query strings
  • -
    Do not include query strings for local links. - Query strings (?foo=45&bar=67) are generally not necessary for local (file://) files, but - query strings can be useful to show several information (example: page-4.html?index=History). - However, some basic browsers may not understand that (wireless browsers, especially), and - hiding query strings might be a good idea in this case. -

    - -
  • Do not purge old files
  • -
    Do not purge, after an update, the local files that no longer exist on the remote site, or that have been skipped -

    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt6.html b/HelpHtml/step9_opt6.html deleted file mode 100644 index b929c4b..0000000 --- a/HelpHtml/step9_opt6.html +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Spider

- -
- -
    -
    -

    - -
  • Accept cookies
  • -
    Accept cookies generated by the remote server -
    If you do not accept cookies, some "session-generated" pages will not be retrieved -


    - -
  • Check document type
  • -
    Define when the engine has to check document type -
    The engine must know the document type, to rewrite the file types. For example, if a link called /cgi-bin/gen_image.cgi generates a gif image, the generated file will not be called "gen_image.cgi" but "gen_image.gif" -
    Avoid "never", because the local mirror could be bogus -


    - -
  • Parse java files
  • -
    Must the engine parse .java files (java classes) to seek included filenames? -
    It is checked by default -


    - -
  • Spider
  • -
    Must the engine follow remote robots.txt rules when they exist? -
    The default is "follow" -


    - -
  • Update hack
  • -
    Attempt to limit transfers by wrapping known bogus responses from servers. - For example, pages with same size will be considered as "up to date", even if the timestamp seems - different. This can be useful for many dynamically generated pages, but this can also cause - not-updated pages in rare cases. -

    - -
  • Tolerant requests
  • -
    Tolerate wrong file size, and make requests compliant with old servers -
    It is unchecked by default, because this option can cause files to become bogus -


    - -
  • Force old HTTP/1.0 requests
  • -
    This option forces the engine to use HTTP/1.0 requests, and avoid HEAD requests. -
    Useful for some sites with old server versions, or with many dynamically generated pages. -


    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt7.html b/HelpHtml/step9_opt7.html deleted file mode 100644 index 911801c..0000000 --- a/HelpHtml/step9_opt7.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Proxy

- -
- -
    -
    -

    - -
  • Proxy
  • -
    You can enter manually the proxy name and port (enter the name in the first field, the port in the second field) -

    - -
  • Use proxy for FTP transfers
  • -
    The engine can use default HTTP proxy for all ftp (ftp://) transfers. Most proxies allow this, and if you are behind - a firewall, this option will allow you to easily catch all ftp links. Besides, ftp transfers managed by the proxy are more reliable - than the engine's default FTP client. -
    This option is checked by default -


    - -
  • Configure
  • -
    Click on this button to configure the proxy. -
    If the proxy needs authentication you can define the login username/password -
    -

    -
    -

    -
    -
    -

    - -
  • Hide password
  • -
    Use it if you do not want to display the password (hides the proxy name) -

    -
- -



-

Back to Home

- - - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt8.html b/HelpHtml/step9_opt8.html deleted file mode 100644 index c241650..0000000 --- a/HelpHtml/step9_opt8.html +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Browser ID

- -
- -
    -
    -

    - -
  • Browser "Identity"
  • -
    Enter here the name of the engine, as it will be seen by Web-servers -
    For example, entering "Mozilla/4.5 (compatible; MSIE 4.01; Windows 98)" will disguise HTTrack into a standard MSIE4 browser -
    This field is for statistical purpose, and you can enter whatever you want, a browser name that does not exist or even your grandma's name -
    However, beware that several sites may deliver a different content whether the browser is called "Netscape" or "Explorer".. some elitist ones will even refuse to deliver anything depending on the browser name. This case is rare, fortunately. -


    - -
  • HTML Footer
  • -
    Enter here the optionnal text that will be included as a comment in each HTML file to make archiving easier -
    The string entered is generally an HTML comment (<!-- HTML comment -->) with optionnal %s, which will be transformed into a specific string information: -
    %s #1 : host name (for example, www.someweb.com) -
    %s #2 : file name (for example, /index.html) -
    %s #3 : date of the mirror -
    Example: <!-- Page mirrored from %s, file %s. Archive date: %s --> -
    Note: You can select (none), in this case no comments will be added to the pages. However, this is NOT advised as you may want to know in the future where the page has been taken, when/why.. -


    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/HelpHtml/step9_opt9.html b/HelpHtml/step9_opt9.html deleted file mode 100644 index 16a6d77..0000000 --- a/HelpHtml/step9_opt9.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - - - - HTTrack Website Copier - Offline Browser - - - - - - - - - -
HTTrack Website Copier
- - - - -
Open Source offline browser
- - - - -
- - - - -
- - - - -
- - -

Option panel : Log files, Index, Cache

- -
- -
    -
    -

    - -
  • Force to store all files in cache
  • -
    Force to store all files in the cache, even gif files, zip files and so on.. -
    Without this option, the engine will only save in cache html files for updating/continue purpose. -
    It can be useful, however, to keep all files in cache if you want in the future to change the site structure -
    Warning! This option will appreciably inflate the cache that will become as big as the mirror itself! -


    - -
  • Do not re-download locally erased files
  • -
    This option prevents HTTrack from re-asking a file that exists locally with null size, or that has been erased by the user -
    (If the user erased the file, this option will create a null-file to prevent the engine to catch the file next time) -
    Useful if you are erasing progressively large files on the local mirror and do not want to reload them! -


    - -
  • Create Log files
  • -
    Create log file where informations, error and warnings about the current mirror will be saved -
    If you do not generate log files, you will not be able to know what errors occured! -
    It is strongly advised to leave this option checked -
    Note: You can define the debug-level of the log-files. Default is "normal" -


    - -
  • Make an index
  • -
    Generate an index.html on the top of the directory. Very useful. -
    -

    - -
  • Make a word database
  • -
    Generate an index.txt database on the top of the directory. Very useful for linguistic analysis, this feature - will allow you to list all words of all mirrored pages in the current project.
    - With this index file, you will be able to list which words were detected, and where. -
    -


    -
- -



-

Back to Home

- - -
-
-
- - - - - -
- - - - - - diff --git a/INSTALL b/INSTALL index f863ec7..54caf7c 100644 --- a/INSTALL +++ b/INSTALL @@ -1,36 +1,229 @@ -HTTrack Website Copier, Offline Browser for Windows and Unix -Copyright (C) Xavier Roche and other contributors - -* How to install (Linux/Unix) : - tar xvfz httrack-xxxx.tar.gz - cd httrack-xxxx - cd src - ./configure - make - make install - -you can also use something like: - ./configure --prefix=/usr --etcdir=/etc --libdir=/usr/lib --bindir=/usr/bin --make --install - -or for static mode: - ./configure --static --prefix=/usr --etcdir=/etc --libdir=/usr/lib --bindir=/usr/bin --make --install - -If problems occurs, try - ./configure --help -and follow the instructions - -* How to install (Windows with installshield) : - extract all files from the ZIP file and launch 'setup.exe' - after installing, launch WinHTTrack.exe - -* How to install (Windows without installshield) : - unzip all files in an empty folder - copy DLL's (if necessary) from dll/ in your windows dll directory (example: C:\WINNT\system32) - launch WinHTTrack.exe - - -See other readme and doc files for more information! - -Have fun with HTTrack Website Copier! -The authors - +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software +Foundation, Inc. + + This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + + These are generic installation instructions. + + 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 only 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. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. 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. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. 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. + +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=c89 CFLAGS=-O2 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 must use a version of `make' that +supports the `VPATH' variable, such as 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 `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have 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. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' 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. + + 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'. + +Optional Features +================= + + 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. + +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 `--target=TYPE' option 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 + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--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. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/Makefile b/Makefile deleted file mode 100644 index c10e939..0000000 --- a/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -all : - @echo "please type in:" - @echo "cd src" - @echo "./configure" - @echo "make" - @echo "make install" - @echo "" - @echo "(see INSTALL file to know how-to-install)" - diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..f03f1d3 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,6 @@ + +SUBDIRS = src man libtest templates lang html + +EXTRA_DIST = gpl.txt gpl-fr.txt license.txt greetings.txt history.txt \ + httrack-doc.html lang.def + diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..65f82d6 --- /dev/null +++ b/Makefile.in @@ -0,0 +1,543 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = . + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_CFLAGS = @DEFAULT_CFLAGS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LFS_FLAG = @LFS_FLAG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +STRIP = @STRIP@ +THREADS_CFLAGS = @THREADS_CFLAGS@ +THREADS_LIBS = @THREADS_LIBS@ +V6_FLAG = @V6_FLAG@ +VERSION = @VERSION@ +VERSION_INFO = @VERSION_INFO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +SUBDIRS = src man libtest templates lang html + +EXTRA_DIST = gpl.txt gpl-fr.txt license.txt greetings.txt history.txt \ + httrack-doc.html lang.def + +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \ + ps-recursive install-info-recursive uninstall-info-recursive \ + all-recursive install-data-recursive install-exec-recursive \ + installdirs-recursive install-recursive uninstall-recursive \ + check-recursive installcheck-recursive +DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \ + Makefile.in NEWS aclocal.m4 config.guess config.h.in config.sub \ + configure configure.in depcomp install-sh ltmain.sh missing \ + mkinstalldirs +DIST_SUBDIRS = $(SUBDIRS) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: + +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe) + +$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck +$(srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) + cd $(srcdir) && $(AUTOCONF) + +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) 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: @MAINTAINER_MODE_TRUE@ $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && $(AUTOHEADER) + touch $(srcdir)/config.h.in + +distclean-hdr: + -rm -f config.h stamp-h1 + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +# 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): + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +mostlyclean-recursive clean-recursive distclean-recursive \ +maintainer-clean-recursive: + @set fnord $$MAKEFLAGS; amf=$$2; \ + 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) \ + || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \ + 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 + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -f $$subdir/TAGS && tags="$$tags -i $$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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + 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; } \ + END { 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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = . +distdir = $(PACKAGE)-$(VERSION) + +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } + +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print + +distdir: $(DISTFILES) + $(am__remove_distdir) + mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d $(distdir)/$$subdir \ + || mkdir $(distdir)/$$subdir \ + || exit 1; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" \ + distdir=../$(distdir)/$$subdir \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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 $(SHELL) $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + $(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist dist-all: distdir + $(AMTAR) chof - $(distdir) | 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 + $(am__remove_distdir) + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf - + 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` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && $(mkinstalldirs) $$dc_destdir \ + && 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" \ + && ({ $(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-gzip \ + && rm -f $(distdir).tar.gz \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @echo "$(distdir).tar.gz is ready for distribution" | \ + sed 'h;s/./=/g;p;x;p;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 config.h +installdirs: installdirs-recursive +installdirs-am: + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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) +distclean-am: clean-am distclean-generic distclean-hdr distclean-libtool \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-exec-am: + +install-info: install-info-recursive + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf autom4te.cache +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-info-am + +uninstall-info: uninstall-info-recursive + +.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \ + clean-generic clean-libtool clean-recursive ctags \ + ctags-recursive dist dist-all dist-gzip distcheck distclean \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-recursive distclean-tags distcleancheck distdir \ + distuninstallcheck dvi dvi-am dvi-recursive info info-am \ + info-recursive install install-am install-data install-data-am \ + install-data-recursive install-exec install-exec-am \ + install-exec-recursive install-info install-info-am \ + install-info-recursive install-man install-recursive \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am installdirs-recursive maintainer-clean \ + maintainer-clean-generic maintainer-clean-recursive mostlyclean \ + mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ + pdf pdf-am pdf-recursive ps ps-am ps-recursive tags \ + tags-recursive uninstall uninstall-am uninstall-info-am \ + uninstall-info-recursive uninstall-recursive + +# 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/NEWS b/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/README b/README index 2f2594f..c8f121f 100644 --- a/README +++ b/README @@ -6,7 +6,7 @@ Welcome to HTTrack Website Copier! Information: -The folder HelpHtml contains the documentation +The folder html/ contains the documentation You might want to read these files, especially for installing HTTrack: - See INSTALL file for installation information (NO WARRANTY) - See license.txt file for license information @@ -31,12 +31,12 @@ http://www.fsf.org/help/donate.html Engine limits: -These are the principals limits of HTTrack for that moment. Note that most of them are generally shared among all offline browsers, due to technological limits. +These are the principals limits of HTTrack for that moment. Note that we did not heard about any other utility +that would have solved them. - Several scripts generating complex filenames may not find them (ex: img.src='image'+a+Mobj.dst+'.gif') - Some java classes may not find some files on them (class included) - Cgi-bin links may not work properly in some cases (parameters needed). To avoid them: use filters like -*cgi-bin* -- Flash files are not yet parsed Advanced options: diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..32eab61 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,4460 @@ +# generated automatically by aclocal 1.7 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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. + +# Like AC_CONFIG_HEADER, but automatically create stamp file. -*- Autoconf -*- + +# Copyright 1996, 1997, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_PREREQ([2.52]) + +# serial 6 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# 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. + +# Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 8 + +# 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... + + +AC_PREREQ([2.54]) + +# Autoconf 2.50 wants to disallow AM_ names. We explicitly allow +# the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl + +# 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_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl + AC_REQUIRE([AC_PROG_INSTALL])dnl +# test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +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 + 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) +AM_MISSING_PROG(AMTAR, tar) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +# 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 + +_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 +]) +]) + + +# 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], +[_am_stamp_count=`expr ${_am_stamp_count-0} + 1` +echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) + +# Copyright 2002 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., 59 Temple Place - Suite 330, Boston, MA + +# 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. +AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.7"]) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION so it can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], + [AM_AUTOMAKE_VERSION([1.7])]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# _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], +[AC_FOREACH([_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. +# + +# Copyright 1996, 1997, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# 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)]) + +# -*- Autoconf -*- + + +# Copyright 1997, 1999, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 3 + +# 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 +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 +]) + +# AM_AUX_DIR_EXPAND + +# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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. + +# Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50]) + +AC_DEFUN([AM_AUX_DIR_EXPAND], [ +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. + +# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"$am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# AM_PROG_INSTALL_STRIP + +# Copyright 2001 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# 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="\${SHELL} \$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# serial 4 -*- Autoconf -*- + +# Copyright 1999, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + + +# 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", "GCJ", or "OBJC". +# 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 + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$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'. + 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 + + 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 + for depmode in $am_compiler_list; do + # 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. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + 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 + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_$1_dependencies_compiler_type=$depmode + break + 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], +[rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null +AC_SUBST([DEPDIR]) +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking Speeds up one-time builds + --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]) +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright 1999, 2000, 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +#serial 2 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; 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. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # 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 -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //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"]) +]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +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 +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright 1997, 2000, 2001 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 5 + +AC_PREREQ(2.52) + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE]) +AC_SUBST([$1_FALSE]) +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])]) + +# Add --enable-maintainer-mode option to configure. +# From Jim Meyering + +# Copyright 1996, 1998, 2000, 2001, 2002 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# serial 2 + +AC_DEFUN([AM_MAINTAINER_MODE], +[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode is disabled by default + AC_ARG_ENABLE(maintainer-mode, +[ --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer], + USE_MAINTAINER_MODE=$enableval, + USE_MAINTAINER_MODE=no) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST(MAINT)dnl +] +) + +AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) + +# libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- + +# serial 46 AC_PROG_LIBTOOL + +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +]) + +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.13)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl +AC_REQUIRE([LT_AC_PROG_SED])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl + +_LT_AC_PROG_ECHO_BACKSLASH +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +ifdef([AC_PROVIDE_AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE(libtool-lock, + [ --disable-libtool-lock avoid locking (might break parallel builds)]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + 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 + 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_SAVE + AC_LANG_C + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_RESTORE]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + +ifdef([AC_PROVIDE_AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one + AC_CACHE_CHECK([if libtool should supply DllMain function], lt_cv_need_dllmain, + [AC_TRY_LINK([], + [extern int __attribute__((__stdcall__)) DllMain(void*, int, void*); + DllMain (0, 0, 0);], + [lt_cv_need_dllmain=no],[lt_cv_need_dllmain=yes])]) + + case $host/$CC in + *-*-cygwin*/gcc*-mno-cygwin*|*-*-mingw*) + # old mingw systems require "-dll" to link a DLL, while more recent ones + # require "-mdll" + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -mdll" + AC_CACHE_CHECK([how to link DLLs], lt_cv_cc_dll_switch, + [AC_TRY_LINK([], [], [lt_cv_cc_dll_switch=-mdll],[lt_cv_cc_dll_switch=-dll])]) + CFLAGS="$SAVE_CFLAGS" ;; + *-*-cygwin* | *-*-pw32*) + # cygwin systems need to pass --dll to the linker, and not link + # crt.o which will require a WinMain@16 definition. + lt_cv_cc_dll_switch="-Wl,--dll -nostartfiles" ;; + esac + ;; + ]) +esac + +_LT_AC_LTCONFIG_HACK + +]) + +# AC_LIBTOOL_HEADER_ASSERT +# ------------------------ +AC_DEFUN([AC_LIBTOOL_HEADER_ASSERT], +[AC_CACHE_CHECK([whether $CC supports assert without backlinking], + [lt_cv_func_assert_works], + [case $host in + *-*-solaris*) + if test "$GCC" = yes && test "$with_gnu_ld" != yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) lt_cv_func_assert_works=no ;; + *) lt_cv_func_assert_works=yes ;; + esac + fi + ;; + esac]) + +if test "x$lt_cv_func_assert_works" = xyes; then + AC_CHECK_HEADERS(assert.h) +fi +])# AC_LIBTOOL_HEADER_ASSERT + +# _LT_AC_CHECK_DLFCN +# -------------------- +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h) +])# _LT_AC_CHECK_DLFCN + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [dnl + +# 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]]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +solaris* | sysv5*) + symcode='[[BDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[[ABCDGISTW]]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext < $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 egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[[]] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if AC_TRY_EVAL(ac_link) && test -s conftest; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AC_FD_CC + fi + else + echo "cannot find nm_test_var in $nlist" >&AC_FD_CC + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AC_FD_CC + fi + else + echo "$progname: failed program was:" >&AC_FD_CC + cat conftest.$ac_ext >&5 + fi + rm -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + +# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR +# --------------------------------- +AC_DEFUN([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR], +[# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi +])# _LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +AC_DIVERT_POP +])# _LT_AC_PROG_ECHO_BACKSLASH + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ------------------------------------------------------------------ +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[if test "$cross_compiling" = yes; then : + [$4] +else + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#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 + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=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; + /* dlclose (self); */ + } + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_unknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + +# AC_LIBTOOL_DLOPEN_SELF +# ------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[if test "x$enable_dlopen" != xyes; 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 + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + 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="-dld"], + [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="-dld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + 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_AC_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 "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_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 +])# AC_LIBTOOL_DLOPEN_SELF + +AC_DEFUN([_LT_AC_LTCONFIG_HACK], +[AC_REQUIRE([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])dnl +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +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' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +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 "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="[$]2" + +AC_MSG_CHECKING([for objdir]) +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +AC_MSG_RESULT($objdir) + + +AC_ARG_WITH(pic, +[ --with-pic try to use only PIC/non-PIC objects [default=use both]], +pic_mode="$withval", pic_mode=default) +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +AC_MSG_CHECKING([for $compiler option to produce PIC]) +AC_CACHE_VAL(lt_cv_prog_cc_pic, +[ lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # 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_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # 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_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6* | nonstopux*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # 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_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi +]) +if test -z "$lt_cv_prog_cc_pic"; then + AC_MSG_RESULT([none]) +else + AC_MSG_RESULT([$lt_cv_prog_cc_pic]) + + # Check to make sure the pic_flag actually works. + AC_MSG_CHECKING([if $compiler PIC flag $lt_cv_prog_cc_pic works]) + AC_CACHE_VAL(lt_cv_prog_cc_pic_works, [dnl + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + AC_TRY_COMPILE([], [], [dnl + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + ], [dnl + lt_cv_prog_cc_pic_works=no + ]) + CFLAGS="$save_CFLAGS" + ]) + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + AC_MSG_RESULT([$lt_cv_prog_cc_pic_works]) +fi + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + AC_MSG_WARN([\`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries]) + if echo "$old_CC $old_CFLAGS " | egrep -e "[[ ]]$lt_cv_prog_cc_shlib[[ ]]" >/dev/null; then : + else + AC_MSG_WARN([add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure]) + lt_cv_prog_cc_can_build_shared=no + fi +fi + +AC_MSG_CHECKING([if $compiler static flag $lt_cv_prog_cc_static works]) +AC_CACHE_VAL([lt_cv_prog_cc_static_works], [dnl + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + AC_TRY_LINK([], [], [lt_cv_prog_cc_static_works=yes]) + LDFLAGS="$save_LDFLAGS" +]) + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +AC_MSG_RESULT([$lt_cv_prog_cc_static_works]) + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" + + +# Check to see if options -o and -c are simultaneously supported by compiler +AC_MSG_CHECKING([if $compiler supports -c -o file.$ac_objext]) +AC_CACHE_VAL([lt_cv_compiler_c_o], [ +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:__oline__: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&AC_FD_CC + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null +]) +compiler_c_o=$lt_cv_compiler_c_o +AC_MSG_RESULT([$compiler_c_o]) + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + AC_MSG_CHECKING([if $compiler supports -c -o file.lo]) + AC_CACHE_VAL([lt_cv_compiler_o_lo], [ + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + ]) + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + ]) + compiler_o_lo=$lt_cv_compiler_o_lo + AC_MSG_RESULT([$compiler_o_lo]) +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; 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 "$hard_links" = no; 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 + +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + AC_MSG_CHECKING([if $compiler supports -fno-rtti -fno-exceptions]) + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + AC_TRY_COMPILE([], [int some_variable = 0;], [dnl + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + ]) + CFLAGS="$save_CFLAGS" + AC_MSG_RESULT([$compiler_rtti_exceptions]) + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi + +# See if the linker supports building shared libraries. +AC_MSG_CHECKING([whether the linker ($LD) supports shared libraries]) + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# 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 egrep regular expression 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_" +# 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. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # 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 "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + 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 + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': 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*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [[0-9]]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \[$]# in + 2) echo " \[$]2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + 4) echo " \[$]2 \[$]3 \[$]4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; + *) echo " \[$]2 @ \$_lt_hint \[$]3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + 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 -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&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. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + 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 + ;; + + 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 | egrep ': supported targets:.* elf' > /dev/null; then + 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 + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + 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 "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; 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 + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + 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. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + 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' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; 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' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; 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 ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + 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 + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # 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. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''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' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[[012]]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + archive_cmds='$nonopt $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=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*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + 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 + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; 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" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${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='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + 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 + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # , C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [[12]].*) + cat <&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; 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' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + 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.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +AC_MSG_RESULT([$ld_shlibs]) +test "$ld_shlibs" = no && can_build_shared=no + +# Check hardcoding attributes. +AC_MSG_CHECKING([how to hardcode library paths into programs]) +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # 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 "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; 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 +AC_MSG_RESULT([$hardcode_action]) + +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 + AC_MSG_RESULT([no]) +fi + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +# PORTME Fill in your ld.so characteristics +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +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" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + 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 + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # 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}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # 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}.so$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + 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=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $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' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$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" + export_dynamic_flag_spec=-rdynamic + # 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*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[[.]]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # 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 + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + 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. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) version_type=irix ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") 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}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # 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 + + # 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}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$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 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + 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" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + 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 + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + 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 "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +AC_LIBTOOL_DLOPEN_SELF + +if test "$enable_shared" = yes && test "$GCC" = yes; 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. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + AC_CACHE_VAL([lt_cv_archive_cmds_need_lc], + [$rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile); then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if AC_TRY_EVAL(archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi]) + AC_MSG_RESULT([$lt_cv_archive_cmds_need_lc]) + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} + +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS SED \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 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 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="${SED} -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# 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 + +# 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 + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# 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 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# 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 + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# 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 and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# 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 + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# 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.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# 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 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# 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 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_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 + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# 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 "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# 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. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi + +])# _LT_AC_LTCONFIG_HACK + +# AC_LIBTOOL_DLOPEN - enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])]) + +# AC_LIBTOOL_WIN32_DLL - declare package support for building win32 dll's +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_BEFORE([$0], [AC_LIBTOOL_SETUP])]) + +# AC_ENABLE_SHARED - implement the --enable-shared flag +# Usage: AC_ENABLE_SHARED[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(shared, +changequote(<<, >>)dnl +<< --enable-shared[=PKGS] build shared libraries [default=>>AC_ENABLE_SHARED_DEFAULT], +changequote([, ])dnl +[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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_shared=AC_ENABLE_SHARED_DEFAULT)dnl +]) + +# AC_DISABLE_SHARED - set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no)]) + +# AC_ENABLE_STATIC - implement the --enable-static flag +# Usage: AC_ENABLE_STATIC[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(static, +changequote(<<, >>)dnl +<< --enable-static[=PKGS] build static libraries [default=>>AC_ENABLE_STATIC_DEFAULT], +changequote([, ])dnl +[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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_static=AC_ENABLE_STATIC_DEFAULT)dnl +]) + +# AC_DISABLE_STATIC - set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no)]) + + +# AC_ENABLE_FAST_INSTALL - implement the --enable-fast-install flag +# Usage: AC_ENABLE_FAST_INSTALL[(DEFAULT)] +# Where DEFAULT is either `yes' or `no'. If omitted, it defaults to +# `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE(fast-install, +changequote(<<, >>)dnl +<< --enable-fast-install[=PKGS] optimize for fast installation [default=>>AC_ENABLE_FAST_INSTALL_DEFAULT], +changequote([, ])dnl +[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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac], +enable_fast_install=AC_ENABLE_FAST_INSTALL_DEFAULT)dnl +]) + +# AC_DISABLE_FAST_INSTALL - set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no)]) + +# AC_LIBTOOL_PICMODE - implement the --with-pic flag +# Usage: AC_LIBTOOL_PICMODE[(MODE)] +# Where MODE is either `yes' or `no'. If omitted, it defaults to +# `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default)]) + + +# AC_PATH_TOOL_PREFIX - find a file program which can recognise shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[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_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" +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="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + 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 <&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 + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_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 +]) + + +# AC_PATH_MAGIC - find a file program which can recognise a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_REQUIRE([AC_CHECK_TOOL_PREFIX])dnl +AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin:$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin:$PATH) + else + MAGIC_CMD=: + fi +fi +]) + + +# AC_PROG_LD - find the path to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH(gnu-ld, +[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], +test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by GCC]) + 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. + [[\\/]]* | [[A-Za-z]]:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the path 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 "$with_gnu_ld" = yes; 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 + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + 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 GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi]) +LD="$lt_cv_path_LD" +if test -n "$LD"; then + AC_MSG_RESULT($LD) +else + AC_MSG_RESULT(no) +fi +test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) +AC_PROG_LD_GNU +]) + +# AC_PROG_LD_GNU - +AC_DEFUN([AC_PROG_LD_GNU], +[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], lt_cv_prog_gnu_ld, +[# I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi]) +with_gnu_ld=$lt_cv_prog_gnu_ld +]) + +# AC_PROG_LD_RELOAD_FLAG - find reload flag for linker +# -- PORTME Some linkers may need a different reload flag. +AC_DEFUN([AC_PROG_LD_RELOAD_FLAG], +[AC_CACHE_CHECK([for $LD option to reload object files], lt_cv_ld_reload_flag, +[lt_cv_ld_reload_flag='-r']) +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" +]) + +# AC_DEPLIBS_CHECK_METHOD - how to check for library dependencies +# -- PORTME fill in with the dynamic library characteristics +AC_DEFUN([AC_DEPLIBS_CHECK_METHOD], +[AC_CACHE_CHECK([how to recognise 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 +# which responds to the $file_magic_cmd with a given egrep 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 +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + 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* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[[012]]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + 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)/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 + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + 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_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[[1234]] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so\.[[0-9]]+\.[[0-9]]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/\.]]+\.so$' + 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 + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[[78]]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + esac + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +]) + + +# AC_PROG_NM - find the path to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_REQUIRE([_LT_AC_LIBTOOL_SYS_PATH_SEPARATOR])dnl +AC_MSG_CHECKING([for BSD-compatible nm]) +AC_CACHE_VAL(lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}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 + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + 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 + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +AC_MSG_RESULT([$NM]) +]) + +# AC_CHECK_LIBM - check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32*) + # These system don't have libm + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, main, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, main, LIBM="-lm") + ;; +esac +]) + +# AC_LIBLTDL_CONVENIENCE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl convenience library and LTDLINCL to the include flags for +# the libltdl header and adds --enable-ltdl-convenience to the +# configure arguments. Note that LIBLTDL and LTDLINCL are not +# AC_SUBSTed, nor is AC_CONFIG_SUBDIRS called. If DIR is not +# provided, it is assumed to be `libltdl'. LIBLTDL will be prefixed +# with '${top_builddir}/' and LTDLINCL will be prefixed with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +]) + +# AC_LIBLTDL_INSTALLABLE[(dir)] - sets LIBLTDL to the link flags for +# the libltdl installable library and LTDLINCL to the include flags for +# the libltdl header and adds --enable-ltdl-install to the configure +# arguments. Note that LIBLTDL and LTDLINCL are not AC_SUBSTed, nor is +# AC_CONFIG_SUBDIRS called. If DIR is not provided and an installed +# libltdl is not found, it is assumed to be `libltdl'. LIBLTDL will +# be prefixed with '${top_builddir}/' and LTDLINCL will be prefixed +# with '${top_srcdir}/' (note the single quotes!). If your package is +# not flat and you're not using automake, define top_builddir and +# top_srcdir appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, main, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +]) + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +# 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. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_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_executable_p="test -f" +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 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" + fi + done + done +done + + # Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/sed$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + _max=0 + _count=0 + # Add /usr/xpg4/bin/sed as it is typically found on Solaris + # along with /bin/sed that truncates output. + for _sed in $_sed_list /usr/xpg4/bin/sed; do + test ! -f ${_sed} && break + cat /dev/null > "$tmp/sed.in" + _count=0 + echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" + # Check for GNU sed and select it if it is found. + if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then + lt_cv_path_SED=${_sed} + break; + fi + while true; do + cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" + mv "$tmp/sed.tmp" "$tmp/sed.in" + cp "$tmp/sed.in" "$tmp/sed.nl" + echo >>"$tmp/sed.nl" + ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break + cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break + # 40000 chars as input seems more than enough + test $_count -gt 10 && break + _count=`expr $_count + 1` + if test $_count -gt $_max; then + _max=$_count + lt_cv_path_SED=$_sed + fi + done + done + rm -rf "$tmp" +]) +if test "X$SED" != "X"; then + lt_cv_path_SED=$SED +else + SED=$lt_cv_path_SED +fi +AC_MSG_RESULT([$SED]) +]) + diff --git a/config.guess b/config.guess new file mode 100755 index 0000000..9e55e1a --- /dev/null +++ b/config.guess @@ -0,0 +1,1391 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-05-19' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted 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. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +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 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { 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 ;' + +# 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 ;; + *) 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 __ELF__ >/dev/null + 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 0 ;; + amiga:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + arc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + hp300:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mac68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + macppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme68k:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvme88k:OpenBSD:*:*) + echo m88k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + mvmeppc:OpenBSD:*:*) + echo powerpc-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + pmax:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sgi:OpenBSD:*:*) + echo mipseb-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + sun3:OpenBSD:*:*) + echo m68k-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + wgrisc:OpenBSD:*:*) + echo mipsel-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + *:OpenBSD:*:*) + echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} + exit 0 ;; + alpha:OSF1:*:*) + if test $UNAME_RELEASE = "V4.0"; then + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + fi + # 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 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/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit 0 ;; + 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 0 ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit 0 ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit 0;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit 0 ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit 0 ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit 0 ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit 0;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit 0;; + 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 0 ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit 0 ;; + DRS?6000:UNIX_SV:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7 && exit 0 ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + i86pc:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit 0 ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit 0 ;; + 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 0 ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit 0 ;; + # 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 0 ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit 0 ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit 0 ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit 0 ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit 0 ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit 0 ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit 0 ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit 0 ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit 0 ;; + 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 \ + && $dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \ + && exit 0 + echo mips-mips-riscos${UNAME_RELEASE} + exit 0 ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit 0 ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit 0 ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit 0 ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit 0 ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit 0 ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit 0 ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $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 0 ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit 0 ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit 0 ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit 0 ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit 0 ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit 0 ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit 0 ;; + 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 0 ;; + *: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 + $CC_FOR_BUILD -o $dummy $dummy.c && $dummy && exit 0 + echo rs6000-ibm-aix3.2.5 + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit 0 ;; + *:AIX:*:[45]) + 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 0 ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit 0 ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit 0 ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit 0 ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit 0 ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit 0 ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit 0 ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit 0 ;; + 9000/[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 + # avoid double evaluation of $set_cc_for_build + test -n "$CC_FOR_BUILD" || eval $set_cc_for_build + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E -) | grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit 0 ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit 0 ;; + 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 && $dummy && exit 0 + echo unknown-hitachi-hiuxwe2 + exit 0 ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit 0 ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit 0 ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit 0 ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit 0 ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit 0 ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit 0 ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit 0 ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit 0 ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit 0 ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit 0 ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit 0 ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + *:UNICOS/mp:*:*) + echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit 0 ;; + 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 0 ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit 0 ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit 0 ;; + *:FreeBSD:*:*|*:GNU/FreeBSD:*:*) + # Determine whether the default compiler uses glibc. + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #if __GLIBC__ >= 2 + LIBC=gnu + #else + LIBC= + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} + exit 0 ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit 0 ;; + i*:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit 0 ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit 0 ;; + x86:Interix*:3*) + echo i586-pc-interix3 + exit 0 ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit 0 ;; + 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 0 ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit 0 ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit 0 ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit 0 ;; + *:GNU:*:*) + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit 0 ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit 0 ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit 0 ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #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 0 + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #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 0 + ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit 0 ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit 0 ;; + 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 ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit 0 ;; + 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 0 ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit 0 ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit 0 ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit 0 ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit 0 ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit 0 ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit 0 ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit 0 ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #ifdef __INTEL_COMPILER + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` + test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0 + test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0 + ;; + 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 0 ;; + 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 0 ;; + 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 0 ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit 0 ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit 0 ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit 0 ;; + 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 0 ;; + i*86:*:5:[78]*) + 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 0 ;; + 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 0 ;; + 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 i386. + echo i386-pc-msdosdjgpp + exit 0 ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit 0 ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit 0 ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit 0 ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit 0 ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit 0 ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit 0 ;; + M68*:*:R3V[567]*:*) + test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; + 3[34]??:*: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) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4.3${OS_REL} && exit 0 + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && echo i486-ncr-sysv4 && exit 0 ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit 0 ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit 0 ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit 0 ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit 0 ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit 0 ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit 0 ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit 0 ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit 0 ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit 0 ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit 0 ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit 0 ;; + 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 0 ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit 0 ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit 0 ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit 0 ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit 0 ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit 0 ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit 0 ;; + *:Darwin:*:*) + case `uname -p` in + *86) UNAME_PROCESSOR=i686 ;; + powerpc) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit 0 ;; + *: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 0 ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit 0 ;; + NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit 0 ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit 0 ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit 0 ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit 0 ;; + *: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 0 ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit 0 ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit 0 ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit 0 ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit 0 ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit 0 ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit 0 ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +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"); 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 && $dummy && exit 0 + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit 0 ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit 0 ;; + c34*) + echo c34-convex-bsd + exit 0 ;; + c38*) + echo c38-convex-bsd + exit 0 ;; + c4*) + echo c4-convex-bsd + exit 0 ;; + esac +fi + +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/config.h.in b/config.h.in new file mode 100644 index 0000000..23bb05e --- /dev/null +++ b/config.h.in @@ -0,0 +1,94 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Check for dlopen in c */ +#undef DLLIB + +/* Check for ftime */ +#undef FTIME + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* 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 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 + +/* Check for in_addr_t */ +#undef HTS_DO_NOT_REDEFINE_in_addr_t + +/* Check for IPv6 */ +#undef HTS_INET6 + +/* Check for large files support */ +#undef HTS_LFS + +/* Defined to build under Linux */ +#undef HTS_PLATFORM + +/* Check for libsocket */ +#undef LIBSOCKET + +/* LLint format */ +#undef LLINT_FORMAT + +/* LLint type */ +#undef LLINT_TYPE + +/* 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 version of this package. */ +#undef PACKAGE_VERSION + +/* Check for setuid */ +#undef SETUID + +/* The size of a `long', as computed by sizeof. */ +#undef SIZEOF_LONG + +/* The size of a `long long', as computed by sizeof. */ +#undef SIZEOF_LONG_LONG + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Check for pthread in pthreads */ +#undef THREADS + +/* Version number of package */ +#undef VERSION diff --git a/config.sub b/config.sub new file mode 100755 index 0000000..fe4f1ed --- /dev/null +++ b/config.sub @@ -0,0 +1,1492 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + +timestamp='2003-05-09' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, +# Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Please send patches to . Submit a context +# diff and a properly formatted 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. + +# 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 +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 0 ;; + --version | -v ) + echo "$version" ; exit 0 ;; + --help | --h* | -h ) + echo "$usage"; exit 0 ;; + -- ) # 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 0;; + + * ) + 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* | freebsd*-gnu* | netbsd*-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) + os= + basic_machine=$1 + ;; + -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 + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -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] \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ + | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k \ + | m32r | m68000 | m68k | m88k | mcore \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | msp430 \ + | ns16k | ns32k \ + | openrisc | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ + | strongarm \ + | tahoe | thumb | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xscale | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + + # 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-* \ + | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* \ + | m32r-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | msp430-* \ + | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ + | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ + | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # 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 + ;; + 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 + ;; + 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 + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + 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 + ;; + crds | unos) + basic_machine=m68k-crds + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + 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 + ;; + 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 + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + 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 + ;; + mmix*) + basic_machine=mmix-knuth + os=-mmixware + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + 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 + ;; + nv1) + basic_machine=nv1-cray + os=-unicosmp + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + or32 | or32-*) + basic_machine=or32-unknown + os=-coff + ;; + 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 + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2) + basic_machine=i686-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-*) + basic_machine=i686-`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 + ;; + 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 + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + 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 + ;; + tic4x | c4x*) + basic_machine=tic4x-unknown + os=-coff + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + 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 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-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 + ;; + 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 + ;; + sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparc | sparcv9 | sparcv9b) + 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. + -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* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \ + | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -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*) + # 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* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -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 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -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 + ;; + -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 + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + # 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 + ;; + 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 + ;; + *-ibm) + os=-aix + ;; + *-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 + ;; + -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 + ;; + -ptx*) + vendor=sequent + ;; + -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 0 + +# 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/configure b/configure new file mode 100755 index 0000000..b49c878 --- /dev/null +++ b/configure @@ -0,0 +1,10879 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.54. +# +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +# 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 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+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null && + echo_test_string="`eval $cmd`" && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + IFS="${IFS= }"; save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_config_libobj_dir=. +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: ${ac_max_here_lines=38} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="src/httrack.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO AMTAR install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM AWK SET_MAKE MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CPP EGREP build build_cpu build_vendor build_os host host_cpu host_vendor host_os LN_S ECHO RANLIB ac_ct_RANLIB LIBTOOL DEFAULT_CFLAGS VERSION_INFO V6_FLAG LFS_FLAG THREADS_LIBS THREADS_CFLAGS SOCKET_LIBS DL_LIBS LIBOBJS LTLIBOBJS' +ac_subst_files='' + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# 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. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datadir='${prefix}/share' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${prefix}/info' +mandir='${prefix}/man' + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_option in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_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 | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo $ac_feature | sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -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 ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -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 ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package| sed 's/-/_/g'` + case $ac_option in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo $ac_package | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + 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'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo $ac_var` + case $ac_val in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +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 + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + 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 + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_confdir=`(dirname "$0") 2>/dev/null || +$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$0" : 'X\(//\)[^/]' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$0" | + 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 + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || + { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 + { (exit 1); exit 1; }; } +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# 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 this package 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 \`..'] + +_ACEOF + + cat <<_ACEOF +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] + --datadir=DIR read-only architecture-independent data [PREFIX/share] + --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] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [PREFIX/info] + --mandir=DIR man documentation [PREFIX/man] +_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 + + cat <<\_ACEOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-maintainer-mode enable make rules and dependencies not useful + (and sometimes confusing) to the casual installer + --disable-dependency-tracking Speeds up one-time builds + --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) + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld default=no + --with-pic try to use only PIC/non-PIC objects default=use both + +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 + CPPFLAGS 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. + +_ACEOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d $ac_dir || continue + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + cd $ac_dir + # Check for guested configure; otherwise get Cygnus style 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 + elif test -f $ac_srcdir/configure.ac || + test -f $ac_srcdir/configure.in; then + echo + $ac_configure --help + else + echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi + cd $ac_popdir + done +fi + +test -n "$ac_init_help" && exit 0 +if $ac_init_version; then + cat <<\_ACEOF + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 +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 0 +fi +exec 5>config.log +cat >&5 <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.54. Invocation command line was + + $ $0 $@ + +_ACEOF +{ +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` +hostinfo = `(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=. + echo "PATH: $as_dir" +done + +} >&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. +# Also quote any args containing shell meta-characters. +ac_configure_args= +ac_sep= +for ac_arg +do + case $ac_arg in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n ) continue ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + continue ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + # Get rid of the leading space. + ac_sep=" " +done + +# 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: Be sure not to use single quotes in there, as some shells, +# such as our DU 5.0 friend, will then `close' the trap. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------- ## +## Output files. ## +## ------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=$`echo $ac_var` + echo "$ac_var='"'"'$ac_val'"'"'" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + sed "/^$/d" confdefs.h | sort + echo + fi + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" + echo "$as_me: exit $exit_status" + } >&5 + rm -f core core.* *.core && + rm -rf conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# 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 + + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + 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. + if test -f "$cache_file"; then + { echo "$as_me:$LINENO: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:$LINENO: creating cache $cache_file" >&5 +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 `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; 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,) + { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +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 + { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`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. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +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_config_headers="$ac_config_headers config.h" + +am__api_version="1.7" +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 + { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 +echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} + { (exit 1); exit 1; }; } +fi +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. + +# 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" +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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/* | \ + /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_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 + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$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' + +echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&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". + { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}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 $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + + +# 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= + { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_AWK+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:$LINENO: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \${MAKE}" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \${MAKE}... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,./+-,__p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="${MAKE}"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + # test to see if srcdir already configured +if test "`cd $srcdir && pwd`" != "`pwd`" && + test -f $srcdir/config.status; then + { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } +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=httrack + VERSION=3.30.01 + + +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"} + + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +install_sh=${install_sh-"$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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. + + + +VERSION_INFO="1:330:0" +echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5 +echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6 + # Check whether --enable-maintainer-mode or --disable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then + enableval="$enable_maintainer_mode" + USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi; + echo "$as_me:$LINENO: result: $USE_MAINTAINER_MODE" >&5 +echo "${ECHO_T}$USE_MAINTAINER_MODE" >&6 + + +if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + + + + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="cc" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_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" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +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 + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:$LINENO: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + + +test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH" >&5 +echo "$as_me: error: no acceptable C compiler found in \$PATH" >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.exe" +# 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. +echo "$as_me:$LINENO: checking for C compiler default output" >&5 +echo $ECHO_N "checking for C compiler default output... $ECHO_C" >&6 +ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Find the output, starting from the most likely. This scheme is +# not robust to junk in `.', hence go to wildcards (a.*) only as a last +# resort. + +# Be careful to initialize this variable, since it used to be cached. +# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. +ac_cv_exeext= +for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: C compiler cannot create executables +check \`config.log' for details." >&5 +echo "$as_me: error: C compiler cannot create executables +check \`config.log' for details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_file" >&5 +echo "${ECHO_T}$ac_file" >&6 + +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&5 +echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +rm -f a.out a.exe conftest$ac_cv_exeext +ac_clean_files=$ac_clean_files_save +# Check the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:$LINENO: checking for suffix of executables" >&5 +echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; 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 | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link" >&5 +echo "$as_me: error: cannot compute suffix of executables: cannot compile and link" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +echo "${ECHO_T}$ac_cv_exeext" >&6 + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +echo "$as_me:$LINENO: checking for suffix of object files" >&5 +echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 +if test "${ac_cv_objext+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile" >&5 +echo "$as_me: error: cannot compute suffix of object files: cannot compile" >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 +if test "${ac_cv_c_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 +GCC=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +CFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cc_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +echo "${ECHO_T}$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 +echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 +echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 +if test "${ac_cv_prog_cc_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* 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; +} +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 +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext +done +rm -f conftest.$ac_ext conftest.$ac_objext +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:$LINENO: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >conftest.$ac_ext <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext 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 +rm -f .deps 2>/dev/null +mkdir .deps 2>/dev/null +if test -d .deps; then + DEPDIR=.deps +else + # MS-DOS does not allow filenames that begin with a dot. + DEPDIR=_deps +fi +rmdir .deps 2>/dev/null + + + ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +doit: + @echo done +END +# If we don't find an include directive, just comment out the code. +echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&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 + + +echo "$as_me:$LINENO: result: $_am_result" >&5 +echo "${ECHO_T}$_am_result" >&6 +rm -f confinc confmf + +# Check whether --enable-dependency-tracking or --disable-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= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + 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 + for depmode in $am_compiler_list; do + # 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. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + 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 + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +echo "${ECHO_T}$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 + + +ac_ext=cc +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 -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:$LINENO: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl 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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + + +# Provide some information about the compiler. +echo "$as_me:$LINENO:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_compiler_gnu=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 +GXX=`test $ac_compiler_gnu = yes && echo yes` +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +CXXFLAGS="-g" +echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 +if test "${ac_cv_prog_cxx_g+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_prog_cxx_g=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +echo "${ECHO_T}$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 +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +continue +fi +rm -f conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_declaration +int +main () +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +rm -f conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo $ac_declaration >>confdefs.h + echo '#endif' >>confdefs.h +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 + +depcc="$CXX" am_compiler_list= + +echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # 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. + echo '#include "conftest.h"' > conftest.c + echo 'int i;' > conftest.h + echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf + + case $depmode in + 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 + ;; + none) break ;; + esac + # 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. + if depmode=$depmode \ + source=conftest.c object=conftest.o \ + depfile=conftest.Po tmpdepfile=conftest.TPo \ + $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && + grep conftest.h conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + + +if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +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 +echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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. + # 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 >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f 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 +echo "$as_me:$LINENO: result: $CPP" >&5 +echo "${ECHO_T}$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. + # 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 >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether non-existent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +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 + + +echo "$as_me:$LINENO: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + +echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 +if test "${ac_cv_header_stdc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_cv_header_stdc=no +fi +rm -f conftest.err conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "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 >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#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)) + exit(2); + exit (0); +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# Check whether --enable-shared or --disable-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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_shared=yes +fi; +# Check whether --enable-static or --disable-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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_static=yes +fi; +# Check whether --enable-fast-install or --disable-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. + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," + for pkg in $enableval; do + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$ac_save_ifs" + ;; +esac +else + enable_fast_install=yes +fi; +# Make sure we can run config.sub. +$ac_config_sub sun4 >/dev/null 2>&1 || + { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:$LINENO: checking build system type" >&5 +echo $ECHO_N "checking build system type... $ECHO_C" >&6 +if test "${ac_cv_build+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +echo "${ECHO_T}$ac_cv_build" >&6 +build=$ac_cv_build +build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +echo "$as_me:$LINENO: checking host system type" >&5 +echo $ECHO_N "checking host system type... $ECHO_C" >&6 +if test "${ac_cv_host+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_host_alias=$host_alias +test -z "$ac_cv_host_alias" && + ac_cv_host_alias=$ac_cv_build_alias +ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || + { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 +echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +echo "${ECHO_T}$ac_cv_host" >&6 +host=$ac_cv_host +host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` +host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + +# Find the correct PATH separator. Usually this is `:', but +# DJGPP uses `;' like DOS. +if test "X${PATH_SEPARATOR+set}" != Xset; then + UNAME=${UNAME-`uname 2>/dev/null`} + case X$UNAME in + *-DOS) lt_cv_sys_path_separator=';' ;; + *) lt_cv_sys_path_separator=':' ;; + esac + PATH_SEPARATOR=$lt_cv_sys_path_separator +fi + + +# Check whether --with-gnu-ld or --without-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval="$with_gnu_ld" + test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi; +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + echo "$as_me:$LINENO: checking for ld used by GCC" >&5 +echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&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. + [\\/]* | [A-Za-z]:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the path 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 "$with_gnu_ld" = yes; then + echo "$as_me:$LINENO: checking for GNU ld" >&5 +echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 +else + echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 +fi +if test "${lt_cv_path_LD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -z "$LD"; then + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + 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 GNU ld's only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + if "$lt_cv_path_LD" -v 2>&1 < /dev/null | egrep '(GNU|with BFD)' > /dev/null; then + test "$with_gnu_ld" != no && break + else + test "$with_gnu_ld" != yes && break + fi + fi + done + IFS="$ac_save_ifs" +else + lt_cv_path_LD="$LD" # Let the user override the test with a path. +fi +fi + +LD="$lt_cv_path_LD" +if test -n "$LD"; then + echo "$as_me:$LINENO: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 +if test "${lt_cv_prog_gnu_ld+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # I'd rather use --version here, but apparently some GNU ld's only accept -v. +if $LD -v 2>&1 &5; then + lt_cv_prog_gnu_ld=yes +else + lt_cv_prog_gnu_ld=no +fi +fi +echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5 +echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 +with_gnu_ld=$lt_cv_prog_gnu_ld + + +echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 +if test "${lt_cv_ld_reload_flag+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_reload_flag='-r' +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 +reload_flag=$lt_cv_ld_reload_flag +test -n "$reload_flag" && reload_flag=" $reload_flag" + +echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 +if test "${lt_cv_path_NM+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin /usr/ucb /bin; do + test -z "$ac_dir" && ac_dir=. + tmp_nm=$ac_dir/${ac_tool_prefix}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 + if ($tmp_nm -B /dev/null 2>&1 | sed '1q'; exit 0) | egrep '(/dev/null|Invalid file or object type)' >/dev/null; then + lt_cv_path_NM="$tmp_nm -B" + break + elif ($tmp_nm -p /dev/null 2>&1 | sed '1q'; exit 0) | egrep /dev/null >/dev/null; then + lt_cv_path_NM="$tmp_nm -p" + break + else + 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 + fi + fi + done + IFS="$ac_save_ifs" + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi + +NM="$lt_cv_path_NM" +echo "$as_me:$LINENO: result: $NM" >&5 +echo "${ECHO_T}$NM" >&6 + +echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 +if test "${lt_cv_path_SED+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # 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_executable_p="test -f" +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 + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + _sed_list="$_sed_list $as_dir/$ac_prog$ac_exec_ext" + fi + done + done +done + + # Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/sedXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/sed$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + _max=0 + _count=0 + # Add /usr/xpg4/bin/sed as it is typically found on Solaris + # along with /bin/sed that truncates output. + for _sed in $_sed_list /usr/xpg4/bin/sed; do + test ! -f ${_sed} && break + cat /dev/null > "$tmp/sed.in" + _count=0 + echo ${ECHO_N-$ac_n} "0123456789${ECHO_C-$ac_c}" >"$tmp/sed.in" + # Check for GNU sed and select it if it is found. + if "${_sed}" --version 2>&1 < /dev/null | egrep '(GNU)' > /dev/null; then + lt_cv_path_SED=${_sed} + break; + fi + while true; do + cat "$tmp/sed.in" "$tmp/sed.in" >"$tmp/sed.tmp" + mv "$tmp/sed.tmp" "$tmp/sed.in" + cp "$tmp/sed.in" "$tmp/sed.nl" + echo >>"$tmp/sed.nl" + ${_sed} -e 's/a$//' < "$tmp/sed.nl" >"$tmp/sed.out" || break + cmp -s "$tmp/sed.out" "$tmp/sed.nl" || break + # 40000 chars as input seems more than enough + test $_count -gt 10 && break + _count=`expr $_count + 1` + if test $_count -gt $_max; then + _max=$_count + lt_cv_path_SED=$_sed + fi + done + done + rm -rf "$tmp" + +fi + +if test "X$SED" != "X"; then + lt_cv_path_SED=$SED +else + SED=$lt_cv_path_SED +fi +echo "$as_me:$LINENO: result: $SED" >&5 +echo "${ECHO_T}$SED" >&6 + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 +echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 +if test "${lt_cv_deplibs_check_method+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 +# which responds to the $file_magic_cmd with a given egrep 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 +aix4* | aix5*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi4*) + 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* | mingw* | pw32*) + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method='file_magic Mach-O dynamically linked shared library' + lt_cv_file_magic_cmd='/usr/bin/file -L' + case "$host_os" in + rhapsody* | darwin1.[012]) + lt_cv_file_magic_test_file=`echo /System/Library/Frameworks/System.framework/Versions/*/System | head -1` + ;; + *) # Darwin 1.3 on + lt_cv_file_magic_test_file='/usr/lib/libSystem.dylib' + ;; + esac + ;; + +freebsd*) + 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)/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 + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20*|hpux11*) + 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_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + irix5* | nonstopux*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF 32-bit MSB dynamic lib MIPS - version 1" + ;; + *) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method="file_magic ELF ${libmagic} MSB mips-[1234] dynamic lib MIPS - version 1" + ;; + esac + lt_cv_file_magic_test_file=`echo /lib${libsuff}/libc.so*` + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux-gnu*) + case $host_cpu in + alpha* | hppa* | i*86 | mips | mipsel | powerpc* | sparc* | ia64*) + lt_cv_deplibs_check_method=pass_all ;; + *) + # glibc up to 2.1.1 does not perform some relocations on ARM + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; + esac + lt_cv_file_magic_test_file=`echo /lib/libc.so* /lib/libc-*.so` + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so\.[0-9]+\.[0-9]+$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/\.]+\.so$' + 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 + ;; + +openbsd*) + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB shared object' + else + lt_cv_deplibs_check_method='file_magic OpenBSD.* shared library' + fi + ;; + +osf3* | osf4* | osf5*) + # this will be overridden with pass_all, but let us keep it just in case + lt_cv_deplibs_check_method='file_magic COFF format alpha shared library' + lt_cv_file_magic_test_file=/shlib/libc.so + lt_cv_deplibs_check_method=pass_all + ;; + +sco3.2v5*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + lt_cv_file_magic_test_file=/lib/libc.so + ;; + +sysv5uw[78]* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + 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 + ;; + esac + ;; +esac + +fi +echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method + + + + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +echo "$as_me:$LINENO: checking command to parse $NM output" >&5 +echo $ECHO_N "checking command to parse $NM output... $ECHO_C" >&6 +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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]*\)' + +# Transform the above into a raw symbol and a C symbol. +symxfrm='\1 \2\3 \3' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + lt_cv_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern char \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +solaris* | sysv5*) + symcode='[BDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $host_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +if $NM -V 2>&1 | egrep '(GNU|with BFD)' > /dev/null; then + symcode='[ABCDGISTW]' +fi + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Write the raw and C identifiers. +lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*\($ac_symprfx\)$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$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=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && 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 egrep ' nm_test_var$' "$nlist" >/dev/null; then + if egrep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_global_symbol_to_cdecl"' < "$nlist" >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{ +EOF + sed "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr) \&\2},/" < "$nlist" >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + save_LIBS="$LIBS" + save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest; then + pipe_works=yes + fi + LIBS="$save_LIBS" + CFLAGS="$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 -f conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +global_symbol_pipe="$lt_cv_sys_global_symbol_pipe" +if test -z "$lt_cv_sys_global_symbol_pipe"; then + global_symbol_to_cdecl= + global_symbol_to_c_name_address= +else + global_symbol_to_cdecl="$lt_cv_global_symbol_to_cdecl" + global_symbol_to_c_name_address="$lt_cv_global_symbol_to_c_name_address" +fi +if test -z "$global_symbol_pipe$global_symbol_to_cdec$global_symbol_to_c_name_address"; +then + echo "$as_me:$LINENO: result: failed" >&5 +echo "${ECHO_T}failed" >&6 +else + echo "$as_me:$LINENO: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +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=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +eval "$as_ac_Header=no" +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_header_compiler=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 + cat conftest.$ac_ext >&5 + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc in + yes:no ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; + no:yes ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;};; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + 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 <&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 + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + echo "$as_me:$LINENO: checking for file" >&5 +echo $ECHO_N "checking for file... $ECHO_C" >&6 +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + case $MAGIC_CMD in + /*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; + ?:/*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a dos path. + ;; + *) + ac_save_MAGIC_CMD="$MAGIC_CMD" + IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS=":" + ac_dummy="/usr/bin:$PATH" + for ac_dir in $ac_dummy; do + 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 <&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 + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$ac_save_ifs" + MAGIC_CMD="$ac_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +echo "${ECHO_T}$MAGIC_CMD" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:$LINENO: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + echo "$as_me:$LINENO: result: $STRIP" >&5 +echo "${ECHO_T}$STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}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 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +echo "${ECHO_T}$ac_ct_STRIP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + STRIP=$ac_ct_STRIP +else + STRIP="$ac_cv_prog_STRIP" +fi + + +enable_dlopen=no +enable_win32_dll=no + +# Check whether --enable-libtool-lock or --disable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval="$enable_libtool_lock" + +fi; +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4798 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + 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 + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 +if test "${lt_cv_cc_needs_belf+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_cc_needs_belf=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +lt_cv_cc_needs_belf=no +fi +rm -f 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 +echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; + + +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e s/^X//' +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' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except M$VC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" +need_locks="$enable_libtool_lock" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +if test x"$host" != x"$build"; then + ac_tool_prefix=${host_alias}- +else + ac_tool_prefix= +fi + +# Transform linux* to *-*-linux-gnu*, to support old configure scripts. +case $host_os in +linux-gnu*) ;; +linux*) host=`echo $host | sed 's/^\(.*-.*-linux\)\(.*\)$/\1-gnu\2/'` +esac + +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 "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="\$RANLIB -t \$oldlib~$old_postinstall_cmds" + ;; + *) + old_postinstall_cmds="\$RANLIB \$oldlib~$old_postinstall_cmds" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +# Allow CC to be a program name with arguments. +set dummy $CC +compiler="$2" + +echo "$as_me:$LINENO: checking for objdir" >&5 +echo $ECHO_N "checking for objdir... $ECHO_C" >&6 +rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + objdir=_libs +fi +rmdir .libs 2>/dev/null +echo "$as_me:$LINENO: result: $objdir" >&5 +echo "${ECHO_T}$objdir" >&6 + + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; +test -z "$pic_mode" && pic_mode=default + +# We assume here that the value for lt_cv_prog_cc_pic will not be cached +# in isolation, and that seeing it set (from the cache) indicates that +# the associated values are set (in the cache) correctly too. +echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_pic+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_pic= + lt_cv_prog_cc_shlib= + lt_cv_prog_cc_wl= + lt_cv_prog_cc_static= + lt_cv_prog_cc_no_builtin= + lt_cv_prog_cc_can_build_shared=$can_build_shared + + if test "$GCC" = yes; then + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-static' + + case $host_os in + aix*) + # Below there is a dirty hack to force normal static linking with -ldl + # The problem is because libdl dynamically linked with both libc and + # libC (AIX C++ library), which obviously doesn't included in libraries + # list by gcc. This cause undefined symbols with -static flags. + # This hack allows C programs to be linked with "-static -ldl", but + # not sure about C++ programs. + lt_cv_prog_cc_static="$lt_cv_prog_cc_static ${lt_cv_prog_cc_wl}-lC" + ;; + amigaos*) + # 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_cv_prog_cc_pic='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_cv_prog_cc_pic='-fno-common' + ;; + cygwin* | mingw* | pw32* | os2*) + # 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_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_cv_prog_cc_pic=-Kconform_pic + fi + ;; + *) + lt_cv_prog_cc_pic='-fPIC' + ;; + esac + else + # PORTME Check for PIC flags for the system compiler. + case $host_os in + aix3* | aix4* | aix5*) + lt_cv_prog_cc_wl='-Wl,' + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_cv_prog_cc_static='-Bstatic' + else + lt_cv_prog_cc_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + hpux9* | hpux10* | hpux11*) + # Is there a better lt_cv_prog_cc_static that works with the bundled CC? + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static="${lt_cv_prog_cc_wl}-a ${lt_cv_prog_cc_wl}archive" + lt_cv_prog_cc_pic='+Z' + ;; + + irix5* | irix6* | nonstopux*) + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + # PIC (with -KPIC) is the default. + ;; + + cygwin* | mingw* | pw32* | os2*) + # 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_cv_prog_cc_pic='-DDLL_EXPORT' + ;; + + newsos6) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + ;; + + osf3* | osf4* | osf5*) + # All OSF/1 code is PIC. + lt_cv_prog_cc_wl='-Wl,' + lt_cv_prog_cc_static='-non_shared' + ;; + + sco3.2v5*) + lt_cv_prog_cc_pic='-Kpic' + lt_cv_prog_cc_static='-dn' + lt_cv_prog_cc_shlib='-belf' + ;; + + solaris*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + sunos4*) + lt_cv_prog_cc_pic='-PIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Qoption ld ' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + lt_cv_prog_cc_pic='-KPIC' + lt_cv_prog_cc_static='-Bstatic' + lt_cv_prog_cc_wl='-Wl,' + ;; + + uts4*) + lt_cv_prog_cc_pic='-pic' + lt_cv_prog_cc_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_cv_prog_cc_pic='-Kconform_pic' + lt_cv_prog_cc_static='-Bstatic' + fi + ;; + + *) + lt_cv_prog_cc_can_build_shared=no + ;; + esac + fi + +fi + +if test -z "$lt_cv_prog_cc_pic"; then + echo "$as_me:$LINENO: result: none" >&5 +echo "${ECHO_T}none" >&6 +else + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic" >&6 + + # Check to make sure the pic_flag actually works. + echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_cv_prog_cc_pic works" >&5 +echo $ECHO_N "checking if $compiler PIC flag $lt_cv_prog_cc_pic works... $ECHO_C" >&6 + if test "${lt_cv_prog_cc_pic_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $lt_cv_prog_cc_pic -DPIC" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + case $host_os in + hpux9* | hpux10* | hpux11*) + # On HP-UX, both CC and GCC only warn that PIC is supported... then + # they create non-PIC objects. So, if there were any warnings, we + # assume that PIC is not supported. + if test -s conftest.err; then + lt_cv_prog_cc_pic_works=no + else + lt_cv_prog_cc_pic_works=yes + fi + ;; + *) + lt_cv_prog_cc_pic_works=yes + ;; + esac + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 + lt_cv_prog_cc_pic_works=no + +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + +fi + + + if test "X$lt_cv_prog_cc_pic_works" = Xno; then + lt_cv_prog_cc_pic= + lt_cv_prog_cc_can_build_shared=no + else + lt_cv_prog_cc_pic=" $lt_cv_prog_cc_pic" + fi + + echo "$as_me:$LINENO: result: $lt_cv_prog_cc_pic_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_pic_works" >&6 +fi + +# Check for any special shared library compilation flags. +if test -n "$lt_cv_prog_cc_shlib"; then + { echo "$as_me:$LINENO: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&5 +echo "$as_me: WARNING: \`$CC' requires \`$lt_cv_prog_cc_shlib' to build shared libraries" >&2;} + if echo "$old_CC $old_CFLAGS " | egrep -e "[ ]$lt_cv_prog_cc_shlib[ ]" >/dev/null; then : + else + { echo "$as_me:$LINENO: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&5 +echo "$as_me: WARNING: add \`$lt_cv_prog_cc_shlib' to the CC or CFLAGS env variable and reconfigure" >&2;} + lt_cv_prog_cc_can_build_shared=no + fi +fi + +echo "$as_me:$LINENO: checking if $compiler static flag $lt_cv_prog_cc_static works" >&5 +echo $ECHO_N "checking if $compiler static flag $lt_cv_prog_cc_static works... $ECHO_C" >&6 +if test "${lt_cv_prog_cc_static_works+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_prog_cc_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_cv_prog_cc_static" + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_prog_cc_static_works=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi + + +# Belt *and* braces to stop my trousers falling down: +test "X$lt_cv_prog_cc_static_works" = Xno && lt_cv_prog_cc_static= +echo "$as_me:$LINENO: result: $lt_cv_prog_cc_static_works" >&5 +echo "${ECHO_T}$lt_cv_prog_cc_static_works" >&6 + +pic_flag="$lt_cv_prog_cc_pic" +special_shlib_compile_flags="$lt_cv_prog_cc_shlib" +wl="$lt_cv_prog_cc_wl" +link_static_flag="$lt_cv_prog_cc_static" +no_builtin_flag="$lt_cv_prog_cc_no_builtin" +can_build_shared="$lt_cv_prog_cc_can_build_shared" + + +# Check to see if options -o and -c are simultaneously supported by compiler +echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 +if test "${lt_cv_compiler_c_o+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +$rm -r conftest 2>/dev/null +mkdir conftest +cd conftest +echo "int some_variable = 0;" > conftest.$ac_ext +mkdir out +# According to Tom Tromey, Ian Lance Taylor reported there are C compilers +# that will create temporary files in the current directory regardless of +# the output directory. Thus, making CWD read-only will cause this test +# to fail, enabling locking or at least warning the user not to do parallel +# builds. +chmod -w . +save_CFLAGS="$CFLAGS" +CFLAGS="$CFLAGS -o out/conftest2.$ac_objext" +compiler_c_o=no +if { (eval echo configure:5312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>out/conftest.err; } && 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 + if test -s out/conftest.err; then + lt_cv_compiler_c_o=no + else + lt_cv_compiler_c_o=yes + fi +else + # Append any errors to the config.log. + cat out/conftest.err 1>&5 + lt_cv_compiler_c_o=no +fi +CFLAGS="$save_CFLAGS" +chmod u+w . +$rm conftest* out/* +rmdir out +cd .. +rmdir conftest +$rm -r conftest 2>/dev/null + +fi + +compiler_c_o=$lt_cv_compiler_c_o +echo "$as_me:$LINENO: result: $compiler_c_o" >&5 +echo "${ECHO_T}$compiler_c_o" >&6 + +if test x"$compiler_c_o" = x"yes"; then + # Check to see if we can write to a .lo + echo "$as_me:$LINENO: checking if $compiler supports -c -o file.lo" >&5 +echo $ECHO_N "checking if $compiler supports -c -o file.lo... $ECHO_C" >&6 + if test "${lt_cv_compiler_o_lo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + lt_cv_compiler_o_lo=no + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -c -o conftest.lo" + save_objext="$ac_objext" + ac_objext=lo + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + lt_cv_compiler_o_lo=no + else + lt_cv_compiler_o_lo=yes + fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + ac_objext="$save_objext" + CFLAGS="$save_CFLAGS" + +fi + + compiler_o_lo=$lt_cv_compiler_o_lo + echo "$as_me:$LINENO: result: $compiler_o_lo" >&5 +echo "${ECHO_T}$compiler_o_lo" >&6 +else + compiler_o_lo=no +fi + +# Check to see if we can do hard links to lock some files if needed +hard_links="nottested" +if test "$compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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 + echo "$as_me:$LINENO: result: $hard_links" >&5 +echo "${ECHO_T}$hard_links" >&6 + if test "$hard_links" = no; then + { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +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 + +if test "$GCC" = yes; then + # Check to see if options -fno-rtti -fno-exceptions are supported by compiler + echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 + echo "int some_variable = 0;" > conftest.$ac_ext + save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -fno-rtti -fno-exceptions -c conftest.$ac_ext" + compiler_rtti_exceptions=no + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +int +main () +{ +int some_variable = 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + compiler_rtti_exceptions=no + else + compiler_rtti_exceptions=yes + fi + +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +fi +rm -f conftest.$ac_objext conftest.$ac_ext + CFLAGS="$save_CFLAGS" + echo "$as_me:$LINENO: result: $compiler_rtti_exceptions" >&5 +echo "${ECHO_T}$compiler_rtti_exceptions" >&6 + + if test "$compiler_rtti_exceptions" = "yes"; then + no_builtin_flag=' -fno-builtin -fno-rtti -fno-exceptions' + else + no_builtin_flag=' -fno-builtin' + fi +fi + +# See if the linker supports building shared libraries. +echo "$as_me:$LINENO: checking whether the linker ($LD) supports shared libraries" >&5 +echo $ECHO_N "checking whether the linker ($LD) supports shared libraries... $ECHO_C" >&6 + +allow_undefined_flag= +no_undefined_flag= +need_lib_prefix=unknown +need_version=unknown +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +archive_cmds= +archive_expsym_cmds= +old_archive_from_new_cmds= +old_archive_from_expsyms_cmds= +export_dynamic_flag_spec= +whole_archive_flag_spec= +thread_safe_flag_spec= +hardcode_into_libs=no +hardcode_libdir_flag_spec= +hardcode_libdir_separator= +hardcode_direct=no +hardcode_minus_L=no +hardcode_shlibpath_var=unsupported +runpath_var= +link_all_deplibs=unknown +always_export_symbols=no +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | sed '\''s/.* //'\'' | sort | uniq > $export_symbols' +# 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 egrep regular expression 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_" +# 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. +extract_expsyms_cmds= + +case $host_os in +cygwin* | mingw* | pw32*) + # 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 "$GCC" != yes; then + with_gnu_ld=no + fi + ;; +openbsd*) + with_gnu_ld=no + ;; +esac + +ld_shlibs=yes +if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # See if GNU ld supports shared libraries. + case $host_os in + aix3* | aix4* | aix5*) + # On AIX, the GNU linker is very broken + # Note:Check GNU linker on AIX 5-IA64 when/if it becomes available. + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + ;; + + amigaos*) + 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 + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | egrep ': 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*) + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=yes + + extract_expsyms_cmds='test -f $output_objdir/impgen.c || \ + sed -e "/^# \/\* impgen\.c starts here \*\//,/^# \/\* impgen.c ends here \*\// { s/^# //;s/^# *$//; p; }" -e d < $''0 > $output_objdir/impgen.c~ + test -f $output_objdir/impgen.exe || (cd $output_objdir && \ + if test "x$HOST_CC" != "x" ; then $HOST_CC -o impgen impgen.c ; \ + else $CC -o impgen impgen.c ; fi)~ + $output_objdir/impgen $dir/$soroot > $output_objdir/$soname-def' + + old_archive_from_expsyms_cmds='$DLLTOOL --as=$AS --dllname $soname --def $output_objdir/$soname-def --output-lib $output_objdir/$newlib' + + # cygwin and mingw dlls have different entry points and sets of symbols + # to exclude. + # FIXME: what about values for MSVC? + dll_entry=__cygwin_dll_entry@12 + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12~ + case $host_os in + mingw*) + # mingw values + dll_entry=_DllMainCRTStartup@12 + dll_exclude_symbols=DllMain@12,DllMainCRTStartup@12,DllEntryPoint@12~ + ;; + esac + + # mingw and cygwin differ, and it's simplest to just exclude the union + # of the two symbol sets. + dll_exclude_symbols=DllMain@12,_cygwin_dll_entry@12,_cygwin_noncygwin_dll_entry@12,DllMainCRTStartup@12,DllEntryPoint@12 + + # recent cygwin and mingw systems supply a stub DllMain which the user + # can override, but on older systems we have to supply one (in ltdll.c) + if test "x$lt_cv_need_dllmain" = "xyes"; then + ltdll_obj='$output_objdir/$soname-ltdll.'"$ac_objext " + ltdll_cmds='test -f $output_objdir/$soname-ltdll.c || sed -e "/^# \/\* ltdll\.c starts here \*\//,/^# \/\* ltdll.c ends here \*\// { s/^# //; p; }" -e d < $''0 > $output_objdir/$soname-ltdll.c~ + test -f $output_objdir/$soname-ltdll.$ac_objext || (cd $output_objdir && $CC -c $soname-ltdll.c)~' + else + ltdll_obj= + ltdll_cmds= + fi + + # Extract the symbol export list from an `--export-all' def file, + # then regenerate the def file from the symbol export list, so that + # the compiled dll only exports the symbol export list. + # Be careful not to strip the DATA tag left be newer dlltools. + export_symbols_cmds="$ltdll_cmds"' + $DLLTOOL --export-all --exclude-symbols '$dll_exclude_symbols' --output-def $output_objdir/$soname-def '$ltdll_obj'$libobjs $convenience~ + sed -e "1,/EXPORTS/d" -e "s/ @ [0-9]*//" -e "s/ *;.*$//" < $output_objdir/$soname-def > $export_symbols' + + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is. + # If DATA tags from a recent dlltool are present, honour them! + archive_expsym_cmds='if test "x`sed 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname-def; + else + echo EXPORTS > $output_objdir/$soname-def; + _lt_hint=1; + cat $export_symbols | while read symbol; do + set dummy \$symbol; + case \$# in + 2) echo " \$2 @ \$_lt_hint ; " >> $output_objdir/$soname-def;; + 4) echo " \$2 \$3 \$4 ; " >> $output_objdir/$soname-def; _lt_hint=`expr \$_lt_hint - 1`;; + *) echo " \$2 @ \$_lt_hint \$3 ; " >> $output_objdir/$soname-def;; + esac; + _lt_hint=`expr 1 + \$_lt_hint`; + done; + fi~ + '"$ltdll_cmds"' + $CC -Wl,--base-file,$output_objdir/$soname-base '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp~ + $CC -Wl,--base-file,$output_objdir/$soname-base $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags~ + $DLLTOOL --as=$AS --dllname $soname --exclude-symbols '$dll_exclude_symbols' --def $output_objdir/$soname-def --base-file $output_objdir/$soname-base --output-exp $output_objdir/$soname-exp --output-lib $output_objdir/$libname.dll.a~ + $CC $output_objdir/$soname-exp '$lt_cv_cc_dll_switch' -Wl,-e,'$dll_entry' -o $output_objdir/$soname '$ltdll_obj'$libobjs $deplibs $compiler_flags' + ;; + + 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 -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared -nodefaultlibs $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris* | sysv5*) + if $LD -v 2>&1 | egrep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&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. + +EOF + elif $LD --help 2>&1 | egrep ': supported targets:.* elf' > /dev/null; then + 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 + ;; + + 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 | egrep ': supported targets:.* elf' > /dev/null; then + 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 + + if test "$ld_shlibs" = yes; then + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + case $host_os in + cygwin* | mingw* | pw32*) + # dlltool doesn't understand --whole-archive et. al. + whole_archive_flag_spec= + ;; + *) + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | egrep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + ;; + esac + 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 "$GCC" = yes && test -z "$link_static_flag"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix4* | aix5*) + if test "$host_cpu" = ia64; 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 + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix5*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + 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. + + hardcode_direct=yes + archive_cmds='' + hardcode_libdir_separator=':' + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + hardcode_direct=yes + 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' + else + # not using gcc + if test "$host_cpu" = ia64; then + shared_flag='${wl}-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall can do strange things, so it is better to + # generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; 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' + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:/usr/lib:/lib' + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; 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 ${wl}-h$soname $libobjs $deplibs $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols" + else + hardcode_libdir_flag_spec='${wl}-bnolibpath ${wl}-blibpath:$libdir:/usr/lib:/lib' + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='${wl}-berok' + # This is a bit strange, but is similar to how AIX traditionally builds + # it's shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs $compiler_flags ${allow_undefined_flag} '"\${wl}$no_entry_flag \${wl}$exp_sym_flag:\$export_symbols"' ~$AR -crlo $objdir/$libname$release.a $objdir/$soname' + fi + fi + ;; + + amigaos*) + 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 + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + cygwin* | mingw* | pw32*) + # 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. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | sed -e '\''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' + fix_srcfile_path='`cygpath -w "$srcfile"`' + ;; + + darwin* | rhapsody*) + case "$host_os" in + rhapsody* | darwin1.[012]) + allow_undefined_flag='-undefined suppress' + ;; + *) # Darwin 1.3 on + allow_undefined_flag='-flat_namespace -undefined suppress' + ;; + esac + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. Also zsh mangles + # `"' quotes if we put them in here... so don't! + archive_cmds='$nonopt $(test .$module = .yes && echo -bundle || echo -dynamiclib) $allow_undefined_flag -o $lib $libobjs $deplibs$linker_flags -install_name $rpath/$soname $verstring' + # We need to add '_' to the symbols in $export_symbols first + #archive_expsym_cmds="$archive_cmds"' && strip -s $export_symbols' + hardcode_direct=yes + hardcode_shlibpath_var=no + whole_archive_flag_spec='-all_load $convenience' + ;; + + freebsd1*) + ld_shlibs=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*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9* | hpux10* | hpux11*) + case $host_os in + hpux9*) archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' ;; + *) archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' ;; + esac + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_minus_L=yes # Not in the search PATH, but as the default + # location of the library. + export_dynamic_flag_spec='${wl}-E' + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + 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 + ;; + + openbsd*) + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case "$host_os" in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; 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" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${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='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "-exported_symbol " >> $lib.exp; echo "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${objdir}/so_locations -o $lib~$rm $lib.exp' + + #Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + sco3.2v5*) + 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 + export_dynamic_flag_spec='${wl}-Bexport' + ;; + + solaris*) + # gcc --version < 3.0 without binutils cannot create self contained + # shared libraries reliably, requiring libgcc.a to resolve some of + # the object symbols generated in some cases. Libraries that use + # assert need libgcc.a to resolve __eprintf, for example. Linking + # a copy of libgcc.a into every shared library to guarantee resolving + # such symbols causes other problems: According to Tim Van Holder + # , C++ libraries end up with a separate + # (to the application) exception stack for one thing. + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + case `$CC --version 2>/dev/null` in + [12].*) + cat <&2 + +*** Warning: Releases of GCC earlier than version 3.0 cannot reliably +*** create self contained shared libraries on Solaris systems, without +*** introducing a dependency on libgcc.a. Therefore, libtool is disabling +*** -no-undefined support, which will at least allow you to build shared +*** libraries. However, you may find that when you link such libraries +*** into an application without using GCC, you have to manually add +*** \`gcc --print-libgcc-file-name\` to the link command. We urge you to +*** upgrade to a newer version of GCC. Another option is to rebuild your +*** current GCC to use the GNU linker from GNU binutils 2.9.1 or newer. + +EOF + no_undefined_flag= + ;; + esac + fi + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; 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' + ;; + + sysv5*) + no_undefined_flag=' -z text' + # $CC -shared without GNU ld will not create a library from C++ + # object files and a static libstdc++, better avoid it by now + 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' + hardcode_libdir_flag_spec= + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + 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.2uw2*) + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=no + hardcode_shlibpath_var=no + hardcode_runpath_var=yes + runpath_var=LD_RUN_PATH + ;; + + sysv5uw7* | unixware7*) + no_undefined_flag='${wl}-z ${wl}text' + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac +fi +echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +echo "${ECHO_T}$ld_shlibs" >&6 +test "$ld_shlibs" = no && can_build_shared=no + +# Check hardcoding attributes. +echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var"; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # 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 "$hardcode_shlibpath_var" != no && + test "$hardcode_minus_L" != no; 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 +echo "$as_me:$LINENO: result: $hardcode_action" >&5 +echo "${ECHO_T}$hardcode_action" >&6 + +striplib= +old_striplib= +echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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" + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +reload_cmds='$LD$reload_flag -o $output$reload_objs' +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +# PORTME Fill in your ld.so characteristics +echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 +library_names_spec= +libname_spec='lib$name' +soname_spec= +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" +sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}.so$major' + ;; + +aix4* | aix5*) + version_type=linux + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}.so$major ${libname}${release}.so$versuffix $libname.so' + 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 + # AIX (on Power*) has no versioning support, so currently we can + # not hardcode correct soname into executable. Probably we can + # add versioning support to collect2, so additional links can + # be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # 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}.so$versuffix ${libname}${release}.so$major $libname.so' + else + # 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}.so$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + 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=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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' + ;; + +beos*) + library_names_spec='${libname}.so' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi4*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$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" + export_dynamic_flag_spec=-rdynamic + # 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*) + version_type=windows + need_version=no + need_lib_prefix=no + case $GCC,$host_os in + yes,cygwin*) + library_names_spec='$libname.dll.a' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + postinstall_cmds='dlpath=`bash 2>&1 -c '\''. $dir/${file}i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog .libs/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`bash 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + ;; + yes,mingw*) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | sed -e "s/^libraries://" -e "s/;/ /g" -e "s,=/,/,g"` + ;; + yes,pw32*) + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | sed -e 's/./-/g'`${versuffix}.dll' + ;; + *) + library_names_spec='${libname}`echo ${release} | sed -e 's/[.]/-/g'`${versuffix}.dll $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # 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 + # FIXME: Relying on posixy $() will cause problems for + # cross-compilation, but unfortunately the echo tests do not + # yet detect zsh echo's removal of \ escapes. + library_names_spec='${libname}${release}${versuffix}.$(test .$module = .yes && echo so || echo dylib) ${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib) ${libname}.$(test .$module = .yes && echo so || echo dylib)' + soname_spec='${libname}${release}${major}.$(test .$module = .yes && echo so || echo dylib)' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd*) + objformat=`test -x /usr/bin/objformat && /usr/bin/objformat || echo aout` + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}.so$versuffix $libname.so$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + *) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so${major} ${libname}.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + 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. + dynamic_linker="$host_os dld.sl" + version_type=sunos + need_lib_prefix=no + need_version=no + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}.sl$versuffix ${libname}${release}.sl$major $libname.sl' + soname_spec='${libname}${release}.sl$major' + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) version_type=irix ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so $libname.so' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 ") libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 ") 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}" + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux-gnuoldld* | linux-gnuaout* | linux-gnucoff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux-gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # 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 + + # 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}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major ${libname}${release}.so ${libname}.so' + soname_spec='${libname}${release}.so$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 + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case "$host_os" in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + library_names_spec='${libname}${release}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + ;; + +os2*) + libname_spec='$name' + need_lib_prefix=no + library_names_spec='$libname.dll $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_version=no + soname_spec='${libname}${release}.so' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so $libname.so' + 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" + ;; + +sco3.2v5*) + version_type=osf + soname_spec='${libname}${release}.so$major' + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + shlibpath_var=LD_LIBRARY_PATH + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$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}.so$versuffix ${libname}.so$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + 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 + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' + soname_spec='${libname}${release}.so$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname.so.$versuffix $libname.so.$major $libname.so' + soname_spec='$libname.so.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +*) + dynamic_linker=no + ;; +esac +echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +echo "${ECHO_T}$dynamic_linker" >&6 +test "$dynamic_linker" = no && can_build_shared=no + +# Report the final consequences. +echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 +echo "$as_me:$LINENO: result: $can_build_shared" >&5 +echo "${ECHO_T}$can_build_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 +test "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix4*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +echo "$as_me:$LINENO: result: $enable_shared" >&5 +echo "${ECHO_T}$enable_shared" >&6 + +echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +echo "$as_me:$LINENO: result: $enable_static" >&5 +echo "${ECHO_T}$enable_static" >&6 + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "x$enable_dlopen" != xyes; 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 + ;; + + cygwin* | mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + *) + echo "$as_me:$LINENO: checking for shl_load" >&5 +echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 +if test "${ac_cv_func_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_shl_load) || defined (__stub___shl_load) +choke me +#else +f = shl_load; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +echo "${ECHO_T}$ac_cv_func_shl_load" >&6 +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char shl_load (); +int +main () +{ +shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_shl_load=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dld_shl_load=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" +else + echo "$as_me:$LINENO: checking for dlopen" >&5 +echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 +if test "${ac_cv_func_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. */ +#include +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +char (*f) (); + +int +main () +{ +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_dlopen) || defined (__stub___dlopen) +choke me +#else +f = dlopen; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_func_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_func_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +echo "${ECHO_T}$ac_cv_func_dlopen" >&6 +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_svld_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_svld_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dld_link (); +int +main () +{ +dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dld_dld_link=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dld_dld_link=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; 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 < +#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 + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=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; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +echo "${ECHO_T}$lt_cv_dlopen_self" >&6 + + if test "x$lt_cv_dlopen_self" = xyes; then + LDFLAGS="$LDFLAGS $link_static_flag" + echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 +if test "${lt_cv_dlopen_self_static+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$cross_compiling" = yes; 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 < +#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 + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=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; + /* dlclose (self); */ + } + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) 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_unknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +echo "${ECHO_T}$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 + + +if test "$enable_shared" = yes && test "$GCC" = yes; 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. + echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 + if test "${lt_cv_archive_cmds_need_lc+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + $rm conftest* + echo 'static int dummy;' > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_cv_prog_cc_wl + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$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=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi +fi + + echo "$as_me:$LINENO: result: $lt_cv_archive_cmds_need_lc" >&5 +echo "${ECHO_T}$lt_cv_archive_cmds_need_lc" >&6 + ;; + esac +fi +need_lc=${lt_cv_archive_cmds_need_lc-yes} + +# The second clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + : +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + test -f Makefile && make "$ltmain" +fi + +if test -f "$ltmain"; then + trap "$rm \"${ofile}T\"; exit 1" 1 2 15 + $rm -f "${ofile}T" + + echo creating $ofile + + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS SED \ + AR AR_FLAGS CC LD LN_S NM SHELL \ + reload_flag reload_cmds wl \ + pic_flag link_static_flag no_builtin_flag export_dynamic_flag_spec \ + thread_safe_flag_spec whole_archive_flag_spec libname_spec \ + library_names_spec soname_spec \ + RANLIB old_archive_cmds old_archive_from_new_cmds old_postinstall_cmds \ + old_postuninstall_cmds archive_cmds archive_expsym_cmds postinstall_cmds \ + postuninstall_cmds extract_expsyms_cmds old_archive_from_expsyms_cmds \ + old_striplib striplib file_magic_cmd export_symbols_cmds \ + deplibs_check_method allow_undefined_flag no_undefined_flag \ + finish_cmds finish_eval global_symbol_pipe global_symbol_to_cdecl \ + global_symbol_to_c_name_address \ + hardcode_libdir_flag_spec hardcode_libdir_separator \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + compiler_c_o compiler_o_lo need_locks exclude_expsyms include_expsyms; do + + case $var in + reload_cmds | old_archive_cmds | old_archive_from_new_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + export_symbols_cmds | archive_cmds | archive_expsym_cmds | \ + extract_expsyms_cmds | old_archive_from_expsyms_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + finish_cmds | sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + cat <<__EOF__ > "${ofile}T" +#! $SHELL + +# `$echo "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996-2000 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 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 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="${SED} -e s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test "X\${CDPATH+set}" = Xset; then CDPATH=:; export CDPATH; fi + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$need_lc + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# The default C compiler. +CC=$lt_CC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_pic_flag +pic_mode=$pic_mode + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_compiler_c_o + +# Can we write directly to a .lo ? +compiler_o_lo=$lt_compiler_o_lo + +# Must we lock files when doing compilation ? +need_locks=$lt_need_locks + +# 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 + +# 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 + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_link_static_flag + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_no_builtin_flag + +# 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 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# 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 + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# 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 and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# 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 + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# 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.so during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# 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 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path="$fix_srcfile_path" + +# 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 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_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 + +# ### END LIBTOOL CONFIG + +__EOF__ + + case $host_os in + aix3*) + cat <<\EOF >> "${ofile}T" + +# 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 "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + case $host_os in + cygwin* | mingw* | pw32* | os2*) + cat <<'EOF' >> "${ofile}T" + # This is a source program that is used to create dlls on Windows + # Don't remove nor modify the starting and closing comments +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ + # This is a source program that is used to create import libraries + # on Windows for dlls which lack them. Don't remove nor modify the + # starting and closing comments +# /* impgen.c starts here */ +# /* Copyright (C) 1999-2000 Free Software Foundation, Inc. +# +# This file is part of GNU libtool. +# +# 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. +# */ +# +# #include /* for printf() */ +# #include /* for open(), lseek(), read() */ +# #include /* for O_RDONLY, O_BINARY */ +# #include /* for strdup() */ +# +# /* O_BINARY isn't required (or even defined sometimes) under Unix */ +# #ifndef O_BINARY +# #define O_BINARY 0 +# #endif +# +# static unsigned int +# pe_get16 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[2]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 2); +# return b[0] + (b[1]<<8); +# } +# +# static unsigned int +# pe_get32 (fd, offset) +# int fd; +# int offset; +# { +# unsigned char b[4]; +# lseek (fd, offset, SEEK_SET); +# read (fd, b, 4); +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# static unsigned int +# pe_as32 (ptr) +# void *ptr; +# { +# unsigned char *b = ptr; +# return b[0] + (b[1]<<8) + (b[2]<<16) + (b[3]<<24); +# } +# +# int +# main (argc, argv) +# int argc; +# char *argv[]; +# { +# int dll; +# unsigned long pe_header_offset, opthdr_ofs, num_entries, i; +# unsigned long export_rva, export_size, nsections, secptr, expptr; +# unsigned long name_rvas, nexp; +# unsigned char *expdata, *erva; +# char *filename, *dll_name; +# +# filename = argv[1]; +# +# dll = open(filename, O_RDONLY|O_BINARY); +# if (dll < 1) +# return 1; +# +# dll_name = filename; +# +# for (i=0; filename[i]; i++) +# if (filename[i] == '/' || filename[i] == '\\' || filename[i] == ':') +# dll_name = filename + i +1; +# +# pe_header_offset = pe_get32 (dll, 0x3c); +# opthdr_ofs = pe_header_offset + 4 + 20; +# num_entries = pe_get32 (dll, opthdr_ofs + 92); +# +# if (num_entries < 1) /* no exports */ +# return 1; +# +# export_rva = pe_get32 (dll, opthdr_ofs + 96); +# export_size = pe_get32 (dll, opthdr_ofs + 100); +# nsections = pe_get16 (dll, pe_header_offset + 4 +2); +# secptr = (pe_header_offset + 4 + 20 + +# pe_get16 (dll, pe_header_offset + 4 + 16)); +# +# expptr = 0; +# for (i = 0; i < nsections; i++) +# { +# char sname[8]; +# unsigned long secptr1 = secptr + 40 * i; +# unsigned long vaddr = pe_get32 (dll, secptr1 + 12); +# unsigned long vsize = pe_get32 (dll, secptr1 + 16); +# unsigned long fptr = pe_get32 (dll, secptr1 + 20); +# lseek(dll, secptr1, SEEK_SET); +# read(dll, sname, 8); +# if (vaddr <= export_rva && vaddr+vsize > export_rva) +# { +# expptr = fptr + (export_rva - vaddr); +# if (export_rva + export_size > vaddr + vsize) +# export_size = vsize - (export_rva - vaddr); +# break; +# } +# } +# +# expdata = (unsigned char*)malloc(export_size); +# lseek (dll, expptr, SEEK_SET); +# read (dll, expdata, export_size); +# erva = expdata - export_rva; +# +# nexp = pe_as32 (expdata+24); +# name_rvas = pe_as32 (expdata+32); +# +# printf ("EXPORTS\n"); +# for (i = 0; i> "${ofile}T" || (rm -f "${ofile}T"; exit 1) + + mv -f "${ofile}T" "$ofile" || \ + (rm -f "$ofile" && cp "${ofile}T" "$ofile" && rm -f "${ofile}T") + chmod +x "$ofile" +fi + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + +### Default CFLAGS +DEFAULT_CFLAGS="" +DEFAULT_CFLAGS="-O -g3 -Wall -Wcast-align -Wstrict-prototypes \ +-Wmissing-prototypes -Wmissing-declarations -Wpointer-arith \ +-Wnested-externs -D_REENTRANT" + + + +### Check for platform +case $host in +AIX) +cat >>confdefs.h <<\_ACEOF +#define HTS_PLATFORM 1 +_ACEOF +;; +*-solaris*) +cat >>confdefs.h <<\_ACEOF +#define HTS_PLATFORM 2 +_ACEOF +;; +*-linux-gnu | *-irix6*) +cat >>confdefs.h <<\_ACEOF +#define HTS_PLATFORM 3 +_ACEOF +;; +esac + +### Check size of long and long long. +echo "$as_me:$LINENO: checking for long" >&5 +echo $ECHO_N "checking for long... $ECHO_C" >&6 +if test "${ac_cv_type_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +if ((long *) 0) + return 0; +if (sizeof (long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_long=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 +echo "${ECHO_T}$ac_cv_type_long" >&6 + +echo "$as_me:$LINENO: checking size of long" >&5 +echo $ECHO_N "checking size of long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (long)); } +unsigned long ulongval () { return (long) (sizeof (long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG $ac_cv_sizeof_long +_ACEOF + + +echo "$as_me:$LINENO: checking for long long" >&5 +echo $ECHO_N "checking for long long... $ECHO_C" >&6 +if test "${ac_cv_type_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +if ((long long *) 0) + return 0; +if (sizeof (long long)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_long_long=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_long_long=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_long_long" >&5 +echo "${ECHO_T}$ac_cv_type_long_long" >&6 + +echo "$as_me:$LINENO: checking size of long long" >&5 +echo $ECHO_N "checking size of long long... $ECHO_C" >&6 +if test "${ac_cv_sizeof_long_long+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test "$ac_cv_type_long_long" = yes; then + # The cast to unsigned long works around a bug in the HP C Compiler + # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects + # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. + # This bug is HP SR number 8606223364. + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr $ac_mid + 1` + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=-1 ac_mid=-1 + while :; do + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) >= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_hi=`expr '(' $ac_mid ')' - 1` + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + ac_mid=`expr 2 '*' $ac_mid` +fi +rm -f conftest.$ac_objext conftest.$ac_ext + done +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo= ac_hi= +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +rm -f conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((long) (sizeof (long long))) <= $ac_mid)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_lo=`expr '(' $ac_mid ')' + 1` +fi +rm -f conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in +?*) ac_cv_sizeof_long_long=$ac_lo;; +'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77" >&2;} + { (exit 1); exit 1; }; } ;; +esac +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +$ac_includes_default +long longval () { return (long) (sizeof (long long)); } +unsigned long ulongval () { return (long) (sizeof (long long)); } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + exit (1); + if (((long) (sizeof (long long))) < 0) + { + long i = longval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%ld\n", i); + } + else + { + unsigned long i = ulongval (); + if (i != ((long) (sizeof (long long)))) + exit (1); + fprintf (f, "%lu\n", i); + } + exit (ferror (f) || fclose (f) != 0); + + ; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sizeof_long_long=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) +{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long long), 77" >&5 +echo "$as_me: error: cannot compute sizeof (long long), 77" >&2;} + { (exit 1); exit 1; }; } +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_long_long=0 +fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sizeof_long_long" >&5 +echo "${ECHO_T}$ac_cv_sizeof_long_long" >&6 +cat >>confdefs.h <<_ACEOF +#define SIZEOF_LONG_LONG $ac_cv_sizeof_long_long +_ACEOF + + + +### Check LLint format +if test x"$ac_cv_sizeof_long" = x"8" +then +echo "$as_me:$LINENO: checking long printf format" >&5 +echo $ECHO_N "checking long printf format... $ECHO_C" >&6 +if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +main() { long int c = -1, d = -1; char* f = "%ld"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:$LINENO: result: found" >&5 +echo "${ECHO_T}found" >&6 + +cat >>confdefs.h <<\_ACEOF +#define LLINT_FORMAT "%ld" +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define LLINT_TYPE long int +_ACEOF + + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) + +if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +main() { long int c = -1, d = -1; char* f = "%d"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:$LINENO: result: found" >&5 +echo "${ECHO_T}found" >&6 + +cat >>confdefs.h <<\_ACEOF +#define LLINT_FORMAT "%d" +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define LLINT_TYPE long int +_ACEOF + + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6, + echo "$as_me:$LINENO: result: assuming not on target machine" >&5 +echo "${ECHO_T}assuming not on target machine" >&6 + +cat >>confdefs.h <<\_ACEOF +#define LLINT_FORMAT "%d" +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define LLINT_TYPE int +_ACEOF + + +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +elif test x"$ac_cv_sizeof_long_long" = x"8" +then +echo "$as_me:$LINENO: checking long long printf format" >&5 +echo $ECHO_N "checking long long printf format... $ECHO_C" >&6 +if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +main() { long long int c = -1, d = -1; char* f = "%lld"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + echo "$as_me:$LINENO: result: found" >&5 +echo "${ECHO_T}found" >&6 + +cat >>confdefs.h <<\_ACEOF +#define LLINT_FORMAT "%lld" +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define LLINT_TYPE long long int +_ACEOF + + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) + +if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +main() { long long int c = -1, d = -1; char* f = "%ld"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:$LINENO: result: found" >&5 +echo "${ECHO_T}found" >&6 + +cat >>confdefs.h <<\_ACEOF +#define LLINT_FORMAT "%ld" +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define LLINT_TYPE long long int +_ACEOF + + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) + +if test "$cross_compiling" = yes; then + { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling" >&5 +echo "$as_me: error: cannot run test program while cross compiling" >&2;} + { (exit 1); exit 1; }; } +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +main() { long long int c = -1, d = -1; char* f = "%d"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } + +_ACEOF +rm -f conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + + echo "$as_me:$LINENO: result: found" >&5 +echo "${ECHO_T}found" >&6 + +cat >>confdefs.h <<\_ACEOF +#define LLINT_FORMAT "%d" +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define LLINT_TYPE long long int +_ACEOF + + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +( exit $ac_status ) + + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6, + echo "$as_me:$LINENO: result: assuming not on target machine" >&5 +echo "${ECHO_T}assuming not on target machine" >&6 + +cat >>confdefs.h <<\_ACEOF +#define LLINT_FORMAT "%d" +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define LLINT_TYPE int +_ACEOF + + +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + +fi +rm -f core core.* *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi +else + +cat >>confdefs.h <<\_ACEOF +#define LLINT_FORMAT "%d" +_ACEOF + + +cat >>confdefs.h <<\_ACEOF +#define LLINT_TYPE int +_ACEOF + +fi + +### check for in_addr_t +echo "$as_me:$LINENO: checking for in_addr_t" >&5 +echo $ECHO_N "checking for in_addr_t... $ECHO_C" >&6 +if test "${ac_cv_type_in_addr_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" +#include +#include + +int +main () +{ +if ((in_addr_t *) 0) + return 0; +if (sizeof (in_addr_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_in_addr_t=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_type_in_addr_t=no +fi +rm -f conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_in_addr_t" >&5 +echo "${ECHO_T}$ac_cv_type_in_addr_t" >&6 +if test $ac_cv_type_in_addr_t = yes; then + +cat >>confdefs.h <<\_ACEOF +#define HTS_DO_NOT_REDEFINE_in_addr_t +_ACEOF + +else + { echo "$as_me:$LINENO: WARNING: *** in_addr_t not found" >&5 +echo "$as_me: WARNING: *** in_addr_t not found" >&2;} +fi + + +### Support IPv6 +echo "$as_me:$LINENO: checking for getaddrinfo in -lc" >&5 +echo $ECHO_N "checking for getaddrinfo in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_getaddrinfo+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char getaddrinfo (); +int +main () +{ +getaddrinfo (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_c_getaddrinfo=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_c_getaddrinfo=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_c_getaddrinfo" >&5 +echo "${ECHO_T}$ac_cv_lib_c_getaddrinfo" >&6 +if test $ac_cv_lib_c_getaddrinfo = yes; then + V6_FLAG="-DINET6" + +cat >>confdefs.h <<\_ACEOF +#define HTS_INET6 1 +_ACEOF + +else + { echo "$as_me:$LINENO: WARNING: *** IPv6 not found IPv6 compatibility disabled" >&5 +echo "$as_me: WARNING: *** IPv6 not found IPv6 compatibility disabled" >&2;} +fi + + + +### Check for LFS +echo "$as_me:$LINENO: checking for fopen64 in -lc" >&5 +echo $ECHO_N "checking for fopen64 in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_fopen64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char fopen64 (); +int +main () +{ +fopen64 (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_c_fopen64=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_c_fopen64=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_c_fopen64" >&5 +echo "${ECHO_T}$ac_cv_lib_c_fopen64" >&6 +if test $ac_cv_lib_c_fopen64 = yes; then + LFS_FLAG="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" + +cat >>confdefs.h <<\_ACEOF +#define HTS_LFS 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + + + +### Check for pthread +echo "$as_me:$LINENO: checking for pthread_create in -lpthread" >&5 +echo $ECHO_N "checking for pthread_create in -lpthread... $ECHO_C" >&6 +if test "${ac_cv_lib_pthread_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthread $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthread_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_pthread_pthread_create=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthread_pthread_create" >&6 +if test $ac_cv_lib_pthread_pthread_create = yes; then + THREADS_LIBS=-lpthread + +cat >>confdefs.h <<\_ACEOF +#define THREADS 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + + +if test x$THREADS_LIBS = x +then +echo "$as_me:$LINENO: checking for pthread_create in -lc" >&5 +echo $ECHO_N "checking for pthread_create in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_c_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_c_pthread_create=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_c_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_c_pthread_create" >&6 +if test $ac_cv_lib_c_pthread_create = yes; then + THREADS_LIBS= + +cat >>confdefs.h <<\_ACEOF +#define THREADS 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + + +if test x$THREADS_LIBS = x +then +echo "$as_me:$LINENO: checking for pthread_create in -lpthreads" >&5 +echo $ECHO_N "checking for pthread_create in -lpthreads... $ECHO_C" >&6 +if test "${ac_cv_lib_pthreads_pthread_create+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpthreads $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char pthread_create (); +int +main () +{ +pthread_create (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pthreads_pthread_create=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_pthreads_pthread_create=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pthreads_pthread_create" >&5 +echo "${ECHO_T}$ac_cv_lib_pthreads_pthread_create" >&6 +if test $ac_cv_lib_pthreads_pthread_create = yes; then + THREADS_LIBS= + +cat >>confdefs.h <<\_ACEOF +#define THREADS 1 +_ACEOF + +else + { echo "$as_me:$LINENO: WARNING: *** not found" >&5 +echo "$as_me: WARNING: *** not found" >&2;} +fi + + +fi +fi +THREADS_CFLAGS= + + +### Check for socket/nsl (solaris) +echo "$as_me:$LINENO: checking for socket in -lsocket" >&5 +echo $ECHO_N "checking for socket in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_socket+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char socket (); +int +main () +{ +socket (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_socket_socket=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_socket_socket=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_socket_socket" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_socket" >&6 +if test $ac_cv_lib_socket_socket = yes; then + SOCKET_LIBS="-lnsl -lsocket" + +cat >>confdefs.h <<\_ACEOF +#define LIBSOCKET 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not necessary" >&5 +echo "${ECHO_T}not necessary" >&6 +fi + + + +### Check for dlsym +echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_dl_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_dl_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 +if test $ac_cv_lib_dl_dlopen = yes; then + DL_LIBS=-ldl + +cat >>confdefs.h <<\_ACEOF +#define DLLIB 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + + +if test x$DL_LIBS = x +then +echo "$as_me:$LINENO: checking for dlopen in -lc" >&5 +echo $ECHO_N "checking for dlopen in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_dlopen+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char dlopen (); +int +main () +{ +dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_c_dlopen=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_c_dlopen=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_c_dlopen" >&5 +echo "${ECHO_T}$ac_cv_lib_c_dlopen" >&6 +if test $ac_cv_lib_c_dlopen = yes; then + DL_LIBS= + +cat >>confdefs.h <<\_ACEOF +#define DLLIB 1 +_ACEOF + +else + { echo "$as_me:$LINENO: WARNING: *** not found * this is bad" >&5 +echo "$as_me: WARNING: *** not found * this is bad" >&2;} +fi + + +fi + +### Check for ftime +echo "$as_me:$LINENO: checking for ftime in -lc" >&5 +echo $ECHO_N "checking for ftime in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_ftime+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ftime (); +int +main () +{ +ftime (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_c_ftime=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_c_ftime=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_c_ftime" >&5 +echo "${ECHO_T}$ac_cv_lib_c_ftime" >&6 +if test $ac_cv_lib_c_ftime = yes; then + + +cat >>confdefs.h <<\_ACEOF +#define FTIME 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + + +### Check for setuid +echo "$as_me:$LINENO: checking for setuid in -lc" >&5 +echo $ECHO_N "checking for setuid in -lc... $ECHO_C" >&6 +if test "${ac_cv_lib_c_setuid+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lc $LIBS" +cat >conftest.$ac_ext <<_ACEOF +#line $LINENO "configure" +#include "confdefs.h" + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char setuid (); +int +main () +{ +setuid (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_c_setuid=yes +else + echo "$as_me: failed program was:" >&5 +cat conftest.$ac_ext >&5 +ac_cv_lib_c_setuid=no +fi +rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_c_setuid" >&5 +echo "${ECHO_T}$ac_cv_lib_c_setuid" >&6 +if test $ac_cv_lib_c_setuid = yes; then + + +cat >>confdefs.h <<\_ACEOF +#define SETUID 1 +_ACEOF + +else + echo "$as_me:$LINENO: result: not found" >&5 +echo "${ECHO_T}not found" >&6 +fi + + + ac_config_files="$ac_config_files Makefile src/Makefile man/Makefile libtest/Makefile templates/Makefile lang/Makefile html/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, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *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 \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + 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}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ 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[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_i=`echo "$ac_i" | + sed 's/\$U\././;s/\.o$//;s/\.obj$//'` + # 2. Add them. + ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF +#! $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 +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# 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+"$@"}'='"$@"' +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# Work around bugs in pre-3.0 UWIN ksh. +$as_unset ENV MAIL MAILPATH +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +for as_var in LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE LC_NUMERIC LC_MESSAGES LC_TIME +do + if (set +x; test -n "`(eval $as_var=C; export $as_var) 2>&1`"); then + eval $as_var=C; export $as_var + else + $as_unset $as_var + fi +done + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1; 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 + + +# Name of the executable. +as_me=`$as_basename "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)$' \| \ + . : '\(.\)' 2>/dev/null || +echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } + /^X\/\(\/\/\)$/{ s//\1/; q; } + /^X\/\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + + +# PATH needs CR, and LINENO needs CR and PATH. +# 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 + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + echo "#! /bin/sh" >conftest.sh + echo "exit 0" >>conftest.sh + chmod +x conftest.sh + if (PATH="/nonexistent;."; conftest.sh) >/dev/null 2>&1; then + PATH_SEPARATOR=';' + else + PATH_SEPARATOR=: + fi + rm -f conftest.sh +fi + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" || { + # Find who we are. Look in the path if we contain no path at all + # relative or not. + 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 + + ;; + 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 + { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 +echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} + { (exit 1); exit 1; }; } + fi + case $CONFIG_SHELL in + '') + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for as_base in sh bash ksh sh5; do + case $as_dir in + /*) + if ("$as_dir/$as_base" -c ' + as_lineno_1=$LINENO + as_lineno_2=$LINENO + as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then + $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } + $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } + CONFIG_SHELL=$as_dir/$as_base + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$0" ${1+"$@"} + fi;; + esac + done +done +;; + esac + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line before each line; the second 'sed' does the real + # work. The second script uses 'N' to pair each line-number line + # with the numbered line, and appends trailing '-' during + # substitution so that $LINENO is not a special case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) + sed '=' <$as_myself | + sed ' + N + s,$,-, + : loop + s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, + t loop + s,-$,, + s,^['$as_cr_digits']*\n,, + ' >$as_me.lineno && + chmod +x $as_me.lineno || + { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 +echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} + { (exit 1); exit 1; }; } + + # 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 sensible to this). + . ./$as_me.lineno + # Exit status is that of the last command. + exit +} + + +case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in + *c*,-n*) ECHO_N= ECHO_C=' +' ECHO_T=' ' ;; + *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; + *) ECHO_N= ECHO_C='\c' ECHO_T= ;; +esac + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + as_mkdir_p=false +fi + +as_executable_p="test -f" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="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="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH + +exec 6>&1 + +# Open the log real soon, to keep \$[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. Logging --version etc. is OK. +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX +} >&5 +cat >&5 <<_CSEOF + +This file was extended by $as_me, which was +generated by GNU Autoconf 2.54. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +_CSEOF +echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 +echo >&5 +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS +fi + +cat >>$CONFIG_STATUS <<\_ACEOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -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 ." +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.54, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir=$srcdir +INSTALL="$INSTALL" +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +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=$1 + ac_optarg=$2 + ac_shift=shift + ;; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_option=$1 + ac_need_defaults=false;; + esac + + case $ac_option in + # Handling of the options. +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:$LINENO: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + CONFIG_FILES="$CONFIG_FILES $ac_optarg" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&5 +echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF +# +# INIT-COMMANDS section. +# + +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + + + +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "man/Makefile" ) CONFIG_FILES="$CONFIG_FILES man/Makefile" ;; + "libtest/Makefile" ) CONFIG_FILES="$CONFIG_FILES libtest/Makefile" ;; + "templates/Makefile" ) CONFIG_FILES="$CONFIG_FILES templates/Makefile" ;; + "lang/Makefile" ) CONFIG_FILES="$CONFIG_FILES lang/Makefile" ;; + "html/Makefile" ) CONFIG_FILES="$CONFIG_FILES html/Makefile" ;; + "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + 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 + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@DEFS@,$DEFS,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@LIBS@,$LIBS,;t t +s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t +s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t +s,@INSTALL_DATA@,$INSTALL_DATA,;t t +s,@CYGPATH_W@,$CYGPATH_W,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@VERSION@,$VERSION,;t t +s,@ACLOCAL@,$ACLOCAL,;t t +s,@AUTOCONF@,$AUTOCONF,;t t +s,@AUTOMAKE@,$AUTOMAKE,;t t +s,@AUTOHEADER@,$AUTOHEADER,;t t +s,@MAKEINFO@,$MAKEINFO,;t t +s,@AMTAR@,$AMTAR,;t t +s,@install_sh@,$install_sh,;t t +s,@STRIP@,$STRIP,;t t +s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t +s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t +s,@AWK@,$AWK,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAINTAINER_MODE_TRUE@,$MAINTAINER_MODE_TRUE,;t t +s,@MAINTAINER_MODE_FALSE@,$MAINTAINER_MODE_FALSE,;t t +s,@MAINT@,$MAINT,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@DEPDIR@,$DEPDIR,;t t +s,@am__include@,$am__include,;t t +s,@am__quote@,$am__quote,;t t +s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t +s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t +s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t +s,@CCDEPMODE@,$CCDEPMODE,;t t +s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t +s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +s,@CXXDEPMODE@,$CXXDEPMODE,;t t +s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t +s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@LN_S@,$LN_S,;t t +s,@ECHO@,$ECHO,;t t +s,@RANLIB@,$RANLIB,;t t +s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@DEFAULT_CFLAGS@,$DEFAULT_CFLAGS,;t t +s,@VERSION_INFO@,$VERSION_INFO,;t t +s,@V6_FLAG@,$V6_FLAG,;t t +s,@LFS_FLAG@,$LFS_FLAG,;t t +s,@THREADS_LIBS@,$THREADS_LIBS,;t t +s,@THREADS_CFLAGS@,$THREADS_CFLAGS,;t t +s,@SOCKET_LIBS@,$SOCKET_LIBS,;t t +s,@DL_LIBS@,$DL_LIBS,;t t +s,@LIBOBJS@,$LIBOBJS,;t t +s,@LTLIBOBJS@,$LTLIBOBJS,;t t +CEOF + +_ACEOF + + cat >>$CONFIG_STATUS <<\_ACEOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while $ac_more_lines; do + if test $ac_beg -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # is no need to browse any of the substitutions). + # These are the two extra sed commands mentioned above. + (echo ':t + /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr $ac_sed_frag + 1` + ac_beg=$ac_end + ac_end=`expr $ac_end + $ac_max_sed_lines` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_builddir$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # 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. */ + if test x"$ac_file" = x-; then + configure_input= + else + configure_input="$ac_file. " + fi + configure_input=$configure_input"Generated from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF + sed "$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;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,@top_builddir@,$ac_top_builddir,;t t +s,@abs_top_builddir@,$ac_abs_top_builddir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + mv $tmp/out $ac_file + else + cat $tmp/out + rm -f $tmp/out + fi + +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case $ac_file in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo $srcdir/$f + else + # /dev/null tree + { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +_ACEOF + +# Transform confdefs.h into two sed scripts, `conftest.defines' and +# `conftest.undefs', that substitutes the proper values into +# config.h.in to produce config.h. The first handles `#define' +# templates, and the second `#undef' templates. +# And first: Protect against being on the right side of a sed subst in +# config.status. Protect against being in an unquoted here document +# in config.status. +rm -f conftest.defines conftest.undefs +# Using a here document instead of a string reduces the quoting nightmare. +# Putting comments in sed scripts is not portable. +# +# `end' is used to avoid that the second main sed command (meant for +# 0-ary CPP macros) applies to n-ary macro definitions. +# See the Autoconf documentation for `clear'. +cat >confdef2sed.sed <<\_ACEOF +s/[\\&,]/\\&/g +s,[\\$`],\\&,g +t clear +: clear +s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp +t end +s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp +: end +_ACEOF +# If some macros were called several times there might be several times +# the same #defines, which is useless. Nevertheless, we may not want to +# sort them, since we want the *last* AC-DEFINE to be honored. +uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines +sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs +rm -f confdef2sed.sed + +# This sed command replaces #undef with comments. This is necessary, for +# example, in the case of _POSIX_SOURCE, which is predefined and required +# on some systems where configure will not decide to define it. +cat >>conftest.undefs <<\_ACEOF +s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, +_ACEOF + +# Break up conftest.defines because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS +echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS +echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS +echo ' :' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.defines >/dev/null +do + # Write a limited-size here document to $tmp/defines.sed. + echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#define' lines. + echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/defines.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail + rm -f conftest.defines + mv conftest.tail conftest.defines +done +rm -f conftest.defines +echo ' fi # grep' >>$CONFIG_STATUS +echo >>$CONFIG_STATUS + +# Break up conftest.undefs because some shells have a limit on the size +# of here documents, and old seds have small limits too (100 cmds). +echo ' # Handle all the #undef templates' >>$CONFIG_STATUS +rm -f conftest.tail +while grep . conftest.undefs >/dev/null +do + # Write a limited-size here document to $tmp/undefs.sed. + echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS + # Speed up: don't consider the non `#undef' + echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS + # Work around the forget-to-reset-the-flag bug. + echo 't clr' >>$CONFIG_STATUS + echo ': clr' >>$CONFIG_STATUS + sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS + echo 'CEOF + sed -f $tmp/undefs.sed $tmp/in >$tmp/out + rm -f $tmp/in + mv $tmp/out $tmp/in +' >>$CONFIG_STATUS + sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail + rm -f conftest.undefs + mv conftest.tail conftest.undefs +done +rm -f conftest.undefs + +cat >>$CONFIG_STATUS <<\_ACEOF + # 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. */ + if test x"$ac_file" = x-; then + echo "/* Generated by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + rm -f $tmp/in + if test x"$ac_file" != x-; then + if cmp -s $ac_file $tmp/config.h 2>/dev/null; then + { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`(dirname "$ac_file") 2>/dev/null || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p "$ac_dir" + else + as_dir="$ac_dir" + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 +echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} + { (exit 1); exit 1; }; }; } + + rm -f $ac_file + mv $tmp/config.h $ac_file + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +_am_stamp_count=`expr ${_am_stamp_count-0} + 1` +echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || +$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X$ac_file : 'X\(//\)[^/]' \| \ + X$ac_file : 'X\(//\)$' \| \ + X$ac_file : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X$ac_file | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'`/stamp-h$_am_stamp_count +done +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF + +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_dir=`(dirname "$ac_dest") 2>/dev/null || +$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_dest" : 'X\(//\)[^/]' \| \ + X"$ac_dest" : 'X\(//\)$' \| \ + X"$ac_dest" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_dest" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + ac_builddir=. + +if test "$ac_dir" != .; then + ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` + # A "../" for each directory in $ac_dir_suffix. + ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` +else + ac_dir_suffix= ac_top_builddir= +fi + +case $srcdir in + .) # No --srcdir option. We are building in place. + ac_srcdir=. + if test -z "$ac_top_builddir"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir ;; + *) # Relative path. + ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_builddir$srcdir ;; +esac +# Don't blindly perform a `cd "$ac_dir"/$ac_foo && pwd` since $ac_foo can be +# absolute. +ac_abs_builddir=`cd "$ac_dir" && cd $ac_builddir && pwd` +ac_abs_top_builddir=`cd "$ac_dir" && cd ${ac_top_builddir}. && pwd` +ac_abs_srcdir=`cd "$ac_dir" && cd $ac_srcdir && pwd` +ac_abs_top_srcdir=`cd "$ac_dir" && cd $ac_top_srcdir && pwd` + + + { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 +echo "$as_me: executing $ac_dest commands" >&6;} + case $ac_dest in + depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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. + # So let's grep whole file. + if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then + dirpart=`(dirname "$mf") 2>/dev/null || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +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 + grep '^DEP_FILES *= *[^ #]' < "$mf" > /dev/null || continue + # Extract the definition of DEP_FILES from the Makefile without + # running `make'. + DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` + test -z "$DEPDIR" && continue + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n -e '/^U = / s///p' < "$mf"` + test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" + # 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 -e ' + /^DEP_FILES = .*\\\\$/ { + s/^DEP_FILES = // + :loop + s/\\\\$// + p + n + /\\\\$/ b loop + p + } + /^DEP_FILES = / s/^DEP_FILES = //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=`(dirname "$file") 2>/dev/null || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + { if $as_mkdir_p; then + mkdir -p $dirpart/$fdir + else + as_dir=$dirpart/$fdir + as_dirs= + while test ! -d "$as_dir"; do + as_dirs="$as_dir $as_dirs" + as_dir=`(dirname "$as_dir") 2>/dev/null || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + done + test ! -n "$as_dirs" || mkdir $as_dirs + fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 +echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} + { (exit 1); exit 1; }; }; } + + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + esac +done +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + + +# 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=: + exec 5>/dev/null + $SHELL $CONFIG_STATUS || 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 || { (exit 1); exit 1; } +fi + diff --git a/configure.in b/configure.in new file mode 100644 index 0000000..c7f132e --- /dev/null +++ b/configure.in @@ -0,0 +1,173 @@ +AC_INIT(src/httrack.c) +AM_CONFIG_HEADER(config.h) +AM_INIT_AUTOMAKE(httrack, 3.30.01) +VERSION_INFO="1:330:0" +AM_MAINTAINER_MODE + +AC_PREREQ(2.50) + +AC_PROG_CC +AC_PROG_CXX +AC_STDC_HEADERS +AM_PROG_LIBTOOL + +### Default CFLAGS +DEFAULT_CFLAGS="" +DEFAULT_CFLAGS="-O -g3 -Wall -Wcast-align -Wstrict-prototypes \ +-Wmissing-prototypes -Wmissing-declarations -Wpointer-arith \ +-Wnested-externs -D_REENTRANT" +AC_SUBST(DEFAULT_CFLAGS) +AC_SUBST(VERSION_INFO) + +### Check for platform +case $host in +AIX) AC_DEFINE(HTS_PLATFORM, 1, [Defined to build under AIX]);; +*-solaris*) AC_DEFINE(HTS_PLATFORM, 2, [Defined to build under solaris]);; +*-linux-gnu | *-irix6*) AC_DEFINE(HTS_PLATFORM, 3, [Defined to build under Linux]);; +esac + +### Check size of long and long long. +AC_CHECK_SIZEOF(long) +AC_CHECK_SIZEOF(long long) + +### Check LLint format +if test x"$ac_cv_sizeof_long" = x"8" +then +AC_MSG_CHECKING(long printf format) +AC_TRY_RUN([#include +main() { long int c = -1, d = -1; char* f = "%ld"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } +], + [AC_MSG_RESULT(found) + AC_DEFINE(LLINT_FORMAT,"%ld",[LLint format]) + AC_DEFINE(LLINT_TYPE,long int,[LLint type]) +], +[ +AC_TRY_RUN([#include +main() { long int c = -1, d = -1; char* f = "%d"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } +], +[ + AC_MSG_RESULT(found) + AC_DEFINE(LLINT_FORMAT,"%d",[LLint format]) + AC_DEFINE(LLINT_TYPE,long int,[LLint type]) +], +[ + AC_MSG_RESULT(no), + AC_MSG_RESULT(assuming not on target machine) + AC_DEFINE(LLINT_FORMAT,"%d",[LLint format]) + AC_DEFINE(LLINT_TYPE,int,[LLint type]) +]) +]) +elif test x"$ac_cv_sizeof_long_long" = x"8" +then +AC_MSG_CHECKING(long long printf format) +AC_TRY_RUN([#include +main() { long long int c = -1, d = -1; char* f = "%lld"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } +], + [AC_MSG_RESULT(found) + AC_DEFINE(LLINT_FORMAT,"%lld",[LLint format]) + AC_DEFINE(LLINT_TYPE,long long int,[LLint type]) +], +[ +AC_TRY_RUN([#include +main() { long long int c = -1, d = -1; char* f = "%ld"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } +], +[ + AC_MSG_RESULT(found) + AC_DEFINE(LLINT_FORMAT,"%ld",[LLint format]) + AC_DEFINE(LLINT_TYPE,long long int,[LLint type]) +], +[ +AC_TRY_RUN([#include +main() { long long int c = -1, d = -1; char* f = "%d"; sscanf("1234", f, &c, &d); + exit (c != 1234 || d != -1); } +], +[ + AC_MSG_RESULT(found) + AC_DEFINE(LLINT_FORMAT,"%d",[LLint format]) + AC_DEFINE(LLINT_TYPE,long long int,[LLint type]) +], +[ + AC_MSG_RESULT(no), + AC_MSG_RESULT(assuming not on target machine) + AC_DEFINE(LLINT_FORMAT,"%d",[LLint format]) + AC_DEFINE(LLINT_TYPE,int,[LLint type]) +]) +]) +]) +else +AC_DEFINE(LLINT_FORMAT,"%d",[LLint format]) +AC_DEFINE(LLINT_TYPE,int,[LLint type]) +fi + +### check for in_addr_t +AC_CHECK_TYPE(in_addr_t, +AC_DEFINE(HTS_DO_NOT_REDEFINE_in_addr_t,,[Check for in_addr_t]), +AC_MSG_WARN([*** in_addr_t not found]), +[#include +#include ]) + +### Support IPv6 +AC_CHECK_LIB(c, getaddrinfo, [V6_FLAG="-DINET6" +AC_DEFINE(HTS_INET6, 1,[Check for IPv6])], AC_MSG_WARN([*** IPv6 not found IPv6 compatibility disabled])) +AC_SUBST(V6_FLAG) + +### Check for LFS +AC_CHECK_LIB(c, fopen64, [LFS_FLAG="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" +AC_DEFINE(HTS_LFS, 1,[Check for large files support])], AC_MSG_RESULT([not found])) +AC_SUBST(LFS_FLAG) + +### Check for pthread +AC_CHECK_LIB(pthread, pthread_create, [THREADS_LIBS=-lpthread +AC_DEFINE(THREADS, 1,[Check for pthread])], AC_MSG_RESULT([not found])) +AC_SUBST(THREADS_LIBS) +if test x$THREADS_LIBS = x +then +AC_CHECK_LIB(c, pthread_create, [THREADS_LIBS= +AC_DEFINE(THREADS, 1,[Check for pthread in c])], AC_MSG_RESULT([not found])) +AC_SUBST(THREADS_LIBS) +if test x$THREADS_LIBS = x +then +AC_CHECK_LIB(pthreads, pthread_create, [THREADS_LIBS= +AC_DEFINE(THREADS, 1,[Check for pthread in pthreads])], AC_MSG_WARN([*** not found])) +AC_SUBST(THREADS_LIBS) +fi +fi +THREADS_CFLAGS= +AC_SUBST(THREADS_CFLAGS) + +### Check for socket/nsl (solaris) +AC_CHECK_LIB(socket, socket, [SOCKET_LIBS="-lnsl -lsocket" +AC_DEFINE(LIBSOCKET, 1,[Check for libsocket])], AC_MSG_RESULT([not necessary])) +AC_SUBST(SOCKET_LIBS) + +### Check for dlsym +AC_CHECK_LIB(dl, dlopen, [DL_LIBS=-ldl +AC_DEFINE(DLLIB, 1,[Check for dl])], AC_MSG_RESULT([not found])) +AC_SUBST(DL_LIBS) +if test x$DL_LIBS = x +then +AC_CHECK_LIB(c, dlopen, [DL_LIBS= +AC_DEFINE(DLLIB, 1,[Check for dlopen in c])], AC_MSG_WARN([*** not found * this is bad])) +AC_SUBST(DL_LIBS) +fi + +### Check for ftime +AC_CHECK_LIB(c, ftime, [ +AC_DEFINE(FTIME, 1,[Check for ftime])], AC_MSG_RESULT([not found])) + +### Check for setuid +AC_CHECK_LIB(c, setuid, [ +AC_DEFINE(SETUID, 1,[Check for setuid])], AC_MSG_RESULT([not found])) + +AC_OUTPUT([ Makefile +src/Makefile +man/Makefile +libtest/Makefile +templates/Makefile +lang/Makefile +html/Makefile +]) diff --git a/depcomp b/depcomp new file mode 100755 index 0000000..807b991 --- /dev/null +++ b/depcomp @@ -0,0 +1,423 @@ +#! /bin/sh + +# depcomp - compile a program generating dependencies as side-effects +# Copyright 1999, 2000 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +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 +# `libtool' can also be set to `yes' or `no'. + +if test -z "$depfile"; then + base=`echo "$object" | sed -e 's,^.*/,,' -e 's,\.\([^.]*\)$,.P\1,'` + dir=`echo "$object" | sed 's,/.*$,/,'` + if test "$dir" = "$object"; then + dir= + fi + # FIXME: should be _deps on DOS. + depfile="$dir.deps/$base" +fi + +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 + +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. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + 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. 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. + stripped=`echo "$object" | sed -e 's,^.*/,,' -e 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + outname="$stripped.o" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + 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,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$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" + ;; + +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 + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + else + tmpdepfile="$tmpdepfile2" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a space and a tab 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 proprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. We will use -o /dev/null later, + # however we can't do the remplacement now because + # `-o $object' might simply not be used + 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 + "$@" -o /dev/null $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 $? + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + -*) + ;; + *) + 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 proprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--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 '/^# [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 proprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 diff --git a/greetings.txt b/greetings.txt index 7abc3a7..3e29932 100644 --- a/greetings.txt +++ b/greetings.txt @@ -3,7 +3,7 @@ Informations on this project: This project has been developed by: Xavier Roche (xroche@httrack.com) for the main engine and Windows interface - and maintener for v2.0 and v3.0 + and maintainer for v2.0 and v3.0 Yann Philippot (yphilippot@lemel.fr) for the java binary .class parser David Lawrie (dalawrie@lineone.net) @@ -25,7 +25,7 @@ Pedro T. Pinheiro (Universidade Nova de Lisboa-FCT, ptiago@mail.iupi.pt) for Portuguese translations Andrei Iliev (iliev@vitaplus.ru) for Russian translations -Witold Krakowski (wkrakowski@libero.it) +Witold Krakowski (wtkrak@netscape.net ) for Italian translations Jozsef Tamas Herczeg (hdodi@freemail.hu) for Hungarian translation @@ -33,6 +33,7 @@ Paulo Neto (company@layout.com.br) for Brazilian translation Brook Qin (brookqwr@sina.com) for simplified Chinese translation +David Hing Cheong Hung (DAVEHUNG@mtr.com.hk) Addy Lin (addy1975@pchome.com.tw) for traditional Chinese translation Jesper Bramm (bramm@get2net.dk) @@ -41,6 +42,7 @@ T for Estonian translation Staffan Ström (staffan@fam-strom.org) for Swedish translation +Arman (Armish) Aksoy (armish@linux-sevenler.de) Mehmet Akif Köeoðlu (mak@ttnet.net.tr) for Turkish translation Aleksandar Savic (aleks@macedonia.eu.org) @@ -51,9 +53,19 @@ Martin Sereday (sereday@slovanet.sk) for Slovak translation Antonín Matìjèík (matejcik@volny.cz) for Czech translation +Andrij Shevchuk (http://programy.com.ua) + for Ukrainian translation +Tobias "Spug" Langhoff (spug_enigma@hotmail.com) + for Norwegian translation +Jadran Rudeciur (jrudec@email.si) + for Slovenian translation +Alin Gheorghe Miron (miron.alin@personal.ro) + for Romanian translation +Michael Papadakis (mikepap@freemail.gr) + for Greek translation Thanks to: -Kauler Leto (letok@optusnet.com.au) +Leto Kauler (molotov@tasmail.com) for the site/logos design Special Thanks to: @@ -63,6 +75,8 @@ Fred Cohen (fc@all.net) for HTTrack user's guide Greetings to: +Christian Marillat (marillat.christian@wanadoo.fr) + for autoconf compliance and .deb package Jean-loup Gailly from gzip.org for the help provided with Zlib Eric A. Young (eay@cryptsoft.com) diff --git a/history.txt b/history.txt index 616cbe3..650167b 100644 --- a/history.txt +++ b/history.txt @@ -4,9 +4,95 @@ HTTrack Website Copier release history: This file lists all changes and fixes that have been made for HTTrack. -To do & Known bugs: (fixed soon) -- Some interface problems the Windows release +3.30 ++ New: Webhttrack, a linux/unix/bsd Web GUI for httrack ++ New: "URL hack" feature ++ New: HTTP-headers charset is now propagated in the html file ++ New: loadable external engine callbacks ++ New: Experimental ".mht" archives format ++ Fixed: Query ?? bug ++ Fixed: Bogus base href without http:// ++ Fixed: Several javascript bugs ++ Fixed: UCS2 pages badly detected ++ Fixed: Build structure change does not redownload files ++ Fixed: "?foo" URL bug (link with only a query string) fixed ++ Fixed: ' or " inside non-quoted URLs ++ Fixed: keep-alive problems with bogus servers ++ Fixed: Broken .ra files ++ Fixed: More javascript bugs ++ Fixed: ftp transfers not properly monitored in the shell ++ Fixed: various fixes in webhttrack ++ Fixed: Blank final page in webhttrack ++ Fixed: Javascript comments (//) are skipped ++ Fixed: Temporary fix for "archive" bug with multiple java archives ++ Fixed: Inlined js or css files have their path relative to the parent ++ Fixed: Unescaped quotes ("") when continuing/updating in commandline mode ++ Fixed: Null-character in html page bug ++ Fixed: External depth slightly less bogus ++ Fixed: Filters based on size bogus ("less than 1KiB" is now functionning) ++ Fixed: Strange behaviour with filters (last filter "crushed") ++ Fixed: Bogus downloads when using ftp (unable to save file) ++ Fixed: Freeze with keep-alive on certain sites due to bad chunk encoding handling ++ Fixed: Problems with javascript included paths ++ Fixed: The mirror now aborts when the filesystem is full ++ Fixed: "No external pages" option fixed ++ Fixed: Javascript and \" in document.write bug fixed ++ Fixed: Two memory leaks in temporary file generation, and in link build fixed ++ Fixed: Bogus compression with non-gzip format ++ Fixed: Larger range of charsets accepted ++ Fixed: Bogus robots.txt when using comments (#) ++ Fixed: Missing MIME types for files such as .ico ++ Shell: Fixed continuous proxy search ++ Shell: Fixed missing HelpHtml/ link ++ Fixed: Overflow in htsback.c:2779 ++ Fixed: Bogus style and script expressions due to too aggressive parsing ++ Fixed: Javascript parsing bugs with \" and \' ++ Fixed: Javascript link detection bugs when comments were inserted between arguments ++ Fixed: Bug when valid empty gzip content was received ++ New: More aggressive "maximum mirroring time" and "maximum amount of bytes transfered" options ++ New: Windows file://server/path syntax handled ++ Fixed: mht archive fixes ++ Fixed: Serious bugs with filters given in commandline erased by the engine ++ Fixed: Bogus parsing of javascript: generated inside document.write() inside javascript code removed + +3.23 ++ New: Keep-alive ++ New: URLs size limit is now 1024 bytes ++ New: Bogus UCS2 html files hack ++ Fixed: base href bugs ++ Fixed: windows "dos devices" bug fixed ++ Fixed: dirty parsing now avoids "," ++ Fixed: "get non-html files near a link" option sometimes caused huge mirrors ++ Fixed: Bugs if zlib library is not found ++ Fixed: Bug with "near" and "no external pages" ++ Fixed: "Link empty" crash ++ Fixed: Several javascript bugs ++ Fixed: Keep-alive problems ("unknown response structure") ++ Fixed: Major keep-alive bug (connection not closed) ++ Fixed: 8-3 options not working, ISO9660 option improved ++ Fixed: Bogus links with embedded CR, TAB.. ++ Fixed: small ../ external link bug fixed + +3.22-3 ++ Fixed: Slow engine due to (too strict) memory checks ++ Fixed: Overflow in htscore.c:2353 ++ Fixed: Bogus chunked files with content-length fixed ++ Fixed: Folders renamed into ".txt" on Un*x platforms bug fixed! ++ New: Scan rule list (-%S) added ++ New: Cache debugging tool (-#C) added + +3.21-8 ++ New: Basic Macromedia Flash support (links extraction) ++ New: Modular design for https, flash parser and zlib ++ New: Standard autoconf/configure design on Un*x platforms ++ New: Modular design also on Windows platforms (dll/lib) ++ Fixed: Text files without extension not renamed "html" anymore ++ Fixed: Bug with "?foo" urls ++ Fixed: No chmod 755 on home anymore ++ Fixed: Stability problems due to bad file structure checks ++ Fixed: Overflow in GUI/commandline when displaying statistics ++ Fixed: Directory creation error 3.20-2 + New: HTTPS support (SSL) diff --git a/html/Makefile.am b/html/Makefile.am new file mode 100755 index 0000000..5bd12dd --- /dev/null +++ b/html/Makefile.am @@ -0,0 +1,32 @@ + +HelpHtmlrootdir = $(datadir)/doc/httrack +HelpHtmldir = $(datadir)/doc/httrack/html +HelpHtmlimgdir = $(datadir)/doc/httrack/html/img +HelpHtmldivdir = $(datadir)/doc/httrack/html/div +HelpHtmlimagesdir = $(datadir)/doc/httrack/html/images +HelpHtmlTxtdir = $(datadir)/doc/httrack/html +WebHtmldir = $(datadir)/doc/httrack/html/server +WebHtmlimagesdir = $(datadir)/doc/httrack/html/server/images +WebPixmapdir = $(datadir)/pixmaps +WebGPixmapdir = $(datadir)/httrack/icons +VFolderEntrydir = $(prefix)/share/applications + +HelpHtmlroot_DATA = ../httrack-doc.html ../history.txt +HelpHtml_DATA = *.html +HelpHtmldiv_DATA = div/search.sh +HelpHtmlimg_DATA = img/* +HelpHtmlimages_DATA = images/* +HelpHtmlTxt_DATA = ../greetings.txt ../history.txt ../license.txt +WebHtml_DATA = server/*.html +WebHtmlimages_DATA = server/images/* +# note: converted & normalized by +# ico2xpm favicon.ico -o httrack.xpm +# mogrify -format xpm -map /usr/share/doc/menu/examples/cmap.xpm httrack.xpm +WebPixmap_DATA = server/div/httrack.xpm +WebGPixmap_DATA = server/div/webhttrack.xpm +VFolderEntry_DATA = server/div/*.desktop + +EXTRA_DIST = $(HelpHtml_DATA) $(HelpHtmlimg_DATA) $(HelpHtmlimages_DATA) \ + $(HelpHtmldiv_DATA) $(WebHtml_DATA) $(WebHtmlimages_DATA) \ + $(WebPixmap_DATA) $(WebGPixmap_DATA) $(VFolderEntry_DATA) \ + httrack.css diff --git a/html/Makefile.in b/html/Makefile.in new file mode 100644 index 0000000..38f5149 --- /dev/null +++ b/html/Makefile.in @@ -0,0 +1,539 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_CFLAGS = @DEFAULT_CFLAGS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LFS_FLAG = @LFS_FLAG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +STRIP = @STRIP@ +THREADS_CFLAGS = @THREADS_CFLAGS@ +THREADS_LIBS = @THREADS_LIBS@ +V6_FLAG = @V6_FLAG@ +VERSION = @VERSION@ +VERSION_INFO = @VERSION_INFO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +HelpHtmlrootdir = $(datadir)/doc/httrack +HelpHtmldir = $(datadir)/doc/httrack/html +HelpHtmlimgdir = $(datadir)/doc/httrack/html/img +HelpHtmldivdir = $(datadir)/doc/httrack/html/div +HelpHtmlimagesdir = $(datadir)/doc/httrack/html/images +HelpHtmlTxtdir = $(datadir)/doc/httrack/html +WebHtmldir = $(datadir)/doc/httrack/html/server +WebHtmlimagesdir = $(datadir)/doc/httrack/html/server/images +WebPixmapdir = $(datadir)/pixmaps +WebGPixmapdir = $(datadir)/httrack/icons +VFolderEntrydir = $(prefix)/share/applications + +HelpHtmlroot_DATA = ../httrack-doc.html ../history.txt +HelpHtml_DATA = *.html +HelpHtmldiv_DATA = div/search.sh +HelpHtmlimg_DATA = img/* +HelpHtmlimages_DATA = images/* +HelpHtmlTxt_DATA = ../greetings.txt ../history.txt ../license.txt +WebHtml_DATA = server/*.html +WebHtmlimages_DATA = server/images/* +# note: converted & normalized by +# ico2xpm favicon.ico -o httrack.xpm +# mogrify -format xpm -map /usr/share/doc/menu/examples/cmap.xpm httrack.xpm +WebPixmap_DATA = server/div/httrack.xpm +WebGPixmap_DATA = server/div/webhttrack.xpm +VFolderEntry_DATA = server/div/*.desktop + +EXTRA_DIST = $(HelpHtml_DATA) $(HelpHtmlimg_DATA) $(HelpHtmlimages_DATA) \ + $(HelpHtmldiv_DATA) $(WebHtml_DATA) $(WebHtmlimages_DATA) \ + $(WebPixmap_DATA) $(WebGPixmap_DATA) $(VFolderEntry_DATA) \ + httrack.css + +subdir = html +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(HelpHtml_DATA) $(HelpHtmlTxt_DATA) $(HelpHtmldiv_DATA) \ + $(HelpHtmlimages_DATA) $(HelpHtmlimg_DATA) $(HelpHtmlroot_DATA) \ + $(VFolderEntry_DATA) $(WebGPixmap_DATA) $(WebHtml_DATA) \ + $(WebHtmlimages_DATA) $(WebPixmap_DATA) + +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu html/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +HelpHtmlDATA_INSTALL = $(INSTALL_DATA) +install-HelpHtmlDATA: $(HelpHtml_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(HelpHtmldir) + @list='$(HelpHtml_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(HelpHtmlDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmldir)/$$f"; \ + $(HelpHtmlDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmldir)/$$f; \ + done + +uninstall-HelpHtmlDATA: + @$(NORMAL_UNINSTALL) + @list='$(HelpHtml_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(HelpHtmldir)/$$f"; \ + rm -f $(DESTDIR)$(HelpHtmldir)/$$f; \ + done +HelpHtmlTxtDATA_INSTALL = $(INSTALL_DATA) +install-HelpHtmlTxtDATA: $(HelpHtmlTxt_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(HelpHtmlTxtdir) + @list='$(HelpHtmlTxt_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(HelpHtmlTxtDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmlTxtdir)/$$f"; \ + $(HelpHtmlTxtDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmlTxtdir)/$$f; \ + done + +uninstall-HelpHtmlTxtDATA: + @$(NORMAL_UNINSTALL) + @list='$(HelpHtmlTxt_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(HelpHtmlTxtdir)/$$f"; \ + rm -f $(DESTDIR)$(HelpHtmlTxtdir)/$$f; \ + done +HelpHtmldivDATA_INSTALL = $(INSTALL_DATA) +install-HelpHtmldivDATA: $(HelpHtmldiv_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(HelpHtmldivdir) + @list='$(HelpHtmldiv_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(HelpHtmldivDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmldivdir)/$$f"; \ + $(HelpHtmldivDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmldivdir)/$$f; \ + done + +uninstall-HelpHtmldivDATA: + @$(NORMAL_UNINSTALL) + @list='$(HelpHtmldiv_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(HelpHtmldivdir)/$$f"; \ + rm -f $(DESTDIR)$(HelpHtmldivdir)/$$f; \ + done +HelpHtmlimagesDATA_INSTALL = $(INSTALL_DATA) +install-HelpHtmlimagesDATA: $(HelpHtmlimages_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(HelpHtmlimagesdir) + @list='$(HelpHtmlimages_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(HelpHtmlimagesDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmlimagesdir)/$$f"; \ + $(HelpHtmlimagesDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmlimagesdir)/$$f; \ + done + +uninstall-HelpHtmlimagesDATA: + @$(NORMAL_UNINSTALL) + @list='$(HelpHtmlimages_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(HelpHtmlimagesdir)/$$f"; \ + rm -f $(DESTDIR)$(HelpHtmlimagesdir)/$$f; \ + done +HelpHtmlimgDATA_INSTALL = $(INSTALL_DATA) +install-HelpHtmlimgDATA: $(HelpHtmlimg_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(HelpHtmlimgdir) + @list='$(HelpHtmlimg_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(HelpHtmlimgDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmlimgdir)/$$f"; \ + $(HelpHtmlimgDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmlimgdir)/$$f; \ + done + +uninstall-HelpHtmlimgDATA: + @$(NORMAL_UNINSTALL) + @list='$(HelpHtmlimg_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(HelpHtmlimgdir)/$$f"; \ + rm -f $(DESTDIR)$(HelpHtmlimgdir)/$$f; \ + done +HelpHtmlrootDATA_INSTALL = $(INSTALL_DATA) +install-HelpHtmlrootDATA: $(HelpHtmlroot_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(HelpHtmlrootdir) + @list='$(HelpHtmlroot_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(HelpHtmlrootDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmlrootdir)/$$f"; \ + $(HelpHtmlrootDATA_INSTALL) $$d$$p $(DESTDIR)$(HelpHtmlrootdir)/$$f; \ + done + +uninstall-HelpHtmlrootDATA: + @$(NORMAL_UNINSTALL) + @list='$(HelpHtmlroot_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(HelpHtmlrootdir)/$$f"; \ + rm -f $(DESTDIR)$(HelpHtmlrootdir)/$$f; \ + done +VFolderEntryDATA_INSTALL = $(INSTALL_DATA) +install-VFolderEntryDATA: $(VFolderEntry_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(VFolderEntrydir) + @list='$(VFolderEntry_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(VFolderEntryDATA_INSTALL) $$d$$p $(DESTDIR)$(VFolderEntrydir)/$$f"; \ + $(VFolderEntryDATA_INSTALL) $$d$$p $(DESTDIR)$(VFolderEntrydir)/$$f; \ + done + +uninstall-VFolderEntryDATA: + @$(NORMAL_UNINSTALL) + @list='$(VFolderEntry_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(VFolderEntrydir)/$$f"; \ + rm -f $(DESTDIR)$(VFolderEntrydir)/$$f; \ + done +WebGPixmapDATA_INSTALL = $(INSTALL_DATA) +install-WebGPixmapDATA: $(WebGPixmap_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(WebGPixmapdir) + @list='$(WebGPixmap_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(WebGPixmapDATA_INSTALL) $$d$$p $(DESTDIR)$(WebGPixmapdir)/$$f"; \ + $(WebGPixmapDATA_INSTALL) $$d$$p $(DESTDIR)$(WebGPixmapdir)/$$f; \ + done + +uninstall-WebGPixmapDATA: + @$(NORMAL_UNINSTALL) + @list='$(WebGPixmap_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(WebGPixmapdir)/$$f"; \ + rm -f $(DESTDIR)$(WebGPixmapdir)/$$f; \ + done +WebHtmlDATA_INSTALL = $(INSTALL_DATA) +install-WebHtmlDATA: $(WebHtml_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(WebHtmldir) + @list='$(WebHtml_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(WebHtmlDATA_INSTALL) $$d$$p $(DESTDIR)$(WebHtmldir)/$$f"; \ + $(WebHtmlDATA_INSTALL) $$d$$p $(DESTDIR)$(WebHtmldir)/$$f; \ + done + +uninstall-WebHtmlDATA: + @$(NORMAL_UNINSTALL) + @list='$(WebHtml_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(WebHtmldir)/$$f"; \ + rm -f $(DESTDIR)$(WebHtmldir)/$$f; \ + done +WebHtmlimagesDATA_INSTALL = $(INSTALL_DATA) +install-WebHtmlimagesDATA: $(WebHtmlimages_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(WebHtmlimagesdir) + @list='$(WebHtmlimages_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(WebHtmlimagesDATA_INSTALL) $$d$$p $(DESTDIR)$(WebHtmlimagesdir)/$$f"; \ + $(WebHtmlimagesDATA_INSTALL) $$d$$p $(DESTDIR)$(WebHtmlimagesdir)/$$f; \ + done + +uninstall-WebHtmlimagesDATA: + @$(NORMAL_UNINSTALL) + @list='$(WebHtmlimages_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(WebHtmlimagesdir)/$$f"; \ + rm -f $(DESTDIR)$(WebHtmlimagesdir)/$$f; \ + done +WebPixmapDATA_INSTALL = $(INSTALL_DATA) +install-WebPixmapDATA: $(WebPixmap_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(WebPixmapdir) + @list='$(WebPixmap_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(WebPixmapDATA_INSTALL) $$d$$p $(DESTDIR)$(WebPixmapdir)/$$f"; \ + $(WebPixmapDATA_INSTALL) $$d$$p $(DESTDIR)$(WebPixmapdir)/$$f; \ + done + +uninstall-WebPixmapDATA: + @$(NORMAL_UNINSTALL) + @list='$(WebPixmap_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(WebPixmapdir)/$$f"; \ + rm -f $(DESTDIR)$(WebPixmapdir)/$$f; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + $(mkinstalldirs) $(distdir)/div $(distdir)/images $(distdir)/img $(distdir)/server $(distdir)/server/div $(distdir)/server/images + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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: + $(mkinstalldirs) $(DESTDIR)$(HelpHtmldir) $(DESTDIR)$(HelpHtmlTxtdir) $(DESTDIR)$(HelpHtmldivdir) $(DESTDIR)$(HelpHtmlimagesdir) $(DESTDIR)$(HelpHtmlimgdir) $(DESTDIR)$(HelpHtmlrootdir) $(DESTDIR)$(VFolderEntrydir) $(DESTDIR)$(WebGPixmapdir) $(DESTDIR)$(WebHtmldir) $(DESTDIR)$(WebHtmlimagesdir) $(DESTDIR)$(WebPixmapdir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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 + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-HelpHtmlDATA install-HelpHtmlTxtDATA \ + install-HelpHtmldivDATA install-HelpHtmlimagesDATA \ + install-HelpHtmlimgDATA install-HelpHtmlrootDATA \ + install-VFolderEntryDATA install-WebGPixmapDATA \ + install-WebHtmlDATA install-WebHtmlimagesDATA \ + install-WebPixmapDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-HelpHtmlDATA uninstall-HelpHtmlTxtDATA \ + uninstall-HelpHtmldivDATA uninstall-HelpHtmlimagesDATA \ + uninstall-HelpHtmlimgDATA uninstall-HelpHtmlrootDATA \ + uninstall-VFolderEntryDATA uninstall-WebGPixmapDATA \ + uninstall-WebHtmlDATA uninstall-WebHtmlimagesDATA \ + uninstall-WebPixmapDATA uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-HelpHtmlDATA \ + install-HelpHtmlTxtDATA install-HelpHtmldivDATA \ + install-HelpHtmlimagesDATA install-HelpHtmlimgDATA \ + install-HelpHtmlrootDATA install-VFolderEntryDATA \ + install-WebGPixmapDATA install-WebHtmlDATA \ + install-WebHtmlimagesDATA install-WebPixmapDATA install-am \ + install-data install-data-am install-exec install-exec-am \ + install-info install-info-am install-man install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall \ + uninstall-HelpHtmlDATA uninstall-HelpHtmlTxtDATA \ + uninstall-HelpHtmldivDATA uninstall-HelpHtmlimagesDATA \ + uninstall-HelpHtmlimgDATA uninstall-HelpHtmlrootDATA \ + uninstall-VFolderEntryDATA uninstall-WebGPixmapDATA \ + uninstall-WebHtmlDATA uninstall-WebHtmlimagesDATA \ + uninstall-WebPixmapDATA uninstall-am uninstall-info-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/html/abuse.html b/html/abuse.html new file mode 100644 index 0000000..1d98f95 --- /dev/null +++ b/html/abuse.html @@ -0,0 +1,591 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

For HTTrack users:

+ +
+ +

For webmasters having problems with bandwidth abuse / other abuses related to HTTrack:

+ + +

+
+ + + + + + + + + +

Advice & what not to do

+ +

Please follow these common sense rules to avoid any network abuse

+ +
+ +
    +
  • Do not overload the websites!
  • +
    +Downloading a site can overload it, if you have a fast pipe, or if you capture too many simultaneous cgi (dynamically generated pages). +
    +
      +
    • Do not download too large websites: use filters
    • +
    • Do not use too many simultaneous connections
    • +
    • Use bandwidth limits
    • +
    • Use connection limits
    • +
    • Use size limits
    • +
    • Use time limits
    • +
    • Only disable robots.txt rules with great care
    • +
    • Try not to download during working hours
    • +
    • Check your mirror transfer rate/size
    • +
    • For large mirrors, first ask the webmaster of the site
    • +
    +
    +
  • Ensure that you can copy the website
  • +
      +
    • Are the pages copyrighted?
    • +
    • Can you copy them only for private purpose?
    • +
    • Do not make online mirrors unless you are authorized to do so
    • +
    +
    +
  • Do not overload your network
  • +
      +
    • Is your (corporate, private..) network connected through dialup ISP?
    • +
    • Is your network bandwidth limited (and expensive)?
    • +
    • Are you slowing down the traffic?
    • +
    +
    +
  • Do not steal private information
  • +
      +
    • Do not grab emails
    • +
    • Do not grab private information
    • +
    +
+ +
+

+
+ + + + + + + + + +

Abuse FAQ for webmasters

+ +

How to limit network abuse +
+HTTrack Website Copier FAQ (updated - DRAFT) +

+ +
+Q: How to block offline browsers, like HTTrack?
+
+A: This is a complex question, let's study it
+
+First, there are several different reasons for that
+Why do you want to block offline browsers? :
+
+
    +
  1. Because a large part of your bandwidth is used by some users, who are slowing down the rest
  2. +
  3. Because of copyright questions (you do not want people to copy parts of your website)
  4. +
  5. Because of privacy (you do not want email grabbers to steal all your user's emails)
  6. +
+
+
+
    + + +
  1. Bandwidth abuse:
    +
    +Many Webmasters are concerned about bandwidth abuse, even if this problem is caused by +a minority of people. Offline browsers tools, like HTTrack, can be used in a WRONG way, +and +therefore are sometimes considered as a potential danger.
    +But before thinking that all offline browsers are BAD, consider this: +students, teachers, IT consultants, websurfers and many people who like your website, may +want to copy +parts of it, for their work, their studies, to teach or demonstrate to people during class +school or +shows. They might do that because they are connected through expensive modem connection, +or because they would like to consult pages while travelling, or archive sites that may be +removed +one day, make some data mining, comiling information ("if only I could find this +website I saw one day..").
    +There are many good reasons to mirror websites, and this helps many good people.
    +As a webmaster, you might be interested to use such tools, too: test broken links, move a +website to +another location, control which external links are put on your website for legal/content +control, +test the webserver response and performances, index it..
    +
    +Anyway, bandwidth abuse can be a problem. If your site is regularly "clobbered" +by evil downloaders, you have
    +various solutions. You have radical solutions, and intermediate solutions. I strongly +recomment not to use
    +radical solutions, because of the previous remarks (good people often mirror websites).
    +
    +In general, for all solutions,
    +the good thing: it will limit the bandwidth abuse
    +the bad thing: depending on the solution, it will be either a small constraint, or a fatal +nuisance (you'll get 0 visitors)
    +or, to be extreme: if you unplug the wire, there will be no bandwidth abuse
    +
    +
      + +
    1. Inform people, explain why ("please do not clobber the bandwidth")
      +Good: Will work with good people. Many good people just don't KNOW that they can slow down +a network.
      +Bad: Will **only** work with good people
      +How to do: Obvious - place a note, a warning, an article, a draw, a poeme or whatever you +want
      +
      +
    2. Use "robots.txt" file
      +Good: Easy to setup
      +Bad: Easy to override
      +How to do: Create a robots.txt file on top dir, with proper parameters
      +Example:
      +    User-agent: *
      +
      +    Disallow: /bigfolder
      +
      +
    3. Ban registered offline-browsers User-agents
      +Good: Easy to setup
      +Bad: Radical, and easy to override
      +How to do: Filter the "User-agent" HTTP header field
      +
      +
    4. Limit the bandwidth per IP (or by folders)
      +Good: Efficient
      +Bad: Multiple users behind proxies will be slow down, not really easy to setup
      +How to do: Depends on webserver. Might be done with low-level IP rules (QoS)
      +
      +
    5. Priorize small files, against large files
      +Good: Efficient if large files are the cause of abuse
      +Bad: Not always efficient
      +How to do: Depends on the webserver
      +
      +
    6. Ban abuser IPs
      +Good: Immediate solution
      +Bad: Annoying to do, useless for dynamic IPs, and not very user friendly
      +How to do: Either ban IP's on the firewall, or on the webserver (see ACLs)
      +
      +
    7. Limit abusers IPs
      +Good: Intermediate and immediate solution
      +Bad: Annoying to do, useless for dynamic IPs, and annoying to maintain..
      +How to do: Use routine QoS (fair queuing), or webserver options
      +
      +
    8. Use technical tricks (like javascript) to hide URLs
      +Good: Efficient
      +Bad: The most efficient tricks will also cause your website to he heavy, and not +user-friendly (and therefore less attractive, even for surfing users). Remember: clients +or visitors might want to consult offline your website. Advanced users will also be still +able to note the URLs and catch them. Will not work on non-javascript browsers. It will +not work if the user clicks 50 times and put downloads in background with a standard +browser
      +How to do: Most offline browsers (I would say all, but let's say most) are unable to +"understand" javascript/java properly. Reason: very tricky to handle!
      +Example:
      +You can replace:
      + + +    <a href="bigfile.zip">Foo</a>
      +
      + +by:
      + +    <script language="javascript">
      +    <!--
      +    document.write('<a h' + 're' + 'f="');
      +    document.write('bigfile' + '.' + 'zip">');
      +    // -->
      +    </script>
      +    Foo
      +    </a>
      +
      +
      +You can also use java-based applets. I would say that it is the "best of the +horrors". A big, fat, slow, bogus java applet. Avoid!
      +
      +
    9. Use technical tricks to lag offline browsers
      +Good: Efficient
      +Bad: Can be avoided by advanced users, annoying to maintain, AND potentially worst that +the illness (cgi's are often taking some CPU usage). . It will not work if the user clicks +50 times and put downloads in background with a standard browser
      +How to do: Create fake empty links that point to cgi's, with long delays
      +Example: Use things like + + +<ahref="slow.cgi?p=12786549"><nothing></a> (example in php:)
      +    <?php
      +    for($i=0;$i<10;$i++) {
      +        sleep(6);
      +        echo " ";
      +    }
      +    ?>
      +
      + +
      +
    10. Use technical tricks to temporarily ban IPs
      +Good: Efficient
      +Bad: Radical (your site will only be available online for all users), not easy to setup
      +How to to: Create fake links with "killing" targets
      +Example: Use things like <a href="killme.cgi"><nothing></a> +(again an example in php:)
      + +
      +<?php
      +	// Add IP.
      +	add_temp_firewall_rule($REMOTE_ADDR,"30s");
      +?>
      +function add_temp_firewall_rule($addr) {
      +	// The chain chhttp is flushed in a cron job to avoid ipchains overflow
      +    system("/usr/bin/sudo -u root /sbin/ipchains -I 1 chhttp -p tcp -s ".$addr." --dport 80 -j REJECT");
      +    syslog("user rejected due to too many copy attemps : ".$addr);
      +}
      +
      +
      +
      +
      +
      +
      +
    11. +
    + + +
  2. Copyright issues
    +
    +You do not want people to "steal" your website, or even copy parts of it. First, +stealing a website does not
    +require to have an offline browser. Second, direct (and credited) copy is sometimes better +than disguised
    +plagiarism. Besides, several previous remarks are also interesting here: the more +protected your website will be,
    +the potentially less attractive it will also be. There is no perfect solution, too. A +webmaster asked me one day
    +to give him a solution to prevent any website copy. Not only for offline browsers, but +also against "save as",
    +cut and paste, print.. and print screen. I replied that is was not possible, especially +for the print screen - and
    +that another potential threat was the evil photographer. Maybe with a "this document +will self-destruct in 5 seconds.."
    +or by shooting users after consulting the document.
    +More seriously, once a document is being placed on a website, there will always be the +risks of copy (or plagiarism)
    +
    +To limit the risk, previous a- and h- solutions, in "bandwidth abuse" section, +can be used
    +
    +
    +
  3. + + +
  4. Privacy
    +
    +Might be related to section 2.
    +But the greatest risk is maybe email grabbers.
    +
    +
      +
    1. A solution can be to use javascript to hide emails.
      +Good: Efficient
      +Bad: Non-javascript browsers will not have the "clickable" link
      +How to do: Use javascript to build mailto: links
      +Example:
      + +    <script language="javascript">
      +    <!--
      +    function FOS(host,nom,info) {
      +      var s;
      +      if (info == "") info=nom+"@"+host;
      +      s="mail";
      +      document.write("<a href='"+s+"to:"+nom+"@"+host+"'>"+info+"</a>");
      +    }
      +    FOS('mycompany.com','smith?subject=Hi, John','Click here to email me!')
      +    // -->
      +    </script>
      +    <noscript>
      +    smith at mycompany dot com
      +    </noscript>
      +
      +
      +
    2. Another one is to create images of emails
      +Good: Efficient, does not require javascript
      +Bad: There is still the problem of the link (mailto:), images are bigger than text, and it can cause problems for blind people (a good solution is use an ALT attribute with the email written like "smith at mycompany dot com")
      +How to do: Not so obvious of you do not want to create images by yourself
      +Example: (php, Unix)
      + + +<?php
      +/*
      +Email contact displayer
      +Usage: email.php3?id=<4 bytes of user's md5>
      +The <4 bytes of user's md5> can be calculated using the 2nd script (see below)
      +Example: http://yourhost/email.php3?id=91ff1a48
      +*/
      +$domain="mycompany.com";
      +$size=12;
      +
      +/* Find the user in the system database */
      +if (!$id)
      +  exit;
      +unset($email);
      +unset($name);
      +unset($pwd);
      +unset($apwd);
      +$email="";
      +$name="";
      +$fp=@fopen("/etc/passwd","r");
      +if ($fp) {
      +  $pwd=@fread($fp,filesize("/etc/passwd"));
      +  @fclose($fp);
      +}
      +$apwd=split("\n",$pwd);
      +foreach($apwd as $line) {
      +  $fld=split(":",$line);
      +  if (substr(md5($fld[0]),0,8) == $id) {
      +    $email=$fld[0]."@".$domain;
      +    $nm=substr($fld[4],0,strpos($fld[4],","));
      +    $name=$email;
      +    if ($nm)
      +      $name="\"".$nm."\" <".$email.">";
      +  }
      +}
      +if (!$name)
      +  exit;
      +
      +/* Create and show the image */
      +Header ("Content-type: image/gif");
      +$im = imagecreate ($size*strlen($name), $size*1.5);
      +$black = ImageColorAllocate ($im, 255, 255, 255);
      +$white = ImageColorAllocate ($im, 0,0,0);
      +ImageTTFText($im, $size, 0, 0, $size , $white, +"/usr/share/enlightenment/E-docs/aircut3.ttf",$name);
      +ImageGif ($im);
      +ImageDestroy ($im);
      +?>
      +
      +
      + +The script to find the id:
      +
      + + +#!/bin/sh
      +
      +# small script for email.php3
      +echo "Enter login:"
      +read login
      +echo "The URL is:"
      +printf "http://yourhost/email.php3?id="
      +printf $login|md5sum|cut -c1-8
      +echo
      +
      +
      + +
    3. You can also create temporary email aliases, each week, for all users
      +Good: Efficient, and you can give your real email in your reply-to address
      +Bad: Temporary emails
      +How to do: Not so hard todo
      +Example: (script & php, Unix)
      + + +#!/bin/sh
      +#
      +# Anonymous random aliases for all users
      +# changed each week, to avoid spam problems
      +# on websites
      +# (to put into /etc/cron.weekly/)
      +
      +# Each alias is regenerated each week, and valid for 2 weeks
      +
      +# prefix for all users
      +# must not be the prefix of another alias!
      +USER_PREFIX="user-"
      +
      +# valid for 2 weeks
      +ALIAS_VALID=2
      +
      +# random string
      +SECRET="my secret string `hostname -f`"
      +
      +# build
      +grep -vE "^$USER_PREFIX" /etc/aliases > /etc/aliases.new
      +for i in `cut -f1 -d':' /etc/passwd`; do
      +  if test `id -u $i` -ge 500; then
      +    off=0
      +    while test "$off" -lt $ALIAS_VALID; do
      +      THISWEEK="`date +'%Y'` $[`date +'%U'`-$off]"
      +      SECRET="`echo \"$SECRET $i $THISWEEK\" | md5sum | cut -c1-4`"
      +      FIRST=`echo $i | cut -c1-3`
      +      NAME="$USER_PREFIX$FIRST$SECRET"
      +      echo "$NAME : $i" >> /etc/aliases.new
      +      #
      +      off=$[$off+1]
      +    done
      +  fi
      +done
      +
      +# move file
      +mv -f /etc/aliases /etc/aliases.old
      +mv -f /etc/aliases.new /etc/aliases
      +
      +# update aliases
      +newaliases
      +
      +
      + +And then, put the email address in your pages through: +
      +
      + + +<a href="mailto:<?php
      +    $user="smith";
      +    $alias=exec("grep ".$user." /etc/aliases | cut -f1 -d' ' | head -n1");
      +    print $alias;
      +?>@mycompany.com>> +
      + +
    4. +
    + +
  5. + + + + + + +
+ +
+ + +
+
+
+ + + + + +
+ + + + + + + diff --git a/html/addurl.html b/html/addurl.html new file mode 100644 index 0000000..46a163a --- /dev/null +++ b/html/addurl.html @@ -0,0 +1,155 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Add a URL

+ +
+ +
    +
  1. Enter a typical Web address
  2. +
    Just type in your address in the field

    +
    +

    OR

    +
  3. Enter a Web address with authentication
  4. +
    Useful when you need basic authentication to watch the Web page

    +
    +

    OR

    +
  5. Capture a link from your Web browser to HTTrack
  6. +
    Use this tool only for form-based pages (pages delivered after submiting a form) that need some analysis

    +
    +
    +
    +Set, as explained, your Web browser proxy preferences to the values indicated : set the proxy's address, and the proxy's port, + then click on the button or link as you usually do in your Web browser. +
    The temporary proxy, installed by HTTrack, will then + capture the link and display a confirmation page. +

    +
    +
    +
    +
    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/cmddoc.html b/html/cmddoc.html new file mode 100644 index 0000000..7879071 --- /dev/null +++ b/html/cmddoc.html @@ -0,0 +1,155 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Command-Line Documentation

+ +
+ +The command-line version + +
    +
  • Command line Options
  • +
    List of all powerful command line options

    +
  • How to use httrack command-line version:
  • +
      +
    • Open a shell window
    • +
      +
      +
    • Type in httrack (or the complete path to the httrack executable)
    • +
      httrack +
      +
      +
    • Add the URLs, separated by a blank space
    • +
      httrack www.someweb.com/foo/ +
      +
      +
    • If you need, add some options (see the option list)
    • +
      httrack www.someweb.com/foo/ -O "/webs" -N4 -P proxy.myhost.com:3128 +
      +
      +
    • Launch the command line, and wait until the mirror is finishing
    • +
      You can (especially on the Unix release) press ^C to stop the mirror or put httrack in background +
      +
      +
    +
+ + +
+
+
+ + + + + +
+ + + + + diff --git a/html/contact.html b/html/contact.html new file mode 100644 index 0000000..0706f6e --- /dev/null +++ b/html/contact.html @@ -0,0 +1,270 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Contact Us!

+ +
+ +

+
+Please visit our website! +
+
+

+ +About this project: + + +
+Informations on this project:
+
+This project has been developed by:
+Xavier Roche (xroche at httrack dot com)
+  for the main engine and Windows interface
+  and maintainer for v2.0 and v3.0
+Yann Philippot (yphilippot at lemel dot fr)
+  for the java binary  dot class parser
+David Lawrie (dalawrie at lineone dot net)
+Robert Lagadec (rlagadec at yahoo dot fr)
+  for checking both English & French translations
+Juan Pablo Barrio Lera (University of León)
+  for Spanish translations
+Rainer Klueting (rainer at klueting dot de)
+Bastian Gorke (bastiang at yahoo dot com)
+Rudi Ferrari (Wyando at netcologne dot de)
+Marcus Gaza (MarcusGaza at t-online dot de)
+  for German translations
+Rudi Ferrari (Wyando at netcologne dot de)
+  for Dutch translations
+Lukasz Jokiel (Opole University of Technology, Lukasz dot Jokiel at po dot opole dot pl)
+  for Polish translations
+Rui Fernandes (CANTIC, ruiefe at mail dot malhatlantica dot pt)
+Pedro T dot  Pinheiro (Universidade Nova de Lisboa-FCT, ptiago at mail dot iupi dot pt)
+  for Portuguese translations
+Andrei Iliev (iliev at vitaplus dot ru)
+  for Russian translations
+Witold Krakowski (wtkrak at netscape dot net )
+  for Italian translations
+Jozsef Tamas Herczeg (hdodi at freemail dot hu)
+  for Hungarian translation
+Paulo Neto (company at layout dot com dot br)
+  for Brazilian translation
+Brook Qin (brookqwr at sina dot com) 
+   for simplified Chinese translation
+David Hing Cheong Hung (DAVEHUNG at mtr dot com dot hk)
+Addy Lin (addy1975 at pchome dot com dot tw)
+   for traditional Chinese translation
+Jesper Bramm (bramm at get2net dot dk)
+   for Danish translation
+Tõnu Virma
+   for Estonian translation
+Staffan Ström (staffan at fam-strom dot org)
+   for Swedish translation
+Mehmet Akif Köeoðlu (mak at ttnet dot net dot tr)
+  for Turkish translation
+Aleksandar Savic (aleks at macedonia dot eu dot org)
+  for Macedonian translation
+Takayoshi Nakasikiryo
+  for Japanese translation
+Martin Sereday (sereday at slovanet dot sk)
+  for Slovak translation
+Antonín Matìjèík (matejcik at volny dot cz)
+  for Czech translation
+Andrij Shevchuk (http://programy dot com dot ua)
+  for Ukrainian translation
+Tobias "Spug" Langhoff (spug_enigma at hotmail dot com)
+  for Norwegian translation
+Jadran Rudeciur (jrudec at email dot si)
+  for Slovenian translation
+Alin Gheorghe Miron (miron dot alin at personal dot ro)
+  for Romanian translation
+Michael Papadakis (mikepap at freemail dot gr)
+  for Greek translation
+
+Thanks to:
+Leto Kauler (molotov at tasmail dot com)
+  for the site/logos design
+
+Special Thanks to:
+Patrick Ducrot & Daniel Carré (ENSI of Caen)
+  for their initial support
+Fred Cohen (fc at all dot net)
+  for HTTrack user's guide
+
+Greetings to:
+Christian Marillat (marillat dot christian at wanadoo dot fr)
+  for autoconf compliance and  .deb package
+Jean-loup Gailly from gzip dot org
+  for the help provided with Zlib
+Eric A dot  Young (eay at cryptsoft dot com)
+  for SSL cryptographic material (OpenSSL)
+
+Russ Freeman from gipsymedia
+  for hints on DLL dynamic load
+Paul DiLascia
+  for helping to fix problems with CHtmlView
+ISMRA/Ensi of Caen 
+  for their initial support
+ .. and all users that are using and supporting HTTrack!
+
+
+
+
+ + If you want to ask any question to the authors, report bugs/problems, + please first check the HTTrack Website Copier forum.
+ You can also contact by email, but due to the large volume of messages, it is impossible + to always respond (especially for configuration help or other configuration-related + questions). +
+ + + + + +


+
+ This program is covered by the GNU General Public License.
+ HTTrack/HTTrack Website Copier is Copyright (C) 1998-2003 Xavier Roche and other contributors +
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/dev.html b/html/dev.html new file mode 100644 index 0000000..9748991 --- /dev/null +++ b/html/dev.html @@ -0,0 +1,147 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

HTTrack Programming page

+ +
+ +HTTrack can be used as a third-party program in batch files, or as library. +Depending on your needs, you may look: + +

+ + + +

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/div/search.sh b/html/div/search.sh new file mode 100644 index 0000000..8cfa325 --- /dev/null +++ b/html/div/search.sh @@ -0,0 +1,60 @@ + +#!/bin/sh + +# Simple indexing test using HTTrack +# A "real" script/program would use advanced search, and +# use dichotomy to find the word in the index.txt file +# This script is really basic and NOT optimized, and +# should not be used for professional purpose :) + +TESTSITE="http://localhost/" + +# Create an index if necessary +if ! test -f "index.txt"; then + echo "Building the index .." + rm -rf test + httrack --display "$TESTSITE" -%I -O test + mv test/index.txt ./ +fi + +# Convert crlf to lf +if test "`head index.txt -n 1 | tr '\r' '#' | grep -c '#'`" = "1"; then + echo "Converting index to Unix LF style (not CR/LF) .." + mv -f index.txt index.txt.old + cat index.txt.old|tr -d '\r' > index.txt +fi + +keyword=- +while test -n "$keyword"; do + printf "Enter a keyword: " + read keyword + + if test -n "$keyword"; then + FOUNDK="`grep -niE \"^$keyword\" index.txt`" + + if test -n "$FOUNDK"; then + if ! test `echo "$FOUNDK"|wc -l` = "1"; then + # Multiple matches + printf "Found multiple keywords: " + echo "$FOUNDK"|cut -f2 -d':'|tr '\n' ' ' + echo "" + echo "Use keyword$ to find only one" + else + # One match + N=`echo "$FOUNDK"|cut -f1 -d':'` + PM=`tail +$N index.txt|grep -nE "\("|head -n 1` + if ! echo "$PM"|grep "ignored">/dev/null; then + M=`echo $PM|cut -f1 -d':'` + echo "Found in:" + cat index.txt | tail "+$N" | head -n "$M" | grep -E "[0-9]* " | cut -f2 -d' ' + else + echo "keyword ignored (too many hits)" + fi + fi + else + echo "not found" + fi + + fi +done + diff --git a/html/faq.html b/html/faq.html new file mode 100644 index 0000000..c5146a9 --- /dev/null +++ b/html/faq.html @@ -0,0 +1,937 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

F A Q

+ +
+ +


+

    +Tips: +
  • In case of troubles/problems during transfer, first check the hts-log.txt (and hts-err.txt) files to figure out what happened. These log files report all +events that may be useful to detect a problem. You can also ajust the debug level of the log files in the option +
  • +The tutorial written by Fred Cohen is a very good document to read, to understand how to use the engine, +how the command line version works, and how the window version works, too! All options are described and explained in +clear language! +
  • +
+

+ + + +

+ +
+
+
+ +Very Frequently Asked Questions:

+ +Q: HTTrack does not capture all files I want to capture!
+A: This is a frequent question, generally related to the filters. +BUT first check if your problem is not related to the
robots.txt website rules. +
+
+Okay, let me explain how to precisely control the capture process.
+
+Let's take an example:
+
+Imagine you want to capture the following site:
+www.someweb.com/gallery/flowers/
+
+HTTrack, by default, will capture all links encountered in www.someweb.com/gallery/flowers/ or in lower directories, like +www.someweb.com/gallery/flowers/roses/.
+It will not follow links to other websites, because this behaviour might cause to capture the Web entirely!
+It will not follow links located in higher directories, too (for example, www.someweb.com/gallery/flowers/ itself) because this +might cause to capture too much data.
+
+This is the default behaviour of HTTrack, BUT, of course, if you want, you can tell HTTrack to capture other directorie(s), website(s)!.. +
+In our example, we might want also to capture all links in www.someweb.com/gallery/trees/, and in www.someweb.com/photos/
+
+This can easily done by using filters: go to the Option panel, select the 'Scan rules' tab, and enter this line: +(you can leave a blank space between each rules, instead of entering a carriage return)
++www.someweb.com/gallery/trees/*
++www.someweb.com/photos/*

+
+This means "accept all links begining with www.someweb.com/gallery/trees/ and www.someweb.com/photos/" +- the + means "accept" and the final * means "any character will match after the previous ones". +Remember the *.doc or *.zip encountered when you want to select all files from a certain type on your computer: +it is almost the same here, except the begining "+"
+
+Now, we might want to exclude all links in www.someweb.com/gallery/trees/hugetrees/, because with the previous filter, +we accepted too many files. Here again, you can add a filter rule to refuse these links. Modify the previous filters to:
++www.someweb.com/gallery/trees/*
++www.someweb.com/photos/*
+-www.someweb.com/gallery/trees/hugetrees/*

+
+You have noticed the - in the begining of the third rule: this means "refuse links matching the rule" +; and the rule is "any files begining with www.someweb.com/gallery/trees/hugetrees/
+ +Voila! With these three rules, you have precisely defined what you wanted to capture.
+
+A more complex example?
+
+Imagine that you want to accept all jpg files (files with .jpg type) that have "blue" in the name and located in www.someweb.com
++www.someweb.com/*blue*.jpg
+
+More detailed information can be found here!
+
+
+ +
+General questions:
+

+ +Q: Is there any 'spyware' or 'adware' in this program? Can you prove that there isn't any?
+A: No ads (banners), and absolutely no 'spy' features inside the program.
+The best proof is the software status: all sources are released, and everybody can check them. Open source is the best protection against privacy problems - HTTrack is an open source project, free of charge and free of any spy 'features'.
+ +

Q: This software is 'free', but I bought it from an authorized reseller . What's going on?
+A: +HTTrack is free (free as in 'freedom') as it is covered by the GNU General Public License (GPL). +You can freely download it, without paying any fees, copy it to your friends, and modify it if you respect the license. +There are NO official/authorized resellers, because HTTrack is NOT a commercial product. +But you can be charged for duplication fees, or any other services (example: software CDroms or shareware collections, or fees for maintenance), +but you should have been informed that the software was free software/GPL, and you MUST have received a copy of the GNU General Public License. +Otherwise this is dishonnest and unfair. + + +

Q: Are there any risks of viruses with this software?
+A: For the software itself: +All official releases (at httrack.com) are checked against all known viruses, and the packaging process is also checked. Archives are stored on Un*x servers, not really concerned by viruses.
+For files you are downloading on the WWW using HTTrack: You may encounter websites which were corrupted by viruses, and downloading data on these websites might be dangerous (as dangerous as if using a regular Browser). Always ensure that websites you are crawling are safe. + (Note: remember that using an antivirus software is a good idea once you are connected to the Internet)
+ +

Q: The install is not working on NT without administrator rights!
+A: That's right. You can, however, install WinHTTrack on your own machine, and then copy your WinHTTrack folder from your Program Files folder to another machine, in a temporary directory (e.g. C:\temp\) + +

Q: Where can I find French/other languages documentation?
+A: Windows interface is available on several languages, but not yet the documentation! + +

Q: Is HTTrack working on NT/2000?
+A: Yes, it does + +

Q: What's the difference between HTTrack and WinHTTrack?
+A: WinHTTrack is the Windows release of HTTrack (with a graphic shell) + +

Q: Is HTTrack Mac compatible?
+A: No, because of a lack of time. But sources are available + +

Q: Can HTTrack be compiled on all Un*x?
+A: It should. The Makefile may be modified in some cases, however + +

Q: I use HTTrack for professional purpose. What about restrictions/license fee?
+A: HTTrack is covered by the GNU General Public License (GPL). There is no restrictions using HTTrack for professional purpose, +except if you develop a software which uses HTTrack components (parts of the source, or any other component). +See the license.txt file for more information + +

Q: Is there any license royalties for distributing a mirror made with HTTrack?
+A: No. + +

Q: Is a DLL/library version available?
+A: Yes. The default distribution includes a DLL (Windows) or a .so (Un*X), used by the program + +

Q: Is there a X11/KDE shell available for Linux and Un*x?
+A: Yes. See the download/contribution section at www.httrack.com! + +

+Troubleshooting:
+

+ +Q: Some sites are captured very well, other aren't. Why?
+A: +There are several reasons (and solutions) for a mirror to fail. Reading the log files (ans this FAQ!) is generally a VERY good idea to figure out what occured. + +
+ +There are cases, however, that can not be (yet) handled: + +
    +
  • Flash sites - no full support
  • +
  • Intensive Java/Javascript sites - might be bogus/incomplete
  • +
  • Complex CGI with built-in redirect, and other tricks - very complicated to handle, and therefore might cause problems
  • +
  • Parsing problem in the HTML code (cases where the engine is fooled, for example by a false comment (<!--) which has no closing comment (-->) detected. + Rare cases, but might occur. + A bug report is then generally good! +
  • +
+ +Note: +For some sites, setting "Force old HTTP/1.0 requests" option can be useful, as this option uses more basic requests (no HEAD request for example). +This will cause a performance loss, but will increase the compatibility with some cgi-based sites. +
+ +
+ +Q: Only the first page is caught. What's wrong?
+A: First, check the hts-log.txt file (and/or hts-err.txt error log file) - this can give you precious information.
+The problem can be a website that redirects you to another site (for example, www.someweb.com to public.someweb.com) : +in this case, use filters to accept this site
+This can be, also, a problem in the HTTrack options (link depth too low, for example)
+ +

Q: With WinHTTrack, sometimes the minimize in system tray causes a crash!
+A: This bug sometimes appears in the shell on some systems. If you encounter this problem, avoid minimizing the window! + +

Q: Are https URL working?
+A: Yes, HTTrack does support (since 3.20 release) https (secure socket layer protocol) sites + +

Q: Are ipv6 URL working?
+A: Yes, HTTrack does support (since 3.20 release) ipv6 sites, using A/AAAA entries, or direct v6 addresses (like http://[3ffe:b80:12:34:56::78]/) + +

Q: Files are created with strange names, like '-1.html'!
+A: Check the build options (you may have selected user-defined structure with wrong parameters!) + +

Q: When capturing real audio/video links (.ram), I only get a shortcut!
+A: Yes, but .ra/.rm associated file should be captured together - except if rtsp:// protocol is used (not supported by HTTrack yet), or if proper filters are needed + +

Q: Using user:password@address is not working!
+A: Again, first check the hts-log.txt and hts-err.txt error log files - this can give you precious information
+The site may have a different authentication scheme - form based authentication, for example. +In this case, use the URL capture features of HTTrack, it might work. +
Note: If your username and/or password contains a '@' character, you may have to replace all '@' +occurences by '%40' so that it can work, such as in user%40domain.com:foobar@www.foo.com/auth/. +You may have to do the same for all "special" characters like spaces (%20), quotes (%22).. +
+

+ +Q: When I use HTTrack, nothing is mirrored (no files) What's +happening?
+A: First, be sure that the URL typed is correct. Then, check if you need to use a +proxy server (see proxy options in WinHTTrack or the -P proxy:port option in the +command line program). The site you want to mirror may only accept certain browsers. You +can change your "browser identity" with the Browser ID option in the OPTION box. +Finally, you can have a look at the hts-log.txt (and hts-err.txt) file to see what +happened.
+
+ +
Q: There are missing files! What's happening?
+A: You may want to capture files that exist in a different folder, or in another web site. +You may also want to capture files that are forbidden by default by the
robots.txt website rules. +In these cases, HTTrack does not capture these links automatically, you have to tell it to do so. +

+
  • Either use the filters.
    +Example: You are downloading http://www.someweb.com/foo/ and can not get .jpg images located +in http://www.someweb.com/bar/ (for example, http://www.someweb.com/bar/blue.jpg)
    +Then, add the filter rule +www.someweb.com/bar/*.jpg to accept all .jpg files from this location
    +You can, also, accept all files from the /bar folder with +www.someweb.com/bar/*, or only html files with +www.someweb.com/bar/*.html and so on..

    +
  • +If the problems are related to robots.txt rules, that do not let you access some folders (check in the logs if you are not sure), +you may want to disable the default robots.txt rules in the options. (but only disable this option with great care, +some restricted parts of the website might be huge or not downloadable) +
+
+
+ +Q: There are corrupted images/files! How to fix them?
+A: First check the log files to ensure that the images do really exist remotely and are not fake html error pages renamed into .jpg ("Not found" errors, for example). +Rescan the website with "Continue an interrupted download" to catch images that might be broken due to various errors (transfer timemout, for example). +Then, check if the broken image/file name is present in the log (hts-log.txt) - in this case you will find there the reason why the file has not been properly caught. +
If this doesn't work, delete the corrupted files (Note: to detect corrupted images, you can browse the directories with a tool like ACDSee and then delete them) +and rescan the website as described before. HTTrack will be obliged to recatch the deleted files, and this time it should work, if they do really exist remotely!.
+
+
+ +
Q: FTP links are not caught! What's happening?
+A: FTP files might be seen as external links, especially if they are located in outside domain. You have either to accept all external links (See the links options, -n option) or +only specific files (see
filters section).
+Example: You are downloading http://www.someweb.com/foo/ and can not get ftp://ftp.someweb.com files
+Then, add the filter rule +ftp.someweb.com/* to accept all files from this (ftp) location
+
+
+ +Q: I got some weird messages telling that robots.txt do not allow several files to be captured. What's going on?
+A: +These rules, stored in a file called robots.txt, are given by the website, to specify which links or folders should not be caught by robots and spiders +- for example, /cgi-bin or large images files. +They are followed by default by HTTrack, as it is advised. Therefore, you may miss some files that would have been downloaded without +these rules - check in your logs if it is the case:
+Info: Note: due to www.foobar.com remote robots.txt rules, links begining with these path will be forbidden: /cgi-bin/,/images/ (see in the options to disable this) + +
+If you want to disable them, just change the corresponding option in the option list! (but only disable this option with great care, +some restricted parts of the website might be huge or not downloadable) +
+
+
+ +
Q: I have duplicate files! What's going on?
+A: This is generally the case for top indexes (index.html and index-2.html), isn't it? +
+This is a common issue, but that can not be easily avoided!
+For example, http://www.foobar.com/ and http://www.foobar.com/index.html might be the same pages. +But if links in the website refers both to http://www.foobar.com/ and http://www.foobar.com/index.html, these two pages will be caught. +And because http://www.foobar.com/ must have a name, as you may want to browse the website locally (the / would give a directory listing, NOT the index itself!), +HTTrack must find one. Therefore, two index.html will be produced, one with the -2 to show that the file had to be renamed. +
+It might be a good idea to consider that http://www.foobar.com/ and http://www.foobar.com/index.html are the same links, to avoid +duplicate files, isn't it? +NO, because the top index (/) can refer to ANY filename, and if index.html is generally the default name, index.htm can be choosen, +or index.php3, mydog.jpg, or anything you may imagine. (some webmasters are really crazy) +
+
+Note: In some rare cases, duplicate data files can be found when the website redirect to another file. This issue should be rare, and might be avoided using filters. +
+
+
+ +
Q: I'm downloading too many files! What can I do?
+A: This is often the case when you use too large a filter, for example +*.html, which asks the +engine to catch all .html pages (even ones on other sites!). In this case, try to use more specific filters, like +www.someweb.com/specificfolder/*.html
+If you still have too many files, use filters to avoid somes files. For example, if you have too many files from www.someweb.com/big/, +use -www.someweb.com/big/* to avoid all files from this folder. Remember that the default behaviour of the engine, when +mirroring http://www.someweb.com/big/index.html, is to catch everything in http://www.someweb.com/big/. Filters are your friends, +use them! +
+
+
+ +
Q: The engine turns crazy, getting thousands of files! What's going on?
+A: This can happen if a loop occurs in some bogus website. For example, a page that refers to itself, with a timestamp +in the query string (e.g. http://www.someweb.com/foo.asp?ts=2000/10/10,09:45:17:147). +These are really annoying, as it is VERY difficult to detect the loop (the timestamp might be a page number). +To limit the problem: set a recurse level (for example to 6), or avoid the bogus pages (use the filters) + +
+
+ +
Q: File are sometimes renamed (the type is changed)! Why?
+A: By default, HTTrack tries to know the type of remote files. This is useful when links like +http://www.someweb.com/foo.cgi?id=1 can be either HTML pages, images or anything else. +Locally, foo.cgi will not be recognized as an html page, or as an image, by your browser. HTTrack has to rename the file +as foo.html or foo.gif so that it can be viewed.
+
+
+ +
Q: File are sometimes *incorrectly* renamed! Why?
+A: Sometimes, some data files are seen by the remote server as html files, or images : in this case HTTrack is +being fooled.. and rename the file. This can generally be avoided by using the "use HTTP/1.0 requests" option. +You might also avoid this by disabling the type checking in the option panel. + +
+
+ +
Q: How do I rename all ".dat" files into ".zip" files?
+A: Simply use the --assume dat=application/x-zip option + +
+
+ +
Q: I can not access several pages (access forbidden, or redirect to another location), but I can with my browser, what's going on?
+A: You may need cookies! Cookies are specific data (for example, your username or password) that are sent to your browser once +you have logged in certain sites so that you only have to log-in once. For example, after having entered your username in a website, you can +view pages and articles, and the next time you will go to this site, you will not have to re-enter your username/password.
+To "merge" your personnal cookies to an HTTrack project, just copy the cookies.txt file from your Netscape folder (or the cookies located into the Temporary Internet Files folder for IE) +into your project folder (or even the HTTrack folder) +
+
+
+ +
Q: Some pages can't be seen, or are displayed with errors!
+A: Some pages may include javascript or java files that are not recognized. For +example, generated filenames. There may be transfer problems, too (broken pipe, etc.). But +most mirrors do work. We still are working to improve the mirror quality of HTTrack.
+
+
+ +
Q: Some Java applets do not work properly!
+A: Java applets may not work in some cases, for example if HTTrack failed to detect all included classes +or files called within the class file. Sometimes, Java applets need to be online, because remote files are +directly caught. Finally, the site structure can be incompatible with the class (always try to keep the original site structure +when you want to get Java classes)
+If there is no way to make some classes work properly, you can exclude them with the filters. +They will be available, but only online. +
+
+
+ +
Q: HTTrack is taking too much time for parsing, it is very slow. What's wrong?
+A: Former (before 3.04) releases of HTTrack had problems with parsing. It was really slow, and performances -especially +with huge HTML files- were not really good. The engine is now optimized, and should parse very quickly all html files. +For example, a 10MB HTML file should be scanned in less than 3 or 4 seconds.
+
+Therefore, higher values mean that the engine had to wait a bit for testing several links. + +
    +
  • Sometimes, links are malformed in pages. +"a href="/foo"" instead of "a href="/foo/"", for example, is a common mistake. It will force the engine to +make a supplemental request, and find the real /foo/ location. +
  • +

    +
  • Dynamic pages. Links with names terminated by .php3, .asp or other type which are different from the regular +.html or .htm will require a supplemental request, too. HTTrack has to "know" the type (called "MIME type") of a file +before forming the destination filename. Files like foo.gif are "known" to be images, ".html" are obviously HTML pages - but ".php3" +pages may be either dynamically generated html pages, images, data files...
    +
    +If you KNOW that ALL ".php3" and ".asp" pages are in fact HTML pages on a mirror, use the assume option:
    +--assume php3=text/html,asp=text/html +

    +This option can be used to change the type of a file, too : the MIME type "application/x-MYTYPE" will always have the "MYTYPE" type. +Therefore,
    +--assume dat=application/x-zip +
    +will force the engine to rename all dat files into zip files +
  • +
+ + +

+
+ +
Q: HTTrack is being idle for a long time without +transfering. What's happening?
+A: Maybe you try to reach some very slow sites. Try a lower TimeOut value (see +options, or -Txx option in the command line program). Note that you will abandon +the entire site (except if the option is unchecked) if a timeout happen You can, with the +Shell version, skip some slow files, too.
+
+ +
Q: I want to update a site, but it's taking too much time! What's happening?
+A: First, HTTrack always tries to minimize the download flow by interrogating the server about the +file changes. But, because HTTrack has to rescan all files from the begining to rebuild the local site structure, +it can take some time. +Besides, some servers are not very smart and always consider that they get newer files, forcing HTTrack to reload them, +even if no changes have been made! +
+
+ +
Q: I wanted to update a site, but after the update the site disappeared!! What's going on?
+A: You may have done something wrong, but not always + +
    +
  • The site has moved : the current location only shows a notification. Therefore, all other files have been deleted to show the current state of the website!
  • +
  • The connection failed: the engine could not catch the first files, and therefore deleted everything. +To avoid that, using the option "do not purge old files" might be a good idea
  • +
  • You tried to add a site to the project BUT in fact deleted the former addresses.
    +Example: A project contains 'www.foo.com www.bar.com' and you want to add 'www.doe.com'. +Ensure that 'www.foo.com www.bar.com www.doe.com' is the new URL list, and NOT 'www.doe.com'! +
  • +
+ +

+ +
Q: I am behind a firewall. What can I do?
+A: You need to use a proxy, too. Ask your administrator to know the proxy server's +name/port. Then, use the proxy field in HTTrack or use the -P proxy:port option +in the command line program.
+

+ +

Q: HTTrack has crashed during a mirror, what's happening?
+A: We are trying to avoid bugs and problems so that the program can be as reliable as +possible. But we can not be infallible. If you occurs a bug, please check if you have the +latest release of HTTrack, and send us an email with a detailed description of your +problem (OS type, addresses concerned, crash description, and everything you deem to be +necessary). This may help the other users too.
+
+
+ +
Q: I want to update a mirrored project, but HTTrack is retransfering all pages. What's going on?
+A: First, HTTrack always rescans all local pages to reconstitute the website structure, and it can take some time. +Then, it asks the server if the files that are stored locally are up-to-date. On most sites, pages are not +updated frequently, and the update process is fast. But some sites have dynamically-generated pages that are considered as +"newer" than the local ones.. even if they are identical! Unfortunately, there is no possibility to avoid this problem, +which is strongly linked with the server abilities. + +
+
+ +
Q: I want to continue a mirrored project, but HTTrack is rescanning all pages. What's going on?
+A: HTTrack has to (quickly) rescan all pages from the cache, without retransfering them, to rebuild the internal file structure. However, this process can take some time with huge sites +with numerous links. + +
+
+ +
Q: HTTrack window sometimes "disappears" at then end of a mirrored project. What's going on?
+A: This is a known bug in the interface. It does NOT affect the quality of the mirror, however. We are still hunting it down, +but this is a smart bug.. + +
+
+ +
Questions concerning a mirror:
+ +
+
Q: I want to mirror a Web site, but there are some files outside +the domain, too. How to retrieve them?
+A: If you just want to retrieve files that can be reached through links, just activate +the 'get file near links' option. But if you want to retrieve html pages too, you can both +use wildcards or explicit addresses ; e.g. add www.someweb.com/* to accept all +files and pages from www.someweb.com.
+
+
Q: I have forgotten some URLs of files during a long +mirror.. Should I redo all?
+A: No, if you have kept the 'cache' files (in hts-cache), cached files will not be +retransfered.
+
+
Q: I just want to retrieve all ZIP files or other files in a web +site/in a page. How do I do it?
+A: You can use different methods. You can use the 'get files near a link' option if +files are in a foreign domain. You can use, too, a filter adress: adding +*.zip +in the URL list (or in the filter list) will accept all ZIP files, even if these files are +outside the address.
+Example : httrack www.someweb.com/someaddress.html +*.zip will allow +you to retrieve all zip files that are linked on the site.

+
+
Q: There are ZIP files in a page, but I don't want to transfer +them. How do I do it?
+A: Just filter them: add -*.zip in the filter list.
+
+
Q: I don't want to download ZIP files bigger than 1MB and MPG files smaller than 100KB. Is it possible?
+A: You can use
filters for that ; using the syntax:
+-*.zip*[>1000] -*.mpg*[<100]
+
+Q: I don't want to load gif files.. but what may happen if I +watch the page?
+A: If you have filtered gif files (-*.gif), links to gif files will be +rebuilt so that your browser can find them on the server.
+
+
Q: I don't want to download thumbnail images.. is it possible?
+A: Filters can not be used with image pixel size ; but you can filter on file size (bytes). +Use advanced
filters for that ; such as:
+-*.gif*[<10] to exclude gif files smaller than 10KiB. +

+
+Q: I get all types of files on a web site, but I didn't select +them on filters!
+A: By default, HTTrack retrieves all types of files on authorized links. To avoid +that, define filters like
-* +<website>/*.html ++<website>/*.htm +<website>/ +*.<type wanted>
+Example: httrack www.someweb.com/index.html -* +www.someweb.com/*.htm* +www.someweb.com/*.gif +www.someweb.com/*.jpg
+
+
Q: When I use filters, I get too many files!
+A: You might use too large a filter, for example *.html will get ALL html +files identified. If you want to get all files on an address, use www.<address>/*.html.
+If you want to get ONLY files defined by your filters, use something like -* +www.foo.com/*, because ++www.foo.com/* will only accept selected links without forbidding other ones!
+There are lots of possibilities using filters.
+Example:httrack www.someweb.com +*.someweb.com/*.htm*
+
+
Q: When I use filters, I can't access another domain, but I +have filtered it!
+A: You may have done a mistake declaring filters, for example +www.someweb.com/* +-*someweb* will not work, because -*someweb* has an upper priority (because it has +been declared after +www.someweb.com)
+
+
Q: Must I add a  '+' or '-' in the filter list when I want +to use filters?
+A: YES. '+' is for accepting links and '-' to avoid them. If you forget it, HTTrack +will consider that you want to accept a filter if there is a wild card in the syntax - e.g. ++<filter> is identical to <filter> if <filter> contains a wild card (*) +(else it will be considered as a normal link to mirror)

+
+Q: I want to find file(s) in a web-site. How do I do it?
+A: You can use the filters: forbid all files (add a -* in the +filter list) and accept only html files and the file(s) you want to retrieve (BUT do not +forget to add +<website>*.html in the filter list, or pages will not be +scanned! Add the name of files you want with a */ before ; i.e. if you want to +retrieve file.zip, add */file.zip)
+Example:httrack www.someweb.com +www.someweb.com/*.htm* +thefileiwant.zip
+
+
+ +
Q: I want to download ftp files/ftp site. How do I do it?
+A: First, HTTrack is not the best tool to download many ftp files. Its ftp engine is basic (even if reget are +possible) and if your purpose is to download a complete site, use a specific client.
+You can download ftp files just by typing the URL, such as ftp://ftp.somesite.com/pub/files/file010.zip and list ftp directories +like ftp://ftp.somesite.com/pub/files/
.
+Note: For the filters, use something like +ftp.somesite.com/* +
+ +
Q: How can I retrieve .asp or .cgi sources instead of .html result?
+A: You can't! For security reasons, web servers do not allow that. + +

Q: How can I remove these annoying <!-- Mirrored from... --> from html files?
+A: Use the footer option (-%F, or see the WinHTTrack options) + +

Q: Do I have to select between ascii/binary transfer mode?
+A: No, http files are always transfered as binary files. Ftp files, too (even if ascii mode could be selected) + +

Q: Can HTTrack perform form-based authentication?
+A: Yes. See the URL capture abilities (--catchurl for command-line release, or in the WinHTTrack interface) + +

Q: Can I redirect downloads to tar/zip archive?
+A: Yes. See the shell system command option (-V option for command-line release) + +

Q: Can I use username/password authentication on a site?
+A: Yes. Use user:password@your_url (example: http://foo:bar@www.someweb.com/private/mybox.html) + +

Q: Can I use username/password authentication for a proxy?
+A: Yes. Use user:password@your_proxy_name as your proxy name (example: smith:foo@proxy.mycorp.com) + +

Q: Can HTTrack generates HP-UX or ISO9660 compatible files?
+A: Yes. See the build options (-N, or see the WinHTTrack options) + +

Q: If there any SOCKS support?
+A: Not yet! + +

Q: What's this hts-cache directory? Can I remove it?
+A: NO if you want to update the site, because this directory is used by HTTrack for this purpose. +If you remove it, options and URLs will not be available for updating the site + +

Q: What is the meaning of the Links scanned: 12/34 (+5) line in WinHTTrack/WebHTTrack?
+A: 12 is the number of links scanned and stored, 34 the total number of links detected to be parsed, and 5 the number of files downloaded in background. +In this example, 17 links were downloaded out of a (temporary) total of 34 links. + +

Q: Can I start a mirror from my bookmarks?
+A: Yes. Drag&Drop your bookmark.html file to the WinHTTrack window (or use file://filename for command-line release) and select +bookmark mirroring (mirror all links in pages, -Y) or bookmark testing (--testlinks) + +

Q: Can I convert a local website (file:// links) to a standard website?
+A: Yes. Just start from the top index (example: file://C:\foopages\index.html) and mirror the local website. +HTTrack will convert all file:// links to relative ones. + + +

Q: Can I copy a project to another folder - Will the mirror work?
+A: Yes. There is no absolute links, all links are relative. +You can copy a project to another drive/computer/OS, and browse is without installing anything. + +

Q: Can I copy a project to another computer/system? Can I then update it ?
+A: Absolutely! You can keep your HTTrack favorite folder (C:\My Web Sites) in your local hard disk, copy it +for a friend, and possibly update it, and then bring it back!
You can copy individual folders (projects), too: exchange +your favorite websites with your friends, or send an old version of a site to someone who has a faster connection, and +ask him to update it!
+ + +
+Note: Export (Windows <-> Linux)
+The file and cache structure is compatible between Linux/Windows, but you may have to do some changes, like the path
+ + + + + +
+ Windows -> Linux/Unix +
+ Copy (in binary mode) the entire folder and then to update it, enter into it and do a
+ + httrack --update -O ./ + +

+ + Note: You can then safely replace the existing folder (under Windows) with this one, because + the Linux/Unix version did not change any options
+ Note: If you often switch between Windows/Linux with the same project, it might be a good idea to edit the hts-cache/doit.log file + and delete old "-O" entries, because each time you do a httrack --update -O ./ an entry is added, + causing the command line to be long +
+
+ Linux/Unix -> Windows +
+ Copy (in binary mode) the entire folder in your favorite Web mirror folder. + Then, select this project, AND retype ALL URLs AND redefine all options as if you were + creating a new project. + This is necessary because the profile (winprofile.ini) has not be created with the Linux/Unix version. + But do not be afraid, WinHTTrack will use cached files to update the project! +
+
+ +
+ +

Q: How can I grab email addresses in web pages?
+A: You can not. HTTrack has not be designed to be an email grabber, like many other (bad) products. + + +
+
+
+Other problems:
+
+ +Q: My problerm is not listed!
+A: Feel free to
contact us! +
+ +


+ + +

+
+
+ + + + + +
+ + + + + + diff --git a/html/fcguide.html b/html/fcguide.html new file mode 100644 index 0000000..e2f03d4 --- /dev/null +++ b/html/fcguide.html @@ -0,0 +1,2719 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Httrack Users Guide (3.10)

+By Fred Cohen
+ +
+ +

Background and Introduction

+ +

I started using httrack in mid-2000 and found it to be +an excellent tool for imaging web sites. Various words are used to +describe this process - from imaging to mirroring to snaking and so on. +I will be using a variety of these words in my description. + +

I have used many such tools over the years, have +performed many manual and semi-automatic operations of similar sorts, +and written partial programs to do similar functions, but - at least for +now - httrack seems to me to be the best option for this function. + +

The only problem I encountered when using httrack was +that it is so rich with features that I could never really figure out +precisely the right thing to do at any given point. I was using +recepies rather than knowledge to get the job done - and I was pestering +the authors for those recepies. After a few days of very helpful +assistance from the authors I volenteered to write a users manual for +httrack - and here it is. I hope it gets the job done. + +


+

Basics

+ +

Httrack is a program that gets information from the +Internet, looks for pointers to other information, gets that +information, and so forth. If you ask it to, and have enough disk +space, it will try to make a copy of the whole Internet on your +computer. While this may be the answer to Dilbert's boss when he asks +to get a printout of the Internet for some legal document, for most of +us, we want to get copies of just the right part of the Internet, and +have them nicely organized for our use. This is where httrack does a +great job. Here's a simple example: + +


+httrack "http://www.all.net/" -O "/tmp/www.all.net" "+*.all.net/*" -v
+
+ +

In this example, we ask httrack to start the Universal +Resource Locator (URL) http://www.all.net/ and store the results under +the directory /tmp/www.all.net (the -O stands for "output to") while not +going beyond the bounds of all the files in the www.all.net domain and +printing out any error messages along the way (-v means verbose). This +is the most common way that I use httrack. Please note that this +particular command might take you a while - and run you out of disk +space. + +

This sort of a mirror image is not an identical copy +of the original web site - in some ways it's better such as for local +use - while in other ways it may be problematic - such as for legal use. +This default mirroring method changes the URLs within the web site so +that the references are made relative to the location the copy is stored +in. This makes it very useful for navigating through the web site on +your local machine with a web browser since most things will work as you +would expect them to work. In this example, URLs that point outside of +the www.all.net domain space will still point there, and if you encounter +one, the web browser will try to get the data from that location. + +

For each of the issues discussed here - and many more +- httrack has options to allow you to make different choices and get +different results. This is one of the great things about httrack - and +one of the the real major problems with using it without the knowledge +of all that it can do. If you want to know all the things httrack can +do, you might try typing: + +


+httrack --help
+
+ +

Unfortunately, while this outputs a though list of +options, it is somewhat less helpful it might be for those who don't +know what the options all mean and haven't used them before. On the +other hand, this is most useful for those who already know how to use +the program but don't remember some obscure option that they haven't +used for some time. + +

The rest of this manual is dedicated to detailing what +you find in the help message and providing examples - lots and lots of +examples... Here is what you get (page by page - use to move to +the next page in the real program) if you type 'httrack --help': + +

+>httrack --help
+ HTTrack version 3.03BETAo4 (compiled Jul  1 2001)
+	usage: ./httrack ] [-]
+	with options listed below: (* is the default value)
+
+General options:
+  O  path for mirror/logfiles+cache (-O path_mirror[,path_cache_and_logfiles]) (--path )
+ %O  top path if no path defined (-O path_mirror[,path_cache_and_logfiles])
+
+Action options:
+  w *mirror web sites (--mirror)
+  W  mirror web sites, semi-automatic (asks questions) (--mirror-wizard)
+  g  just get files (saved in the current directory) (--get-files)
+  i  continue an interrupted mirror using the cache
+  Y   mirror ALL links located in the first level pages (mirror links) (--mirrorlinks)
+
+Proxy options:
+  P  proxy use (-P proxy:port or -P user:pass@proxy:port) (--proxy )
+ %f *use proxy for ftp (f0 don't use) (--httpproxy-ftp[=N])
+
+Limits options:
+  rN set the mirror depth to N (* r9999) (--depth[=N])
+ %eN set the external links depth to N (* %e0) (--ext-depth[=N])
+  mN maximum file length for a non-html file (--max-files[=N])
+  mN,N'                  for non html (N) and html (N')
+  MN maximum overall size that can be uploaded/scanned (--max-size[=N])
+  EN maximum mirror time in seconds (60=1 minute, 3600=1 hour) (--max-time[=N])
+  AN maximum transfer rate in bytes/seconds (1000=1kb/s max) (--max-rate[=N])
+ %cN maximum number of connections/seconds (*%c10)
+  GN pause transfer if N bytes reached, and wait until lock file is deleted (--max-pause[=N])
+
+Flow control:
+  cN number of multiple connections (*c8) (--sockets[=N])
+  TN timeout, number of seconds after a non-responding link is shutdown (--timeout)
+  RN number of retries, in case of timeout or non-fatal errors (*R1) (--retries[=N])
+  JN traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link (--min-rate[=N])
+  HN host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow (--host-control[=N])
+
+Links options:
+ %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use) (--extended-parsing[=N])
+  n  get non-html files 'near' an html file (ex: an image located outside) (--near)
+  t  test all URLs (even forbidden ones) (--test)
+ %L )
+
+Build options:
+  NN structure type (0 *original structure, 1+: see below) (--structure[=N])
+     or user defined structure (-N "%h%p/%n%q.%t")
+  LN long names (L1 *long names / L0 8-3 conversion) (--long-names[=N])
+  KN keep original links (e.g. http://www.adr/link) (K0 *relative link, K absolute links, K3 absolute URI links) (--keep-links[=N])
+  x  replace external html links by error pages (--replace-external)
+ %x  do not include any password for external password protected websites (%x0 include) (--no-passwords)
+ %q *include query string for local files (useless, for information purpose only) (%q0 don't include) (--include-query-string)
+  o *generate output html file in case of error (404..) (o0 don't generate) (--generate-errors)
+  X *purge old files after update (X0 keep delete) (--purge-old[=N])
+
+Spider options:
+  bN accept cookies in cookies.txt (0=do not accept,* 1=accept) (--cookies[=N])
+  u  check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always) (--check-type[=N])
+  j *parse Java Classes (j0 don't parse) (--parse-java[=N])
+  sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) (--robots[=N])
+ %h  force HTTP/1.0 requests (reduce update features, only for old servers or proxies) (--http-10)
+ %B  tolerant requests (accept bogus responses on some servers, but not standard!) (--tolerant)
+ %s  update hacks: various hacks to limit re-transfers when updating (identical size, bogus response..) (--updatehack)
+ %A  assume that a type (cgi,asp..) is always linked with a mime type (-%A php3=text/html) (--assume )
+
+Browser ID:
+  F  user-agent field (-F "user-agent name") (--user-agent )
+ %F  footer string in Html code (-%F "Mirrored [from host %s [file %s [at %s]]]" (--footer )
+ %l  preffered language (-%l "fr, en, jp, *" (--language )
+
+Log, index, cache
+  C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before) (--cache[=N])
+  k  store all files in cache (not useful if files on disk) (--store-all-in-cache)
+ %n  do not re-download locally erased files (--do-not-recatch)
+ %v  display on screen filenames downloaded (in realtime) (--display)
+  Q  no log - quiet mode (--do-not-log)
+  q  no questions - quiet mode (--quiet)
+  z  log - extra infos (--extra-log)
+  Z  log - debug (--debug-log)
+  v  log on screen (--verbose)
+  f *log in files (--file-log)
+  f2 one single log file (--single-log)
+  I *make an index (I0 don't make) (--index)
+ %I  make an searchable index for this mirror (* %I0 don't make) (--search-index)
+
+Expert options:
+  pN priority mode: (* p3) (--priority[=N])
+      0 just scan, don't save anything (for checking links)
+      1 save only html files
+      2 save only non html files
+     *3 save all files
+      7 get html files before, then treat other files
+  S  stay on the same directory
+  D *can only go down into subdirs
+  U  can only go to upper directories
+  B  can both go up&down into the directory structure
+  a *stay on the same address
+  d  stay on the same principal domain
+  l  stay on the same TLD (eg: .com)
+  e  go everywhere on the web
+ %H  debug HTTP headers in logfile (--debug-headers)
+
+Guru options: (do NOT use)
+ #0  Filter test (-#0 '*.gif' 'www.bar.com/foo.gif')
+ #f  Always flush log files
+ #FN Maximum number of filters
+ #h  Version info
+ #K  Scan stdin (debug)
+ #L  Maximum number of links (-#L1000000)
+ #p  Display ugly progress information
+ #P  Catch URL
+ #R  Old FTP routines (debug)
+ #T  Generate transfer ops. log every minutes
+ #u  Wait time
+ #Z  Generate transfer rate statictics every minutes
+ #!  Execute a shell command (-#! "echo hello")
+
+Command-line specific options:
+  V execute system command after each files ($0 is the filename: -V "rm \$0") (--userdef-cmd )
+ %U run the engine with another id when called as root (-%U smith) (--user )
+
+Details: Option N
+  N0 Site-structure (default)
+  N1 HTML in web/, images/other files in web/images/
+  N2 HTML in web/HTML, images/other in web/images
+  N3 HTML in web/,  images/other in web/
+  N4 HTML in web/, images/other in web/xxx, where xxx is the file extension
(all gif will be placed onto web/gif, for example) + N5 Images/other in web/xxx and HTML in web/HTML + N99 All files in web/, with random names (gadget !) + N100 Site-structure, without www.domain.xxx/ + N101 Identical to N1 exept that "web" is replaced by the site's name + N102 Identical to N2 exept that "web" is replaced by the site's name + N103 Identical to N3 exept that "web" is replaced by the site's name + N104 Identical to N4 exept that "web" is replaced by the site's name + N105 Identical to N5 exept that "web" is replaced by the site's name + N199 Identical to N99 exept that "web" is replaced by the site's name + N1001 Identical to N1 exept that there is no "web" directory + N1002 Identical to N2 exept that there is no "web" directory + N1003 Identical to N3 exept that there is no "web" directory (option set for g option) + N1004 Identical to N4 exept that there is no "web" directory + N1005 Identical to N5 exept that there is no "web" directory + N1099 Identical to N99 exept that there is no "web" directory +Details: User-defined option N + %n Name of file without file type (ex: image) (--do-not-recatch) + %N Name of file, including file type (ex: image.gif) + %t File type (ex: gif) + %p Path [without ending /] (ex: /someimages) + %h Host name (ex: www.someweb.com) (--http-10) + %M URL MD5 (128 bits, 32 ascii bytes) + %Q query string MD5 (128 bits, 32 ascii bytes) + %q small query string MD5 (16 bits, 4 ascii bytes) (--include-query-string) + %s? Short name version (ex: %sN) + %[param] param variable in query string + +Shortcuts: +--mirror + +

For many of you, the manual is now complete, but for +the rest of us, I will now go through this listing one item at a time +with examples... I will be here a while... + +


+

Syntax

+ +
httrack  [-option] [+] [-] 
+ +

The syntax of httrack is quite simple. You specify +the URLs you wish to start the process from (), any options you +might want to add ([-option], any filters specifying places you should +([+]) and should not ([-]) go, and end the command +line by pressing . Httrack then goes off and does your bidding. +For example: + +


+httrack www.all.net/bob/
+
+ +

This will use the 'defaults' (those selections from +the help page marked with '*' in the listing above) to image the web +site. Specifically, the defauls are: + +

+  w *mirror web sites
+ %f *use proxy for ftp (f0 don't use)
+  cN number of multiple connections (*c8)
+  RN number of retries, in case of timeout or non-fatal errors (*R1)
+ %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use)
+  NN  name conversion type (0 *original structure, 1+: see below)
+  LN  long names (L1 *long names / L0 8-3 conversion)
+  K   keep original links (e.g. http://www.adr/link) (K0 *relative link)
+  o *generate output html file in case of error (404..) (o0 don't generate)
+  X *purge old files after update (X0 keep delete)
+  bN  accept cookies in cookies.txt (0=do not accept,* 1=accept)
+  u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
+  j *parse Java Classes (j0 don't parse)
+  sN  follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
+  C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
+  f *log file mode
+  I *make an index (I0 don't make)
+  pN priority mode: (* p3)  *3 save all files
+  D  *can only go down into subdirs
+  a  *stay on the same address
+  --mirror       *make a mirror of site(s) (default)
+
+ +

Here's what all of that means: + +

    +
      w *mirror web sites 
    + +

    Automatically go though each URL you download and look +for links to other URLs inside it, dowloading them as well. + +

     %f *use proxy for ftp (f0 don't use) 
    + +

    If there are and links to ftp URLs (URLs using the +file transfer protocol (FTP) rather than the hypertext transfer protocol +HTTP), go through an ftp proxy server to get them. + +

      cN number of multiple connections (*c8) 
    + +

    Use up to 8 simultaneous downloads so that at any +gioven time, up to 8 URLs may be underway. + +

      RN number of retries, in case of timeout or non-fatal errors (*R1) 
    + +

    Retry once if anything goes wrong with a download. + +

     %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use) 
    + +

    Try to parse all URLs - even if they are in +Javascript, Java, tags of unknown types, or anywhere else the program +can find things. + +

      NN  name conversion type (0 *original structure, 1+: see below) 
    + +

    Use the original directory and file structure of the +web site in your mirror image of the site. + +

      LN  long names (L1 *long names / L0 8-3 conversion) 
    + +

    If filenames do not follow the old DOS conventions, +store them with the same names used on the web site. + +

      K   keep original links (e.g. http://www.adr/link) (K0 *relative link) 
    + +

    Use relative rather than the original links so that +URLs within this web site are adjusted to point to the files in the +mirror. + +

      o *generate output html file in case of error (404..) (o0 don't generate) 
    + +

    IF there are errors in downloading, create a file that +indicates that the URL was not found. This makes browsing go a lot +smoother. + +

      X *purge old files after update (X0 keep delete) 
    + +

    Files not found on the web site that were previously +there get deleted so that you have an accurate snapshot of the site as +it is today - losing historical data. + +

      bN  accept cookies in cookies.txt (0=do not accept,* 1=accept) 
    + +

    Accept all cokkies sent to you and return them if +requested. This is required for many sites to function. These cookies +are only kept relative to the specific site, so you don't have to worry +about your browser retaining them. + +

      u check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always) 
    + +

    This causes different document types to be analyzed +differently. + +

      j *parse Java Classes (j0 don't parse) 
    + +

    This causes Java class files to be parsed looking for +URLs. + +

      sN  follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) 
    + +

    This tells the program to follow the wishes of the +site owner with respect to limiting where robots like this one search. + +

      C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before) 
    + +

    If you are downloading a site you have a previous copy +of, supplemental parameters are transmitted to the server, for example +the 'If-Modified-Since:' field will be used to see if files are newer +than the last copy you have. If they are newer, they will be +downloaded, otherwise, they will not. + +

      f *log file mode 
    + +

    This retains a detailed log of any important events +that took place. + +

      I *make an index (I0 don't make) 
    + +

    This makes a top-level index.html file so that if you +image a set of sites, you can have one place to start reviewing the set +of sites. + +

      pN priority mode: (* p3)  *3 save all files 
    + +

    This will cause all downloaded files to be saved. + +

      D  *can only go down into subdirs 
    + +

    This prevents the program from going to higher level +directories than the initial subdirectory, but allows lower-level +subdirectories of the starting directory to be investigated. + +

      a  *stay on the same address 
    + +

    This indicates that only the web site(s) where the +search started are to be collected. Other sites they point to are not +to be imaged. + +

      --mirror       *make a mirror of site(s) (default) 
    + +

    This indicates that the program should try to make a +copy of the site as well as it can. + +

+ +

Now that's a lot of options for the default - but of +course there are a lot more options to go. For the most part, the rest +of the options represent variations on these themes. For example, +instead of saving all files, we might only want to save html files, or +instead of 8 simultaneous sessions, we might want only 4. + +

If we wanted to make one of these changes, we would +specify the option on the command line. For example: + +


+httrack www.all.net/bob/ -c4 -B
+
+ +

This would restrict httrack to only use 4 +siumultaneous sessions but allow it to go up the directory structure +(for example to www.all.net/joe/) as well as down it (for example to +www.all.net/bob/deeper/). + +

You can add a lot of options to a command line! + +


+ +

A Thorough Going Over

+ +

Now that you have an introduction, it's time for a +more though coverage. This is where I go through each of the options +and describe it in detail with examples... Actually, I won't quite do +that. But I will get close. + +

Options tend to come in groups. Each group tends to +be interrelated, so it's easier and more useful to go through them a +group at a time with some baseline project in mind. In my case, the +project is to collect all of the information on the Internet about some +given subject. We will assume that, through a previous process, I have +gotten a list of URLs of interest to me. Typically there will be +hundreds of these URLs, and they will be a mixed bag of sites that are +full of desired information, pages with lists of pointers to other +sites, URLs of portions of a web site that are of interest (like Bob's +home pages and subdirectories), and so forth. Let us say that for today +we are looking for the definitive colleciton of Internet information on +shoe sizes from around the world. + +


+

General Options

+ +

+General options:
+  O  path for mirror/logfiles+cache (-O path_mirror[,path_cache_and_logfiles])
+
+ +

For this project, I will want to keep all of the +information I gather in one place, so I will specify that output area of +the project as /tmp/shoesizes by adding '-O +/tmp/shoesizes' to every command line I use.. for example: + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes
+
+ +

The action options tell httrack how to operate at the +larger level. + +


+

Action Options

+ +

+Action options:
+  w *mirror web sites
+  W  mirror web sites, semi-automatic (asks questions)
+  g  just get files (saved in the current directory)
+  i  continue an interrupted mirror using the cache
+  Y   mirror ALL links located in the first level pages (mirror links)
+
+ +

If I want httrack to ask me questions - such as what +options to use, what sites to mirror, etc. I can tell it to ask these +questions as follows: + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -W
+
+
+
+

I can also do: + +

httrack
+OR +
httrack -W
+OR +
httrack -w
+ +

The '-W' options asks whether the or not a site has to +be mirrored, while the '-w' option does not ask this question but asks +the remainder of the questions required to mirror the site. + +

The -g option allows you to get the files exactly as +they are and store them in the currant directory. This is handy for a +relatively small collection of information where organization isn't +important. With this option, the html files will not even be parsed to +look for other URLs. This option is useful for getting isolated files +(e.g., httrack -g www.mydrivers.com/drivers/windrv32.exe). + + +

If I start a collection process and it fails for ome +reason or another - such as me interrupting it because I am running out +of disk space - or a network outage - then I can restart the process by +using the -i option: + +

httrack http://www.shoesizes.com -O /tmp/shoesizes -i 
+ +

Finally, I can mirror all links in the first level +pages of the URLs I specify. A good example of where to use whis would +be in a case where I have a page that points to a lot of other sites and +I want to get the initial information on those sites before mirroring +them: + +

httrack http://www.shoesizes.com/othersites.html -O /tmp/shoesizes -Y 
+ +
+

Proxy Options

+ +

Many users use a proxy for many of their functions. +This is a key component in many firewalls, but it is also commonly used +for anonymizing access and for exploiting higher speed communications at +a remote server. + +

Proxy options:
+  P  proxy use (-P proxy:port or -P user:pass@proxy:port)
+ %f *use proxy for ftp (f0 don't use)
+
+ +

If you are using a standard proxy that doesn't require +a user ID and password, you would do something like this: + +

httrack http://www.shoesizes.com -O /tmp/shoesizes -P proxy.www.all.net:8080 
+ +

In this case, we have asusmed that proxy.www.all.net is +the host that does the proxy service and that it uses port 8080 for this +service. In some cases you will have to ask your network or firewall +administrator for these details, however, in most cases they should be +the same as the options used in your web browser. + +

In some cases, a user ID and password are required for +the proxy server. This is common in corporate environments where only +authorized users may access the Internet. + +

httrack http://www.shoesizes.com -O /tmp/shoesizes -P fc:password@proxy.www.all.net:8080 
+ +

In this case, the user ID 'fc' and the password +'password' are used on proxy.www.all.net port 8080. Again, your network or +firewall administrator can be most helpful in addressing the specifics +for your environment. + +

FTP normally operates through a proxy server, but for systems +that have direct connections to the Internet, the following option should help: + +

httrack ftp://ftp.shoesizes.com -O /tmp/shoesizes -%f0 
+ +
+

Limits Options

+ +

+Limits options:
+  rN set the mirror depth to N
+  mN maximum file length for a non-html file
+  mN,N'                  for non html (N) and html (N')
+  MN maximum overall size that can be uploaded/scanned
+  EN maximum mirror time in seconds (60=1 minute, 3600=1 hour)
+  AN maximum transfer rate in bytes/seconds (1000=1kb/s max)
+  GN pause transfer if N bytes reached, and wait until lock file is deleted
+  %eN set the external links depth to N (* %e0) (--ext-depth[=N])
+  %cN maximum number of connections/seconds (*%c10)
+
+ +

Setting limits provides the means by which you can +avoid running out of disk space, CPU time, and so forth. This may be +particularly helpful for those who accidentally try to image the whole +Internet. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -r50
+
+ +

In this example, we limit the directlry depth to 50 +levels deep. As a general rule, web sites don't go much deeper than 20 +levels or so, and if you think about it, if there are only 2 +subdirectories per directory level, a directory structure 50 deep would +have about 10 trillion directories. Of course many sites have a small +number of files many levels deep in a directory structure for various +reasons. In some cases, a symbolic link will cause an infinite +recursion of directory levels as well, so placing a limit may be +advisable. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -m50000000
+
+ +

This example sets the maximum file length for non-HTML +files to 50 megabytes. This is not an unusual length for things like +tar files, and in some cases - for example when there are images of +CD-ROMs to fetch from sites, you might want a limit more like 750 +megabytes. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -m50000000,100000
+
+ +

In this example, we have set a limit for html files +as well - at 100,000 bytes. HTML files are rarely larger than this, +however, in some cases larger sizes may be needed. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -M1000000000
+
+ +

This option sets the maximum total size - in bytes - +that can be uploaded from a site - in this case to 1 gigabyte. +Depending on how much disk space you have, such an option may be +worthwhile. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -E3600
+
+ +

This sets the maximum runtime for the download +process. Of course depending on the speed of your connection it may +take longer or shorter runtimes to get the same job done, and network +traffic is also a factor. 3600 seconds corresponds to one hour. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes A100000000
+
+ +

This option specifies the largest number of bytes per +second that should be used for transfers. For example, you might want +to go slow for some servers that are heavily loaded in the middle of the +day, or to download slowly so that the servers at the other end are less +likely to identify you as mirroring their site. The setting above +limits my bandwidth to 100 million bytes per second - slow I know, but I +wouldn't want to stress the rest of the Internet. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -G100000000
+
+ +

In this case, the G option is used to 'pause' a +download after the first gigabyte is downloaded pending manual removal +of the lockfile. This is handy of you want to download some portion of +the data, move it to secondary storage, and then continue - or if you +want to only download overnight and want to stop before daylight and +continue the next evening. You could even combine this option with a +cron job to remove the lock file so that the job automatically restarts +at 7PM every night and gets another gigabyte. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes %e5
+
+ +

In this case, httrack will only go to depth 5 for external links, +thus not imaging the entire web, but only yhose links within 5 links of these web pages. + +

Also note that the interaction of these options may +cause unintended consequences. For example, limiting bandwidth and +download time conspire to limit the total amount of data that can +be downloaded. + +


+

Flow Control Options

+ +

+Flow control:
+  cN number of multiple connections (*c8)
+  %cN maximum number of connections/seconds (*%c10)
+  TN timeout, number of seconds after a non-responding link is shutdown
+  RN number of retries, in case of timeout or non-fatal errors (*R1)
+  JN traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link
+  HN host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow
+
+
+

This example allows up to 128 simultaneous downloads. +Note that this is likely to crash remote web servers - or at least fail +to download many of the files - because of limits on the number of +simultaneous sessions at many sites. At busy times of day, you might +want to lower this to 1 or 2, especially at sites that limit the number +of simultaneous users. Otherwise you will not get all of the downloads. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -c128
+
+ +

Many operating systems have a limit of 64 file +handles, including internet connections and all other files that can be +opened. Therefore, in many cases, more that 48 connections might cause +a "socket error" because the OS can not handle that many sockets. This +is also true for many servers. As an example, a test with 48 sockets on +a cgi-based web server (Pentium 166,80Meg RAM) overloaded the machine +and stopped other services from running correctly. Some servers will +ban users that try to brutally download the website. 8 sockets is +generally good, but when I'm getting large files (e.g., from a a site +with large graphical images) 1 or 2 sockets is a better selection. Here +are some other figures from one sample set of runs: + +

    +Tests: on a 10/100Mbps network, 30MB website, 99 files (70 images (some are
    +little, other are big (few MB)), 23 HTML)
    +With 8 sockets: 1,24MB/s
    +With 48 sockets: 1,30MB/s
    +With 128 sockets: 0,93MB/s
    +
+ +

The timeout option causes downloads to time out after +a non-response from a download attempt. 30 seconds is pretty reasonable +for many sites. You might want to increase the number of retries as +well so that you try again and again after such timeouts. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -%c20
+
+ +

This limits the number of connections per second. It +is similar to the above option but allows the pace to be controlled +rather than the simultanaety. It is particulsrly useful for long-term +pulls at low rates that allow little impact on remote infrastructure. +The default is 10 connections per second. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -T30
+
+ +

This example increases the number of retries to 5. +This means that if a download fails 5 times, httrack will give up on it. +For relatively unreliable sites - or for busy times of day, this number +should be higher. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -R5
+
+ +

This is an interesting option. It says that in a +traffic jam - where downloads are excessively slow - we might decide to +back off the download. In this case, we have limited downloads to stop +bothering once we reach 10 bytes per second. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -J10
+
+ +

These three options will cause the download from a +host to be abandoned if (respectively) (0) never, (1) a timeout is +reached, (2) slow traffic is detected, (or) (3) a timeout is reached OR +slow traffic is detected. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -H0
+httrack http://www.shoesizes.com -O /tmp/shoesizes -H1
+httrack http://www.shoesizes.com -O /tmp/shoesizes -H2
+httrack http://www.shoesizes.com -O /tmp/shoesizes -H3
+
+ +

Of course these options can be combined to provide a +powerful set of criteria for when to continue a download and when to +give it up, how hard to push other sites. and how much to stress +infrastructures. + +


+

Link Following Options

+ +

+Links options:
+ %P *extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don't use)
+  n   get non-html files 'near' an html file (ex: an image located outside)
+  t   test all URLs (even forbidden ones)
+ %L  add all URL located in this text file (one URL per line)
+
+ +

The links options allow you to control what links are +followed and what links are not as well as to provide long lists of +links to investigate. Any setting other than the default for this +option forces the engine to use less reliable and more complex parsing. +'Dirty' parsing means that links like 'xsgfd syaze="foo.gif"' will cause +HTTrack to download foo.gif, even if HTTrack don't know what the "xsgfd +syaze=" tag actually means! This option is powerful because some links +might otherwise be missed, but it can cause errors in HTML or javascript. + +

This will direct the program to NOT search Javascript +for unknown tag fields (e.g., it will find things like +foo.location="bar.html"; but will not find things like bar="foo.gif";). +While I have never had a reason to use this, some users may decide that +they want to be more conservative in their searches. As a note, +javascript imported files (.js) are not currently searched for URLs. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes '%P0'
+
+ +

Now here is a classic bit of cleaverness that 'does +the right thing' for some cases. In this instance, we are asking +httrack to get images - like gif and jpeg files that are used by a web +page in its display, even though we would not normally get them. For +example, if we were only getting a portion of a web site (e.g., +everything under the 'bob directory') we might want to get graphics from +the rest of the web sote - or the rest of the web - that are used in +those pages as well so that our mirror will look right. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -n
+
+ +

Here, we limit the collection to bob's area of the +server - except that we get images and other such things that are used +by bob in his area of the server. + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -n
+
+ +

This option 'tests' all links - even those forbidden +(by the robot exclusion protocol) - by using the 'HEAD' protocol to test +for the presence of a file. + +


+httrack http://www.shoesizes.com/ -O /tmp/shoesizes -t
+
+ +

In this case, we use a file to list the URLs we wish +to mirror. This is particularly useful when we have a lot to do and +don't want to tirelessly type in URLs on command line after command line. +It's also useful - for example - if you update a set of mirrored sites +evey evening. You can set up a command like this to run automatically +from your cron file. + +


+httrack -%L linkfile -O /tmp/shoesizes
+
+ +

This will update the mirror of your list of sites +whenever it is run. + +


+httrack -%L linkfile -O /tmp/shoesizes -B --update
+
+ +

The link file is also useful for things like this +example where, after a binary image of a hard disk was analyzed (image) +URLs found on that disk were collected by httrack: + +


+strings image | grep "http://" > list;
+httrack -%L list -O /tmp/shoesizes
+
+ + +
+

Mirror Build Options

+ +

+Build options:
+  NN  name conversion type (0 *original structure, 1+: see below)
+  N   user defined structure (-N "%h%p/%n%q.%t")
+  LN  long names (L1 *long names / L0 8-3 conversion)
+  K   keep original links (e.g. http://www.adr/link) (K0 *relative link)
+  x   replace external html links by error pages
+  o *generate output html file in case of error (404..) (o0 don't generate)
+  X *purge old files after update (X0 keep delete)
+  %x  do not include any password for external password protected websites (%x0 include) (--no-passwords)
+  %q *include query string for local files (information only) (%q0 don't include) (--include-query-string)
+
+ +

The user can define naming conventions for building +the mirror of a site by using these options. For example, to retain the +original structure, the default is used. This only modifies the +structure to the extent that select characters (e.g., ~, :, <, >, \, and +@) are replaced by _ in all pathnames. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -N0
+
+

OR +


+httrack http://www.shoesizes.com -O /tmp/shoesizes
+
+ +

In either case, the mirror will build with the same +directory hierarchy and name structure as the original site. For cases +when you want to define your own structure, you use a string like this: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -N "%h%p/%n.%t"
+
+ +

In this case, %h, %p, $n, and %t stand for the href +element (e.g., http://www.shoesizes.com or ftp://ftp.shoesizes.com), %p +stands for the pathname (e.g., /bob/), %n stands for the name of the +file, and %t stands for type (file extension). The full list of these +options follows: + +

    +%n      Name of file without file type (ex: image)
    +%N      Name of file, including file type (ex: image.gif)
    +%t      File type (ex: gif)
    +%p      Path [without ending /] (ex: /someimages)
    +%h      Host name (ex: www.all.net)
    +%M      URL MD5 (128 bits, 32 ascii bytes)
    +%Q      query string MD5 (128 bits, 32 ascii bytes)
    +%q      small query string MD5 (16 bits, 4 ascii bytes)
    +%s?     Short name version (ex: %sN)
    +
+ +

Other 'N' options include: + +

    +
    
    +Details: Option N
    +  N0 Site-structure (default)
    +  N1 HTML in web/, images/other files in web/images/
    +  N2 HTML in web/HTML, images/other in web/images
    +  N3 HTML in web/,  images/other in web/
    +  N4 HTML in web/, images/other in web/xxx, where xxx is the file extension
    (all gif will be placed onto web/gif, for example) + N5 Images/other in web/xxx and HTML in web/HTML + N99 All files in web/, with random names (gadget !) + N100 Site-structure, without www.domain.xxx/ + N101 Identical to N1 exept that "web" is replaced by the site's name + N102 Identical to N2 exept that "web" is replaced by the site's name + N103 Identical to N3 exept that "web" is replaced by the site's name + N104 Identical to N4 exept that "web" is replaced by the site's name + N105 Identical to N5 exept that "web" is replaced by the site's name + N199 Identical to N99 exept that "web" is replaced by the site's name + N1001 Identical to N1 exept that there is no "web" directory + N1002 Identical to N2 exept that there is no "web" directory + N1003 Identical to N3 exept that there is no "web" directory (option set for g option) + N1004 Identical to N4 exept that there is no "web" directory + N1005 Identical to N5 exept that there is no "web" directory + N1099 Identical to N99 exept that there is no "web" directory +
    +
+ +

Long names are normally used (the -L0 +option) but if you are imaging to a DOS file system or want +accessibility from older versions of DOS and Windows, you can use the +-L1 option to generate these filename sizes. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -L1
+
+ +

With the 'K' option, you can keep the original links +in files. While this is less useful in being able to view a web site +froim the mirrored copy, it is vitally important if you want an accurate +copy of exactly what was on the web site in the first place. In a +forensic image, for example, you might want to use this option to +prevent the program from modifying the data as it is collected. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -K
+
+ +

In this case, instead of leaving external links (URLs +that point to sites not being mirrored) in the pages, these links are +replaced by pages that leave messages indicating that they could not be +found. This is useful for local mirrors not on the Internet or mirrors +that are on the Internet but that are not supposed to lead users to +external sites. A really good use for this is that 'bugging' devices +placed in web pages to track who is using them and from where will be +deactivated byt his process. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -x
+
+ +

This option prevents the generation of '404' error +files to replace files that were not found even though there were URLs +pointing to them. It is useful for saving space as well as eliminating +unnecessary files in operations where a working web site is not the +desired result. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -o0
+
+ +

This option prevents the authoatic purging of files +from the mirror site that were not found in the original web site after +an 'update' is done. If you want to retain old data and old names for +files that were renamed, this option should be used. If you want an +up-to-date reflection of the current web site, you should not use this option. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -X0
+
+ +

These options can be combined as desired to produce a +wide range of different arrangements, from collections of only graphical +files stored in a graphics area, to files identified by their MD5 +checksums only, all stored in the same directory. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes %x0 include
+
+ +

This will not include passwords for web sites. If you +mirror http://smith_john:foobar@www.privatefoo.com/smith/, and exclude +using filters some links, these links will be by default rewritten with +password data. For example, "bar.html" will be renamed into +http://smith_john:foobar@www.privatefoo.com/smith/bar.html This can be a +problem if you don't want to disclose the username/password! The %x +option tell the engine not to include username/password data in +rewritten URLs. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes %q
+
+ +

This option is not very useful, because parameters are +useless, as pages are not dynamic anymore when mirrored. But some +javascript code may use the query string, and it can give useful +information. For example: catalog4FB8.html?page=computer-science is +clearer than catalog4FB8.html Therefore, this option is activated by +default. + +


+

Spider Options

+ +

These options provide for automation with regard to +the remote server. For example, some sites require that cookies be +accepted and sent back in order to allow access. + +


+Spider options:
+ bN  accept cookies in cookies.txt (0=do not accept,* 1=accept)
+ u   check document type if unknown (cgi,asp..) (u0 don't check, * u1 check but /, u2 check always)
+ j   *parse Java Classes (j0 don't parse)
+ sN  follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)
+ %h  force HTTP/1.0 requests (reduce update features, only for old servers or proxies)
+ %B  tolerant requests (accept bogus responses on some servers, but not standard!)
+ %s  update hacks: various hacks to limit re-transfers when updating
+ %A  assume that a type (cgi,asp..) is always linked with a mime type (-%A php3=text/html) (--assume )
+
+ +

By default, cookies are universally accepted and +returned. This makes for more effective collection of data, but allows +the site to be identified with its collection of data more easily. To +disable cookies, use this option: + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -b0
+
+ +

Some documents have known extension types (e.g., +html), while others have unknown types (e.g., iuh87Zs) and others may +have misleading types (e.g., an html file with a 'gif' file extension. +These options provide for (0) not checking file types, (1) checking all +file types except directories, and (2) checking all file types including +directories. Choose from these options: + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -u0
+httrack http://www.shoesizes.com -O /tmp/shoesizes -u1
+httrack http://www.shoesizes.com -O /tmp/shoesizes -u2
+
+ +

Meta tags or 'robots.txt' files on a web site are used +to indicate what files should and should not be visited by automatic +programs when collectiong data. The polite and prudent move for normal +data collection (and the default) is to follow this indication: + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -s2
+
+ +

This follows the robots protocol and meta-tags EXCEPT +in cases where the filters disagree with the robots protocols or +meta-tags. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -s1
+
+ +

In this next case, we ignore meta-tags and robots.txt +files completely and just take whatever we can get from the site. The +danger of this includes the fact that automated programs - like games or +search engines may generate an unlimited number of nearly identical or +identical outputs that will put us in an infinite loop collecting +useless data under different names. The benefit is that we will get all +the data there is to get. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -s0
+
+ +

This next option uses strict HTTP/1.0 protocol. This +means the program will use HTTP/1.0 headers (as in RFC1945.TXT) and NOT +extended 1.1 features described in RFC2616.TXT. For example, reget +(complete a partially downloaded file) is a HTTP/1.1 feature. The Etag +feature is also a HTTP/1.1 feature (Etag is a special identifier that +allow to easily detect file changes). + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -%h
+
+ +

Some servers give responses not strictly within the +requirements of the official http protocol. These 'Bogus' responses can +be accepted by using this option. For example, when requesting foo.gif +(5132 bytes), the server can, optionally, add: +

+Content-length: 5132
+
+ +

This helps the client by allowing it to reserve a +block of memory, instead of collecting each byte and re-reserving memory +each time data is being received. But some servers are bogus, and send +a wrong filesize. When HTtrack detects the end of file (connection +broken), there are three cases: + +

    + +

    1- The connection has been closed by the server, and we +have received all data (we have received the number of bytes incicated +by the server). This is fine because we have successfully received the +file. + +

    2- The connection has been closed by the server, BUT +the filesize received is different from the server's headers: the +connection has been suddenly closed, due to network problems, so we +reget the file + +

    3- The connetion has been closed by the server, the +filesize received is different from the server's headers, BUT the file +is complete, because the server gave us a WRONG information! In this +case, we use the bogus server option: +

+ +

+httrack http://www.shoesizes.com -O /tmp/shoesizes -%B
+
+ +

These options can be combined for the particular needs +of the situaiton and are often adapted as a result of site-specific +experiences. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -%s
+
+ +

This is a collection of "tricks" which are not really +"RFC compliant" but which can save bandwidth by trying not to retransfer +data in several cases. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -%A asp=text/html
+
+ +

The most important new feature for some people, maybe. +This option tells the engine that if a link is en countered, with a +specific type (.cgi, .asp, or .php3 for example), it MUST assume that +this link has always the same MIME type, for example the "text/html" +MIME type. This is VERY important to speed up many mirrors. + +

We have done tests on big HTML files (approx. 150 MB, +150,000,000 bytes!) with 100,000 links inside. Such files are being +parsed in approx. 20 seconds on my own PC by the latest optimized +releases of HTTra ck. But these tests have been done with links of +known types, that is, html, gif, and so on.. If you have, say, 10,000 +links of unknown type, such as ".asp", this will cause the engine to +test ALL t hese files, and this will SLOOOOW down the parser. In this +example, the parser will take hours, instead of 20 seconds! In this +case, it would be great to tell HTTrack: ".asp pages are in fact HTML +pages" This is possible, using: -%A asp=text/html + +

The -%A option can be replaced by the alias --assume +asp=text/html which is MUCH more clear. You can use multiple +definitions, separed by ",", or use multiple options. Therefore, these +two lines are identical: + +

+--assume asp=text/html --assume php3=text/html --assume cgi=image/gif
+--assume asp=text/html,php3=text/html,cgi=image/gif
+
+ +

The MIME type is the standard well known "MIME" type. +Here are the most important ones: +

+text/html       Html files, parsed by HTTrack
+image/gif       GIF files
+image/jpeg      Jpeg files
+image/png       PNG files
+
+ +

There is also a collection of "non standard" MIME types. Example: + +

+application/x-foo       Files with "foo" type
+
+ +

Therefore, you can give to all files terminated by +".mp3" the MIME type: application/x-mp3 + +

This allow you to rename files on a mirror. If you +KNOW that all "dat" files are in fact "zip" files ren amed into "dat", +you can tell httrack: + +

+--assume dat=application/x-zip
+
+ +

You can also "name" a file type, with its original +MIME type, if this type is not known by HTTrack. This will avoid a test +when the link will be reached: + +

+--assume foo=application/foobar
+
+ +

In this case, HTTrack won't check the type, because it +has learned that "foo" is a known type, or MIME type +"application/foobar". Therefore, it will let untouched the "foo" type. + +

A last remark, you can use complex definitions like: + +

+--assume asp=text/html,php3=text/html,cgi=image/gif,dat=application/x-zip,mpg=application/x-mp3,application/foobar
+
+ +

..and save it on your .httrackrc file: + +

+set assume asp=text/html,php3=text/html,cgi=image/gif,dat=application/x-zip,mpg=application/x-mp3,application/foobar
+
+ +
+

Browser Options

+ +

Browsers commonly leave footprints in web servers - as +web servers leave footprints in the browser. + +


+Browser ID:
+  F  user-agent field (-F "user-agent name")
+ %F  footer string in Html code (-%F "Mirrored [from host %s [file %s [at %s]]]"
+ %l  preffered language (-%l "fr, en, jp, *" (--language )
+
+ +

The user-agent field is used by browsers to determine +what kind of browser you are using as well as other information - such +as your system type and operating system version. The 'User Agent' +field can be set to indicate whatever is desired to the server. In this +case, we are claiming to be a netscape browser (version 1.0) running a +non-exitent Solaris operating system version on a Sun Sparcstation. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -F "Mozilla 1.0, Sparc, Solaris 23.54.34"
+
+ +

On the other side, we may wish to mark each page +collected with footer information so that we can see from the page where +it was collected from, when, and under what name it was stored. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -%F "Mirrored [from host %s [file %s [at %s]]]"
+
+ +

This makes a modified copy of the file that may be +useful in future identification. While it is not 'pure' in some senses, +it may (or may not) be considered siilar to a camera that adds time and +date stamps from a legal perspective. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -%l "fr, en, jp, *"
+
+ +

"I prefer to have pages with french language, then +english, then japanese, then any other language" + +


+

Log, Cache, and Index Options

+ +

A lot of options are available for log files, indexing +of sites, and cached results: + +


+Log, index, cache
+  C  create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before)
+  k  store all files in cache (not useful if files on disk)
+ %n  do not re-download locally erased files
+  Q  log quiet mode (no log)
+  q  quiet mode (no questions)
+  z  extra infos log
+  Z  debug log
+  v  verbose screen mode
+  %v display on screen filenames downloaded (in realtime) (--display)
+  f  log file mode
+  f2 one single log file (--single-log)
+  I  *make an index (I0 don't make)
+  %I make an searchable index for this mirror (* %I0 don't make) (--search-index)
+
+
+ +

A cache memory area is used for updates and retries to +make the process far more efficient than it would otherwise be. You can +choose to (0) go without a cache, (1) do not check remotly if the file +has been updated or not, just load the cache content, or (2) see what +works best and use it (the default). Here is the no cache example. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -C0
+
+ +

The cache can be used to store all files - if desired +- but if files are being stored on disk anyway (the normal process for a +mirroring operation), this is not helpful. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -k
+
+ +

In some cases, a file from a mirror site is erased +locally. For example, if a file contains inappropriate content, it may +be erased from the mirror site but remain on the remote site. This +option allows you to leave deleted files permanently deleted when you +do a site update. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -update '%n'
+
+ +

If no log is desired, the following option should be +added. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -Q
+
+ +

If no questions should be asked of the user (in a mode +that would otherwise ask questions), the following option should be +added. + +


+
+httrack http://www.shoesizes.com -O /tmp/shoesizes -q + +

By adding these options, you get (-z) extra log +information or (-Z) debugging information, and (-v) verbose screen +output. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -z -Z -v
+
+ +

Multiple log files can be created, but by default, +this option is used to put all logs into a single log file. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -f2
+
+ +

Finally, an index is normally made of the sites +mirrored (a pointer to the first page found from each specified URL) in +an index.html file in the project directory. This can be prevented +through the use of this option: + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -I0
+
+ + +

+httrack http://www.shoesizes.com -O /tmp/shoesizes %v
+
+ +

Animated information when using consol-based version, +example: +

+17/95: localhost/manual/handler.html (6387 bytes) - OK
+
+ +

+httrack http://www.shoesizes.com -O /tmp/shoesizes f2
+
+ +

Do not split error and information log (hts-log.txt +and hts-err.txt) - use only one file (hts-log.txt) + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -%I linux.localdomain
+
+ +

Still in testing, this option asks the engine to +generate an index.txt, useable by third-party programs or scripts, to +index all words contained in html files. The above example will produce +index.txt: + +

+..
+abridged
+        1 linux/manual/misc/API.html
+        =1
+        (0)
+absence
+        3 linux/manual/mod/core.html
+        2 linux/manual/mod/mod_imap.html
+        1 linux/manual/misc/nopgp.html
+        1 linux/manual/mod/mod_proxy.html
+        1 linux/manual/new_features_1_3.html
+        =8
+        (0)
+absolute
+        3 linux/manual/mod/mod_auth_digest.html
+        1 linux/manual/mod/mod_so.html
+        =4
+        (0)
+..
+
+ +
+

Expert User Options

+ +

For expert users, the following options provide further +options. + +


+Expert options:
+  pN priority mode: (* p3)
+      0 just scan, don't save anything (for checking links)
+      1 save only html files
+      2 save only non html files
+     *3 save all files
+      7 get html files before, then treat other files
+  S   stay on the same directory
+  D  *can only go down into subdirs
+  U   can only go to upper directories
+  B   can both go up&down into the directory structure
+  a  *stay on the same address
+  d   stay on the same principal domain
+  l   stay on the same location (.com, etc.)
+  e   go everywhere on the web
+ %H  debug HTTP headers in logfile
+
+ +

One interesting application allows the mirror utility +to check for valid and invalid links on a site. This is commonly used +in site tests to look for missing pages or other html errors. I often +run such programs against my web sites to verify that nothing is missing. + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -p0
+
+ +

To check for valid links outside of a site, the '-t' +option can be used: + +


+httrack http://www.shoesizes.com -O /tmp/shoesizes -t
+
+ +

These options can be combined, for example, to provide +a service that checks sites for validity of links and reports back a +list of missing files and statistics. + +

Other options allow the retention of select files - +for example - (1) only html files, (2) only non-html files, (3) all +files, and (7) get all html files first, then get other files. This +last option provides a fast way to get the web pointers so that, for +example, a time limited collection process will tend to get the most +important content first. + +

In many cases, we only want the files froma given +directory. In this case, we specify this option: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -S
+
+ +

This option allows the mirror to go only into +subdirectories of the initial directory on the remote host. You might +want to combine it with the -n option to get all +non-html files linked from the pages you find. + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -D -n
+
+ +

If you only want to work your way up the directory +structure from the specified URL (don't ask me why you might want to do +this), the following command line is for you: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -U
+
+ +

If you want to go both up and down the directory +structure (i.e., anywhere on on this site that the requested page leads +you to), this option will be best: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -B
+
+ +

The default is to remain on the same IP address - or +host name. This option specifes this explicitly: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -a
+
+ +

If you want to restrict yourself only to the same +principal domain (e.g., include sites liks ftp.shoesizes.com), you would +use this option. + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -d
+
+ +

To restrict yourself to the same major portion of the +Internet (e.g., .com, .net, .edu, etc.) try this option: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -l
+
+ +

Finally, if you want to mirror the whole Internet - at +least every place on the internet that is ever led to - either directly +or indirectly - from the starting point, use this one... Please note +that this will almost always run you out of resources unless you use +other options - like limiting the depth of search. + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -e
+
+ +

Last but not least, you can include debugging +informaiton on all headers from a collection process by using this +option: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -'%H'
+
+ +

The options S, D, U, B, a, d, l, and e can be replaces +with filter options approximately as follows: + +


+S     -www.foo.com/* +www.foo.com/bar/*[file]
+D     (default)
+U     +www.foo.com/bar/* -www.foo.com/*[name]/*
+B     +www.foo.com/bar/*
+a     (default)
+d     +*[name].foo.com/*
+l     +*[name].com/*
+e     +* (this is crazy unless a depth limit is used!)
+
+ +
+

Guru Options - DO NOT USE!!!

+ +

This is a new section, for all "not very well +documented options". You can use them, in fact, do not believe what is +written above! + +

+ #0  Filter test (-#0 '*.gif' 'www.bar.com/foo.gif')
+
+ +

To test the filter system. Example: + +

+$ httrack -#0 'www.*.com/*foo*bar.gif' 'www.mysite.com/test/foo4bar.gif'
+www.mysite.com/test/foo4bar.gif does match www.*.com/*foo*bar.gif
+
+ +
+ #f  Always flush log files
+
+ +

Useful if you want the hts-log.txt file to be flushed +regularly (not buffered) + +

+ #FN Maximum number of filters
+
+ +

Use if if you want to use more than the maximum +default number of filters, that is, 500 filters: -#F2000 for 2,000 filters + +

+ #h  Version info
+
+ +

Informations on the version number + +

+ #K  Scan stdin (debug)
+
+ +

Not useful (debug only) + +

+ #L  Maximum number of links (-#L1000000)
+
+ +

Use if if you want to use more than the maximum +default number of links, that is, 100,000 links: -#L2000000 for 2,000,000 links + +

+ #p  Display ugly progress information
+
+ +

Self-explanatory :) I will have to improve this one + +

+ #P  Catch URL
+
+ +

"Catch URL" feature, allows to setup a temporary proxy +to capture complex URLs, often linked with POST action (when using form +based authentication) + +

+ #R  Old FTP routines (debug)
+
+ +

Debug.. + +

+ #T  Generate transfer ops. log every minutes
+
+ +

Generate a log file with transfer statistics + +

+ #u  Wait time
+
+ +

"On hold" option, in seconds + +

+ #Z  Generate transfer rate statictics every minutes
+
+ +

Generate a log file with transfer statistics + +

+ #!  Execute a shell command (-#! "echo hello")
+
+ +

Debug.. + +


+

Command-line Specific Options

+ +

+Command-line specific options:
+  V execute system command after each files ($0 is the filename: -V "rm \$0") (--userdef-cmd )
+
+ +

This option is very nice for a wide array of actions +that might be based on file details. For example, a simple log of all +files collected could be generated by using: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes -V "/bin/echo \$0"
+
+ +
+ %U run the engine with another id when called as root (-%U smith) (--user )
+
+ +

Change the UID of the owner when running as r00t + +

+  Details: User-defined option N
+    %[param] param variable in query string
+
+ +

+This new option is important: you can include query-string content when forming the destination filename! + +

+Example: you are mirroring a huge website, with many pages named as:
+www.foo.com/catalog.php3?page=engineering
+www.foo.com/catalog.php3?page=biology
+www.foo.com/catalog.php3?page=computing
+..
+
+ +

Then you can use the -N option: + +

+httrack www.foo.com -N "%h%p/%n%[page].%t"
+
+ +

If found, the "page" parameter will be included after +the filename, and the URLs above will be saved as: + +

+/home/mywebsites/foo/www.foo.com/catalogengineering.php3
+/home/mywebsites/foo/www.foo.com/catalogbiology.php3
+/home/mywebsites/foo/www.foo.com/catalogcomputing.php3
+...
+
+ +
+

Shortcuts

+ +

These options provide shortcust to combinations +of other options that are commonly used. + +


+Shortcuts:
+--mirror       *make a mirror of site(s) (default)
+--get           get the files indicated, do not seek other URLs (-qg)
+--list     add all URL located in this text file (-%L)
+--mirrorlinks   mirror all links in 1st level pages (-Y)
+--testlinks     test links in pages (-r1p0C0I0t)
+--spider        spider site(s), to test links: reports Errors & Warnings (-p0C0I0t)
+--testsite      identical to --spider
+--skeleton      make a mirror, but gets only html files (-p1)
+--update              update a mirror, without confirmation (-iC2)
+--continue            continue a mirror, without confirmation (-iC1)
+--catchurl            create a temporary proxy to capture an URL or a form post URL
+--clean               erase cache & log files
+--http10              force http/1.0 requests (-%h)
+
+ +

Mirror is the default behavior. It is detailed +earlier. + +

get simply gets the files specified on the command +line. + +

The list option is useful for including a list of +sites to collect data from. + +

The mirrorlinks option is ideal for using the result +of a previous search (like a list of pages found in a web search or +somebody's URL collection) to guide the collection of data. With +additional options (such as depth 1) it can be used to collect all of +the pages linked to a given page without going further. Here is an example: + +


+httrack http://www.shoesizes.com/bob/ -O /tmp/shoesizes --mirrorlinks -e -r1
+
+ +

Testing links in pages is useful for automating the +verification that a link from a file is not pointing to a non-existent +page. + +

The spider option does a site test automatically and +returns errors for broken links. + +

The skeleton option makes a mirror of html files only. + +

The update option updates a site to match a remote +mirror. + +

The continue option continues a previously terminated +mirroring activity. This is useful for all sorts of mirror failures. + +

The catchurl option is a small application designed to +catch difficult pages, like sites protected via formulas. You can see +at http://httrack.free.fr/HelpHtml/addurl.html a Windows description of +this application. The purpose is to create a temporary proxy, that will +catch the user request to a page, and then store this request to +continue the mirror. For example, + +

    +1. browse www.foo.com/bar/ until you have a page with a form
    +2. fill this form to enter the site BUT do not click "submit"
    +3. start the --catchurl application
    +4. change your browser proxy settings according to the --catchurl application
    +5. click on "submit" on your browser
    +6. HTTrack has now captured this click and has stored it
    +7. restore your proxy settings
    +8. (click back in your browser)
    +
+ +

The clean option erases cache and log files. + +

The http10 option forces http/1.0 requests (the same +as -%h). + +


+ +

Filters

+ +

Filters are normally placed at the end of the command +line, but can be intermixed with other command line options if desired, +except that if they are placed between (for example) the '-O' and the +pathname, your results may be different than you might otherwise +predict. There are two sorts of filters, filters that indicate what to +include (+) and filters that indicate what to exclude (-). + +

Starting with the initially specified URLs, the +default operation mode is to mirror starting from these URLs downward +into the directory structure of the host (i.e. if one of your starting +pagees was www.all.net/test/a.html, all links starting with www.all.net/test/ +will be collected but links in www.all.net/anything-else will not be +collected, because they are in a higher directory strcuture level. This +prevents HTTrack from mirroring the whole site. If you may want to +download files are in other parts of the site or pf particular types - +or to not download files in a particular part of the site or of a +particular type, you can use filters to specify more precisely what to +collect and what not to collect. + +

The syntax for filters is similar to Unix regular +expressions. A simple filter can be made by using characters from the +URL with '*' as a wildcard for 0 or more characters - with the last +filter rule having the highest precendence. An initial '+' indicates +URLs to include and an initial '-' indicated URLs to not include. For +example: + +


+'-*' '+*jpg'
+
+ +

would only get files ending in the 'jpg' extension, +while: + +


+'-*jpg'
+
+ +

would not get any files ending in the jpg extension. +You can add more filter lines to restrict or expand the scope as +desired. The last rule is checked first, and so on - so that the rules +are in reverse priority order. Here's an example: + + + + +
+ +*.gif -image*.gif + + Will accept all gif files BUT image1.gif,imageblue.gif,imagery.gif and so on +
+ -image*.gif +*.gif + + Will accept all gif files, because the second pattern is prioritary (because it is defined AFTER the first one) +
+ +

The full syntax for filters follows: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
*any characters (the most commonly used)
*[file] or *[name]any filename or name, e.g. not /,? and ; characters
*[path]any path (and filename), e.g. not ? and ; characters
*[a,z,e,r,t,y]any letters among a,z,e,r,t,y
*[a-z]any letters
*[0-9,a,z,e,r,t,y]any characters among 0..9 and a,z,e,r,t,y
*[]no characters must be present after
*[< NN] size less than NN Kbytes
*[> PP] size more than PP Kbytes
*[< NN > PP] size less than NN Kbytes and more than PP Kbytes
+ + +

Here are some examples of filters: (that can be +generated automatically using the interface) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
-www.all.net* This will refuse/accept this web site (all links located in it will be rejected)
+*.com/*This will accept all links that contains .com in them
-*cgi-bin* This will refuse all links that contains cgi-bin in them
+*.com/*[path].zip This will accept all zip files in .com addresses
-*someweb*/*.tar*This will refuse all tar (or tar.gz etc.) files in hosts containing someweb
+*/*somepage*This will accept all links containing somepage (but not in the address)
-*.htmlThis will refuse all html files from anywhere in the world.
+*.html*[]Accept *.html, but the link must not have any supplemental characters + at the end
(e.g., links with parameters, like www.all.net/index.html?page=10 + will not match this filter)
-*.gif*[> 5] -*.zip +*.zip*[< 10] refuse all gif files smaller than 5KB, exlude all zip files, EXCEPT zip files smaller than 10KB
+ +


+ +

User Authentication Protocols

+ +

Smoe servers require user ID and password information +in order to gain access. In this example, the user ID smith with +password foobar is accessing www.all.net/private/index.html + +


+httrack smith:foobar@www.all.net/private/index.html
+
+ +

For more advanced forms of authentication, such as +those involving forms and cookies of various sorts, an emerging +capability is being provided through th URL capture features +(--catchurl). This feature don't work all of the time. + +


+ +

.httrackrc

+ +

A file called '.httrackrc' can be placed in the +current directory, or if not found there, in the home directory, to +include command line options. These options are included whenever +httrack is run. A sample .httrack follows: + +

    
    + set sockets 8
    + set retries 4
    + index on
    + set useragent "Mozilla [en] (foo)"
    + set proxy proxy:8080
    +
+ +

But the syntax is not strict, you can use any of +these: + +

    
    + set sockets 8
    + set sockets=8
    + sockets=8
    + sockets 8
    +
+ + +

.httrackrc is sought in the following sequence with +the first occurence used: + +

    +
  • in the dirctory indicated by -O option (.httrackrc) +
  • in the current directory (.httrackrc) +
  • in the user's home directory (.httrackrc) +
  • in /etc/httrack.conf (named httrack.conf to be "standard") +
+ +

An example .httrackrc looks like: + +

    
    +set sockets=8
    +set index on
    +retries=2
    +allow *.gif
    +deny ad.doubleclick.net/*
    +
+ +

Each line is composed of an option name and a +parameter. The "set" token can be used, but is not mandatory (it is +ignored, in fact). The "=" is also optionnal, and is replaced by a +space internally. The "on" and "off" are the same as "1" and "0" +respectively. Therefore, the example .httrackrc above is equivalent to: + +

    
    +sockets=8
    +index=1
    +retries=2
    +allow=*.gif
    +deny=ad.doubleclick.net/*
    +
+ +

Because the "=" seems to (wrongly) imply a variable +assignment (the option can be defined more than once to define more than +one filter) the following .httrackrc: + +

    
    +allow *.gif
    +allow *.jpg
    +
+ +

looks better for a human than: + +

    
    +allow=*.gif
    +allow=*.jpg
    +
+ +

Here's a example run with the example .httrackrc file: + +

    
    +$ httrack ghost
    +$ cat hts-cache/doit.log
    +-c8 -C1 -R2 +*.gif -ad.doubleclick.net/* ghost
    +
+ +

The "-c8 -C1 -R2 +*.gif -ad.doubleclick.net/*" was +added by the .httrackrc + +


+ +

Release Notes

+ +

Some things change between releases. Here are some +recent changes in httrack that may affect some of these options: + +

Options S,D,U,B, and a,d,l,e are default behaviours of +HTTrack. they were the only options in old versions (1.0). With the +introduction of filters, their roles are now limited, because filters +can override them. + +

Note for the -N option: "%h%p/%n%q.%t" will be now be +used if possible. In normal cases, when a file does not have any +parameters (www.foo.com/bar.gif) the %q option does not add anything, so +there are no differences in file names. But when parameters are present +(for example, www.foo.com/bar.cgi?FileCollection=133.gif), the +additionnal query string (in this case, FileCollection=133.gif) will be +"hashed" and added to the filename. For example: + +

'www.all.net/bar.cgi?FileCollection=133.gif'
+

will be named +

'/tmp/mysite/bar4F2E.gif'
+ +

The additionnal 4 letters/digits are VERY useful in +cases where there are a substantial number of identical files: + +


+www.all.net/bar.cgi?FileCollection=133.gif
+www.all.net/bar.cgi?FileCollection=rose.gif
+www.all.net/bar.cgi?FileCollection=plant4.gif
+www.all.net/bar.cgi?FileCollection=silver.gif
+and so on...
+
+ +

In these cases, there is a small probability of a hash +collision forlarge numbers of files. + +


+ +

Some More Examples

+ +

Here are some examples of special purpose httrack +command lines that might be useful for your situation. + +

This is a 'forensic' dump of a web site - intended to +collect all URLs reachable from the initial point and at that particular +site. It is intended to make no changes whatsoever to the image. It +also prints out an MD5 checksum of each file imaged so that the image +can be verified later to detect and changes after imaging. It uses 5 +retries to be more certain than normal of getting the files, never +abandons its efforts, keeps original links, does not generate error +files, ignores site restrictions for robots, logs as much as it can, +stays in the principal domain, places debugging headers in the log file, + +


+httrack "www.website.com/" -O "/tmp/www.website.com" -R5H0Ko0s0zZd %H -V "md5 \$0" "+*.website.com/*" 
+
+ +

Here's an example of a site where I pulled a set of +data related to some subject. In this case, I only wanted the +relevant subdirectory, all external links were to remain the same, a +verbose listing of URLs was to be printed, and I wanted files near (n) +and below (D) the original directory. Five retries just makes sure I +don't miss anything. + +


+httrack "http://www.somesite.com/~library/thing/thingmain.htm" -O /tmp/thing -R5s0zZvDn
+
+ +

This listing is, of course, rather verbose. To reduce the noise, +you might want to do something more like this: + +


+httrack "http://www.somesite.com/~library/thing/thingmain.htm" -O /tmp/thing -R5s0zvDn
+
+ +

A still quieter version - without any debugging +information but with a list of files loaded looks like this: + +


+httrack "http://www.somesite.com/~library/thing/thingmain.htm" -O /tmp/thing -R5s0vDn
+
+ +

For the strong silent type, this might be still better: + +


+httrack "http://www.somesite.com/~library/thing/thingmain.htm" -O /tmp/thing -R5s0qDn
+
+ +
+ +

General questions:

+ +

Q: The install is not working on NT without administrator rights! + +

A: That's right. You can, however, install WinHTTrack +on your own machine, and then copy your WinHTTrack folder from +your Program Files folder to another machine, in a temporary +directory (e.g. C:\temp\) + +

Q: Where can I find French/other languages documentation? + +

A: Windows interface is available on several +languages, but not yet the documentation! + +

Q: Is HTTrack working on NT/2000? + +

A: Yes, it should + +

Q: What's the difference between HTTrack and WinHTTrack? + +

A: WinHTTrack is the Windows release of HTTrack (with +a graphic shell) + +

Q: Is HTTrack Mac compatible? + +

A: No, because of a lack of time. But sources are +available + +

Q: Can HTTrack be compiled on all Un*x? + +

A: It should. The Makefile may be modified in +some cases, however + +

Q: I use HTTrack for professional purpose. What +about restrictions/license fee? + +

A: There is no restrictions using HTTrack for +professional purpose, except if you want to sell a product including +HTTrack components (parts of the source, or any other component). See +the license.txt file for more informations + +

Q: Is a DLL/library version available? + +

A: Not yet. But, again, sources are available (see +license.txt for distribution infos) + +

Q: Is there a X11/KDE shell available for Linux and +Un*x? + +

A: No. Unfortunately, we do not have enough time for +that - if you want to help us, please write one! + +


Troubleshooting:

+ +

Q: Only the first page is caught. What's wrong? +
A: First, check the hts-err.txt error log file - this can +give you precious informations. + +

The problem can be a website that redirects you to +another site (for example, www.all.net to public.www.all.net) : in +this case, use filters to accept this site + +

This can be, also, a problem in the HTTrack options +(link depth too low, for example) + +

Q: With WinHTTrack, sometimes the minimize in system +tray causes a crash! + +

A: This bug sometimes appears in the shell on some +systems. If you encounter this problem, avoid minimizing the window! + +

Q: URLs with https:// are not working!
+A: HTTrack does not support https (secure socket layer protocol), only +http protocol + +

Q: Files are created with strange names, like +'-1.html'! + +

A: Check the build options (you may have selected +user-defined structure with wrong parameters!) + +

Q: When capturing real audio links (.ra), I only get +a shortcut! + +

A: Yes. The audio/video realtime streaming capture is +not yet supported + +

Q: Using user:password@address is not working! + +

A: Again, first check the hts-err.txt error log +file - this can give you precious informations + +

The site may have a different authentication scheme +(form based authentication, for example) + +

Q: When I use HTTrack, nothing is mirrored (no +files) What's happening? + +

A: First, be sure that the URL typed is correct. +Then, check if you need to use a proxy server (see proxy options in +WinHTTrack or the -P proxy:port option in the command line +program). The site you want to mirror may only accept certain browsers. +You can change your "browser identity" with the Browser ID +option in the OPTION box. Finally, you can have a look at the +hts-err.txt (and hts-log.txt) file to see what happened. + +

Q: There are missing files! What's happening? + +

A: You may want to capture files that are in a +different folder, or in another web site. In this case, HTTrack does not +capture them automatically, you have to ask it to do. For that, use the +filters. + +

Example: You are downloading +http://www.all.net/foo/ and can not get .jpg images located in +http://www.all.net/bar/ (for example, http://www.all.net/bar/blue.jpg) + +

Then, add the filter rule +www.all.net/bar/*.jpg to +accept all .jpg files from this location + +

You can, also, accept all files from the /bar folder +with +www.all.net/bar/*, or only html files with ++www.all.net/bar/*.html and so on.. + +

Q: I'm downloading too many files! What can I do? + + +

A: This is often the case when you use too large +filters, for example +*.html, which asks the engine to catch all +.html pages (even ones on other sites!). In this case, try to use more +specific filters, like +www.all.net/specificfolder/*.html + +

If you still have too many files, use filters to avoid +somes files. For example, if you have too many files from www.all.net/big/, +use -www.all.net/big/* to avoid all files from this folder. + +

Q: File types are sometimes changed! Why? + +

A: By default, HTTrack tries to know the type of +remote files. This is useful when links like +http://www.all.net/foo.cgi?id=1 can be either HTML pages, images or +anything else. Locally, foo.cgi will not be recognized as an html page, +or as an image, by your browser. HTTrack has to rename the file as +foo.html or foo.gif so that it can be viewed. + +

Sometimes, however, some data files are seen by the +remote server as html files, or images : in this case HTTrack is being +fooled.. and rename the file. You can avoid this by disabling the type +checking in the option panel. + +

Q: I can not access to several pages (access +forbidden, or redirect to another location), but I can with my browser, +what's going on? + +

A: You may need cookies! Cookies are specific datas +(for example, your username or password) that are sent to your browser +once you have logged in certain sites so that you only have to log-in +once. For example, after having entered your username in a website, you +can view pages and articles, and the next time you will go to this site, +you will not have to re-enter your username/password. + +

To "merge" your personnal cookies to an HTTrack +project, just copy the cookies.txt file from your Netscape folder (or +the cookies located into the Temporary Internet Files folder for IE) +into your project folder (or even the HTTrack folder) + +

Q: Some pages can't be seen, or are displayed +with errors! + +

A: Some pages may include javascript or java files +that are not recognized. For example, generated filenames. There may +be transfer problems, too (broken pipe, etc.). But most mirrors do +work. We still are working to improve the mirror quality of HTTrack. + +

Q: Some Java applets do not work properly! + +

A: Java applets may not work in some cases, for +example if HTTrack failed to detect all included classes or files called +within the class file. Sometimes, Java applets need to be online, +because remote files are directly caught. Finally, the site structure +can be incompatible with the class (always try to keep the original site +structure when you want to get Java classes) + +

If there is no way to make some classes work properly, +you can exclude them with the filters. They will be available, but only +online. + +

Q: HTTrack is being idle for a long time without +transfering. What's happening? + +

A: Maybe you try to reach some very slow sites. Try a +lower TimeOut value (see options, or -Txx option in the command +line program). Note that you will abandon the entire site (except if +the option is unchecked) if a timeout happen You can, with the Shell +version, skip some slow files, too. + +

Q: I want to update a site, but it's taking too much +time! What's happening? + +

A: First, HTTrack always tries to minimize the +download flow by interrogating the server about the file changes. But, +because HTTrack has to rescan all files from the begining to rebuild the +local site structure, it can takes some time. Besides, some servers are +not very smart and always consider that they get newer files, forcing +HTTrack to reload them, even if no changes have been made! + +

Q: I am behind a firewall. What can I do? + +

A: You need to use a proxy, too. Ask your +administrator to know the proxy server's name/port. Then, use the proxy +field in HTTrack or use the -P proxy:port option in the command +line program. + +

Q: HTTrack has crashed during a mirror, what's +happening? + +

A: We are trying to avoid bugs and problems so that +the program can be as reliable as possible. But we can not be +infallible. If you occurs a bug, please check if you have the latest +release of HTTrack, and send us an email with a detailed description of +your problem (OS type, addresses concerned, crash description, and +everything you deem to be necessary). This may help the other users +too. + +

Q: I want to update a mirrored project, but HTTrack +is retransfering all pages. What's going on? + +

A: First, HTTrack always rescan all local pages to +reconstitute the website structure, and it can take some time. Then, it +asks the server if the files that are stored locally are up-to-date. On +most sites, pages are not updated frequently, and the update process is +fast. But some sites have dynamically-generated pages that are +considered as "newer" than the local ones.. even if there are +identical! Unfortunately, there is no possibility to avoid this problem, +which is strongly linked with the server abilities. + +


Questions concerning a mirror:

+ +

Q: I want to mirror a Web site, +but there are some files outside the domain, too. How to retrieve them? + + +

A: If you just want to retrieve files that can be +reached through links, just activate the 'get file near links' option. +But if you want to retrieve html pages too, you can both use wildcards +or explicit addresses ; e.g. add www.all.net/* to accept all +files and pages from www.all.net. + +

Q: I have forgotten some URLs of files during a long +mirror.. Should I redo all? + +

A: No, if you have kept the 'cache' files (in +hts-cache), cached files will not be retransfered. + +

Q: I just want to retrieve all ZIP files or other +files in a web site/in a page. How do I do it? + +

A: You can use different methods. You can use the +'get files near a link' option if files are in a foreign domain. You +can use, too, a filter adress: adding +*.zip in the URL list (or +in the filter list) will accept all ZIP files, even if these files are +outside the address. + +

Example : httrack www.all.net/someaddress.html ++*.zip will allow you to retrieve all zip files that are linked on +the site. + +

Q: There are ZIP files in a page, but I don't want +to transfer them. How do I do it? + +

A: Just filter them: add -*.zip in the filter +list. + +

Q: I don't want to load gif files.. but what may +happen if I watch the page? + +

A: If you have filtered gif files (-*.gif), +links to gif files will be rebuild so that your browser can find them on +the server. + +

Q: I get all types of files on a web site, but I +didn't select them on filters! + +

A: By default, HTTrack retrieves all types of files on +authorized links. To avoid that, define filters like + +

-* +<website>/*.html +<website>/*.htm ++<website>/ +*.<type wanted> + +

Example: httrack www.all.net/index.html -* ++www.all.net/*.htm* +www.all.net/*.gif +www.all.net/*.jpg + +

Q: When I use filters, I get too many files! + +

A: You are using too large a filter, for example +*.html will get ALL html files identified. If you want to get +all files on an address, use www.<address>/*.html. There +are lots of possibilities using filters. + +

Example:httrack www.all.net +*.www.all.net/*.htm* + +

Q: When I use filters, I can't access another +domain, but I have filtered it! + +

A: You may have done a mistake declaring filters, for +example +www.all.net/* -*all* will not work, because +-*all* has an upper priority (because it has been declared after ++www.all.net) + +

Q: Must I add a  '+' or '-' in the filter list +when I want to use filters? + +

A: YES. '+' is for accepting links and '-' to avoid +them. If you forget it, HTTrack will consider that you want to accept a +filter if there is a wild card in the syntax - e.g. +<filter> if +identical to <filter> if <filter> contains a wild card (*) +(else it will be considered as a normal link to mirror) + +

Q: I want to find file(s) in a web-site. How do I do it? + + +

A: You can use the filters: forbid all files (add a +-* in the filter list) and accept only html files and the file(s) +you want to retrieve (BUT do not forget to add ++<website>*.html in the filter list, or pages will not be +scanned! Add the name of files you want with a */ before ; i.e. +if you want to retrieve file.zip, add */file.zip) + +

Example:httrack www.all.net +www.all.net/*.htm* ++thefileiwant.zip + +

Q: I want to download ftp files/ftp site. How to +do? + +

A: First, HTTrack is not the best tool to download +many ftp files. Its ftp engine is basic (even if reget are possible) +and if your purpose is to download a complete site, use a specific +client. + +

You can download ftp files just by typing the URL, +such as ftp://ftp.www.all.net/pub/files/file010.zip and list ftp +directories like ftp://ftp.www.all.net/pub/files/ . + +

Note: For the filters, use something like ++ftp://ftp.www.all.net/* + +

Q: How can I retrieve .asp or .cgi sources instead +of .html result? + +

A: You can't! For security reasons, web servers do not +allow that. + +

Q: How can I remove these annoying <!-- +Mirrored from... --> from html files? + +

A: Use the footer option (-&F, or see the WinHTTrack +options) + +

Q: Do I have to select between ascii/binary transfer +mode? + +

A: No, http files are always transfered as binary +files. Ftp files, too (even if ascii mode could be selected) + +

Q: Can HTTrack perform form-based authentication? + + +

A: Yes. See the URL capture abilities (--catchurl for +command-line release, or in the WinHTTrack interface) + +

Q: Can I redirect downloads to tar/zip archive? + +

A: Yes. See the shell system command option (-V +option for command-line release) + +

Q: Can I use username/password authentication on a +site? + +

A: Yes. Use user:password@your_url (example: +http://foo:bar@www.all.net/private/mybox.html) + +

Q: Can I use username/password authentication for a +proxy? + +

A: Yes. Use user:password@your_proxy_name as your +proxy name (example: smith:foo@proxy.mycorp.com) + +

Q: Can HTTrack generates HP-UX or ISO9660 compatible +files? + +

A: Yes. See the build options (-N, or see the +WinHTTrack options) + +

Q: If there any SOCKS support? + +

A: Not yet! + +

Q: What's this hts-cache directory? Can I remove it? + + +

A: NO if you want to update the site, because this +directory is used by HTTrack for this purpose. If you remove it, +options and URLs will not be available for updating the site + +

Q: Can I start a mirror from my bookmarks? + +

A: Yes. Drag&Drop your bookmark.html file to the +WinHTTrack window (or use file://filename for command-line release) and +select bookmark mirroring (mirror all links in pages, -Y) or bookmark +testing (--testlinks) + +

Q: I am getting a "pipe broken" error and the mirror +stops, what should I do? + +

A: Chances are this is a result of downloading too +many pages at a time. Remote servers may not allow or be able to handle +too many sessions, or your system may be unable to provide the necessary +resources. Try redusing this number - for example using the -c2 options +for only 2 simultaneous sesions. + + +

+
+
+ + + + + +
+ + + + + + diff --git a/html/filters.html b/html/filters.html new file mode 100644 index 0000000..d058296 --- /dev/null +++ b/html/filters.html @@ -0,0 +1,276 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Filters: Advanced

+ +
+ +See also: The FAQ
+ +
+ + You have to know that once you have defined + starts links, the default mode is to mirror these links - i.e. if one of your start page is + www.someweb.com/test/index.html, all links starting with www.someweb.com/test/ will be + accepted. But links directly in www.someweb.com/.. will not be accepted, however, because + they are in a higher strcuture. This prevent HTTrack from mirroring the whole site. (All + files in structure levels equal or lower than the primary links will be retrieved.)
+
+
+ But you may want to download files that are not directly in the subfolders, or on the + contrary refuse files of a particular type. That is the purpose of filters. +
+ +
+ To accept a family of links (for example, all links with a specific name or type), you just have to add + an authorization filter, like +*.gif. The pattern is a plus (this one: +), + followed by a pattern composed of letters and wildcards (this one: *). +

+ To forbide a family of links, define + an authorization filter, like -*.gif. The pattern is a dash (this one: -), + followed by a the same kind of pattern as for the authorization filter. +

+ Example: +*.gif will accept all files finished by .gif
+ Example: -*.gif will refuse all files finished by .gif
+
+ +
+ Let's talk a little more about patterns: + +
+ Filters are analyzed by HTTrack from the first filter to the last one. The complete URL + name is compared to filters defined by the user or added automatically by HTTrack.

+ A link has an higher priority than the one before it - hierarchy is important:
+ +
+ + + +
+ +*.gif -image*.gif + + Will accept all gif files BUT image1.gif,imageblue.gif,imagery.gif and so on +
+ -image*.gif +*.gif + + Will accept all gif files, because the second pattern is prioritary (because it is defined AFTER the first one) +
+
+ +
+ We saw that patterns are composed of letters and wildcards (*), as in */image*.gif + +


+ Special wild cards can be used for specific characters: (*[..])

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
*any characters (the most commonly used)
*[file] or *[name]any filename or name, e.g. not /,? and ; characters
*[path]any path (and filename), e.g. not ? and ; characters
*[a,z,e,r,t,y]any letters among a,z,e,r,t,y
*[a-z]any letters
*[0-9,a,z,e,r,t,y]any characters among 0..9 and a,z,e,r,t,y
*[]no characters must be present after
*[<NN]the file size must be smaller than NN KB +
(note: this may cause broken files during the download)
*[>NN]the file size must be greater than NN KB +
(note: this may cause broken files during the download)
*[<NN>MM]the file size must be smaller than NN KB and greater than MM KB +
(note: this may cause broken files during the download)
+ + +


+ Here are some examples of filters: (that can be generated automatically using the + interface)

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
www.thisweb.com* This will refuse/accept this web site (all links located in it will be rejected)
*.com/*This will refuse/accept all links that contains .com in them
*cgi-bin* This will refuse/accept all links that contains cgi-bin in them
www.*[path].com/*[path].zip This will refuse/accept all zip files in .com addresses
*someweb*/*.tar*This will refuse/accept all tar (or tar.gz etc.) files in hosts containing someweb
*/*somepage*This will refuse/accept all links containing somepage (but not in the address)
*.htmlThis will refuse/accept all html files.
+ Warning! With this filter you will accept ALL html files, even those in other addresses. + (causing a global (!) web mirror..) Use www.someweb.com/*.html to accept all html files from + a web.
*.html*[]Identical to *.html, but the link must not have any supplemental characters + at the end (links with parameters, like www.someweb.com/index.html?page=10, will be + refused)
+ +
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/httrack.css b/html/httrack.css new file mode 100644 index 0000000..4f2c01b --- /dev/null +++ b/html/httrack.css @@ -0,0 +1,70 @@ + +body { + margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px; + background: #77b; +} +body, td { + font: 0.96em/1.3em "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; + } + +#subTitle { + background: #000; color: #fff; padding: 4px; font-weight: bold; + } + +/* + Width for "#siteNavigation td" based on number of buttons + Six: 16.6% +*/ +#siteNavigation td { width: 16.6%; } +#siteNavigation a { + display: block; padding: 2px; + text-align: center; font-weight: bold; color: #448; /* font-size: 12px; */ background-color: #99c; + } +#siteNavigation a:link { text-decoration: none; } +#siteNavigation a:visited { text-decoration: none; } +#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; } +#siteNavigation a:active { text-decoration: none; background-color: #ccc; } + +a:link { text-decoration: underline; color: #00f; } +a:visited { text-decoration: underline; color: #000; } +a:hover { text-decoration: underline; color: #c00; } +a:active { text-decoration: underline; } + + + +#pageContent { + clear: both; + border-bottom: 6px solid #000; + padding: 10px; padding-top: 20px; + line-height: 1.65em; + background-image: url(images/bg_rings.gif); + background-repeat: no-repeat; + background-position: top right; + } +#pageContent p { margin: 0; margin-bottom: 30px; } + + + +#pageContent, #siteNavigation { + background-color: #ccd; + } + +.tableWidth { min-width: 400px; } + + +/* ----------------------------------- */ + + +.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; } +.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; } + +hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; } + +h1 { margin: 0; font-weight: bold; font-size: 2em; } +h2 { margin: 0; font-weight: bold; font-size: 1.6em; } +h3 { margin: 0; font-weight: bold; font-size: 1.3em; } + +.blak { background-color: #000; } +.hide { display: none; } + + diff --git a/html/httrack.man.html b/html/httrack.man.html new file mode 100644 index 0000000..986954b --- /dev/null +++ b/html/httrack.man.html @@ -0,0 +1,2447 @@ + + + + +httrack + + + +

httrack

+NAME
+SYNOPSIS
+DESCRIPTION
+EXAMPLES
+OPTIONS
+FILES
+ENVIRONMENT
+DIAGNOSTICS
+LIMITS
+BUGS
+COPYRIGHT
+AVAILABILITY
+AUTHOR
+SEE ALSO
+ +
+ + + +

NAME

+ + +
+httrack - offline browser : copy websites to a local directory
+ +

SYNOPSIS

+ + + +
+httrack [ url ]... [ -filter ]... [ +filter ]... [ ] +[ -w, --mirror ] [ -W, --mirror-wizard ] [ +-g, --get-files ] [ -i, --continue ] [ -Y, +--mirrorlinks ] [ -P, --proxy ] [ -%f, +--httpproxy-ftp[=N] ] [ -%b, --bind ] [ -rN, +--depth[=N] ] [ -%eN, --ext-depth[=N] ] [ -mN, +--max-files[=N] ] [ -MN, --max-size[=N] ] [ +-EN, --max-time[=N] ] [ -AN, --max-rate[=N] ] +[ -%cN, --connection-per-second[=N] ] [ -GN, +--max-pause[=N] ] [ -cN, --sockets[=N] ] [ +-TN, --timeout ] [ -RN, --retries[=N] ] [ +-JN, --min-rate[=N] ] [ -HN, +--host-control[=N] ] [ -%P, +--extended-parsing[=N] ] [ -n, --near ] [ -t, +--test ] [ -%L, --list ] [ -%S, --urllist +] [ -NN, --structure[=N] ] [ -%M, +--mime-html[=N] ] [ -LN, --long-names[=N] ] [ +-KN, --keep-links[=N] ] [ -x, +--replace-external ] [ -%x, --disable-passwords ] +[ -%q, --include-query-string ] [ -o, +--generate-errors ] [ -X, --purge-old[=N] ] [ +-%p, --preserve ] [ -bN, --cookies[=N] ] [ +-u, --check-type[=N] ] [ -j, --parse-java[=N] +] [ -sN, --robots[=N] ] [ -%h, --http-10 ] [ +-%k, --keep-alive ] [ -%B, --tolerant ] [ +-%s, --updatehack ] [ -%u, --urlhack ] [ +-%A, --assume ] [ -@iN, --protocol[=N] ] [ +-F, --user-agent ] [ -%F, --footer ] [ -%l, +--language ] [ -C, --cache[=N] ] [ -k, +--store-all-in-cache ] [ -%n, --do-not-recatch ] +[ -%v, --display ] [ -Q, --do-not-log ] [ +-q, --quiet ] [ -z, --extra-log ] [ -Z, +--debug-log ] [ -v, --verbose ] [ -f, +--file-log ] [ -f2, --single-log ] [ -I, +--index ] [ -%i, --build-top-index ] [ -%I, +--search-index ] [ -pN, --priority[=N] ] [ -S, +--stay-on-same-dir ] [ -D, --can-go-down ] [ +-U, --can-go-up ] [ -B, --can-go-up-and-down ] +[ -a, --stay-on-same-address ] [ -d, +--stay-on-same-domain ] [ -l, --stay-on-same-tld +] [ -e, --go-everywhere ] [ -%H, +--debug-headers ] [ -V, --userdef-cmd ] [ -%U, +--user ] [ -%W, --callback ] [ -K, +--keep-links[=N] ] [
+ +

DESCRIPTION

+ + + +
+httrack allows you to download a World Wide Web site +from the Internet to a local directory, building recursively +all directories, getting HTML, images, and other files from +the server to your computer. HTTrack arranges the original +site's relative link-structure. Simply open a page of the +"mirrored" website in your browser, and you can +browse the site from link to link, as if you were viewing it +online. HTTrack can also update an existing mirrored site, +and resume interrupted downloads.
+ +

EXAMPLES

+ + + +
+httrack www.someweb.com/bob/
+ + + +
+mirror site www.someweb.com/bob/ and only this +site
+ + + +
+httrack www.someweb.com/bob/ www.anothertest.com/mike/ ++*.com/*.jpg
+ + + +
+mirror the two sites together (with shared links) and accept +any .jpg files on .com sites
+ + + +
+httrack www.someweb.com/bob/bobby.html +* +-r6
+ + + +
+means get all files starting from bobby.html, with 6 +link-depth, and possibility of going everywhere on the +web
+ + + +
+httrack www.someweb.com/bob/bobby.html --spider -P +proxy.myhost.com:8080
+ + + +
+runs the spider on www.someweb.com/bob/bobby.html using a +proxy
+ + + +
+httrack --update
+ + + +
+updates a mirror in the current folder
+ + + +
+httrack
+ + + +
+will bring you to the interactive mode
+ + + +
+httrack --continue
+ + + +
+continues a mirror in the current folder
+ +

OPTIONS

+ + + +
+General options:
+ + + +
+-O
+ + + +
+path for mirror/logfiles+cache (-O path mirror[,path cache +and logfiles]) (--path <param>)
+ + + +
+Action options:
+ + + +
+-w
+ + + +
+*mirror web sites (--mirror)
+ + + +
+-W
+ + + +
+mirror web sites, semi-automatic (asks questions) +(--mirror-wizard)
+ + + +
+-g
+ + + +
+just get files (saved in the current directory) +(--get-files)
+ + + +
+-i
+ + + +
+continue an interrupted mirror using the cache +(--continue)
+ + + +
+-Y
+ + + +
+mirror ALL links located in the first level pages (mirror +links) (--mirrorlinks)
+ + + +
+Proxy options:
+ + + +
+-P
+ + + +
+proxy use (-P proxy:port or -P user:pass@proxy:port) +(--proxy <param>)
+ + + +
+-%f
+ + + +
+*use proxy for ftp (f0 don t use) +(--httpproxy-ftp[=N])
+ + + +
+-%b
+ + + +
+use this local hostname to make/send requests (-%b hostname) +(--bind <param>)
+ + + +
+Limits options:
+ + + +
+-rN
+ + + +
+set the mirror depth to N (* r9999) +(--depth[=N])
+ + + +
+-%eN
+ + + +
+set the external links depth to N (* %e0) +(--ext-depth[=N])
+ + + +
+-mN
+ + + +
+maximum file length for a non-html file +(--max-files[=N])
+ + + +
+-mN,N2
+ + + +
+maximum file length for non html (N) and html +(N2)
+ + + +
+-MN
+ + + +
+maximum overall size that can be uploaded/scanned +(--max-size[=N])
+ + + +
+-EN
+ + + +
+maximum mirror time in seconds (60=1 minute, 3600=1 hour) +(--max-time[=N])
+ + + +
+-AN
+ + + +
+maximum transfer rate in bytes/seconds (1000=1KB/s max) +(--max-rate[=N])
+ + + +
+-%cN
+ + + +
+maximum number of connections/seconds (*%c10) +(--connection-per-second[=N])
+ + + +
+-GN
+ + + +
+pause transfer if N bytes reached, and wait until lock file +is deleted (--max-pause[=N])
+ + + +
+Flow control:
+ + + +
+-cN
+ + + +
+number of multiple connections (*c8) +(--sockets[=N])
+ + + +
+-TN
+ + + +
+timeout, number of seconds after a non-responding link is +shutdown (--timeout)
+ + + +
+-RN
+ + + +
+number of retries, in case of timeout or non-fatal errors +(*R1) (--retries[=N])
+ + + +
+-JN
+ + + +
+traffic jam control, minimum transfert rate (bytes/seconds) +tolerated for a link (--min-rate[=N])
+ + + +
+-HN
+ + + +
+host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout +or slow (--host-control[=N])
+ + + +
+Links options:
+ + + +
+-%P
+ + + +
+*extended parsing, attempt to parse all links, even in +unknown tags or Javascript (%P0 don t use) +(--extended-parsing[=N])
+ + + +
+-n
+ + + +
+get non-html files near an html file (ex: an image located +outside) (--near)
+ + + +
+-t
+ + + +
+test all URLs (even forbidden ones) (--test)
+ + + +
+-%L
+ + + +
+<file> add all URL located in this text file (one URL +per line) (--list <param>)
+ + + +
+-%S
+ + + +
+<file> add all scan rules located in this text file +(one scan rule per line) (--urllist +<param>)
+ + + +
+Build options:
+ + + +
+-NN
+ + + +
+structure type (0 *original structure, 1+: see below) +(--structure[=N])
+ + + +
+-or
+ + + +
+user defined structure (-N +"%h%p/%n%q.%t")
+ + + +
+-%M
+ + + +
+generate a RFC MIME-encapsulated full-archive (.mht) +(--mime-html[=N])
+ + + +
+-LN
+ + + +
+long names (L1 *long names / L0 8-3 conversion / L2 ISO9660 +compatible) (--long-names[=N])
+ + + +
+-KN
+ + + +
+keep original links (e.g. http://www.adr/link) (K0 *relative +link, K absolute links, K4 original links, K3 absolute URI +links) (--keep-links[=N])
+ + + +
+-x
+ + + +
+replace external html links by error pages +(--replace-external)
+ + + +
+-%x
+ + + +
+do not include any password for external password protected +websites (%x0 include) (--disable-passwords)
+ + + +
+-%q
+ + + +
+*include query string for local files (useless, for +information purpose only) (%q0 don t include) +(--include-query-string)
+ + + +
+-o
+ + + +
+*generate output html file in case of error (404..) (o0 don +t generate) (--generate-errors)
+ + + +
+-X
+ + + +
+*purge old files after update (X0 keep delete) +(--purge-old[=N])
+ + + +
+-%p
+ + + +
+preserve html files as is (identical to -K4 -%F "" +) (--preserve)
+ + + +
+Spider options:
+ + + +
+-bN
+ + + +
+accept cookies in cookies.txt (0=do not accept,* 1=accept) +(--cookies[=N])
+ + + +
+-u
+ + + +
+check document type if unknown (cgi,asp..) (u0 don t check, +* u1 check but /, u2 check always) +(--check-type[=N])
+ + + +
+-j
+ + + +
+*parse Java Classes (j0 don t parse) +(--parse-java[=N])
+ + + +
+-sN
+ + + +
+follow robots.txt and meta robots tags +(0=never,1=sometimes,* 2=always) (--robots[=N])
+ + + +
+-%h
+ + + +
+force HTTP/1.0 requests (reduce update features, only for +old servers or proxies) (--http-10)
+ + + +
+-%k
+ + + +
+use keep-alive if possible, greately reducing latency for +small files and test requests (%k0 don t use) +(--keep-alive)
+ + + +
+-%B
+ + + +
+tolerant requests (accept bogus responses on some servers, +but not standard!) (--tolerant)
+ + + +
+-%s
+ + + +
+update hacks: various hacks to limit re-transfers when +updating (identical size, bogus response..) +(--updatehack)
+ + + +
+-%u
+ + + +
+url hacks: various hacks to limit duplicate URLs (strip //, +www.foo.com==foo.com..) (--urlhack)
+ + + +
+-%A
+ + + +
+assume that a type (cgi,asp..) is always linked with a mime +type (-%A php3,cgi=text/html;dat,bin=application/x-zip) +(--assume <param>)
+ + + +
+-@iN
+ + + +
+internet protocol (0=both ipv6+ipv4, 4=ipv4 only, 6=ipv6 +only) (--protocol[=N])
+ + + +
+Browser ID:
+ + + +
+-F
+ + + +
+user-agent field (-F "user-agent name") +(--user-agent <param>)
+ + + +
+-%F
+ + + +
+footer string in Html code (-%F "Mirrored [from host %s +[file %s [at %s]]]" (--footer +<param>)
+ + + +
+-%l
+ + + +
+preffered language (-%l "fr, en, jp, *" +(--language <param>)
+ + + +
+Log, index, cache
+ + + +
+-C
+ + + +
+create/use a cache for updates and retries (C0 no cache,C1 +cache is prioritary,* C2 test update before) +(--cache[=N])
+ + + +
+-k
+ + + +
+store all files in cache (not useful if files on disk) +(--store-all-in-cache)
+ + + +
+-%n
+ + + +
+do not re-download locally erased files +(--do-not-recatch)
+ + + +
+-%v
+ + + +
+display on screen filenames downloaded (in realtime) - * %v1 +short version (--display)
+ + + +
+-Q
+ + + +
+no log - quiet mode (--do-not-log)
+ + + +
+-q
+ + + +
+no questions - quiet mode (--quiet)
+ + + +
+-z
+ + + +
+log - extra infos (--extra-log)
+ + + +
+-Z
+ + + +
+log - debug (--debug-log)
+ + + +
+-v
+ + + +
+log on screen (--verbose)
+ + + +
+-f
+ + + +
+*log in files (--file-log)
+ + + +
+-f2
+ + + +
+one single log file (--single-log)
+ + + +
+-I
+ + + +
+*make an index (I0 don t make) (--index)
+ + + +
+-%i
+ + + +
+make a top index for a project folder (* %i0 don t make) +(--build-top-index)
+ + + +
+-%I
+ + + +
+make an searchable index for this mirror (* %I0 don t make) +(--search-index)
+ + + +
+Expert options:
+ + + +
+-pN
+ + + +
+priority mode: (* p3) (--priority[=N])
+ + + +
+-p0
+ + + +
+just scan, don t save anything (for checking +links)
+ + + +
+-p1
+ + + +
+save only html files
+ + + +
+-p2
+ + + +
+save only non html files
+ + + +
+-*p3
+ + + +
+save all files
+ + + +
+-p7
+ + + +
+get html files before, then treat other files
+ + + +
+-S
+ + + +
+stay on the same directory (--stay-on-same-dir)
+ + + +
+-D
+ + + +
+*can only go down into subdirs (--can-go-down)
+ + + +
+-U
+ + + +
+can only go to upper directories (--can-go-up)
+ + + +
+-B
+ + + +
+can both go up&down into the directory structure +(--can-go-up-and-down)
+ + + +
+-a
+ + + +
+*stay on the same address +(--stay-on-same-address)
+ + + +
+-d
+ + + +
+stay on the same principal domain +(--stay-on-same-domain)
+ + + +
+-l
+ + + +
+stay on the same TLD (eg: .com) +(--stay-on-same-tld)
+ + + +
+-e
+ + + +
+go everywhere on the web (--go-everywhere)
+ + + +
+-%H
+ + + +
+debug HTTP headers in logfile (--debug-headers)
+ + + +
+Guru options: (do NOT use if possible)
+ + + +
+-#X
+ + + +
+*use optimized engine (limited memory boundary checks) +(--fast-engine)
+ + + +
+-#0
+ + + +
+filter test (-#0 *.gif www.bar.com/foo.gif ) +(--debug-testfilters <param>)
+ + + +
+-#C
+ + + +
+cache list (-#C *.com/spider*.gif (--debug-cache +<param>)
+ + + +
+-#f
+ + + +
+always flush log files (--advanced-flushlogs)
+ + + +
+-#FN
+ + + +
+maximum number of filters +(--advanced-maxfilters[=N])
+ + + +
+-#h
+ + + +
+version info (--version)
+ + + +
+-#K
+ + + +
+scan stdin (debug) (--debug-scanstdin)
+ + + +
+-#L
+ + + +
+maximum number of links (-#L1000000) +(--advanced-maxlinks)
+ + + +
+-#p
+ + + +
+display ugly progress information +(--advanced-progressinfo)
+ + + +
+-#P
+ + + +
+catch URL (--catch-url)
+ + + +
+-#R
+ + + +
+old FTP routines (debug) (--debug-oldftp)
+ + + +
+-#T
+ + + +
+generate transfer ops. log every minutes +(--debug-xfrstats)
+ + + +
+-#u
+ + + +
+wait time (--advanced-wait)
+ + + +
+-#Z
+ + + +
+generate transfer rate statictics every minutes +(--debug-ratestats)
+ + + +
+-#!
+ + + +
+execute a shell command (-#! "echo hello") (--exec +<param>)
+ + + +
+Command-line specific options:
+ + + +
+-V
+ + + +
+execute system command after each files ($0 is the filename: +-V "rm ") (--userdef-cmd +<param>)
+ + + +
+-%U
+ + + +
+run the engine with another id when called as root (-%U +smith) (--user <param>)
+ + + +
+-%W
+ + + +
+use an external library function as a wrapper (-%W +link-detected=foo.so:myfunction) (--callback +<param>)
+ + + +
+Details: Option N
+ + + +
+-N0
+ + + +
+Site-structure (default)
+ + + +
+-N1
+ + + +
+HTML in web/, images/other files in web/images/
+ + + +
+-N2
+ + + +
+HTML in web/HTML, images/other in web/images
+ + + +
+-N3
+ + + +
+HTML in web/, images/other in web/
+ + + +
+-N4
+ + + +
+HTML in web/, images/other in web/xxx, where xxx is the file +extension (all gif will be placed onto web/gif, for +example)
+ + + +
+-N5
+ + + +
+Images/other in web/xxx and HTML in web/HTML
+ + + +
+-N99
+ + + +
+All files in web/, with random names (gadget !)
+ + + +
+-N100
+ + + +
+Site-structure, without www.domain.xxx/
+ + + +
+-N101
+ + + +
+Identical to N1 exept that "web" is replaced by +the site s name
+ + + +
+-N102
+ + + +
+Identical to N2 exept that "web" is replaced by +the site s name
+ + + +
+-N103
+ + + +
+Identical to N3 exept that "web" is replaced by +the site s name
+ + + +
+-N104
+ + + +
+Identical to N4 exept that "web" is replaced by +the site s name
+ + + +
+-N105
+ + + +
+Identical to N5 exept that "web" is replaced by +the site s name
+ + + +
+-N199
+ + + +
+Identical to N99 exept that "web" is replaced by +the site s name
+ + + +
+-N1001
+ + + +
+Identical to N1 exept that there is no "web" +directory
+ + + +
+-N1002
+ + + +
+Identical to N2 exept that there is no "web" +directory
+ + + +
+-N1003
+ + + +
+Identical to N3 exept that there is no "web" +directory (option set for g option)
+ + + +
+-N1004
+ + + +
+Identical to N4 exept that there is no "web" +directory
+ + + +
+-N1005
+ + + +
+Identical to N5 exept that there is no "web" +directory
+ + + +
+-N1099
+ + + +
+Identical to N99 exept that there is no "web" +directory
+ + + +
+Details: User-defined option N
+ + + +
+%n Name of file without file type (ex: image) %N Name of +file, including file type (ex: image.gif) %t File type (ex: +gif) %p Path [without ending /] (ex: /someimages) %h Host +name (ex: www.someweb.com) %M URL MD5 (128 bits, 32 ascii +bytes) %Q query string MD5 (128 bits, 32 ascii bytes) %q +small query string MD5 (16 bits, 4 ascii bytes) %s? Short +name version (ex: %sN) %[param] param variable in query +string %[param:before:after:notfound:empty] advanced +variable extraction
+ + + +
+Details: User-defined option N and advanced variable +extraction
+ + + +
+%[param:before:after:notfound:empty]
+ + + +
+-param
+ + + +
+: parameter name
+ + + +
+-before
+ + + +
+: string to prepend if the parameter was found
+ + + +
+-after
+ + + +
+: string to append if the parameter was found
+ + + +
+-notfound
+ + + +
+: string replacement if the parameter could not be +found
+ + + +
+-empty
+ + + +
+: string replacement if the parameter was empty
+ + + +
+-all
+ + + +
+fields, except the first one (the parameter name), can be +empty
+ + + +
+Details: Option K
+ + + +
+-K0
+ + + +
+foo.cgi?q=45 -> foo4B54.html?q=45 (relative URI, +default)
+ + + +
+-K
+ + + +
+-> http://www.foobar.com/folder/foo.cgi?q=45 (absolute +URL) (--keep-links[=N])
+ + + +
+-K4
+ + + +
+-> foo.cgi?q=45 (original URL)
+ + + +
+-K3
+ + + +
+-> /folder/foo.cgi?q=45 (absolute URI)
+ + + +
+Shortcuts:
+ + + +
+--mirror
+ + + +
+<URLs> *make a mirror of site(s) +(default)
+ + + +
+--get
+ + + +
+<URLs> get the files indicated, do not seek other URLs +(-qg)
+ + + +
+--list
+ + + +
+<text file> add all URL located in this text file +(-%L)
+ + + +
+--mirrorlinks
+ + + +
+<URLs> mirror all links in 1st level pages +(-Y)
+ + + +
+--testlinks
+ + + +
+<URLs> test links in pages (-r1p0C0I0t)
+ + + +
+--spider
+ + + +
+<URLs> spider site(s), to test links: reports Errors +& Warnings (-p0C0I0t)
+ + + +
+--testsite
+ + + +
+<URLs> identical to --spider
+ + + +
+--skeleton
+ + + +
+<URLs> make a mirror, but gets only html files +(-p1)
+ + + +
+--update
+ + + +
+update a mirror, without confirmation (-iC2)
+ + + +
+--continue
+ + + +
+continue a mirror, without confirmation (-iC1)
+ + + +
+--catchurl
+ + + +
+create a temporary proxy to capture an URL or a form post +URL
+ + + +
+--clean
+ + + +
+erase cache & log files
+ + + +
+--http10
+ + + +
+force http/1.0 requests (-%h)
+ + + +
+Details: Option %W: External callbacks +prototypes
+ + + +
+init : void (* myfunction)(void);
+ + + +
+free : void (* myfunction)(void);
+ + + +
+start : int (* myfunction)(httrackp* +opt);
+ + + +
+end : int (* myfunction)(void);
+ + + +
+change-options : int (* myfunction)(httrackp* +opt);
+ + + +
+check-html : int (* myfunction)(char* html,int len,char* +url
+ + + +
+adresse,char* url fichier);
+ + + +
+query : char* (* myfunction)(char* +question);
+ + + +
+query2 : char* (* myfunction)(char* +question);
+ + + +
+query3 : char* (* myfunction)(char* +question);
+ + + +
+loop : int (* myfunction)(lien
+ + + +
+back* back,int back max,int back index,int lien tot,int lien +ntot,int stat time,hts stat struct* stats);
+ + + +
+check-link : int (* myfunction)(char* adr,char* fil,int +status);
+ + + +
+pause : void (* myfunction)(char* +lockfile);
+ + + +
+save-file : void (* myfunction)(char* +file);
+ + + +
+link-detected : int (* myfunction)(char* +link);
+ + + +
+transfer-status : int (* +myfunction)(lien
+ + + +
+back* back);
+ + + +
+save-name : int (* myfunction)(char* adr
+ + + +
+complete,char* fil complete,char* referer adr,char* referer +fil,char* save);
+ +

FILES

+ + + +
+/etc/httrack.conf
+ + + +
+The system wide configuration file.
+ +

ENVIRONMENT

+ + + +
+HOME
+ + + +
+Is being used if you defined in /etc/httrack.conf the line +path ~/websites/#
+ +

DIAGNOSTICS

+ + + +
+Errors/Warnings are reported to hts-log.txt by +default, or to stderr if the -v option was +specified.
+ +

LIMITS

+ + + +
+These are the principals limits of HTTrack for that moment. +Note that we did not heard about any other utility that +would have solved them.
+ + + +
+- Several scripts generating complex filenames may +not find them (ex: +img.src='image'+a+Mobj.dst+'.gif')
+ + + +
+- Some java classes may not find some files on them +(class included)
+ + + +
+- Cgi-bin links may not work properly in some cases +(parameters needed). To avoid them: use filters like +-*cgi-bin*
+ +

BUGS

+ + + +
+Please reports bugs to <bugs@httrack.com>. +Include a complete, self-contained example that will allow +the bug to be reproduced, and say which version of httrack +you are using. Do not forget to detail options used, OS +version, and any other information you deem +necessary.
+ +

COPYRIGHT

+ + + +
+Copyright (C) Xavier Roche and other +contributors
+ + + +
+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 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.
+ +

AVAILABILITY

+ + + +
+The most recent released version of httrack can be found at: +http://www.httrack.com
+ +

AUTHOR

+ + + +
+Xavier Roche <roche@httrack.com>
+ +

SEE ALSO

+ + + +
+The HTML documentation (available online at +http://www.httrack.com/html/ ) contains more detailed +information. Please also refer to the httrack FAQ +(available online at +http://www.httrack.com/html/faq.html )
+
+ + diff --git a/html/images/bg_rings.gif b/html/images/bg_rings.gif new file mode 100644 index 0000000..da7c5c8 Binary files /dev/null and b/html/images/bg_rings.gif differ diff --git a/html/images/header_title_4.gif b/html/images/header_title_4.gif new file mode 100644 index 0000000..93847d3 Binary files /dev/null and b/html/images/header_title_4.gif differ diff --git a/html/images/screenshot_01.jpg b/html/images/screenshot_01.jpg new file mode 100644 index 0000000..cbafd82 Binary files /dev/null and b/html/images/screenshot_01.jpg differ diff --git a/html/images/screenshot_01b.jpg b/html/images/screenshot_01b.jpg new file mode 100755 index 0000000..43392b4 Binary files /dev/null and b/html/images/screenshot_01b.jpg differ diff --git a/html/img/addurl1.gif b/html/img/addurl1.gif new file mode 100644 index 0000000..009277c Binary files /dev/null and b/html/img/addurl1.gif differ diff --git a/html/img/addurl2.gif b/html/img/addurl2.gif new file mode 100644 index 0000000..92b1a11 Binary files /dev/null and b/html/img/addurl2.gif differ diff --git a/html/img/addurl3.gif b/html/img/addurl3.gif new file mode 100644 index 0000000..6df70f8 Binary files /dev/null and b/html/img/addurl3.gif differ diff --git a/html/img/addurl4.gif b/html/img/addurl4.gif new file mode 100644 index 0000000..721e463 Binary files /dev/null and b/html/img/addurl4.gif differ diff --git a/html/img/addurl5.gif b/html/img/addurl5.gif new file mode 100644 index 0000000..4f61bc4 Binary files /dev/null and b/html/img/addurl5.gif differ diff --git a/html/img/backblue.gif b/html/img/backblue.gif new file mode 100644 index 0000000..99cbbaa Binary files /dev/null and b/html/img/backblue.gif differ diff --git a/html/img/fade.gif b/html/img/fade.gif new file mode 100644 index 0000000..579cc5f Binary files /dev/null and b/html/img/fade.gif differ diff --git a/html/img/httrack.gif b/html/img/httrack.gif new file mode 100644 index 0000000..51da0d2 Binary files /dev/null and b/html/img/httrack.gif differ diff --git a/html/img/snap1_a.gif b/html/img/snap1_a.gif new file mode 100644 index 0000000..cd918e0 Binary files /dev/null and b/html/img/snap1_a.gif differ diff --git a/html/img/snap1_b.gif b/html/img/snap1_b.gif new file mode 100644 index 0000000..539e7c1 Binary files /dev/null and b/html/img/snap1_b.gif differ diff --git a/html/img/snap1_c.gif b/html/img/snap1_c.gif new file mode 100644 index 0000000..496e1cf Binary files /dev/null and b/html/img/snap1_c.gif differ diff --git a/html/img/snap2_a.gif b/html/img/snap2_a.gif new file mode 100644 index 0000000..ddb0367 Binary files /dev/null and b/html/img/snap2_a.gif differ diff --git a/html/img/snap2_b.gif b/html/img/snap2_b.gif new file mode 100644 index 0000000..6d6ad07 Binary files /dev/null and b/html/img/snap2_b.gif differ diff --git a/html/img/snap3_a.gif b/html/img/snap3_a.gif new file mode 100644 index 0000000..84a32ef Binary files /dev/null and b/html/img/snap3_a.gif differ diff --git a/html/img/snap4_a.gif b/html/img/snap4_a.gif new file mode 100644 index 0000000..18a8df9 Binary files /dev/null and b/html/img/snap4_a.gif differ diff --git a/html/img/snap5_a.gif b/html/img/snap5_a.gif new file mode 100644 index 0000000..450fa13 Binary files /dev/null and b/html/img/snap5_a.gif differ diff --git a/html/img/snap9.gif b/html/img/snap9.gif new file mode 100644 index 0000000..1277e01 Binary files /dev/null and b/html/img/snap9.gif differ diff --git a/html/img/snap9_a.gif b/html/img/snap9_a.gif new file mode 100644 index 0000000..342f219 Binary files /dev/null and b/html/img/snap9_a.gif differ diff --git a/html/img/snap9_b.gif b/html/img/snap9_b.gif new file mode 100644 index 0000000..07b9bd4 Binary files /dev/null and b/html/img/snap9_b.gif differ diff --git a/html/img/snap9_c.gif b/html/img/snap9_c.gif new file mode 100644 index 0000000..0620351 Binary files /dev/null and b/html/img/snap9_c.gif differ diff --git a/html/img/snap9_d.gif b/html/img/snap9_d.gif new file mode 100644 index 0000000..120a26f Binary files /dev/null and b/html/img/snap9_d.gif differ diff --git a/html/img/snap9_d2.gif b/html/img/snap9_d2.gif new file mode 100644 index 0000000..4970603 Binary files /dev/null and b/html/img/snap9_d2.gif differ diff --git a/html/img/snap9_d3.gif b/html/img/snap9_d3.gif new file mode 100644 index 0000000..c8f666d Binary files /dev/null and b/html/img/snap9_d3.gif differ diff --git a/html/img/snap9_d4.gif b/html/img/snap9_d4.gif new file mode 100644 index 0000000..82034eb Binary files /dev/null and b/html/img/snap9_d4.gif differ diff --git a/html/img/snap9_d5.gif b/html/img/snap9_d5.gif new file mode 100644 index 0000000..5e4c4f8 Binary files /dev/null and b/html/img/snap9_d5.gif differ diff --git a/html/img/snap9_d6.gif b/html/img/snap9_d6.gif new file mode 100644 index 0000000..e300bf3 Binary files /dev/null and b/html/img/snap9_d6.gif differ diff --git a/html/img/snap9_d7.gif b/html/img/snap9_d7.gif new file mode 100644 index 0000000..67d73bf Binary files /dev/null and b/html/img/snap9_d7.gif differ diff --git a/html/img/snap9_d8.gif b/html/img/snap9_d8.gif new file mode 100644 index 0000000..994a15b Binary files /dev/null and b/html/img/snap9_d8.gif differ diff --git a/html/img/snap9_e.gif b/html/img/snap9_e.gif new file mode 100644 index 0000000..2ac97d1 Binary files /dev/null and b/html/img/snap9_e.gif differ diff --git a/html/img/snap9_f.gif b/html/img/snap9_f.gif new file mode 100644 index 0000000..58fced6 Binary files /dev/null and b/html/img/snap9_f.gif differ diff --git a/html/img/snap9_g.gif b/html/img/snap9_g.gif new file mode 100644 index 0000000..4b26899 Binary files /dev/null and b/html/img/snap9_g.gif differ diff --git a/html/img/snap9_g2.gif b/html/img/snap9_g2.gif new file mode 100644 index 0000000..4dbd71a Binary files /dev/null and b/html/img/snap9_g2.gif differ diff --git a/html/img/snap9_g3.gif b/html/img/snap9_g3.gif new file mode 100644 index 0000000..318f016 Binary files /dev/null and b/html/img/snap9_g3.gif differ diff --git a/html/img/snap9_h.gif b/html/img/snap9_h.gif new file mode 100644 index 0000000..8232bdc Binary files /dev/null and b/html/img/snap9_h.gif differ diff --git a/html/img/snap9_i.gif b/html/img/snap9_i.gif new file mode 100644 index 0000000..e671b61 Binary files /dev/null and b/html/img/snap9_i.gif differ diff --git a/html/img/snap9_j.gif b/html/img/snap9_j.gif new file mode 100644 index 0000000..c154dca Binary files /dev/null and b/html/img/snap9_j.gif differ diff --git a/html/img/snap9_k.gif b/html/img/snap9_k.gif new file mode 100644 index 0000000..8c5621e Binary files /dev/null and b/html/img/snap9_k.gif differ diff --git a/html/index.html b/html/index.html new file mode 100644 index 0000000..993e9fc --- /dev/null +++ b/html/index.html @@ -0,0 +1,153 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Documentation

+ + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/library.html b/html/library.html new file mode 100755 index 0000000..2b61131 --- /dev/null +++ b/html/library.html @@ -0,0 +1,136 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

HTTrack Programming page - using the library

+ +
+ +All library prototypes are available in the httrack-library.h file.
+You may also want to check the httrack.c and httrack.h files to get an example of use of this library. + +

+ + + +

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/options.html b/html/options.html new file mode 100644 index 0000000..4f552a9 --- /dev/null +++ b/html/options.html @@ -0,0 +1,363 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Options

+ +
    +
  • Filters: how to use them
  • +
    Here you can find informations on filters: how to accept all gif files in a mirror, for example +

    +
  • List of options
  • +
+ + +
+
+w  mirror with automatic wizard
+This is the default scanning option, the engine automatically scans links according to the default options, and filters defined. It does not prompt a message when a "foreign" link is reached.
+
+W  semi-automatic mirror with help-wizard (asks questions)
+This option lets the engine ask the user if a link must be mirrored or not, when a new web has been found.
+
+g  just get files (saved in the current directory)
+This option forces the engine not to scan the files indicated - i.e. the engine only gets the files indicated.
+
+i  continue an interrupted mirror using the cache
+This option indicates to the engine that a mirror must be updated or continued.
+
+rN  recurse get with limited link depth of N
+This option sets the maximum recurse level. Default is infinite (the engine "knows" that it should not go out of current domain)
+
+a   stay on the same address
+This is the default primary scanning option, the engine does not go out of domains without permissions (filters, for example)
+
+d   stay on the same principal domain
+This option lets the engine go on all sites that exist on the same principal domain.
+Example: a link located at www.someweb.com that goes to members.someweb.com will be followed.
+
+l   stay on the same location (.com, etc.)
+This option lets the engine go on all sites that exist on the same location.
+Example: a link located at www.someweb.com that goes to www.anyotherweb.com will be followed.
+Warning: this is a potentially dangerous option, limit the recurse depth with r option.
+
+e   go everywhere on the web
+This option lets the engine go on any sites.
+Example: a link located at www.someweb.com that goes to www.anyotherweb.org will be followed.
+Warning: this is a potentially dangerous option, limit the recurse depth with r option.
+
+n   get non-html files 'near' an html file (ex: an image located outside)
+This option lets the engine catch all files that have references on a page, but that exist outside the web site.
+Example: List of ZIP files links on a page.
+
+t   test all URLs (even forbidden ones)
+This option lets the engine test all links that are not caught.
+Example: to test broken links in a site
+
+x   replace external html links by error pages
+This option tells the engine to rewrite all links not taken into warning pages.
+Example: to browse offline a site, and to warn people that they must be online if they click to external links.
+
+sN  follow robots.txt and meta robots tags
+This option sets the way the engine treats "robots.txt" files. This file is often set by webmasters to avoir cgi-bin directories, or other irrevelant pages.
+Values: 
+  s0  Do not take robots.txt rules
+  s1  Follow rules, if compatible with internal filters
+  s2  Always follow site's rules
+
+bN  accept cookies in cookies.txt
+This option activates or unactivates the cookie
+  b0 do not accept cookies
+  b1 accept cookies
+
+S   stay on the same directory
+This option asks the engine to stay on the same folder level.
+Example: A link in /index.html that points to /sub/other.html will not be followed
+
+D   can only go down into subdirs
+This is the default option, the engine can go everywhere on the same directoy, or in lower structures
+
+U   can only go to upper directories
+This option asks the engine to stay on the same folder level or in upper structures
+
+B   can both go up&down into the directory structure
+This option lets the engine to go in any directory level
+
+Y   mirror ALL links located in the first level pages (mirror links)
+This option is activated for the links typed in the command line
+Example: if you have a list of web sites in www.asitelist.com/index.html, then all these sites will be mirrored
+
+NN  name conversion type (0 *original structure 1,2,3 html/data in one directory)
+  N0 Site-structure (default)
+  N1 Html in web/, images/other files in web/images/
+  N2 Html in web/html, images/other in web/images
+  N3 Html in web/,  images/other in web/
+  N4 Html in web/, images/other in web/xxx, where xxx is the file extension (all gif will be placed onto web/gif, for example)
+  N5 Images/other in web/xxx and Html in web/html
+
+  N99 All files in web/, with random names (gadget !)
+
+  N100 Site-structure, without www.domain.xxx/
+  N101 Identical to N1 exept that "web" is replaced by the site's name
+  N102 Identical to N2 exept that "web" is replaced by the site's name
+  N103 Identical to N3 exept that "web" is replaced by the site's name
+  N104 Identical to N4 exept that "web" is replaced by the site's name
+  N105 Identical to N5 exept that "web" is replaced by the site's name
+  N199 Identical to N99 exept that "web" is replaced by the site's name
+
+  N1001 Identical to N1 exept that there is no "web" directory
+  N1002 Identical to N2 exept that there is no "web" directory
+  N1003 Identical to N3 exept that there is no "web" directory (option set for g option)
+  N1004 Identical to N4 exept that there is no "web" directory
+  N1005 Identical to N5 exept that there is no "web" directory
+  N1099 Identical to N99 exept that there is no "web" directory
+
+LN  long names
+  L0 Filenames and directory names are limited to 8 characters + 3 for extension
+  L1 No restrictions (default)
+
+K   keep original links (e.g. http://www.adr/link) (K0 *relative link)
+This option has only been kept for compatibility reasons
+
+pN  priority mode:
+  p0 just scan, don't save anything (for checking links)
+  p1 save only html files
+  p2 save only non html files
+  p3 save all files
+  p7 get html files before, then treat other files
+
+cN  number of multiple connections (*c8)
+Set the numer of multiple simultaneous connections
+
+O   path for mirror/logfiles+cache (-O path_mirror[,path_cache_and_logfiles])
+This option define the path for mirror and log files
+Example: -P "/user/webs","/user/logs"
+
+P   proxy use (-P proxy:port or -P user:pass@proxy:port)
+This option define the proxy used in this mirror
+Example: -P proxy.myhost.com:8080
+
+F   user-agent field (-F \"user-agent name\
+This option define the user-agent field
+Example: -F "Mozilla/4.5 (compatible; HTTrack 1.2x; Windows 98)"
+
+mN maximum file length for a non-html file
+This option define the maximum size for non-html files
+Example: -m100000
+
+mN,N'  for non html (N) and html (N')
+This option define the maximum size for non-html files and html-files
+Example: -m100000,250000
+
+MN maximum overall size that can be uploaded/scanned
+This option define the maximum amount of bytes that can be downloaded
+Example: -M1000000
+
+EN maximum mirror time in seconds (60=1 minute, 3600=1 hour)
+This option define the maximum time that the mirror can last
+Example: -E3600
+
+AN maximum transfer rate in bytes/seconds (1000=1kb/s max)
+This option define the maximum transfer rate
+Example: -A2000
+
+GN pause transfer if N bytes reached, and wait until lock file is deleted
+This option asks the engine to pause every time N bytes have been transfered, and restarts when the lock file "hts-pause.lock" is being deleted
+Example: -G20000000
+
+u check document type if unknown (cgi,asp..)
+This option define the way the engine checks the file type
+  u0 do not check
+  u1 check but /
+  u2 check always
+
+RN number of retries, in case of timeout or non-fatal errors (*R0)
+This option sets the maximum number of tries that can be processed for a file
+
+o *generate output html file in case of error (404..) (o0 don't generate)
+This option define whether the engine has to generate html output file or not if an error occured
+
+TN timeout, number of seconds after a non-responding link is shutdown
+This option define the timeout
+Example: -T120
+
+JN traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link
+This option define the minimum transfer rate
+Example: -J200
+
+HN host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow
+This option define whether the engine has to abandon a host if a timeout/"too slow" error occured
+
+&P extended parsing, attempt to parse all links (even in unknown tags or Javascript)
+This option activates the extended parsing, that attempt to find links in unknown Html code/javascript
+
+j *parse Java Classes (j0 don't parse)
+This option define whether the engine has to parse java files or not to catch included files
+
+I *make an index (I0 don't make)
+This option define whether the engine has to generate an index.html on the top directory
+
+X *delete old files after update (X0 keep delete)
+This option define whether the engine has to delete locally, after an update, files that have been deleted in the remote mirror, or that have been excluded
+
+C *create/use a cache for updates and retries (C0 no cache)
+This option define whether the engine has to generate a cache for retries and updates or not
+
+k  store all files in cache (not useful if files on disk)
+This option define whether the engine has to store all files in cache or not
+
+V execute system command after each files ($0 is the filename: -V \"rm \\$0\
+This option lets the engine execute a command for each file saved on disk
+
+q  quiet mode (no questions)
+Do not ask questions (for example, for confirm an option)
+
+Q  log quiet mode (no log)
+Do not generate log files
+
+v  verbose screen mode
+Log files are printed in the screen
+
+f *log file mode
+Log files are generated into two log files
+
+z  extra infos log
+Add more informations on log files
+
+Z  debug log
+Add debug informations on log files
+
+
+--mirror   *make a mirror of site(s) 
+--get   get the files indicated, do not seek other URLs
+--mirrorlinks   test links in pages (identical to -Y)
+--testlinks     test links in pages
+--spider    spider site(s), to test links (reports Errors & Warnings)
+--update    update a mirror, without confirmation
+--skeleton  make a mirror, but gets only html files
+
+--http10  force http/1.0 requests when possible
+
+
+
+ + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/overview.html b/html/overview.html new file mode 100644 index 0000000..934d992 --- /dev/null +++ b/html/overview.html @@ -0,0 +1,156 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Overview

+ +
+ +

+
+Please visit our website! +
+
+

+
+ + + + + + +
+

WinHTTrack snapshot

+
+

+ +HTTrack HTTrack is an easy-to-use offline browser utility. It allows you to download a World +Wide website from the Internet to a local directory, building recursively all directories, +getting html, images, and other files from the server to your computer. HTTrack arranges +the original site's relative link-structure. Simply open a page of the "mirrored" website in +your browser, and you can browse the site from link to link, as if you were viewing it +online. HTTrack can also update an existing mirrored site, and resume interrupted +downloads. HTTrack is fully configurable, and has an integrated help system. + +

+
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/plug.html b/html/plug.html new file mode 100755 index 0000000..ba4be25 --- /dev/null +++ b/html/plug.html @@ -0,0 +1,183 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

HTTrack Programming page - plugging functions

+ +
+ +You can write external functions to be plugged in the httrack library very easily. +We'll see there some examples. + +

+ +The httrack commandline tool allows (since the 3.30 release) to plug external functions to various callbacks defined in httrack.
+See also: the httrack-library.h prototype file, and the callbacks-example.c given in the httrack archive.
+ +
+Example: + +httrack --wrapper check-html=callback:process_file .. + +
+With the callback.so (or callback.dll) module defined as below: + +
+int process_file(char* html, int len, char* url_adresse, char* url_fichier) {
+  printf("now parsing %s%s..\n", url_adresse, url_fichier);
+  strcpy(currentURLBeingParsed, url_adresse);
+  strcat(currentURLBeingParsed, url_fichier);
+  return 1;  /* success */
+}
+
+ +Below the list of callbacks, and associated external wrappers:
+ + + + + + + + + + + + + + + + + + + + + + +
"callback name"callback descriptioncallback function signature
"init"Called during initialization
return value: none
void (* myfunction)(void);
"free"Called during un-initialization
return value: none
void (* myfunction)(void);
"start"Called when the mirror starts. The opt structure passed lists all options defined for this mirror. You may modify the opt structure to fit your needs
return value: 1 upon success, 0 upon error (the mirror will then be aborted)
int (* myfunction)(httrackp* opt);
"end"Called when the mirror ends
return value: 1 upon success, 0 upon error (the mirror will then be considered aborted)
int (* myfunction)(void);
"change-options"Called when options are to be changed. The opt structure passed lists all options, updated to take account of recent changes
return value: 1 upon success, 0 upon error (the mirror will then be aborted)
int (* myfunction)(httrackp* opt);
"check-html"Called when a document (which may not be an html document) is to be parsed. The html address points to the document data, of lenth len. The url_adresse and url_fichier are the address and URI of the file being processed
return value: 1 if the parsing can be processed, 0 if the file must be skipped without being parsed
int (* myfunction)(char* html,int len,char* url_adresse,char* url_fichier);
"query"Called when the wizard needs to ask a question. The question string contains the question for the (human) user
return value: the string answer ("" for default reply)
char* (* myfunction)(char* question);
"query2"Called when the wizard needs to ask a questionchar* (* myfunction)(char* question);
"query3"Called when the wizard needs to ask a questionchar* (* myfunction)(char* question);
"loop"Called periodically (informational, to display statistics)
return value: 1 if the mirror can continue, 0 if the mirror must be aborted
int (* myfunction)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,hts_stat_struct* stats);
"check-link"Called when a link has to be tested. The adr and fil are the address and URI of the link being tested. The passed status value has the following meaning: 0 if the link is to be accepted by default, 1 if the link is to be refused by default, and -1 if no decision has yet been taken by the engine
return value: same meaning as the passed status value ; you may generally return -1 to let the engine take the decision by itself
int (* myfunction)(char* adr,char* fil,int status);
"pause"Called when the engine must pause. When the lockfile passed is deleted, the function can return
return value: none
void (* myfunction)(char* lockfile);
"save-file"Called when a file is to be saved on disk
return value: none
void (* myfunction)(char* file);
"link-detected"Called when a link has been detected
return value: 1 if the link can be analyzed, 0 if the link must not even be considered
int (* myfunction)(char* link);
"transfer-status"Called when a file has been processed (downloaded, updated, or error)
return value: must return 1
int (* myfunction)(lien_back* back);
"save-name"Called when a local filename has to be processed. The adr_complete and fil_complete are the address and URI of the file being saved ; the referer_adr and referer_fil are the address and URI of the referer link. The save string contains the local filename being used. You may modifiy the save string to fit your needs, up to 1024 bytes (note: filename collisions, if any, will be handled by the engine by renaming the file into file-2.ext, file-3.ext ..).
return value: must return 1
int (* myfunction)(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save);
+ +

+ + + +

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/scripting.html b/html/scripting.html new file mode 100755 index 0000000..2752a0d --- /dev/null +++ b/html/scripting.html @@ -0,0 +1,261 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

HTTrack Programming page - scripting

+ +
+ +We will see here several examples, written in batch script (can be adapted to almost all batch script languages) or in C. + +

+ +

+ + + +
+How to get one single file

+ +httrack --get http://localhost/ + +
+ +

+ + + +
+How to get one single file and pipe it to stdout

+ +httrack --quiet --get http://localhost/ -O tmpget -V "cat \$0" | grep -iE "TITLE" +rm -rf tmpget + +
+ +

+ + + +
+How to search in all HTML files on a website

+ +httrack --skeleton http://localhost/ -V "if grep -iE \"TITLE\" \"\$0\">/dev/null; then echo \"Match found at \$0\"; fi"
+rm -rf tmpget
+
+ +
Same thing but matches only the first file:
+ + +httrack --skeleton http://localhost/ -V "if grep -iE \"TITLE\" \"\$0\">/dev/null; then echo \"Match found at \$0\"; kill -9 \$PPID; fi"
+rm -rf tmpget
+
+ +
+ +

+ + + + +
+Indexing a website, and using the index as a search engine

+ +httrack localhost -%I
+ +Will generate an index.txt file, which contains all detected keywords, sorted and indexed using this format:
+ +
+
+keyword
+<tab>   number_of_hits_in_current_page_for_this_keyword   page_location
+<tab>   number_of_hits_in_current_page_for_this_keyword   page_location
+<tab>   number_of_hits_in_current_page_for_this_keyword   page_location
+...
+=total_number_of_hits_for_this_keyword
+((total_number_of_hits_for_this_keyword*1000)/total_number_of_keywords)
+
+
+ +Example: + +
+
+
+abilities
+	1 localhost/manual/mod/index-2.html
+	1 localhost/manual/mod/index.html
+	1 localhost/manual/mod/mod_negotiation.html
+	=3
+	(0)
+ability
+	2 localhost/manual/misc/FAQ.html
+	2 localhost/manual/suexec.html
+	1 localhost/manual/handler.html
+	1 localhost/manual/misc/security_tips.html
+	1 localhost/manual/mod/mod_rewrite.html
+	1 localhost/manual/mod/mod_setenvif.html
+	1 localhost/manual/multilogs.html
+	1 localhost/manual/netware.html
+	1 localhost/manual/new_features_1_3.html
+	1 localhost/manual/windows.html
+	=12
+	(0)
+able
+	4 localhost/manual/dso.html
+	4 localhost/manual/mod/core.html
+	3 localhost/manual/dns-caveats.html
+	3 localhost/manual/mod/mod_auth.html
+	3 localhost/manual/mod/mod_rewrite.html
+	3 localhost/manual/upgrading_to_1_3.html
+	2 localhost/manual/misc/API.html
+	2 localhost/manual/misc/FAQ.html
+	2 localhost/manual/misc/windoz_keepalive.html
+	2 localhost/manual/mod/mod_auth_db.html
+	2 localhost/manual/mod/mod_auth_dbm.html
+	1 localhost/manual/misc/descriptors.html
+	1 localhost/manual/misc/fin_wait_2.html
+	1 localhost/manual/misc/security_tips.html
+	1 localhost/manual/mod/mod_auth_digest.html
+	1 localhost/manual/mod/mod_cern_meta.html
+	1 localhost/manual/mod/mod_env.html
+	1 localhost/manual/mod/mod_example.html
+	1 localhost/manual/mod/mod_unique_id.html
+	1 localhost/manual/mod/mod_usertrack.html
+	1 localhost/manual/stopping.html
+	1 localhost/manual/suexec.html
+	1 localhost/manual/vhosts/ip-based.html
+	1 localhost/manual/windows.html
+	=43
+	(0)
+
+... +
+
+ +Script example: +search.sh + +
+ +

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/about.html b/html/server/about.html new file mode 100755 index 0000000..4dc0ca8 --- /dev/null +++ b/html/server/about.html @@ -0,0 +1,173 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+

${LANG_K2}

+
+ +
+ + + +
+ +
+${LANG_K1}
+
+${LANG_K3} : ${HTTRACK_WEB}
+
+ +
+ +
+ +
+ +
+ +

+ + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/addurl.html b/html/server/addurl.html new file mode 100755 index 0000000..932212b --- /dev/null +++ b/html/server/addurl.html @@ -0,0 +1,229 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + + +${do:end-if} + +
${LANG_OSFWB} + + ${LANG_O1} + + | + + ${LANG_O5} + +
+ + + + +
+ + + + +
+ + + + +
+ + + +
+

${LANG_G43}

+
+ ${LANG_TIPHELP} +
+ +
+ + +
+ + + + + + +
${LANG_T2}http://
+ + + + + + +
${LANG_T4}
${LANG_T5}:
${LANG_T6}:
${LANG_T7}:
+ +
+ +
+
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/div/WebHTTrack-Websites.desktop b/html/server/div/WebHTTrack-Websites.desktop new file mode 100644 index 0000000..cc3c3d9 --- /dev/null +++ b/html/server/div/WebHTTrack-Websites.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Categories=Application;Network +Terminal=false +Name=Browse Mirrored Websites +Comment=Browse Websites Mirrored by WebHTTrack +Exec=webhttrack browse +Icon=/usr/share/httrack/icons/webhttrack.xpm +Terminal=false +MultipleArgs=false +Type=Application diff --git a/html/server/div/WebHTTrack.desktop b/html/server/div/WebHTTrack.desktop new file mode 100644 index 0000000..49f70d0 --- /dev/null +++ b/html/server/div/WebHTTrack.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Categories=Application;Network +Terminal=false +Name=WebHTTrack Website Copier +Comment=Copy websites to your computer +Exec=webhttrack +Icon=/usr/share/httrack/icons/webhttrack.xpm +Terminal=false +MultipleArgs=false +Type=Application diff --git a/html/server/div/httrack.xpm b/html/server/div/httrack.xpm new file mode 100644 index 0000000..74755e7 --- /dev/null +++ b/html/server/div/httrack.xpm @@ -0,0 +1,47 @@ +/* XPM */ +static char *httrack[] = { +/* columns rows colors chars-per-pixel */ +"32 32 9 1", +" c opaque", +". c #191919", +"X c #00007f", +"o c #4c4c4c", +"O c #666667", +"+ c gray50", +"@ c blue", +"# c gray60", +"$ c #b2b2b2", +/* pixels */ +"$$+... .$#########$+X . $#$", +"$#+ $#########$+ . $##", +"##@. .. ##########$@ X###", +"###. .X##########$+ . .###", +"##+ .$##########@ .. . $$#", +"##+.. . $#########$# $##", +"##+. ##########$# X###", +"##+ . .X###########@ . . .###", +"##@.. . $$########$+ $$#", +"##+. #$$$#####$#+ . . $##", +"##+.. . ##$$$###$$#@ . . X###", +"#$O. .X@XoXoX@oXoo .###", +"##+.. . ... . . $$#", +"##+ . . . . .. $##", +"##@. . . . X###", +"###. . . . . .###", +"##+ . . . .$#$", +"##+.. . . . .. . $##", +"##+. . X...X. X.... . .X###", +"##+ . #$#$##$$#$$+. .###", +"##@. . $$####$####@. . . $$#", +"##+. . #$#####$##$# $##", +"##+. . .##########$+. X###", +"#$O. . X###########@. . .###", +"##+.. .$#########$+ $$#", +"##+ . $##########+ . . $##", +"##@. . ###########@ . . X###", +"###. . .X#########$$# .###", +"##+ .$#########$+X . . $$#", +"##+.. . $#########$+ $##", +"##O. ##########$@ X###", +"##+. ..X###########+. . .###" +}; diff --git a/html/server/div/webhttrack.xpm b/html/server/div/webhttrack.xpm new file mode 100644 index 0000000..0297b40 --- /dev/null +++ b/html/server/div/webhttrack.xpm @@ -0,0 +1,88 @@ +/* XPM */ +static char *pixmap[] = { +/* width height ncols cpp */ +"48 48 34 2", + /* Colors */ + "00 c #C0C0C0", + "01 c #040404", + "02 c #080808", + "03 c #0C0C0C", + "04 c #111111", + "05 c #161616", + "06 c #1C1C1C", + "07 c #222222", + "08 c #292929", + "09 c #555555", + "0A c #4D4D4D", + "0B c #424242", + "0C c #393939", + "0D c #333333", + "0E c #333366", + "0F c #666666", + "10 c #999999", + "11 c #666699", + "12 c #9999CC", + "13 c #CCCCCC", + "14 c #6666CC", + "15 c #5F5F5F", + "16 c #777777", + "17 c #868686", + "18 c #969696", + "19 c #B2B2B2", + "1A c #D7D7D7", + "1B c #DDDDDD", + "1C c #E3E3E3", + "1D c #EAEAEA", + "1E c #F1F1F1", + "1F c #A0A0A4", + "20 c #808080", + ".. s None c None", + "121212121212121212121212121212121212121212121212121212121212121212121212121212121214111114121212", + "150E111212110E0914090E0E0E0E0E11090E0E0E0E0E11121212121212121212121212121212121212140D0D14121212", + "080111121211010614040101010101090601010101010B12121212121212121212121212121212121214040414121212", + "080111121211010614040101010101090601010101010B12121212121212121212121212121212121214040414121212", + "080111121211010614040101010101090601010101010B12121212121212121212121212121212121214040414121212", + "080111121211010614040101010101090601010101010B12121212121212121212121212121212121214040414121212", + "080111121211010614070501010405150805020104050E12121212121212121212121212121212121214040414121212", + "0801111212110106121212060111121212120C0115121212121212121212121212121212121212121214040414121212", + "0801111212110106121212060111121212120C0115121212121212121212121212121212121212121214040414121212", + "0801111212110106121212060111121212120C0115121214141414141214111414141412121411141414040414141414", + "0801111212110106121212060111121212120C011512121109110E141209010911091112121501051114040414110909", + "0801080E0E0D0106121212060111121212120C011512120E010E0114140401050D011112110401010D140404140E0108", + "0801010101010106121212060111121212120C011512120E01060114110101010301111209010101081404041407010E", + "0801010101010106121212060111121212120C011512120E010101140C01010101011112070101010814040411010111", + "0801010101010106121212060111121212120C011512120E0101011406010101010111140201060D0814040415010514", + "0801010101010106121212060111121212120C011512120E0101021104010E0E0101111101011111091404040C010D12", + "0801030404040106121212060111121212120C011512120E010514110102141404011111010512121214040303011112", + "08010E1111090106121212060111121212120C011512120E010E12110105141208011111010812121214040101011112", + "0801111212110106121212060111121212120C011512120E01091211010812120D011111010D12121214040101011412", + "0801111212110106121212060111121212120C011512120E01091211010812120D011111010D12121214040405011112", + "0801111212110106121212060111121212120C011512120E01091211010612120801111101061212121404040C010E12", + "0801111212110106121212060111121212120C011512120E010912110104141404011111010111121414040409010712", + "0801111212110106121212060111121212120C011512120E01091214040115150101111101010D090C14040411010414", + "0801111212110106121212060111121212120C011512120E010912140701010101011112040101010814040414050111", + "0801111212110106121212060111121212120C011512120E010912120C010101010111120D01010108140404140D0109", + "0801111212110106121212060111121212120C011512120E0109121211010101070111121501010108140404140E0108", + "0801111212110106121212060111121212120C011512120E01091212140501080D011112140601010D14040414110104", + "0401080E0E0D01030E0E0E04010D0E0E0E0E0501080E0E0601080E0E0E0601070501080E0E060101070E02010C0C0101", + "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101", + "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101", + "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101", + "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101", + "0B07010705010B0B101008180A01061C20060A1710170F10200101010A1E1001081B000501171603150618100C172003", + "151501090D011715....0B1B1B050F1A1A0C201B..1B19..0001010113131B01101A1D0F031B1C0A100D1E..0F131C09", + "0D2001200901100B100A0719190D1F0C0F0D200C130C1F090D01010D00080A05130D0F0003190F17100D190A06191510", + "0510011F2001100B16010510160C1F05010D200119011005010101160901010B1701031A031F051F100D18010119051F", + "011901191005170B100907101706180F010D200119011F0F0B0101180701010F0901011F081F0510100D190907190510", + "01190510190D160B1E1D0B1A00010A1C0B0D20011901191D1901011F030101170D0101170C191620100D1D1D15190F17", + "01170A201F0F0A0B13190D1D1D0C0110000D200119011F192001011F03010117080101200C1C1B07100D1A190B1A1C0D", + "010F10091710070B160105100F170103130B2001190110050101011F050101170C0101170D000B01100D180101000001", + "010C1C080F1A030B16010510081801011015200119011005010101180D01010F15010119061F0101100D180101190003", + "01051E050C1A010B16010510081710031815200119011006010101162001010B19010300031F0101100D100101191008", + "01011901061F010B19200819170F190F000B200119011F170F0101081C0A0F031B0F2018031F0101100D00200D19150F", + "01011601010F010B....0B1D1A060F1E000D2001190119..00010101001D1B01181E1E0C031F0101100D1E..0F190810", + "01010701010701060F0F05150801051F0B0508010B010B0F0B0101010D190F0106192001010C01010C05150F070C010C", + "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101", + "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101", + "010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101", +}; diff --git a/html/server/error.html b/html/server/error.html new file mode 100755 index 0000000..088f427 --- /dev/null +++ b/html/server/error.html @@ -0,0 +1,150 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + +

+${LANG_FATALERR}: +

+
+ +${error} + + +
+${LANG_CANCLSWND}. + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/exit.html b/html/server/exit.html new file mode 100755 index 0000000..21b7f9b --- /dev/null +++ b/html/server/exit.html @@ -0,0 +1,35 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + +${LANG_SERVEND}.  + +${LANG_CANCLSWND}. + + + + + + + diff --git a/html/server/file.html b/html/server/file.html new file mode 100755 index 0000000..409e313 --- /dev/null +++ b/html/server/file.html @@ -0,0 +1,178 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+

${LANG_O1}

+
+ +
+ + + + + + +
+ +${LANG_D8} + +
+${do:loadhash} +
+ ${LANG_S11b} + +
+
+ +

+ + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/finished.html b/html/server/finished.html new file mode 100755 index 0000000..c9d81c2 --- /dev/null +++ b/html/server/finished.html @@ -0,0 +1,221 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + + +${do:end-if} + +
${LANG_OSFWB} + + ${LANG_O1} + + | + + ${LANG_O5} + +
+ + + + +
+ + + + +
+ + + + +
+ + + +
+

${LANG_F18b}

+
+ ${LANG_TIPHELP} +
+ +
+ +
+
+${do:if-not-empty:commandReturn}
+${LANG_F19}
+
+${commandReturnMsg}
+
+${LANG_F20}
+
+httrack ${commandReturnCmdl}
+
+${LANG_F21}
+${do:end-if}
+
+${do:if-empty:commandReturn}
+${LANG_F22}
+${do:end-if}
+
+ +${LANG_G8} : +${do:output-mode:html-urlescaped} + +${do:output-mode:} +${path}/${projname} + + + +
+ + + + + +
+ +
+ +
+ +
+   + + +
+ +
+ +
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/help.html b/html/server/help.html new file mode 100755 index 0000000..9da3104 --- /dev/null +++ b/html/server/help.html @@ -0,0 +1,185 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+

${LANG_O1}

+
+ +
+ + + + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} + +
+ +${LANG_O16}... + +
+ +${LANG_O17}... + +
+ +${LANG_P16} + +
+ +

+ + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/images/bg_rings.gif b/html/server/images/bg_rings.gif new file mode 100755 index 0000000..da7c5c8 Binary files /dev/null and b/html/server/images/bg_rings.gif differ diff --git a/html/server/images/fade.gif b/html/server/images/fade.gif new file mode 100755 index 0000000..579cc5f Binary files /dev/null and b/html/server/images/fade.gif differ diff --git a/html/server/images/header_title_4.gif b/html/server/images/header_title_4.gif new file mode 100755 index 0000000..93847d3 Binary files /dev/null and b/html/server/images/header_title_4.gif differ diff --git a/html/server/index.html b/html/server/index.html new file mode 100755 index 0000000..05698f5 --- /dev/null +++ b/html/server/index.html @@ -0,0 +1,211 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + + +${do:end-if} + +
${LANG_OSFWB} + + ${LANG_O1} + + | + + ${LANG_O5} + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +
+

${LANG_G30}

+
+ +${html:LANG_Y1} + + + +

+ +
+ + + + + + + + +
+ ${LANG_P15} + +
+ +
+ +
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option1.html b/html/server/option1.html new file mode 100755 index 0000000..bc5c345 --- /dev/null +++ b/html/server/option1.html @@ -0,0 +1,240 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT1}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + + + + + + + + + + + + + +
${LANG_I31}
${LANG_I32}
${LANG_I32b}
${LANG_I32c}
+ +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option10.html b/html/server/option10.html new file mode 100755 index 0000000..ce8c56c --- /dev/null +++ b/html/server/option10.html @@ -0,0 +1,232 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT10}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + +${LANG_IOPT10}: +: + +
+ + ${LANG_I47c} +

+ +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option11.html b/html/server/option11.html new file mode 100755 index 0000000..b491e88 --- /dev/null +++ b/html/server/option11.html @@ -0,0 +1,332 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT11}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + +${LANG_W1}: +
+ + + + + + + + + + + + + + + + + + + + + +
+${LANG_W2} + +  + +${LANG_W3} +
+ + +⇔ + + +
+ + +⇔ + + +
+ + +⇔ + + +
+ + +⇔ + + +
+ + +⇔ + + +
+ + +⇔ + + +
+ + +⇔ + + +
+ + +⇔ + + +
+ +

+ + +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option2.html b/html/server/option2.html new file mode 100755 index 0000000..df57399 --- /dev/null +++ b/html/server/option2.html @@ -0,0 +1,258 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT2}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + +${LANG_I33} +
+ + + + + + + + + + + +
+ +
${LANG_I38}
${LANG_I56}
${LANG_I66}
${LANG_I67}
${LANG_I57}
+ +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option2b.html b/html/server/option2b.html new file mode 100755 index 0000000..25abc7b --- /dev/null +++ b/html/server/option2b.html @@ -0,0 +1,222 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_Q1}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + +
+ +
+ + + + + + +
+ +${LANG_O2}: +
+
+${LANG_Q2}
+
+${LANG_Q3}
+
+ +
+ +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option3.html b/html/server/option3.html new file mode 100755 index 0000000..43cb71e --- /dev/null +++ b/html/server/option3.html @@ -0,0 +1,273 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT3}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + +${LANG_I40c} +
+ + + + +
${LANG_I34}
+
+ +${LANG_I39} +
+ +

+ +${LANG_I40} +
+ +

+ +${LANG_I40b} +
+ +

+ +${LANG_I40e} +
+ +

+ + + + +
${LANG_I40d}
+
+ +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option4.html b/html/server/option4.html new file mode 100755 index 0000000..16c83b1 --- /dev/null +++ b/html/server/option4.html @@ -0,0 +1,266 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT4}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + + + + + + + + + + + +
+${LANG_I44} + + +
+ ${LANG_I47e} +
+${LANG_I47d} + + +
+ ${LANG_I45} +
+${LANG_I48} + + +
+${LANG_I46} + + +
+ ${LANG_I47} +
+ +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option5.html b/html/server/option5.html new file mode 100755 index 0000000..5c2f389 --- /dev/null +++ b/html/server/option5.html @@ -0,0 +1,302 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT5}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+${LANG_G32} + + +
+${LANG_G32b} + + +
+${LANG_I50} + + +
+${LANG_I50b} + + +
+${LANG_I51} + + +
+${LANG_I65} + + +
+${LANG_I52} + + +
+${LANG_I54} + + +
+${LANG_I64} + + +
+${LANG_I64b} + + +
+ + +
+ + + +
+
+ +
+ +
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option6.html b/html/server/option6.html new file mode 100755 index 0000000..1bad5f0 --- /dev/null +++ b/html/server/option6.html @@ -0,0 +1,238 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT6}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + + + + + + + +
+${LANG_I43} + + +
+${LANG_I43b} + + +
+ +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option7.html b/html/server/option7.html new file mode 100755 index 0000000..fab427d --- /dev/null +++ b/html/server/option7.html @@ -0,0 +1,230 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT7}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + + +${LANG_B10} + + + +
+ +${LANG_B13} + + +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option8.html b/html/server/option8.html new file mode 100755 index 0000000..389311f --- /dev/null +++ b/html/server/option8.html @@ -0,0 +1,262 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT8}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + + ${LANG_I58} +

+ +${LANG_I59} +
+ +

+ + ${LANG_I60} +

+ +${LANG_I55} +
+ +

+ + ${LANG_I62b} +

+ + ${LANG_I62} +

+ + ${LANG_I63} +

+ + +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/option9.html b/html/server/option9.html new file mode 100755 index 0000000..9a374b4 --- /dev/null +++ b/html/server/option9.html @@ -0,0 +1,248 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + + +
${LANG_OSFWB}
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${LANG_O2} - ${LANG_IOPT9}

+
+ ${LANG_TIPHELP} +
+ +
+ + + + + + + + + + + + + + + + + + + +
${LANG_IOPT1}${LANG_IOPT2}${LANG_IOPT3}${LANG_IOPT4}${LANG_IOPT5}${LANG_IOPT11}
${LANG_IOPT6}${LANG_IOPT7}${LANG_IOPT8}${LANG_IOPT9}${LANG_IOPT10} 
+ +

+ + + + + + + + +
+ +
+ + + + + ${LANG_I61} +

+ + ${LANG_I34b} +

+ + ${LANG_I36} + +

+ + ${LANG_I35} +

+ + ${LANG_I35b} +

+ +
+ + +
+ + + +
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/refresh.html b/html/server/refresh.html new file mode 100755 index 0000000..e401445 --- /dev/null +++ b/html/server/refresh.html @@ -0,0 +1,282 @@ + + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + + +${do:end-if} + +
${LANG_OSFWB} + + ${LANG_O1} + + | + + ${LANG_O5} + +
+ + + + +
+ + + + +
+ + + + +
+ + + +
+

${LANG_H20}

+
+
+ +
+ + + + + + + + + + + + + + + + + + +
${LANG_H8}${info.stat_bytes}${LANG_H9}${info.lien_n}/${info.lien_tot} (+${info.stat_back})
${LANG_H10}${info.stat_time_str}${LANG_H17}${info.stat_written}
${LANG_H14}${info.irate} (${info.rate})${LANG_H18}${info.stat_updated}
${LANG_H11}${info.stat_nsocket}${LANG_H19}${info.stat_errors}
+ +
+ + + + + +
+ +${LANG_H20} ${info.currentjob} + +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + +
${info.state[0]}${info.name[0]}${info.file[0]}${info.size[0]}/${info.sizetot[0]}
${info.state[1]}${info.name[1]}${info.file[1]}${info.size[1]}/${info.sizetot[1]}
${info.state[2]}${info.name[2]}${info.file[2]}${info.size[2]}/${info.sizetot[2]}
${info.state[3]}${info.name[3]}${info.file[3]}${info.size[3]}/${info.sizetot[3]}
${info.state[4]}${info.name[4]}${info.file[4]}${info.size[4]}/${info.sizetot[4]}
${info.state[5]}${info.name[5]}${info.file[5]}${info.size[5]}/${info.sizetot[5]}
${info.state[6]}${info.name[6]}${info.file[6]}${info.size[6]}/${info.sizetot[6]}
${info.state[7]}${info.name[7]}${info.file[7]}${info.size[7]}/${info.sizetot[7]}
${info.state[8]}${info.name[8]}${info.file[8]}${info.size[8]}/${info.sizetot[8]}
${info.state[9]}${info.name[9]}${info.file[9]}${info.size[9]}/${info.sizetot[9]}
${info.state[10]}${info.name[10]}${info.file[10]}${info.size[10]}/${info.sizetot[10]}
${info.state[11]}${info.name[11]}${info.file[11]}${info.size[11]}/${info.sizetot[11]}
${info.state[12]}${info.name[12]}${info.file[12]}${info.size[12]}/${info.sizetot[12]}
${info.state[13]}${info.name[13]}${info.file[13]}${info.size[13]}/${info.sizetot[13]}
+ + + +
+ +
+ +
+ +
+   + + +
+ +
+ +
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/step2.html b/html/server/step2.html new file mode 100755 index 0000000..ec3c097 --- /dev/null +++ b/html/server/step2.html @@ -0,0 +1,335 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + + +${do:end-if} + +
${LANG_OSFWB} + + ${LANG_O1} + + | + + ${LANG_O5} + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

${fexist:index.html:LANG_G42}

+
+ ${LANG_TIPHELP} +
+ +${/* Default values for empty settings */} +${do:set:cache:1} + +${/* Convert winprofile.ini into internal variables */} +${do:copy:CurrentUrl:urls} +${do:copy:CurrentAction:todo} +${do:copy:CurrentURLList:filelist} +${do:copy:Proxy:proxy} +${do:copy:Port:port} +${do:copy:Near:link} +${do:copy:Test:testall} +${do:copy:ParseAll:parseall} +${do:copy:HTMLFirst:htmlfirst} +${do:copy:Cache:cache} +${do:copy:NoRecatch:norecatch} +${do:copy:Dos:dos} +${do:copy:Index:index} +${do:copy:WordIndex:index2} +${do:copy:Log:logf} +${do:copy:RemoveTimeout:remt} +${do:copy:RemoveRateout:rems} +${do:copy:KeepAlive:ka} +${do:copy:FollowRobotsTxt:robots} +${do:copy:NoErrorPages:errpage} +${do:copy:NoExternalPages:external} +${do:copy:NoPwdInPages:hidepwd} +${do:copy:NoQueryStrings:hidequery} +${do:copy:NoPurgeOldFiles:nopurge} +${do:copy:Cookies:cookies} +${do:copy:CheckType:checktype} +${do:copy:ParseJava:parsejava} +${do:copy:HTTP10:http10} +${do:copy:TolerantRequests:toler} +${do:copy:UpdateHack:updhack} +${do:copy:StoreAllInCache:cache2} +${do:copy:LogType:logtype} +${do:copy:UseHTTPProxyForFTP:ftpprox} +${do:copy:Build:build} +${do:copy:PrimaryScan:filter} +${do:copy:Travel:travel} +${do:copy:GlobalTravel:travel2} +${do:copy:RewriteLinks:travel3} +${do:copy:BuildString:BuildString} +${do:copy:MaxHtml:maxhtml} +${do:copy:MaxOther:othermax} +${do:copy:MaxAll:sizemax} +${do:copy:MaxWait:pausebytes} +${do:copy:Sockets:connexion} +${do:copy:Retry:retry} +${do:copy:MaxTime:maxtime} +${do:copy:TimeOut:timeout} +${do:copy:RateOut:rate} +${do:copy:UserID:user} +${do:copy:Footer:footer} +${do:copy:MaxRate:maxrate} +${do:copy:WildCardFilters:url2} +${do:copy:Proxy:proxy} +${do:copy:Port:port} +${do:copy:Depth:depth} +${do:copy:ExtDepth:depth2} +${do:copy:MaxConn:maxconn} +${do:copy:MaxLinks:maxlinks} +${do:copy:MIMEDefsExt1:ext1} +${do:copy:MIMEDefsExt2:ext2} +${do:copy:MIMEDefsExt3:ext3} +${do:copy:MIMEDefsExt4:ext4} +${do:copy:MIMEDefsExt5:ext5} +${do:copy:MIMEDefsExt6:ext6} +${do:copy:MIMEDefsExt7:ext7} +${do:copy:MIMEDefsExt8:ext8} +${do:copy:MIMEDefsMime1:mime1} +${do:copy:MIMEDefsMime2:mime2} +${do:copy:MIMEDefsMime3:mime3} +${do:copy:MIMEDefsMime4:mime4} +${do:copy:MIMEDefsMime5:mime5} +${do:copy:MIMEDefsMime6:mime6} +${do:copy:MIMEDefsMime7:mime7} +${do:copy:MIMEDefsMime8:mime8} +${/* End convert winprofile.ini into internal variables */} + + +
+ +
+ + + +${do:if-project-file-exists:/hts-cache/winprofile.ini} + +${do:end-if} +${do:if-project-file-exists:/hts-in_progress.lock} + +${do:end-if} + + + + + +
+ + +${do:loadhash} + + ${LANG_S11b} + + +
+ + ${LANG_S11} + + +
+ ${LANG_S12} + + + +
+
+ + + +
+ +${do:if-not-empty:urls} +
+

${LANG_URLS}:


+

${urls}

+
+${do:end-if:} + +
+ +
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/step3.html b/html/server/step3.html new file mode 100755 index 0000000..b0c32fa --- /dev/null +++ b/html/server/step3.html @@ -0,0 +1,287 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + + +${do:end-if} + +
${LANG_OSFWB} + + ${LANG_O1} + + | + + ${LANG_O5} + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

Select URLs

+
+ ${LANG_TIPHELP} +
+ +
+ +
+ + + + + + + + + + + + +
+ ${LANG_G31} + + +
+ +
+ ${LANG_G44} + + +
+
+ + +
+ +
+ ${LANG_URLLIST}: + + +
+ +
+ +
+ ${LANG_G41} + + +
+ +
+
+ + + +
+ +
+ +
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/server/step4.html b/html/server/step4.html new file mode 100755 index 0000000..164a7df --- /dev/null +++ b/html/server/step4.html @@ -0,0 +1,373 @@ + + + + + + + '${projname}' - HTTrack Website Copier + + + + + + + + + + + + +
HTTrack Website Copier
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + + +${do:end-if} + +
${LANG_OSFWB} + + ${LANG_O1} + + | + + ${LANG_O5} + +
+ + + + +
+ + + + +
+ + + + +
+ + + + +${/* show help only if available */} +${do:if-file-exists:html/index.html} + +${do:end-if} +
+

Start

+
+ ${LANG_TIPHELP} +
+ +
+ +
+ + + + + + + + + + +
+ +
+${LANG_J10} +
+${LANG_J10b} +
+ +${/* Real commands and ini file generated below */} + + +${do:output-mode:html} + + + +${do:output-mode:inifile} + +${do:output-mode:} + +
+
+ + + +
+ +
+ +
+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/shelldoc.html b/html/shelldoc.html new file mode 100644 index 0000000..05e0c80 --- /dev/null +++ b/html/shelldoc.html @@ -0,0 +1,152 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Windows Shell Documentation

+ +
+ +Note: WinHTTrack (Windows release of HTTrack) and WebHTTrack (Linux/Unix release of HTTrack) are very similar, but not exactly identical. +You may encounter minor differences (in the display, or in various options) between these two releases. The engine behind these two release is identical.
+ +
+ + + + + + + + + + +
WinHTTrackWebHTTrack
+
+ + + + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/start.html b/html/start.html new file mode 100644 index 0000000..fb66ab3 --- /dev/null +++ b/html/start.html @@ -0,0 +1,16 @@ + + + +HTTrack documentation + + + +HTTrack documentation + + diff --git a/html/step.html b/html/step.html new file mode 100644 index 0000000..fff295f --- /dev/null +++ b/html/step.html @@ -0,0 +1,139 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

How to start, Step-by-step

+ +
+ + + +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step1.html b/html/step1.html new file mode 100644 index 0000000..645bf32 --- /dev/null +++ b/html/step1.html @@ -0,0 +1,154 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Step 1 : Choose a project name and destination folder

+ +
+ +
    +
  1. Change the destination folder if necessary
  2. +
    It is more convenient to organize all mirrors in one directory, for example My Web Sites +
    If you already have made mirrors using HTTrack, be sure that you have selected the correct folder.
    +

    +

    +
  3. Select the project name: +
      +
    • Select a new project name
    • +
      This name is, for example, the theme of the mirrored sites, for example My Friend's Site +

      +

      + OR +

      +
    • Select an existing project for update/retry
    • +
      Directly select the existing project name in the popup list

      +
      +
    +

    +
  4. Click on the NEXT button
  5. +

    +
  6. Go to the next step...
  7. +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step2.html b/html/step2.html new file mode 100644 index 0000000..c861e03 --- /dev/null +++ b/html/step2.html @@ -0,0 +1,168 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Step 2 : Fill the addresses

+ +
+ +
    +
  1. Select an action
  2. +
    The default action is Download web sites

    +


    + +
      +
    • Download web site(s)
    • +
      Will transfert the desired sites with default options +
    • Download web site(s) + questions
    • +
      Will transfert the desired sites with default options, and ask questions if any links are considered as potentially downloadable +
    • Get individual files
    • +
      Will only get the desired files you specify (for example, ZIP files), but will not spider through HTML files +
    • Download all sites in pages (multiple mirror)
    • +
      Will download all sites that appears in the site(s) selected. If you drag&drop your boormark file, this option lets you mirror all your favorite sites +
    • Test links in pages (bookmark test)
    • +
      Will test all links indicated. Useful to check a bookmark file +
    • * Continue interrupted download
    • +
      Use this option if a download has been interrupted (user interruption,crash..) +
    • * Update existing download
    • +
      Use this option to update an existing project. The engine will recheck the complete structure, checking each downloaded file for any updates on the web site +
    + +

    +
  3. Enter the site's addresses
  4. +
    You can click on the Add a URL button to add each address, or just type them in the box

    +
    +

    +
  5. You may define options by clicking on the Set options button
  6. +
    You can define filters or download parameters in the option panel
    +

    +
  7. You may also add a URL by clicking on the Add a URL button
  8. +
    This option lets you define additional parameters (login/password) for the URL, or capture a complex URL from your browser
    +

    +
  9. Click on the NEXT button
  10. +

    +
  11. Go to the next step...
  12. +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step3.html b/html/step3.html new file mode 100644 index 0000000..3fd13f5 --- /dev/null +++ b/html/step3.html @@ -0,0 +1,140 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Step 3 : Ready to start

+ +
+ +
    +
  1. If you want, you may connect immediately or delay the mirror
  2. +
    If you don't select anything, HTTrack will assume that you are already connected to the Internet and that you want to start the mirror action now

    +

    +
  3. Click on the START button
  4. +
    +

    +
  5. Go to the next step...
  6. +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step4.html b/html/step4.html new file mode 100644 index 0000000..0de1c54 --- /dev/null +++ b/html/step4.html @@ -0,0 +1,139 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Step 4 : Wait!

+ +
+ +
    +
  1. Wait until the mirror is finishing
  2. +
    You can cancel at any time the mirror, or cancel files currently downloaded for any reasons (file too big, for example) +
    Options can be changed during the mirror: maximum number of connections, limits...

    +
    +

    +
  3. Go to the next step...
  4. +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step5.html b/html/step5.html new file mode 100644 index 0000000..cae81bd --- /dev/null +++ b/html/step5.html @@ -0,0 +1,138 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Step 5 : Check the result

+ +
+ +
    +
  1. Check log files
  2. +
    You may check the error log file, which could contain useful information if errors have occurred

    +
    +
    +
  3. See the troubleshooting page
  4. +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9.html b/html/step9.html new file mode 100644 index 0000000..0400822 --- /dev/null +++ b/html/step9.html @@ -0,0 +1,155 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel

+ +
+ +
    +
  • Click on one of the option tab below to have more informations
  • +
    Each option tab is described, including remarks and examples +
+ +
+ +
+ + + + + + + + + + + + + + + + +
+ +

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt1.html b/html/step9_opt1.html new file mode 100644 index 0000000..cf79c85 --- /dev/null +++ b/html/step9_opt1.html @@ -0,0 +1,156 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Links

+ +
+ +
    +
    +

    + +
  • Attempt to detect all links
  • +
    Asks the engine to try to detect all links in a page, even for unknown tags or unknown javascript code. This can generate bad requests or error in pages, but may be helpful to catch all desired links +
    Useful, for example, in pages with many javascript tricks +


    + +
  • Get non-html files related to a link
  • +
    This option allows you to catch all file references in captured HTML files, even external ones +
    For example, if an image in an Html page has its source on another web site, this image will be captured together. +


    + +
  • Test validity of all links
  • +
    This option forces the engine to test all links in spidered pages, i.e. to check if every link is valid or not by performing a request to the server. If an error occured, it is reported to the error log-file. +
    Useful to test all external links in a website +


    + +
  • Get HTML files first!
  • +
    With this option enabled, the engine will attempt to download all HTML files first, and + then download other (images) files. This can speed up the parsing process, by efficiently scanning + the HTML structure. +

    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt10.html b/html/step9_opt10.html new file mode 100644 index 0000000..658b82f --- /dev/null +++ b/html/step9_opt10.html @@ -0,0 +1,162 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Expert Options

+ +
+ +
    +
    +

    + Advice: leave these options to default values! +

    + +
  • Use a cache for updates
  • +
    This option MUST be set if you want to update the site later, or if you want to have the opportunity to continue a crashed mirror +
    Disable it only if you want to save few kilobytes, but, err, again, it is not advised to disable this option! +


    + +
  • Primary filter (scan mode)
  • +
    Which files must be saved? +
    You can choose Html and/or Non-Html, or none (this last option is automatically set for scanning) +


    + +
  • Travel mode
  • +
    Set the default spidering direction +
    The default is to catch all files in the same level and lower levels, which is the most logical +


    + +
  • Global travel mode
  • +
    Set the default global spidering direction +
    The default is to stay on the same address if no specific authorization has been delivered +


    + +
  • Activate debug mode
  • +
    Enables some extra debug informations, like headers debugging and some interface informations (for debugging purpose only) +

    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + + diff --git a/html/step9_opt11.html b/html/step9_opt11.html new file mode 100644 index 0000000..e4c0395 --- /dev/null +++ b/html/step9_opt11.html @@ -0,0 +1,193 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : MIME Types

+ +
+ +
    +
    +

    +

    + +
  • MIME Types
  • +
    +An important new feature for some people. This panel tells the engine that if a link is encountered, with a +specific type (.cgi, .asp, or .php3 for example), it MUST assume that this link has always the same MIME type, for example +the "text/html" MIME type. +This is VERY important to speed up many mirrors. +Some big HTML files which have many links of unknown type embedded, such as ".asp", cause the engine to test all links, and this +slows down the parser. +
    +
    +In this case, you can tell HTTrack: ".asp pages are in fact HTML pages" +
    +This is possible, using: +
    +
    +File type: asp MIME identity: text/html +
    +
    +You can declare multiple definitions, or declare multiple types separed by ",", like in: +
    +File type: asp,php,php3 MIME identity: text/html +
    +
    +Most important MIME types are: +
    + + + + + + + + + +
    text/htmlHtml files, parsed by HTTrack
    image/gifGIF files
    image/jpegJpeg files
    image/pngPNG files
    application/x-zip.zip files
    application/x-mp3.mp3 files
    application/x-foo.foo files
    application/octet-streamUnknown files
    + +
    + +You can rename files on a mirror. If you KNOW that all "dat" files are in fact "zip" files renamed into "dat", you can +tell httrack:
    + +File type: dat MIME identity: application/x-zip + +

    + +You can also "name" a file type, with its original MIME type, if this type is not known by HTTrack. This will avoid a test +when the link will be reached:
    + +File type: foo MIME identity: application/octet-stream + +

    + +In this case, HTTrack won't check the type, because it has learned that "foo" is a known type, or MIME type +"application/octet-stream". Therefore, it will let untouched the "foo" type. + +


    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt2.html b/html/step9_opt2.html new file mode 100644 index 0000000..52ed5bd --- /dev/null +++ b/html/step9_opt2.html @@ -0,0 +1,192 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Limits

+ +
+ +
    +
    +

    + +
  • Maximum mirror depth
  • +
    Define how deep will the engine seek in the site + A depth of 3 means that you will catch all pages you have indicated, plus all that can be accessed clicking twice on any link +
    + Note: This option is not filled by default, so the depth is infinite. But because the engine will stay on the site you indicated, only the desired sites will be mirrored, and not all the web! +


    + +
  • Maximum external depth
  • +
    Define how deep will the engine seek in external sites, or on addresses that were forbidden.
    + Normally, HTTrack will not go on external sites by default (except if authorized by filters), + and will avoid addresses forbidden by filters. You can override this behaviour, and + tell the engine to catch N levels of "external" sites.
    + Note: Use this option with great care, as it is overriding all other options (filters and default engine limiter) +
    + Note: This option is not filled by default, so the depth is equal to zero. +


    + +
  • Maximum size of an HTML file
  • +
    Define the biggest Html file the engine is allowed to catch.
    + This option allows you to avoid big files if you do not want to download them. +


    + +
  • Max size of a non-HTML file
  • +
    Define the biggest non-html file (image, ZIP file..) the engine is allowed to catch.
    + This option allows you to avoid big files if you do not want to download them. +


    + +
  • Site size limit
  • +
    This option limits the total amount of bytes that can be downloaded in the current mirror +

    + +
  • Pause after downloading..
  • +
    This option lets the engine do a pause every time it has retrieved a specific amount of bytes +
    Useful if you are mirroring a site bigger than the available space: you can then backup and erase the downloaded files during the pause +


    + +
  • Max time overall
  • +
    This option limits the total amount of time that can be spent on the current mirror +

    + +
  • Max transfer rate
  • +
    This option limits the transfer rate on the current mirror +
    Useful if you do not want HTTrack to monopolize the bandwidth! +


    + +
  • Max connections / seconds
  • +
    This option limits the number of connections per second for the current mirror +
    Useful to limit server load. +
    The default is 10, but you can disable it with a value of 0 - THIS IS NOT ADVISED UNLESS YOU KNOW WHAT YOU ARE DOING (risks of server overload) +


    + +
  • Maximum number of links
  • +
    Maximum number of links that can be analyzed, that is, either downloaded, or not downloaded. + Do not set a too low limit for that, because once the limit is reached, the engine will stop immediately. +
    Do not set a too high limit, too, because it will take some memory.. 100,000 links (default) is generally enough. +


    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt3.html b/html/step9_opt3.html new file mode 100644 index 0000000..98511f2 --- /dev/null +++ b/html/step9_opt3.html @@ -0,0 +1,156 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Flow Control

+ +
+ +
    +
    +

    + +
  • Number of connections
  • +
    Define the number of simultaneous connections that can be initiated by the engine. +
    It is recommended to limit this number to 1 or 2 if you are mirroring big files on a site, more on standard sites (8 is recommended, up to 42 if it is supported by the system) +


    + +
  • TimeOut
  • +
    Define what time the engine has to wait if no response if given by a server. +
    120 seconds is recommended (less of fast pipes, more if you connection is sloppy) +
    You can optionally skip all links from a host that has generated a timeout. Warning: is this checkbox is selected, a timeout will eliminate all links from the origin server +


    + +
  • Retries
  • +
    Number of retries if a non-fatal error occured (timeout, for example) +
    Note that this will not solve fatal errors such as "Not Found" pages and so on! +


    + +
  • Min Transfer Rate
  • +
    Minimum transfer rate tolerated on a site. If the transfer rate if slower that the defined value, then the link is skipped +
    You can optionally skip all links from a host that has generated a "too slow" error. Warning: is this checkbox is selected, a "too slow" errors will eliminate all links from the origin server +


    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt4.html b/html/step9_opt4.html new file mode 100644 index 0000000..3a3a9d5 --- /dev/null +++ b/html/step9_opt4.html @@ -0,0 +1,187 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Scan Rules

+ +
+ + + +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt5.html b/html/step9_opt5.html new file mode 100644 index 0000000..c13666c --- /dev/null +++ b/html/step9_opt5.html @@ -0,0 +1,176 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Build

+ +
+ +
    +
    +

    + +
  • Local Structure Type
  • +
    Lets you define the local structure of the site. +
    The default is "site structure": you will get the same folder/files names and structure as the original +
    You can, however, put all images in one single folder, html in another and so on.. +


    + +
  • DOS Names
  • +
    Force the engine to generate DOS names (8 characters for the name, 3 for the type) +

    + +
  • ISO9660 Names
  • +
    Force the engine to generate ISO9660-compatible names for storing on medias such as CDROM or DVDROM +

    + +
  • No error pages
  • +
    Do not generate error pages (if a 404 error occured, for example) +
    If a page is missing on the remote site, there will not be any warning on the local site +


    + +
  • No external pages
  • +
    Rewrite all external links (links that needs an Internet connection) so that there can be a warning page before ("Warning, you need to be online to go to this link..") +
    Useful if you want to separate the local and online realm +


    + +
  • Hide passwords
  • +
    Do not include username and password for protected sites in the code, when a link will not be caught. + This allow to remain the access data private. +

    + +
  • Hide query strings
  • +
    Do not include query strings for local links. + Query strings (?foo=45&bar=67) are generally not necessary for local (file://) files, but + query strings can be useful to show several information (example: page-4.html?index=History). + However, some basic browsers may not understand that (wireless browsers, especially), and + hiding query strings might be a good idea in this case. +

    + +
  • Do not purge old files
  • +
    Do not purge, after an update, the local files that no longer exist on the remote site, or that have been skipped +

    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt6.html b/html/step9_opt6.html new file mode 100644 index 0000000..110b27f --- /dev/null +++ b/html/step9_opt6.html @@ -0,0 +1,173 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Spider

+ +
+ +
    +
    +

    + +
  • Accept cookies
  • +
    Accept cookies generated by the remote server +
    If you do not accept cookies, some "session-generated" pages will not be retrieved +


    + +
  • Check document type
  • +
    Define when the engine has to check document type +
    The engine must know the document type, to rewrite the file types. For example, if a link called /cgi-bin/gen_image.cgi generates a gif image, the generated file will not be called "gen_image.cgi" but "gen_image.gif" +
    Avoid "never", because the local mirror could be bogus +


    + +
  • Parse java files
  • +
    Must the engine parse .java files (java classes) to seek included filenames? +
    It is checked by default +


    + +
  • Spider
  • +
    Must the engine follow remote robots.txt rules when they exist? +
    The default is "follow" +


    + +
  • Update hack
  • +
    Attempt to limit transfers by wrapping known bogus responses from servers. + For example, pages with same size will be considered as "up to date", even if the timestamp seems + different. This can be useful for many dynamically generated pages, but this can also cause + not-updated pages in rare cases. +

    + +
  • Tolerant requests
  • +
    Tolerate wrong file size, and make requests compliant with old servers +
    It is unchecked by default, because this option can cause files to become bogus +


    + +
  • Force old HTTP/1.0 requests
  • +
    This option forces the engine to use HTTP/1.0 requests, and avoid HEAD requests. +
    Useful for some sites with old server versions, or with many dynamically generated pages. +


    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt7.html b/html/step9_opt7.html new file mode 100644 index 0000000..876fb3e --- /dev/null +++ b/html/step9_opt7.html @@ -0,0 +1,162 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Proxy

+ +
+ +
    +
    +

    + +
  • Proxy
  • +
    You can enter manually the proxy name and port (enter the name in the first field, the port in the second field) +

    + +
  • Use proxy for FTP transfers
  • +
    The engine can use default HTTP proxy for all ftp (ftp://) transfers. Most proxies allow this, and if you are behind + a firewall, this option will allow you to easily catch all ftp links. Besides, ftp transfers managed by the proxy are more reliable + than the engine's default FTP client. +
    This option is checked by default +


    + +
  • Configure
  • +
    Click on this button to configure the proxy. +
    If the proxy needs authentication you can define the login username/password +
    +

    +
    +

    +
    +
    +

    + +
  • Hide password
  • +
    Use it if you do not want to display the password (hides the proxy name) +

    +
+ +



+

Back to Home

+ + + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt8.html b/html/step9_opt8.html new file mode 100644 index 0000000..97d424f --- /dev/null +++ b/html/step9_opt8.html @@ -0,0 +1,152 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Browser ID

+ +
+ +
    +
    +

    + +
  • Browser "Identity"
  • +
    Enter here the name of the engine, as it will be seen by Web-servers +
    For example, entering "Mozilla/4.5 (compatible; MSIE 4.01; Windows 98)" will disguise HTTrack into a standard MSIE4 browser +
    This field is for statistical purpose, and you can enter whatever you want, a browser name that does not exist or even your grandma's name +
    However, beware that several sites may deliver a different content whether the browser is called "Netscape" or "Explorer".. some elitist ones will even refuse to deliver anything depending on the browser name. This case is rare, fortunately. +


    + +
  • HTML Footer
  • +
    Enter here the optionnal text that will be included as a comment in each HTML file to make archiving easier +
    The string entered is generally an HTML comment (<!-- HTML comment -->) with optionnal %s, which will be transformed into a specific string information: +
    %s #1 : host name (for example, www.someweb.com) +
    %s #2 : file name (for example, /index.html) +
    %s #3 : date of the mirror +
    Example: <!-- Page mirrored from %s, file %s. Archive date: %s --> +
    Note: You can select (none), in this case no comments will be added to the pages. However, this is NOT advised as you may want to know in the future where the page has been taken, when/why.. +


    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/html/step9_opt9.html b/html/step9_opt9.html new file mode 100644 index 0000000..b706121 --- /dev/null +++ b/html/step9_opt9.html @@ -0,0 +1,167 @@ + + + + + + + HTTrack Website Copier - Offline Browser + + + + + + + + + +
HTTrack Website Copier
+ + + + +
Open Source offline browser
+ + + + +
+ + + + +
+ + + + +
+ + +

Option panel : Log files, Index, Cache

+ +
+ +
    +
    +

    + +
  • Force to store all files in cache
  • +
    Force to store all files in the cache, even gif files, zip files and so on.. +
    Without this option, the engine will only save in cache html files for updating/continue purpose. +
    It can be useful, however, to keep all files in cache if you want in the future to change the site structure +
    Warning! This option will appreciably inflate the cache that will become as big as the mirror itself! +


    + +
  • Do not re-download locally erased files
  • +
    This option prevents HTTrack from re-asking a file that exists locally with null size, or that has been erased by the user +
    (If the user erased the file, this option will create a null-file to prevent the engine to catch the file next time) +
    Useful if you are erasing progressively large files on the local mirror and do not want to reload them! +


    + +
  • Create Log files
  • +
    Create log file where informations, error and warnings about the current mirror will be saved +
    If you do not generate log files, you will not be able to know what errors occured! +
    It is strongly advised to leave this option checked +
    Note: You can define the debug-level of the log-files. Default is "normal" +


    + +
  • Make an index
  • +
    Generate an index.html on the top of the directory. Very useful. +
    +

    + +
  • Make a word database
  • +
    Generate an index.txt database on the top of the directory. Very useful for linguistic analysis, this feature + will allow you to list all words of all mirrored pages in the current project.
    + With this index file, you will be able to list which words were detected, and where. +
    +


    +
+ +



+

Back to Home

+ + +
+
+
+ + + + + +
+ + + + + + diff --git a/httrack-doc.html b/httrack-doc.html index 4141763..65863e9 100644 --- a/httrack-doc.html +++ b/httrack-doc.html @@ -2,9 +2,9 @@ Documentation - + -Documentation +Documentation diff --git a/install-sh b/install-sh new file mode 100755 index 0000000..11870f1 --- /dev/null +++ b/install-sh @@ -0,0 +1,251 @@ +#!/bin/sh +# +# install - install a program, script, or datafile +# This comes from X11R5 (mit/util/scripts/install.sh). +# +# Copyright 1991 by the Massachusetts Institute of Technology +# +# Permission to use, copy, modify, distribute, and sell this software and its +# documentation for any purpose is hereby granted without fee, provided that +# the above copyright notice appear in all copies and that both that +# copyright notice and this permission notice appear in supporting +# documentation, and that the name of M.I.T. not be used in advertising or +# publicity pertaining to distribution of the software without specific, +# written prior permission. M.I.T. makes no representations about the +# suitability of this software for any purpose. It is provided "as is" +# without express or implied warranty. +# +# 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. It can only install one file at a time, a restriction +# shared with many OS's install programs. + + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename="" +transform_arg="" +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd="" +chgrpcmd="" +stripcmd="" +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src="" +dst="" +dir_arg="" + +while [ x"$1" != x ]; do + case $1 in + -c) instcmd="$cpprog" + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + -s) stripcmd="$stripprog" + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + *) if [ x"$src" = x ] + then + src=$1 + else + # this colon is to work around a 386BSD /bin/sh bug + : + dst=$1 + fi + shift + continue;; + esac +done + +if [ x"$src" = x ] +then + echo "install: no input file specified" + exit 1 +else + : +fi + +if [ x"$dir_arg" != x ]; then + dst=$src + src="" + + if [ -d $dst ]; then + instcmd=: + chmodcmd="" + else + instcmd=$mkdirprog + fi +else + +# Waiting for this to be detected by the "$instcmd $src $dsttmp" command +# might cause directories to be created, which would be especially bad +# if $src (and thus $dsttmp) contains '*'. + + if [ -f "$src" ] || [ -d "$src" ] + then + : + else + echo "install: $src does not exist" + exit 1 + fi + + if [ x"$dst" = x ] + then + echo "install: no destination specified" + exit 1 + else + : + fi + +# If destination is a directory, append the input filename; if your system +# does not like double slashes in filenames, you may need to add some logic + + if [ -d $dst ] + then + dst="$dst"/`basename $src` + else + : + fi +fi + +## this sed command emulates the dirname command +dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + +# Make sure that the destination directory exists. +# this part is taken from Noah Friedman's mkinstalldirs script + +# Skip lots of stat calls in the usual case. +if [ ! -d "$dstdir" ]; then +defaultIFS=' + ' +IFS="${IFS-${defaultIFS}}" + +oIFS="${IFS}" +# Some sh's can't handle IFS=/ for some reason. +IFS='%' +set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` +IFS="${oIFS}" + +pathcomp='' + +while [ $# -ne 0 ] ; do + pathcomp="${pathcomp}${1}" + shift + + if [ ! -d "${pathcomp}" ] ; + then + $mkdirprog "${pathcomp}" + else + : + fi + + pathcomp="${pathcomp}/" +done +fi + +if [ x"$dir_arg" != x ] +then + $doit $instcmd $dst && + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi +else + +# If we're going to rename the final executable, determine the name now. + + if [ x"$transformarg" = x ] + then + dstfile=`basename $dst` + else + dstfile=`basename $dst $transformbasename | + sed $transformarg`$transformbasename + fi + +# don't allow the sed command to completely eliminate the filename + + if [ x"$dstfile" = x ] + then + dstfile=`basename $dst` + else + : + fi + +# Make a temp file name in the proper directory. + + dsttmp=$dstdir/#inst.$$# + +# Move or copy the file name to the temp name + + $doit $instcmd $src $dsttmp && + + trap "rm -f ${dsttmp}" 0 && + +# and set any options; do chmod last to preserve setuid bits + +# If any of these fail, we abort the whole thing. If we want to +# ignore errors from any of these, just make sure not to ignore +# errors from the above "$doit $instcmd $src $dsttmp" command. + + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi && + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi && + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi && + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi && + +# Now rename the file to the real destination. + + $doit $rmcmd -f $dstdir/$dstfile && + $doit $mvcmd $dsttmp $dstdir/$dstfile + +fi && + + +exit 0 diff --git a/lang.def b/lang.def new file mode 100755 index 0000000..51e24fe --- /dev/null +++ b/lang.def @@ -0,0 +1,972 @@ +English +LANGUAGE_1 +Francais +LANGUAGE_2 +Castellano +LANGUAGE_3 +Deutsch +LANGUAGE_4 +Nederlands +LANGUAGE_5 +Polski +LANGUAGE_6 +Portugues +LANGUAGE_7 +Russian +LANGUAGE_8 +Italiano +LANGUAGE_9 +Turkish +LANGUAGE_10 +Magyar +LANGUAGE_11 +Portugues-Brasil +LANGUAGE_12 +Chinese-Simplified +LANGUAGE_13 +Chinese-BIG5 +LANGUAGE_14 +Dansk +LANGUAGE_15 +Eesti +LANGUAGE_16 +Svenska +LANGUAGE_17 +Macedonian +LANGUAGE_18 +Japanese +LANGUAGE_19 +Slovak +LANGUAGE_20 +Cesky +LANGUAGE_21 +Ukrainian +LANGUAGE_22 +Norsk +LANGUAGE_23 +Slovenian +LANGUAGE_24 +Romanian +LANGUAGE_25 +Greek +LANGUAGE_26 +LANGUAGE_NAME +LANGUAGE_NAME +LANGUAGE_FILE +LANGUAGE_FILE +LANGUAGE_ISO +LANGUAGE_ISO +LANGUAGE_AUTHOR +LANGUAGE_AUTHOR +LANGUAGE_CHARSET +LANGUAGE_CHARSET +LANG_OK +OK +LANG_CANCEL +Cancel +LANG_QUIT +Exit +LANG_CLOSE +Close +LANG_TIPCANCEL +Cancel changes +LANG_TIPOK +Click to confirm +LANG_TIPHELP +Click to get help! +LANG_TIPPREV +Click to return to previous screen +LANG_TIPNEXT +Click to go to next screen +LANG_HIDEPWD +Hide password +LANG_SAVEPROJECT +Save project +LANG_CLOSEPRJ +Close current project? +LANG_DELETECONF +Delete this project? +LANG_DELETEEMPTYCONF +Delete empty project %s? +LANG_ACTIONNYP +Action not yet implemented +LANG_ERRORDEL +Error deleting this project +LANG_B1 +Select a rule for the filter +LANG_B2 +Enter keywords for the filter +LANG_B3 +Cancel +LANG_B4 +Add this rule +LANG_A2 +Please enter one or several keyword(s) for the rule +LANG_B5 +Add Scan Rule +LANG_B6 +Criterion +LANG_B7 +String +LANG_B8 +Add +LANG_B9 +Scan Rules +LANG_B10 +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +LANG_B11 +Exclude links +LANG_B12 +Include link(s) +LANG_B13 +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +LANG_B14 +Save prefs +LANG_B20 +Matching links will be excluded: +LANG_B21 +Matching links will be included: +LANG_B22 +Example: +LANG_B23 +gif\r\nWill match all GIF files +LANG_B24 +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +LANG_B25 +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +LANG_B26 +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +LANG_B27 +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +LANG_B28 +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +LANG_B29 +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +LANG_B30 +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +LANG_B31 +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +LANG_B32 +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +LANG_B33 +All links will match +LANG_C1 +Add exclusion filter +LANG_C2 +Add inclusion filter +LANG_C3 +Existing filters +LANG_C4 +Cancel changes +LANG_C5 +Save current preferences as default values +LANG_C6 +Click to confirm +LANG_D1 +No log files in %s! +LANG_D2 +No 'index.html' file in %s! +LANG_D3 +Click to quit WinHTTrack Website Copier +LANG_D4 +View log files +LANG_D5 +Browse HTML start page +LANG_D6 +End of mirror +LANG_D7 +View log files +LANG_D8 +Browse Mirrored Website +LANG_D9 +New project... +LANG_E1 +View error and warning reports +LANG_E2 +View report +LANG_E3 +Close the log file window +LANG_E4 +Info type: +LANG_E5 +Errors +LANG_E6 +Infos +LANG_E7 +Find +LANG_E8 +Find a word +LANG_E10 +Info log file +LANG_E11 +Warning/Errors log file +LANG_F1 +Unable to initialize the OLE system +LANG_F2 +WinHTTrack could not find any interrupted download file cache in the specified folder! +LANG_F3 +Could not connect to provider +LANG_F4 +receive +LANG_F5 +request +LANG_F6 +connect +LANG_F7 +search +LANG_F8 +ready +LANG_F9 +error +LANG_F10 +Receiving files.. +LANG_F11 +Parsing HTML file.. +LANG_F11b +Purging files.. +LANG_F11c +Loading cache in progress.. +LANG_F12 +Parsing HTML file (testing links).. +LANG_F13 +Pause - Toggle [Mirror]/[Pause download] to resume operation +LANG_F13b +Finishing pending transfers - Select [Cancel] to stop now! +LANG_F14 +scanning +LANG_F15 +Waiting for scheduled time.. +LANG_F16 +Connecting to provider +LANG_F17 +[%d seconds] to go before start of operation +LANG_F18 +Site mirroring in progress [%s, %s bytes] +LANG_F18b +Site mirroring finished! +LANG_F19 +A problem occured during the mirroring operation\n +LANG_F20 +\nDuring:\n +LANG_F21 +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +LANG_F22 +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +LANG_F22b +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +LANG_F22c +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +LANG_F23 +\n\nTip: Click [View log file] to see warning or error messages +LANG_F24 +Error deleting a hts-cache/new.* file, please do it manually +LANG_G1 +Do you really want to quit WinHTTrack Website Copier? +LANG_G2 +- Mirroring Mode -\n\nEnter address(es) in URL box +LANG_G3 +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +LANG_G4 +- File Download Mode -\n\nEnter file address(es) in URL box +LANG_G5 +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +LANG_G6 +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +LANG_G6b +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +LANG_G7 +Log files Path +LANG_G8 +Path +LANG_G1B +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +LANG_G1C +New project / Import? +LANG_G9 +Choose criterion +LANG_G10 +Maximum link scanning depth +LANG_G11 +Enter address(es) here +LANG_G13 +Define additional filtering rules +LANG_G14 +Proxy Name (if needed) +LANG_G15 +Proxy Port +LANG_G15b +Define proxy settings +LANG_G15c +Use standard HTTP proxy as FTP proxy +LANG_G16 +Path +LANG_G17 +Select Path +LANG_G18 +Path +LANG_G19 +Select Path +LANG_G20 +Quit WinHTTrack Website Copier +LANG_G21 +About WinHTTrack +LANG_G22 +Save current preferences as default values +LANG_G23 +Click to continue +LANG_G24 +Click to define options +LANG_G24b +Click to add a URL +LANG_G24c +Load URL(s) from text file +LANG_G25 +WinHTTrack preferences (*.opt)|*.opt|| +LANG_G25b +Address List text file (*.txt)|*.txt|| +LANG_G26 +File not found! +LANG_G26b +Do you really want to change the project name/path? +LANG_G27 +Load user-default options? +LANG_G28 +Save user-default options? +LANG_G29 +Reset all default options? +LANG_G30 +Welcome to WinHTTrack! +LANG_G31 +Action: +LANG_G32 +Max Depth +LANG_G32b +Maximum external depth: +LANG_G33 +Filters (refuse/accept links) : +LANG_G34 +Paths +LANG_G37 +Save prefs +LANG_G39 +Define.. +LANG_G40 +Set options.. +LANG_G41 +Preferences and mirror options: +LANG_G42 +Project name +LANG_G43 +Add a URL... +LANG_G44 +Web Addresses: (URL) +LANG_H1 +Stop WinHTTrack? +LANG_H2 +No log files in %s! +LANG_H3 +Pause Download? +LANG_H4 +Stop the mirroring operation +LANG_H5 +Minimize to System Tray +LANG_H6 +Click to skip a link or stop parsing +LANG_H7 +Click to skip a link +LANG_H8 +Bytes saved +LANG_H9 +Links scanned +LANG_H10 +Time: +LANG_H11 +Connections: +LANG_H12 +Running: +LANG_H13 +Hide +LANG_H14 +Transfer rate +LANG_H15 +SKIP +LANG_H16 +Information +LANG_H17 +Files written: +LANG_H18 +Files updated: +LANG_H19 +Errors: +LANG_H20 +In progress: +LANG_I1 +Follow external links +LANG_I2 +Test all links in pages +LANG_I2b +Try to ferret out all links +LANG_I2c +Download HTML files first (faster) +LANG_I3 +Choose local site structure +LANG_I4 +Set user-defined structure on disk +LANG_I5 +Use a cache for updates and retries +LANG_I5b +Do not update zero size or user-erased files +LANG_I6 +Create a Start Page +LANG_I6b +Create a word database of all html pages +LANG_I7 +Create error logging and report files +LANG_I8 +Generate DOS 8-3 filenames ONLY +LANG_I8b +Generate ISO9660 filenames ONLY for CDROM medias +LANG_I9 +Do not create HTML error pages +LANG_I10 +Select file types to be saved to disk +LANG_I11 +Select parsing direction +LANG_I11b +Select global parsing direction +LANG_I11c +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +LANG_I12 +Max simultaneous connections +LANG_I13 +File timeout +LANG_I14 +Cancel all links from host if timeout occurs +LANG_I15 +Minimum admissible transfer rate +LANG_I16 +Cancel all links from host if too slow +LANG_I17 +Maximum number of retries on non-fatal errors +LANG_I18 +Maximum size for any single HTML file +LANG_I19 +Maximum size for any single non-HTML file +LANG_I20 +Maximum amount of bytes to retrieve from the Web +LANG_I20b +Make a pause after downloading this amount of bytes +LANG_I21 +Maximum duration time for the mirroring operation +LANG_I22 +Maximum transfer rate +LANG_I22b +Maximum connections/seconds (avoid server overload) +LANG_I22c +Maximum number of links that can be tested (not saved!) +LANG_I23 +Browser identity +LANG_I23b +Comment to be placed in each HTML file +LANG_I24 +Back to starting page +LANG_I25 +Save current preferences as default values +LANG_I26 +Click to continue +LANG_I27 +Click to cancel changes +LANG_I28 +Follow local robots rules on sites +LANG_I29 +Links to non-localised external pages will produce error pages +LANG_I1a +Do not erase obsolete files after update +LANG_I1b +Accept cookies? +LANG_I1c +Check document type when unknown? +LANG_I1d +Parse java applets to retrieve included files that must be downloaded? +LANG_I1e +Store all files in cache instead of HTML only +LANG_I1f +Log file type (if generated) +LANG_I1g +Maximum mirroring depth from root address +LANG_I1g2 +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +LANG_I1h +Create a debugging file +LANG_I1i +Use non-standard requests to get round some server bugs +LANG_I1j +Use old HTTP/1.0 requests (limits engine power!) +LANG_I1k +Attempt to limit retransfers through several tricks (file size test..) +LANG_I30 +Write external links without login/password +LANG_I30b +Write internal links without query string +LANG_I31 +Get non-HTML files related to a link, eg external .ZIP or pictures +LANG_I32 +Test all links (even forbidden ones) +LANG_I32b +Try to catch all URLs (even in unknown tags/code) +LANG_I32c +Get HTML files first! +LANG_I33 +Structure type (how links are saved) +LANG_I34 +Use a cache for updates +LANG_I34b +Do not re-download locally erased files +LANG_I35 +Make an index +LANG_I35b +Make a word database +LANG_I36 +Log files +LANG_I37 +DOS names (8+3) +LANG_I37b +ISO9660 names (CDROM) +LANG_I38 +No error pages +LANG_I39 +Primary Scan Rule +LANG_I40 +Travel mode +LANG_I40b +Global travel mode +LANG_I40c +These options should be modified only exceptionally +LANG_I40d +Activate Debugging Mode (winhttrack.log) +LANG_I40e +Rewrite links: internal / external +LANG_I41 +Flow control +LANG_I42 +Limits +LANG_I43 +Identity +LANG_I43b +HTML footer +LANG_I44 +N# connections +LANG_I45 +Abandon host if error +LANG_I46 +Minimum transfer rate (B/s) +LANG_I47 +Abandon host if too slow +LANG_I47b +Configure +LANG_I47c +Use proxy for ftp transfers +LANG_I47d +TimeOut(s) +LANG_I47e +Persistent connections (Keep-Alive) +LANG_I47f +Reduce connection time and type lookup time using persistent connections +LANG_I48 +Retries +LANG_I49 +Size limit +LANG_I50 +Max size of any HTML file (B) +LANG_I50b +Max size of any non-HTML file +LANG_I51 +Max site size +LANG_I52 +Max time +LANG_I53 +Save prefs +LANG_I54 +Max transfer rate +LANG_I55 +Follow robots.txt +LANG_I56 +No external pages +LANG_I57 +Do not purge old files +LANG_I58 +Accept cookies +LANG_I59 +Check document type +LANG_I60 +Parse java files +LANG_I61 +Store ALL files in cache +LANG_I62 +Tolerant requests (for servers) +LANG_I62b +Update hack (limit re-transfers) +LANG_I63 +Force old HTTP/1.0 requests (no 1.1) +LANG_I64 +Max connections / seconds +LANG_I64b +Maximum number of links +LANG_I65 +Pause after downloading.. +LANG_I66 +Hide passwords +LANG_I67 +Hide query strings +LANG_IOPT1 +Links +LANG_IOPT2 +Build +LANG_IOPT3 +Experts Only +LANG_IOPT4 +Flow Control +LANG_IOPT5 +Limits +LANG_IOPT6 +Browser ID +LANG_IOPT7 +Scan Rules +LANG_IOPT8 +Spider +LANG_IOPT9 +Log, Index, Cache +LANG_IOPT10 +Proxy +LANG_IOPT11 +MIME Types +LANG_J1 +Do you really want to quit WinHTTrack Website Copier? +LANG_J2 +Do not connect to a provider (already connected) +LANG_J2b +Do not use remote access connection +LANG_J3 +Schedule the mirroring operation +LANG_J4 +Quit WinHTTrack Website Copier +LANG_J5 +Back to starting page +LANG_J6 +Click to start! +LANG_J7 +No saved password for this connection! +LANG_J8 +Can not get remote connection settings +LANG_J8b +Select a connection provider +LANG_J9 +Start +LANG_J10 +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +LANG_J10b +Save settings only, do not launch download now. +LANG_J11 +On hold +LANG_J12 +Transfer scheduled for: (hh/mm/ss) +LANG_J13 +Start +LANG_J14 +Connect to provider (RAS) +LANG_J15 +Connect to this provider +LANG_J16 +Disconnect when finished +LANG_J17 +Disconnect modem on completion +LANG_K1 +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +LANG_K2 +About WinHTTrack Website Copier +LANG_K3 +Please visit our Web page +LANG_L1 +Wizard query +LANG_L2 +Your answer: +LANG_M1 +Link detected.. +LANG_M2 +Choose a rule +LANG_M3 +Ignore this link +LANG_M4 +Ignore directory +LANG_M5 +Ignore domain +LANG_M6 +Catch this page only +LANG_M7 +Mirror site +LANG_M8 +Mirror domain +LANG_M9 +Ignore all +LANG_N1 +Wizard query +LANG_N2 +NO +LANG_O1 +File +LANG_O2 +Options +LANG_O3 +Log +LANG_O4 +Window +LANG_O5 +Help +LANG_O10 +Pause transfer +LANG_O11 +Exit +LANG_O12 +Modify options +LANG_O13 +View log +LANG_O14 +View error log +LANG_O14b +View file transfers +LANG_O15 +Hide +LANG_O16 +About WinHTTrack Website Copier +LANG_O17 +Check program updates... +LANG_O18 +&Toolbar +LANG_O19 +&Status Bar +LANG_O20 +S&plit +LANG_P1 +File +LANG_P2 +Preferences +LANG_P3 +Mirror +LANG_P4 +Log +LANG_P5 +Window +LANG_P6 +Help +LANG_P10 +Exit +LANG_P11 +Load default options +LANG_P12 +Save default options +LANG_P12b +Reset to default options +LANG_P13 +Load options... +LANG_P14 +Save options as... +LANG_P15 +Language preference... +LANG_P16 +Contents... +LANG_P17 +About WinHTTrack... +LANG_P18 +New project\tCtrl+N +LANG_P19 +&Open...\tCtrl+O +LANG_P20 +&Save\tCtrl+S +LANG_P21 +Save &As... +LANG_P22 +&Delete... +LANG_P23 +&Browse sites... +LANG_Q1 +User-defined structure +LANG_Q2 +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +LANG_Q3 +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +LANG_R1 +Proxy settings +LANG_R2 +Proxy address: +LANG_R3 +Proxy port: +LANG_R4 +Authentication (only if needed) +LANG_R5 +Login +LANG_R6 +Password +LANG_R10 +Enter proxy address here +LANG_R11 +Enter proxy port here +LANG_R12 +Enter proxy login +LANG_R13 +Enter proxy password +LANG_S1 +Enter project name here +LANG_S2 +Enter saving path here +LANG_S3 +Select existing project to update +LANG_S4 +Click here to select path +LANG_S10 +HTTrack Project Wizard... +LANG_S11 +New project name: +LANG_S11b +Existing project name: +LANG_S11c +Project name: +LANG_S12 +Base path: +LANG_S20 +C:\\My Web Sites +LANG_S30 +Type a new project name, \r\nor select existing project to update/resume +LANG_S31 +New project +LANG_T1 +Insert URL +LANG_T2 +URL: +LANG_T4 +Authentication (only if needed) +LANG_T5 +Login +LANG_T6 +Password +LANG_T7 +Forms or complex links: +LANG_T8 +Capture URL... +LANG_T10 +Enter URL address(es) here +LANG_T12 +Enter site login +LANG_T13 +Enter site password +LANG_T14 +Use this capture tool for links that can only be accessed through forms or javascript code +LANG_U1 +Choose language according to preference +LANG_V1 +Catch URL! +LANG_V2 +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +LANG_V3 +This will send the desired link from your browser to WinHTTrack. +LANG_V4 +ABORT +LANG_V10 +Copy/Paste the temporary proxy parameters here +LANG_V11 +Cancel +LANG_DIAL1 +Unable to find Help files! +LANG_DIAL2 +Unable to save parameters! +LANG_DIAL3 +Please drag only one folder at a time +LANG_DIAL4 +Please drag only folders, not files +LANG_DIAL5 +Please drag folders only +LANG_DIAL6 +Select user-defined structure? +LANG_DIAL7 +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +LANG_DIAL8 +Do you really want to use a user-defined structure? +LANG_DIAL9 +Too manu URLs, cannot handle so many links!! +LANG_DIAL10 +Not enough memory, fatal internal error.. +LANG_DIAL11 +Unknown operation! +LANG_DIAL12 +Add this URL?\r\n +LANG_DIAL13 +Warning: main process is still not responding, cannot add URL(s).. +LANG_W1 +Type/MIME associations +LANG_W2 +File types: +LANG_W3 +MIME identity: +LANG_W4 +Select or modify your file type(s) here +LANG_W5 +Select or modify your MIME type(s) here +LANG_W6 +Go up +LANG_W7 +Go down +LANG_X1 +File download information +LANG_X2 +Freeze Window +LANG_X3 +More information: +LANG_Y1 +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +LISTDEF_1 +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +LISTDEF_2 +Show all\nHide debug\nHide infos\nHide debug and infos +LISTDEF_3 +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +LISTDEF_4 +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +LISTDEF_5 +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +LISTDEF_6 +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +LISTDEF_7 +Never\nIf unknown (except /)\nIf unknown +LISTDEF_8 +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +LISTDEF_9 +normal\nextended\ndebug +LISTDEF_10 +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +LISTDEF_11 +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +LANG_OSFWB +Open Source offline browser +LANG_METADESC +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +LANG_METAKEYW +httrack, winhttrack, webhttrack, offline browser +LANG_URLLIST +URL list (.txt) +LANG_PREVIOUS +Previous +LANG_NEXT +Next +LANG_URLS +URLs +LANG_WARNING +Warning +LANG_NOJS +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +LANG_THANKYOU +Thank you +LANG_CANCLSWND +You can now close this window +LANG_SERVEND +Server terminated +LANG_FATALERR +A fatal error has occured during this mirror diff --git a/lang.indexes b/lang.indexes new file mode 100644 index 0000000..41b4f76 --- /dev/null +++ b/lang.indexes @@ -0,0 +1,26 @@ +es:2 +cz:20 +ct:13 +cs:12 +da:14 +de:3 +et:15 +en:0 +fr:1 +el:25 +it:8 +jp:18 +mk:17 +hu:10 +nl:4 +no:22 +pl:5 +pt:11 +pt:6 +ro:24 +ru:7 +sk:19 +si:23 +sv:16 +tr:9 +ua:21 diff --git a/lang/Castellano.txt b/lang/Castellano.txt new file mode 100755 index 0000000..656dad4 --- /dev/null +++ b/lang/Castellano.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Castellano +LANGUAGE_FILE +Castellano +LANGUAGE_ISO +es +LANGUAGE_AUTHOR +Juan Pablo Barrio Lera (Universidad de León) \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +Ya +Cancel +Cancelar +Exit +Salir +Close +Cerrar +Cancel changes +Cancelar los cambios +Click to confirm +Haga click para confirmar +Click to get help! +Haga click para obtener ayuda +Click to return to previous screen +Haga click para volver atrás +Click to go to next screen +Haga click para pasar a la siguiente pantalla +Hide password +Ocultar palabra clave +Save project +Guardar proyecto +Close current project? +¿Cerrar el proyecto actual? +Delete this project? +¿Borrar este proyecto? +Delete empty project %s? +¿Borrar el proyecto vacío %s? +Action not yet implemented +Acción aún no implementada +Error deleting this project +Error al borrar este proyecto +Select a rule for the filter +Escoja una regla para el filtro +Enter keywords for the filter +Escriba aquí una palabra clave para el filtro +Cancel +Cancelar +Add this rule +Añadir esta regla +Please enter one or several keyword(s) for the rule +Escriba una o más palabras clave para la regla +Add Scan Rule +Añadir un filtro +Criterion +Escoger una regla +String +Escribir una palabra clave +Add +Añadir +Scan Rules +Filtros +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Puede excluir o aceptar varias URLs o enlaces, empleando los comodines\nSe pueden utilizar espacios entre los filtros\nEjemplo: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Excluir enlaces +Include link(s) +Aceptar enlaces +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Consejo: Si desea aceptar todos los ficheros GIF de un sitio, utilice algo similar a +www.monweb.com/*.gif\n(+*.gif / -*.gif autorizará TODOS los ficheros GIF en TODOS los sitios) +Save prefs +Guardar preferencias +Matching links will be excluded: +Los enlaces que sigan esta regla serán prohibidos +Matching links will be included: +Los lugares que sigan esta regla serán aceptados +Example: +Ejemplo: +gif\r\nWill match all GIF files +gif\r\nDetectará todos los ficheros gif (o ficheros GIF) +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nDetectará todos los ficheros que contengan la palabra blue, como 'bluesky-small.jpeg'\r\n +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nDetectará el fichero 'bigfile.mov', pero no 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nDetectará los enlaces con nombre de ruta que incluya 'cgi', como /cgi-bin/somecgi.cgi\r\n +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nDetectará los enlaces con nombre de ruta que incluya 'cgi-bin' (pero no cgi-bin-2, por ejemplo)\r\n +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nDetectará enlaces como www.someweb.com, private.someweb.com, etc.\r\n +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nDetectará enlaces como www.someweb.com, www.someweb.edu, private.someweb.otherweb.com, etc.\r\n +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nDetectará enlaces como www.someweb.com/... (pero no private.someweb.com/ y similares)\r\n +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nDetectará enlaces como www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html, etc.\r\n +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nDetectará únicamente www.test.com/test/someweb.html. Note que deberá introducir a la vez la dirección (www.xxx.yyy) y la ruta (/test/someweb.html)\r\n +All links will match +Todos los enlaces serán autorizados/prohibidos +Add exclusion filter +Añadir un filtro de exclusión +Add inclusion filter +Añadir un filtro de inclusión +Existing filters +Filtros adicionales +Cancel changes +Cancelar los cambios +Save current preferences as default values +Guardar preferencias como valores por defecto +Click to confirm +Haga click para confirmar +No log files in %s! +¡No hay ficheros de auditoría en %s! +No 'index.html' file in %s! +¡No hay fichero index.html en %s! +Click to quit WinHTTrack Website Copier +Haga click para salir de WinHTTrack Website Copier +View log files +Ver fichero de auditoría +Browse HTML start page +Hojear la página inicial +End of mirror +Fin del volcado +View log files +Ver fichero de auditoría +Browse Mirrored Website +Hojear la Web +New project... +Nuevo proyecto... +View error and warning reports +Ver errores y mensajes +View report +Ver informe de auditoría +Close the log file window +Cerrar la ventana de auditoría +Info type: +Tipo de información: +Errors +Errores +Infos +Informaciones +Find +Buscar +Find a word +Encontrar una palabra +Info log file +Fichero de auditoría +Warning/Errors log file +Fichero de auditoría de avisos/errores +Unable to initialize the OLE system +Imposible inicializar el sistema OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +No hay caché en el directorio indicado\nWinHTTrack no puede encontrar el volcado interrumpido +Could not connect to provider +Imposible establecer la conexión +receive +recepción +request +petición +connect +conexión +search +búsqueda +ready +listo +error +error +Receiving files.. +Recepción de ficheros +Parsing HTML file.. +Recorriendo fichero HTML +Purging files.. +Vaciando ficheros.. +Loading cache in progress.. +Ejecutando la carga del caché.. +Parsing HTML file (testing links).. +Recorriendo fichero HTML (comprobando enlaces) +Pause - Toggle [Mirror]/[Pause download] to resume operation +En pausa (escoja [Fichero]/[Interrumpir transferencias] para continuar +Finishing pending transfers - Select [Cancel] to stop now! +Finalizando transferencias pendientes - Seleccione [Cancelar] para terminar ahora +scanning +recorriendo +Waiting for scheduled time.. +Esperando a la hora especificada para comenzar +Connecting to provider +Conexión con el proveedor +[%d seconds] to go before start of operation +Volcado en espera [%d segundos] +Site mirroring in progress [%s, %s bytes] +Volcado en ejecución [%s, %s bytes] +Site mirroring finished! +¡Copia del sitio finalizada! +A problem occured during the mirroring operation\n +Ha ocurrido un problema durante el volcado\n +\nDuring:\n +\nDurante:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Ver el fichero de auditoría si es necesario.\n\nPulse OK para salir de WinHTTrack Website Copier.\n\n¡Gracias por usar WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +El volcado ha finalizado.\nPulse OK para salir de WinHTTrack\n\nConsulte los ficheros de auditoría para verificar que todo ha salido bien\n\n¡Gracias por utilizar WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * ¡COPIA INTERRUMPIDA! * *\r\nEs necesario el cache temporal actual para cualquier operación de actualización y solamente contiene datos bajados durante la presente sesión abortada.\r\nEl antiguo cache puede contener datos más completos; si vd. no desea perder dichos datos, deberá que restaurarlo y excluir el cache actual.\r\n[Nota: Esto puede hacerse fácilmente aquí excluyendo el hts-cache/nuevo.* ficheros]\r\n\r\n¿Cree que el antiguo cache puede contener datos más completos, y desea restaurarlo? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ¡ERROR DE VOLCADO! * *\r\nHTTrack ha detectado que el volcado actual está vacío. Si se trataba de una actualización, el volcado anterior ha sido recuperado.\r\nRazón: no se ha(n) encontrado la(s) primera(s) página(s), o ha habido un problema de conexión.\r\n=> Asegúrese de que el sitio web existe aún, y/o compruebe los ajustes de su proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nConsejo: Pulse [Ver ficheros auditoría] para ver los errores y mensajes +Error deleting a hts-cache/new.* file, please do it manually +Error al excluir un hts-cache/nuevo.* fichero; por favor, hágalo manualmente +Do you really want to quit WinHTTrack Website Copier? +¿Desea realmente salir de WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Modo de volcado -\n\nRellene la(s) direccion(es) en la lista de URLs. +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Modo de volcado semiautomático (con preguntas); rellene la(s) direccion(es) en la lista de URLs. +- File Download Mode -\n\nEnter file address(es) in URL box +- Modo de telecarga de ficheros; rellene la(s) direccion(es) de los ficheros en la lista de URLs. +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Modo de comprobación de enlaces -\n\nRellene la(s) direccion(es) de las páginas con enlaces a comprobar en el recuadro de URL. +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Modo de actualización/continuación de volcado -\n\nVerifique la(s) direccion(es) de la lista de URLs, y luego pulse el botón 'SIGUIENTE' y verifique los parámetros. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Modo de continuación de volcado -\n\nVerifique la(s) direccion(es) de la lista de URLs, y luego pulse el botón 'SIGUIENTE' y verifique los parámetros. +Log files Path +Ruta de ficheros log +Path +Ruta +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +Modo de volcado de enlaces; rellene las direcciones de las páginas que contengan los enlaces a volcar en la lista de URLs. +New project / Import? +Nuevo proyecto / importar ? +Choose criterion +Escoja una acción +Maximum link scanning depth +Profundidad máxima +Enter address(es) here +Escriba aquí las direcciones +Define additional filtering rules +Definir filtros adicionales +Proxy Name (if needed) +Proxy si es necesario +Proxy Port +Puerto del proxy +Define proxy settings +Definir las preferencias del proxy +Use standard HTTP proxy as FTP proxy +Usar el proxy HTTP estándar como proxy FTP +Path +Ruta +Select Path +Escoja ruta +Path +Ruta +Select Path +Escoja ruta +Quit WinHTTrack Website Copier +Salir de WinHTTrack Website Copier +About WinHTTrack +Acerca de WinHTTrack +Save current preferences as default values +Guardar preferencias como valores por defecto +Click to continue +Haga click para continuar +Click to define options +Haga click para definir las opciones +Click to add a URL +Haga click para añadir una URL +Load URL(s) from text file +Cargar URL(s) desde fichero de texto +WinHTTrack preferences (*.opt)|*.opt|| +Preferencias de WinHTTrack (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Fichero de texto de Lista de Direcciones (*txt)|*.txt|| +File not found! +¡Fichero no encontrado! +Do you really want to change the project name/path? +¿Desea realmente cambiar el nombre/ruta del proyecto? +Load user-default options? +¿Cargar las opciones de usuario por defecto? +Save user-default options? +¿Guardar las opciones de usuario por defecto? +Reset all default options? +¿Pasar todas las opciones a sus valores por defecto? +Welcome to WinHTTrack! +Bienvenido a WinHTTrack Website Copier! +Action: +Acción +Max Depth +Profundidad máxima: +Maximum external depth: +Profundidad externa máxima: +Filters (refuse/accept links) : +Filtros (rehusar/aceptar enlaces) : +Paths +Rutas +Save prefs +Guardar prefs +Define.. +Definir... +Set options.. +Definir las opciones.. +Preferences and mirror options: +Definir las opciones.. +Project name +Nombre del proyecto +Add a URL... +Añadir... +Web Addresses: (URL) +Dirección Web: (URL) +Stop WinHTTrack? +¿Detener WinHTTrack? +No log files in %s! +¡No hay ficheros de auditoría en %s! +Pause Download? +¿Poner en pausa la transferencia? +Stop the mirroring operation +Detener el volcado +Minimize to System Tray +Ocultar esta ventana tras la barra de sistema +Click to skip a link or stop parsing +Haga click para saltar un enlace o interrumpir el recorrido +Click to skip a link +Haga click para saltar un enlace +Bytes saved +Bytes guardados: +Links scanned +Enlaces recorridos: +Time: +Tiempo: +Connections: +Conexiones: +Running: +En ejecución: +Hide +Ocultar +Transfer rate +Tasa de transferencia: +SKIP +SALTAR +Information +Informaciones +Files written: +Ficheros escritos: +Files updated: +Ficheros puestos al día: +Errors: +Errores: +In progress: +En progreso: +Follow external links +Recuperar ficheros incluso bajo enlaces externos +Test all links in pages +Comprobar todos los enlaces de las páginas +Try to ferret out all links +Intentar detectar todos los enlaces +Download HTML files first (faster) +Bajar ficheros HTML primero (más rápido) +Choose local site structure +Escoger la estructura local de ficheros +Set user-defined structure on disk +Definir la estructura del sitio en el disco +Use a cache for updates and retries +Utilizar un caché para actualizaciones y reintentos +Do not update zero size or user-erased files +No volver a descargar ficheros ya existentes con tamaño nulo o que hayan sido borrados por el usuario +Create a Start Page +Generar página de inicio +Create a word database of all html pages +Crear una base de datos de palabras de todas las páginas HTML +Create error logging and report files +Generar ficheros de auditoría para los errores y mensajes +Generate DOS 8-3 filenames ONLY +Generar únicamente ficheros con nombres cortos 8-3 +Generate ISO9660 filenames ONLY for CDROM medias +Generar nombres de fichero ISO9660 SOLO para soportes CDROM +Do not create HTML error pages +No generar ficheros de error html +Select file types to be saved to disk +Selección de los tipos de fichero a guardar +Select parsing direction +Selección de la dirección del volcado +Select global parsing direction +Selección de la dirección global del volcado +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Configurar reglas de regrabación de URLs para enlaces internos (los bajados) y enlaces externos (los no bajados) +Max simultaneous connections +Número máximo de conexiones +File timeout +Tiempo muerto máximo para un fichero +Cancel all links from host if timeout occurs +Anular todos los enlaces de un dominio en caso de tiempo muerto +Minimum admissible transfer rate +Tasa de transferencia mínima tolerada +Cancel all links from host if too slow +Anular todos los enlaces de un dominio en caso de transferencia demasiado lenta +Maximum number of retries on non-fatal errors +Número máximo de reintentos en caso de error no fatal +Maximum size for any single HTML file +Tamaño máximo para una página html +Maximum size for any single non-HTML file +Tamaño máximo para un fichero +Maximum amount of bytes to retrieve from the Web +Tamaño total máximo para el volcado +Make a pause after downloading this amount of bytes +Hacer una pausa antes de descargar esta cantidad de bytes +Maximum duration time for the mirroring operation +Tiempo total máximo para el volcado +Maximum transfer rate +Tasa de transferencia máxima +Maximum connections/seconds (avoid server overload) +Nº máximo de conexiones/segundo (evitar sobrecarga de servidor) +Maximum number of links that can be tested (not saved!) +Número máximo de enlaces que pueden ser comprobados (¡no grabados!) +Browser identity +Identidad del navegador +Comment to be placed in each HTML file +Pie de página colocado en cada fichero HTML +Back to starting page +Volver a la primera página +Save current preferences as default values +Guardar preferencias como valores por defecto +Click to continue +Haga click para continuar +Click to cancel changes +Haga click para cancelar +Follow local robots rules on sites +Seguir las reglas locales de los robots sobre los sitios +Links to non-localised external pages will produce error pages +Las páginas externas (no capturadas) apuntarán a páginas de error +Do not erase obsolete files after update +No borrar los ficheros antiguos tras una puesta al día +Accept cookies? +¿Aceptar las cookies enviadas? +Check document type when unknown? +¿Verificar el tipo de documento cuando es desconocido? +Parse java applets to retrieve included files that must be downloaded? +¿Analizar los applets Java para recuperar los ficheros incluidos? +Store all files in cache instead of HTML only +Forzar el almacenaje de todos los ficheros en el cache y no solamente los HTML +Log file type (if generated) +Tipo de fichero de auditoría generado +Maximum mirroring depth from root address +Profundidad máxima de volcado desde las primeras direcciones +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximum mirroring depth for external/fodbidden addresses (0, that is, none, is the default) +Create a debugging file +Crear un fichero de depuración +Use non-standard requests to get round some server bugs +Intentar evitar los fallos de algunos servidores empleando peticiones no estandarizadas +Use old HTTP/1.0 requests (limits engine power!) +Usar peticiones del antiguo HTTP/1.0 (¡limita la potencia del motor!) +Attempt to limit retransfers through several tricks (file size test..) +Intentar limitar las retransferencias mediante varios trucos (comprobación de tamaño de ficheros, ...) +Write external links without login/password +Grabar enlaces externos sin login/password +Write internal links without query string +Grabar enlaces externos sin cadena de petición +Get non-HTML files related to a link, eg external .ZIP or pictures +Capturar los ficheros no html próximos (ej: ficheros ZIP situados en el exterior) +Test all links (even forbidden ones) +Comprobar todos los enlaces (incluso los no permitidos) +Try to catch all URLs (even in unknown tags/code) +Intentar detectar todos los enlaces (incluso los tags desconocidos / código javascript) +Get HTML files first! +¡Recibir ficheros HTML primero! +Structure type (how links are saved) +Tipo de estructura (forma en la que serán guardados los enlaces) +Use a cache for updates +Utilizar un cache para la puesta al día +Do not re-download locally erased files +No volver a descargar ficheros borrados localmente +Make an index +Hacer un índice +Make a word database +Elaborar una base de datos de palabras +Log files +Ficheros auditoría +DOS names (8+3) +Nombres DOS (8+3) +ISO9660 names (CDROM) +Nombres ISO9660 (CDROM) +No error pages +Sin páginas de error +Primary Scan Rule +Filtro primario +Travel mode +Modo de recorrido +Global travel mode +Modo de recorrido global +These options should be modified only exceptionally +Normalmente estas opciones no deberían ser modificadas +Activate Debugging Mode (winhttrack.log) +Activar el modo de depuración (winhttrack.log) +Rewrite links: internal / external +Volver a grabar enlaces: internos / externos +Flow control +Control de flujo +Limits +Límites +Identity +Identidad +HTML footer +Pie de página HTML +N# connections +Nº de conexiones +Abandon host if error +Abandonar host en caso de error +Minimum transfer rate (B/s) +Tasa de transferencia mínima (B/s) +Abandon host if too slow +Abandonar host si es muy lento +Configure +Configurar +Use proxy for ftp transfers +Usar el proxy para transferencias FTP +TimeOut(s) +Intervalo(s) +Persistent connections (Keep-Alive) +Conexiones persistentes (mantener activas) +Reduce connection time and type lookup time using persistent connections +Reduzca tiempo de conexión y búsqueda de tipos mediante las conexiones persistentes +Retries +Reintentos +Size limit +Límite de tamaño +Max size of any HTML file (B) +Tamaño máximo html +Max size of any non-HTML file +Tamaño máximo otro +Max site size +Tamaño máximo del sitio +Max time +Tiempo máximo +Save prefs +Guardar preferencias +Max transfer rate +Velocidad máxima +Follow robots.txt +Seguir robots.txt +No external pages +Sin páginas externas +Do not purge old files +No eliminar ficheros antiguos +Accept cookies +Aceptar las cookies +Check document type +Verificar el tipo de documento +Parse java files +Analizar los ficheros Java +Store ALL files in cache +Forzar almacenaje de todos los ficheros en el cache +Tolerant requests (for servers) +Peticiones tolerantes (para servidores) +Update hack (limit re-transfers) +Update hack (limitar retransferencias) +Force old HTTP/1.0 requests (no 1.1) +Forzar peticiones HTTP/1.0 anterior (no 1.1) +Max connections / seconds +Nº máx. conexiones / segundos +Maximum number of links +Número máximo de enlaces +Pause after downloading.. +Suspender tras copiar... +Hide passwords +Ocultar palabra clave +Hide query strings +Ocultar cadenas de petición +Links +Enlaces +Build +Estructura +Experts Only +Experto +Flow Control +Control de flujo +Limits +Límites +Browser ID +Identidad +Scan Rules +Filtros +Spider +Araña (spider) +Log, Index, Cache +Auditoría, Índice, Cache +Proxy +Proxy +MIME Types +Tipos MIME +Do you really want to quit WinHTTrack Website Copier? +¿Desea realmente salir de WinHTTrack Website Copier? +Do not connect to a provider (already connected) +no conectar con proveedor (conexión ya establecida) +Do not use remote access connection +No utilizar conexión de acceso remoto +Schedule the mirroring operation +Programar un volcado +Quit WinHTTrack Website Copier +Salir de WinHTTrack Website Copier +Back to starting page +Volver a la primera página +Click to start! +Haga click para comenzar +No saved password for this connection! +¿No hay palabra clave guardada para esta conexión! +Can not get remote connection settings +Imposible obtener los parámetros de conexión +Select a connection provider +Seleccione aquí un proveedor con el cual conectar +Start +COMENZAR +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Puede comenzar el volcado pulsando la tecla COMENZAR,\no definir más opciones de conexión +Save settings only, do not launch download now. +Grabar solamente configuraciones, no cargar o bajar ahora. +On hold +Retrasar +Transfer scheduled for: (hh/mm/ss) +Esperar hasta las: (hh/mm/ss) +Start +COMENZAR +Connect to provider (RAS) +Proveedor de Internet +Connect to this provider +Conectar con este proveedor +Disconnect when finished +Desconectar al terminar la operación +Disconnect modem on completion +Desconectar el modem al terminar +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(notifíquenos fallos o problemas)\r\n\r\nDesarrollo:\r\nInterface (Windows): Xavier Roche\r\nMotor: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for Spanish translations to:\r\nJuan Pablo Barrio Lera (Universidad de León) +About WinHTTrack Website Copier +Acerca de... +Please visit our Web page +¡Visite nuestra página Web! +Wizard query +Pregunta del asistente +Your answer: +Su respuesta: +Link detected.. +Se ha detectado un enlace +Choose a rule +Escoja una regla +Ignore this link +Ignorar este enlace +Ignore directory +Ignorar directorio +Ignore domain +Ignorar dominio +Catch this page only +Coger sólo esta página +Mirror site +Volcar el sitio +Mirror domain +Volcar todo el dominio +Ignore all +Ignorar todo +Wizard query +Pregunta del asistente +NO +NO +File +Ficheros +Options +Opciones +Log +Auditoría +Window +Ventanas +Help +Ayuda +Pause transfer +Poner en pausa +Exit +Salir +Modify options +Modificar las opciones +View log +Ver fichero de auditoría +View error log +Ver fichero de error +View file transfers +Ver las transferencias de ficheros +Hide +Ocultar +About WinHTTrack Website Copier +Acerca de... +Check program updates... +Buscar actualizaciones de WinHTTrack... +&Toolbar +Barra de herramientas +&Status Bar +Barra de estado +S&plit +Dividir +File +Ficheros +Preferences +Opciones +Mirror +Copia del sitio +Log +Auditoría +Window +Ventanas +Help +Ayuda +Exit +Salir +Load default options +Cargar opciones por defecto +Save default options +Guardar opciones por defecto +Reset to default options +Borrar opciones por defecto +Load options... +Cargar opciones... +Save options as... +Guardar opciones como... +Language preference... +Preferencias de idioma +Contents... +Indice.. +About WinHTTrack... +Acerca de WinHTTrack Website Copier +New project\tCtrl+N +Nuevo proyecto\tCtrl+N +&Open...\tCtrl+O +&Abrir...\tCtrl+O +&Save\tCtrl+S +&Guardar\tCtrl+S +Save &As... +Guardar &como... +&Delete... +&Borrar... +&Browse sites... +&Explorer sites... +User-defined structure +Estructura local de ficheros +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNombre de fichero sin ext. (ej: image)\r\n%N\tNombre de fichero con extensión (ej: image.gif)\r\n%t\tExtensión (ex: gif)\r\n%p\tRuta [sin / al final] (ej: /someimages)\r\n%h\tNombre del servidor (ej: www.someweb.com)\r\n%M\tURL MD5 (128 bits, 32 ascii bytes)\r\n%Q\tquery string MD5 (128 bits, 32 ascii bytes)\r\n%q\tsmall query string MD5 (16 bits, 4 ascii bytes)\r\n\r\n%s?\tVersión corta DOS (ej: %sN)\r\n +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Ejemplo:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif\r\n +Proxy settings +Preferencias del proxy +Proxy address: +Dirección del proxy +Proxy port: +Puerto del proxy +Authentication (only if needed) +Identificación (si es necesaria) +Login +Login +Password +Pass +Enter proxy address here +Escriba aquí la dirección del proxy +Enter proxy port here +Escriba aquí el puerto del proxy +Enter proxy login +Escriba el nombre del usuario del proxy +Enter proxy password +Escriba la palabra clave de acceso al proxy +Enter project name here +Escriba aquí el nombre del proyecto +Enter saving path here +Escriba aquí la ruta donde será grabado el proyecto +Select existing project to update +Seleccione aquí un proyecto existente para actualizarlo +Click here to select path +Haga click aquí para seleccionar la ruta +HTTrack Project Wizard... +Asistente para proyectos de HTTrack +New project name: +Nuevo nombre del proyecto: +Existing project name: +Nombre de proyecto existente: +Project name: +Nombre del proyecto: +Base path: +Ruta base: +C:\\My Web Sites +C:\\Mis lugares Web +Type a new project name, \r\nor select existing project to update/resume +Escriba el nombre de un nuevo proyecto, \r\no seleccione un proyecto existente para ponerle al día o continuar\r\n\r\n +New project +Nuevo proyecto +Insert URL +Insertar dirección URL +URL: +Dirección URL +Authentication (only if needed) +Identificación (si es necesaria) +Login +Login +Password +Pass +Forms or complex links: +Formularios o URL complejas: +Capture URL... +Capturar URL... +Enter URL address(es) here +Escriba aquí la dirección URL +Enter site login +Escriba el nombre de usuario del lugar +Enter site password +Escriba la palabra clave de acceso al lugar +Use this capture tool for links that can only be accessed through forms or javascript code +Use esta herramienta para capturar enlaves que solamente puedan ser accedidos a través de formularios o enlaces javascript +Choose language according to preference +Seleccione aquí su idioma +Catch URL! +¡Capturar URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Por favor, disponga temporalmente sus preferencias de proxy en el navegador en los siguientes valores (cortar/pegar la dirección y puerto del proxy). Luego, en el navegador, pulse el botón de envío del formulario o en el enlace concreto que quiera capturar. +This will send the desired link from your browser to WinHTTrack. +Esto capturará el enlace deseado desde su navegador hasta HTTrack. +ABORT +CANCELAR +Copy/Paste the temporary proxy parameters here +Copie y pegue aquí las preferencias temporales del proxy +Cancel +Cancelar +Unable to find Help files! +¡Imposible localizar ficheros de ayuda! +Unable to save parameters! +¡Imposible guardar los parámetros! +Please drag only one folder at a time +No deposite más que una carpeta +Please drag only folders, not files +Deposite sólo una carpeta, no un fichero +Please drag folders only +Deposite sólo una carpeta +Select user-defined structure? +¿Seleccionar estructura definible por el usuario? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Asegúrese de que la cadena de usuario es correcta\n¡Si no lo es, los nombres de ficheros serán erróneos!\r\n\r\n +Do you really want to use a user-defined structure? +¿Desea realmente seleccionar la estructura definible por el usuario? +Too manu URLs, cannot handle so many links!! +Demasiadas URLs. ¡es imposible manejar tantos enlaces! +Not enough memory, fatal internal error.. +Memoria insuficiente; error interno crítico. +Unknown operation! +¡Operación desconocida! +Add this URL?\r\n +¿Añadir esta URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Aviso: el proceso principal no responde aún; imposible añadir las URLs. +Type/MIME associations +Asociaciones de tipo/MIME +File types: +Tipos de fichero: +MIME identity: +MIME identity +Select or modify your file type(s) here +Seleccione o modifique sus tipos de fichero aquí +Select or modify your MIME type(s) here +Seleccione o modifique sus tipos MIME aquí +Go up +Ir más arriba +Go down +Ir más abajo +File download information +Informaciones sobre los ficheros bajados +Freeze Window +Congelar la ventana +More information: +Más informaciones +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +¡Bienvenido al WinHTTrack Website Copier!\n\nPor favor, pulse el botón AVANZAR para\n\niniciar un nuevo proyecto o volver a un proyecto parcialmente realizado. +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Nombres de fichero con extensión:\nNombres de fichero conteniendo:\nNombre de este fichero:\nNombres de carpeta conteniendo:\nNombre de esta carpeta:\nEnlaces de este domínio:\nEnlaces en domínios conteniendo:\nEnlaces de este servidor:\nEnlaces conteniendo:\nEste enlace:\nTODOS LOS ENLACES +Show all\nHide debug\nHide infos\nHide debug and infos +Mostrar todo\nOcultar errores\nOcultar informaciones\nOcultar errores e informaciones +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Estructura del sitio (por defecto)\nHtml en la web/, imágenes/otros archivos en la web/imágenes/\nHtml en la web/html, imágenes/otros en la web/imágenes\nHtml en la web/, imágenes/otros en la web/\nHtml en la web/, imágenes/otros en la web/xxx, donde xxx es la extensión del fichero\nHtml en la web/html, imágenes/otros en la web/xxx\nEstructura del sitio, sin www.dominio.xxx/\nHtml en nombre_del_sitio/, imágenes/otros en nombre_del_sitio/imágenes/\nHtml en nombre_del_sitio/html, imágenes/otros en nombre_del_sitio/imágenes\nHtml en nombre_del_sitio/, imágenes/otros en nombre_del_sitio/\nHtml en nombre_del_sitio/, imágenes/otros en nombre_del_sitio/xxx\nHtml en nombre_del_sitio/html, imágenes/otros en nombre_del_sitio/xxx\nTodos los ficheros en la web/, con nombres aleatorios (gadget !)\nTodos los ficheros en nombre_del_sitio/, con nombres aleatorios (gadget !)\nEstructura definida por el usuario.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Solamente analizar\nAlmacenar ficheroos html\nAlmacenar ficheros, no html\nAlmacenar todos los ficheros (por omisión)\nAlmacenar ficheros html primero +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Permanecer en el mismo directorio\nPermite ir hacia abajo (por omisión)\nPermite ir hacia arriba\nPermite ir hacia arriba & hacia abajo +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Permanecer en la misma dirección (por omisión)\nPermanecer en el mismo domínio\nPermanecer en el mismo domínio de nivel superior\nIr a todos los lugares de la Web +Never\nIf unknown (except /)\nIf unknown +Nunca\nSi es desconocido (excepto /)\nSi es desconocido +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +ninguna regla para robots.txt\nexcepto asistente robots.txt\nseguir reglas robots.txt +normal\nextended\ndebug +normal\nextendido\ncorregir +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Copiar sitio(s) de la Web\nCopiar sitio(s) interactivos de la Web (preguntas)\nRecibir ficheros específicos\nCopiar todas las páginas del sitio (copia múltiple)\nComprobar enlaces en las páginas (probar marcadores)\n* Continuar proyecto interrumpido\n* Actualizar proyecto existente +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +URI relativa / URL absoluta (por omisión)\nURL Absoluta / URL absoluta\nURI absoluta / URL absoluta\nURL original / URL original +Open Source offline browser +Navegador offline Open Source +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Copiador de sitios Web/Browser Offline. Copia sitios web remotos en el ordenador. Gratuito. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, offline browser +URL list (.txt) +Lista de URLs (.txt) +Previous +Anterior +Next +Siguiente +URLs +URLs +Warning +Aviso +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Su navegador no soporta javascript. Obtendrá mejores resultados si usa un navegador que admita javascript. +Thank you +Gracias +You can now close this window +Ya puede cerrar esta ventana +Server terminated +Servidor desconectado +A fatal error has occured during this mirror +Ha ocurrido un error fatal durante esta copia diff --git a/lang/Cesky.txt b/lang/Cesky.txt new file mode 100755 index 0000000..318d4b1 --- /dev/null +++ b/lang/Cesky.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Èesky +LANGUAGE_FILE +Cesky +LANGUAGE_ISO +cz +LANGUAGE_AUTHOR +Antonín Matìjèík (matejcik@volny.cz) \r \n +LANGUAGE_CHARSET +ISO-8859-2 +OK +Ano +Cancel +Zrušit +Exit +Konec +Close +Zavøít +Cancel changes +Zrušit zmìny +Click to confirm +Klikni pro potvrzení +Click to get help! +Klikni pro nápovìdu +Click to return to previous screen +Klikni pro návrat do pøedchozího okna +Click to go to next screen +Klikni pro pokraèování na následujícím oknì +Hide password +Skrýt heslo +Save project +Uložit projekt +Close current project? +Zavøít aktuální projekt? +Delete this project? +Smazat tento projekt? +Delete empty project %s? +Smazat prázdný projekt %s? +Action not yet implemented +Akce není ještì implementována +Error deleting this project +Chyba pøi mazání tohoto projektu +Select a rule for the filter +Výbìr pravidla pro filtr +Enter keywords for the filter +Zadej klíèová slova pro filtr +Cancel +Zrušit +Add this rule +Pøidat toto pravidlo +Please enter one or several keyword(s) for the rule +Zadej jedno nebo nìkolik klíèových slov pro pravidlo +Add Scan Rule +Pøidat filtr +Criterion +Kritérium filtru +String +Øetìzec +Add +Pøidat +Scan Rules +Filtry +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Používej zástupných znakù (wildcards) pro pøidání nebo odebrání URL nebo odkazù. \nMùžeš použít nìkolik zástupných znakù na jediném øádku. \Používej mezery jako oddìlovaèe. \n\nNapøíklad: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi */ +Exclude links +Vylouèit odkaz(y) +Include link(s) +Zahrnout odkaz(y) +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tip: Pro zahrnutí všech GIF souborù, použij tøeba +www.someweb.com/*.gif. \n(+*.gif / -*.gif zahrne/vylouèí VŠECHNY GIF soubory ze všech stránek) +Save prefs +Uložit nastavení +Matching links will be excluded: +Shodné odkazy budou vylouèeny: +Matching links will be included: +Shodné odkazy budou zahrnuty: +Example: +Pøíklad: +gif\r\nWill match all GIF files +gif\r\nZahrne všechny GIF soubory +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +modrá\r\nZahrne všechny soubory obsahující slova 'modrá', napø. 'modrá-obloha.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nZahrne soubor 'bigfile.mov', ale již ne 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nNajde odkazy s názvem adresáøe obsahující øetìzec 'cgi' jako tøeba /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nNajde odkazy s názvem adresáøe obsahující celý 'cgi-bin' øetìzec (ale již ne cgi-bin-2) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nNajde odkazy obsahující øetìzce www.someweb.com, private.someweb.com apod. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nNajde odkazy shodné s názvem adresáøe obsahující øetìzce www.someweb.com, www.someweb.edu, private.someweb.otherweb.com apod. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nNajde odkazy obsahující celý 'www.someweb.com' øetìzec (ale ne øetìzce jako private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nNajde jakékoliv odkazy obsahující øetìzec jako www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html apod. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nNajde pouze soubor 'www.test.com/test/someweb.html'. Nezapomeò, že musíš zadat celou cestu (URL + cesta ke stránce) +All links will match +Všechny odkazy se budou shodovat +Add exclusion filter +Pøidat filtr pro vylouèení +Add inclusion filter +Pøidat filtr pro zahrnutí +Existing filters +Definované filtry +Cancel changes +Zrušit zmìny +Save current preferences as default values +Uložit aktuální nastavení jako výchozí +Click to confirm +Klikni pro potvrzení +No log files in %s! +Chybí protokoly v %s! +No 'index.html' file in %s! +Chybí 'index.html' soubor v %s! +Click to quit WinHTTrack Website Copier +Klikni pro ukonèení programu WinHTTrack Website Copier +View log files +Zobrazit protokoly +Browse HTML start page +Prohlídnout úvodní HTML stránku +End of mirror +Konec stahování +View log files +Zobrazit protokoly +Browse Mirrored Website +Prohlídnout stažené stránky +New project... +Nový projekt.. +View error and warning reports +Zobrazit chyby a upozornìní +View report +Zobrazit hlášení +Close the log file window +Zavøít okno s protokolem +Info type: +Typ informace: +Errors +Chyby +Infos +Informace +Find +Najít +Find a word +Najít slovo +Info log file +Informaèní protokol +Warning/Errors log file +Protokol s chybami +Unable to initialize the OLE system +Inicializace OLE systému selhala +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack nemùže nalézt žádné stažené soubory v cache pøi pøerušení stahování v urèeném adresáøi! +Could not connect to provider +Spojení s poskytovatelem nenavázáno +receive +pøíjem +request +požadavek +connect +spojení +search +hledání +ready +hotovo +error +chyba +Receiving files.. +Pøíjem souborù.. +Parsing HTML file.. +Analýza HTML souboru.. +Purging files.. +Uvolnìní souborù.. +Loading cache in progress.. + +Parsing HTML file (testing links).. +Analýza HTML souboru (test odkazù).. +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pøerušení - Pro pokraèování zvol [Stahování]/[Pøerušit pøenos] +Finishing pending transfers - Select [Cancel] to stop now! +Dokonèují se zbývající pøenosy - Zvol [Zrušit] pro jejich zastavení +scanning +provìøování +Waiting for scheduled time.. +Èekání na naplánovaný èas.. +Connecting to provider +Pøipojování k poskytovateli +[%d seconds] to go before start of operation +[%d sekund] do startu +Site mirroring in progress [%s, %s bytes] +Probíhá stahování stránek [%s, %s bajtù] +Site mirroring finished! +Stahování stránek skonèeno! +A problem occured during the mirroring operation\n +Pøi stahování se vyskytl problém\n +\nDuring:\n +\nBìhem:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nZobraz protokol.\n\nKlikni na Ukonèit pro ukonèení programu WinHTTrack Website Copier.\n\nDíky za použití programu WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Stahování skonèeno.\nKlikni na Konec pro ukonèení programu WinHTTrack.\nZobraz si protokoly pro kontrolu chyb pøi stahování.\n\nDíky za použití programu WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * STAHOVÁNÍ ZRUŠENO! * *\r\nPro pokraèování stahování je zapotøebí lokální cache, obsahující stažená data.\r\nPøedchozí cache mùže obsahovat více informací. Pokud je nechceš ztratit, musíš ji obnovit a smazat aktuální cache.\r\n[Poznámka: To mùže být provedeno teï smazáním hts-cache/new.* souborù]\r\n\r\nMyslíš, že cache obsahuje více informací a pøeješ si ji obnovit? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * CHYBA PØI STAHOVÁNÍ! * *\r\nHTTrack zjistil, že se nestáhla žádná data. Pokud se jednalo o aktualizaci, pak pøedešlá data byla obnovena.\r\nDùvod: Nemohla být nalezena první stránka nebo se vyskytl problém se spojením.\r\n=>Provìø zda zadaná adresa existuje anebo zkontroluj nastavení proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nTip: Klikni [Zobraz protokoly] pro zobrazení upozornìní a chyb +Error deleting a hts-cache/new.* file, please do it manually +Chyba pøi mazání hts-cache/new.* souborù, udìlej to ruènì +Do you really want to quit WinHTTrack Website Copier? +Opravdu ukonèit WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Mód stahování -\n\nZadej adresu(y) do URL øádky +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Interaktivní mód (otázky) -\n\nZadej adresu(y) do URL øádky +- File Download Mode -\n\nEnter file address(es) in URL box +- Mód stahování souborù -\n\nZadej adresu(y) do URL øádky +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Mód kontroly odkazù -\n\nZadej Web adresu(y) s odkazy pro kontrolu do URL øádky +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Mód pro aktualizaci -\n\nZkontroluj adresu(y) v URL øádce, ovìø znovu parametry (pokud je to nutné) a klikni na 'Další' +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Mód pro navázání (pøi pøerušení) -\n\nZkontroluj adresu(y) v seznamu, ovìø znovu parametry (pokud je to nutné) a klikni na 'Další' +Log files Path +Cesta k protokolùm +Path +Cesta +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Mód seznamu odkazù -\n\nDo URL øádky zadej adresu(y) stránek obsahující odkazy ke stažení +New project / Import? +Nový projekt/Import? +Choose criterion +Vybrat kritérium +Maximum link scanning depth +Maximální hloubka provìøování odkazù +Enter address(es) here +Zadej adresu(y) +Define additional filtering rules +Definice dodateèných filtrù +Proxy Name (if needed) +Jméno proxy (pokud to je nutné) +Proxy Port +Proxy port +Define proxy settings +Proxy nastavení +Use standard HTTP proxy as FTP proxy +Použít standardní proxy jako FTP proxy +Path +Cesta +Select Path +Vyber cestu +Path +Cesta +Select Path +Vyber cestu +Quit WinHTTrack Website Copier +Ukonèit WinHTTrack Website Copier +About WinHTTrack +O programu WinHTTrack Website Copier +Save current preferences as default values +Uložit aktuální nastavení jako výchozí +Click to continue +Klikni pro pokraèování +Click to define options +Klikni pro nastavení +Click to add a URL +Klikni pro pøidání URL adresy +Load URL(s) from text file +Naèíst URL adresu z textového souboru +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack nastavení (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Soubor obsahující seznam adres (*.txt)|*.txt|| +File not found! +Soubor nenalezen! +Do you really want to change the project name/path? +Opravdu chceš zmìnit název/cestu projektu? +Load user-default options? +Naèíst uživatelsky-výchozí nastavení? +Save user-default options? +Uložit uživatelsky-výchozí nastavení? +Reset all default options? +Obnovit všechna výchozí nastavení? +Welcome to WinHTTrack! +Vítá Vás program WinHTTrack Website Copier! +Action: +Akce: +Max Depth +Maximální hloubka +Maximum external depth: +Maximální hloubka externího odkazu +Filters (refuse/accept links) : +Filtry (odmítnout/pøijmout odkazy): +Paths +Cesty +Save prefs +Ulož nastavení +Define.. +Definice.. +Set options.. +Nastavení.. +Preferences and mirror options: +Pøedvolby a nastavení stahování: +Project name +Název projektu +Add a URL... +Pøidat URL.. +Web Addresses: (URL) +Adresa WWW (URL): +Stop WinHTTrack? +Zastavit WinHTTrack? +No log files in %s! +Nenalezen žádný protokol v %s! +Pause Download? +Pøerušit stahování? +Stop the mirroring operation +Zastavit stahování? +Minimize to System Tray +Minimalizace do systémové lišty +Click to skip a link or stop parsing +Klikni pro pøeskoèení odkazu nebo pro zastavení provìøování odkazu +Click to skip a link +Klikni pro pøeskoèení odkazu +Bytes saved +Bajtù uloženo: +Links scanned +Odkazù provìøeno: +Time: +Èas: +Connections: +Spojení: +Running: +Zobrazit prùbìh +Hide +Skrýt +Transfer rate +Pøenosová rychlost: +SKIP +PØESKOÈIT +Information +Informace +Files written: +Zapsáno souborù: +Files updated: +Zaktualizováno: +Errors: +Chyby: +In progress: +Zpracovává se: +Follow external links +Následuj externí odkazy +Test all links in pages +Vyzkoušej všechny odkazy na stránce +Try to ferret out all links +Zkus prohledat všechny odkazy +Download HTML files first (faster) +Nejprve stáhnout HTML stránky (rychlejší) +Choose local site structure +Zvolit místní strukturu stránky +Set user-defined structure on disk +Nastavit uživatelsky-definovanou strukturu na disku +Use a cache for updates and retries +Použít cache pro aktualizace a obnovení +Do not update zero size or user-erased files +Neaktualizovat soubory uživatelem smazané nebo s nulovou velikostí +Create a Start Page +Vytvoøit úvodní stránku +Create a word database of all html pages +Vytvoøit seznam slov ze všech HTML stránek +Create error logging and report files +Vytvoøit protokol s chybami a hlášeními +Generate DOS 8-3 filenames ONLY +Vytváøet názvy souborù v DOS 8+3 +Generate ISO9660 filenames ONLY for CDROM medias + +Do not create HTML error pages +Nevytváøet HTML stránky s chybami +Select file types to be saved to disk +Vyber typy souborù pro ukládání na disk +Select parsing direction +Vybrat smìr analýzy +Select global parsing direction +Vybrat globální smìr analýzy +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Nastav pøepis zásad URL pro interní odkazy (jednou již stažené) a externí odkazy (ještì nestažené) +Max simultaneous connections +Maximální poèet soubìžných spojení +File timeout +Doba èekání pro soubory +Cancel all links from host if timeout occurs +Zruš všechny odkazy pokud je pøekroèena doba èekání +Minimum admissible transfer rate +Minimální pøípustná pøenosová rychlost +Cancel all links from host if too slow +Zruš všechny odkazy pokud je pøenos pøíliš pomalý +Maximum number of retries on non-fatal errors +Maximální poèet opakování pøi nepodstatných chybách +Maximum size for any single HTML file +Maximální velikost jednoho HTML souboru +Maximum size for any single non-HTML file +Maximální velikost jednoho ne-HTML souboru +Maximum amount of bytes to retrieve from the Web +Maximální poèet pøenesených bajtù z Webu +Make a pause after downloading this amount of bytes +Pozastavit stahování po pøenosu tohoto poètu bajtù +Maximum duration time for the mirroring operation +Maximální èas trvání stahování +Maximum transfer rate +Maximální pøenosová rychlost +Maximum connections/seconds (avoid server overload) +Maximální poèet spojení/sekund (zabránìní pøetížení serveru) +Maximum number of links that can be tested (not saved!) +Maximální poèet odkazù, které mají být otestovány (ne uloženy) +Browser identity +Totožnost prohlížeèe +Comment to be placed in each HTML file +Komentáø vložený do každého HTML souboru +Back to starting page +Zpìt na úvodní stránku +Save current preferences as default values +Uložit aktuální nastavení jako výchozí +Click to continue +Klikni pro pokraèování +Click to cancel changes +Klikni pro zrušení zmìn +Follow local robots rules on sites +Aplikuj lokální pravidla robotù na stránkách +Links to non-localised external pages will produce error pages +Odkazy na nelokalizované externí stránky zapøièiní vytvoøení stránek s chybami +Do not erase obsolete files after update +Nesmazat starší soubory po jejich aktualizaci +Accept cookies? +Pøijímat cookies? +Check document type when unknown? +Provìøit typ dokumentu pokud je neznámý? +Parse java applets to retrieve included files that must be downloaded? +Analyzovat java aplety kvùli nalezení nutných souborù pro stažení +Store all files in cache instead of HTML only +Uložení všech souborù do cache místo jen do HTML +Log file type (if generated) +Typ protokolu (pokud je vytvoøen) +Maximum mirroring depth from root address +Maximální hloubka stahování z koøenového adresáøe +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximální hloubka stahování pro externí/zakázané adresy (0 - znamenající žádná - je výchozí) +Create a debugging file +Vytvoøení souboru pro ladìní +Use non-standard requests to get round some server bugs +Použít nestandardních požadavkù pro pøedejití chyb serveru +Use old HTTP/1.0 requests (limits engine power!) +Použít starší verze HTTP/1.0 požadavkù (omezuje výkonost stroje) +Attempt to limit retransfers through several tricks (file size test..) +Pokus k zamezení opìtovného pøenosu pomocí rùzných zpùsobù (test velikosti souboru,..) +Write external links without login/password +Zápis externích odkazù bez pøihlášení/hesla +Write internal links without query string +Zápis interních odkazù bez ovìøení øetìzce +Get non-HTML files related to a link, eg external .ZIP or pictures +Stáhnout soubory patøící k odkazu v ne-HTML formátu, napø. externí .ZIP nebo obrázky +Test all links (even forbidden ones) +Kontrola všech odkazù (vèetnì zakázaných) +Try to catch all URLs (even in unknown tags/code) +Pokus o získání všech URL (vèetnì tìch v neznámých znacích nebo kódech) +Get HTML files first! +Stáhnout nejprve HTML soubory! +Structure type (how links are saved) +Typ struktury (jak budou odkazy uloženy) +Use a cache for updates +Použít cache pro aktualizaci +Do not re-download locally erased files +Znovu nestahovat lokálnì smazané soubory +Make an index +Vytvoøit rejstøík +Make a word database +Vytvoøit seznam slov +Log files +Protokoly +DOS names (8+3) +Jména souborù v DOS (8+3) +ISO9660 names (CDROM) + +No error pages +Žádné chybové stránky +Primary Scan Rule +Primární filtr +Travel mode +Mód pro cestování +Global travel mode +Globální mód pro cestování +These options should be modified only exceptionally +Tyto parametry by mìli být zmìnìny pouze vyjímeènì +Activate Debugging Mode (winhttrack.log) +Aktivuj mód ladìní (winhttrack.log) +Rewrite links: internal / external +Pøepiš odkazy: interní/externí +Flow control +Sledování bìhu +Limits +Limity +Identity +Identifikace +HTML footer +Záhlaví HTML +N# connections +Poèet spojení +Abandon host if error +Pøerušit spojení, pokud dojde k chybì serveru +Minimum transfer rate (B/s) +Minimální pøenosová rychlost (B/s) +Abandon host if too slow +Pøerušit spojení, pokud je pøenos pøíliš pomalý +Configure +Konfigurace +Use proxy for ftp transfers +Použít proxy pro FTP pøenos +TimeOut(s) +Èasové limity +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Poèet opakování +Size limit +Omezení velikosti +Max size of any HTML file (B) +Maximální velikost HTML souboru +Max size of any non-HTML file +Maximální velikost ne-HTML souboru +Max site size +Maximální velikost stránky +Max time +Maximální èas +Save prefs +Uložit nastavení +Max transfer rate +Maximální pøenososvá rychlost +Follow robots.txt +Øiï se podle robots.txt +No external pages +Žádné externí stránky +Do not purge old files +Neuvolnit staré soubory +Accept cookies +Pøíjem cookies +Check document type +Kontrola typu dokumentu +Parse java files +Analyzovat java soubory +Store ALL files in cache +Ukládat VŠECHNY soubory do cache +Tolerant requests (for servers) +Pøípustné požadavky (pro servery) +Update hack (limit re-transfers) +Aktualizovat chytrou obnovu (zabrání znovu pøenosu souborù) +Force old HTTP/1.0 requests (no 1.1) +Použít pouze staré HTTP/1.0 požadavky (ne HTTP/1.1) +Max connections / seconds +Maximální poèet spojení/sekund +Maximum number of links +Maximální poèet odkazù +Pause after downloading.. +Pøerušit po stažení +Hide passwords +Skrýt heslo +Hide query strings +Skrýt ovìøovací znaky +Links +Odkazy +Build +Struktura +Experts Only +Pro odborníky +Flow Control +Øízení bìhu +Limits +Limitní hodnoty +Browser ID +ID prohlížeèe +Scan Rules +Filtry +Spider +Pavouk +Log, Index, Cache +Protokol, rejstøík, cache +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Opravdu ukonèit WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Nepøipojovat se k poskytovateli (již spojeno) +Do not use remote access connection +Nepoužívat vzdáleného pøístupového spojení +Schedule the mirroring operation +Naplánovat stahování +Quit WinHTTrack Website Copier +Ukonèit WinHTTrack Website Copier +Back to starting page +Zpìt na úvodní stránku +Click to start! +Klikni pro start +No saved password for this connection! +Není uloženo heslo pro toto spojení! +Can not get remote connection settings +Není pøístup k nastavení vzdáleného spojení +Select a connection provider +Vyber poskytovatele +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Pokud je to nutné, uprav parametry spojení,\npak klikni na DOKONÈIT pro zahájení stahování +Save settings only, do not launch download now. +Pouze uložit nastavení, nezahájit stahování. +On hold +Podržet +Transfer scheduled for: (hh/mm/ss) +Nastavení èasu stahování v: (hh/mm/ss) +Start +Start +Connect to provider (RAS) +Spojení s poskytovatelem (RAS) +Connect to this provider +Spojit s tímto poskytovatelem spojení +Disconnect when finished +Odpojit po dokonèení +Disconnect modem on completion +Odpojit modem po dokonèení +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Prosíme o podání hlášení o jakýchkoliv chybách)\r\n\r\nVývoj:\r\nRozhraní (Windows): Xavier Roche\r\nPavouk: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche a ostatní, kdo pøispìli\r\nÈeský pøeklad:\r\nAntonín Matìjèík (matejcik@volny.cz) +About WinHTTrack Website Copier +O programu WinHTTrack Website Copier +Please visit our Web page +Návštìva naší stránky +Wizard query +Otázky pro pomocníka +Your answer: +Tvá odpovìï: +Link detected.. +Odkaz detekován.. +Choose a rule +Vybrat filtr +Ignore this link +Ignorovat tento odkaz +Ignore directory +Ignorovat adresáø +Ignore domain +Ignorovat doménu +Catch this page only +Získat pouze tuto stránku +Mirror site +Stránka pro stahování +Mirror domain +Doména stránky pro stahování +Ignore all +Ignoruj vše +Wizard query +Otázka pomocníka +NO +Ne +File +Soubor +Options +Nastavení +Log +Protokol +Window +Okno +Help +Nápovìda +Pause transfer +Pøerušit pøenos +Exit +Konec +Modify options +Zmìna nastavení +View log +Zobrazit protokol +View error log +Zobrazit chybový protokol +View file transfers +Zobrazit pøenosy souborù +Hide +Do systémové lišty +About WinHTTrack Website Copier +O programu WinHTTrack Website Copier +Check program updates... +Stažení novìjší verze.. +&Toolbar +&Lišta +&Status Bar +&Stavová lišta +S&plit +R&ozdìlit +File +Soubor +Preferences +Nastavení +Mirror +Stahování +Log +Protokol +Window +Okno +Help +Nápovìda +Exit +Konec +Load default options +Nahrát výchozí nastavení +Save default options +Uložit výchozí nastavení +Reset to default options +Obnovit výchozí nastavení +Load options... +Nahrát nastavení.. +Save options as... +Uložit nastavení jako.. +Language preference... +Volba jazyka +Contents... +Obsah (Anglicky) +About WinHTTrack... +O programu WiHTTrack Website Copier +New project\tCtrl+N +Nový projekt\tCtrl+N +&Open...\tCtrl+O +&Oteøít..\tCtrl+O +&Save\tCtrl+S +&Uložit\tCtrl+S +Save &As... +Uložit &jako.. +&Delete... +&Smazat +&Browse sites... +&Prohlídnout stažené stránky.. +User-defined structure +Uživatelsky-definovaná struktura +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNázev souboru bez pøípony (napø. obr)\r\n%N\tNázev souboru vèetnì pøípony (napø. obr.gif)\r\n%t\tPouze pøípona (napø. gif)\r\n%p\tCesta [bez posledního /] (napø. /obrázky)\r\n%h\tWeb adresa (napø. www.kdesi.com)\r\n%M\tMD5 URL (128 bitù, 32 ascii bajtù)\r\n%Q\tMD5 ovìøovací øetìzec (128 bitù, 32 ascii bajtù)\r\n%q\tMD5 malý ovìøovací øetìzec (16 bitù, 4 ascii bajtù)\r\n\r\n%s?\tZkratka (napø. %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Pøíklad:\t%h%p/%n%q.%t\n->\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Nastavení proxy +Proxy address: +Adresa Proxy: +Proxy port: +Port Proxy +Authentication (only if needed) +Ovìøení (pouze když je vyžadováno) +Login +Pøihlášení +Password +Heslo +Enter proxy address here +Vlož adresu proxy +Enter proxy port here +Vlož port proxy +Enter proxy login +Vlož pøihlášení k proxy +Enter proxy password +Vlož heslo proxy +Enter project name here +Napiš název projektu +Enter saving path here +Vlož cestu pro uložení +Select existing project to update +Zvolt existující projekt pro aktualizaci +Click here to select path +Klikni pro výbìr cesty +HTTrack Project Wizard... +Pomocník HTTrack projektu.. +New project name: +Název nového projektu: +Existing project name: +Existující název projektu: +Project name: +Název projektu: +Base path: +Základní cesta: +C:\\My Web Sites +C:\\Temp\Projekty +Type a new project name, \r\nor select existing project to update/resume +Napiš nový název projektu, \r\nnebo vyber projekt k aktualizaci +New project +Nový projekt +Insert URL +Vložit URL adresu +URL: +URL adresa: +Authentication (only if needed) +Ovìøení (pouze pokud je tøeba) +Login +Pøihlášení +Password +Heslo +Forms or complex links: +Formuláøe nebo souhrné odkazy: +Capture URL... +Získat URL.. +Enter URL address(es) here +Vlož URL adresu(y) +Enter site login +Vlož pøihlášení na stránku +Enter site password +Vlož heslo pro stránku +Use this capture tool for links that can only be accessed through forms or javascript code +Použít tento nástroj pro získání odkazù, které mohou být dostupné pouze pomocí formuláøù nebo java skriptù +Choose language according to preference +Volba jazyka podle nastavení +Catch URL! +Získej URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Nastav doèasnì proxy pro tvùj prohlížeè na následující hodnoty (zkopírovat/vložit adresu a port proxy).\nPak klikni na tlaèítko OK na formuláøi ve tvém prohlížeèi nebo klikni na daný odkaz, který chceš získat. +This will send the desired link from your browser to WinHTTrack. +Požadovaný odkaz se odešle z tvého prohlížeèe do programu WinHTTrack. +ABORT +ZRUŠIT +Copy/Paste the temporary proxy parameters here +Zkopírovat/Vložit doèasné proxy parametry +Cancel +Zrušit +Unable to find Help files! +Nebylo možné nalézt soubory Nápovìdy! +Unable to save parameters! +Nebylo možné uložit parametry! +Please drag only one folder at a time +Prosím uchop do myši najednou pouze jeden adresáø +Please drag only folders, not files +Prosím uchopuj pouze adresáøe, ne soubory +Please drag folders only +Prosím uchopuj pouze adresáøe +Select user-defined structure? +Vybrat uživatelsky-definovanou strukturu? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Prosím zajisti, že uživatelsky-definovaný øetìzec je správný, jinak budou názvy souborù špatnì pojmenovány! +Do you really want to use a user-defined structure? +Opravdu chceš použít uživatelsky-definovanou strukturu? +Too manu URLs, cannot handle so many links!! +Pøíliš mnoho URL adres, není možné pracovat s takovým množstvím! +Not enough memory, fatal internal error.. +Nedostatek pamìti, vážná vnitøní chyba.. +Unknown operation! +Neznámá operace! +Add this URL?\r\n +Pøidat tuto URL adresu?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Upozornìní: hlavní proces ještì nereaguje, nemožné pøidat URL adresu(y).. +Type/MIME associations +Type/MIME pøidružení +File types: +Typy souborù: +MIME identity: +Identita MIME: +Select or modify your file type(s) here +Vybrat nebo zmìnit typ(y) souborù +Select or modify your MIME type(s) here +Vybrat nebo zmìnit typ(y) MIME souborù +Go up +Nahoru +Go down +Dolù +File download information +Informace o staženém souboru +Freeze Window +Zamrznutí okna +More information: +Další informace: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Vítej v programu WinHTTrack!\n\nKlikni na tlaèítko Další pro\n\n- vytvoøení nového projektu\n nebo \n- návrat k èásteènì staženému projektu +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Názvy souborù s pøíponami:\nNázvy souborù obsahující:\n Tento název souboru:\nJména adresáøù obsahující:\nTento název adresáøe:\nOdkazy v této doménì:\nOdkazy v doménách obsahující:\nOdkazy z tohoto poèítaèe:\nOdkazy obsahující:\nTento odkaz:\nVŠECHNY ODKAZY +Show all\nHide debug\nHide infos\nHide debug and infos +Zobraz vše\nSkryj ladìní\nSkryj informace\nSkryj ladìní a informace +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Struktura stránky (výchozí)\nHtml ve web/, obrázky/ostatní soubory ve web/obrázky/\nHtml ve web/html, obrázky/ostatní ve web/obrázky\nHtml ve web/, obrázky/ostatní ve web/\nHtml ve web/, obrázky/ostatní ve web/xxx, kde xxx znaèí pøíponu souboru\nHtml ve web/html, obrázky/ostatní ve web/xxx\nStruktura stránky bez www.doména.xxx/\nHtml v název_stránky/, obrázky/ostatní soubory v název_stránky/obrázky/\nHtml v název_stránky/html, obrázky/ostatní v název_stránky/obrázky\nHtml v název_stránky/, obrázky/ostatní v název_stránky/\nHtml v název_stránky/, obrázky/ostatní v název_stránky/xxx\nHtml v název_stránky/html, obrázky/ostatní v název_stránky/xxx\nVšechny soubory ve web/, s náhodnými názvy (vynález!)\nVšechny soubory v název_stránky/, s náhodnými názvy (vynález!)\nUživatelsky-definovaná struktura.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Pouze provìøit\nUložit HTML soubory\nUložit ne-HTML soubory\nUložit všechny soubory (výchozí)\nUložit nejprve HTML soubory +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Zùstat ve stejném adresáøi\nDolù (výchozí)\nNahoru\nNahoru i dolù +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Zùstat na stejné adrese (výchozí)\nZùstat ve stejné doménì\nZùstat ve stejné doménì nejvyš. øádu\nJít na jakýkoliv web +Never\nIf unknown (except /)\nIf unknown +Nikdy\nPokud není znám (kromì /)\nPokud není znám +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +žádná pravidla podle robot.txt\nrobot.txt kromì pomocníka\naplikovat pravidla podle robot.txt +normal\nextended\ndebug +normální\nrozšíøený\nladìní +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Stažení web stránek\nStažení web stránek + otázky\nStažení souborù\nStažení všech stránek (vícenásobné stažení)\nKontrola odkazù na stránkách (test záložek)\n* Navázání pøerušeného stahování\n* Aktualizace stažených stránek +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relativní URI/Absolutní URL (výchozí)\nAbsolutní URL/Absolutní URL\nAbsolutní URI/Absolutní URL\nPùvodní URL/Pùvodní URL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Chinese-BIG5.txt b/lang/Chinese-BIG5.txt new file mode 100755 index 0000000..330e032 --- /dev/null +++ b/lang/Chinese-BIG5.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Chinese-BIG5 +LANGUAGE_FILE +Chinese-BIG5 +LANGUAGE_ISO +ct +LANGUAGE_AUTHOR +David Hing Cheong Hung (DAVEHUNG@mtr.com.hk)\r\n +LANGUAGE_CHARSET +BIG5 +OK +½T©w +Cancel +¨ú®ø +Exit +Â÷¶} +Close +Ãö³¬ +Cancel changes +¨ú®øÅܧó +Click to confirm +ÂIÀ»¥H½T»{ +Click to get help! +ÂIÀ»¥HÀò¨ú»¡©ú! +Click to return to previous screen +ÂIÀ»¥Hªð¦^«e¤@­¶ +Click to go to next screen +ÂIÀ»¥H¨ì¹F¤U¤@­¶ +Hide password +ÁôÂñK½X +Save project +«O¦s±M®× +Close current project? +¬O§_Ãö³¬·í«e±M®×? +Delete this project? +§R°£¦¹±M®×? +Delete empty project %s? +§R°£ªÅªº±M®× %s? +Action not yet implemented +¾Þ§@¤´¥¼°õ¦æ +Error deleting this project +§R°£¸Ó±M®×®É¥X¿ù +Select a rule for the filter +¬°¹LÂo¾¹¿ï¨ú³W«h +Enter keywords for the filter +¬°¹LÂo¾¹¿é¤JÃöÁäµü +Cancel +¨ú®ø +Add this rule +¼W¥[¸Ó³W«h +Please enter one or several keyword(s) for the rule +½Ð¬°¦¹³W«h¿é¤J¤@¦Ü´X­ÓÃöÁäµü +Add Scan Rule +¼W¥[±½´y³W«h +Criterion +·Ç«h +String +¦r¦ê +Add +¼W¥[ +Scan Rules +±½´y³W«h +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +¨Ï¥Î¸U¥Î¦r¤¸¥H¥]§t©Î±Æ°£URLs©ÎÃìµ².\n¦h­Ó³W©w±½´y³W«hªº¦r¦ê¥i¼g¦b¦P¤@¦æ.\n¨Ï¥ÎªÅ¥ÕÁä§@¬°¤À¹j²Å¸¹.\n\n¨Ò¦p: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +±Æ°£Ãìµ² +Include link(s) +¥]§tÃìµ² +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +´£¥Ü: ±ý¥]§t¬Yºô°ì¦WºÙ¤Uªº©Ò¦³GIFÀÉ®×, ¥i¿é¤J +www.someweb.com/*.gif. \n(+*.gif / -*.gif ±N¥]§t/±Æ°£¨Ó¦Û©Ò¦³¯¸ÂIªºGIFÀÉ®×) +Save prefs +«O¦s³]©w +Matching links will be excluded: +¤Ç°tªºÃìµ²±N³Q±Æ°£: +Matching links will be included: +¤Ç°tªºÃìµ²±N³Q¥]§t: +Example: +¨Ò¦p: +gif\r\nWill match all GIF files +gif\r\n±N¤Ç°t©Ò¦³GIFÀÉ®× +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\n±N´M§ä¨ì©Ò¦³¥]§t'blue' ªºÀÉ®×, ½Ñ¦p 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\n±N¤Ç°tÀÉ®× 'bigfile.mov', ¦ý¤£¥]¬A 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\n±N´M§ä¨ìÀÉ®×§¨¦W¤º¥]§t'cgi' ªºÃìµ², ½Ñ¦p /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\n±N´M§ä¨ìÀÉ®×§¨¦W¤º¥]§t'cgi-bin' ªºÃìµ² (¦ýcgi-bin-2 °£¥~) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\n±N´M§ä¨ì¥]§t½Ñ¦pwww.someweb.com, private.someweb.com µ¥ªºÃìµ² +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\n±N´M§ä¨ì¥]§t½Ñ¦pwww.someweb.com, www.someweb.edu, private.someweb.otherweb.com µ¥ªºÃìµ² +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\n±N´M§ä¨ì¥]§t'www.someweb.com' ªºÃìµ² (¦ý¤£¥]¬Aprivate.someweb.com/ µ¥) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\n±N´M§ä¨ì¥ô¦ó½Ñ¦p¥H¤UªºÃìµ²: www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html µ¥ +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\n±N¶È´M§ä¨ì'www.test.com/test/someweb.html' ÀÉ®×. ª`·N½Ð¿é¤J§¹¾ãªº¸ô®|. +All links will match +©Ò¦³ªºÃìµ²³£±N¤Ç°t +Add exclusion filter +¬°¹LÂo¾¹¼W¥[±Æ°£³W«h +Add inclusion filter +¬°¹LÂo¾¹¼W¥[¥]§t³W«h +Existing filters +¤w©w¨îªº¹LÂo¦r¦ê +Cancel changes +¨ú®øÅܧó +Save current preferences as default values +±N·í«e³]©w¦s¬°¹w³]­È +Click to confirm +ÂIÀ»¥H½T»{ +No log files in %s! +%s ¤ºµL¤é»xÀÉ®×! +No 'index.html' file in %s! +%s ¤ºµL'index.html' ÀÉ®×! +Click to quit WinHTTrack Website Copier +ÂIÀ»¥HÂ÷¶}WinHTTrack Website Copier +View log files +¬d¬Ý¤é»xÀÉ®× +Browse HTML start page +ÂsÄý HTML °_©l­¶ +End of mirror +Ãè¹³µ²§ô +View log files +¬d¬Ý¤é»xÀÉ®× +Browse Mirrored Website +ÂsÄý¤wÃè¹³ªººô¯¸ +New project... +·sªº±M®×... +View error and warning reports +¬d¬Ý¿ù»~¤Îĵ§i³ø§i +View report +¬d¬Ý³ø§i +Close the log file window +Ãö³¬¤é»xÀÉ®×µøµ¡ +Info type: +°T®§Ãþ«¬: +Errors +¿ù»~ +Infos +°T®§ +Find +´M§ä +Find a word +´M§ä¤@­Ó³æµü +Info log file +°T®§¤é»xÀÉ®× +Warning/Errors log file +ĵ§i/¿ù»~¤é»xÀÉ®× +Unable to initialize the OLE system +µLªkªì©l¤ÆOLE¨t²Î +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack ¥¼¯à¦b«ü©wÀÉ®×§¨¤º§ä¨ì³Q¤¤Â_ªºÀɮפU¸ütemp°Ï! +Could not connect to provider +µLªk³s½u¨ìºô¸ô +receive +±µ¦¬ +request +­n¨D +connect +³s½u +search +´M§ä +ready +´Nºü +error +¿ù»~ +Receiving files.. +±µ¦¬ÀÉ®×.. +Parsing HTML file.. +¤ÀªRHTMLÀÉ®×.. +Purging files.. +²M°£ÀÉ®×.. +Loading cache in progress.. +§Ö¨ú°O¾ÐÅé¸ü¤J¤¤.. +Parsing HTML file (testing links).. +¤ÀªRHTMLÀÉ®× (´ú¸ÕÃìµ²).. +Pause - Toggle [Mirror]/[Pause download] to resume operation +Ãè¹³¼È°± - ¤Á´«[Ãè¹³]/[¼È°±¤U¸ü]¥HÄ~Äò¾Þ§@ +Finishing pending transfers - Select [Cancel] to stop now! +µ²§ô³B²z¤¤ªºÂಾ - ²{¦b¿ï¾Ü[¨ú®ø]¨Ó°±¤î +scanning +±½´y +Waiting for scheduled time.. +µ¥«Ý¹w©wªº®É¶¡.. +Connecting to provider +¥¿¦b³s½uºô¸ô +[%d seconds] to go before start of operation +Â÷¾Þ§@¶}©lÁÙ¦³[%d ¬í] +Site mirroring in progress [%s, %s bytes] +¯¸ÂIÃè¹³¶i¦æ¤¤ [%s, %s byts] +Site mirroring finished! +¯¸ÂIÃè¹³§¹²¦! +A problem occured during the mirroring operation\n +Ãè¹³®Éµo¥Í¿ù»~\n +\nDuring:\n +\nµo¥Í¦b¥H¤U´Á¶¡:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\n¦p¦³»Ý­n½Ð¬Ý¤é»xÀÉ®×.\n\nÂIÀ»'µ²§ô'¥HÂ÷¶}WinHTTrack Website Copier.\n\nÁÂÁ¨ϥÎWinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Ãè¹³§¹¦¨.\nÂIÀ»'½T©w'¥HÂ÷¶}WinHTTrack.\n¦p¦³»Ý­n½Ð¬Ý¤é»xÀÉ®×, ¥H½T«O¸UµL¤@¥¢.\n\nÁÂÁ¨ϥÎWinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * Ãè¹³³Q¨ú®ø! * *\r\n·í«eÁ{®Éªº¹w¦s°Ï¬°¤é«á§ó·s©Ò»Ý, ¶È¦s¦³¦¹¦¸³Q¤¤Â_ªºÃè¹³´Á¶¡¤º¤U¸üªº¼Æ¾Ú.\r\n¦Ó­ì¦³¹w¦s°Ï¥i¯à·|¦s¦³§ó§¹¾ãªº¤º®e; ¦pªG§A¤£·Q¥¢¥h­ì¦³ªº¼Æ¾Ú, ½Ð«ì´_¤§, ¦}§R°£·í«e¹w¦s°Ï.\r\n[ª`: ±ý§R°£·í«e¹w¦s°Ï, ¶È»Ý§R°£¥H¤UÀÉ®×: hts-cache/new.*]\r\n\r\n§A¬O§_ªÖ©w­ì¦³¹w¦s°Ï¦s¦³§ó§¹¾ãªº¤º®e, ¦}§Æ±æ«ì´_¤§? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * Ãè¹³¥X¿ù!* *\r\nHTTrackÀË´ú¨ì·í«eÃè¹³¥¼Àx¦s¥ô¦ó¼Æ¾Ú. ­Y¨Ï¥Îªº§ó·s¼Ò¦¡, «h«e¤@¦¸Ãè¹³¤w³Q«ì´_.\r\n­ì¦]: ­º­¶¥¼¯à§ä¨ì, ©Îµo¥Í³s½u¿ù»~.\r\n=> ½Ð½T©w±ýÃè¹³ªººô¯¸¦s¦b, ¦}/©ÎÀˬdproxy³]©w! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\n´£¥Ü: ÂIÀ» [¬d¬Ý¤é»xÀÉ®×] ¥H¬d¬Ýĵ§i©Î¿ù»~®ø®§ +Error deleting a hts-cache/new.* file, please do it manually +§R°£hts-cache/new.* Àɮ׮ɥX¿ù, ½Ð¤â¤u§R°£ +Do you really want to quit WinHTTrack Website Copier? +¯uªº­nÂ÷¶}WinHTTrack Website Copier ¶Ü? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Ãè¹³¼Ò¦¡ -\n\n½Ð¦bURL®Ø¤º¿é¤Jºô§} +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- ¥æ¤¬ºëÆF¼Ò¦¡ (µo°Ý) -\n\n½Ð¦bURL®Ø¤º¿é¤Jºô§} +- File Download Mode -\n\nEnter file address(es) in URL box +- ÀɮפU¸ü¼Ò¦¡ -\n\n½Ð¦bURL®Ø¤º¿é¤JÀɮ׺ô§} +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Ãìµ²´ú¸Õ¼Ò¦¡ -\n\n½Ð¦bURL®Ø¤º¿é¤J§t¦³Ãìµ²ªºWeb­¶ºô§} +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- §ó·s¼Ò¦¡ -\n\n½Ð®Ö¹ïURL®Øùتººô§}, ¦p¦³»Ý­n½ÐÀˬd¿ï¶µ, µM«áÂIÀ»'Next' +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Ä~Äò¼Ò¦¡ (³Q¤¤Â_ªº¾Þ§@) -\n\n½Ð®Ö¹ïURL®Øùتººô§}, ¦p¦³»Ý­n½ÐÀˬd¿ï¶µ, µM«áÂIÀ»'Next' +Log files Path +¤é»xÀɮ׸ô®| +Path +¸ô®| +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Ãìµ²ªí¼Ò¦¡ -\n\n½Ð¦bURL®Ø¤º¿é¤J­¶­±ªººô§}, ­¶­±¤¤§t¦³Ãìµ²ªº¦Cªí, ¦Cªí¤¤©Ò¦³Ãìµ²§¡·|³QÃè¹³ +New project / Import? +·sªº±M®× / ¾É¤J? +Choose criterion +¿ï¨ú±N¶i¦æªº¾Þ§@ªºÃþ«¬ +Maximum link scanning depth +³Ì¤jÃìµ²±½´y²`«× +Enter address(es) here +½Ð¦b¦¹¿é¤Jºô§} +Define additional filtering rules +©w¸qªþ¥[¹LÂo¾¹³W«h +Proxy Name (if needed) +proxyºô§}(¦p­Y»Ý­n) +Proxy Port +proxy³s±µ°ð +Define proxy settings +©w¸qproxy¦øªA¾¹³]©w +Use standard HTTP proxy as FTP proxy +¨Ï¥Î¼Ð·ÇHTTP proxy ´À¥N FTP proxy +Path +¸ô®| +Select Path +¿ï¾Ü¸ô®| +Path +¸ô®| +Select Path +¿ï¾Ü¸ô®| +Quit WinHTTrack Website Copier +Â÷¶}WinHTTrack Website Copier +About WinHTTrack +Ãö©óWinHTTrack +Save current preferences as default values +«O¦s·í«e³]©w¬°¹w³]­È +Click to continue +ÂIÀ»¥HÄ~Äò +Click to define options +ÂIÀ»¥H³]©w¿ï¶µ +Click to add a URL +ÂIÀ»¥H¼W¥[URL +Load URL(s) from text file +±q¤å¥»Àɮפ¤¸ü¤JURL(s) +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack³]©wÀÉ®× (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +ºô§}¦Cªí¤å¥»ÀÉ®× (*.txt)|*.txt|| +File not found! +ÀÉ®×¥¼§ä¨ì! +Do you really want to change the project name/path? +¯uªº­n§ïÅܱM®×ªº¦WºÙ©Î¸ô®|¶Ü? +Load user-default options? +¸ü¤J¨Ï¥ÎªÌ©w¸qªº¹w³]¿ï¶µ¶Ü? +Save user-default options? +¦s¬°¨Ï¥ÎªÌ©w¸qªº¹w³]¿ï¶µ¶Ü? +Reset all default options? +±N©Ò¦³¿ï¶µ«ì´_¨ì³Ìªì³]©w¶Ü? +Welcome to WinHTTrack! +Åwªï¨Ï¥ÎWinHTTrack! +Action: +¾Þ§@: +Max Depth +³Ì¤j²`«× +Maximum external depth: +³Ì¤j¥~³¡Ãìµ²²`«× +Filters (refuse/accept links) : +¹LÂo¾¹ (±Æ°£/¥]§tÃìµ²): +Paths +¸ô®| +Save prefs +«O¦s³]©w +Define.. +©w¸q.. +Set options.. +¿ï¶µ.. +Preferences and mirror options: +¿ï¶µ³]©w: +Project name +±M®×¦WºÙ +Add a URL... +¼W¥[URL.. +Web Addresses: (URL) +Webºô§}: (URL) +Stop WinHTTrack? +°±¤îWinHTTrack? +No log files in %s! +%s ¤ºµL¤é»xÀÉ®×! +Pause Download? +¼È°±¤U¸ü? +Stop the mirroring operation +°±¤îÃè¹³ +Minimize to System Tray +³Ì¤p¤Æ¦Ü¨t²Î¤u¨ã¦C +Click to skip a link or stop parsing +ÂIÀ»¥H¸õ¹L¤@­ÓÃìµ²©Î°±¤î¤ÀªR +Click to skip a link +ÂIÀ»¥H¸õ¹L¤@­ÓÃìµ² +Bytes saved +¤w«O¦sbyts: +Links scanned +¤w±½´yÃìµ²: +Time: +®É¶¡: +Connections: +³s½u: +Running: +¹B¦æ: +Hide +ÁôÂà +Transfer rate +¶Ç¿é³t²v: +SKIP +¸õ¹L +Information +°T®§ +Files written: +¤wÀx¦sÀÉ®×: +Files updated: +¤w§ó·sÀÉ®×: +Errors: +¿ù»~: +In progress: +¶iµ{¤¤: +Follow external links +¸òÀH¥~³¡Ãìµ² +Test all links in pages +´ú¸Õ­¶­±¤¤ªº©Ò¦³Ãìµ² +Try to ferret out all links +ºÉ¥i¯à¬d¥X©Ò¦³Ãìµ² +Download HTML files first (faster) +¥ý¤U¸üHTMLÀÉ®× (§ó§Ö) +Choose local site structure +¿ï¾Ü¥»¦a¯¸ÂIµ²ºc +Set user-defined structure on disk +³]©w¦bºÏºÐ¤Wªº¨Ï¥ÎªÌ¦Û©wµ²ºc +Use a cache for updates and retries +¨Ï¥Î¹w¦s°Ï, ¥Î©ó§ó·s©M­«¸Õ +Do not update zero size or user-erased files +¤£§ó·s¹sbytsÀɮשΥѨϥΪ̧R°£ªºÀÉ®× +Create a Start Page +·s¼W¤@­Ó°_©l­¶­± +Create a word database of all html pages +¬°©Ò¦³html­¶«Ø³y¤@­Ó¤å¦r¼Æ¾Ú®w +Create error logging and report files +·s¼W¿ù»~°O¿ý¤Î³ø§iÀÉ®× +Generate DOS 8-3 filenames ONLY +¶È²£¥ÍDOS¤Uªº8-3ÀɮצW®æ¦¡ +Generate ISO9660 filenames ONLY for CDROM medias +¶È²£¥Í°ßŪ¥úºÐ¥ÎªºISO9660®æ¦¡¤UªºÀɮצW +Do not create HTML error pages +¤£·s¼WHTML¿ù»~­¶­± +Select file types to be saved to disk +¿ï¾Ü±N³Q¦sÀɪºÀÉ®×Ãþ«¬ +Select parsing direction +¿ï¾Ü¤ÀªR¤è¦ì +Select global parsing direction +¿ï¾Ü¥þ¤è¦ì¤ÀªR +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +³]©w¤º³¡Ãìµ²(¤w¤U¸ü)¤Î¥~³¡Ãìµ²(¥¼¤U¸ü)ªºURL§ï¼g³W«h +Max simultaneous connections +³Ì¦h¦P®É³s½u¼Æ +File timeout +ÀÉ®×¶W®É +Cancel all links from host if timeout occurs +­Y¶W®Éµo¥Í, ¨ú®ø©Ò¦³¨Ó¦Û¥D¾÷ªºÃìµ² +Minimum admissible transfer rate +³Ì¤p©Ò¤¹³\ªº¶Ç¿é³t²v +Cancel all links from host if too slow +­Y¶Ç¿é¹LºC, ¨ú®ø©Ò¦³¨Ó¦Û¥D¾÷ªºÃìµ² +Maximum number of retries on non-fatal errors +³Ì¦h­«¸Õ¦¸¼Æ (µo¥Í«D­P©R¿ù»~®É) +Maximum size for any single HTML file +³æ­ÓHTMLÀɮשҤ¹³\ªº³Ì¤jsize +Maximum size for any single non-HTML file +³æ­Ó«DHTMLÀɮשҤ¹³\ªº³Ì¤jsize +Maximum amount of bytes to retrieve from the Web +³Ì¦h©Ò¤¹³\±qWeb±µ¦¬ªºbyts +Make a pause after downloading this amount of bytes +¦b¤U¸ü³o¦ì¤¸²Õ¶q«á¼È°± +Maximum duration time for the mirroring operation +Ãè¹³¹Lµ{©Ò¤¹³\ªº³Ìªø®É¶¡ +Maximum transfer rate +³Ì¤j©Ò­­¨îªº¶Ç¿é³t²v +Maximum connections/seconds (avoid server overload) +¨C¬í³Ì¦h¦P®É³sµ²¼Æ (¨¾¤î¦øªA¾¹¶W¸ü) +Maximum number of links that can be tested (not saved!) +³Ì¤jÃìµ²´ú¸Õ¼Æ(¤£«O¦s!) +Browser identity +ÂsÄý¾¹¨­¥÷ +Comment to be placed in each HTML file +¦b¨C­ÓHTMLÀÉ®×ùؼW¥[ªºª`ÄÀ +Back to starting page +¦^¨ì°_©l­¶­± +Save current preferences as default values +±N·í«e³]©w¦s¬°¹w³]­È +Click to continue +ÂIÀ»¥HÄ~Äò +Click to cancel changes +ÂIÀ»¥H¨ú®ø§ï°Ê +Follow local robots rules on sites +¿í±qºô¯¸ªºrobots³W«h +Links to non-localised external pages will produce error pages +¥¼¥»¦a¤Æªº¥~³¡­¶­±Ãìµ²±N²£¥Í¿ù»~­¶­± +Do not erase obsolete files after update +§ó·s«á¤£§R°£¼o±óªºÀÉ®× +Accept cookies? +¬O§_±µ¦¬cookies? +Check document type when unknown? +¬O§_Àˬd¥¼ª¾ÀÉ®×Ãþ«¬? +Parse java applets to retrieve included files that must be downloaded? +¬O§_¤ÀªRjavaÀ³¥Îµ{§Ç¥H¨ú¦^¨ä¤¤¥]§tªºÀÉ®×? +Store all files in cache instead of HTML only +±N©Ò¦³ÀÉ®×¶È«O¦s¦b¹w¦s°ÏùØ («DHTML) +Log file type (if generated) +¤é»xÀÉ®×Ãþ«¬ (­Y¦³) +Maximum mirroring depth from root address +±qºô§}®Ú³¡¶}©l³Ì¤jªºÃè¹³²`«× +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximum mirroring depth for external/fodbidden addresses (0, that is, none, is the default) +Create a debugging file +·s¼W¤@­Ó°»¿ùÀÉ®× +Use non-standard requests to get round some server bugs +¨Ï¥Î«D¼Ð·Ç­n¨D¥HÁ×§K¬Y¨Ç¦øªA¾¹¿ù»~ +Use old HTTP/1.0 requests (limits engine power!) +¨Ï¥Îªº HTTP/1.0 ­n¨D (±N­­¨îÃè¹³¯à¤O!) +Attempt to limit retransfers through several tricks (file size test..) +¸Õ¥H­Y¤z¤èªk­­¨î¦A¶Ç°e (¦p³q¹LÀɮפj¤p´ú¸Õ) +Write external links without login/password +¼g¤J¥~³¡Ãìµ²®É¤£¥]¬Aµn¤J/±K½X +Write internal links without query string +¼g¤J¤º³¡Ãìµ²®É¤£¥]¬A¬d¸ß¦r¦ê +Get non-HTML files related to a link, eg external .ZIP or pictures +«O¦s©Ò¦³«ü¦V«DHTMLÀɮתºÃìµ², ¨Ò¦p¥~³¡ªºZIPÀɮשιϤùÀÉ®× +Test all links (even forbidden ones) +´ú¸Õ©Ò¦³Ãìµ² (§Y¨Ï³Q¸T¤îªº) +Try to catch all URLs (even in unknown tags/code) +¸Õ¹Ï§ì¨ú©Ò¦³ªºURLs (§Y¨Ï¦s¦b©ó¥¼ª¾ªº¼Ðñ©Î¥N½X¤º) +Get HTML files first! +­º¥ý«O¦sHTMLÀÉ®×! +Structure type (how links are saved) +µ²ºcÃþ«¬ (Ãìµ²«O¦sªº¤è¦¡) +Use a cache for updates +¨Ï¥Î¹w¦s°Ï¥H«K¤é«á§ó·s +Do not re-download locally erased files +¤£¦A¤U¸ü¦b¥»¦a¤w³Q§R°£ªºÀÉ®× +Make an index +·s¼W¤@­Ó index.html ÀÉ®× +Make a word database +«Ø³y¤@­Ó¤å¦r¼Æ¾Ú®w +Log files +¤é»xÀÉ®× +DOS names (8+3) +DOS ÀɮצW®æ¦¡ (8+3) +ISO9660 names (CDROM) +ISO9660®æ¦¡¤UªºÀɮצW(°ßŪ¥úºÐ) +No error pages +°£¥h¿ù»~­¶ +Primary Scan Rule +­º­n±½´y³W«h +Travel mode +¦æ¶i¼Ò¦¡ +Global travel mode +¥þ§½¦æ¶i¼Ò¦¡ +These options should be modified only exceptionally +¥H¤U¿ï¶µ¥u¦b¯S®í±¡ªp¤U­×§ï +Activate Debugging Mode (winhttrack.log) +±Ò°Ê½Õ¸Õ¼Ò¦¡ (·s¼Wwinhttrack.log) +Rewrite links: internal / external +§ï¼gÃìµ² : ¤º³¡/¥~³¡ +Flow control +¬y¶q±±¨î +Limits +­­¨î +Identity +¨­¥÷ +HTML footer +HTML­¶¸} +N# connections +³s½u¼Æ +Abandon host if error +­Yµo¥Í¿ù»~, «h©ñ±ó©M¥D¾÷ªº³s½u +Minimum transfer rate (B/s) +³Ì¤p¶Ç¿é²v (byts/¬í) +Abandon host if too slow +­Y¶Ç¿é¹LºC, «h©ñ±ó©M¥D¾÷ªº³s½u +Configure +°t¸m +Use proxy for ftp transfers +¨Ï¥Îproxy¶i¦æftp¶Ç¿é +TimeOut(s) +¶W®É +Persistent connections (Keep-Alive) +«ùÄò³s±µ(«O«ù±µ³q) +Reduce connection time and type lookup time using persistent connections +«ùÄò³s±µ®ÉÁYµu³s±µ®É¶¡©M¿é¤J«ùÄò³s±µ¬d§ä®É¶¡ +Retries +­«¸Õ +Size limit +¤j¤p­­¨î +Max size of any HTML file (B) +³æ­ÓHTMLÀɮתº³Ì¤jsize +Max size of any non-HTML file +³æ­Ó«DHTMLÀɮתº³Ì¤jsize +Max site size +Ãè¹³¯¸ÂI³Ì¤jsize +Max time +³Ìªø®É¶¡ +Save prefs +«O¦s³]©w +Max transfer rate +³Ì¤j¶Ç¿é³t²v +Follow robots.txt +¿í¦u robots.txt ³W«h +No external pages +¤£²£¥Í¥~³¡­¶­± +Do not purge old files +¤£²M°£¼o±óÀÉ®× +Accept cookies +±µ¦¬cookies +Check document type +ÀˬdÀÉ®×Ãþ«¬ +Parse java files +¤ÀªRjavaÀÉ®× +Store ALL files in cache +«O¦s©Ò¦³Àɮצb¹w¦s°Ï¤º +Tolerant requests (for servers) +¤¹³\¹ï¦øªA¾¹ªº«Dºë½T­n¨D +Update hack (limit re-transfers) +§ó·s®É±Ä¨ú¨ä¥L¤èªk¨¾¤î­«½Æ¤U¸ü +Force old HTTP/1.0 requests (no 1.1) +±j¨î¨Ï¥ÎªºHTTP/1.0­n¨D (¤£±Ä¥Î1.1) +Max connections / seconds +¨C¬í³Ì¦h³s½u¼Æ +Maximum number of links +³Ì¤jÃìµ²¼Æ +Pause after downloading.. +¨C¦¸¤U¸ü«á¼È°±.. +Hide passwords +ÁôÂñK½X +Hide query strings +ÁôÂìd¸ß¦r¦ê +Links +Ãìµ² +Build +ºc³y +Experts Only +°ª¯Å +Flow Control +¬y¶q±±¨î +Limits +­­¨î +Browser ID +ÂsÄý¾¹¼ÐÃÑ +Scan Rules +±½´y³W«h +Spider +·j´M +Log, Index, Cache +¤é»x, ¯Á¤Þ, ¹w¦s°Ï +Proxy +proxy +MIME Types +MIME Ãþ«¬ +Do you really want to quit WinHTTrack Website Copier? +¯uªº­nÂ÷¶}WinHTTrack Website Copier ¶Ü? +Do not connect to a provider (already connected) +¤w³s½u¨ìºô¸ô +Do not use remote access connection +¤£¨Ï¥Î»·ºÝ³s½u +Schedule the mirroring operation +¹w©w¶i¦æÃè¹³ªº®É¶¡ +Quit WinHTTrack Website Copier +Â÷¶}WinHTTrack Website Copier +Back to starting page +¦^¨ì°_©l­¶­± +Click to start! +ÂIÀ»¥H¶}©l! +No saved password for this connection! +¸Ó³s½u¯Ê¤Ö¤w«O¦sªº±K½X! +Can not get remote connection settings +µLªkÀò¨ú»·ºÝ³s½uªº³]©w +Select a connection provider +½Ð¿ï¾Ü¤@­Ó³s½u +Start +¶}©l +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +¦p¦³»Ý­n½Ð­×§ï³s½u°Ñ¼Æ,\nµM«á«ö '§¹¦¨' ¶}©lÃè¹³ +Save settings only, do not launch download now. +¤£¥ß§Y¶i¦æÃè¹³, ¶È«O¦s·í«e³]©w +On hold +±¾°_ +Transfer scheduled for: (hh/mm/ss) +¹w©wÃè¹³¶}©l©ó: (ÂI/¤À/¬í) +Start +¶}©l +Connect to provider (RAS) +³s½u¨ìºô¸ô(»·ºÝ³s½u¦øªA¾¹) +Connect to this provider +¨Ï¥Î¸Ó³s½u: +Disconnect when finished +§¹¦¨®É¤ÁÂ_³s½u +Disconnect modem on completion +§¹¦¨®É¤ÁÂ_¼Æ¾Ú¾÷ +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(¦³¥ô¦óµ{§Ç¿ù»~©Î°ÝÃD½ÐÁpµ¸§Ú­Ì)\r\n\r\n¶}µo:\r\n¬É­±³]­p (Windows): Xavier Roche\r\n¤ÀªR¤ÞÀº: Xavier Roche\r\nJava¤ÀªR¤ÞÀº: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\n·PÁÂ:\r\nDavid Hing Cheong Hung (DAVEHUNG@mtr.com.hk) ´£¨Ñ½Ķ +About WinHTTrack Website Copier +Ãö©óWinHTTrack Website Copier +Please visit our Web page +½Ð³X°Ý§Ú­Ìªº­º­¶ +Wizard query +ºëÆF´£°Ý +Your answer: +§Aªºµª®×: +Link detected.. +ÀË´ú¨ìÃìµ².. +Choose a rule +½Ð¿ï¾Ü³W«h +Ignore this link +©¿²¤¦¹Ãìµ² +Ignore directory +©¿²¤¦¹¥Ø¿ý +Ignore domain +©¿²¤¦¹ºô°ì¦WºÙ +Catch this page only +¶È¤U¸ü¦¹­¶ +Mirror site +Ãè¹³¯¸ÂI +Mirror domain +Ãè¹³ºô°ì¦WºÙ +Ignore all +¥þ³¡¥G²¤ +Wizard query +ºëÆF´£°Ý +NO +§_ +File +ÀÉ®× +Options +¿ï¶µ +Log +¤é»x +Window +µøµ¡ +Help +»¡©ú +Pause transfer +¼È°±¶Ç¿é +Exit +Â÷¶} +Modify options +­×§ï¿ï¶µ +View log +¬d¬Ý¤é»x +View error log +¬d¬Ý¿ù»~¤é»x +View file transfers +¬d¬ÝÀÉ®×¶Ç¿é +Hide +ÁôÂà +About WinHTTrack Website Copier +Ãö©óWinHTTrack Website Copier +Check program updates... +Àˬdª©¥»§ó·s... +&Toolbar +¤u¨ãÄæ +&Status Bar +ª¬ºAÄæ +S&plit +¤À³Î +File +ÀÉ®× +Preferences +³]©w +Mirror +Ãè¹³ +Log +¤é»x +Window +µøµ¡ +Help +»¡©ú +Exit +Â÷¶} +Load default options +¸ü¤J¦Û©w¹w³]¿ï¶µ +Save default options +¦s¬°¦Û©w¹w³]¿ï¶µ +Reset to default options +«ì´_­ì©l³]©w +Load options... +¸ü¤J¿ï¶µ... +Save options as... +«O¦s¿ï¶µ... +Language preference... +¬É­±»y¨¥³]©w... +Contents... +¤º®e... +About WinHTTrack... +Ãö©óWinHTTrack... +New project\tCtrl+N +·sªº±M®×\tCtrl+N +&Open...\tCtrl+O +&¥´¶}...\tCtrl+O +&Save\tCtrl+S +&«O¦s\tCtrl+S +Save &As... +«O¦s¿ï¶µ... +&Delete... +&§R°£... +&Browse sites... +&ÂsÄý¤wÃè¹³¯¸ÂI... +User-defined structure +¨Ï¥ÎªÌ¦Û©wµ²ºc +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\t¤£§t°ÆÀɦWªºÀɮצW(¦p: image)\r\n%N\t§t¦³°ÆÀɦWªºÀɮצW(¦p: image.gif)\r\n%t\t¶ÈÂX®i¦W(¦p: gif)\r\n%p\t¸ô®|[µL§ÀÀH'/'] (¦p: /someimages)\r\n%h\t¥D¾÷¦W(¦p: www.someweb.com)\r\n%M\tMD5 URL (128¦ì, 32 ascii byts)\r\n%Q\tMD5 query string (128¦ì, 32 ascii byts)\r\n%q\tMD5 small query string (16¦ì, 4 ascii byts)\r\n\r\n%s?\tµuÀɮצW(¦p: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +¨Ò¦p:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +proxy³]©w +Proxy address: +proxyºô§}: +Proxy port: +proxy³s±µ°ð: +Authentication (only if needed) +¨­¥÷Åçµý (¦p­Y»Ý­n) +Login +µn¿ý +Password +±K½X +Enter proxy address here +¦b¦¹¿é¤Jproxyºô§} +Enter proxy port here +¦b¦¹¿é¤Jproxy³s±µ°ð +Enter proxy login +¿é¤Jproxy¦øªA¾¹µn¿ý°T®§ +Enter proxy password +¿é¤Jproxy¦øªA¾¹©Ò»Ý±K½X +Enter project name here +¦b¦¹¿é¤J±M®×¦W +Enter saving path here +¦b¦¹¿é¤J«O¦s¸ô®| +Select existing project to update +½Ð¿ï¾Ü¤@­Ó¤w¦³ªº±M®×¥H§ó·s +Click here to select path +ÂIÀ»¦¹³B¥H¿ï¾Ü¸ô®| +HTTrack Project Wizard... +HTTrack ±M®×ºëÆF... +New project name: +·s±M®×ªº¦WºÙ: +Existing project name: +²{¦³±M®×ªº¦WºÙ: +Project name: +±M®×¦WºÙ: +Base path: +Á`¦sÀɸô®|: +C:\\My Web Sites +C:\\My Websites +Type a new project name, \r\nor select existing project to update/resume +½ÐÁä¤J¤@­Ó·sªº±M®×¦W, \r\n©Î¿ï¾Ü¤w¦³±M®×¥H§ó·s©ÎÄ~Äò +New project +·sªº±M®× +Insert URL +´¡¤JURL +URL: +URLºô§}: +Authentication (only if needed) +¨­¥÷Åçµý (¦p­Y»Ý­n) +Login +µn¿ý +Password +±K½X +Forms or complex links: +ªí®æ©Î´_ÂøÃìµ²: +Capture URL... +§ì¨úURLºô§}... +Enter URL address(es) here +½Ð¦b¦¹¿é¤JURLºô§} +Enter site login +½Ð¿é¤J¯¸ÂIµn¿ý¦W +Enter site password +½Ð¿é¤J¯¸ÂIµn¿ý±K½X +Use this capture tool for links that can only be accessed through forms or javascript code +¨Ï¥Î¦¹¤u¨ã§ì¨ú¥u¯à³q¹Lªí®æ©Îjava¥N½X«ô³X¹LªºÃìµ² +Choose language according to preference +½Ð®Ú¾Ú­Ó¤H³ß¦n¿ï¾Ü¬É­±»y¨¥ +Catch URL! +§ì¨úURLºô§}! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +½Ð¥ý¼È®É±NÂsÄý¾¹ªºproxy³]¬°¦p¤U¼Æ­È(½Æ»s/¶K¤Wproxyºô§}©M³s±µ°ð).\nµM«áÂIÀ»ÂsÄý¾¹­¶­±¤Wªí®æªºSUBMIT«ö¶s, ©ÎÂIÀ»·Q­n§ì¨úªºÃìµ² +This will send the desired link from your browser to WinHTTrack. +©Ò»ÝªºÃìµ²±N±qÂsÄý¾¹³Q°e¦ÜWinHTTrack. +ABORT +©ñ±ó +Copy/Paste the temporary proxy parameters here +¦b¦¹½Æ»s/¶K¤W¼È®Éªºproxy°Ñ¼Æ +Cancel +¨ú®ø +Unable to find Help files! +µLªk§ä¨ì»¡©úÀÉ®×! +Unable to save parameters! +µLªk«O¦s°Ñ¼Æ! +Please drag only one folder at a time +½Ð¨C¦¸¥u©ì¦²¤@­ÓÀÉ®×§¨ +Please drag only folders, not files +½Ð¤£­n©ì¦²ÀÉ®×, ¥u©ì¦²ÀÉ®×§¨ +Please drag folders only +½Ð¥u©ì¦²ÀÉ®×§¨ +Select user-defined structure? +¿ï¾Ü¨Ï¥ÎªÌ¦Û©wµ²ºc¶Ü? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +½Ð½T«O¨Ï¥ÎªÌ©w¸qªº¦r¦êªº¥¿½T©Ê,\n§_«h²£¥ÍÀɮצW®É¥i¯à¥X¿ù! +Do you really want to use a user-defined structure? +¯uªº­n¨Ï¥Î¨Ï¥ÎªÌ¦Û©wµ²ºc¶Ü? +Too manu URLs, cannot handle so many links!! +¹L¦hURLºô§}, µLªk³B²z!! +Not enough memory, fatal internal error.. +°O¾ÐÅ餣¨¬, µo¥Í­P©Rªº¤º³¡¿ù»~! +Unknown operation! +¥¼ª¾¾Þ§@! +Add this URL?\r\n +¼W¥[¦¹URL? +Warning: main process is still not responding, cannot add URL(s).. +ĵ§i: ¥D¶iµ{¥¼¦³¦^À³, ¤£¯à¼W¥[URL(s).. +Type/MIME associations +Ãþ«¬/MIME Ápô +File types: +ÀÉ®×Ãþ«¬: +MIME identity: +MIME identity +Select or modify your file type(s) here +¦b³o¸Ì¿ï¾Ü©Î­×§ï§AªºÀÉ®×Ãþ«¬ +Select or modify your MIME type(s) here +¦b³o¸Ì¿ï¾Ü©Î­×§ï§Aªº MIME Ãþ«¬ +Go up +©¹¤W +Go down +©¹¤U +File download information +ÀɮפU¸ü°T®§ +Freeze Window +Âê©wµøµ¡°T®§ +More information: +§ó¦h°T®§: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Åwªï¨Ï¥Î WinHTTrack ºô¯¸«þ¨©¾¹!\n\n½ÐÂIÀ»'NEXT'«ö¶s¥h\n\n-¶}©l¤@­Ó·s±M®×\n- ©Î Ä~Äò¤@­Ó¥¼§¹¦¨ªº¤U¸ü +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +ÀɮצW¤¤¥]§t°ÆÀɦW:\nÀɮצW¤¤¥]§t:\n¦¹ÀɮצW:\nÀÉ®×§¨¦W¤¤¥]§t:\n¦¹ÀÉ®×§¨¦W:\n¦¹ºô°ì¦WºÙ:\nºô°ì¦WºÙ¤¤¥]§t:\n¦¹¥D¾÷:\nÃìµ²¤¤¥]§t:\n¦¹Ãìµ²:\n©Ò¦³Ãìµ² +Show all\nHide debug\nHide infos\nHide debug and infos +Åã¥Ü¥þ³¡¤º®e\nÁôÂÿù»~\nÁôÂîø®§\nÁôÂÿù»~©M®ø®§ +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +¯¸ÂI­ì¦³µ²ºc(¹w³])\nhtmlÀɮצbweb/, ¹Ï¤ù©M¨ä¥LÀɮצbweb/images/\nhtmlÀɮצbweb/html, ¹Ï¤ù©M¨ä¥LÀɮצbweb/images\nhtmlÀɮצbweb/, ¹Ï¤ù©M¨ä¥LÀɮפ]¦bweb/\nhtmlÀɮצbweb/, ¹Ï¤ù©M¨ä¥LÀɮצbweb/xxx, xxx¬°ÀÉ®×°ÆÀɦW\nhtmlÀɮצbweb/html, ¹Ï¤ù©M¨ä¥LÀɮצbweb/xxx\n¯¸ÂI­ì¦³µ²ºc(¥h±¼www.domain.xxx/)\nhtmlÀɮצbsite_name/, ¹Ï¤ù©M¨ä¥LÀɮצbsite_name/images/\nhtmlÀɮצbsite_name/html, ¹Ï¤ù©M¨ä¥LÀɮצbsite_name/images\nhtmlÀɮצbsite_name/, ¹Ï¤ù©M¨ä¥LÀɮפ]¦bsite_name/\nhtmlÀɮצbsite_name/, ¹Ï¤ù©M¨ä¥LÀɮצbsite_name/xxx\nhtmlÀɮצbsite_name/html, ¹Ï¤ù©M¨ä¥LÀɮצbsite_name/xxx\n©Ò¦³Àɮצbweb/, ÀɮצW¥ô·N²£¥Í\n©Ò¦³Àɮצbsite_name/, ÀɮצW¥ô·N²£¥Í\n¨Ï¥ÎªÌ¦Û©wµ²ºc.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +¥u°µ±½´y\n¥u«O¦shtmlÀÉ®×\n¥u«O¦s«DhtmlÀÉ®×\n«O¦s©Ò¦³ÀÉ®× (¹w³])\n¥ý«O¦shtmlÀÉ®× +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +°±¯d©ó¦P¤@¥Ø¿ý\n¤¹³\©¹¤U¶i¦æ (¹w³])\n¤¹³\©¹¤W¶i¦æ\n¤W¤U³£¤¹³\¶i¦æ +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +°±¯d©ó¦P¤@ºô§} (¹w³])\n°±¯d©ó¦P¤@ºô°ì¦WºÙ\n°±¯d©ó¦P¤@³»¯Åºô°ì¦WºÙ\n¥ô¦óºô¸ôºô§} +Never\nIf unknown (except /)\nIf unknown +±q¤£\n¦pªG¥¼ª¾ (/ °£¥~)\n¦pªG¥¼ª¾ +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +¤£¿í¦urobots.txt\n¿í¦u¹LÂo¾¹Àu¥ý©órobots.txt\n§¹¥þ¿í¦urobots.txt +normal\nextended\ndebug +´¶³q¤é»x\nÂX¥R¤é»x\n°»¿ù¤é»x +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +¤U¸üºô¯¸\n¤U¸üºô¯¸ + ´£°Ý\n¤U¸ü­Ó§OÀÉ®×\n¤U¸ü­¶­±¤¤ªº©Ò¦³¯¸ÂI (¦h­ÓÃè¹³)\n´ú¸Õ­¶­±¤¤ªºÃìµ² (®Ññ´ú¸Õ)\n* Ä~Äò³Q¤¤Â_ªºÃè¹³\n* §ó·s¤w¦³Ãè¹³ +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +¬Û¹ï URI / µ´¹ï URL (¹w³])\nµ´¹ï URL / µ´¹ï URL\nµ´¹ï URI / µ´¹ï URL\n­ì¥»ªº URL / ­ì¥»ªº URL +Open Source offline browser +¶}©ñ­ì©lÀÉÂ÷½u¾\Äý¾¹ +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +ºô¯¸«þ¨©¾¹/Â÷½u¾\Äý¾¹,§K¶O«þ¨©»·ºÝºô¯¸¨ì§Aªº¹q¸£ +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, Â÷½u¾\Äý¾¹ +URL list (.txt) +URL ªí (.txt) +Previous +¤W¤@¨B +Next +¤U¤@¨B +URLs +URLs +Warning +ĵ§i +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +§Aªº¾\Äý¾¹²{®É¤£¤ä´© javascript.¦p»Ý§ó¨Î®ÄªG½Ð¥Î¤ä´© javascript ªº¾\Äý¾¹ +Thank you +¦hÁ +You can now close this window +§A²{¦b¥i¥HÃö³¬³oµøµ¡ +Server terminated +¦øªA¾¹¤w²×¤î +A fatal error has occured during this mirror +³oÃè¹³µo¥Í¤F¤£¥i¦^´_ªº¿ù»~ diff --git a/lang/Chinese-Simplified.txt b/lang/Chinese-Simplified.txt new file mode 100755 index 0000000..2aadb0c --- /dev/null +++ b/lang/Chinese-Simplified.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Chinese-Simplified +LANGUAGE_FILE +Chinese-Simplified +LANGUAGE_ISO +cs +LANGUAGE_AUTHOR +Brook Qin (brookqwr at sina.com) \r\n +LANGUAGE_CHARSET +gb2312 +OK +È·¶¨ +Cancel +È¡Ïû +Exit +Í˳ö +Close +¹Ø±Õ +Cancel changes +È¡Ïû¸ü¸Ä +Click to confirm +µã»÷ÒÔÈ·ÈÏ +Click to get help! +µã»÷ÒÔ»ñÈ¡°ïÖú! +Click to return to previous screen +µã»÷ÒÔ·µ»ØÇ°Ò»ÆÁÄ» +Click to go to next screen +µã»÷ÒÔµ½´ïÏÂÒ»ÆÁÄ» +Hide password +Òþ²Ø¿ÚÁî +Save project +±£´æ¹¤³Ì +Close current project? +ÊÇ·ñ¹Ø±Õµ±Ç°¹¤³Ì? +Delete this project? +ɾ³ý´Ë¹¤³Ì? +Delete empty project %s? +ɾ³ý¿ÕµÄ¹¤³Ì %s? +Action not yet implemented +²Ù×÷ÈÔδִÐÐ +Error deleting this project +ɾ³ý¸Ã¹¤³Ìʱ³ö´í +Select a rule for the filter +Ϊ¹ýÂËÆ÷ѡȡ¹æÔò +Enter keywords for the filter +Ϊ¹ýÂËÆ÷ÊäÈë¹Ø¼ü´Ê +Cancel +È¡Ïû +Add this rule +Ìí¼Ó¸Ã¹æÔò +Please enter one or several keyword(s) for the rule +ÇëΪ´Ë¹æÔòÊäÈëÒ»ÖÁ¼¸¸ö¹Ø¼ü´Ê +Add Scan Rule +Ìí¼ÓɨÃè¹æÔò +Criterion +×¼Ôò +String +×Ö·û´® +Add +Ìí¼Ó +Scan Rules +ɨÃè¹æÔò +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +ʹÓÃͨÅä·ûÒÔ°üº¬»òÅųýURLs»òÁ´½Ó.\n¶à¸ö¹æ¶¨É¨Ãè¹æÔòµÄ×Ö·û´®¿ÉдÔÚͬһÐÐ.\nʹÓÿոñ¼ü×÷Ϊ·Ö¸ô·û.\n\nʾÀý: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +ÅųýÁ´½Ó +Include link(s) +°üº¬Á´½Ó +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Ìáʾ: Óû°üº¬Ä³ÓòÃûϵÄËùÓÐGIFÎļþ, ¿ÉÊäÈë +www.someweb.com/*.gif. \n(+*.gif / -*.gif ½«°üº¬/ÅųýÀ´×ÔËùÓÐÕ¾µãµÄGIFÎļþ) +Save prefs +±£´æÉèÖà +Matching links will be excluded: +Æ¥ÅäµÄÁ´½Ó½«±»Åųý: +Matching links will be included: +Æ¥ÅäµÄÁ´½Ó½«±»°üº¬: +Example: +ʾÀý: +gif\r\nWill match all GIF files +gif\r\n½«Æ¥ÅäËùÓÐGIFÎļþ +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\n½«²éÕÒµ½ËùÓаüº¬'blue' µÄÎļþ, ÖîÈç 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\n½«Æ¥ÅäÎļþ 'bigfile.mov', µ«²»°üÀ¨ 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\n½«²éÕÒµ½Îļþ¼ÐÃûÄÚ°üº¬'cgi' µÄÁ´½Ó, ÖîÈç /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\n½«²éÕÒµ½Îļþ¼ÐÃûÄÚ°üº¬'cgi-bin' µÄÁ´½Ó (µ«cgi-bin-2 ³ýÍâ) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\n½«²éÕÒµ½°üº¬ÖîÈçwww.someweb.com, private.someweb.com µÈµÄÁ´½Ó +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\n½«²éÕÒµ½°üº¬ÖîÈçwww.someweb.com, www.someweb.edu, private.someweb.otherweb.com µÈµÄÁ´½Ó +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\n½«²éÕÒµ½°üº¬'www.someweb.com' µÄÁ´½Ó (µ«²»°üÀ¨private.someweb.com/ µÈ) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\n½«²éÕÒµ½ÈκÎÖîÈçÒÔϵÄÁ´½Ó: www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html µÈ +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\n½«½ö²éÕÒµ½'www.test.com/test/someweb.html' Îļþ. ×¢ÒâÇëÊäÈëÍêÕûµÄ·¾¶. +All links will match +ËùÓеÄÁ´½Ó¶¼½«Æ¥Åä +Add exclusion filter +Ϊ¹ýÂËÆ÷Ìí¼ÓÅųý¹æÔò +Add inclusion filter +Ϊ¹ýÂËÆ÷Ìí¼Ó°üº¬¹æÔò +Existing filters +ÒѶ¨ÖƵĹýÂË×Ö·û´® +Cancel changes +È¡Ïû¸ü¸Ä +Save current preferences as default values +½«µ±Ç°ÉèÖôæÎªÈ±Ê¡Öµ +Click to confirm +µã»÷ÒÔÈ·ÈÏ +No log files in %s! +%s ÄÚÎÞÈÕÖ¾Îļþ! +No 'index.html' file in %s! +%s ÄÚÎÞ'index.html' Îļþ! +Click to quit WinHTTrack Website Copier +µã»÷ÒÔÍ˳öWinHTTrack Website Copier +View log files +²ì¿´ÈÕÖ¾Îļþ +Browse HTML start page +ä¯ÀÀ HTML Æðʼҳ +End of mirror +¾µÏñ½áÊø +View log files +²ì¿´ÈÕÖ¾Îļþ +Browse Mirrored Website +ä¯ÀÀÒѾµÏñµÄÍøÕ¾ +New project... +ÐµĹ¤³Ì... +View error and warning reports +²ì¿´´íÎó¼°¾¯¸æ»ã±¨ +View report +²ì¿´»ã±¨ +Close the log file window +¹Ø±ÕÈÕÖ¾Îļþ´°¿Ú +Info type: +ÐÅÏ¢ÀàÐÍ: +Errors +´íÎó +Infos +ÐÅÏ¢ +Find +²éÕÒ +Find a word +²éÕÒÒ»¸öµ¥´Ê +Info log file +ÐÅÏ¢ÈÕÖ¾Îļþ +Warning/Errors log file +¾¯¸æ/´íÎóÈÕÖ¾Îļþ +Unable to initialize the OLE system +ÎÞ·¨³õʼ»¯OLEϵͳ +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack δÄÜÔÚÖ¸¶¨Îļþ¼ÐÄÚÕÒµ½±»ÖжϵÄÎļþÏÂÔØÔ¤´æÇø! +Could not connect to provider +ÎÞ·¨Á¬½Óµ½ÍøÂç +receive +½ÓÊÕ +request +ÇëÇó +connect +Á¬½Ó +search +ѰÕÒ +ready +¾ÍÐ÷ +error +´íÎó +Receiving files.. +½ÓÊÕÎļþ.. +Parsing HTML file.. +½âÎöHTMLÎļþ.. +Purging files.. +Çå³ýÎļþ.. +Loading cache in progress.. + +Parsing HTML file (testing links).. +½âÎöHTMLÎļþ (²âÊÔÁ´½Ó).. +Pause - Toggle [Mirror]/[Pause download] to resume operation +¾µÏñÔÝÍ£ - Çл»[¾µÏñ]/[ÔÝÍ£ÏÂÔØ]ÒÔ¼ÌÐø²Ù×÷ +Finishing pending transfers - Select [Cancel] to stop now! +½áÊø½øÐÐÖеĴ«Êä - Ñ¡Ôñ[È¡Ïû]ÒÔÍ£Ö¹ +scanning +ɨÃè +Waiting for scheduled time.. +µÈ´ýÔ¤¶¨µÄʱ¼ä.. +Connecting to provider +ÕýÔÚÁ¬½ÓÍøÂç +[%d seconds] to go before start of operation +Àë²Ù×÷¿ªÊ¼»¹ÓÐ[%d Ãë] +Site mirroring in progress [%s, %s bytes] +Õ¾µã¾µÏñ½øÐÐÖÐ [%s, %s ×Ö½Ú] +Site mirroring finished! +Õ¾µã¾µÏñÍê±Ï! +A problem occured during the mirroring operation\n +¾µÏñʱ·¢Éú´íÎó\n +\nDuring:\n +\n·¢ÉúÔÚÒÔÏÂÆÚ¼ä:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nÈçÓÐÐèÒªÇë¿´ÈÕÖ¾Îļþ.\n\nµã»÷'½áÊø'ÒÔÍ˳öWinHTTrack Website Copier.\n\nллʹÓÃWinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +¾µÏñÍê³É.\nµã»÷'È·¶¨'ÒÔÍ˳öWinHTTrack.\nÈçÓÐÐèÒªÇë¿´ÈÕÖ¾Îļþ, ÒÔÈ·±£ÍòÎÞһʧ.\n\nллʹÓÃWinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * ¾µÏñ±»È¡Ïû! * *\r\nµ±Ç°ÁÙʱµÄÔ¤´æÇøÎªÈÕºó¸üÐÂËùÐè, ½ö´æÓд˴α»ÖжϵľµÏñÆÚ¼äÄÚÏÂÔØµÄÊý¾Ý.\r\n¶øÔ­ÓÐÔ¤´æÇø¿ÉÄÜ»á´æÓиüÍêÕûµÄÄÚÈÝ; Èç¹ûÄã²»ÏëʧȥԭÓеÄÊý¾Ý, Çë»Ö¸´Ö®, ²¢É¾³ýµ±Ç°Ô¤´æÇø.\r\n[×¢: Óûɾ³ýµ±Ç°Ô¤´æÇø, ½öÐèɾ³ýÒÔÏÂÎļþ: hts-cache/new.*]\r\n\r\nÄãÊÇ·ñ¿Ï¶¨Ô­ÓÐÔ¤´æÇø´æÓиüÍêÕûµÄÄÚÈÝ, ²¢Ï£Íû»Ö¸´Ö®? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ¾µÏñ³ö´í!* *\r\nHTTrack¼ì²âµ½µ±Ç°¾µÏñδ´¢´æÈκÎÊý¾Ý. ÈôʹÓõĸüÐÂģʽ, Ôòǰһ´Î¾µÏñÒѱ»»Ö¸´.\r\n=> Ô­Òò: Ê×ҳδÄÜÕÒµ½, »ò·¢ÉúÁ¬½Ó´íÎó.\r\nÇëÈ·¶¨Óû¾µÏñµÄÍøÕ¾´æÔÚ, ²¢/»ò¼ì²é´úÀíÉèÖÃ! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nÌáʾ: µã»÷ [²ì¿´ÈÕÖ¾Îļþ] ÒԲ쿴¾¯¸æ»ò´íÎóÏûÏ¢ +Error deleting a hts-cache/new.* file, please do it manually +ɾ³ýhts-cache/new.* Îļþʱ³ö´í, ÇëÊÖ¹¤É¾³ý +Do you really want to quit WinHTTrack Website Copier? +ÕæµÄÒªÍ˳öWinHTTrack Website Copier Âð? +- Mirroring Mode -\n\nEnter address(es) in URL box +- ¾µÏñģʽ -\n\nÇëÔÚURL¿òÄÚÊäÈëµØÖ· +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- ½»»¥Ïòµ¼Ä£Ê½ (·¢ÎÊ) -\n\nÇëÔÚURL¿òÄÚÊäÈëµØÖ· +- File Download Mode -\n\nEnter file address(es) in URL box +- ÎļþÏÂÔØÄ£Ê½ -\n\nÇëÔÚURL¿òÄÚÊäÈëÎļþµØÖ· +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Á´½Ó²âÊÔģʽ -\n\nÇëÔÚURL¿òÄÚÊäÈ뺬ÓÐÁ´½ÓµÄWebÒ³µØÖ· +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- ¸üÐÂģʽ -\n\nÇëºË¶ÔURL¿òÀïµÄµØÖ·, ÈçÓÐÐèÒªÇë¼ì²éÑ¡Ïî, È»ºóµã»÷'Next' +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- ¼ÌÐøÄ£Ê½ (±»ÖжϵIJÙ×÷) -\n\nÇëºË¶ÔURL¿òÀïµÄµØÖ·, ÈçÓÐÐèÒªÇë¼ì²éÑ¡Ïî, È»ºóµã»÷'Next' +Log files Path +ÈÕÖ¾Îļþ·¾¶ +Path +·¾¶ +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Á´½Ó±íģʽ -\n\nÇëÔÚURL¿òÄÚÊäÈëÒ³ÃæµÄµØÖ·, Ò³ÃæÖк¬ÓÐÁ´½ÓµÄÁбí, ÁбíÖÐËùÓÐÁ´½Ó¾ù»á±»¾µÏñ +New project / Import? +ÐµĹ¤³Ì / µ¼Èë? +Choose criterion +ѡȡ½«½øÐеIJÙ×÷µÄÀàÐÍ +Maximum link scanning depth +×î´óÁ´½ÓɨÃèÉî¶È +Enter address(es) here +ÇëÔÚ´ËÊäÈëµØÖ· +Define additional filtering rules +¶¨Ò帽¼Ó¹ýÂËÆ÷¹æÔò +Proxy Name (if needed) +´úÀíµØÖ·(ÈçÈôÐèÒª) +Proxy Port +´úÀí¶Ë¿Ú +Define proxy settings +¶¨Òå´úÀí·þÎñÆ÷ÉèÖà +Use standard HTTP proxy as FTP proxy +ʹÓñê×¼HTTP´úÀíÌæ´úFTP´úÀí +Path +·¾¶ +Select Path +Ñ¡Ôñ·¾¶ +Path +·¾¶ +Select Path +Ñ¡Ôñ·¾¶ +Quit WinHTTrack Website Copier +Í˳öWinHTTrack Website Copier +About WinHTTrack +¹ØÓÚWinHTTrack +Save current preferences as default values +±£´æµ±Ç°ÉèÖÃΪȱʡֵ +Click to continue +µã»÷ÒÔ¼ÌÐø +Click to define options +µã»÷ÒÔÉ趨ѡÏî +Click to add a URL +µã»÷ÒÔÌí¼ÓURL +Load URL(s) from text file +´ÓÎı¾ÎļþÖÐÔØÈëURL(s) +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrackÉèÖÃÎļþ (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +µØÖ·ÁбíÎı¾Îļþ (*.txt)|*.txt|| +File not found! +ÎļþδÕÒµ½! +Do you really want to change the project name/path? +ÕæµÄÒª¸Ä±ä¹¤³ÌµÄÃû³Æ»ò·¾¶Âð? +Load user-default options? +ÔØÈëÓû§¶¨ÒåµÄȱʡѡÏîÖµÂð? +Save user-default options? +´æÎªÓû§¶¨ÒåµÄȱʡѡÏîÖµÂð? +Reset all default options? +½«ËùÓÐÑ¡Ïî»Ö¸´µ½×î³õÉ趨Âð? +Welcome to WinHTTrack! +»¶Ó­Ê¹ÓÃWinHTTrack! +Action: +²Ù×÷: +Max Depth +×î´óÉî¶È +Maximum external depth: +×î´óÍⲿÁ´½ÓÉî¶È +Filters (refuse/accept links) : +¹ýÂËÆ÷ (Åųý/°üº¬Á´½Ó): +Paths +·¾¶ +Save prefs +±£´æÉèÖà +Define.. +¶¨Òå.. +Set options.. +Ñ¡Ïî.. +Preferences and mirror options: +Ñ¡ÏîÉ趨: +Project name +¹¤³ÌÃû³Æ +Add a URL... +Ìí¼ÓURL.. +Web Addresses: (URL) +WebµØÖ·: (URL) +Stop WinHTTrack? +Í£Ö¹WinHTTrack? +No log files in %s! +%s ÄÚÎÞÈÕÖ¾Îļþ! +Pause Download? +ÔÝÍ£ÏÂÔØ? +Stop the mirroring operation +Í£Ö¹¾µÏñ +Minimize to System Tray +×îС»¯ÖÁϵͳÍÐÅÌÇø +Click to skip a link or stop parsing +µã»÷ÒÔÌø¹ýÒ»¸öÁ´½Ó»òÍ£Ö¹½âÎö +Click to skip a link +µã»÷ÒÔÌø¹ýÒ»¸öÁ´½Ó +Bytes saved +Òѱ£´æ×Ö½Ú: +Links scanned +ÒÑɨÃèÁ´½Ó: +Time: +ʱ¼ä: +Connections: +Á¬½Ó: +Running: +ÔËÐÐ: +Hide +Òþ²Ø +Transfer rate +´«ÊäËÙÂÊ: +SKIP +Ìø¹ý +Information +ÐÅÏ¢ +Files written: +ÒÑ´¢´æÎļþ: +Files updated: +ÒѸüÐÂÎļþ: +Errors: +´íÎó: +In progress: +½ø³ÌÖÐ: +Follow external links +×·ËæÍⲿÁ´½Ó +Test all links in pages +²âÊÔÒ³ÃæÖеÄËùÓÐÁ´½Ó +Try to ferret out all links +¾¡¿ÉÄܲé³öËùÓÐÁ´½Ó +Download HTML files first (faster) +ÏÈÏÂÔØHTMLÎļþ (¸ü¿ì) +Choose local site structure +Ñ¡Ôñ±¾µØÕ¾µã½á¹¹ +Set user-defined structure on disk +ÉèÖÃÔÚ´ÅÅÌÉϵÄÓû§×Ô¶¨Òå½á¹¹ +Use a cache for updates and retries +ʹÓÃÔ¤´æÇø, ÓÃÓÚ¸üкÍÖØÊÔ +Do not update zero size or user-erased files +²»¸üÐÂÁã×Ö½ÚÎļþ»òÓÉÓû§É¾³ýµÄÎļþ +Create a Start Page +´´½¨Ò»¸öÆðÊ¼Ò³Ãæ +Create a word database of all html pages +¸ù¾ÝÍøÒ³Ê¹ÓÃÓïÑÔ´´½¨´Ê»ã¿âÎļþ +Create error logging and report files +´´½¨´íÎó¼Ç¼¼°»ã±¨Îļþ +Generate DOS 8-3 filenames ONLY +½öÉú³ÉDOSϵÄ8-3ÎļþÃû¸ñʽ +Generate ISO9660 filenames ONLY for CDROM medias + +Do not create HTML error pages +²»´´½¨HTML´íÎóÒ³Ãæ +Select file types to be saved to disk +Ñ¡Ôñ½«±»´æÅ̵ÄÎļþÀàÐÍ +Select parsing direction +Ñ¡Ôñ½âÎö·½Ïò +Select global parsing direction +Ñ¡ÔñÈ«¾Ö½âÎö·½Ïò +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +É趨¶ÔÄÚ²¿Á´½Ó(±»ÏÂÔØÁ´½Ó)ºÍÍⲿÁ´½Ó(²»±»ÏÂÔØÁ´½Ó)µØÖ·¸üÖõĹæÔò +Max simultaneous connections +×î¶à²¢·¢Á¬½ÓÊý +File timeout +Îļþ³¬Ê± +Cancel all links from host if timeout occurs +Èô³¬Ê±·¢Éú, È¡ÏûËùÓÐÀ´×ÔÖ÷»úµÄÁ´½Ó +Minimum admissible transfer rate +×îСËùÔÊÐíµÄ´«ÊäËÙÂÊ +Cancel all links from host if too slow +Èô´«Êä¹ýÂý, È¡ÏûËùÓÐÀ´×ÔÖ÷»úµÄÁ´½Ó +Maximum number of retries on non-fatal errors +×î¶àÖØÊÔ´ÎÊý (·¢Éú·ÇÖÂÃü´íÎóʱ) +Maximum size for any single HTML file +µ¥¸öHTMLÎļþËùÔÊÐíµÄ×î´ó³ß´ç +Maximum size for any single non-HTML file +µ¥¸ö·ÇHTMLÎļþËùÔÊÐíµÄ×î´ó³ß´ç +Maximum amount of bytes to retrieve from the Web +×î¶àËùÔÊÐí´ÓWeb½ÓÊÕµÄ×Ö½ÚÊý +Make a pause after downloading this amount of bytes +ÏÂÔØÍêÖ¸¶¨µÄ×Ö½ÚÊýºóÔÝÍ£ +Maximum duration time for the mirroring operation +¾µÏñ¹ý³ÌËùÔÊÐíµÄ×ʱ¼ä +Maximum transfer rate +×î´óËùÏÞÖÆµÄ´«ÊäËÙÂÊ +Maximum connections/seconds (avoid server overload) +ÿÃë×î¶à²¢·¢Á¬½áÊý (·ÀÖ¹·þÎñÆ÷³¬ÔØ) +Maximum number of links that can be tested (not saved!) +ÔÊÐí¼ì²âµÄ×î¶àÁ´½ÓÊýÄ¿(²¢·Ç±£´æ!) +Browser identity +ä¯ÀÀÆ÷Éí·Ý +Comment to be placed in each HTML file +ÔÚÿ¸öHTMLÎļþÀïÌí¼ÓµÄ×¢ÊÍ +Back to starting page +»Øµ½ÆðÊ¼Ò³Ãæ +Save current preferences as default values +½«µ±Ç°ÉèÖôæÎªÈ±Ê¡Öµ +Click to continue +µã»÷ÒÔ¼ÌÐø +Click to cancel changes +µã»÷ÒÔÈ¡Ïû¸Ä¶¯ +Follow local robots rules on sites +×ñ´ÓÍøÕ¾µÄrobots¹æÔò +Links to non-localised external pages will produce error pages +δ±¾µØ»¯µÄÍâ²¿Ò³ÃæÁ´½Ó½«²úÉú´íÎóÒ³Ãæ +Do not erase obsolete files after update +¸üкó²»É¾³ý·ÏÆúµÄÎļþ +Accept cookies? +ÊÇ·ñ½ÓÊÕcookies? +Check document type when unknown? +ÊÇ·ñ¼ì²éδ֪ÎļþÀàÐÍ? +Parse java applets to retrieve included files that must be downloaded? +ÊÇ·ñ½âÎöjavaÓ¦ÓóÌÐòÒÔÈ¡»ØÆäÖаüº¬µÄÎļþ? +Store all files in cache instead of HTML only +½«ËùÓÐÎļþ½ö±£´æÔÚÔ¤´æÇøÀï (·ÇHTML) +Log file type (if generated) +ÈÕÖ¾ÎļþÀàÐÍ (ÈôÓÐ) +Maximum mirroring depth from root address +´ÓµØÖ·¸ù²¿¿ªÊ¼×î´óµÄ¾µÏñÉî¶È +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Íⲿ/·Ç·¨µØÖ·¾µÏñµÄ×î´óÉî¶È(ȱʡΪ0, ¼´²»¾µÏñ) +Create a debugging file +´´½¨Ò»¸öµ÷ÊÔÎļþ +Use non-standard requests to get round some server bugs +ʹÓ÷DZê×¼ÇëÇóÒÔ±ÜÃâijЩ·þÎñÆ÷´íÎó +Use old HTTP/1.0 requests (limits engine power!) +ʹÓÃ¾ÉµÄ HTTP/1.0 ÇëÇó (½«ÏÞÖÆ¾µÏñÄÜÁ¦!) +Attempt to limit retransfers through several tricks (file size test..) +ÊÔÒÔÈô¸ÉÊÖ¶ÎÏÞÖÆÔÙ´«ËÍ (Èçͨ¹ýÎļþ´óС²âÊÔ) +Write external links without login/password +±£´æÁ´½Óʱ²»ÐºÂ¶µÇ½Ãû/¿ÚÁî +Write internal links without query string +¸ÄдÄÚ²¿Á´½Óʱ²»ÏÔʾÊäÈëµÄÕ˺ÅÐÅÏ¢ +Get non-HTML files related to a link, eg external .ZIP or pictures +±£´æËùÓÐÖ¸Ïò·ÇHTMLÎļþµÄÁ´½Ó, ÀýÈçÍⲿµÄZIPÎļþ»òͼƬÎļþ +Test all links (even forbidden ones) +²âÊÔËùÓÐÁ´½Ó (¼´Ê¹±»½ûÖ¹µÄ) +Try to catch all URLs (even in unknown tags/code) +ÊÔͼ²¶»ñËùÓеÄURLs (¼´Ê¹´æÔÚÓÚδ֪µÄ±êʶ·û»ò´úÂëÄÚ) +Get HTML files first! +Ê×Ïȱ£´æHTMLÎļþ! +Structure type (how links are saved) +½á¹¹ÀàÐÍ (Á´½Ó±£´æµÄ·½Ê½) +Use a cache for updates +ʹÓÃÔ¤´æÇøÒÔ±ãÈÕºó¸üР+Do not re-download locally erased files +²»ÔÙÏÂÔØÔÚ±¾µØÒѱ»É¾³ýµÄÎļþ +Make an index +´´½¨Ò»¸ö index.html Îļþ +Make a word database +´´½¨´Ê»ã¿â +Log files +ÈÕÖ¾Îļþ +DOS names (8+3) +DOS ÎļþÃû¸ñʽ (8+3) +ISO9660 names (CDROM) + +No error pages +³ýÈ¥´íÎóÒ³ +Primary Scan Rule +Ê×ҪɨÃè¹æÔò +Travel mode +ÐнøÄ£Ê½ +Global travel mode +È«¾ÖÐнøÄ£Ê½ +These options should be modified only exceptionally +ÒÔÏÂÑ¡ÏîÖ»ÔÚÌØÊâÇé¿öÏÂÐÞ¸Ä +Activate Debugging Mode (winhttrack.log) +Æô¶¯µ÷ÊÔģʽ (´´½¨winhttrack.log) +Rewrite links: internal / external +¸üÖÃÁ´½Ó: ÄÚ²¿ / Íⲿ +Flow control +Á÷Á¿¿ØÖÆ +Limits +ÏÞÖÆ +Identity +Éí·Ý +HTML footer +HTMLÒ³½Å +N# connections +Á¬½ÓÊý +Abandon host if error +Èô·¢Éú´íÎó, Ôò·ÅÆúºÍÖ÷»úµÄÁ¬½Ó +Minimum transfer rate (B/s) +×îС´«ÊäÂÊ (×Ö½Ú/Ãë) +Abandon host if too slow +Èô´«Êä¹ýÂý, Ôò·ÅÆúºÍÖ÷»úµÄÁ¬½Ó +Configure +ÅäÖà +Use proxy for ftp transfers +ʹÓôúÀí½øÐÐftp´«Êä +TimeOut(s) +³¬Ê± +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +ÖØÊÔ +Size limit +´óСÏÞÖÆ +Max size of any HTML file (B) +µ¥¸öHTMLÎļþµÄ×î´ó³ß´ç +Max size of any non-HTML file +µ¥¸ö·ÇHTMLÎļþµÄ×î´ó³ß´ç +Max site size +¾µÏñÕ¾µã×î´ó³ß´ç +Max time +×ʱ¼ä +Save prefs +±£´æÉèÖà +Max transfer rate +×î´ó´«ÊäËÙÂÊ +Follow robots.txt +×ñÊØ robots.txt ¹æÔò +No external pages +²»²úÉúÍâ²¿Ò³Ãæ +Do not purge old files +²»Çå³ý·ÏÆúÎļþ +Accept cookies +½ÓÊÕcookies +Check document type +¼ì²éÎļþÀàÐÍ +Parse java files +½âÎöjavaÎļþ +Store ALL files in cache +±£´æËùÓÐÎļþÔÚÔ¤´æÇøÄÚ +Tolerant requests (for servers) +ÔÊÐí¶Ô·þÎñÆ÷µÄ·Ç¾«È·ÇëÇó +Update hack (limit re-transfers) +¸üÐÂʱ²ÉÈ¡ÆäËûÊֶηÀÖ¹ÖØ¸´ÏÂÔØ +Force old HTTP/1.0 requests (no 1.1) +Ç¿ÖÆÊ¹ÓþɵÄHTTP/1.0ÇëÇó (²»²ÉÓÃ1.1) +Max connections / seconds +ÿÃë×î¶àÁ¬½ÓÊý +Maximum number of links +×î¶àɨÃèÁ´½Ó +Pause after downloading.. +ÔÝÍ£ÓÚÿÏÂÔØ.. +Hide passwords +Òþ²Ø¿ÚÁî +Hide query strings +Òþ²ØÕ˺ÅÐÅÏ¢ +Links +Á´½Ó +Build +¹¹Ôì +Experts Only +¸ß¼¶ +Flow Control +Á÷Á¿¿ØÖÆ +Limits +ÏÞÖÆ +Browser ID +ä¯ÀÀÆ÷±êʶ +Scan Rules +ɨÃè¹æÔò +Spider +ËÑѰ +Log, Index, Cache +ÈÕÖ¾, Ë÷Òý, Ô¤´æÇø +Proxy +´úÀí +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +ÕæµÄÒªÍ˳öWinHTTrack Website Copier Âð? +Do not connect to a provider (already connected) +ÒÑÁ¬½Óµ½ÍøÂç +Do not use remote access connection +²»Ê¹ÓÃÔ¶³ÌÁ¬½Ó +Schedule the mirroring operation +Ô¤¶¨½øÐоµÏñµÄʱ¼ä +Quit WinHTTrack Website Copier +Í˳öWinHTTrack Website Copier +Back to starting page +»Øµ½ÆðÊ¼Ò³Ãæ +Click to start! +µã»÷ÒÔ¿ªÊ¼! +No saved password for this connection! +¸ÃÁ¬½ÓȱÉÙÒѱ£´æµÄÃÜÂë! +Can not get remote connection settings +ÎÞ·¨»ñȡԶ³ÌÁ¬½ÓµÄÉèÖà +Select a connection provider +ÇëÑ¡ÔñÒ»¸öÁ¬½Ó +Start +¿ªÊ¼ +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +ÈçÓÐÐèÒªÇëÐÞ¸ÄÁ¬½Ó²ÎÊý,\nÈ»ºó°´ 'Íê³É' ¿ªÊ¼¾µÏñ +Save settings only, do not launch download now. +²»Á¢¼´½øÐоµÏñ, ½ö±£´æµ±Ç°ÉèÖà +On hold +¹ÒÆð +Transfer scheduled for: (hh/mm/ss) +Ô¤¶¨¾µÏñ¿ªÊ¼ÓÚ: (µã/·Ö/Ãë) +Start +¿ªÊ¼ +Connect to provider (RAS) +Á¬½Óµ½ÍøÂç(Ô¶³ÌÁ¬½Ó·þÎñÆ÷) +Connect to this provider +ʹÓøÃÁ¬½Ó: +Disconnect when finished +Íê³Éʱ¶ÏµôÁ¬½Ó +Disconnect modem on completion +Íê³Éʱ¶Ïµôµ÷ÖÆ½âµ÷Æ÷ +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(ÓÐÈκγÌÐò´íÎó»òÎÊÌâÇëÁªÏµÎÒÃÇ)\r\n\r\n¿ª·¢:\r\n½çÃæÉè¼Æ (Windows): Xavier Roche\r\n½âÎöÒýÇæ: Xavier Roche\r\nJava½âÎöÒýÇæ: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\n¸Ðл:\r\nRobert Lagadec (rlagadec@yahoo.fr) Ìṩ·­Òë¼¼ÇÉ +About WinHTTrack Website Copier +¹ØÓÚWinHTTrack Website Copier +Please visit our Web page +Çë·ÃÎÊÎÒÃǵÄÖ÷Ò³ +Wizard query +Ïòµ¼ÌáÎÊ +Your answer: +ÄãµÄ´ð°¸: +Link detected.. +¼ì²âµ½Á´½Ó.. +Choose a rule +ÇëÑ¡Ôñ¹æÔò +Ignore this link +ºöÂÔ´ËÁ´½Ó +Ignore directory +ºöÂÔ´ËĿ¼ +Ignore domain +ºöÂÔ´ËÓòÃû +Catch this page only +½öÏÂÔØ´ËÒ³ +Mirror site +¾µÏñÕ¾µã +Mirror domain +¾µÏñÓòÃû +Ignore all +È«²¿ºöÂÔ +Wizard query +Ïòµ¼ÌáÎÊ +NO +·ñ +File +Îļþ +Options +Ñ¡Ïî +Log +ÈÕÖ¾ +Window +´°¿Ú +Help +°ïÖú +Pause transfer +ÔÝÍ£´«Êä +Exit +Í˳ö +Modify options +ÐÞ¸ÄÑ¡Ïî +View log +²ì¿´ÈÕÖ¾ +View error log +²ì¿´´íÎóÈÕÖ¾ +View file transfers +²ì¿´Îļþ´«Êä +Hide +Òþ²Ø +About WinHTTrack Website Copier +¹ØÓÚWinHTTrack Website Copier +Check program updates... +¼ì²é°æ±¾¸üÐÂ... +&Toolbar +¹¤¾ßÀ¸ +&Status Bar +״̬À¸ +S&plit +·Ö¸î +File +Îļþ +Preferences +ÉèÖà +Mirror +¾µÏñ +Log +ÈÕÖ¾ +Window +´°¿Ú +Help +°ïÖú +Exit +Í˳ö +Load default options +ÔØÈë×Ô¶¨ÒåȱʡѡÏî +Save default options +´æÎª×Ô¶¨ÒåȱʡѡÏî +Reset to default options +»Ö¸´Ô­Ê¼É趨 +Load options... +ÔØÈëÑ¡Ïî... +Save options as... +±£´æÑ¡Ïî... +Language preference... +½çÃæÓïÑÔÉèÖÃ... +Contents... +ÄÚÈÝ... +About WinHTTrack... +¹ØÓÚWinHTTrack... +New project\tCtrl+N +ÐµĹ¤³Ì\tCtrl+N +&Open...\tCtrl+O +&´ò¿ª...\tCtrl+O +&Save\tCtrl+S +&±£´æ\tCtrl+S +Save &As... +±£´æÑ¡Ïî... +&Delete... +&ɾ³ý... +&Browse sites... +&ä¯ÀÀÒѾµÏñÕ¾µã... +User-defined structure +Óû§×Ô¶¨Òå½á¹¹ +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\t²»º¬À©Õ¹ÃûµÄÎļþÃû(Èç: image)\r\n%N\tº¬ÓÐÀ©Õ¹ÃûµÄÎļþÃû(Èç: image.gif)\r\n%t\t½öÀ©Õ¹Ãû(Èç: gif)\r\n%p\t·¾¶[ÎÞÎ²Ëæ'/'] (Èç: /someimages)\r\n%h\tÖ÷»úÃû(Èç: www.someweb.com)\r\n%M\tMD5 URL (128λ, 32 ascii ×Ö½Ú)\r\n%Q\tMD5 query string (128λ, 32 ascii ×Ö½Ú)\r\n%q\tMD5 small query string (16λ, 4 ascii ×Ö½Ú)\r\n\r\n%s?\t¶ÌÎļþÃû(Èç: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +ʾÀý:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +´úÀíÉèÖà +Proxy address: +´úÀíµØÖ·: +Proxy port: +´úÀí¶Ë¿Ú: +Authentication (only if needed) +Éí·ÝÑéÖ¤ (ÈçÈôÐèÒª) +Login +µÇ¼ +Password +¿ÚÁî +Enter proxy address here +ÔÚ´ËÊäÈë´úÀíµØÖ· +Enter proxy port here +ÔÚ´ËÊäÈë´úÀí¶Ë¿Ú +Enter proxy login +ÊäÈë´úÀí·þÎñÆ÷µÇ¼ÐÅÏ¢ +Enter proxy password +ÊäÈë´úÀí·þÎñÆ÷ËùÐè¿ÚÁî +Enter project name here +ÔÚ´ËÊäÈ빤³ÌÃû +Enter saving path here +ÔÚ´ËÊäÈë×ܱ£´æÂ·¾¶ +Select existing project to update +ÇëÑ¡ÔñÒ»¸öÒÑÓеŤ³ÌÒÔ¸üР+Click here to select path +µã»÷´Ë´¦ÒÔÑ¡Ôñ·¾¶ +HTTrack Project Wizard... +HTTrack ¹¤³ÌÏòµ¼... +New project name: +й¤³ÌµÄÃû³Æ: +Existing project name: +ÏÖÓй¤³ÌµÄÃû³Æ: +Project name: +¹¤³ÌÃû: +Base path: +×ܱ£´æÂ·¾¶: +C:\\My Web Sites +C:\\My Websites +Type a new project name, \r\nor select existing project to update/resume +Çë¼üÈëÒ»¸öÐµĹ¤³ÌÃû, \r\n»òÑ¡ÔñÒÑÓй¤³ÌÒÔ¸üлò¼ÌÐø +New project +ÐµĹ¤³Ì +Insert URL +²åÈëURL +URL: +URLµØÖ·: +Authentication (only if needed) +Éí·ÝÑéÖ¤ (ÈçÈôÐèÒª) +Login +µÇ¼ +Password +¿ÚÁî +Forms or complex links: +±í¸ñ»ò¸´ÔÓÁ´½Ó: +Capture URL... +²¶»ñURLµØÖ·... +Enter URL address(es) here +ÇëÔÚ´ËÊäÈëURLµØÖ· +Enter site login +ÇëÊäÈëÕ¾µãµÇ¼Ãû +Enter site password +ÇëÊäÈëÕ¾µãµÇ½¿ÚÁî +Use this capture tool for links that can only be accessed through forms or javascript code +ʹÓô˹¤¾ß²¶»ñÖ»ÄÜͨ¹ý±í¸ñ»òjava´úÂë·ÃÎʵ½µÄÁ´½Ó +Choose language according to preference +Çë¸ù¾Ý¸öÈËϲºÃÑ¡Ôñ½çÃæÓïÑÔ +Catch URL! +²¶»ñURLµØÖ·! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +ÇëÏÈÔÝʱ½«ä¯ÀÀÆ÷µÄ´úÀíÉèΪÈçÏÂÊýÖµ(¿½±´/Õ³Ìù´úÀíµØÖ·ºÍ¶Ë¿Ú).\nÈ»ºóµã»÷ä¯ÀÀÆ÷Ò³ÃæÉϱí¸ñµÄSUBMIT°´Å¥, »òµã»÷ÏëÒª²¶»ñµÄÁ´½Ó +This will send the desired link from your browser to WinHTTrack. +ËùÐèµÄÁ´½Ó½«´Óä¯ÀÀÆ÷±»ËÍÖÁWinHTTrack. +ABORT +·ÅÆú +Copy/Paste the temporary proxy parameters here +ÔÚ´Ë¿½±´/Õ³ÌùÔÝʱµÄ´úÀí²ÎÊý +Cancel +È¡Ïû +Unable to find Help files! +ÎÞ·¨ÕÒµ½°ïÖúÎļþ! +Unable to save parameters! +ÎÞ·¨±£´æ²ÎÊý! +Please drag only one folder at a time +Çëÿ´ÎÖ»ÍÏÒ»¸öÎļþ¼Ð +Please drag only folders, not files +Çë²»ÒªÍÏÎļþ, Ö»ÍÏÎļþ¼Ð +Please drag folders only +ÇëÖ»ÍÏÎļþ¼Ð +Select user-defined structure? +Ñ¡ÔñÓû§×Ô¶¨Òå½á¹¹Âð? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +ÇëÈ·±£Óû§¶¨ÒåµÄ×Ö·û´®µÄÕýÈ·ÐÔ,\n·ñÔòÉú³ÉÎļþÃûʱ¿ÉÄܳö´í! +Do you really want to use a user-defined structure? +ÕæµÄҪʹÓÃÓû§×Ô¶¨Òå½á¹¹Âð? +Too manu URLs, cannot handle so many links!! +¹ý¶àURLsµØÖ·, ÎÞ·¨´¦Àí!! +Not enough memory, fatal internal error.. +ÄÚ´æ²»×ã, ·¢ÉúÖÂÃüÄÚ²¿´íÎó! +Unknown operation! +δ֪²Ù×÷! +Add this URL?\r\n +Ìí¼Ó´ËURL? +Warning: main process is still not responding, cannot add URL(s).. +¾¯¸æ: Ö÷½ø³ÌδÓÐÏìÓ¦, ²»ÄÜÌí¼ÓURL(s).. +Type/MIME associations +ÎļþÀàÐÍ/À©Õ¹¹ØÁª +File types: +ÎļþÀàÐÍ: +MIME identity: +MIME identity +Select or modify your file type(s) here +ÔÚ´ËÑ¡Ôñ»òÐÞ¸ÄÎļþÀàÐÍ +Select or modify your MIME type(s) here +ÔÚ´ËÑ¡Ôñ»òÐ޸ĹØÁªÎļþÀàÐÍ +Go up +ÏòÉÏ +Go down +ÏòÏ +File download information +ÎļþÏÂÔØÐÅÏ¢ +Freeze Window +Ëø¶¨´°¿ÚÐÅÏ¢ +More information: +¸ü¶àÐÅÏ¢: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +»¶Ó­Ê¹ÓÃWinHTTrack Website Copier!\n\nÇëµã»÷'Next' ÒÔ\n\n- ¿ªÊ¼Ò»¸öÐµĹ¤³Ì\n- »ò¼ÌÐøÖ´ÐÐÒ»¸öÒÔǰµÄ¾µÏñ +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +ÎļþÃûÖаüº¬À©Õ¹Ãû:\nÎļþÃûÖаüº¬:\n´ËÎļþÃû:\nÎļþ¼ÐÃûÖаüº¬:\n´ËÎļþ¼ÐÃû:\n´ËÓòÃû:\nÓòÃûÖаüº¬:\n´ËÖ÷»ú:\nÁ´½ÓÖаüº¬:\n´ËÁ´½Ó:\nËùÓÐÁ´½Ó +Show all\nHide debug\nHide infos\nHide debug and infos +ÏÔʾȫ²¿ÄÚÈÝ\nÒþ²Ø´íÎó\nÒþ²ØÏûÏ¢\nÒþ²Ø´íÎóºÍÏûÏ¢ +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Õ¾µãÔ­Óнṹ(ȱʡ)\nhtmlÎļþÔÚweb/, ͼƬºÍÆäËûÎļþÔÚweb/images/\nhtmlÎļþÔÚweb/html, ͼƬºÍÆäËûÎļþÔÚweb/images\nhtmlÎļþÔÚweb/, ͼƬºÍÆäËûÎļþÒ²ÔÚweb/\nhtmlÎļþÔÚweb/, ͼƬºÍÆäËûÎļþÔÚweb/xxx, xxxΪÎļþÀ©Õ¹Ãû\nhtmlÎļþÔÚweb/html, ͼƬºÍÆäËûÎļþÔÚweb/xxx\nÕ¾µãÔ­Óнṹ(È¥µôwww.domain.xxx/)\nhtmlÎļþÔÚsite_name/, ͼƬºÍÆäËûÎļþÔÚsite_name/images/\nhtmlÎļþÔÚsite_name/html, ͼƬºÍÆäËûÎļþÔÚsite_name/images\nhtmlÎļþÔÚsite_name/, ͼƬºÍÆäËûÎļþÒ²ÔÚsite_name/\nhtmlÎļþÔÚsite_name/, ͼƬºÍÆäËûÎļþÔÚsite_name/xxx\nhtmlÎļþÔÚsite_name/html, ͼƬºÍÆäËûÎļþÔÚsite_name/xxx\nËùÓÐÎļþÔÚweb/, ÎļþÃûÈÎÒâ²úÉú\nËùÓÐÎļþÔÚsite_name/, ÎļþÃûÈÎÒâ²úÉú\nÓû§×Ô¶¨Òå½á¹¹.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Ö»×öɨÃè\nÖ»±£´æhtmlÎļþ\nÖ»±£´æ·ÇhtmlÎļþ\n±£´æËùÓÐÎļþ (ȱʡ)\nÏȱ£´æhtmlÎļþ +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Í£ÁôÓÚͬһĿ¼\nÔÊÐíÍùϽøÐÐ (ȱʡ)\nÔÊÐíÍùÉϽøÐÐ\nÉÏ϶¼ÔÊÐí½øÐÐ +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Í£ÁôÓÚͬһµØÖ· (ȱʡ)\nÍ£ÁôÓÚͬһÓòÃû\nÍ£ÁôÓÚͬһ¶¥¼¶ÓòÃû\nÈκÎÍøÂçµØÖ· +Never\nIf unknown (except /)\nIf unknown +´Ó²»\nÈç¹ûδ֪ (/ ³ýÍâ)\nÈç¹ûδ֪ +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +²»×ñÊØrobots.txt\n×ñÊØ¹ýÂËÆ÷ÓÅÏÈÓÚrobots.txt\nÍêÈ«×ñÊØrobots.txt +normal\nextended\ndebug +ÆÕͨÈÕÖ¾\nÀ©Õ¹ÈÕÖ¾\n³ý´íÈÕÖ¾ +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +ÏÂÔØÍøÕ¾\nÏÂÔØÍøÕ¾ + ÌáÎÊ\nÏÂÔØ¸ö±ðÎļþ\nÏÂÔØÒ³ÃæÖеÄËùÓÐÕ¾µã (¶à¸ö¾µÏñ)\n²âÊÔÒ³ÃæÖеÄÁ´½Ó (ÊéÇ©²âÊÔ)\n* ¼ÌÐø±»ÖжϵľµÏñ\n* ¸üÐÂÒÑÓоµÏñ +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Ïà¶ÔµØÖ· / ¾ø¶ÔµØÖ· (ȱʡ)\n¾ø¶ÔµØÖ· / ¾ø¶ÔµØÖ·\n¾ø¶ÔµØÖ· / ¾ø¶ÔµØÖ·\nԭʼ µØÖ· / ԭʼµØÖ· +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Dansk.txt b/lang/Dansk.txt new file mode 100755 index 0000000..53c299b --- /dev/null +++ b/lang/Dansk.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Dansk +LANGUAGE_FILE +Dansk +LANGUAGE_ISO +da +LANGUAGE_AUTHOR +Jesper Bramm (bramm@get2net.dk) \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +OK +Cancel +Annullér +Exit +Afslut +Close +Luk +Cancel changes +Annullér ændringer +Click to confirm +Klik OK for at godkende +Click to get help! +Klik for at få hjælp! +Click to return to previous screen +Klik for at se den forrige skærm +Click to go to next screen +Klik for at se den næste skærm +Hide password +Skjul password +Save project +Gem projekt +Close current project? +Vil du lukke det aktuelle projekt ? +Delete this project? +Slette dette projekt ? +Delete empty project %s? +Vil du slette det tomme projekt med navnet: %s? +Action not yet implemented +Denne funktion er ikke implementeret endnu ! +Error deleting this project +Der opstod fejl under sletningen af dette projekt +Select a rule for the filter +Vælg hvilken regl der gælder for dette filter +Enter keywords for the filter +Indtast nøgleord for dette filter +Cancel +Annullér +Add this rule +Tilføj denne regel +Please enter one or several keyword(s) for the rule +Indtast et eller flere nøgleord for denne regel +Add Scan Rule +Tilføj en skanningsregel +Criterion +Kriterie: +String +Streng +Add +Tilføj +Scan Rules +Skanningsregler +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Brug 'Jokertegn' [ * ] til at udelukke eller medtage URL' er eller links.\nDu kan indsætte flere skannings-strenge i samme linie.\nBrug mellemrum som seperatortegn.\n\nEksempel: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Udeluk link(s) +Include link(s) +Medtag link(s) +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tip: For at medtage ALLE GIF-filer, så prøv at bruge: +www.someweb.com/*.gif. \n(+*.gif / -*.gif inkluderer/ekskluderer ALLE GIF-filer fra alle valgte web-sites +Save prefs +Gem foretrukne indstillinger +Matching links will be excluded: +Macthende links udelukkes +Matching links will be included: +Macthende links medtages: +Example: +Eksempel: +gif\r\nWill match all GIF files +gif\r\nVil matche alle .GIF filer +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nMedtager alle filer med en matchende tekststreng. Skriver du f.eks. 'blue' medtages eksempelvis 'bluesky-small.jpeg'\r\n +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nVil medtage filen 'bigfile.mov', men ikke filen 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nvil finde links med mappenavne der matcher tekststrengen 'cgi' , eksempelvis /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nvil finde links med mappenavne der matcher hele tekststrengen 'cgi-bin' , men ikke 'cgi-bin-2' +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nFinder links med matchende sub-string som f.eks.www.someweb.com, private.someweb.com etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nFinder links med matchende mappe sub-string som f.eks.www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc.\r\n +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nFinder links der matcher hele strengen 'www.someweb.com' , (men IKKE links som: private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nFinder ethvert link med matchende tekst-streng som f.eks. www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc.\r\n +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nFinder kun 'www.test.com/test/someweb.html' file. Bemærk at du skal skrive den fulde stil[URL+stinavn] +All links will match +Alle links vil matche +Add exclusion filter +Tilføj udelukkelses-filter +Add inclusion filter +Tilføj et inkluderings-filter +Existing filters +Eksisterende filtre +Cancel changes +Annullér ændringer +Save current preferences as default values +Gem nuværende indstillinger som standard-indstillinger +Click to confirm +Klik for at bekræfte +No log files in %s! +Der findes ingen log-fil i %s ! +No 'index.html' file in %s! +Der er ingen 'index.html'-fil i %s! +Click to quit WinHTTrack Website Copier +Klik for at afslutte WinHTTrack Website Copier +View log files +Se log-fil +Browse HTML start page +Se HTML startside +End of mirror +Kopieringen er fuldført +View log files +Se log filer +Browse Mirrored Website +Gennemse Website +New project... +Nyt projekt... +View error and warning reports +Se fejl og advarsler +View report +Se rapport +Close the log file window +Luk log-fil vinduet +Info type: +Informationstype +Errors +Fejl +Infos +Information +Find +Søg +Find a word +Søg efter et ord +Info log file +Info log fil +Warning/Errors log file +Advarsel/Fejl log-fil +Unable to initialize the OLE system +Kan ikke starte OLE-systemet +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack kunne ikke finde nogen afbrudte download fil-cache i den angivne mappe !\r\n +Could not connect to provider +Kan ikke tilslutte til udbyder +receive +modtager +request +anmoder +connect +tilslutter +search +søger +ready +klar +error +fejl +Receiving files.. +Modtager filer... +Parsing HTML file.. +Overfører HTML fil... +Purging files.. +Sletter filer... +Loading cache in progress.. + +Parsing HTML file (testing links).. +Overfører HTML fil (tester links).... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pause - Vælg fra menuen [Kopiér]/[Pause overførsel] for at genoptage overførslen +Finishing pending transfers - Select [Cancel] to stop now! +Afslutter igangværende overførsler - Vælg Annullér for at afslutte nu ! +scanning +skanner +Waiting for scheduled time.. +Venter på planlagt tidspunkt... +Connecting to provider +Tilslutter til udbyder +[%d seconds] to go before start of operation +[%d seconds] inden denne handling starter +Site mirroring in progress [%s, %s bytes] +Web-sted kopieres nu [%s, %s bytes] +Site mirroring finished! +Kopieringen er afsluttet ! +A problem occured during the mirroring operation\n +Der opstod et problem under kopieringen\n +\nDuring:\n +\nSamtidigt:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Se eventuelt log filen.\n\nKlik AFSLUT for at lukke WinHTTrack Website Copier.\n\nTak for at du brugte WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Website kopieringen er fuldført. \nKlik OK for at afslutte WinHTTrack.\nSe log fil(erne) for at kontrollere at alt forløb OK.\n\nTak for at du brugte WinHTTrack!\r\n +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +** KOPIERINGEN ER OPGIVET**\r\nDen nuværende cache er påkrævet for alle opdaterings operationer og indeholder kun data der er downloadet med den aktuelle afbrudte overførsel.\r\nDen tidligere cache kan indeholde mere fyldestgørende information; hvis du ønsker at bevare den information, skal du gendanne den og slette den aktuelle cache.\r\n[Note: Dette kan nemt gøres ved at slette 'hts-cache/new.* files]\r\n\r\nTror du den tidligere cache-fil muligvis indeholder mere fyldestgørende information, og vil du gendanne denne? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * KOPIERINGS FEJL * *\r\nWinHTTrack har opdaget at den igangværende kopiering er tom. Hvis du var i gang med at opdatere en kopi, vil det tidligere indhold blive gendannet \r\nMulig årsag: Den første side kunne enten ikke findes eller der opstod et problem med forbindelsen.\r\n=> Kontroller at webstedet findes og/eller kontroller Proxy-indstillingerne! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nTip: Klik [Se log fil] for at se advarsels- og fejlmeddelelser +Error deleting a hts-cache/new.* file, please do it manually +Der opstod en fejl i forbindelse med sletningen af hts-cache/new.*filen. Slet venligst filen manuelt. +Do you really want to quit WinHTTrack Website Copier? +Vil du afslutte WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Kopiering af web-sted -\n\nIndtast web-adresse i URL feltet +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Interaktiv guide (spørgsmål) -\n\nIndtast web-adresse(er) i URL feltet +- File Download Mode -\n\nEnter file address(es) in URL box +- Fil overførselstilstand- \n\nIndtast web-adresse(er) i URL feltet +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Links test tilstand- \n\nIndtast web-adresse(r) i URL feltet +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Opdateringstilstand -\n\nBekræft web-adresse i URL feltet. Kontroller eventuelt dine indstillinger og klik derefter på 'NÆSTE'. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Genoptag kopiering (hvis overførslen blev afbrudt) -\n\nBekræft web-adresse i URL feltet. Kontroller eventuelt dine indstillinger og klik derefter på 'NÆSTE'. +Log files Path +Stinavn for log fil +Path +Sti +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Links liste - \n\nBrug URL feltet til at angive addresse(r) på sider der indeholder links der skal kopieres. +New project / Import? +Nyt projekt / Importer? +Choose criterion +Vælg kriterier +Maximum link scanning depth +Maksimal skanningsdybde for links +Enter address(es) here +Indtast web-adresse(r) her +Define additional filtering rules +Tilføj yderligere filtreringsregler +Proxy Name (if needed) +Proxy-navn (om nødvendigt) +Proxy Port +Proxy portnummer +Define proxy settings +Definér proxy-indstillinger +Use standard HTTP proxy as FTP proxy +Brug standard HTTP proxy som FTP proxy +Path +Sti +Select Path +Vælg sti +Path +Sti +Select Path +Vælg sti +Quit WinHTTrack Website Copier +Afslut WinHTTrack Website Copier +About WinHTTrack +Om WinHTTrack +Save current preferences as default values +Gem de nuværende instillinger som standardindstillinger +Click to continue +Klik for at forsætte +Click to define options +Klik for at definere indstillinger +Click to add a URL +Klik for at tilføje URL +Load URL(s) from text file +Hent URL fra tekst fil +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack indstillinger (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Addresse liste tekst fil (*.txt)|*.txt|| +File not found! +Filen blev ikke fundet! +Do you really want to change the project name/path? +Er du sikker på at ændre i projekt/sti-navnet ? +Load user-default options? +Indlæs brugerdefinerede standardindstillinger? +Save user-default options? +Gem brugerdefinerede standardindstillinger? +Reset all default options? +Nulstil alle standardindstillinger? +Welcome to WinHTTrack! +Velkommen til WinHTTrack Website Copier! +Action: +Handling: +Max Depth +Maksimal dybde: +Maximum external depth: +Maksimal ekstern dybde: +Filters (refuse/accept links) : +Filtrerings-regel (udeluk/medtag links) +Paths +Sti +Save prefs +Gem indstillinger +Define.. +Definér... +Set options.. +Definér indstillinger... +Preferences and mirror options: +Indstillinger og muligheder +Project name +Projektnavn +Add a URL... +Tilføj URL... +Web Addresses: (URL) +Web-adresse (URL) +Stop WinHTTrack? +Stop WinHTTrack nu? +No log files in %s! +Der er ingen log filer i %s! +Pause Download? +Pause kopieringen? +Stop the mirroring operation +Stop kopieringen? +Minimize to System Tray +Minimér til systemlinien +Click to skip a link or stop parsing +Klik for at springe et link over eller stoppe overførslen +Click to skip a link +Klik for at springe et link over +Bytes saved +Bytes gemt: +Links scanned +Skannede links: +Time: +Tid : +Connections: +Forbindelser: +Running: +Kører: +Hide +Minimér +Transfer rate +Overførselshastighed +SKIP +Spring over +Information +Informationer +Files written: +Filer skrevet: +Files updated: +Opdaterede filer: +Errors: +Fejl: +In progress: +I gang: +Follow external links +Følg eksterne links +Test all links in pages +Test alle links på siderne +Try to ferret out all links +Prøv at udvide alle links +Download HTML files first (faster) +Hent HTML filer først (hurtigere) +Choose local site structure +Vælg lokal site-struktur +Set user-defined structure on disk +Sæt brugerdefinerede indstilinger for den lokale struktur +Use a cache for updates and retries +Brug cache til opdateringer og opdateringsforsøg +Do not update zero size or user-erased files +Opdater ikke filer med nul-værdi eller filer som brugeren har slettet +Create a Start Page +Opret startside +Create a word database of all html pages +Opret ord-database fra alle html-sider +Create error logging and report files +Lav fejl-log og rapport-filer +Generate DOS 8-3 filenames ONLY +Generér KUN DOS 8-3 filnavne +Generate ISO9660 filenames ONLY for CDROM medias + +Do not create HTML error pages +Opret ikke HTML-fejlsider +Select file types to be saved to disk +Vælg filtyper der skal gemmes på disken +Select parsing direction +Vælg overførselsretning +Select global parsing direction +Vælg overordnet overførselsretning +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Opret URL genskrivningsregel for interne links (downloadede links), og eksterne links (ikke downloadede) +Max simultaneous connections +Maks.antal samtidige forbindelser +File timeout +Fil time-out +Cancel all links from host if timeout occurs +Annullér alle links hvis time-out opstår hos vært +Minimum admissible transfer rate +Mindste acceptable overførselshastighed +Cancel all links from host if too slow +Annullér alle links hvis værten er for langsom +Maximum number of retries on non-fatal errors +Maksimale antal forsøg efter ikke-fatale fejl +Maximum size for any single HTML file +Maksimale størrelse for enkelte HTML filer +Maximum size for any single non-HTML file +Maksimale størrelse for ikke-HTML filer +Maximum amount of bytes to retrieve from the Web +Maksimale antal bytes der må hentes på Web +Make a pause after downloading this amount of bytes +Hold pause efter download af denne mængde bytes +Maximum duration time for the mirroring operation +Maksimale overførselstid for kopieringen +Maximum transfer rate +Maksimale overførselshastighed +Maximum connections/seconds (avoid server overload) +Maksimale antal forbindelser/sekunder (for at undgå server overbelastning) +Maximum number of links that can be tested (not saved!) +Maksimalt antal links der kan testes( ikke gemt!) +Browser identity +Browser identitet +Comment to be placed in each HTML file +Kommentarer der indsættes i alle HTML filer +Back to starting page +Tilbage til startsiden +Save current preferences as default values +Gem nuværende indstillinger som standardindstillinger +Click to continue +Klik for at forsætte +Click to cancel changes +Klik for at annullere ændringerne +Follow local robots rules on sites +Følg lokale regler på webstedet +Links to non-localised external pages will produce error pages +Links til ikke-fundne eksterne sider, vil medføre fejlside(r) +Do not erase obsolete files after update +Slet ikke overflødige filer efter opdatering +Accept cookies? +Acceptér cookies? +Check document type when unknown? +Kontroller dokumenttypen hvis ukendt? +Parse java applets to retrieve included files that must be downloaded? +Overfør java applets sammen med indkluderede filer der skal downloades? +Store all files in cache instead of HTML only +Gem alle filer i cache fremfor kun HTML ? +Log file type (if generated) +Log fil-type (hvis genereret) +Maximum mirroring depth from root address +Maksimale kopieringsdybde fra rod-adressen +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maksimal kopieringsdybde for eksterne/forbudte adresser(0, altså ingen, er standard) +Create a debugging file +Opret en fejlfindings-fil +Use non-standard requests to get round some server bugs +Brug ikke-standard forespørgsler for at omgå server-fejl +Use old HTTP/1.0 requests (limits engine power!) +Brug gamle HTTP/1.0 -type forespørglser (begrænser effektiviteten !) +Attempt to limit retransfers through several tricks (file size test..) +Forsøg at begrænse gen-overførsler gennem brug af 'tricks' (f.eks. test af fil-størrelser...) +Write external links without login/password +Skriv ekstrene links uden brug af login/password +Write internal links without query string +Skriv interne links uden forespørgsels-streng +Get non-HTML files related to a link, eg external .ZIP or pictures +Hent ikke-HTML filer relateret til et link, eksempelvis .ZIP -filer eller billeder +Test all links (even forbidden ones) +Test alle links (også forbudte links) +Try to catch all URLs (even in unknown tags/code) +Forsøg at fange alle URL (også selvom html-tags eller kode er ukendt) +Get HTML files first! +Hent HTML filer først! +Structure type (how links are saved) +Angiv struktur (hvordan links skal gemmes) +Use a cache for updates +Brug cache for opdateringer +Do not re-download locally erased files +Hent ikke filer der er slettet lokalt +Make an index +Opret et indeks +Make a word database +Opret en ord-database +Log files +Log filer +DOS names (8+3) +DOS navne (8+3 karakterer) +ISO9660 names (CDROM) + +No error pages +Ingen fejl-sider +Primary Scan Rule +Primær skanningsregel +Travel mode +Søgemetode +Global travel mode +Global søgemetode +These options should be modified only exceptionally +Disse indstillinger bør kun ændres undtagelsesvist! +Activate Debugging Mode (winhttrack.log) +Aktivér fejfindingstilstand (winhttrack.log) +Rewrite links: internal / external +Genskriv links: internt/eksternt +Flow control +Flow-kontrol +Limits +Begrænsninger +Identity +Identitet +HTML footer +HTML-fod +N# connections +Antal forbindelser +Abandon host if error +Forlad vært hvis der opstår fejl +Minimum transfer rate (B/s) +Mindste overførselshastighed (B/s) +Abandon host if too slow +Forlad værten hvis denne er for langsom +Configure +Konfigurer +Use proxy for ftp transfers +Brug proxy til FTP overførsler +TimeOut(s) +TimeOut(s) +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Antal forsøg +Size limit +Størrelsesbegrænsning +Max size of any HTML file (B) +Maksimal størrelse for enhver HTML fil (Bytes) +Max size of any non-HTML file +Maksimal størrelse for enhver ikke-HTML fil +Max site size +Maksimalt website størrelse +Max time +Maksimal tid +Save prefs +Gem indstillinger +Max transfer rate +Maksimal overførselshastighed +Follow robots.txt +Følg reglerne i robots.txt +No external pages +Ingen eksterne sider +Do not purge old files +Slet ikke gamle filer +Accept cookies +Acceptér cookies +Check document type +Kontroller dokumenttypen +Parse java files +Overfør java filer +Store ALL files in cache +Gem alle filer i cache +Tolerant requests (for servers) +Acceptér forespørgsler (for servere) +Update hack (limit re-transfers) +Opdatér hack (Begræns gen-overførsler) +Force old HTTP/1.0 requests (no 1.1) +Gennemtving HTTP / 1.0-type forespørgsler (gælder ikke ver. 1.1) +Max connections / seconds +Maks.forbindelser/sekunder +Maximum number of links +Maksimale antal af links +Pause after downloading.. +Pause efter overførsel... +Hide passwords +Skjul passwords +Hide query strings +Skjul forespørgsels-streng +Links +Links +Build +Struktur +Experts Only +Ekspert indstillinger +Flow Control +Flow-kontrol +Limits +Begrænsninger +Browser ID +Browser Identitet +Scan Rules +Skanningsregler +Spider +Spider +Log, Index, Cache +Log, Index, Cache +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Vil du afslutte WinHTTrack Website Copier nu? +Do not connect to a provider (already connected) +Tilslut ikke til en udbyder (Er allerede tilsluttet) +Do not use remote access connection +Brug ikke en opkaldsforbindelse +Schedule the mirroring operation +Planlæg kopieringen +Quit WinHTTrack Website Copier +Afslut WinHTTrack Website Copier +Back to starting page +Tilbage til startsiden +Click to start! +Klik for at starte +No saved password for this connection! +Der er ikke gemt et password for denne forbindelse +Can not get remote connection settings +Kan ikke indlæse opkaldsindstillinger +Select a connection provider +Vælg en opkaldsforbindelse (Internetudbyder) +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Tilpas opkaldsparametre om nødvendigt.\nKlik på Udfør for at starte kopieringen.\r\n +Save settings only, do not launch download now. +Gem indstillingerne, men start ikke overførslen endnu. +On hold +Afventer... +Transfer scheduled for: (hh/mm/ss) +Overførslen planlagt til :(hh/mm/ss) +Start +Start +Connect to provider (RAS) +Forbind til en udbyder (RAS) +Connect to this provider +Forbind til denne udbyder +Disconnect when finished +Afbryd forbindelsen når overførslen er færdig +Disconnect modem on completion +Afbryd forbindelsen når overførslen er færdig +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Finder du fejl eller opstår der problemer så kontakt os venligst)\r\n\r\nUdvikling:\r\nGrænseflade (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche og andre bidragsydere\r\nMange tak for dansk oversættelses til:\r\nJesper Bramm (bramm@get2net.dk) +About WinHTTrack Website Copier +Om WinHTTrack Website Copier +Please visit our Web page +Besøg vores Web-side +Wizard query +Guide forespørgsel +Your answer: +Dit svar: +Link detected.. +Link fundet +Choose a rule +Vælg en regel +Ignore this link +Ignorer dette link +Ignore directory +Ignorer dette bibliotek (mappe) +Ignore domain +Ignorer domæne +Catch this page only +Gem kun denne side +Mirror site +Kopiér web-sted +Mirror domain +Kopiér domæne +Ignore all +Ignorer alt +Wizard query +Guide forespøgsel +NO +Nej +File +Fil +Options +Indstillinger +Log +Log +Window +Vindue +Help +Hjælp +Pause transfer +Pause overførsel +Exit +Afslut +Modify options +Tilpas indstillinger +View log +Se log +View error log +Se fejl-log +View file transfers +Se fil-overførsler +Hide +Minimér +About WinHTTrack Website Copier +Om WinHTTrack Website Copier... +Check program updates... +Find program opdateringer... +&Toolbar +&Værktøjslinie +&Status Bar +&Statuslinie +S&plit +&Opdel +File +Filer +Preferences +Indstillinger +Mirror +Kopiér web-sted +Log +Log +Window +Vindue +Help +Hjælp +Exit +Afslut +Load default options +Indlæs standard indstillinger +Save default options +Gem standard indstillinger +Reset to default options +Nulstil standardindstillinger +Load options... +Indlæs indstillinger... +Save options as... +Gem indstillinger som... +Language preference... +Fortrukne sprog... +Contents... +Indhold.. +About WinHTTrack... +Om WinHTTrack... +New project\tCtrl+N +Nyt projekt\tCtrl+N +&Open...\tCtrl+O +&Åben...\tCtrl+O +&Save\tCtrl+S +&Gem\tCtrl+S +Save &As... +Gem &som... +&Delete... +&Slet... +&Browse sites... +&Gennemse websteder +User-defined structure +Brugerdefineret struktur +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tFilnavn uden type(eks: image)\r\n%N\tHele filnavnet inklusive filtype (eks: image.gif)\r\n%t\tKun filtype (eks: gif)\r\n%p\tSti [uden endelsen /] (eks: /someimages)\r\n%h\tVærts navn (eks: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 forespørgsel streng (128 bits, 32 ascii bytes)\r\n%q\tMD5 kort forespørgselsstreng (16 bits, 4 ascii bytes)\r\n\r\n%s?\tKort navn (eks: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Eksempel:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Proxy-indstillinger +Proxy address: +Proxy-adresse +Proxy port: +Proxy port +Authentication (only if needed) +Identifikation (om nødvendigt) +Login +Brugernavn (Login) +Password +Password +Enter proxy address here +Indtast proxy-adressen her +Enter proxy port here +Indtast proxy portnummer her +Enter proxy login +Indtast proxy Brugernavn/ login +Enter proxy password +Indtast proxy password +Enter project name here +Indtast projektets navn her +Enter saving path here +Indtast stinavnet hvor projektet skal gemmes +Select existing project to update +Vælg et projektnavn at opdatere +Click here to select path +Klik her for at vælge en stil +HTTrack Project Wizard... +HTTrack Projektassistent +New project name: +Nyt projektnavn +Existing project name: +Eksisterende projektnavn: +Project name: +Projektnavn: +Base path: +Vælg en fast sti til dine projekter: +C:\\My Web Sites +C:\\Mine web-steder +Type a new project name, \r\nor select existing project to update/resume +Skriv navnet på et nyt projekt\neller\nvælg at opdatere et eksisterende projekt +New project +Nyt projekt +Insert URL +Indtast URL +URL: +Adresse URL: +Authentication (only if needed) +Identifikation (om nødvendigt) +Login +Brugernavn/ Login +Password +Password +Forms or complex links: +Formularer eller komplekse links: +Capture URL... +Fang URL +Enter URL address(es) here +Indtast URL address(er) her +Enter site login +Indtast web-site Login +Enter site password +Indtast web-site password +Use this capture tool for links that can only be accessed through forms or javascript code +Brug dette værktøj til at 'fange' links der kun kan opnåes adgang til via formularer eller javascript-kode +Choose language according to preference +Vælg dit foretrukne sprog +Catch URL! +'Fang' URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Sæt venligst browserens proxy indstillinger til følgende værdier:(Kopiér/Sæt ind Proxy Addresse og Port).\nKlik på Form SUBMIT knappen på din browser-side, eller klik på specifikke link du ønsker at hente.\r\n\r\n +This will send the desired link from your browser to WinHTTrack. +Dette vil sende det ønskede link fra din browser til WinHTTrack. +ABORT +Annullér +Copy/Paste the temporary proxy parameters here +Kopiér og indsæt de midlertidige proxy parametre her +Cancel +Annullér +Unable to find Help files! +Kan ikke finde Hjælpefilerne! +Unable to save parameters! +Kan ikke gemme parametrene! +Please drag only one folder at a time +Træk kun én mappe ad gangen ! +Please drag only folders, not files +Træk kun mapper, ikke filer ! +Please drag folders only +Træk kun mapper +Select user-defined structure? +Vælg brugerdefineret struktur ? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Vær sikker på at den brugerdefinerede streng er korrekt\nI modsat fald vil filnavnene være ugyldige! +Do you really want to use a user-defined structure? +Er du sikker på at ville bruge en brugerdefineret struktur ? +Too manu URLs, cannot handle so many links!! +For mange URL' er, WinHTTrack kan ikke håndtere så mange links!!! +Not enough memory, fatal internal error.. +Ikke mere hukommelse, alvorlig intern fejl er opstået... +Unknown operation! +Ukendt handling ! +Add this URL?\r\n +Tilføj denne URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Advarsel: Processen svarer stadigvæk ikke ,URL'en kan ikke tilføjes.... +Type/MIME associations +Type/MIME tilknytning +File types: +Fil typer: +MIME identity: +MIME Identitet: +Select or modify your file type(s) here +Vælg eller ændrer dine filtype(r) her +Select or modify your MIME type(s) here +Vælg elle ændrer dine MIME type(r) her +Go up +Gå op +Go down +Gå ned +File download information +Fil overførselsinformation +Freeze Window +Frys vindue +More information: +Mere information +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Velkommen til WinHTTrack Website Copier!\n\Klik på Næste for at for at\n-Starte et nyt projekt\neller opdatere et eksisterende projekt. +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Filnavne med 'efternavn' :\nFilnavne der indeholder:\nDette filnavn:\nMappenavne der indeholder:\nDette mappenavn:\nLinks på dette domæne:\nLinks på dette domæne der indeholder:\nLinks fra denne vært:\nLinks der indeholder:\nDette Link:\nAlle Links*/ +Show all\nHide debug\nHide infos\nHide debug and infos +Vis alle\nSkjul fejlfinding\nSkjul information\nSkjul fejlfinding og information +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Site-Struktur (Standard)\nHtml i web/, Billeder og andre i web/images/\nHtml i web/html, Billeder og andre i web/images\nHtml i web/, Billeder og andre i web/\nHtml i web/, Billeder og andre i web/xxx, med xxx hvor Dateityp\nHtml i web/html, Billeder og andre in web/xxx\nSite-Struktur, uden www.domain.xxx/\nHtml i site_name/, Billeder og andre i site_name/images/\nHtml i site_name/html, Billeder og andre i site_name/images\nHtml i site_name/, Billeder og andre i site_name/\nHtml i site_name/, Billeder og andre i site_name/xxx\nHtml i site_name/html, Billeder og andre i site_name/xxx\nAlle Dateien in web/, mit Zufallsnamen (Spielerei!)\nAlle Dateien in site_name/, mit Zufallsnamen (Spielerei!)\nBrugerdefineret Struktur... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +ust skan\nGem html filer\nGem ikke-html filer\nGem alle filer (standard)\nGem html filer først +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Bliv i det samme bibliotek\nKan gå ned(standard]\nKan gå op\nKan gå både op og ned +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Bliv på den samme adresse[standard]\nBliv på på samme domæne\nBliv på samme top level domæne\n Gå overalt på internettet. +Never\nIf unknown (except /)\nIf unknown +Aldrig\nUkendt (undtaget /]\nhvis ukendt +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Ingen robots.txt regler\nrobots.txt med undtagelse af giuden\nfølg rotots.txt reglerne +normal\nextended\ndebug +Normal\nUdvidet\nFejlfinding +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Overfør web site(s)\nOverfør web site(s) + sprørgsmål\nHent enkelte filer\nOverfør alle sider (multiple mirror)\nTest links på siderne (bookmark test)\n* Forsæt afbrudt projekt\n* Opdater tidligere projekt +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relativ URL / Absolut URL (standard)\nAbsolut URL / Absolut URL\nAbsolut URL / Absolut URL\nOriginal URL / Original URL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Deutsch.txt b/lang/Deutsch.txt new file mode 100755 index 0000000..dac7115 --- /dev/null +++ b/lang/Deutsch.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Deutsch +LANGUAGE_FILE +Deutsch +LANGUAGE_ISO +de +LANGUAGE_AUTHOR +Rainer Klueting (rainer at klueting.de) \r\nBastian Gorke (bastiang at yahoo.com) \r\nRudi Ferrari (Wyando at netcologne.de) \r\nMarcus Gaza (MarcusGaza at t-online.de) \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +OK +Cancel +Abbrechen +Exit +Beenden +Close +Schließen +Cancel changes +Änderungen verwerfen +Click to confirm +Änderungen übernehmen +Click to get help! +Hilfe aufrufen +Click to return to previous screen +Zurück zum letzten Schritt +Click to go to next screen +Weiter zum nächsten Schritt +Hide password +Passwort nicht anzeigen +Save project +Projekt speichern +Close current project? +Aktives Projekt schließen? +Delete this project? +Dieses Projekt löschen? +Delete empty project %s? +Leeres Projekt %s löschen? +Action not yet implemented +Funktion noch nicht verfügbar +Error deleting this project +Fehler beim Löschen des Projekts +Select a rule for the filter +Wählen Sie eine Regel für den Filter +Enter keywords for the filter +Schlüsselwörter für den Filter +Cancel +Abbrechen +Add this rule +Diese Regel hinzufügen +Please enter one or several keyword(s) for the rule +Ein oder mehrere Schlüsselwörter für die Regel eingeben +Add Scan Rule +Filterregel hinzufügen +Criterion +Filterregel: +String +Schlüsselwort eingeben: +Add +Hinzufügen +Scan Rules +Filterregeln +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Verwenden Sie Platzhalter, um URLs oder verknüpfte Seiten ein- oder auszuschließen.\n\nMehrere Filterregeln hintereinander \nmüssen durch Leerzeichen getrennt sein.\nBeispiel: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Link(s) ausschließen +Include link(s) +Link(s) einschließen +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tipp: Um ALLE GIF-Dateien einzuschließen, schreiben Sie z.B. +www.someweb.com/*.gif. \n(+*.gif / -*.gif schließt ALLE GIFs auf ALLEN Seiten ein/aus.) +Save prefs +Einstellungen speichern +Matching links will be excluded: +Auszuschließende Links: +Matching links will be included: +Einzuschließende Links: +Example: +Beispiel: +gif\r\nWill match all GIF files +gif\r\nFindet alle GIF-Dateien +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nFindet alle Dateien, die 'blue' enthalten, wie 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nFindet 'bigfile.mov', aber nicht 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nFindet alle Links zu Ordnern, deren Name 'cgi' enthält, wie /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nFindet Links zu Ordnern namens 'cgi-bin' (aber z.B. nicht zu 'cgi-bin-2') +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nFindet Links wie www.someweb.com, private.someweb.com etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nFindet Links wie www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nFindet Links wie www.someweb.com/... (aber nicht wie private.someweb.com/...) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nFindet Links wie www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nFindet nur die Datei 'www.test.com/test/someweb.html'. Bitte beachten: Der Pfad muss vollständig angegeben werden (URL und Pfadangabe). +All links will match +Alle Verknüpfungen sind eingeschlossen +Add exclusion filter +Ausschlussfilter hinzufügen +Add inclusion filter +Einschlussfilter hinzufügen +Existing filters +Aktuelle Filterregeln +Cancel changes +Änderungen verwerfen +Save current preferences as default values +Aktuelle Einstellungen als Standard speichern +Click to confirm +Zum Bestätigen klicken +No log files in %s! +Keine Protokolldateien in %s! +No 'index.html' file in %s! +Keine Datei 'index.html' in %s! +Click to quit WinHTTrack Website Copier +Hier klicken, um WinHTTrack Website Copier zu beenden +View log files +Protokolldateien anzeigen +Browse HTML start page +HTML-Startseite anzeigen +End of mirror +Kopie der Web-Site abgeschlossen +View log files +Protokolldateien anzeigen +Browse Mirrored Website +Kopierte Seiten anzeigen +New project... +Neues Projekt... +View error and warning reports +Fehler- und Hinweisprotokoll zeigen +View report +Protokoll zeigen +Close the log file window +Protokollfenster schließen +Info type: +Informationskategorie: +Errors +Fehler +Infos +Informationen +Find +Suchen +Find a word +Wort suchen +Info log file +Hinweisprotokoll +Warning/Errors log file +Fehler/Hinweise +Unable to initialize the OLE system +OLE System kann nicht gestartet werden +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack kann im angegebenen Ordner keine unterbrochene Site-Kopie finden! +Could not connect to provider +Keine Verbindung zum Provider +receive +empfangen +request +anfordern +connect +verbinden +search +suchen +ready +fertig +error +Fehler +Receiving files.. +Empfang der Dateien... +Parsing HTML file.. +Analysieren der HTML Datei... +Purging files.. +Dateien löschen... +Loading cache in progress.. +Zwischenspeicher wird geladen... +Parsing HTML file (testing links).. +Analysieren der HTML Datei (Links testen)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pause - fortfahren mit Menübefehl [Site-Kopie]/[Übertragung anhalten] +Finishing pending transfers - Select [Cancel] to stop now! +Laufende Ubertragungen werden abgeschlossen - Sofortiger Stopp mit [Abbrechen] +scanning +scannen +Waiting for scheduled time.. +Eingestellte Startzeit abwarten +Connecting to provider +Verbindung aufbauen +[%d seconds] to go before start of operation +[%d Sekunden] bis zum Start +Site mirroring in progress [%s, %s bytes] +Spiegelung der Website läuft [%s, %s Byte] +Site mirroring finished! +Kopiervorgang beendet +A problem occured during the mirroring operation\n +Beim Kopieren der Webseiten ist ein Problem aufgetreten\n +\nDuring:\n +\r\n\nWährend:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\r\n\nNäheres bei Bedarf im Protokoll.\n\n'Beenden' beendet WinHTTrack Website Copier.\n\nDanke, dass Sie WinHTTrack benutzt haben! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Kopiervorgang abgeschlossen.\n'Beenden' beendet WinHTTrack.\nIn den Protokolldateien können Sie prüfen, ob Probleme auftraten.\n\nDanke, dass Sie WinHTTrack benutzt haben! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * KOPIERVORGANG ABGEBROCHEN! * *\r\nDer aktuelle temporäre Cache wird für eine künftige Aktualisierung gebraucht. Er enthält nur Daten, die während der soeben abgebrochenen Sitzung heruntergeladen wurden.\r\nEin früher angelegter Cache enthält unter Umständen vollständigere Informationen; wenn Sie diese nicht verlieren wollen, müssen Sie sie wiederherstellen und den aktuellen Cache löschen.\r\n[Hinweis: Dazu werden einfach die Dateien hts-cache/new.* gelöscht]\r\n\r\nWollen Sie den vor dieser Sitzung erzeugten Cache wiederherstellen? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * FEHLER BEIM KOPIEREN! * *\r\nDie aktuelle Webseitenkopie ist leer. Wenn es sich um eine Aktualisierung gehandelt hat, ist die letzte Kopie wiederhergestellt worden.\r\nMögliche Ursachen: Entweder wurde(n) die erste(n) Seite(n) nicht gefunden, oder es gab ein Problem mit der Verbindung.\r\n=> Vergewissern Sie sich, dass die Website noch existiert, und/oder überprüfen Sie die Einstellungen für den Proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +\r\n\n\nTipp: Ein Klick auf [Protokoll zeigen] zeigt Warnungen und Fehlermeldungen an +Error deleting a hts-cache/new.* file, please do it manually +Fehler beim Löschen einer Datei hts-cache/new.*. Bitte löschen Sie von Hand. +Do you really want to quit WinHTTrack Website Copier? +WinHTTrack Website Copier beenden? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Webseiten-Kopiermodus -\n\nAdresse(n) in das URL-Feld eingeben +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Webseiten-Kopiermodus mit Rückfrage -\n\nAdresse(n) in das URL-Feld eingeben +- File Download Mode -\n\nEnter file address(es) in URL box +- Datei-Download-Modus -\n\nDatei-Adresse(n) in das URL-Feld eingeben +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Link-Prüfmodus -\n\nZu prüfende Adresse(n) in das URL-Feld eingeben +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Aktualisierungs-Modus -\n\nBitte Adresse(n) im URL-Feld kontrollieren, bei Bedarf Parameter prüfen, dann auf 'Weiter' klicken +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Fortsetzungs-Modus (nach Abbruch) -\n\nBitte Adresse(n) im URL-Feld kontrollieren, bei Bedarf Parameter prüfen, dann auf 'Weiter' klicken +Log files Path +Protokollordner +Path +Pfad +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Link-Listen-Modus -\n\nBitte in das URL-Feld die Adressen der Seiten eintragen, deren Verknüpfungen aufgelistet werden sollen. +New project / Import? +Neues Projekt / Importieren? +Choose criterion +Aktion auswählen +Maximum link scanning depth +Maximale Verzweigungstiefe +Enter address(es) here +Adresse(n) hier eintragen +Define additional filtering rules +Weitere Filterregeln definieren +Proxy Name (if needed) +Proxy (wenn nötig) +Proxy Port +Proxy-Port +Define proxy settings +Proxy-Einstellungen festlegen +Use standard HTTP proxy as FTP proxy +Standard HTTP-Proxy als FTP-Proxy verwenden +Path +Pfad +Select Path +Pfad wählen +Path +Pfad +Select Path +Pfad wählen +Quit WinHTTrack Website Copier +WinHTTrack Website Copier beenden +About WinHTTrack +Über WinHTTrack +Save current preferences as default values +Aktuelle Einstellungen als Standard speichern +Click to continue +Hier klicken zum Weitermachen +Click to define options +Hier klicken, um Einstellungen vorzunehmen +Click to add a URL +Hier klicken, um URL hinzuzufügen +Load URL(s) from text file +URL(s) aus Textdatei laden +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack Einstellungen (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Textdatei mit Adressenliste (*.txt)|*.txt|| +File not found! +Datei nicht gefunden! +Do you really want to change the project name/path? +Wollen Sie Namen und Pfad des Projektes ändern? +Load user-default options? +Benutzer-Standardeinstellungen laden? +Save user-default options? +Benutzer-Standardeinstellungen speichern? +Reset all default options? +Alle Standardeinstellungen zurücksetzen? +Welcome to WinHTTrack! +Willkommen beim WinHTTrack Website Copier! +Action: +Aktion: +Max Depth +Maximale Tiefe: +Maximum external depth: +Maximale externe Tiefe: +Filters (refuse/accept links) : +Filterregel (Links ein-/ausschließen) : +Paths +Pfade +Save prefs +Einstellungen speichern +Define.. +Festlegen... +Set options.. +Einstellungen... +Preferences and mirror options: +Einstellungen und Kopieroptionen: +Project name +Projektname +Add a URL... +URL hinzufügen... +Web Addresses: (URL) +Web-Adressen (URLs): +Stop WinHTTrack? +WinHTTrack beenden? +No log files in %s! +Keine Protokolldateien in %s! +Pause Download? +Übertragung unterbrechen? +Stop the mirroring operation +Kopiervorgang stoppen +Minimize to System Tray +Ausblenden (Symbol in Taskleiste) +Click to skip a link or stop parsing +Anklicken überspringt Verknüpfung oder stoppt den Vorgang +Click to skip a link +Anklicken überspringt Verknüpfung +Bytes saved +Gespeicherte Bytes: +Links scanned +Bearbeitete Verknüpfungen: +Time: +Zeit: +Connections: +Verbindungen: +Running: +Aktiv: +Hide +Minimieren +Transfer rate +Übertragungsrate: +SKIP +AUSLASSEN +Information +Information +Files written: +Geschriebene Dateien: +Files updated: +Aktualisierte Dateien: +Errors: +Fehler: +In progress: +In Bearbeitung: +Follow external links +Externe Verknüpfungen durchsuchen +Test all links in pages +Alle Verknüpfungen prüfen +Try to ferret out all links +Allen Verknüpfungen zu folgen versuchen +Download HTML files first (faster) +HTML-Dateien zuerst laden (schneller) +Choose local site structure +Lokale Seitenstruktur wählen +Set user-defined structure on disk +Lokale Seitenstruktur selbst definieren +Use a cache for updates and retries +Zwischenspeicher für Aktualisierungen und Wiederaufnahme nutzen +Do not update zero size or user-erased files +Vom Benutzer gelöschte oder leere Dateien nicht aktualisieren +Create a Start Page +Startseite erstellen +Create a word database of all html pages +Liste mit allen Wörtern in den HTML-Seiten anlegen +Create error logging and report files +Fehlerprotokoll und Ablaufbericht erstellen +Generate DOS 8-3 filenames ONLY +NUR Namen im Format DOS 8+3 generieren +Generate ISO9660 filenames ONLY for CDROM medias +ISO9660-Dateinamen NUR für CDROMs erzeugen +Do not create HTML error pages +Keine HTML-Fehlerseiten erstellen +Select file types to be saved to disk +Dateitypen wählen, die gespeichert werden sollen +Select parsing direction +Suchreihenfolge wählen +Select global parsing direction +Allgemeine Suchreihenfolge wählen +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Einstellen der Regeln zum Anpassen von URLs für interne (heruntergeladene) und externe (nicht heruntergeladene) Verknüpfungen +Max simultaneous connections +Maximale Zahl der Verbindungen +File timeout +Maximale Wartezeit für Dateien +Cancel all links from host if timeout occurs +Bei Überschreiten der Wartezeit alle Verknüpfungen zu diesem Host abbrechen +Minimum admissible transfer rate +Niedrigste geduldete Übertragungsrate +Cancel all links from host if too slow +Alle Verknüpfungen zu einem Host abbrechen, der zu langsam ist +Maximum number of retries on non-fatal errors +Maximale Zahl der Wiederholungsversuche bei nicht fatalem Fehler +Maximum size for any single HTML file +Maximale Größe einer HTML-Datei +Maximum size for any single non-HTML file +Maximale Größe einer Nicht-HTML-Datei +Maximum amount of bytes to retrieve from the Web +Maximalzahl der Bytes, die geholt werden sollen +Make a pause after downloading this amount of bytes +Pause einlegen, wenn die Anzahl heruntergeladener Bytes größer wird als +Maximum duration time for the mirroring operation +Höchstdauer des gesamten Kopiervorgangs +Maximum transfer rate +Maximale Übertragungsrate +Maximum connections/seconds (avoid server overload) +Maximalzahl der Verbindungen pro Sek. (verhindert Server-Überlastung) +Maximum number of links that can be tested (not saved!) +Wie viele Links sollen maximal geprüft werden? (Kein Limit für Speicherung!) +Browser identity +Browser-Kennung +Comment to be placed in each HTML file +Kommentar, einzufügen in jede HTML-Datei +Back to starting page +Zurück zur Startseite +Save current preferences as default values +Aktuelle Einstellungen als Standard speichern +Click to continue +Klicken, um fortzufahren +Click to cancel changes +Klicken, um Änderungen rückgängig zu machen +Follow local robots rules on sites +Lokalen Robot-Regeln auf den Seiten Folge leisten +Links to non-localised external pages will produce error pages +Verknüpfungen zu nicht kopierten externen Seiten führen zu Fehlerseiten +Do not erase obsolete files after update +Nach Aktualisierung überflüssige Dateien nicht löschen +Accept cookies? +Cookies annehmen? +Check document type when unknown? +Dokumenttyp prüfen, wenn unbekannt? +Parse java applets to retrieve included files that must be downloaded? +Java-Applets nach Verknüpfungen zu Dateien durchsuchen, die geladen werden müssen? +Store all files in cache instead of HTML only +Alle Dateien in Zwischenspeicher schreiben, nicht nur HTML-Dateien +Log file type (if generated) +Dateityp des Protokolls (falls generiert) +Maximum mirroring depth from root address +Maximale Suchtiefe ab der erste Adresse +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximale Suchtiefe für externe/verbotene Adressen. (Standard ist 0, also keine externe Suche.) +Create a debugging file +Datei für Fehlersuche erstellen +Use non-standard requests to get round some server bugs +Nicht-standardisierte Anfragen erzeugen (umschifft einzelne Server-Fehler) +Use old HTTP/1.0 requests (limits engine power!) +Alten Standard HTTP/1.0 benutzen (begrenzt das Arbeitstempo!) +Attempt to limit retransfers through several tricks (file size test..) +Versuche, mit verschiedenen Tricks die Zahl der Re-Transfers zu begrenzen (Prüfung der Dateigröße...) +Write external links without login/password +Externe Verknüpfungen ohne Benutzername/Passwort eintragen +Write internal links without query string +Interne Verknüpfungen ohne Abfragetext schreiben +Get non-HTML files related to a link, eg external .ZIP or pictures +Verknüpfte Nicht-HTML-Dateien laden (Bsp: .ZIP oder Bilder von außerhalb) +Test all links (even forbidden ones) +Alle Verknüpfungen testen (auch verbotene) +Try to catch all URLs (even in unknown tags/code) +Alle URLs zu finden versuchen (auch in unbekannten Tags und Scripts) +Get HTML files first! +HTML-Dateien zuerst laden! +Structure type (how links are saved) +Strukturtyp (Wie Verknüpfungen gespeichert werden) +Use a cache for updates +Zwischenspeicher für Aktualisierungen benutzen +Do not re-download locally erased files +Dateien nicht erneut laden, die lokal gelöscht wurden +Make an index +Index erstellen +Make a word database +Wortliste anlegen +Log files +Protokolldateien +DOS names (8+3) +DOS-Namen (8+3) +ISO9660 names (CDROM) +ISO9660-Namen (CDROM) +No error pages +Keine Fehlerseiten +Primary Scan Rule +Haupt-Filterregel +Travel mode +Suchmethode +Global travel mode +Globale Suchmethode +These options should be modified only exceptionally +Normalerweise solten diese Einstellungen nicht geändert werden. +Activate Debugging Mode (winhttrack.log) +Fehlersuch-Modus aktivieren (winhttrack.log) +Rewrite links: internal / external +Adressbezüge anpassen: intern / extern +Flow control +Flusskontrolle +Limits +Begrenzungen +Identity +Identität +HTML footer +HTML-Fußzeile +N# connections +Anzahl Verbindungen +Abandon host if error +Host bei Fehler aufgeben +Minimum transfer rate (B/s) +Minimale Übertragungsrate (B/s) +Abandon host if too slow +Host aufgeben, wenn zu langsam +Configure +Konfigurieren +Use proxy for ftp transfers +Proxy für FTP-Übertragungen nutzen +TimeOut(s) +Timeout(s) +Persistent connections (Keep-Alive) +Verbindungen halten (Keep-alive) +Reduce connection time and type lookup time using persistent connections +Offen gehaltene Verbindungen reduzieren Verbindungszeit und Zeit für Typsuche +Retries +Wiederholungen +Size limit +Größenbegrenzung +Max size of any HTML file (B) +Max. Anzahl Bytes von HTML-Dateien +Max size of any non-HTML file +Max. Größe einer Nicht-HTML-Datei +Max site size +Max. Größe der Website +Max time +Maximale Zeit +Save prefs +Einstellungen speichern +Max transfer rate +Maximale Übertragungsrate +Follow robots.txt +Regeln in robots.txt folgen +No external pages +Keine externen Seiten +Do not purge old files +Alte Dateien nicht löschen +Accept cookies +Cookies annehmen +Check document type +Dokumenttyp prüfen +Parse java files +JAVA-Dateien analysieren +Store ALL files in cache +ALLE Dateien zwischenspeichern +Tolerant requests (for servers) +Tolerante Anfragen (für Server) +Update hack (limit re-transfers) +Aktualisierungstrick (Re-Transfers begrenzen) +Force old HTTP/1.0 requests (no 1.1) +Alte HTTP/1.0-Anfragen erzwingen (nicht 1.1) +Max connections / seconds +Max. Anzahl Verbindungen pro Sek. +Maximum number of links +Höchstzahl der Links +Pause after downloading.. +Nach dem Download warten... +Hide passwords +Passwörter verbergen +Hide query strings +Abfragetext nicht anzeigen +Links +Verknüpfungen +Build +Struktur +Experts Only +Experten +Flow Control +Flusskontrolle +Limits +Grenzwerte +Browser ID +Browser ID +Scan Rules +Filterregeln +Spider +Spider +Log, Index, Cache +Protokoll, Index, Cache +Proxy +Proxy +MIME Types +MIME-Typen +Do you really want to quit WinHTTrack Website Copier? +WinHTTrack Website Copier beenden? +Do not connect to a provider (already connected) +Nicht mit Provider verbinden (schon verbunden) +Do not use remote access connection +Keine Remote-Access-Verbindung benutzen +Schedule the mirroring operation +Kopierzeitpunkt festlegen +Quit WinHTTrack Website Copier +WinHTTrack Website Copier beenden +Back to starting page +Zurück zur Startseite +Click to start! +Zum Starten klicken! +No saved password for this connection! +Kein gespeichertes Passwort für diese Verbindung! +Can not get remote connection settings +Verbindungseinstellungen können nicht ermittelt werden +Select a connection provider +Verbindungsprovider auswählen +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Bitte korrigieren Sie die Verbindungseinstellungen, wenn nötig,\nund klicken Sie auf 'Fertig stellen', um den Kopiervorgang zu starten. +Save settings only, do not launch download now. +Nur Einstellungen speichern; Download jetzt nicht starten +On hold +Angehalten +Transfer scheduled for: (hh/mm/ss) +Übertragung geplant für: (hh/mm/ss) +Start +START +Connect to provider (RAS) +Mit Provider verbinden (RAS) +Connect to this provider +Mit diesem Provider verbinden +Disconnect when finished +Nach der Aktion Verbindung trennen +Disconnect modem on completion +Modemverbindung trennen, wenn fertig +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Bitte benachrichtigen Sie uns über Fehler und Probleme)\r\n\r\nEntwicklung:\r\nOberfläche (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for German translations to:\r\nRainer Klueting (rainer@klueting.de) +About WinHTTrack Website Copier +Über WinHTTrack Website Copier +Please visit our Web page +Besuchen Sie unsere Webseite! +Wizard query +Assistenten-Abfrage +Your answer: +Ihre Antwort: +Link detected.. +Verknüpfung gefunden... +Choose a rule +Regel wählen +Ignore this link +Diesen Link ignorieren +Ignore directory +Ordner ignorieren +Ignore domain +Domain ignorieren +Catch this page only +Nur diese Seite holen +Mirror site +Webseiten-Kopie +Mirror domain +Domain-Kopie +Ignore all +Keine Links +Wizard query +Assistenten-Abfrage +NO +NEIN +File +Datei +Options +Optionen +Log +Protokoll +Window +Fenster +Help +Hilfe +Pause transfer +Übertragung anhalten +Exit +Beenden +Modify options +Optionen ändern +View log +Protokoll anzeigen +View error log +Fehlerprotokoll anzeigen +View file transfers +Dateiübertragung anzeigen +Hide +Minimieren +About WinHTTrack Website Copier +Über WinHTTrack Website Copier +Check program updates... +Nach neuer Version suchen... +&Toolbar +&Werkzeugleiste +&Status Bar +&Statusleiste +S&plit +&Teilen +File +Datei +Preferences +Optionen +Mirror +Site-Kopie +Log +Protokoll +Window +Fenster +Help +Hilfe +Exit +Beenden +Load default options +Standardeinstellungen laden +Save default options +Standardeinstellungen speichern +Reset to default options +Standardeinstellungen löschen +Load options... +Einstellungen laden... +Save options as... +Einstellungen speichern als... +Language preference... +Spracheinstellungen... +Contents... +Inhalt... +About WinHTTrack... +Über WinHTTrack Website Copier... +New project\tCtrl+N +&Neues Projekt\tStrg+N +&Open...\tCtrl+O +Ö&ffnen...\tStrg+O +&Save\tCtrl+S +&Speichern\tStrg+S +Save &As... +Speichern &unter... +&Delete... +&Löschen... +&Browse sites... +&Webseiten anzeigen... +User-defined structure +Benutzerdefinierte Struktur +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tName der Datei ohne Dateityp (Bsp: Bild)\r\n%N\tName der Datei, mit Dateityp (Bsp: Bild.gif)\r\n%t\tDateityp (Bsp: gif)\r\n%p\tPfad [ohne letzten /] (Bsp: /Bilder)\r\n%h\tDomainname (Bsp: www.someweb.com)\r\n%M\tURL MD5 (128 Bits, 32 ASCII-Bytes)\r\n%Q\tAbfragetext MD5 (128 Bits, 32 ASCII-Bytes)\r\n%q\tKurzer Abfragetext MD5 (16 Bits, 4 ASCII-Bytes)\r\n\r\n%s?\tKurzname DOS(ex: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Beispiel:\t%h%p/%n%q.%t\n->\t\tc:\\Spiegelung\\www.someweb.com\\Bilder\\Bild.gif +Proxy settings +Proxy-Einstellungen +Proxy address: +Proxy-Adresse: +Proxy port: +Proxy-Port: +Authentication (only if needed) +Authentifizierung (nur wenn benötigt) +Login +Benutzername (Login) +Password +Passwort +Enter proxy address here +Proxy-Adresse hier eintragen +Enter proxy port here +Proxy-Port hier eintragen +Enter proxy login +Benutzernamen für Proxy hier eintragen +Enter proxy password +Passwort für Proxy hier eintragen +Enter project name here +Projektnamen hier eintragen +Enter saving path here +Hier den Pfad für das Projekt eintragen +Select existing project to update +Vorhandenes Projekt zum Aktualisieren auswählen +Click here to select path +Hier klicken, um einen Pfad auszuwählen +HTTrack Project Wizard... +HTTrack Projektassistent +New project name: +Neuer Projektname: +Existing project name: +Existierender Projektname: +Project name: +Projektname: +Base path: +Basisverzeichnis: +C:\\My Web Sites +C:\\Meine Webseiten +Type a new project name, \r\nor select existing project to update/resume +Neuen Projektnamen eintragen, \r\noder existierendes Projekt zum Aktualisieren oder zur Wiederaufnahme auswählen +New project +Neues Projekt +Insert URL +URL eintragen: +URL: +URL: +Authentication (only if needed) +Authentifikation (nur wenn benötigt) +Login +Benutzername (Login): +Password +Passwort: +Forms or complex links: +Formulare oder komplexe Links: +Capture URL... +Hole URL... +Enter URL address(es) here +URL hier eintragen +Enter site login +Benutzername für Web-Site +Enter site password +Passwort für Web-Site +Use this capture tool for links that can only be accessed through forms or javascript code +Verwenden Sie diese Funktion, um verknüpfte Seiten zu holen, die nur über Formulare oder JavaScript-Code zu erreichen sind. +Choose language according to preference +Sprache einstellen +Catch URL! +Diese URL holen! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Ändern Sie bitte die Proxy-Einstellungen des Browsers vorübergehend wie folgt: (Proxy-Adresse und -Port von hier kopieren)\nKlicken Sie dann im Browser auf den Schalter Submit/Absenden o.ä. des Formulars oder auf die spezielle Verknüpfung, die Sie laden wollen. +This will send the desired link from your browser to WinHTTrack. +Dadurch wird die verknüpfte Information vom Browser zu WinHTTrack übertragen. +ABORT +ABBRECHEN +Copy/Paste the temporary proxy parameters here +Die temporären Proxyeinstellungen von hier kopieren +Cancel +Abbrechen +Unable to find Help files! +Kann Hilfedateien nicht finden! +Unable to save parameters! +Kann Parameter nicht speichern! +Please drag only one folder at a time +Bitte immer nur einen Ordner einfügen +Please drag only folders, not files +Bitte nur Ordner einfügen, keine Dateien +Please drag folders only +Bitte nur Ordner einfügen +Select user-defined structure? +Benutzerdefinierte Struktur für Site-Kopie wählen? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Bitte prüfen Sie, ob die benutzerdefinierte Zeichenkette korrekt ist.\nAndernfalls entstehen unsinnige Dateinamen. +Do you really want to use a user-defined structure? +Möchten Sie wirklich eine benutzerdefinierte Struktur wählen? +Too manu URLs, cannot handle so many links!! +Zu viele URLs! So viele Links können nicht bearbeitet werden! +Not enough memory, fatal internal error.. +Nicht genug Speicher. Kritischer interner Fehler... +Unknown operation! +Unbekannte Operation! +Add this URL?\r\n +Diese URL hinzufügen?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Warnung: Hauptprozess antwortet nicht; kann keine URLs hinzufügen. +Type/MIME associations +Typ/MIME-Verknüpfungen +File types: +Dateitypen: +MIME identity: +MIME-Entsprechung +Select or modify your file type(s) here +Dateityp(en) hier auswählen oder ändern +Select or modify your MIME type(s) here +MIME-Entsprechung(en) hier auswählen oder ändern +Go up +Nach oben +Go down +Nach unten +File download information +Informationen zum Datei-Download +Freeze Window +Fenster fixieren +More information: +Weitere Informationen: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Willkommen beim WinHTTrack Website Copier!\n\nBitte auf WEITER klicken,\n\n- um ein neues Projekt zu beginnen\n- oder einen unterbrochenen Kopiervorgang\n wieder aufzunehmen. +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Dateityp:\nDateiname enthält:\nDiese Datei:\nPfadname enthält:\nDieser Pfad:\nLinks zu dieser Domain:\nDomainname enthält:\nLinks zu diesem Server:\nLink enthält:\nDieser Link:\nALLE LINKS +Show all\nHide debug\nHide infos\nHide debug and infos +Alles zeigen\nInfos für Fehlersuche speichern\nAllgemeine Hinweise speichern\nFehler und Hinweise speichern +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Site-Struktur (Standard)\nHtml in web/, Bilder und anderes in web/images/\nHtml in web/html, Bilder und anderes in web/images\nHtml in web/, Bilder und anderes in web/\nHtml in web/, Bilder und anderes in web/xxx, mit xxx wie Dateityp\nHtml in web/html, Bilder und anderes in web/xxx\nSite-Struktur, ohne www.domain.xxx/\nHtml in site_name/, Bilder und anderes in site_name/images/\nHtml in site_name/html, Bilder und anderes in site_name/images\nHtml in site_name/, Bilder und anderes in site_name/\nHtml in site_name/, Bilder und anderes in site_name/xxx\nHtml in site_name/html, Bilder und anderes in site_name/xxx\nAlle Dateien in web/, mit Zufallsnamen (Spielerei!)\nAlle Dateien in site_name/, mit Zufallsnamen (Spielerei!)\nBenutzerdefinierte Struktur... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Nur Verknüpfungen analysieren\nHTML-Dateien speichern\nNicht-HTML-Dateien speichern\nAlle Dateien speichern (Standard)\nZuerst HTML-Dateien speichern +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Im selben Ordner bleiben\nKann nach unten gehen (Standard)\nKann nach oben gehen\nKann nach oben und unten gehen +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Bei Adresse bleiben (Standard)\nIn Domain bleiben\nIn Top-Level-Domain bleiben\nFreie Suche überall im Web +Never\nIf unknown (except /)\nIf unknown +Nie\nWenn unbekannt (ohne /)\nWenn unbekannt +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Regeln in robots.txt ignorieren\nrobots.txt folgen, außer Filtern\nRegeln in robots.txt folgen +normal\nextended\ndebug +Normal\nErweitert\nFehlersuche +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Automatische Web-Site-Kopie\nWeb-Site-Kopie mit Rückfrage\nSpezielle Dateien laden\nZu allen Links verzweigen (Kopie mehrerer Sites)\nLinks auf den Seiten testen (Lesezeichen prüfen)\n* Unterbrochenen Kopiervorgang fortsetzen\n* Vorhandene Kopie aktualisieren +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relative URL / Absolute URL (Standard)\nAbsolute URL / Absolute URL\nAbsolute URL / Absolute URL\nUnveränderte URL / Unveränderte URL +Open Source offline browser +Open source Offline-Browser +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Webseiten-Kopierer/Offline-Browser. Kopien kompletter Internetangebote auf dem eigenen PC erstellen. Freeware +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, offline browser +URL list (.txt) +URL Liste (.txt) +Previous +Zurück +Next +Weiter +URLs +URLs +Warning +Warnung +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Ihr Browser unterstützt kein Javascript, oder es ist abgeschaltet. Eine bessere Darstellung erhalten Sie mit einem Javascript-fähigen Browser. +Thank you +Vielen Dank +You can now close this window +Sie können dieses Fenster jetzt schließen +Server terminated +Der Server wurde beendet +A fatal error has occured during this mirror +Fataler Fehler während der Webseiten-Kopie diff --git a/lang/Eesti.txt b/lang/Eesti.txt new file mode 100755 index 0000000..8759933 --- /dev/null +++ b/lang/Eesti.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Eesti +LANGUAGE_FILE +Eesti +LANGUAGE_ISO +et +LANGUAGE_AUTHOR +Tõnu Virma\r\n +LANGUAGE_CHARSET +ISO-8859-4 +OK +OK +Cancel +Loobu +Exit +Välju +Close +Sulge +Cancel changes +Loobu muudatuste tegemisest +Click to confirm +Kliki kinnitamiseks +Click to get help! +Kliki abi saamiseks! +Click to return to previous screen +Tagasi eelmisele ekraanile +Click to go to next screen +Edasi järgmisele ekraanile +Hide password +Peida parool +Save project +Salvesta projekt +Close current project? +Kas sulgeda käesolev projekt? +Delete this project? +Kas kustutada see projekt? +Delete empty project %s? +Kas kustutada tühi projekt %s? +Action not yet implemented +Tegevus ei ole veel lõpetatud +Error deleting this project +Viga selle projekti kustutamisel +Select a rule for the filter +Vali filtreerimisreegel +Enter keywords for the filter +Sisesta märksõnad filtri jaoks +Cancel +Loobu +Add this rule +Lisa see reegel +Please enter one or several keyword(s) for the rule +Sisesta palun üks või mitu märksõna reegli jaoks +Add Scan Rule +Lisa filtreerimisreegel +Criterion +Kriteerium: +String +Märksõna: +Add +Lisa +Scan Rules +Filtrid +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Kasuta asendajaid URL-ide või linkide välja- või kaasaarvamiseks.\nÜhele reale võib panna mitu skaneerimisstringi.\nEraldajana kasuta tühikuid.\n\nNäiteks: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Välja arvata lingid +Include link(s) +Kaasa arvata lingid +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Vihje: Et saada KÕIK GIF-failid kaasa arvatud, kasuta midagi taolist +www.someweb.com/*.gif. \n(+*.gif / -*.gif arvab kaasa/välja KÕIK GIF-id KÕIKIDEST saitidest) +Save prefs +Salvesta häälestus +Matching links will be excluded: +Vastavad lingid tuleb välja arvata: +Matching links will be included: +Vastavad lingid tuleb kaasa arvata: +Example: +Näidis: +gif\r\nWill match all GIF files +gif\r\nleiab kõik GIF-failid +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nleiab kõik failid, mis sisaldavad alamstringi 'blue', nagu 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nleiab faili 'bigfile.mov', aga mitte 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nleiab lingid, mille kaustanimes sisaldub 'cgi' nagu /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nleiab lingid, mille kaustanimeks on terve 'cgi-bin' string (aga mitte cgi-bin-2, näiteks) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nleiab seda alamstringi sisaldavad lingid, nagu www.someweb.com, private.someweb.com jne. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nleiab seda alamstringi sisaldavad lingid, nagu www.someweb.com, www.someweb.edu, private.someweb.otherweb.com jne. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nleiab lingid, mis vastavad alamstringile 'www.someweb.com' (aga mitte linke, nagu private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nleiab kõik seda alamstringi sisaldavad lingid, nagu www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html jne. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nleiab ainult faili 'www.test.com/test/someweb.html'. Sisestada tuleb täielik asukoht (URL + faili asukoht) +All links will match +Kõik lingid leitakse +Add exclusion filter +Lisa väljaarvamisfilter +Add inclusion filter +Lisa kaasaarvamisfilter +Existing filters +Olemasolevad filtrid +Cancel changes +Loobu muudatustest +Save current preferences as default values +Salvesta praegune häälestus vaikeväärtusena +Click to confirm +Kliki kinnituseks +No log files in %s! +%s ei ole ühtegi logifaili! +No 'index.html' file in %s! +%s ei ole faili 'index.html'! +Click to quit WinHTTrack Website Copier +Kliki WinHTTrack Website Copier'i sulgemiseks +View log files +Vaata logifaile +Browse HTML start page +Vaata HTML alguslehekülge +End of mirror +Veebikopeerimine lõpetatud +View log files +Vaata logifaile +Browse Mirrored Website +Sirvi kopeeritud veebisaiti +New project... +Uus projekt... +View error and warning reports +Vaata vea- ja hoiatusteraportit +View report +Vaata raportit +Close the log file window +Sulge logifaili aken +Info type: +Informatsiooni tüüp: +Errors +Vead +Infos +Info +Find +Otsi +Find a word +Otsi sõna +Info log file +Info logifail +Warning/Errors log file +Hoiatuste ja vigade logifail +Unable to initialize the OLE system +OLE süsteemi ei saa käivitada +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack ei leidnud määratud kaustast ühtegi katkestatud tirimise cache-faili! +Could not connect to provider +Ei saa luua ühendust +receive +vastuvõtt +request +päring +connect +ühendus +search +otsimine +ready +valmis +error +viga +Receiving files.. +Failide vastuvõtmine... +Parsing HTML file.. +HTML faili analüüsimine... +Purging files.. +Failide hävitamine... +Loading cache in progress.. +Cache'i laadimine.. +Parsing HTML file (testing links).. +HTML faili analüüsimine (linkide testimine)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Paus - Jätkamiseks vali [Saidikopeerimine]/[Peata ülekanne] +Finishing pending transfers - Select [Cancel] to stop now! +Pooleliolevate ülekannete lõpetamine - Kliki [Cancel], et lõpetada kohe! +scanning +skaneerimine +Waiting for scheduled time.. +Etteantud aja ootamine... +Connecting to provider +Ühendusevõtmine +[%d seconds] to go before start of operation +[%d sekundit] jäänud operatsiooni alguseni +Site mirroring in progress [%s, %s bytes] +Saidi kopeerimine [%s, %s baiti] +Site mirroring finished! +Saidikopeerimine on lõpetatud! +A problem occured during the mirroring operation\n +Saidikopeerimise käigus tekkis probleem\n +\nDuring:\n +\nOperatsioonil:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nVaata logifaili kui tarvis.\n\nKliki FINISH, et sulgeda WinHTTrack Website Copier.\n\nTänan WinHTTrack'i kasutamise eest! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Kopeerimisoperatsioon on lõpetatud.\nKliki Välju, et sulgeda WinHTTrack.\nVaata logifaili veendumaks, et kõik on korras.\n\nTänan WinHTTrack'i kasutamise eest! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * KOPEERIMINE KATKESTATUD! * *\r\nPraegune ajutine cache on vajalik igasuguse uuendamise jaoks ja sisaldab ainult käesoleva katkestatud seansi jooksul tiritud andmeid.\r\nEelmine cache võib sisaldada põhjalikumat informatsiooni; kui sa ei taha seda informatsiooni kaotada, tuleb see taastada ja kustutada praegune cache.\r\n[Märkus: Seda on siin lihtne teha, kustutades hts-cache/new.* failid]\r\n\r\nKas arvad, et eelmine cache võib sisaldada põhjalikumat informatsiooni, ja kas tahad seda taastada? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * KOPEERIMISE VIGA! * *\r\nHTTrack leidis, et praegune veebikoopia on tühi. Kui see on uuendus, taastatakse eelmine koopia.\r\nPõhjus: esimest lehekülge ei leitud, või on ühenduse probleemid.\r\n=> Veendu, et veebisait ikka alles on, ja/või kontrolli proxy seadistust! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nVihje: Hoiatuste ja veateadete nägemiseks kliki [Vaata logifaili] +Error deleting a hts-cache/new.* file, please do it manually +Viga hts-cache/new.* faili kustutamisel, palun tee seda käsitsi +Do you really want to quit WinHTTrack Website Copier? +Kas sa tõesti tahad lõpetada WinHTTrack Website Copier'i kasutamise? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Kopeerimine -\n\nSisesta aadress(id) URL-i kasti +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Interaktiivne nõustaja (küsimused) -\n\nSisesta aadress(id) URL-i kasti +- File Download Mode -\n\nEnter file address(es) in URL box +- Failide tirimine -\n\nSisesta faili(de) aadress(id) URL-i kasti +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Linkide testimine -\n\nSisesta testitavaid linke sisaldava(te) leh(ted)e aadress(id) URL-i kasti +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Uuendamine -\n\nKontrolli aadressi URL-i kastis ja parameetreid kui tarvis, seejärel kliki nuppu 'NEXT' +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Jätkamine (katkestamise järel) -\n\nKontrolli aadressi URL-i kastis ja parameetreid kui tarvis, seejärel kliki nuppu 'NEXT' +Log files Path +Logifailide asukoht +Path +Asukoht +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Linkide listi järgi kopeerimine -\n\nSisesta URL-i kasti kopeeritavaid linke sisaldava(te) leh(ted)e aadress(id) +New project / Import? +Uus projekt / importida? +Choose criterion +Vali tegevus +Maximum link scanning depth +Linkide maksimaalne skaneerimissügavus +Enter address(es) here +Sisesta aadress(id) siia +Define additional filtering rules +Defineeri täiendavad filtreerimisreeglid +Proxy Name (if needed) +Proxy nimi (kui tarvis) +Proxy Port +Proxy port +Define proxy settings +Defineeri proxy seaded +Use standard HTTP proxy as FTP proxy +Kasuta standardset HTTP proxyt FTP proxyna +Path +Asukoht +Select Path +Vali asukoht +Path +Asukoht +Select Path +Vali asukoht +Quit WinHTTrack Website Copier +Lõpeta WinHTTrack Website Copier'i kasutamine +About WinHTTrack +Info WinHTTrack'i kohta +Save current preferences as default values +Salvesta praegune häälestus vaikeväärtusena +Click to continue +Kliki jätkamiseks +Click to define options +Kliki seadete defineerimiseks +Click to add a URL +Kliki URL-i lisamiseks +Load URL(s) from text file +Laadi URL(-id) tekstifailist +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack'i häälestus (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Addressinimekirja tekstifail (*.txt)|*.txt|| +File not found! +Faili ei leia! +Do you really want to change the project name/path? +Kas sa tõesti tahad muuta projekti nime/asukohta? +Load user-default options? +Kas laadida kasutaja vaikimisi seaded? +Save user-default options? +Kas salvestada kasutaja vaikimisi seaded? +Reset all default options? +Kas taastada kõik vaikimisi seaded? +Welcome to WinHTTrack! +Tere tulemast WinHTTrack'i! +Action: +Tegevus: +Max Depth +Maksimaalne sügavus: +Maximum external depth: +Maksimaalne väline sügavus: +Filters (refuse/accept links) : +Filtrid (linkide välja-/kaasaarvamiseks): +Paths +Asukohad +Save prefs +Salvesta seaded +Define.. +Defineeri... +Set options.. +Defineeri seaded... +Preferences and mirror options: +Kopeerimise häälestus: +Project name +Projekti nimi +Add a URL... +Lisa URL... +Web Addresses: (URL) +Veebiaadressid: (URL) +Stop WinHTTrack? +Kas peatada WinHTTrack? +No log files in %s! +%s ei ole ühtegi logifaili! +Pause Download? +Kas peatada tirimine? +Stop the mirroring operation +Peata kopeerimine +Minimize to System Tray +Minimeeri süsteemialasse +Click to skip a link or stop parsing +Kliki lingi vahelejätmiseks või kopeerimise peatamiseks +Click to skip a link +Kliki lingi vahelejätmiseks +Bytes saved +Salvestatud baite: +Links scanned +Skaneeritud linke: +Time: +Aeg: +Connections: +Ühendusi: +Running: +Käimas on: +Hide +Peida +Transfer rate +Ülekandekiirus: +SKIP +Jäta vahele +Information +Informatsioon +Files written: +Faile kirjutatud: +Files updated: +Faile uuendatud: +Errors: +Vigu: +In progress: +Tegevus: +Follow external links +Järgi välislinke +Test all links in pages +Testi kõik lingid lehekülgedel +Try to ferret out all links +Püüa välja nuhkida kõik lingid +Download HTML files first (faster) +Tiri HTML-failid kõigepealt (kiirem) +Choose local site structure +Vali kohaliku saidi struktuur +Set user-defined structure on disk +Defineeri oma saidistruktuur kettal +Use a cache for updates and retries +Kasuta cache'i uuenduste ja korduste tarvis +Do not update zero size or user-erased files +Ära uuenda nullsuurusega või kasutaja poolt kustutatud faile +Create a Start Page +Tee alguslehekülg +Create a word database of all html pages +Loo kõigi HTML-lehekülgede sõnade andmebaas +Create error logging and report files +Tee vealogi ja raporti failid +Generate DOS 8-3 filenames ONLY +Genereeri AINULT DOS-i 8-3 failinimed +Generate ISO9660 filenames ONLY for CDROM medias +Genereeri AINULT ISO9660 failinimed CDROM-i jaoks +Do not create HTML error pages +Ära genereeri HTML vealehekülgi +Select file types to be saved to disk +Vali kettale salvestatavad failitüübid +Select parsing direction +Vali linkide järgimise suund +Select global parsing direction +Vali globaalne linkide järgimise suund +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Määra URL-ide ümberkirjutamise reeglid siselinkidele (mida tiritakse) ja välislinkidele (mida ei tirita) +Max simultaneous connections +Maksimaalselt ühendusi üheaegselt +File timeout +Maksimaalne faili ooteaeg +Cancel all links from host if timeout occurs +Tühista kõik selle hosti lingid, kui ooteaeg läbi saab +Minimum admissible transfer rate +Minimaalne lubatav ülekandekiirus +Cancel all links from host if too slow +Tühista kõik selle hosti lingid, kui on liiga aeglane +Maximum number of retries on non-fatal errors +Maksimaalne korduste arv mittefataalse vea korral +Maximum size for any single HTML file +Ühe HTML-faili maksimaalne suurus +Maximum size for any single non-HTML file +Ühe mitte-HTML faili maksimaalne suurus +Maximum amount of bytes to retrieve from the Web +Maksimaalne veebist välja otsitav baitide kogus +Make a pause after downloading this amount of bytes +Tee paus pärast selle baidikoguse tirimist +Maximum duration time for the mirroring operation +Kopeerimisoperatsiooni maksimaalne kestus +Maximum transfer rate +Maksimaalne ülekandekiirus +Maximum connections/seconds (avoid server overload) +Maksimum ühendusi sekundis (vältimaks serveri ülekoormust) +Maximum number of links that can be tested (not saved!) +Maksimaalne testitavate (mitte salvestatavate!) linkide hulk +Browser identity +Brauseri identiteet +Comment to be placed in each HTML file +Kommentaar, mis lisatakse igale HTML-failile +Back to starting page +Tagasi alguslehele +Save current preferences as default values +Salvesta praegune häälestus vaikeväärtusena +Click to continue +Kliki jätkamiseks +Click to cancel changes +Kliki muudatustest loobumiseks +Follow local robots rules on sites +Järgi saitide kohalikke robotireegleid +Links to non-localised external pages will produce error pages +Lingid kopeerimata välislehekülgedele tekitavad vealehekülgi +Do not erase obsolete files after update +Ära kustuta vananenud faile peale uuendamist +Accept cookies? +Kas aktsepteerida küpsiseid? +Check document type when unknown? +Kas kontrollida dokumendi tüüpi, kui on tundmatu? +Parse java applets to retrieve included files that must be downloaded? +Kas analüüsida java aplette vajalike lisafailide väljaotsimiseks? +Store all files in cache instead of HTML only +Säilitada kõik failid cache'is, mitte ainult HTML-i kujul +Log file type (if generated) +Logifaili tüüp (kui on genereeritud) +Maximum mirroring depth from root address +Maksimaalne kopeerimissügavus algusaadressi suhtes +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Väliste/keelatud aadresside maksimaalne kopeerimissügavus (vaikimisi 0, s.t. üldse mitte) +Create a debugging file +Tee veakontrollifail +Use non-standard requests to get round some server bugs +Kasuta mittestandardset päringut mõnest serveri veast möödapääsemiseks +Use old HTTP/1.0 requests (limits engine power!) +Kasuta vana HTTP/1.0 päringut (piirab mootori võimalusi!) +Attempt to limit retransfers through several tricks (file size test..) +Püüa piirata korduvaid ülekandeid mitmesuguste trikkidega (failisuuruse test..) +Write external links without login/password +Kirjuta välislingid ilma sisselogimise/paroolita +Write internal links without query string +Kirjuta siselingid ilma päringustringita +Get non-HTML files related to a link, eg external .ZIP or pictures +Tiri mitte-HTML failid, nt välised ZIP-failid või pildid +Test all links (even forbidden ones) +Testi kõik lingid (ka keelatud) +Try to catch all URLs (even in unknown tags/code) +Püüa kätte saada kõik URL-id (ka tundmatud sildid/koodid) +Get HTML files first! +Tiri HTML-failid kõigepealt! +Structure type (how links are saved) +Struktuuritüüp (kuidas lingid salvestatakse) +Use a cache for updates +Kasuta cache'i uuenduste jaoks +Do not re-download locally erased files +Ära tiri uuesti kohalikke kustutatud faile +Make an index +Tee indeks +Make a word database +Tee sõnade andmebaas +Log files +Logifailid +DOS names (8+3) +DOS-i nimed (8+3) +ISO9660 names (CDROM) +ISO9660 nimed (CDROM) +No error pages +Ilma vealehekülgedeta +Primary Scan Rule +Peamine filter +Travel mode +Liikumisviis +Global travel mode +Globaalne liikumisviis +These options should be modified only exceptionally +Neid seadeid muuda ainult erandkorras +Activate Debugging Mode (winhttrack.log) +Aktiveeri veakontrolliolek (winhttrack.log) +Rewrite links: internal / external +Linkide muutmine: siselingid / välislingid +Flow control +Vookontroll +Limits +Piirangud +Identity +Identiteet +HTML footer +HTML-i jalus +N# connections +Ühenduste arv +Abandon host if error +Hülga host vea korral +Minimum transfer rate (B/s) +Minimaalne ülekandekiirus +Abandon host if too slow +Hülga host, kui on liiga aeglane +Configure +Konfigureeri +Use proxy for ftp transfers +Kasuta FTP ülekannete jaoks proxyt +TimeOut(s) +Ooteaeg +Persistent connections (Keep-Alive) +Püsivad ühendused +Reduce connection time and type lookup time using persistent connections +Vähenda ühenduse aega ja tüübiotsingu aega, kasutades püsivaid ühendusi +Retries +Kordusi +Size limit +Suuruse piirang +Max size of any HTML file (B) +HTML-faili maksimaalne suurus +Max size of any non-HTML file +Mitte-HTML faili maksimaalne suurus +Max site size +Saidi maksimaalne suurus +Max time +Maksimaalne aeg +Save prefs +Salvesta häälestus +Max transfer rate +Maksimaalne ülekandekiirus +Follow robots.txt +Järgi robots.txt reegleid +No external pages +Ilma välislehekülgedeta +Do not purge old files +Ära hävita vanu faile +Accept cookies +Aktsepteeri küpsiseid +Check document type +Kontrolli dokumenditüüpe +Parse java files +Analüüsi Java faile +Store ALL files in cache +Säilita KÕIK failid cache'is +Tolerant requests (for servers) +Tolerantsed päringud (serverite jaoks) +Update hack (limit re-transfers) +Update hack (piirab korduvaid ülekandeid) +Force old HTTP/1.0 requests (no 1.1) +Kasuta vana HTTP/1.0 päringut (mitte 1.1) +Max connections / seconds +Maksimaalselt ühendusi sekundis +Maximum number of links +Maksimaalne linkide arv +Pause after downloading.. +Paus peale ... tirimist +Hide passwords +Peida paroolid +Hide query strings +Peida päringustringid +Links +Lingid +Build +Struktuur +Experts Only +Ekspertidele +Flow Control +Vookontroll +Limits +Piirangud +Browser ID +Brauser +Scan Rules +Filtrid +Spider +Spider +Log, Index, Cache +Logi, indeks, cache +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Kas sa tõesti tahad lõpetada WinHTTrack Website Copier'i kasutamise? +Do not connect to a provider (already connected) +Ära ühenda ühendusepakkujaga (juba ühendatud) +Do not use remote access connection +Ära kasuta kaugjuurdepääsuga ühendust +Schedule the mirroring operation +Programmeeri kopeerimisoperatsioon +Quit WinHTTrack Website Copier +Lõpeta WinHTTrack Website Copier'i kasutamine +Back to starting page +Tagasi algusleheküljele +Click to start! +Kliki käivitamiseks! +No saved password for this connection! +Selle ühenduse jaoks pole salvestatud parooli! +Can not get remote connection settings +Kaugühenduse seadeid ei saa kätte +Select a connection provider +Vali ühendusepakkuja +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Palun täpsusta ühenduse parameetreid, kui tarvis,\nsiis vajuta FINISH kopeerimisoperatsiooni käivitamiseks. +Save settings only, do not launch download now. +Salvesta seaded ainult. Ära alusta tirimist praegu. +On hold +Ootel +Transfer scheduled for: (hh/mm/ss) +Ülekanne on programmeeritud: (hh/mm/ss) +Start +Start +Connect to provider (RAS) +Ühenda ühendusepakkujaga (RAS) +Connect to this provider +Ühenda selle ühendusepakkujaga +Disconnect when finished +Lahuta ühendus, kui on lõpetatud +Disconnect modem on completion +Lahuta modem lõpetamisel +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Palun teata meile igast veast või probleemist)\r\n\r\nArendajad:\r\nKasutajaliides (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nEestikeelne tõlge: Tõnu Virma +About WinHTTrack Website Copier +Info WinHTTrack Website Copier'i kohta +Please visit our Web page +Külasta palun meie veebilehekülge! +Wizard query +Nõustaja päring +Your answer: +Sinu vastus: +Link detected.. +Leitud link... +Choose a rule +Vali reegel +Ignore this link +Ignoreeri seda linki +Ignore directory +Ignoreeri kausta +Ignore domain +Ignoreeri domeeni +Catch this page only +Võta ainult see lehekülg +Mirror site +Saidi kopeerimine +Mirror domain +Domeeni kopeerimine +Ignore all +Ignoreeri kõiki +Wizard query +Nõustaja päring +NO +EI +File +Fail +Options +Seaded +Log +Logi +Window +Aken +Help +Abi +Pause transfer +Peata ülekanne +Exit +Välju +Modify options +Muuda seadeid +View log +Vaata logi +View error log +Vaata vealogi +View file transfers +Vaata failiülekandeid +Hide +Peida +About WinHTTrack Website Copier +&WinHTTrack Website Copier'i info +Check program updates... +Leia &uuemat versiooni... +&Toolbar +&Nupuriba +&Status Bar +&Staatuseriba +S&plit +&Jaota +File +&Fail +Preferences +&Häälestus +Mirror +&Saidikopeerimine +Log +&Logi +Window +A&ken +Help +&Abi +Exit +&Välju +Load default options +Laadi vaikimisi seaded +Save default options +Salvesta vaikimisi seaded +Reset to default options +Taasta vaikimisi seaded +Load options... +Laadi seaded... +Save options as... +Salvesta seaded faili... +Language preference... +Keele valik... +Contents... +Indeks +About WinHTTrack... +Info WinHTTrack'i kohta... +New project\tCtrl+N +&Uus projekt\tCtrl+N +&Open...\tCtrl+O +&Ava...\tCtrl+O +&Save\tCtrl+S +&Salvesta\tCtrl+S +Save &As... +Salvesta &failina... +&Delete... +&Kustuta... +&Browse sites... +Si&rvi saite... +User-defined structure +Kasutaja-defineeritud struktuur +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tFaili nimi ilma laiendita (nt: image)\r\n%N\tFaili nimi koos laiendiga (nt: image.gif)\r\n%t\tFaili laiend ainult (nt: gif)\r\n%p\tAsukoht [ilma /-ta lõpus] (nt: /someimages)\r\n%h\tHosti nimi (nt: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tDOS-i lühinimi (nt: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Näidis:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Proxy seaded +Proxy address: +Proxy aadress: +Proxy port: +Proxy port: +Authentication (only if needed) +Identifitseerimine (vajaduse korral) +Login +Kasutajanimi +Password +Parool +Enter proxy address here +Sisesta proxy aadress siia +Enter proxy port here +Sisesta proxy port siia +Enter proxy login +Sisesta proxy kasutajanimi +Enter proxy password +Sisesta proxy parool +Enter project name here +Sisesta siia projekti nimi +Enter saving path here +Sisesta siia asukoht projekti salvestamiseks +Select existing project to update +Vali olemasolev projekt uuendamiseks +Click here to select path +Kliki siin asukoha valimiseks +HTTrack Project Wizard... +HTTrack'i projektinõustaja +New project name: +Uue projekti nimi: +Existing project name: +Olemasoleva projekti nimi: +Project name: +Projekti nimi: +Base path: +Baas-asukoht: +C:\\My Web Sites +C:\\Minu veebisaidid +Type a new project name, \r\nor select existing project to update/resume +Sisesta uue projekti nimi, \r\nvõi vali olemasolev projekt uuendamiseks/jätkamiseks +New project +Uus projekt +Insert URL +Sisesta URL +URL: +URL: +Authentication (only if needed) +Identifitseerimine (vajaduse korral) +Login +Kasutajanimi +Password +Parool +Forms or complex links: +Vormid või keerulised lingid: +Capture URL... +Püüa URL... +Enter URL address(es) here +Sisesta URL aadress(id) siia +Enter site login +Sisesta saidi kasutajanimi +Enter site password +Sisesta saidi parool +Use this capture tool for links that can only be accessed through forms or javascript code +Kasuta seda püüdevahendit linkide korral, millele pääseb ligi ainult vormide või javascripti koodide kaudu +Choose language according to preference +Vali kasutuskeel +Catch URL! +Püüa URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Palun sea oma brauseri proxy häälestus ajutiselt järgmistele väärtustele (kopeeri/kleebi proxy aadress ja port).\nSiis kliki vormi SUBMIT-nuppu brauseri leheküljel, või kliki spetsiifilist linki, mida tahad püüda. +This will send the desired link from your browser to WinHTTrack. +See saadab soovitud lingi sinu brauserist WinHTTrack'ile. +ABORT +LOOBU +Copy/Paste the temporary proxy parameters here +Kopeeri/kleebi ajutised proxy parameetrid siit +Cancel +Loobu +Unable to find Help files! +Abiinfo faile ei leia! +Unable to save parameters! +Parameetreid ei saa salvestada! +Please drag only one folder at a time +Palun lohista ainult üks kaust korraga +Please drag only folders, not files +Palun lohista ainult kaustu, mitte faile +Please drag folders only +Palun lohista ainult kaustu +Select user-defined structure? +Kas valida kasutaja-defineeritud struktuur? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Palun veendu, et kasutaja defineeritud stringid on ikka korrektsed,\nvastasel juhul tulevad failinimed vigased! +Do you really want to use a user-defined structure? +Kas sa tõesti tahad valida kasutaja-defineeritud struktuuri? +Too manu URLs, cannot handle so many links!! +Liiga palju URL-e. Nii palju linke ei suuda käsitleda!! +Not enough memory, fatal internal error.. +Mälu ei ole piisavalt, fataalne sisemine viga... +Unknown operation! +Tundmatu operatsioon! +Add this URL?\r\n +Kas lisada see URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Hoiatus: põhiprotsess ei reageeri ikka veel, ei saa lisada URL-e... +Type/MIME associations +Tüüp/MIME seosed +File types: +Failitüübid: +MIME identity: +MIME identiteet: +Select or modify your file type(s) here +Vali või muuda oma failitüüpe siin +Select or modify your MIME type(s) here +Vali või muuda oma MIME-tüüpe siin +Go up +Mine üles +Go down +Mine alla +File download information +Failitirimise informatsioon +Freeze Window +Fikseeri aken +More information: +Täiendav informatsioon: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Tere tulemast WinHTTrack Website Copier'i!\n\nPalun kliki NEXT-nuppu, et\n\n- alustada uut projekti või\n- jätkata pooleliolevat tirimist +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Failinimed laiendiga:\nFailinimed, mis sisaldavad:\nSee failinimi:\nKaustanimed, mis sisaldavad:\nSee kaustanimi:\nLingid selles domeenis:\nLingid domeenides, mis sisaldavad:\nLingid sellest hostist:\nLingid, mis sisaldavad:\nSee link:\nKÕIK LINGID +Show all\nHide debug\nHide infos\nHide debug and infos +Näita kõik\nPeida veakontroll\nPeida info\nPeida veakontroll ja info +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Saidi struktuur (vaikimisi)\nHtml -> web/, pildid/teised failid -> web/images/\nHtml -> web/html/, pildid/teised -> web/images/\nHtml -> web/, pildid/teised -> web/\nHtml -> web/, pildid/teised -> web/xxx/ (kus xxx on faili laiend)\nHtml -> web/html/, pildid/teised -> web/xxx/\nSaidi struktuur, ilma www.domain.xxx/\nHtml -> saidi_nimi/, pildid/teised failid -> saidi_nimi/images/\nHtml -> saidi_nimi/html/, pildid/teised -> saidi_nimi/images/\nHtml -> saidi_nimi/, pildid/teised -> saidi_nimi/\nHtml -> saidi_nimi/, pildid/teised -> saidi_nimi/xxx/\nHtml -> saidi_nimi/html/, pildid/teised -> saidi_nimi/xxx/\nKõik failid -> web/ (juhuslike nimedega)\nKõik failid -> saidi_nimi/ (juhuslike nimedega)\nKasutaja defineeritud struktuur... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Skaneeri ainult\nSalvesta HTML-failid\nSalvesta mitte-HTML failid\nSalvesta kõik failid (vaikimisi)\nSalvesta HTML-failid kõigepealt +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Jää samasse kausta\nVõib minna alla (vaikimisi)\nVõib minna üles\nVõib minna nii üles kui alla +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Jää samale aadressile (vaikimisi)\nJää samasse domeeni\nJää samasse üladomeeni\n Mine igale poole veebis +Never\nIf unknown (except /)\nIf unknown +Mitte kunagi\nKui on tundmatu (v.a. /)\nKui on tundmatu +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +ilma robots.txt reegliteta\nrobots.txt v.a. nõustaja\njärgi robots.txt reegleid +normal\nextended\ndebug +normaalne\nlaiendatud\nveakontrolliga +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Tiri veebisaidid\nTiri veebisaidid + küsimused\nTiri eraldi failid\nTiri kõik saidid lehtedel (hulgikopeerimine)\nTesti lingid lehtedel (järjehoidjate test)\n* Jätka katkestatud tirimist\n* Uuenda olemasolevat +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Suhteline URI / Absoluutne URL (vaikimisi)\nAbsoluutne URL / Absoluutne URL\nAbsoluutne URI / Absoluutne URL\nAlgne URL / Algne URL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/English.txt b/lang/English.txt new file mode 100755 index 0000000..ddcd087 --- /dev/null +++ b/lang/English.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +English +LANGUAGE_FILE +English +LANGUAGE_ISO +en +LANGUAGE_AUTHOR +Xavier Roche (roche at httrack.com)\r\nRobert Lagadec (rlagadec at yahoo.fr) \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +OK +Cancel +Cancel +Exit +Exit +Close +Close +Cancel changes +Cancel changes +Click to confirm +Click to confirm +Click to get help! +Click to get help! +Click to return to previous screen +Click to return to previous screen +Click to go to next screen +Click to go to next screen +Hide password +Hide password +Save project +Save project +Close current project? +Close current project? +Delete this project? +Delete this project? +Delete empty project %s? +Delete empty project %s? +Action not yet implemented +Action not yet implemented +Error deleting this project +Error deleting this project +Select a rule for the filter +Select a rule for the filter +Enter keywords for the filter +Enter keywords for the filter +Cancel +Cancel +Add this rule +Add this rule +Please enter one or several keyword(s) for the rule +Please enter one or several keyword(s) for the rule +Add Scan Rule +Add Scan Rule +Criterion +Criterion +String +String +Add +Add +Scan Rules +Scan Rules +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Exclude links +Include link(s) +Include link(s) +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Save prefs +Save prefs +Matching links will be excluded: +Matching links will be excluded: +Matching links will be included: +Matching links will be included: +Example: +Example: +gif\r\nWill match all GIF files +gif\r\nWill match all GIF files +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +All links will match +All links will match +Add exclusion filter +Add exclusion filter +Add inclusion filter +Add inclusion filter +Existing filters +Existing filters +Cancel changes +Cancel changes +Save current preferences as default values +Save current preferences as default values +Click to confirm +Click to confirm +No log files in %s! +No log files in %s! +No 'index.html' file in %s! +No 'index.html' file in %s! +Click to quit WinHTTrack Website Copier +Click to quit WinHTTrack Website Copier +View log files +View log files +Browse HTML start page +Browse HTML start page +End of mirror +End of mirror +View log files +View log files +Browse Mirrored Website +Browse Mirrored Website +New project... +New project... +View error and warning reports +View error and warning reports +View report +View report +Close the log file window +Close the log file window +Info type: +Info type: +Errors +Errors +Infos +Infos +Find +Find +Find a word +Find a word +Info log file +Info log file +Warning/Errors log file +Warning/Errors log file +Unable to initialize the OLE system +Unable to initialize the OLE system +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack could not find any interrupted download file cache in the specified folder! +Could not connect to provider +Could not connect to provider +receive +receive +request +request +connect +connect +search +search +ready +ready +error +error +Receiving files.. +Receiving files.. +Parsing HTML file.. +Parsing HTML file.. +Purging files.. +Purging files.. +Loading cache in progress.. +Loading cache in progress.. +Parsing HTML file (testing links).. +Parsing HTML file (testing links).. +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pause - Toggle [Mirror]/[Pause download] to resume operation +Finishing pending transfers - Select [Cancel] to stop now! +Finishing pending transfers - Select [Cancel] to stop now! +scanning +scanning +Waiting for scheduled time.. +Waiting for scheduled time.. +Connecting to provider +Connecting to provider +[%d seconds] to go before start of operation +[%d seconds] to go before start of operation +Site mirroring in progress [%s, %s bytes] +Site mirroring in progress [%s, %s bytes] +Site mirroring finished! +Site mirroring finished! +A problem occured during the mirroring operation\n +A problem occured during the mirroring operation\n +\nDuring:\n +\nDuring:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nTip: Click [View log file] to see warning or error messages +Error deleting a hts-cache/new.* file, please do it manually +Error deleting a hts-cache/new.* file, please do it manually +Do you really want to quit WinHTTrack Website Copier? +Do you really want to quit WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Mirroring Mode -\n\nEnter address(es) in URL box +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- File Download Mode -\n\nEnter file address(es) in URL box +- File Download Mode -\n\nEnter file address(es) in URL box +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +Log files Path +Log files Path +Path +Path +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +New project / Import? +New project / Import? +Choose criterion +Choose criterion +Maximum link scanning depth +Maximum link scanning depth +Enter address(es) here +Enter address(es) here +Define additional filtering rules +Define additional filtering rules +Proxy Name (if needed) +Proxy Name (if needed) +Proxy Port +Proxy Port +Define proxy settings +Define proxy settings +Use standard HTTP proxy as FTP proxy +Use standard HTTP proxy as FTP proxy +Path +Path +Select Path +Select Path +Path +Path +Select Path +Select Path +Quit WinHTTrack Website Copier +Quit WinHTTrack Website Copier +About WinHTTrack +About WinHTTrack +Save current preferences as default values +Save current preferences as default values +Click to continue +Click to continue +Click to define options +Click to define options +Click to add a URL +Click to add a URL +Load URL(s) from text file +Load URL(s) from text file +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack preferences (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Address List text file (*.txt)|*.txt|| +File not found! +File not found! +Do you really want to change the project name/path? +Do you really want to change the project name/path? +Load user-default options? +Load user-default options? +Save user-default options? +Save user-default options? +Reset all default options? +Reset all default options? +Welcome to WinHTTrack! +Welcome to WinHTTrack! +Action: +Action: +Max Depth +Max Depth +Maximum external depth: +Maximum external depth: +Filters (refuse/accept links) : +Filters (refuse/accept links) : +Paths +Paths +Save prefs +Save prefs +Define.. +Define.. +Set options.. +Set options.. +Preferences and mirror options: +Preferences and mirror options: +Project name +Project name +Add a URL... +Add a URL... +Web Addresses: (URL) +Web Addresses: (URL) +Stop WinHTTrack? +Stop WinHTTrack? +No log files in %s! +No log files in %s! +Pause Download? +Pause Download? +Stop the mirroring operation +Stop the mirroring operation +Minimize to System Tray +Minimize to System Tray +Click to skip a link or stop parsing +Click to skip a link or stop parsing +Click to skip a link +Click to skip a link +Bytes saved +Bytes saved +Links scanned +Links scanned +Time: +Time: +Connections: +Connections: +Running: +Running: +Hide +Hide +Transfer rate +Transfer rate +SKIP +SKIP +Information +Information +Files written: +Files written: +Files updated: +Files updated: +Errors: +Errors: +In progress: +In progress: +Follow external links +Follow external links +Test all links in pages +Test all links in pages +Try to ferret out all links +Try to ferret out all links +Download HTML files first (faster) +Download HTML files first (faster) +Choose local site structure +Choose local site structure +Set user-defined structure on disk +Set user-defined structure on disk +Use a cache for updates and retries +Use a cache for updates and retries +Do not update zero size or user-erased files +Do not update zero size or user-erased files +Create a Start Page +Create a Start Page +Create a word database of all html pages +Create a word database of all html pages +Create error logging and report files +Create error logging and report files +Generate DOS 8-3 filenames ONLY +Generate DOS 8-3 filenames ONLY +Generate ISO9660 filenames ONLY for CDROM medias +Generate ISO9660 filenames ONLY for CDROM medias +Do not create HTML error pages +Do not create HTML error pages +Select file types to be saved to disk +Select file types to be saved to disk +Select parsing direction +Select parsing direction +Select global parsing direction +Select global parsing direction +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Max simultaneous connections +Max simultaneous connections +File timeout +File timeout +Cancel all links from host if timeout occurs +Cancel all links from host if timeout occurs +Minimum admissible transfer rate +Minimum admissible transfer rate +Cancel all links from host if too slow +Cancel all links from host if too slow +Maximum number of retries on non-fatal errors +Maximum number of retries on non-fatal errors +Maximum size for any single HTML file +Maximum size for any single HTML file +Maximum size for any single non-HTML file +Maximum size for any single non-HTML file +Maximum amount of bytes to retrieve from the Web +Maximum amount of bytes to retrieve from the Web +Make a pause after downloading this amount of bytes +Make a pause after downloading this amount of bytes +Maximum duration time for the mirroring operation +Maximum duration time for the mirroring operation +Maximum transfer rate +Maximum transfer rate +Maximum connections/seconds (avoid server overload) +Maximum connections/seconds (avoid server overload) +Maximum number of links that can be tested (not saved!) +Maximum number of links that can be tested (not saved!) +Browser identity +Browser identity +Comment to be placed in each HTML file +Comment to be placed in each HTML file +Back to starting page +Back to starting page +Save current preferences as default values +Save current preferences as default values +Click to continue +Click to continue +Click to cancel changes +Click to cancel changes +Follow local robots rules on sites +Follow local robots rules on sites +Links to non-localised external pages will produce error pages +Links to non-localised external pages will produce error pages +Do not erase obsolete files after update +Do not erase obsolete files after update +Accept cookies? +Accept cookies? +Check document type when unknown? +Check document type when unknown? +Parse java applets to retrieve included files that must be downloaded? +Parse java applets to retrieve included files that must be downloaded? +Store all files in cache instead of HTML only +Store all files in cache instead of HTML only +Log file type (if generated) +Log file type (if generated) +Maximum mirroring depth from root address +Maximum mirroring depth from root address +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Create a debugging file +Create a debugging file +Use non-standard requests to get round some server bugs +Use non-standard requests to get round some server bugs +Use old HTTP/1.0 requests (limits engine power!) +Use old HTTP/1.0 requests (limits engine power!) +Attempt to limit retransfers through several tricks (file size test..) +Attempt to limit retransfers through several tricks (file size test..) +Write external links without login/password +Write external links without login/password +Write internal links without query string +Write internal links without query string +Get non-HTML files related to a link, eg external .ZIP or pictures +Get non-HTML files related to a link, eg external .ZIP or pictures +Test all links (even forbidden ones) +Test all links (even forbidden ones) +Try to catch all URLs (even in unknown tags/code) +Try to catch all URLs (even in unknown tags/code) +Get HTML files first! +Get HTML files first! +Structure type (how links are saved) +Structure type (how links are saved) +Use a cache for updates +Use a cache for updates +Do not re-download locally erased files +Do not re-download locally erased files +Make an index +Make an index +Make a word database +Make a word database +Log files +Log files +DOS names (8+3) +DOS names (8+3) +ISO9660 names (CDROM) +ISO9660 names (CDROM) +No error pages +No error pages +Primary Scan Rule +Primary Scan Rule +Travel mode +Travel mode +Global travel mode +Global travel mode +These options should be modified only exceptionally +These options should be modified only exceptionally +Activate Debugging Mode (winhttrack.log) +Activate Debugging Mode (winhttrack.log) +Rewrite links: internal / external +Rewrite links: internal / external +Flow control +Flow control +Limits +Limits +Identity +Identity +HTML footer +HTML footer +N# connections +N# connections +Abandon host if error +Abandon host if error +Minimum transfer rate (B/s) +Minimum transfer rate (B/s) +Abandon host if too slow +Abandon host if too slow +Configure +Configure +Use proxy for ftp transfers +Use proxy for ftp transfers +TimeOut(s) +TimeOut(s) +Persistent connections (Keep-Alive) +Persistent connections (Keep-Alive) +Reduce connection time and type lookup time using persistent connections +Reduce connection time and type lookup time using persistent connections +Retries +Retries +Size limit +Size limit +Max size of any HTML file (B) +Max size of any HTML file (B) +Max size of any non-HTML file +Max size of any non-HTML file +Max site size +Max site size +Max time +Max time +Save prefs +Save prefs +Max transfer rate +Max transfer rate +Follow robots.txt +Follow robots.txt +No external pages +No external pages +Do not purge old files +Do not purge old files +Accept cookies +Accept cookies +Check document type +Check document type +Parse java files +Parse java files +Store ALL files in cache +Store ALL files in cache +Tolerant requests (for servers) +Tolerant requests (for servers) +Update hack (limit re-transfers) +Update hack (limit re-transfers) +Force old HTTP/1.0 requests (no 1.1) +Force old HTTP/1.0 requests (no 1.1) +Max connections / seconds +Max connections / seconds +Maximum number of links +Maximum number of links +Pause after downloading.. +Pause after downloading.. +Hide passwords +Hide passwords +Hide query strings +Hide query strings +Links +Links +Build +Build +Experts Only +Experts Only +Flow Control +Flow Control +Limits +Limits +Browser ID +Browser ID +Scan Rules +Scan Rules +Spider +Spider +Log, Index, Cache +Log, Index, Cache +Proxy +Proxy +MIME Types +MIME Types +Do you really want to quit WinHTTrack Website Copier? +Do you really want to quit WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Do not connect to a provider (already connected) +Do not use remote access connection +Do not use remote access connection +Schedule the mirroring operation +Schedule the mirroring operation +Quit WinHTTrack Website Copier +Quit WinHTTrack Website Copier +Back to starting page +Back to starting page +Click to start! +Click to start! +No saved password for this connection! +No saved password for this connection! +Can not get remote connection settings +Can not get remote connection settings +Select a connection provider +Select a connection provider +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Save settings only, do not launch download now. +Save settings only, do not launch download now. +On hold +On hold +Transfer scheduled for: (hh/mm/ss) +Transfer scheduled for: (hh/mm/ss) +Start +Start +Connect to provider (RAS) +Connect to provider (RAS) +Connect to this provider +Connect to this provider +Disconnect when finished +Disconnect when finished +Disconnect modem on completion +Disconnect modem on completion +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +About WinHTTrack Website Copier +About WinHTTrack Website Copier +Please visit our Web page +Please visit our Web page +Wizard query +Wizard query +Your answer: +Your answer: +Link detected.. +Link detected.. +Choose a rule +Choose a rule +Ignore this link +Ignore this link +Ignore directory +Ignore directory +Ignore domain +Ignore domain +Catch this page only +Catch this page only +Mirror site +Mirror site +Mirror domain +Mirror domain +Ignore all +Ignore all +Wizard query +Wizard query +NO +NO +File +File +Options +Options +Log +Log +Window +Window +Help +Help +Pause transfer +Pause transfer +Exit +Exit +Modify options +Modify options +View log +View log +View error log +View error log +View file transfers +View file transfers +Hide +Hide +About WinHTTrack Website Copier +About WinHTTrack Website Copier +Check program updates... +Check program updates... +&Toolbar +&Toolbar +&Status Bar +&Status Bar +S&plit +S&plit +File +File +Preferences +Preferences +Mirror +Mirror +Log +Log +Window +Window +Help +Help +Exit +Exit +Load default options +Load default options +Save default options +Save default options +Reset to default options +Reset to default options +Load options... +Load options... +Save options as... +Save options as... +Language preference... +Language preference... +Contents... +Contents... +About WinHTTrack... +About WinHTTrack... +New project\tCtrl+N +New project\tCtrl+N +&Open...\tCtrl+O +&Open...\tCtrl+O +&Save\tCtrl+S +&Save\tCtrl+S +Save &As... +Save &As... +&Delete... +&Delete... +&Browse sites... +&Browse sites... +User-defined structure +User-defined structure +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Proxy settings +Proxy address: +Proxy address: +Proxy port: +Proxy port: +Authentication (only if needed) +Authentication (only if needed) +Login +Login +Password +Password +Enter proxy address here +Enter proxy address here +Enter proxy port here +Enter proxy port here +Enter proxy login +Enter proxy login +Enter proxy password +Enter proxy password +Enter project name here +Enter project name here +Enter saving path here +Enter saving path here +Select existing project to update +Select existing project to update +Click here to select path +Click here to select path +HTTrack Project Wizard... +HTTrack Project Wizard... +New project name: +New project name: +Existing project name: +Existing project name: +Project name: +Project name: +Base path: +Base path: +C:\\My Web Sites +C:\\My Web Sites +Type a new project name, \r\nor select existing project to update/resume +Type a new project name, \r\nor select existing project to update/resume +New project +New project +Insert URL +Insert URL +URL: +URL: +Authentication (only if needed) +Authentication (only if needed) +Login +Login +Password +Password +Forms or complex links: +Forms or complex links: +Capture URL... +Capture URL... +Enter URL address(es) here +Enter URL address(es) here +Enter site login +Enter site login +Enter site password +Enter site password +Use this capture tool for links that can only be accessed through forms or javascript code +Use this capture tool for links that can only be accessed through forms or javascript code +Choose language according to preference +Choose language according to preference +Catch URL! +Catch URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +This will send the desired link from your browser to WinHTTrack. +This will send the desired link from your browser to WinHTTrack. +ABORT +ABORT +Copy/Paste the temporary proxy parameters here +Copy/Paste the temporary proxy parameters here +Cancel +Cancel +Unable to find Help files! +Unable to find Help files! +Unable to save parameters! +Unable to save parameters! +Please drag only one folder at a time +Please drag only one folder at a time +Please drag only folders, not files +Please drag only folders, not files +Please drag folders only +Please drag folders only +Select user-defined structure? +Select user-defined structure? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Do you really want to use a user-defined structure? +Do you really want to use a user-defined structure? +Too manu URLs, cannot handle so many links!! +Too manu URLs, cannot handle so many links!! +Not enough memory, fatal internal error.. +Not enough memory, fatal internal error.. +Unknown operation! +Unknown operation! +Add this URL?\r\n +Add this URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Warning: main process is still not responding, cannot add URL(s).. +Type/MIME associations +Type/MIME associations +File types: +File types: +MIME identity: +MIME identity: +Select or modify your file type(s) here +Select or modify your file type(s) here +Select or modify your MIME type(s) here +Select or modify your MIME type(s) here +Go up +Go up +Go down +Go down +File download information +File download information +Freeze Window +Freeze Window +More information: +More information: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Show all\nHide debug\nHide infos\nHide debug and infos +Show all\nHide debug\nHide infos\nHide debug and infos +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Never\nIf unknown (except /)\nIf unknown +Never\nIf unknown (except /)\nIf unknown +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +normal\nextended\ndebug +normal\nextended\ndebug +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Open Source offline browser +Open Source offline browser +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, offline browser +URL list (.txt) +URL list (.txt) +Previous +Previous +Next +Next +URLs +URLs +Warning +Warning +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Thank you +Thank you +You can now close this window +You can now close this window +Server terminated +Server terminated +A fatal error has occured during this mirror +A fatal error has occured during this mirror diff --git a/lang/Francais.txt b/lang/Francais.txt new file mode 100755 index 0000000..62ef63a --- /dev/null +++ b/lang/Francais.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Français +LANGUAGE_FILE +Francais +LANGUAGE_ISO +fr +LANGUAGE_AUTHOR +Xavier Roche (roche at httrack.com)\r\nRobert Lagadec (rlagadec at yahoo.fr) \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +Oui +Cancel +Annuler +Exit +Quitter +Close +Fermer +Cancel changes +Annuler les changements +Click to confirm +Cliquez pour confirmer +Click to get help! +Cliquez pour avoir de l'aide! +Click to return to previous screen +Pour revenir à la fenêtre précédente +Click to go to next screen +Pour passer à la fenêtre suivante +Hide password +Masquer le mot de passe +Save project +Enregistrer le projet +Close current project? +Fermer le projet courant? +Delete this project? +Supprimer ce projet? +Delete empty project %s? +Supprimer le projet vide %s? +Action not yet implemented +Cette fonction n'est pas encore disponible +Error deleting this project +Erreur lors de l'effacement de ce projet +Select a rule for the filter +Choisissez un critère pour le filtrage +Enter keywords for the filter +Entrez ici un mot-clé pour le filtrage +Cancel +Annuler +Add this rule +Ajouter cette règle de filtrage +Please enter one or several keyword(s) for the rule +Entrez un ou plusieurs mot(s)-clé(s) pour la règle de filtrage +Add Scan Rule +Ajouter une règle de filtrage +Criterion +Critère: +String +Mot-clé: +Add +Ajouter +Scan Rules +Règles de filtrage +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Utilisez les jokers pour définir des critères d'exclusion ou d'inclusion portant sur plusieurs URLs ou liens.\nVous pouvez regrouper les mots-clés sur une même ligne en les séparant par des espaces.\nExemple: +*.zip -www.*.com,-www.*.edu/cgi-bin/*.cgi +Exclude links +Liens à exclure.. +Include link(s) +Liens à inclure.. +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Pour inclure tous les fichiers GIF d'un seul site, utilisez par exemple +www.monweb.com/*.gif.\nPour inclure tous les GIFs de tous les sites visités, utilisez +*.gif.\nPour les exclure tous, utilisez -*.gif. +Save prefs +Enregistrer les options +Matching links will be excluded: +Les liens répondant à cette règle seront exclus +Matching links will be included: +Les liens répondant à cette règle seront inclus +Example: +Exemple: +gif\r\nWill match all GIF files +gif\r\ndétectera tous les fichiers GIF +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\ndétectera tous les fichiers contenant le mot blue, comme 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\ndétectera le fichier 'bigfile.mov', mais pas 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\ndétectera des liens contenant 'cgi', comme /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\ndétectera par exemple des liens contenant 'cgi-bin', mais pas 'cgi-bin-2' +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\ndétectera des liens comme www.someweb.com, private.someweb.com, etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\ndétectera des liens comme www.someweb.com, www.someweb.edu, private.someweb.otherweb.com, etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\ndétectera des liens comme www.someweb.com/... (mais pas ceux comme private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\ndétectera des liens comme www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\ndétectera uniquement www.test.com/test/someweb.html.\nNotez que vous avez à taper l'adresse complète (URL + Chemin du fichier) +All links will match +Tous les liens seront détectés +Add exclusion filter +Ajouter une règle d'exclusion +Add inclusion filter +Ajouter une règle d'inclusion +Existing filters +Règles de filtrage actuelles +Cancel changes +Annuler les changements +Save current preferences as default values +Enregistrer les réglages courants en tant que réglages par défaut +Click to confirm +Cliquez pour confirmer +No log files in %s! +Aucun fichier journal dans %s! +No 'index.html' file in %s! +Aucun fichier 'index.html' dans %s! +Click to quit WinHTTrack Website Copier +Cliquez pour quitter WinHTTrack Website Copier +View log files +Voir le fichier journal +Browse HTML start page +Ouvrir l'Index WinHTTrack des sites copiés +End of mirror +Fin de la copie du site +View log files +Voir le fichier journal +Browse Mirrored Website +Explorer la copie du site +New project... +Nouveau projet... +View error and warning reports +Voir messages d'erreur et d'avertissement +View report +Voir le rapport de copie +Close the log file window +Refermer le journal +Info type: +Entrées du journal: +Errors +Erreurs +Infos +Infos +Find +Rechercher +Find a word +Rechercher un mot +Info log file +Rapports de copie +Warning/Errors log file +Journal d'erreurs +Unable to initialize the OLE system +Impossible d'initialiser le système OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack WebSite Copier n'a pu trouver aucune trace de copie complète ou partielle de site dans le dossier indiqué +Could not connect to provider +Impossible d'établir la connexion +receive +réception +request +requête +connect +connexion +search +recherche +ready +prêt +error +erreur +Receiving files.. +Réception des fichiers +Parsing HTML file.. +Analyse des liens de la page... +Purging files.. +Effacement des fichiers qui ne sont plus répertoriés... +Loading cache in progress.. +Chargement du cache enc cours.. +Parsing HTML file (testing links).. +Test des liens de la page +Pause - Toggle [Mirror]/[Pause download] to resume operation +Interruption - Désélectionnez la commande 'Suspendre les téléchargements' pour reprendre (menu 'Copie de site') +Finishing pending transfers - Select [Cancel] to stop now! +Fin des transferts en cours - Cliquez sur [Annuler] pour terminer immédiatement ! +scanning +parcours +Waiting for scheduled time.. +Attente de l'heure programmée pour démarrer +Connecting to provider +Connexion au fournisseur d'accès +[%d seconds] to go before start of operation +Copie du site en attente (%d secondes) +Site mirroring in progress [%s, %s bytes] +Copie du site en cours (%s, %s octets) +Site mirroring finished! +Copie du site terminée! +A problem occured during the mirroring operation\n +Incident durant la copie du site\n +\nDuring:\n +Durant:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Voyez le fichier journal au besoin\n\nCliquez sur TERMINER pour quitter WinHTTrack\n\nMerci d'utiliser WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +la copie du site est terminée\nCliquez sur OK pour quitter WinHTTrack\nConsultez au besoin les fichiers journaux pour vérifier que tout s'est bien passé\n\nMerci d'utiliser WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * COPIE INTERROMPUE! * *\r\nLe cache temporaire actuel est nécessaire pour toute mise à jour et ne contient que les données téléchargées durant la présente session interrompue.\r\nIl est possible que le cache précédent contienne des données plus complètes; si vous ne voulez pas perdre ces données, vous devez le restaurer et effacer le cache actuel.\r\n[Note: Cette opération peut être facilement effectuée ici en effacant les fichiers hts-cache/new.*]\r\n\r\nPensez-vous que le cache précédent pourrait contenir des informations plus complètes, et voulez-vous le restaurer? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ERREUR DE COPIE! * *\r\nHTTrack a détecté que la copie courante était vide. Si il s'agissait d'une mise à jour, l'ancienne copie a été restaurée.\r\nRaison: soit la (les) première(s) page(s) n'ont pu être téléchargées, soit un problème de connexion est survenu.\r\n=> Vérifiez que le site existe toujours, et/ou vérifiez les réglages du proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +\nConseil: sélectionnez la commande 'Voir le fichier journal' pour visionner les messages d'erreur et d'avertissement +Error deleting a hts-cache/new.* file, please do it manually +Erreur lors de l'effacement d'un fichier hts-cache/new.*, veuillez l'effacer manuellement +Do you really want to quit WinHTTrack Website Copier? +Voulez-vous vraiment quitter WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Mode de copie de site automatique -\n\nUtilisez la boîte de dialogue pour entrer vos adresses URLs. +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Mode de copie de site interactive (questions) -\n\nUtilisez la boîte de dialogue pour entrer vos adresses URLs. +- File Download Mode -\n\nEnter file address(es) in URL box +- Mode téléchargement de fichiers -\n\nUtilisez la boîte de dialogue pour entrer vos adresses de fichiers. +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Mode test de liens -\n\nUtilisez la boîte de dialogue pour entrer les adresses des pages contenant les liens à tester. +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Mode mise à jour d'une copie de site -\n\nVérifiez les adresses URLs dans la liste, vérifiez les options au besoin, puis cliquez sur 'SUIVANT'. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Mode reprise d'une copie de site interrompue -\n\nVérifiez les adresses URLs dans la liste, vérifiez les options au besoin, puis cliquez sur 'SUIVANT'. +Log files Path +Chemin des fichiers journaux +Path +Chemin +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Mode copie de sites depuis des liens -\n\nUtilisez la boîte de dialogue pour entrer les adresses des pages contenant les liens à aspirer. +New project / Import? +Nouveau projet / importer? +Choose criterion +Choisissez un type d'action +Maximum link scanning depth +Profondeur maximale pour l'analyse des liens +Enter address(es) here +Entrez les adresses ici +Define additional filtering rules +Définir des règles de filtrage supplémentaires +Proxy Name (if needed) +Nom du serveur proxy si nécessaire +Proxy Port +Port du serveur proxy +Define proxy settings +Préciser les paramètres du serveur proxy +Use standard HTTP proxy as FTP proxy +Utiliser le serveur proxy HTTP standard comme serveur proxy FTP +Path +Chemin +Select Path +Choisissez le chemin +Path +Chemin +Select Path +Choisissez le chemin +Quit WinHTTrack Website Copier +Quittter WinHTTrack Website Copier +About WinHTTrack +A propos de WinHTTrack +Save current preferences as default values +Enregistrer ces réglages comme réglages par défaut +Click to continue +Cliquez pour continuer +Click to define options +Cliquez pour définir les options +Click to add a URL +Cliquez pour ajouter une adresse URL +Load URL(s) from text file +Importer des adresses URL depuis un fichier texte +WinHTTrack preferences (*.opt)|*.opt|| +Options de réglage de WinHTTrack (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Fichier texte avec liste d'adresses (*.txt)|*.txt|| +File not found! +Fichier introuvable! +Do you really want to change the project name/path? +Voulez-vous vraiment changer le nom/chemin du projet? +Load user-default options? +Charger la configuration personnalisée par défaut? +Save user-default options? +Enregistrer en tant que configuration personnalisée par défaut? +Reset all default options? +Effacer toutes les options par défaut? +Welcome to WinHTTrack! +Bienvenue dans WinHTTrack Website Copier! +Action: +Action: +Max Depth +Profondeur maximale: +Maximum external depth: +Profondeur exterieure: +Filters (refuse/accept links) : +Règles de filtrage (inclure/exclure des liens) : +Paths +Chemins +Save prefs +Enregistrer les options actuelles +Define.. +Définir... +Set options.. +Définir les options... +Preferences and mirror options: +Paramètres de la copie du site +Project name +Nom du projet +Add a URL... +Ajouter... +Web Addresses: (URL) +Adresse Web: (URL) +Stop WinHTTrack? +Stopper WinHTTrack? +No log files in %s! +Aucun fichier journal dans %s! +Pause Download? +Suspendre la copie du site? +Stop the mirroring operation +Arrêter la copie du site? +Minimize to System Tray +Minimiser en barre système +Click to skip a link or stop parsing +Cliquez pour sauter un lien ou interrompre sa copie +Click to skip a link +Cliquez pour sauter un lien +Bytes saved +Octets écrits: +Links scanned +Liens parcourus: +Time: +Temps: +Connections: +Connexions: +Running: +En cours: +Hide +Minimiser +Transfer rate +Taux transfert: +SKIP +PASSER +Information +Informations +Files written: +Fichiers écrits: +Files updated: +Fichiers mis à jour: +Errors: +Erreurs: +In progress: +En cours: +Follow external links +Récupérer les fichiers jusque sur les liens extérieurs +Test all links in pages +Tester tous les liens présents dans les pages +Try to ferret out all links +Essayer de repérer tous les liens +Download HTML files first (faster) +Télécharger d'abord les fichiers HTML (plus rapide) +Choose local site structure +Choisir la structure de site localisé +Set user-defined structure on disk +Définir les paramètres de la structure personnalisée +Use a cache for updates and retries +Utiliser un cache pour les mises à jour et reprises +Do not update zero size or user-erased files +Ne pas récupérer les fichiers déjà présents localement quand ils sont de taille nulle ou ont été effacés par l'utilisateur +Create a Start Page +Créer une page de démarrage +Create a word database of all html pages +Créer une base sémantique des pages html +Create error logging and report files +Créer des fichiers journaux pour les messages d'erreur et d'avertissement +Generate DOS 8-3 filenames ONLY +Ne créer QUE des noms de fichiers au format court 8-3 +Generate ISO9660 filenames ONLY for CDROM medias +Ne créer QUE des noms de fichiers au format ISO9660 poru les médias type CDROM +Do not create HTML error pages +Ne pas créer les fichiers journaux d'erreur HTML +Select file types to be saved to disk +Sélection des types de fichier à aspirer +Select parsing direction +Mode de parcours des liens sur le site +Select global parsing direction +Limites de la zone globale d'exploration +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Type de réécriture des URL pour les liens internes (ceux qui sont téléchargés) et les liens externes (ceux qui ne sont pas téléchargés) +Max simultaneous connections +Nombre maximal de connexions +File timeout +Attente maximale pour un fichier +Cancel all links from host if timeout occurs +Annuler tous les liens sur un domaine en cas d'attente excessive +Minimum admissible transfer rate +Taux de transfert minimal toléré +Cancel all links from host if too slow +Annuler tous les liens sur un domaine en cas de transfert trop lent +Maximum number of retries on non-fatal errors +Nombre maximum d'essais en cas d'erreur non fatale +Maximum size for any single HTML file +Taille maximale pour une page HTML +Maximum size for any single non-HTML file +Taille maximale pour un fichier non HTML +Maximum amount of bytes to retrieve from the Web +Taille totale maximale pour la copie locale du site +Make a pause after downloading this amount of bytes +Faire une pause après avoir téléchargé cette quantité de données +Maximum duration time for the mirroring operation +Temps total maximum pour une copie de site +Maximum transfer rate +Taux de transfert maximum +Maximum connections/seconds (avoid server overload) +Nombre max. de connexions/secondes (limite la surcharge des serveurs) +Maximum number of links that can be tested (not saved!) +Nombre maximum des liens qui peuvent être testés (pas sauvés!) +Browser identity +Identifiants du Navigateur Internet +Comment to be placed in each HTML file +Commentaire de page placé dans chaque fichier HTML +Back to starting page +Retour à la page de démarrage +Save current preferences as default values +Enregistrer les réglages courants comme paramètres par défaut +Click to continue +Cliquez pour continuer +Click to cancel changes +Cliquez pour annuler +Follow local robots rules on sites +Suivi des règles locales des robots sur les sites +Links to non-localised external pages will produce error pages +Les liens vers des pages hors du domaine d'exploration engendreront des pages locales avec message d'erreur +Do not erase obsolete files after update +Ne pas effacer les fichiers obsolètes après une mise à jour +Accept cookies? +Accepter les cookies? +Check document type when unknown? +Vérifier le type du document quand il est inconnu? +Parse java applets to retrieve included files that must be downloaded? +Analyser les applets java pour récupérer les fichiers répondant aux critères de copie? +Store all files in cache instead of HTML only +Stockage de TOUS les fichiers en cache (et non pas uniquement les HTML) +Log file type (if generated) +Type du fichier journal (s'il est créé) +Maximum mirroring depth from root address +Profondeur maximale de la copie locale du site (mesurée à partir de l'adresse de départ) +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Profondeur maximale de la copie pour les adresse externes/interdites (0, soit aucune, par défaut) +Create a debugging file +Créer un fichier de débogage +Use non-standard requests to get round some server bugs +Essayer d'éviter les bugs de certains serveurs en utilisant des requêtes non standard +Use old HTTP/1.0 requests (limits engine power!) +L'utilisation des anciennes requêtes HTTP/1.0 limite les capacités du moteur de capture! +Attempt to limit retransfers through several tricks (file size test..) +Essayer de limiter les retransferts via certains trucs (test de taille de fichier..) +Write external links without login/password +Ecrire les liens externes sans login/mot de passe +Write internal links without query string +Ecrire les liens internes sans 'query string' +Get non-HTML files related to a link, eg external .ZIP or pictures +Capturer les fichiers non HTML proches (ex: fichiers ZIP situés à l'extérieur) +Test all links (even forbidden ones) +Tester tous les liens (même ceux exclus par les règles) +Try to catch all URLs (even in unknown tags/code) +Essayer de détecter tous les liens (y compris tags inconnus/code javascript) +Get HTML files first! +Télécharger les HTML en premier! +Structure type (how links are saved) +Type de structure locale (manière dont les liens sont enregistrés) +Use a cache for updates +Utiliser un cache pour les mises à jour +Do not re-download locally erased files +Ne pas tenter de récupérer les fichiers effacés localement +Make an index +Constituer un Index +Make a word database +Faire une base sémantique +Log files +Fichiers journaux +DOS names (8+3) +Noms DOS (8+3) +ISO9660 names (CDROM) +Noms ISO9660 (CDROM) +No error pages +Pas de pages d'erreur +Primary Scan Rule +Règle de filtrage principale +Travel mode +Mode de parcours +Global travel mode +Mode de parcours global +These options should be modified only exceptionally +Options à ne modifier qu'exceptionnellement +Activate Debugging Mode (winhttrack.log) +Activer le mode de débogage (winhttrack.log) +Rewrite links: internal / external +Réécriture des liens: internes / externes +Flow control +Contrôle du flux +Limits +Limites +Identity +Identification +HTML footer +En-tête HTML +N# connections +Nombre de connexions +Abandon host if error +Abandon en cas d'erreur +Minimum transfer rate (B/s) +Taux de transfert minimum (octets/s) +Abandon host if too slow +Abandon en cas de transfert trop lent +Configure +Configurer +Use proxy for ftp transfers +Utiliser le serveur proxy pour les transferts FTP +TimeOut(s) +TimeOut(s) +Persistent connections (Keep-Alive) +Connexions persistantes (Keep-Alive) +Reduce connection time and type lookup time using persistent connections +Réduire les temps de connexion et de vérification de type en utilisant des connexions permanentes +Retries +Essais +Size limit +Limite en taille +Max size of any HTML file (B) +Taille maximale des fichiers HTML (B) +Max size of any non-HTML file +Taille maximale des autres fichiers +Max site size +Taille maximale du site +Max time +Temps de capture maximal +Save prefs +Enregistrer les options courantes +Max transfer rate +Taux maximal +Follow robots.txt +Suivre les règles présentes dans le fichier 'robots.txt' +No external pages +Pas de pages externes +Do not purge old files +Pas de purge des anciens fichiers +Accept cookies +Accepter les cookies +Check document type +Vérifier les types de document +Parse java files +Analyser les fichiers java +Store ALL files in cache +TOUT stocker en cache +Tolerant requests (for servers) +Requêtes tolérantes (pour serveurs) +Update hack (limit re-transfers) +Mise à jour forcée (limite les retransferts) +Force old HTTP/1.0 requests (no 1.1) +Anciennes requêtes HTTP/1.0 (PAS de requêtes HTTP/ 1.1) +Max connections / seconds +Nb. max connexions / secondes +Maximum number of links +Nombre max de liens +Pause after downloading.. +Suspendre après la copie de.. +Hide passwords +Masquer les mots de passe +Hide query strings +Cacher les 'query strings' +Links +Liens +Build +Structure +Experts Only +Pour Experts +Flow Control +Contrôle du flux +Limits +Limites +Browser ID +Navigateur Internet +Scan Rules +Règles de filtrage +Spider +Fouineur +Log, Index, Cache +Journal, Index, Cache +Proxy +Serveur proxy +MIME Types +Types MIME +Do you really want to quit WinHTTrack Website Copier? +Voulez-vous vraiment quitter WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Pas de connexion à un fournisseur d'accès (déja connecté) +Do not use remote access connection +Ne pas utiliser l'accès à distance +Schedule the mirroring operation +Programmer une copie du site +Quit WinHTTrack Website Copier +Quitter WinHTTrack Website Copier +Back to starting page +Retour à la page de démarrage +Click to start! +Cliquez pour démarrer! +No saved password for this connection! +Pas de mot de passe enregistré pour cette connexion! +Can not get remote connection settings +Impossible d'obtenir les paramètres de connexion +Select a connection provider +Sélectionnez ici un fournisseur d'accès auquel vous connecter +Start +Démarrer... +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Précisez les OPTIONS de connexion si nécessaire,\npuis pressez TERMINER pour commencer la copie du site +Save settings only, do not launch download now. +Enregistrer uniquement les réglages, ne pas lancer le téléchargement maintenant. +On hold +Temporisation +Transfer scheduled for: (hh/mm/ss) +Attendre avant de commencer jusqu'à: (hh/mm/ss) +Start +DEMARRER! +Connect to provider (RAS) +Fournisseur d'accès +Connect to this provider +Se connecter à ce fournisseur d'accès +Disconnect when finished +Déconnecter à la fin de l'opération +Disconnect modem on completion +Déconnecter le modem lorsque l'opération sera finie +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(signalez-nous tout bug ou problème)\r\n\r\nDéveloppement:\r\nInterface (Windows): Xavier Roche\r\nMoteur: Xavier Roche\r\nParseurClassesJava: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMERCI pour la relecture à:\r\nRobert Lagadec +About WinHTTrack Website Copier +A propos de WinHTTrack Website Copier +Please visit our Web page +Visitez notre site Web! +Wizard query +Question du Compagnon WinHTTrack +Your answer: +Votre réponse: +Link detected.. +Un lien a été détecté +Choose a rule +Choisir une règle: +Ignore this link +Ignorer ce lien +Ignore directory +Ignorer ce dossier +Ignore domain +Ignorer ce domaine +Catch this page only +Ne capturer QUE cette page +Mirror site +Copie du site +Mirror domain +Copie du domaine entier +Ignore all +Tout ignorer +Wizard query +Question du Compagnon WinHTTrack +NO +NON +File +Fichier +Options +Options +Log +Fichier journal +Window +Fenêtres +Help +Aide +Pause transfer +Suspendre les téléchargements +Exit +Quitter +Modify options +Modifier les options +View log +Voir le fichier journal +View error log +Voir le fichier d'erreur +View file transfers +Voir les fichiers téléchargés +Hide +Minimiser +About WinHTTrack Website Copier +A propos... +Check program updates... +Rechercher les mises à jour de WinHTTrack... +&Toolbar +Barre d'outils +&Status Bar +Barre d'état +S&plit +Fractionner +File +Fichier +Preferences +Options +Mirror +Copie de site +Log +Journal +Window +Fenêtres +Help +Aide +Exit +Quitter +Load default options +Utiliser les options par défaut +Save default options +Enregistrer en tant qu'options par défaut +Reset to default options +Charger les options par défaut +Load options... +Charger les options +Save options as... +Enregistrer les options sous... +Language preference... +Choix de la langue +Contents... +Index... +About WinHTTrack... +A propos de WinHTTrack Website Copier +New project\tCtrl+N +Nouveau projet\tCtrl+N +&Open...\tCtrl+O +&Ouvrir...\tCtrl+O +&Save\tCtrl+S +En®istrer\tCtrl+S +Save &As... +Enregistrer &sous... +&Delete... +&Effacer... +&Browse sites... +&Browse sites... +User-defined structure +Définir une structure personnalisée +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNom du fichier sans ext. (ex: image)\r\n%N\tNom du fichier avec extension (ex: image.gif)\r\n%t\tExtension (ex: gif)\r\n%p\tChemin [sans dernier /] (ex: /someimages)\r\n%h\tNom du serveur (ex: www.someweb.com)\r\n%M\tURL MD5 (128 bits, 32 ascii bytes)\r\n%Q\tquery string MD5 (128 bits, 32 ascii bytes)\r\n%q\tsmall query string MD5 (16 bits, 4 ascii bytes)\r\n\r\n%s?\tVersion courte DOS (ex: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Exemple:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Options du serveur proxy +Proxy address: +Adresse du serveur proxy +Proxy port: +Port du serveur proxy +Authentication (only if needed) +Identification (si nécessaire) +Login +Nom d'utilisateur (Login) +Password +Mot de passe +Enter proxy address here +Entrez ici l'adresse du serveur proxy +Enter proxy port here +Entrez ici le port du serveur proxy +Enter proxy login +Entrez le nom d'utilisateur du serveur proxy +Enter proxy password +Entrez le mot de passe du serveur proxy +Enter project name here +Entrez ici le nom du projet +Enter saving path here +Entrez ici le chemin où vous voulez enregistrer le projet +Select existing project to update +Sélectionnez ici le projet existant à mettre à jour +Click here to select path +Cliquez ici pour sélectionner le chemin directement dans l'arborescence de votre disque dur +HTTrack Project Wizard... +Compagnon du projet WinHTTrack +New project name: +Nom du nouveau projet: +Existing project name: +Nom du projet existant: +Project name: +Nom du projet: +Base path: +Chemin de base: +C:\\My Web Sites +C:\\Mes Sites Web +Type a new project name, \r\nor select existing project to update/resume +Entrez le nom d'un nouveau projet, \r\nou sélectionnez un projet existant pour le mettre à jour/le reprendre +New project +Nouveau projet +Insert URL +Insérez une adresse URL +URL: +Adresse URL +Authentication (only if needed) +Identification (si nécessaire) +Login +Nom d'utilisateur (Login) +Password +Mot de passe +Forms or complex links: +Formulaires ou liens complexes: +Capture URL... +Capturer l'URL... +Enter URL address(es) here +Entrez ici l'adresse URL +Enter site login +Entrez votre nom d'utilisateur pour le site +Enter site password +Entrez votre mot de passe pour le site +Use this capture tool for links that can only be accessed through forms or javascript code +Utilisez cet outil pour capturer des liens accessibles uniquement via formulaires ou liens javascript +Choose language according to preference +Sélectionnez votre langue ici +Catch URL! +Capturer cette adresse URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Veuillez fixer temporairement les réglages proxy de votre navigateur sur les réglages ci-dessous (copiez/collez l'adresse proxy et le port).\nEnsuite, dans votre navigateur, cliquez sur le bouton 'submit' du formulaire, ou cliquez sur le lien spécifique que vous voulez aspirer. +This will send the desired link from your browser to WinHTTrack. +Cela enverra le lien concerné de votre navigateur vers WinHTTrack +ABORT +ANNULER +Copy/Paste the temporary proxy parameters here +Copier/collez les réglages temporaires du proxy ici +Cancel +Annuler +Unable to find Help files! +Impossible de trouver les fichiers d'aide! +Unable to save parameters! +Impossible d'enregistrer les paramètres! +Please drag only one folder at a time +Veuillez ne déposer qu'un dossier à la fois +Please drag only folders, not files +Veuillez déposer un dossier, pas un fichier +Please drag folders only +Ne déposez que des dossiers +Select user-defined structure? +Choisir une structure personnalisée pour la copie du site? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Vérifiez que la chaîne personnalisée est correcte\nSi elle ne l'est pas, les noms de fichiers seront erronés! +Do you really want to use a user-defined structure? +Voulez-vous vraiment sélectionner une structure personnalisée? +Too manu URLs, cannot handle so many links!! +Trop d'adresses URLs, impossible de prendre en charge autant de liens!! +Not enough memory, fatal internal error.. +Pas assez de mémoire, erreur interne fatale... +Unknown operation! +Opération inconnue! +Add this URL?\r\n +Ajouter cette adresse URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Attention: le processus principal ne répond toujours pas, impossible d'ajouter ces URLs... +Type/MIME associations +Correspondances type/MIME +File types: +Types de fichiers: +MIME identity: +Correspondance MIME: +Select or modify your file type(s) here +Sélectionnez ou modifiez le(s) type(s) de fichiers ici +Select or modify your MIME type(s) here +Sélectionnez ou modifiez les type(s) MIME correspondant(s) ici +Go up +Monter +Go down +Descendre +File download information +Informations sur les fichiers téléchargés +Freeze Window +Figer la fenêtre +More information: +Plus d'informations: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Bienvenue dans WinHTTrack Website Copier!\n\nVeuillez cliquer sur le bouton SUIVANT\n\n- pour démarrer un nouveau projet\n- ou reprendre un projet existant +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Fichiers de type:\nFichiers contenant:\nCe fichier:\nNoms de dossiers contenant:\nCe dossier:\nLiens sur ce domaine:\nLiens sur un domaine contenant:\nLiens de ce serveur:\nLiens contenant:\nCe lien:\nTOUS LES LIENS +Show all\nHide debug\nHide infos\nHide debug and infos +Tout montrer\nCacher infos de débogage\nCacher infos générales\nCacher débogage et infos +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Structure du site (par défaut)\nHtml dans web/, images/autres dans web/images/\nHtml dans web/html, images/autres dans web/images\nHtml dans web/, images/autres dans web/\nHtml dans web/, images/autres dans web/xxx, où xxx est le type\nHtml dans web/html, images/autres dans web/xxx\nStructure du site, sans www.domaine.xxx/\nHtml dans site_name/, images/autres dans nom_site/images/\nHtml dans nom_site/html, images/autres dans nom_site/images\nHtml dans site_name/, images/autres dans nom_site/\nHtml dans nom_site/, images/autres dans nom_site/xxx\nHtml dans nom_site/html, images/autres dans nom_site/xxx\nTous les fichiers dans web/, avec des noms aléatoires (gadget !)\nTous les fichiers dans nom_site/, avec des noms aléatoires (gadget !)\nStructure définie par l'utilisateur.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Analyse des liens uniquement\nEnregistrer les fichiers HTML\nEnregistrer les fichiers non-HTML\nEnregistrer tous les fichiers (par défaut)\nEnregistrer d'abord les fichiers HTML +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Rester sur le même répertoire\nPeut descendre (défaut)\nPeut monter\nPeut descendre & monter +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Rester à la même adresse (par défaut)\nRester sur le même domaine\nRester sur le même TLD\nParcours libre sur tout le Web +Never\nIf unknown (except /)\nIf unknown +Jamais\nSi inconnu (sauf /)\nSi inconnu +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +pas de règles robots.txt\nrègles robots.txt sauf filtres\nsuivre les règles robots.txt +normal\nextended\ndebug +normal\nétendu\ndébogage +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Copie automatique de site(s) Web\nCopie interactive de site(s) Web (questions)\nTélécharger des fichiers spécifiques\nAspirer tous les sites dans les pages (miroirs multiples)\nTester les liens dans les pages (test de signet)\n* Reprendre une copie interrompue\n* Mettre à jour une copie existante +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +URI relative / URL absolue (par défaut)\nURL absolue / URL absolue\nURI absolue / URL absolue\nURL originale / URL originale +Open Source offline browser +Aspirateur de Sites Web Open Source +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Aspirateur de sites/Navigateur hors ligne. Copiez des sites web sur votre PC. Libre. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, aspirateur de sites web +URL list (.txt) +Liste d'URLs (.txt) +Previous +Précédent +Next +Suivant +URLs +URLs +Warning +Attention +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Votre navigateur ne comprend pas actuellement le javascript. Pour de meilleurs résultats, utilisez un navigateur compatible avec le javascript. +Thank you +Merci +You can now close this window +Vous pouvez maintenant fermer cette fenêtre +Server terminated +Serveur arrêté +A fatal error has occured during this mirror +Une erreur critique est intervenue durant l'aspiration diff --git a/lang/Greek.txt b/lang/Greek.txt new file mode 100755 index 0000000..517bb39 --- /dev/null +++ b/lang/Greek.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Greek +LANGUAGE_FILE +Greek +LANGUAGE_ISO +el +LANGUAGE_AUTHOR +Michael Papadakis (mikepap at freemail dot gr)\r\n +LANGUAGE_CHARSET +ISO-8859-7 +OK +ÅíôÜîåé +Cancel +¢êõñï +Exit +¸îïäïò +Close +Êëåßóéìï +Cancel changes +Áêýñùóç áëëáãþí +Click to confirm +Êëéê ãéá åðéâåâáßùóç +Click to get help! +Êëéê ãéá íá ðÜñåôå âïÞèåéá! +Click to return to previous screen +Êëéê ãéá íá åðéóôñÝøåôå óôçí ðñïçãïýìåíç ïèüíç +Click to go to next screen +Êëéê ãéá íá ðÜôå óôçí åðüìåíç ïèüíç +Hide password +Áðüêñõøç óõíèçìáôéêïý +Save project +ÁðïèÞêåõóç åñãáóßáò +Close current project? +Èá êëåßóåôå ôçí ðáñïýóá åñãáóßá; +Delete this project? +Èá óâÞóåôå ôçí ðáñïýóá åñãáóßá; +Delete empty project %s? +ÓâÞóéìï ôçò êåíÞò åñãáóßáò %s; +Action not yet implemented +Ç åíÝñãåéá áõôÞ äåí Ý÷åé õëïðïéçèåß áêüìá +Error deleting this project +Ðñüâëçìá êáôÜ ôï óâÞóéìï áõôÞò ôçò åñãáóßáò +Select a rule for the filter +ÅðéëÝîôå Ýíá êáíüíá ãéá ôï ößëôñï +Enter keywords for the filter +ÔïðïèåôÞóôå ëÝîåéò-êëåéäéÜ ãéá ôï ößëôñï +Cancel +¢êõñï +Add this rule +Ðñüóèåóç áõôïý ôïõ êáíüíá +Please enter one or several keyword(s) for the rule +Ðáñáêáëþ ôïðïèåôÞóôå ìßá Þ ðåñéóóüôåñåò ëÝîåéò-êëåéäéÜ ãéá ôïí êáíüíá +Add Scan Rule +Ðñüóèåóç êáíüíá øáîßìáôïò +Criterion +ÊñéôÞñéï +String +ÖñÜóç +Add +Ðñüóèåóç +Scan Rules +Êáíüíåò ÁíáæÞôçóçò +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +×ñÞóç ìðáëáíôÝñ ãéá ôïí áðïêëåéóìü Þ ôçí ðåñßëçøç URLs Þ links.\nÌðïñåßôå íá âÜëåôå áñêåôÝò öñÜóåéò áíß÷íåõóçò óôçí ßäéá ãñáììÞ.\n×ñçóéìïðïéÞóôå êåíÜ ãéá äéá÷ùñéóìü.\n\nÐ÷: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Links ðïõ áðïêëåßïíôáé +Include link(s) +Ðåñéëáìâáíüìåíá links +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +ÓõìâïõëÞ: Ãéá íá óõìðåñéëÜâåôå üëá ôá áñ÷åßá GIF, ÷ñçóéìïðïéÞóôå êÜôé óáí +www.someweb.com/*.gif. \n(+*.gif / -*.gif èá óõìðåñéëÜâåé/áðïêëåßóåé üëá ôá GIFs áðü üëåò ôéò ôïðïèåóßåò) +Save prefs +ÁðïèÞêåõóç ðñïôéìÞóåùí +Matching links will be excluded: +Ôá links ðïõ ôáéñéÜæïõí èá áðïêëåéóôïýí +Matching links will be included: +Ôá links ðïõ ôáéñéÜæïõí èá óõìðåñéëçöèïýí +Example: +ÐáñÜäåéãìá: +gif\r\nWill match all GIF files +gif\r\nÈá ôáéñéÜîåé üëá ôá áñ÷åßá GIF +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nÈá âñåé üëá ôá áñ÷åßá ìå ôç öñÜóç 'blue' üðùò ôï 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nÈá ôáéñéÜîåé ôï áñ÷åßï 'bigfile.mov', áëëÜ ü÷é ôï 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nÈá âñåß links ìå üíïìá öáêÝëïõ ðïõ ðåñéÝ÷åé ôï 'cgi', üðùò /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nÈá âñåß links ìå üíïìá öáêÝëïõ ðïõ ôáéñéÜæåé ìå üëï ôï 'cgi-bin', áëëÜ ü÷é ôï 'cgi-bin-2' +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nÈá âñåß links ðïõ ðåñéÝ÷ïõí ôç öñÜóç, óáí ôá www.someweb.com, private.someweb.com êëð. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nÈá âñåß links óå öáêÝëïõò ðïõ ðåñéÝ÷ïõí ôç öñÜóç, óáí ôá www.someweb.com, www.someweb.edu, private.someweb.otherweb.com êëð. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nÈá âñåß links ðïõ ôáéñéÜæïõí ìå üëï ôï 'www.someweb.com', áëëÜ ü÷é ôï 'private.someweb.com'. +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nÈá âñåß links ðïõ ðåñéÝ÷ïõí ôç öñÜóç ïðïõäÞðïôå óôï URL, üðùò ôá www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html êëð. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nÈá âñåß ìüíï ôï áñ÷åßï 'www.test.com/test/someweb.html'. ÐñïóÝîôå üôé èá ðñÝðåé íá ãñÜøåôå üëç ôç äéáäñïìÞ. +All links will match +¼ëá ôá links èá ôáéñéÜîïõí +Add exclusion filter +Ðñüóèåóç ößëôñïõ áðüññéøçò +Add inclusion filter +Ðñüóèåóç ößëôñïõ óõíõðïëïãéóìïý +Existing filters +ÕðÜñ÷ïíôá ößëôñá +Cancel changes +Áêýñùóç áëëáãþí +Save current preferences as default values +ÁðïèÞêåõóç ôùñéíþí ðñïôéìÞóåùí ùò ðñïåðéëïãÞ +Click to confirm +Êëéê ãéá åðéâåâáßùóç +No log files in %s! +Äåí õðÜñ÷ïõí áñ÷åßá ãåãïíüôùí óôï %s! +No 'index.html' file in %s! +Äåí õðÜñ÷åé áñ÷åßï 'index.html' óôï %s! +Click to quit WinHTTrack Website Copier +Êëéê ãéá íá åãêáôáëåßøåôå ôï WinHTTrack Website Copier +View log files +Áñ÷åßá ãåãïíüôùí +Browse HTML start page +¢íïéãìá ôçò áñ÷éêÞò óåëßäáò +End of mirror +ÔÝëïò áíôéãñáöÞò +View log files +Áñ÷åßá ãåãïíüôùí +Browse Mirrored Website +ÁíôéãñáììÝíïò ôüðïò +New project... +ÍÝá åñãáóßá... +View error and warning reports +ÐñïâïëÞ áíáöïñÜò ðñïâëçìÜôùí êáé ðñïåéäïðïéÞóåùí +View report +ÐñïâïëÞ áíáöïñÜò +Close the log file window +Êëåßóéìï ôïõ ðáñáèýñïõ ôïõ áñ÷åßïõ ãåãïíüôùí +Info type: +Ôýðïò ðëçñïöïñéþí: +Errors +ËÜèç +Infos +Ðëçñïöïñßåò +Find +ÁíáæÞôçóç +Find a word +ÁíáæÞôçóç ëÝîçò +Info log file +Áñ÷åßï êáôáãñáöÞò ðëçñïöïñéþí +Warning/Errors log file +ÐñïåéäïðïéÞóåéò/ËÜèç +Unable to initialize the OLE system +Áäýíáôç ç áñ÷éêïðïßçóç ôïõ óõóôÞìáôïò OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +Ôï WinHTTrack äåí âñÞêå êáíÝíá ìéóïôåëåéùìÝíï áñ÷åßï cache óôïí êáèïñéóìÝíï öÜêåëï! +Could not connect to provider +Áäýíáôç ç äçìéïõñãßá óýíäåóçò +receive +ëÞøç +request +áßôçóç +connect +óýíäåóç +search +áíáæÞôçóç +ready +óå åôïéìüôçôá +error +ëÜèïò +Receiving files.. +ËÞøç áñ÷åßùí.. +Parsing HTML file.. +ÐÜñóéìï áñ÷åßïõ HTML... +Purging files.. +ÓâÞóéìï áñ÷åßùí.. +Loading cache in progress.. +Öüñôùìá ôçò cache óå åîÝëéîç... +Parsing HTML file (testing links).. +ÐÜñóéìï áñ÷åßïõ HTML (Ýëåã÷ïò ôùí links)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Ðáýóç - ÅðéëÝîôå [Áíôßãñáöï]/[Ðáýóç êáôåâÜóìáôïò] ãéá óõíÝ÷åéá ôçò äéáäéêáóßáò +Finishing pending transfers - Select [Cancel] to stop now! +Ôåëåßùìá åíåñãþí ìåôáöïñþí - ÅðéëÝîôå [Áêýñùóç] ãéá íá Üìåóç äéáêïðÞ! +scanning +óÜñùóç +Waiting for scheduled time.. +ÁíáìïíÞ ðñïãñáììáôéóìÝíçò þñáò... +Connecting to provider +Åðé÷åéñåßôáé óýíäåóç +[%d seconds] to go before start of operation +Áêüìá [%d äåõôåñüëåðôá] ãéá ôçí åêêßíçóç ôçò äéáäéêáóßáò +Site mirroring in progress [%s, %s bytes] +ÁíôéãñáöÞ ôïðïèåóßáò óå åîÝëéîç [%s, %s bytes] +Site mirroring finished! +Ç áíôéãñáöÞ ôçò ôïðïèåóßáò ôåëåßùóå! +A problem occured during the mirroring operation\n +ÄçìéïõñãÞèçêå Ýíá ðñüâëçìá êáôÜ ôçí äéáäéêáóßá áíôéãñáöÞò\n +\nDuring:\n +\nÊáôá ôç äéÜñêåéá:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nÄåßôå ôï áñ÷åßï ãåãïíüôùí áí åßíáé áðáñáßôçôï.\n\nÊëéê óôï ÔÅËÏÓ ãéá íá åãêáôáëåßøåôå ôï WinHTTrack Website Copier.\n\nÓáò åõ÷áñéóôþ ãéá ôçí ÷ñÞóç ôïõ WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Ç äéáäéêáóßá áíôéãñáöÞò ôÝëåéùóå.\nÊëéê óôï ¸îïäïò ãéá íá åãêáôáëåßøåôå ôï WinHTTrack.\nÄåßôå ôï(á) áñ÷åßï(á) ãåãïíüôùí áí åßíáé áðáñáßôçôï, Ýôóé þóôå íá åðéâåâáéþóåôå üôé üëá åßíáé åíôÜîåé.\n\nÓáò åõ÷áñéóôþ ãéá ôçí ÷ñÞóç ôïõ WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * Ç ÁÍÔÉÃÑÁÖÇ ÅÃÊÁÔÁËÅÉÖÈÇÊÅ! * *\r\nÇ ðáñïýóá ðñïóùñéíÞ cache åßíáé áðáñáßôçôç ãéá êÜèå ëåéôïõñãßá áíáíÝùóçò êáé ðåñéëáìâÜíåé ìüíï äåäïìÝíá ðïõ êáôÝâçêáí êáôÜ ôç äéÜñêåéá ôçò ôùñéíÞò åãêáôáëåëåéìÝíçò ðåñéüäïõ.\r\nÇ ðñïçãïýìåíç cache ßóùò ðåñéÝ÷åé ðéï ïëïêëçñùìÝíåò ðëçñïöïñßåò. Áí äåí èÝëåôå íá ÷Üóåôå áõôÝò ôéò ðëçñïöïñßåò, ðñÝðåé íá íá ôéò áíáêôÞóåôå êáé íá äéáãñÜøåôå ôçí ðáñïýóá cache.\r\n[Óçìåßùóç: Áõôü ìðïñåß íá ãßíåé åýêïëá óâÞíïíôáò ôá áñ÷åßá hts-cache/new.*]\r\n\r\nÍïìßæåôå ðùò ç ðñïçãïýìåíç cache ßóùò ðåñéÝ÷åé ðéï ïëïêëçñùìÝíåò ðëçñïöïñßåò êáé èÝëåôå íá ôçí áíáêôÞóåôå; +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ÓÖÁËÌÁ ÁÍÔÉÃÑÁÖÇÓ * *\r\nÔï WinHTTrack áíáêÜëõøå ðùò ôï ðáñþí áíôßãñáöï åßíáé Üäåéï. Áí Þôáí ìéá áíáíÝùóç, ôï ðñïçãïýìåíï áíôßãñáöï áíáêôÞèçêå.\r\nËüãïò: Ïé ðñþôç(åò) óåëßäá(åò) åßôå äåí âñÝèçêáí Þ õðÞñîå ðñüâëçìá êáôÜ ôçí óýíäåóç.\r\n=> Åðéâåâáéþóôå üôé ç ôïðïèåóßá õðÜñ÷åé áêüìá êáé/Þ åëÝãîôå ôéò ñõèìßóåéò ôïõ proxy óáò! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nÓõìâïõëÞ: Êëéê óôï [ÐñïâïëÞ áñ÷åßùí ãåãïíüôùí] ãéá íá äåßôå ìçíýìáôá ðñïåéäïðïéÞóåùí Þ ëáèþí +Error deleting a hts-cache/new.* file, please do it manually +ÓöÜëìá êáôÜ ôï óâÞóéìï åíüò hts-cache/new.* áñ÷åßïõ, ðáñáêáëþ êÜíôå ôï ìüíïé óáò +Do you really want to quit WinHTTrack Website Copier? +ÈÝëåôå ðñÜãìáôé íá åãêáôáëåßøåôå ôï WinHTTrack Website Copier; +- Mirroring Mode -\n\nEnter address(es) in URL box +- ÊáôÜóôáóç áíôéãñáöÞò -\n\nÔïðïèåôåßóôå äéåýèõíóç(åéò) óôç èÝóç URL +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- ÊáôÜóôáóç âïçèïý ìå áëëçëåðßäñáóç (åñùôÞóåéò) --\n\nÔïðïèåôåßóôå äéåýèõíóç(åéò) óôç èÝóç URL +- File Download Mode -\n\nEnter file address(es) in URL box +- ÊáôÜóôáóç êáôåâÜóìáôïò áñ÷åßïõ -\n\nÔïðïèåôåßóôå äéåýèõíóç(åéò) áñ÷åßïõ óôç èÝóç URL +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- ÊáôÜóôáóç åëÝã÷ïõ link -\n\nÔïðïèåôåßóôå äéåýèõíóç(åéò) ìå link(s) ãéá Ýëåã÷ï óôç èÝóç URL +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- ÊáôÜóôáóç åíçìÝñùóçò -\n\nÅðéâåâáéþóôå ôçí(ôéò) äéåýèõíóç(åéò) óôç èÝóç URL, åëÝãîôå ôéò ðáñáìÝôñïõò áí åßíáé áðáñáßôçôï êáé ìåôÜ êëéê óôï 'Åðüìåíï' +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- ÊáôÜóôáóç óõíÝ÷éóçò (Ç äéáäéêáóßá äéáêüðçêå) -\n\nÅðéâåâáéþóôå äéåýèõíóç(åéò) óôç èÝóç URL, åëÝãîôå ôéò ðáñáìÝôñïõò áí åßíáé áðáñáßôçôï êáé ìåôÜ êëéê óôï 'Åðüìåíï'. +Log files Path +ÄéáäñïìÞ áñ÷åßùí ãåãïíüôùí +Path +ÄéáäñïìÞ +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- ÊáôÜóôáóç ëßóôáò ôùí links -\n\n×ñçóéìïðïéÞóôå ôç èÝóç URL ãéá íá âÜëåôå äéåýèõíóç(åéò) áðü óåëßäá(åò) ðïõ ðåñéÝ÷åé(ïõí) links ãéá áíôéãñáöÞ. +New project / Import? +ÍÝá åñãáóßá / ÅéóáãùãÞ; +Choose criterion +ÅðéëÝîôå êñéôÞñéï +Maximum link scanning depth +ÌÝãéóôï âÜèïò øáîßìáôïò link +Enter address(es) here +ÔïðïèåôÞóôå äéåýèõíóç(åéò) åäþ +Define additional filtering rules +Ïñßóôå ðñüóèåôïõò êáíüíåò öéëôñáñßóìáôïò +Proxy Name (if needed) +¼íïìá Proxy (áí ÷ñåéÜæåôáé) +Proxy Port +Port ôïõ proxy +Define proxy settings +Ïñéóìüò ñõèìßóåùí proxy +Use standard HTTP proxy as FTP proxy +×ñÞóç êáíïíéêïý HTTP proxy óáí FTP proxy +Path +ÄéáäñïìÞ +Select Path +ÅðéëïãÞ äéáäñïìÞò +Path +ÄéáäñïìÞ +Select Path +ÅðéëïãÞ äéáäñïìÞò +Quit WinHTTrack Website Copier +ÅãêáôÜëåéøç ôïõ WinHTTrack Website Copier +About WinHTTrack +Ó÷åôéêÜ ìå ôï WinHTTrack +Save current preferences as default values +ÁðïèÞêåõóç ôùí ôùñéíþí ñõèìßóåùí ùò ðñïåðéëïãÞ +Click to continue +Êëéê ãéá óõíÝ÷åéá +Click to define options +Êëéê ãéá ïñéóìü ñõèìßóåùí +Click to add a URL +Êëéê ãéá ðñüóèåóç åíüò URL +Load URL(s) from text file +Öüñôùìá URL(s) áðü áñ÷åßï êåéìÝíïõ +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack ðñïôéìÞóåéò (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Áñ÷åßï êåéìÝíïõ ëßóôáò äéåõèýíóåùí (*.txt)|*.txt|| +File not found! +Ôï áñ÷åßï äåí âñÝèçêå! +Do you really want to change the project name/path? +ÈÝëåôå ðñÜãìáôé íá áëëÜîåôå üíïìá/äéáäñïìÞ ôçò åñãáóßáò; +Load user-default options? +Öüñôùìá ôùí ðñïñõèìéóìÝíùí åðéëïãþí ÷ñÞóôç; +Save user-default options? +ÁðïèÞêåõóç ôùí ðñïñõèìéóìÝíùí åðéëïãþí ÷ñÞóôç; +Reset all default options? +ÅðáíáôïðïèÝôçóç üëùí ôùí ðñïñõèìéóìÝíùí åðéëïãþí; +Welcome to WinHTTrack! +Êáëþò Þñèáôå óôï WinHTTrack! +Action: +ÅíÝñãåéá: +Max Depth +ÌÝãéóôï âÜèïò +Maximum external depth: +ÌÝãéóôï åîùôåñéêü âÜèïò +Filters (refuse/accept links) : +Ößëôñá (Üñíçóç/áðïäï÷Þ links) : +Paths +ÄéáäñïìÝò +Save prefs +ÁðïèÞêåõóç ðñïôéìÞóåùí +Define.. +Ïñéóìüò... +Set options.. +ÔïðïèÝôçóç ñõèìßóåùí... +Preferences and mirror options: +ÐñïôéìÞóåéò êáé åðéëïãÝò áíôéãñáöÞò +Project name +¼íïìá åñãáóßáò +Add a URL... +Ðñüóèåóç åíüò URL... +Web Addresses: (URL) +Äéåõèýíóåéò Web: (URL) +Stop WinHTTrack? +ÓôáìÜôçìá ôïõ WinHTTrack; +No log files in %s! +Äåí õðÜñ÷ïõí áñ÷åßá ãåãïíüôùí óôï %s! +Pause Download? +Ðáýóç êáôåâÜóìáôïò; +Stop the mirroring operation +ÓôáìÜôçìá ôçò äéáäéêáóßáò áíôéãñáöÞò +Minimize to System Tray +Åëá÷éóôïðïßçóç óôçí ìðÜñá óõóôÞìáôïò +Click to skip a link or stop parsing +Êëéê ãéá ðÞäçìá åíüò link Þ óôáìÜôçìá ðáñóßìáôïò +Click to skip a link +Êëéê ãéá ðÞäçìá åíüò link +Bytes saved +ÓùóìÝíá bytes +Links scanned +ÓáñùìÝíá links +Time: +×ñüíïò: +Connections: +ÓõíäÝóåéò: +Running: +Óå åêôÝëåóç: +Hide +Áðüêñõøç +Transfer rate +Ñõèìüò ìåôáöïñÜò +SKIP +ÐÁÑÁËÅÉØÇ +Information +Ðëçñïöïñßåò +Files written: +Óþèçêáí: +Files updated: +Åíçìåñþóåéò: +Errors: +ËÜèç: +In progress: +Óå åîÝëéîç: +Follow external links +Áêïëïýèçóç åîùôåñéêþí links +Test all links in pages +¸ëåã÷ïò üëùí ôùí links óôéò óåëßäåò +Try to ferret out all links +ÐñïóðÜèåéá áíáêÜëõøçò üëùí ôùí links +Download HTML files first (faster) +ÊáôÝâáóìá ôùí áñ÷åßùí HTML ðñþôá (ãñçãïñüôåñï) +Choose local site structure +ÅðéëÝîôå ôïðéêÞ äïìÞ ôïõ äéêôõáêïý ôüðïõ +Set user-defined structure on disk +ÅöáñìïãÞ äïìÞò óôïí äßóêï ðïõ ïñßóôçêå áðü ôï ÷ñÞóôç +Use a cache for updates and retries +×ñÞóç ôçò cache ãéá åíçìåñþóåéò êáé åðáíáëÞøåéò +Do not update zero size or user-erased files +Íá ìçí åíçìåñùèïýí ôá áñ÷åßá ìçäåíéêïý ìåãÝèïõò Þ ôá óâçóìÝíá áðü ôïí ÷ñÞóôç +Create a Start Page +Äçìéïõñãßá áñ÷éêÞò óåëßäáò +Create a word database of all html pages +Äçìéïõñãßá ëßóôáò ëÝîåùí áðü üëåò ôéò óåëßäåò html +Create error logging and report files +Äçìéïõñãßá áñ÷åßá êáôáãñáöÞò ëáèþí êáé áíáöïñÜò +Generate DOS 8-3 filenames ONLY +Äçìéïõñãßá ÌÏÍÏ ïíïìÜôùí áñ÷åßùí DOS 8-3 +Generate ISO9660 filenames ONLY for CDROM medias +Äçìéïõñãßá ÌÏÍÏ ïíïìÜôùí áñ÷åßùí ISO9660, ãéá äßóêïõò CD +Do not create HTML error pages +Íá ìç äçìéïõñãçèïýí HTML óåëßäåò ëáèþí +Select file types to be saved to disk +ÅðéëÝîôå ôýðïõò áñ÷åßùí ðïõ èá óùèïýí óôï äßóêï +Select parsing direction +ÅðéëÝîôå êáôåýèõíóç ðáñóßìáôïò +Select global parsing direction +ÅðéëÝîôå ãåíéêÞ êáôåýèõíóç ðáñóßìáôïò +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Ñõèìßóôå ôïõò êáíüíåò îáíáãñáøßìáôïò ôùí URL ãéá ôá åóùôåñéêÜ links (ôá êáôåâáóìÝíá) êáé ôá åîùôåñéêÜ links (ôá ìç êáôåâáóìÝíá) +Max simultaneous connections +ÌÝãéóôåò ôáõôü÷ñïíåò óõíäÝóåéò +File timeout +×ñïíéêü ðåñéèþñéï áñ÷åßïõ +Cancel all links from host if timeout occurs +Áêýñùóç üëùí ôùí links áðü ôçí ôïðïèåóßá áí îåðåñáóôåß ôï ÷ñïíéêü ðåñéèþñéï +Minimum admissible transfer rate +ÅëÜ÷éóôïò áðïäåêôüò ñõèìüò ìåôáöïñÜò +Cancel all links from host if too slow +Áêýñùóç üëùí ôùí links áðü ôçí ôïðïèåóßá áí åßíáé ðïëý áñãÞ +Maximum number of retries on non-fatal errors +ÌÝãéóôïò áñéèìüò åðáíáëÞøåùí óå ìç êáôáóôñïöéêÜ ëÜèç +Maximum size for any single HTML file +ÌÝãéóôï ìÝãåèïò ãéá êÜèå Ýíá áñ÷åßï HTML +Maximum size for any single non-HTML file +ÌÝãéóôï ìÝãåèïò ãéá êÜèå Ýíá áñ÷åßï ðïõ äåí åßíáé HTML +Maximum amount of bytes to retrieve from the Web +ÌÝãéóôïò üãêïò áðü bytes ðïõ èá óùèïýí áðü ôï Web +Make a pause after downloading this amount of bytes +Ðáýóç ìåôÜ ôï êáôÝâáóìá áõôïý ôïõ ðïóïý áðü bytes +Maximum duration time for the mirroring operation +ÌÝãéóôç äéÜñêåéá ãéá ôçí äéáäéêáóßá áíôéãñáöÞò +Maximum transfer rate +ÌÝãéóôïò ñõèìüò ìåôáöïñÜò +Maximum connections/seconds (avoid server overload) +ÌÝãéóôåò óõíäÝóåéò/äåõôåñüëåðôï (áðïöýãåôå õðåñöüñôùóç ôïõ åîõðçñåôçôÞ) +Maximum number of links that can be tested (not saved!) +ÌÝãéóôïò áñéèìüò áðü links ðïõ ìðïñïýí íá äïêéìáóôïýí (äåí óþæåôáé!) +Browser identity +Ôáõôüôçôá ðïõ èá äçëþíåé ï åîåñåõíçôÞò +Comment to be placed in each HTML file +Ó÷üëéá ðïõ èá ôïðïèåôçèïýí óå êÜèå áñ÷åßï HTML +Back to starting page +Ðßóù óôçí áñ÷éêÞ óåëßäá +Save current preferences as default values +ÁðïèÞêåõóç ôùí ôùñéíþí ðñïôéìÞóåùí ùò ðñïôïðïèåôçìÝíùí ôéìþí +Click to continue +Êëéê ãéá óõíÝ÷åéá +Click to cancel changes +Êëéê ãéá áêýñùóç áëëáãþí +Follow local robots rules on sites +Áêïëïýèçóç ôïðéêþí êáíüíùí ñïìðüô óôéò ôïðïèåóßåò +Links to non-localised external pages will produce error pages +Ôá links óå ìç ôïðéêÝò åîùôåñéêÝò óåëßäåò èá äçìéïõñãÞóïõí óåëßäåò óöáëìÜôùí +Do not erase obsolete files after update +Ôá ðáëéÜ áñ÷åßá íá ìçí óâÞíïíôáé ìåôÜ áðü åíçìÝñùóç +Accept cookies? +Áðïäï÷Þ ôùí cookies; +Check document type when unknown? +¸ëåã÷ïò ôýðïõ åããñÜöïõ üôáí åßíáé Üãíùóôï; +Parse java applets to retrieve included files that must be downloaded? +ÐÜñóéìï åöáñìïãþí java ãéá íá áíáêôçèïýí ôá óõìðåñéëáìâáíüìåíá áñ÷åßá ðïõ ðñÝðåé íá êáôÝâïõí; +Store all files in cache instead of HTML only +ÁðïèÞêåõóç üëùí ôùí áñ÷åßùí óôçí cache áíôß ãéá HTML ìüíï +Log file type (if generated) +Ôýðïò áñ÷åßïõ ãåãïíüôùí (áí èá äçìéïõñãçèåß) +Maximum mirroring depth from root address +ÌÝãéóôï âÜèïò áíôéãñáöÞò áðü ôçí ñéæéêÞ äéåýèõíóç +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +ÌÝãéóôï âÜèïò áíôéãñáöÞò ãéá åîùôåñéêÝò/áðáãïñåõìÝíåò äéåõèýíóåéò (0, äçëáäÞ ôßðïôá, åßíáé ç ðñïåðéëïãÞ) +Create a debugging file +Äçìéïõñãßá áñ÷åßïõ áðïóöáëìÜôùóçò +Use non-standard requests to get round some server bugs +×ñÞóç ìç óõíçèéóìÝíùí áéôÞóåùí ãéá áðïöõãÞ ìåñéêþí ðñïâëçìÜôùí åîõðçñåôçôþí +Use old HTTP/1.0 requests (limits engine power!) +×ñÞóç ðáëéþí HTTP/1.0 áéôÞóåùí (ðåñéïñßæåé ôçí éó÷ý ôçò ìç÷áíÞò!) +Attempt to limit retransfers through several tricks (file size test..) +ÐñïóðÜèåéá íá ðåñéïñéóôïýí ôá îáíáêáôåâÜóìáôá ìÝóù äéáöüñùí ôñéê (Ýëåã÷ïò ìåãÝèïõò áñ÷åßïõ...) +Write external links without login/password +ÃñÜøéìï åîùôåñéêþí links ÷ùñßò ôï üíïìá ÷ñÞóôç/óõíèçìáôéêü +Write internal links without query string +ÃñÜøéìï åóùôåñéêþí links ÷ùñßò öñÜóç áíáæÞôçóçò +Get non-HTML files related to a link, eg external .ZIP or pictures +ÊáôÝâáóìá ìç-HTML áñ÷åßùí ó÷åôéêÜ ìå Ýíá link, ð÷: åîùôåñéêÜ .ZIP Þ öùôïãñáößåò +Test all links (even forbidden ones) +¸ëåã÷ïò üëùí ôùí links (áêüìá êáé ôùí áðáãïñåõìÝíùí) +Try to catch all URLs (even in unknown tags/code) +ÐñïóðÜèåéá íá ðáñèïýí üëá ôá URLs (áêüìá êáé óå Üãíùóôá tags/êþäéêá) +Get HTML files first! +ÊáôÝâáóìá áñ÷éêÜ ôùí áñ÷åßùí HTML! +Structure type (how links are saved) +Ôýðïò äïìÞò (ðùò óþæïíôáé ôá links) +Use a cache for updates +×ñÞóç ôçò cache ãéá åíçìåñþóåéò +Do not re-download locally erased files +Ôá ôïðéêÜ óâçóìÝíá áñ÷åßá íá ìçí îáíáêáôÝâïõí +Make an index +Äçìéïõñãßá åõñåôçñßïõ +Make a word database +Äçìéïõñãßá âÜóçò-äåäïìÝíùí ëÝîåùí +Log files +Áñ÷åßá ãåãïíüôùí +DOS names (8+3) +Ïíüìáôá DOS (8+3) +ISO9660 names (CDROM) +Ïíüìáôá ISO9660 (CDROM) +No error pages +×ùñßò óåëßäåò óöáëìÜôùí +Primary Scan Rule +Âáóéêüò êáíüíáò øáîßìáôïò +Travel mode +Óôõë ôáîéäéïý +Global travel mode +Ãåíéêü óôõë ôáîéäéïý +These options should be modified only exceptionally +ÁõôÝò ïé åðéëïãÝò ðñÝðåé íá ôñïðïðïéïýíôáé óðÜíéá +Activate Debugging Mode (winhttrack.log) +Åíåñãïðïßçóç êáôÜóôáóçò áðïóöáëìÜôùóçò (winhttrack.log) +Rewrite links: internal / external +ÎáíáãñÜøéìï ôùí links: åóùôåñéêÜ/åîùôåñéêÜ +Flow control +¸ëåã÷ïò ñïÞò +Limits +¼ñéá +Identity +Ôáõôüôçôá +HTML footer +Óçìåßùóç HTML +N# connections +Áñéèìüò óõíäÝóåùí +Abandon host if error +ÅãêáôÜëåéøç ôïðïèåóßáò óå óöÜëìá +Minimum transfer rate (B/s) +ÅëÜ÷éóôïò ñõèìüò ìåôáöïñÜò +Abandon host if too slow +ÅãêáôÜëåéøç ôïðïèåóßáò áí åßíáé ðïëý áñãÞ +Configure +Ñýèìéóç +Use proxy for ftp transfers +×ñÞóç proxy ãéá ftp ìåôáöïñÝò +TimeOut(s) +×ñïíéêü ðåñéèþñéï +Persistent connections (Keep-Alive) +Óõíå÷åßò óõíäÝóåéò (ÄéáôÞñçóç) +Reduce connection time and type lookup time using persistent connections +Ìåßùóç ÷ñüíïõ óýíäåóçò êáé ôýðïõ áíáæÞôçóçò ôïðïèåóéþí, êÜíïíôáò ÷ñÞóç óõíå÷þí óõíäÝóåùí +Retries +ÐñïóðÜèåéåò +Size limit +¼ñéï ìåãÝèïõò +Max size of any HTML file (B) +ÌÝãéóôï ìÝãåèïò ãéá êÜèå HTML +Max size of any non-HTML file +ÌÝãéóôï ìÝãåèïò ãéá êÜèå ìç HTML áñ÷åßï +Max site size +ÌÝãéóôï ìÝãåèïò äéêôõáêïý ôüðïõ +Max time +ÌÝãéóôïò ÷ñüíïò +Save prefs +ÁðïèÞêåõóç ðñïôéìÞóåùí +Max transfer rate +ÌÝãéóôïò ñõèìüò ìåôáöïñÜò +Follow robots.txt +Áêïëïýèçóå ôï robots.txt +No external pages +¼÷é åîùôåñéêÝò óåëßäåò +Do not purge old files +Ôá ðáëéÜ áñ÷åßá íá ìçí óâÞíïíôáé +Accept cookies +Áðïäï÷Þ ôùí cookies +Check document type +¸ëåã÷ïò ôýðïõ åããñÜöïõ +Parse java files +ÐÜñóéìï áñ÷åßùí java +Store ALL files in cache +ÁðïèÞêåõóç ¼ËÙÍ ôùí áñ÷åßùí óôçí cache +Tolerant requests (for servers) +Áíåêôéêüôçôá óôéò áéôÞóåéò (ãéá åîõðçñåôçôÞ) +Update hack (limit re-transfers) +Ôñéê áíáíÝùóçò (ðåñéïñéóìüò îáíáêáôåâÜóìáôïò) +Force old HTTP/1.0 requests (no 1.1) +Åîáíáãêáóìüò ðáëéþí HTTP/1.0 áéôÞóåùí (ü÷é 1.1) +Max connections / seconds +ÌÝãéóôåò óõíäÝóåéò / äåõôåñüëåðôï +Maximum number of links +ÌÝãéóôïò áñéèìüò áðü links +Pause after downloading.. +Ðáýóç ìåôÜ ôï êáôÝâáóìá... +Hide passwords +Áðüêñõøç ëÝîåùí-êëåéäéþí +Hide query strings +Áðüêñõøç ÷áñáêôÞñùí áíáæÞôçóçò +Links +Links +Build +Äçìéïõñãßá +Experts Only +Ìüíï ãéá Ýìðåéñïõò +Flow Control +¸ëåã÷ïò ìåôáöïñþí +Limits +¼ñéá +Browser ID +Ôáõôüôçôá åîåñåõíçôÞ +Scan Rules +Êáíüíåò øáîßìáôïò +Spider +Áíé÷íåõôÞò +Log, Index, Cache +Áñ÷åßï êáôáãñáöÞò, Ðåñéå÷üìåíá, Cache +Proxy +Proxy +MIME Types +Ôýðïé MIME +Do you really want to quit WinHTTrack Website Copier? +ÈÝëåôå ðñÜãìáôé íá åãêáôáëåßøåôå ôï WinHTTrack Website Copier; +Do not connect to a provider (already connected) +Íá ìçí ãßíåé óýíäåóç (õðÜñ÷åé Þäç) +Do not use remote access connection +Íá ìç ãßíåé ÷ñÞóç áðïìáêñõóìÝíçò óýíäåóçò +Schedule the mirroring operation +Ðñïãñáììáôéóìüò (÷ñïíéêÜ) ôçò äéáäéêáóßáò áíôéãñáöÞò +Quit WinHTTrack Website Copier +ÅãêáôÜëåéøç ôïõ WinHTTrack Website Copier +Back to starting page +Ðßóù óôçí áñ÷éêÞ óåëßäá +Click to start! +Êëéê ãéá Ýíáñîç! +No saved password for this connection! +Äåí õðÜñ÷åé áðïèçêåõìÝíï óõíèçìáôéêü ãéá áõôÞ ôç óýíäåóç! +Can not get remote connection settings +Áäýíáôç ç ëÞøç ôùí ñõèìßóåùí ôçò áðïìáêñõóìÝíçò óýíäåóçò +Select a connection provider +ÅðéëÝîôå óýíäåóç +Start +¸íáñîç +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Ðáñáêáëþ ñõèìßóôå ôéò ðáñáìÝôñïõò ôçò óýíäåóçò áí åßíáé áðáñáßôçôï,\nìåôÜ ðáôÞóôå ÔÅËÏÓ ãéá íá îåêéíÞóåé ç äéáäéêáóßá áíôéãñáöÞò. +Save settings only, do not launch download now. +Ìüíï áðïèÞêåõóç ôùí ñõèìßóåùí, ü÷é Ýíáñîç ìåôáöïñÜò ôþñá. +On hold +Óå áíáìïíÞ +Transfer scheduled for: (hh/mm/ss) +Ç ìåôáöïñÜ ðñïãñáììáôßóôçêå ãéá: (hh/mm/ss) +Start +¸íáñîç +Connect to provider (RAS) +Óýíäåóç ìå ôï Internet +Connect to this provider +ÅðéëïãÞ óýíäåóçò +Disconnect when finished +Áðïóýíäåóç óôï ôÝëïò +Disconnect modem on completion +Áðïóýíäåóç ôïõ modem óôï ôÝëïò +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Ðáñáêáëþ íá ìáò åíçìåñþóåôå ãéá êÜèå ðñüâëçìá Þ bug)\r\n\r\nÁíÜðôõîç:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for Greek translations to:\r\nMichael Papadakis (mikepap at freemail dot gr) +About WinHTTrack Website Copier +Ó÷åôéêÜ ìå ôï WinHTTrack Website Copier +Please visit our Web page +Ðáñáêáëþ åðéóêåõèåßôå ôçí óåëßäá ìáò +Wizard query +ÁíáæÞôçóç ìå âïçèü +Your answer: +Ç áðÜíôçóÞ óáò: +Link detected.. +Áíáêáëýöôçêå link. +Choose a rule +ÅðéëÝîôå êáíüíá +Ignore this link +Áãíüçóç áõôïý ôïõ link +Ignore directory +Áãíüçóç öáêÝëïõ +Ignore domain +Áãíüçóç ôïõ domain +Catch this page only +ÐÜñóéìï ìüíï áõôÞò ôçò óåëßäáò +Mirror site +ÁíôéãñáöÞ ôïðïèåóßáò +Mirror domain +ÁíôéãñáöÞ ôïõ domain +Ignore all +Áãíüçóç üëùí +Wizard query +ÁíáæÞôçóç ìå âïçèü +NO +Ï×É +File +Áñ÷åßï +Options +ÅðéëïãÝò +Log +Áñ÷åßï ãåãïíüôùí +Window +ÐáñÜèõñï +Help +ÂïÞèåéá +Pause transfer +Ðáýóç ìåôáöïñÜò +Exit +¸îïäïò +Modify options +Ôñïðïðïßçóç åðéëïãþí +View log +ÐñïâïëÞ áñ÷åßïõ ãåãïíüôùí +View error log +ÐñïâïëÞ ëáèþí +View file transfers +ÐñïâïëÞ ìåôáöïñþí áñ÷åßùí +Hide +Áðüêñõøç +About WinHTTrack Website Copier +Ó÷åôéêÜ ìå ôï WinHTTrack Website Copier +Check program updates... +¸ëåã÷ïò ãéá íÝá Ýêäïóç ôïõ ðñïãñÜììáôïò... +&Toolbar +&ÌðÜñá åñãáëåßùí +&Status Bar +ÌðÜñá &êáôÜóôáóçò +S&plit +&×þñéóìá +File +Áñ÷åßï +Preferences +ÐñïôéìÞóåéò +Mirror +Áíôßãñáöï +Log +Áñ÷åßï ãåãïíüôùí +Window +ÐáñÜèõñï +Help +ÂïÞèåéá +Exit +¸îïäïò +Load default options +Öüñôùìá ðñïåðéëåãìÝíùí ñõèìßóåùí +Save default options +ÁðïèÞêåõóç ðñïåðéëåãìÝíùí ñõèìßóåùí +Reset to default options +ÅðáíáöïñÜ óôéò ðñïåðéëåãìÝíåò ñõèìßóåéò +Load options... +Öüñôùìá ñõèìßóåùí... +Save options as... +ÁðïèÞêåõóç ñõèìßóåùí ùò... +Language preference... +Ðñïôßìçóç ãëþóóáò... +Contents... +Ðåñéå÷üìåíá... +About WinHTTrack... +Ó÷åôéêÜ ìå ôï WinHTTrack... +New project\tCtrl+N +ÍÝá åñãáóßá\tCtrl+N +&Open...\tCtrl+O +¢&íïéãìá...\tCtrl+O +&Save\tCtrl+S +&ÁðïèÞêåõóç\tCtrl+S +Save &As... +ÁðïèÞêåõóç &ùò... +&Delete... +&ÄéáãñáöÞ... +&Browse sites... +&ÐëïÞãçóç ôïðïèåóéþí... +User-defined structure +ÄïìÞ ïñéóìÝíç áðü ôïí ÷ñÞóôç +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\t¼íïìá áñ÷åßïõ ÷ùñßò ôïí ôýðï ôïõ (ð÷: image)\r\n%N\t¼íïìá áñ÷åßïõ ìå ôïí ôýðï ôïõ (ð÷: image.gif)\r\n%t\tÔýðïò áñ÷åßïõ ìüíï (ð÷: gif)\r\n%p\tÄéáäñïìÞ [÷ùñßò / óôï ôÝëïò] (ð÷: /someimages)\r\n%h\t¼íïìá ôïðïèåóßáò (ð÷: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 öñÜóç áíáæÞôçóçò (128 bits, 32 ascii bytes)\r\n%q\tMD5 ìéêñÞ öñÜóç áíáæÞôçóçò (16 bits, 4 ascii bytes)\r\n\r\n%s?\tÌéêñü üíïìá üðùò óôï DOS (ð÷: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +ÐáñÜäåéãìá:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Ñõèìßóåéò proxy +Proxy address: +Äéåýèõíóç proxy: +Proxy port: +Port ôïõ proxy: +Authentication (only if needed) +Áõèåíôéêïðïßçóç (ìüíï áí ÷ñåéÜæåôáé) +Login +¼íïìá ÷ñÞóôç +Password +Êùäéêüò +Enter proxy address here +Ôïðïèåôåßóôå ôçí äéåýèõíóç ôïõ proxy åäþ +Enter proxy port here +Ôïðïèåôåßóôå ôçí port ôïõ proxy åäþ +Enter proxy login +Ôïðïèåôåßóôå ôï üíïìá ÷ñÞóôç ôïõ proxy +Enter proxy password +Ôïðïèåôåßóôå ôï óõíèçìáôéêü ôïõ proxy +Enter project name here +Ôïðïèåôåßóôå ôï üíïìá ôçò åñãáóßáò åäþ +Enter saving path here +Ôïðïèåôåßóôå ôç äéáäñïìÞ áðïèÞêåõóçò åäþ +Select existing project to update +ÅðéëïãÞ åñãáóßáò ãéá áíáíÝùóç +Click here to select path +Êëéê åäþ ãéá åðéëïãÞ äéáäñïìÞò +HTTrack Project Wizard... +Âïçèüò äçìéïõñãßáò åñãáóßáò HTTrack... +New project name: +ÍÝï üíïìá åñãáóßáò: +Existing project name: +ÕðÜñ÷ùí üíïìá åñãáóßáò: +Project name: +¼íïìá åñãáóßáò: +Base path: +Áñ÷éêÞ äéáäñïìÞ: +C:\\My Web Sites +C:\\Ïé Ôïðïèåóßåò ìïõ +Type a new project name, \r\nor select existing project to update/resume +Ôïðïèåôåßóôå Ýíá íÝï üíïìá åñãáóßáò, \r\nÞ åðéëÝîôå ìßá õðÜñ÷ïõóá åñãáóßá ãéá áíáíÝùóç/óõíÝ÷éóç +New project +ÍÝá åñãáóßá +Insert URL +ÔïðïèÝôçóç URL +URL: +URL: +Authentication (only if needed) +Áõèåíôéêïðïßçóç (ìüíï áí ÷ñåéÜæåôáé) +Login +¼íïìá ÷ñÞóôç +Password +ÊùäéêÞ ëÝîç +Forms or complex links: +Öüñìåò Þ óýíèåôá links: +Capture URL... +Óýëëçøç URL... +Enter URL address(es) here +Ôïðïèåôåßóôå URL äéåýèõíóç(åéò) åäþ +Enter site login +Ôïðïèåôåßóôå üíïìá ÷ñÞóôç ãéá ôçí ôïðïèåóßá +Enter site password +Ôïðïèåôåßóôå óõíèçìáôéêü ãéá ôçí ôïðïèåóßá +Use this capture tool for links that can only be accessed through forms or javascript code +×ñçóéìïðïéÞóôå áõôü ôï åñãáëåßï óýëëçøçò ãéá links ðïõ ìðïñïýí íá ðñïóðåëáóôïýí ìüíï ìÝóá áðü öüñìåò Þ êþäéêá javascript +Choose language according to preference +ÅðéëïãÞ ãëþóóáò óýìöùíá ìå ôçí ðñïôßìçóç +Catch URL! +Óýëëçøç URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Ðáñáêáëþ ôïðïèåôåßóôå ðñïóùñéíÜ ôéò ñõèìßóåéò proxy ôïõ browser óáò óôéò áêüëïõèåò ôéìÝò (ÁíôéãñÜøôå/ÅðéêïëëÞóôå äéåýèõíóç proxy êáé port).\nÌåôÜ êëéê óôï êïõìðß áðïóôïëÞò ôçò öüñìáò, óôçí óåëßäá ôïõ browser óáò Þ êëéê óôï óõãêåêñéìÝíï link ðïõ èÝëåôå íá óõëëçöèåß. +This will send the desired link from your browser to WinHTTrack. +Áõôü èá óôåßëåé ôï åðéèõìçôü link áðü ôïí browser óáò óôï WinHTTrack. +ABORT +ÌÁÔÁÉÙÓÇ +Copy/Paste the temporary proxy parameters here +ÁíôéãñáöÞ/Åðéêüëëçóç ôùí ðñïóùñéíþí ðáñáìÝôñùí ôïõ proxy åäþ +Cancel +Áêýñùóç +Unable to find Help files! +Áäýíáôç ç åýñåóç áñ÷åßùí âïçèåßáò! +Unable to save parameters! +Áäýíáôç ç áðïèÞêåõóç ôùí ðáñáìÝôñùí! +Please drag only one folder at a time +Óáò ðáñáêáëþ íá ôñáâÜôå ìüíï Ýíá öÜêåëï ôç öïñÜ +Please drag only folders, not files +Óáò ðáñáêáëþ íá ôñáâÜôå ìüíï öáêÝëïõò, ü÷é áñ÷åßá +Please drag folders only +Óáò ðáñáêáëþ íá ôñáâÜôå ìüíï öáêÝëïõò +Select user-defined structure? +ÅðéëïãÞ äïìÞò ïñéóìÝíçò áðü ôïí ÷ñÞóôç; +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Ðáñáêáëþ åðéâåâáéþóôå ðùò ç ïñéóìÝíç öñÜóç áðü ôïí ÷ñÞóôç åßíáé óùóôÞ,\náëëéþò ôá ïíüìáôá áñ÷åßùí èá åßíáé ëáíèáóìÝíá! +Do you really want to use a user-defined structure? +ÈÝëåôå ðñÜãìáôé íá ÷ñçóéìïðïéÞóåôå ìßá äïìÞ ïñéóìÝíç áðü ôïí ÷ñÞóôç; +Too manu URLs, cannot handle so many links!! +ÐÜñá ðïëëÜ URLs, äåí åßíáé äõíáôÞ ç äéá÷åßñéóç ôüóùí ðïëëþí links!! +Not enough memory, fatal internal error.. +Äåí õðÜñ÷åé áñêåôÞ ìíÞìç, êáôáóôñïöéêü åóùôåñéêü óöÜëìá... +Unknown operation! +¢ãíùóôç ëåéôïõñãßá! +Add this URL?\r\n +Ðñüóèåóç áõôïý ôïõ URL;\r\n +Warning: main process is still not responding, cannot add URL(s).. +Ðñïåéäïðïßçóç: Ôï êõñßùò process áêüìá äåí áíôáðïêñßíåôáé, äåí ãßíåôáé íá ðñïóôåèïýí URL(s)... +Type/MIME associations +Ôýðïò/MIME óõíäÝóåéò +File types: +Ôýðïé áñ÷åßùí: +MIME identity: +Ôáõôüôçôá MIME: +Select or modify your file type(s) here +ÅðéëïãÞ Þ ôñïðïðïßçóç ôïõ(ùí) áñ÷åßïõ(ùí) åäþ +Select or modify your MIME type(s) here +ÅðéëïãÞ Þ ôñïðïðïßçóç ôïõ(ùí) MIME ôýðïõ(ùí) åäþ +Go up +ÐÞãáéíå ðÜíù +Go down +ÐÞãáéíå êÜôù +File download information +Ðëçñïöïñßåò êáôåâÜóìáôïò áñ÷åßïõ +Freeze Window +ÐÜãùìá ðáñáèýñïõ +More information: +Ðåñéóóüôåñåò ðëçñïöïñßåò +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Êáëþò Þñèáôå óôï WinHTTrack Website Copier!\n\nÐáñáêáëþ êÜíôå êëéê óôï êïõìðß Åðüìåíï ãéá íá\n\n- îåêéíÞóåôå ìßá íÝá åñãáóßá\n- Þ íá óõíå÷ßóåôå ìßá ðñïçãïýìåíç åñãáóßá +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Ïíüìáôá áñ÷åßùí ìå êáôÜëçîç:\nÏíüìáôá áñ÷åßùí ðïõ ðåñéëáìâÜíïõí:\nÁõôü ôï üíïìá áñ÷åßïõ:\nÏíüìáôá öáêÝëùí ðïõ ðåñéëáìâÜíïõí:\nÁõôü ôï üíïìá öáêÝëïõ:\nLinks óå áõôü ôï domain:\nLinks óå domains ðïõ ðåñéëáìâÜíïõí:\nLinks áðü áõôÞí ôçí ôïðïèåóßá:\nLinks ðïõ ðåñéëáìâÜíïõí:\nÁõôü ôï link:\nÏËÁ ÔÁ LINKS +Show all\nHide debug\nHide infos\nHide debug and infos +ÐñïâïëÞ üëùí\nÁðüêñõøç áðïóöáëìÜôùóçò\nÁðüêñõøç ðëçñïöïñéþí\nÁðüêñõøç áðïóöáëì. êáé ðëçñïö. +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +ÄïìÞ ôïðïèåóßáò (ðñïåðéëïãÞ)\nHtml óôï web/, åéêüíåò/Üëëá óôï web/images/\nHtml óôï web/html, åéêüíåò/Üëëá óôï web/images/\nHtml óôï web/, åéêüíåò/Üëëá óôï web/\nHtml óôï web/, åéêüíåò/Üëëá óôï web/xxx/, üðïõ xxx ç êáôÜëçîç áñ÷åßïõ\nHtml óôï web/html/, åéêüíåò/Üëëá óôï web/xxx/\nÄïìÞ ôïðïèåóßáò, ÷ùñßò www.domain.xxx/\nHtml óôï üíïìá_ôüðïõ/, åéêüíåò/Üëëá óôï üíïìá_ôüðïõ/images/\nHtml óôï üíïìá_ôüðïõ/html/, åéêüíåò/Üëëá óôï üíïìá_ôüðïõ/images/\nHtml óôï üíïìá_ôüðïõ/, åéêüíåò/Üëëá óôï üíïìá_ôüðïõ/\nHtml óôï üíïìá_ôüðïõ/, åéêüíåò/Üëëá óôï üíïìá_ôüðïõ/xxx/\nHtml óôï üíïìá_ôüðïõ/html/, åéêüíåò/Üëëá óôï üíïìá_ôüðïõ/xxx/\n¼ëá ôá áñ÷åßá óôï web/, ìå ôõ÷áßá ïíüìáôá (gadget !)\n¼ëá ôá áñ÷åßá óôï üíïìá_ôüðïõ/, ìå ôõ÷áßá ïíüìáôá (gadget !)\nÄïìÞ êáèïñéóìÝíç áðü ôïí ÷ñÞóôç... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Ìüíï øÜîéìï\nÁðïèÞêåõóç áñ÷åßùí html\nÁðïèÞêåõóç áñ÷åßùí åêôüò áðü html\nÁðïèÞêåõóç üëùí (ðñïåðéëïãÞ)\nÁðïèÞêåõóç ðñþôá áñ÷åßùí html +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +ÐáñáìïíÞ óôïí ßäéï öÜêåëï\nÌðïñåß íá ðÜåé êÜôù (ðñïåðéëïãÞ)\nÌðïñåß íá ðÜåé ðÜíù\nÌðïñåß íá ðÜåé êáé ðÜíù êáé êÜôù +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +ÐáñáìïíÞ óôçí ßäéá äéåýèõíóç (ðñïåðéëïãÞ)\nÐáñáìïíÞ óôï ßäéï domain\nÐáñáìïíÞ óôï ßäéï domain 1ïõ åðéðÝäïõ\nÏðïõäÞðïôå óôï Web +Never\nIf unknown (except /)\nIf unknown +ÐïôÝ\nÓå Üãíùóôá (åêôüò /)\nÓå Üãíùóôá +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +÷ùñßò êáíüíåò robots.txt\nrobots.txt åêôüò âïçèïý\n÷ñÞóç êáíüíùí robots.txt +normal\nextended\ndebug +êáíïíéêü\nåêôåôáìÝíï\náðïóöáëìÜôùóç +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +ÊáôÝâáóìá ôïðïèåóßáò(þí)\nÊáôÝâáóìá ôïðïèåóßáò(þí) + åñùôÞóåéò\nÊáôÝâáóìá îå÷ùñéóôþí áñ÷åßùí\nÊáôÝâáóìá üëùí ôùí ôüðùí óôéò óåëßäåò (ðïëëáðëÜ áíôßãñáöá)\n¸ëåã÷ïò links óôéò óåëßäåò (Ýëåã÷ïò óçìåéþóåùí)\n* ÓõíÝ÷éóç ìéóïôåëåéùìÝíïõ êáôåâÜóìáôïò\n* ÁíáíÝùóç õðÜñ÷ïõóáò ôïðïèåóßáò +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Ó÷åôéêü URI / Áðüëõôï URL (ðñïåðéëïãÞ)\nÁðüëõôï URL / Áðüëõôï URL\nÁðüëõôï URI / Áðüëõôï URL\nÐñùôüôõðï URL / Ðñùôüôõðï URL +Open Source offline browser +¢íïéãìá ðçãÞò offline browser +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Website Copier/Offline Browser. ÁíôéãñÜøôå áðïìáêñõóìÝíåò ôïðïèåóßåò óôïí õðïëïãéóôÞ óáò. Åëåýèåñá-ÄùñåÜí. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, offline browser +URL list (.txt) +Ëßóôá URL (.txt) +Previous +Ðñïçãïýìåíï +Next +Åðüìåíï +URLs +URLs +Warning +Ðñïåéäïðïßçóç +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Ï browser óáò äåí (öáßíåôáé íá) õðïóôçñßæåé javascript. Ãéá êáëýôåñá áðïôåëÝóìáôá, ðáñáêáëþ ÷ñçóéìïðïéÞóôå Ýíáí javascript-åíåñãü browser. +Thank you +Óáò åõ÷áñéóôþ +You can now close this window +Ôþñá ìðïñåßôå íá êëåßóåôå áõôü ôï ðáñÜèõñï +Server terminated +Áêõñþèçêå áðü ôïí åîõðçñåôçôÞ +A fatal error has occured during this mirror +¸íá êáôáóôñïöéêü óöÜëìá ðñïêëÞèçêå êáôÜ ôçí áíôéãñáöÞ áõôïý ôïõ ôüðïõ diff --git a/lang/Italiano.txt b/lang/Italiano.txt new file mode 100755 index 0000000..9f8abf3 --- /dev/null +++ b/lang/Italiano.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Italiano +LANGUAGE_FILE +Italiano +LANGUAGE_ISO +it +LANGUAGE_AUTHOR +Witold Krakowski (wkrakowski at libero.it)\r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +Ok +Cancel +Annulla +Exit +Esci +Close +Chiudi +Cancel changes +Annulla modifiche +Click to confirm +Clicca per confermare +Click to get help! +Clicca qui per aiuto +Click to return to previous screen +Clicca per tornare indietro +Click to go to next screen +Clicca per passare allo schermo successivo +Hide password +Nascondi password +Save project +Salva il progetto +Close current project? +Chiudere il progetto corrente? +Delete this project? +Eliminare questo progetto? +Delete empty project %s? +Eliminare il progetto vuoto %s? +Action not yet implemented +Azione non ancora possibile +Error deleting this project +C'é stato un errore durante l'eliminazione di questo progetto +Select a rule for the filter +Seleziona le regole per il filtro +Enter keywords for the filter +Inserisci le parole chiave per il filtro +Cancel +Annulla +Add this rule +Aggiungi questa regola +Please enter one or several keyword(s) for the rule +Inserisci una o più parola(e) chiave +Add Scan Rule +Aggiungi un filtro +Criterion +Scegli una regola +String +Inderisci una parola chiave +Add +Aggiungi +Scan Rules +Filtri +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Puoi escludere o accettare diversi URL o collegamenti usando wildcards\nPuoi usare spazi tra i filtri.\n\nEsempio: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Escludi i collegamenti +Include link(s) +Accetta i collegamenti +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Suggerimento: Se vuoi accettare tutti i file gif sulle pagine web, usa qualcosa come +www.pagina.com/*.gif \n((+*.gif accetterà/rifiuterà TUTTI i file gif su TUTTE le pagine) +Save prefs +Salva impostazioni +Matching links will be excluded: +I collegamenti soggetti a questa regola verranno esclusi +Matching links will be included: +I collegamenti soggetti a questa regola verranno accettati +Example: +Esempio: +gif\r\nWill match all GIF files +gif\r\nTroverà tutti i file gif +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nTroverà tutti i file contenenti blue, es. 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nTroverà il file 'bigfile.mov', ma non 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nTroverà i collegamenti con la cartella contenente 'cgi', es. /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nTroverà i collegamenti con la cartella contenente 'cgi-bin' (ma non cgi-bin-2, per esempio) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nTroverà tutti i collegamenti come www.someweb.com, private.someweb.com etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nTroverà tutti i collegamenti come www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nTroverà tutti i collegamenti come www.someweb.com/... (ma non collegamenti come private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nTroverà tutti i collegamenti come www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nTroverà soltanto il collegamenti www.test.com/test/someweb.html. Notate che bisogna inserire sia l'indirizo (www.xxx.yyy), che il percorso (/test/someweb.html) +All links will match +Tutti i collegamenti verranno rifiutati/accettati +Add exclusion filter +Aggiungi il filtro per escludere +Add inclusion filter +Aggiungi il filtro per accettare +Existing filters +Filtri aggiuntivi +Cancel changes +Annulla modifiche +Save current preferences as default values +Salva impostazioni come valori di default +Click to confirm +Clicca per confermare +No log files in %s! +Non creare file di log in %s! +No 'index.html' file in %s! +Non creare il file index.html in%s! +Click to quit WinHTTrack Website Copier +Clicca per uscire da WinHTTrack Website Copier +View log files +Visualizza i file di log +Browse HTML start page +Visualizza la pagina html iniziale +End of mirror +Fine del mirror +View log files +Visualizza file di log +Browse Mirrored Website +Visualizza il Web +New project... +Nuovo progetto +View error and warning reports +Visualizza gli errori +View report +Visualizza le informazioni +Close the log file window +Chiudi la finestra dei log +Info type: +Tipo di informazione +Errors +Errori +Infos +Informazioni +Find +Cerca +Find a word +Trova una parola +Info log file +File di log +Warning/Errors log file +File di log degli errori +Unable to initialize the OLE system +Impossibile inizializzare il sistema OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +Non c'è cache nella cartella indicata\nWinHTTracknon ha trovato nessun mirror interrotto! +Could not connect to provider +Impossibile stabilire la connessione con il provider +receive +ricezione +request +richiesta +connect +connessione +search +ricerca +ready +pronto +error +errore +Receiving files.. +Ricezione dei file +Parsing HTML file.. +Analisi file html.. +Purging files.. +Pulizia file +Loading cache in progress.. + +Parsing HTML file (testing links).. +Analisi file HTML (test dei collegamenti) +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pausa (seleziona [Aiuto]/[Pausa] per continuare) +Finishing pending transfers - Select [Cancel] to stop now! +Sto finendo i trasferimenti rimasti - Premi [Annulla] per terminare adesso! +scanning +Scansione +Waiting for scheduled time.. +Attesa dell'orario specificato per iniziare +Connecting to provider +Connesione al provider in corso +[%d seconds] to go before start of operation +Mirror in pausa [%d seconds] +Site mirroring in progress [%s, %s bytes] +Mirror in corso [%s, %s bytes] +Site mirroring finished! +Mirror del sito completato! +A problem occured during the mirroring operation\n +C'è stato un problema durante il mirror\n +\nDuring:\n +Durante:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Verifica il log se necessario.\n\nClicca OK per uscire da WinHTTrack.\n\nGrazie per aver usato WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Il mirror è finito.\nClicca OK per uscire da WinHTTrack.\nGuarda i file log per assicurarti che tutto è andato a buon fine.\n\nGrazie per aver usato WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * MIRROR INTERROTTO! * *\r\nLa cache corrente è necessaria per le operazioni di aggiornamento e contiene solo i dati scaricati durante questa sessione interrotta.\r\nLa cache precedente potrebbe contenere informazioni più complete; se non vuoi perdere quelle informazioni, devi ripristinarla e cancellare la cache corrente.\r\n[Nota: per fare questo, cancella il contenuto della cartella hts-cache del mirror]\r\n\r\nPensi che la cache precedente possa contenere informazioni più complete e vuoi ripristinarla? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ERRORE NEL MIRROR! * *\r\nHTTrack ha stabilito che il mirror attuale è vuoto. Se questo è un'aggiornamento, il mirror precedente è stato ripristinato.\r\nMotivo: la prima pagina(e) non è stata trovata oppure c'è stato un problema durante la connessione\r\n=> Assicuratevi che il sito esista ancora, e/o verificate le vostre impostazioni del proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +\nSuggerimento: Clicca [Visualizza filr di log] per vedere i messaggi di avvertimento o di errore +Error deleting a hts-cache/new.* file, please do it manually +Errore durante la cancellazione del contenuto della cartella hts-cache, è necessario completare l'operazione manualmente +Do you really want to quit WinHTTrack Website Copier? +Vuoi veramente uscire da WinHTTrack? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Modo mirror -\n\nInserisci l'indirizzo(i) URL nell'apposito spazio +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Modo mirror con il wizard (con domande) -\n\nInserisci l'indirizzo(i) URL nell'apposito spazio +- File Download Mode -\n\nEnter file address(es) in URL box +- Modo di download dei file -\n\nInserisci l'indirizzo(i) URL dei file nell'apposito spazio +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Modo di test dei collegamenti -\n\nInserisci l'indirizzo(i) URL delle pagine contenenti i collegamenti nell'apposito spazio +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Modo di aggiornameto/continuazione del mirror -\n\nVerifica l'indirizzo(i) nell'apposito spazio, quindi clicca sul pulsante AVANTI e verifica i parametri. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Continuazione di un mirror interrotto -\n\nVerifica l'indirizzo(i) nell'apposito spazio, quindi clicca sul pulsante AVANTI e verifica i parametri. +Log files Path +Percorso dei file di log +Path +Percorso +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +Modo di lista di mirror, inserisci l'indirizzo(i) delle pagine contenenti i collegamenti +New project / Import? +Nuovo progetto / importare? +Choose criterion +Scegli l'azione +Maximum link scanning depth +Massima profondità dei link +Enter address(es) here +Inserisci gli indirizzi qui +Define additional filtering rules +Definisci filtri aggiuntivi +Proxy Name (if needed) +Proxy se necessario +Proxy Port +Port del proxy +Define proxy settings +Inserisci le impostazioni del proxy +Use standard HTTP proxy as FTP proxy +Utilizza il proxy HTTP standard come proxy FTP +Path +Percorso +Select Path +Seleziona percorso +Path +Percorso +Select Path +Seleziona percorso +Quit WinHTTrack Website Copier +Esci da WinHTTrack Website Copier +About WinHTTrack +Informazioni su WinHTTrack +Save current preferences as default values +Salva le impostazioni come valori di default +Click to continue +Clicca per continuare +Click to define options +Clicca per definire le opzioni +Click to add a URL +Clicca per aggiungere un indirizzo URL +Load URL(s) from text file +Carica gli URL da un file di testo +WinHTTrack preferences (*.opt)|*.opt|| +Impostazioni di Win HTTrack (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +File di testo con gli indirizzi (*.txt)|*.txt|| +File not found! +File non trovato! +Do you really want to change the project name/path? +Sei sicuro di voler cambiare il nome e/o il percorso del progetto? +Load user-default options? +Caricare opzioni di default dell'utente? +Save user-default options? +Salvare opzioni di default dell'utente? +Reset all default options? +Azzerare tutte le opzioni di default? +Welcome to WinHTTrack! +Benvenuto in WinHTTrack! +Action: +Azione: +Max Depth +Massima profondità: +Maximum external depth: +Massima profondità esterna: +Filters (refuse/accept links) : +Filtri (rifiutare/accettare i collegamenti) : +Paths +Percorsi +Save prefs +Salva impostazioni +Define.. +Definisci.. +Set options.. +Definisci le opzioni.. +Preferences and mirror options: +Impostazioni e opzioni del mirror: +Project name +Nome del progetto: +Add a URL... +Aggiungi URL... +Web Addresses: (URL) +Indirizzi Web: (URL) +Stop WinHTTrack? +Fermare WinHTTrack? +No log files in %s! +Non ci sono log in %s! +Pause Download? +Trasferimento in pausa? +Stop the mirroring operation +Interrompi il mirror +Minimize to System Tray +Nascondi questa finestra nel system tray +Click to skip a link or stop parsing +Clicca per saltare un collegamento oppure interrompere l'analisi +Click to skip a link +Clicca per saltare un collegamento +Bytes saved +Byte salvati +Links scanned +Collegamenti analizzati +Time: +Tempo: +Connections: +Connessioni: +Running: +In esecuzione: +Hide +Nascondi +Transfer rate +Velocità di trasferimento +SKIP +SALTA +Information +Informazioni +Files written: +File salvati : +Files updated: +File aggiornati : +Errors: +Errori : +In progress: +In corso : +Follow external links +Scarica i file anche dai collegamenti esterni +Test all links in pages +Verifica tutti i collegamenti nelle pagine +Try to ferret out all links +Cerca di trovare tutti i collegamenti +Download HTML files first (faster) +Scarica prima i file HTML (più veloce) +Choose local site structure +Scegli la struttura del sito in locale +Set user-defined structure on disk +Definisci la struttura del sito sul disco +Use a cache for updates and retries +Usa la cache per aggiornamenti e per riprovare +Do not update zero size or user-erased files +Non scaricare nuovamente i file presenti localmente con dimensione nulla oppure cancellati dal utente +Create a Start Page +Crea la pagina iniziale +Create a word database of all html pages +Crea un database delle parole di tutte le pagine HTML +Create error logging and report files +Crea file di log per segnalare errori e informazioni +Generate DOS 8-3 filenames ONLY +Genera solo nomi di file in formato 8.3 +Generate ISO9660 filenames ONLY for CDROM medias +Genera nomi di file in formato ISO9660 per i CDROM +Do not create HTML error pages +Non generare pagine d'errore html +Select file types to be saved to disk +Seleziona i tipi di file da scrivere sul disco +Select parsing direction +Seleziona la direzione di spostamento nel sito +Select global parsing direction +Seleziona la direzione globale dello spostamento nel sito +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Regole per la riscrittura degli URL interni (collegamenti scaricati) ed esterni (collegamenti non scaricati) +Max simultaneous connections +Numero massimo di connessioni +File timeout +Massimo tempo d'attesa per un file +Cancel all links from host if timeout occurs +Annulla tutti i collegamenti dal host se c'è timeout +Minimum admissible transfer rate +Minimo transfer rate ammesso +Cancel all links from host if too slow +Annulla tutti i collegamenti dal host se è troppo lento +Maximum number of retries on non-fatal errors +Massimo numero di tentativi nel caso di un errore non fatale +Maximum size for any single HTML file +Massima dimensione per una pagina html +Maximum size for any single non-HTML file +La dimensione massima per un file +Maximum amount of bytes to retrieve from the Web +Massima dimensione del mirror +Make a pause after downloading this amount of bytes +Pausa dopo aver ricevuto questa quantità di byte +Maximum duration time for the mirroring operation +Tempo massimo del mirror +Maximum transfer rate +Transfer rate massimo +Maximum connections/seconds (avoid server overload) +Limite delle connessioni al secondo (per evitare il sovraccarico del server) +Maximum number of links that can be tested (not saved!) +Massimo numero di link che possono essere testati (non salvati!) +Browser identity +Identità del browser +Comment to be placed in each HTML file +Pié di pagina per ogni file HTML +Back to starting page +Torna alla pagina iniziale +Save current preferences as default values +Salva le impostazioni come valori di default +Click to continue +Clicca per continuare +Click to cancel changes +Clicca per annullare le modifiche +Follow local robots rules on sites +Segui le regole per i robot sui siti +Links to non-localised external pages will produce error pages +Pagine esterne (non prelevate) saranno collegate alle pagine d'errore +Do not erase obsolete files after update +Non cancellare i file vecchi dopo l'aggiornamento +Accept cookies? +Accettare i cookie spediti? +Check document type when unknown? +Verificare il tipo di documento se sconosciuto? +Parse java applets to retrieve included files that must be downloaded? +Analizzare gli applet java per ritrovare i file contenuti in essi? +Store all files in cache instead of HTML only +Tieni tutti i file nella cache, invece dei soli file HTML +Log file type (if generated) +Tieni il tipo di file nel log se generato +Maximum mirroring depth from root address +Massima profondità del mirror dai primi indirizzi +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Massima profondità del mirror per indirizzi esterni/vietati (0, è l'impostazione predefinita) +Create a debugging file +Crea un file di debug +Use non-standard requests to get round some server bugs +Cerca di evitare alcuni bug dei server usando richieste non standard +Use old HTTP/1.0 requests (limits engine power!) +Usa richieste HTTP/1.0, limita le capacità del motore! +Attempt to limit retransfers through several tricks (file size test..) +Tentativo di limitare il numero di ripetizioni dei trasferimenti, usando alcuni truchi (test della dimensione del file..) +Write external links without login/password +Salva link esterni senza login e password +Write internal links without query string +Salva i link interni senza stringa query +Get non-HTML files related to a link, eg external .ZIP or pictures +Scarica file non-html vicino ai collegamenti (es. .ZIP o immagini presenti all'esterno) +Test all links (even forbidden ones) +Verifica tutti i collegamenti (anche quelli vietati) +Try to catch all URLs (even in unknown tags/code) +Cerca di trovare tutti gli URL (anche quelli con tag/codice sconosciuto) +Get HTML files first! +Scarica prima i file HTML! +Structure type (how links are saved) +Tipo di struttura (come sono salvati i collegamenti) +Use a cache for updates +Usa la cache per gli aggiornamenti +Do not re-download locally erased files +Non scaricare nuovamente i file cancellati dal disco +Make an index +Crea un indice +Make a word database +Crea un database delle parole +Log files +File di log +DOS names (8+3) +Nomi DOS (8+3) +ISO9660 names (CDROM) +Nomi ISO9660 (CDROM) +No error pages +Senza pagine d'errore +Primary Scan Rule +Filtro primario +Travel mode +Modo di spostamento +Global travel mode +Modo di spostamento globale +These options should be modified only exceptionally +Normalmente queste opzioni non devono essere modificate +Activate Debugging Mode (winhttrack.log) +Attiva il modo di debug (winhttrack.log) +Rewrite links: internal / external +Riscrittura collegamenti: interni /esterni +Flow control +Controllo di flusso +Limits +Limiti +Identity +Identità +HTML footer +Pié di pagina HTML +N# connections +N° di connessioni +Abandon host if error +Abbandona il host nel caso di errore +Minimum transfer rate (B/s) +Transfer rate minimo (B/s) +Abandon host if too slow +Abbandona il host se è troppo lento +Configure +Configurazione +Use proxy for ftp transfers +Usa proxy per trasferimenti ftp +TimeOut(s) +TimeOut +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Tentativi +Size limit +Limite di dimensione +Max size of any HTML file (B) +Dimensione massima html: +Max size of any non-HTML file +Dimensione massima altri file: +Max site size +Dimensione massima del sito +Max time +Tempo massimo +Save prefs +Salva impostazioni +Max transfer rate +Velocità di trasferimento massima +Follow robots.txt +Segui robots.txt +No external pages +Senza pagine esterne +Do not purge old files +Non cancellare file vecchi +Accept cookies +Accetta i cookie +Check document type +Verifica il tipo di file +Parse java files +Analizza i file java +Store ALL files in cache +Memoriza tutti i file nella cache +Tolerant requests (for servers) +Richieste toleranti (per i server) +Update hack (limit re-transfers) +Aggiorna hack (limita i ritrasferimenti) +Force old HTTP/1.0 requests (no 1.1) +Forza richieste HTTP/1.0 (non 1.1) +Max connections / seconds +N° massimo di connessioni al secondo +Maximum number of links +Massimo numero di link +Pause after downloading.. +Pausa dopo il download.. +Hide passwords +Nascondi password +Hide query strings +Nascondi le stringhe query +Links +Collegamenti +Build +Struttura +Experts Only +Esperto +Flow Control +Controllo di flusso +Limits +Limiti +Browser ID +Identità del browser +Scan Rules +Filtri +Spider +Spider +Log, Index, Cache +Log, Indice, Cache +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Vuoi veramente uscire da WinHTTrack? +Do not connect to a provider (already connected) +non effettuare la connessione al provider (già connesso) +Do not use remote access connection +Non usare la connessione di accesso remoto +Schedule the mirroring operation +Programma il mirror +Quit WinHTTrack Website Copier +Esci da WinHTTrack Website Copier +Back to starting page +Torna alla pagina iniziale +Click to start! +Clicca per iniziare! +No saved password for this connection! +Non c'è nessuna password salvata per questa connessione +Can not get remote connection settings +Impossibile ottenere i parametri della connessione +Select a connection provider +Seleziona il provider a cui connettersi +Start +Inizio +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Puoi iniziare il mirror premendo il pulsante FINISH o definire altre opzioni per la connessione +Save settings only, do not launch download now. +Salva solo le impostazioni, non iniziare il download adesso. +On hold +Attesa +Transfer scheduled for: (hh/mm/ss) +Attesa fino a: (hh/mm/ss) +Start +Inizio +Connect to provider (RAS) +Connessione al provider (RAS) +Connect to this provider +Connessione a questo provider: +Disconnect when finished +Disconnetti alla fine +Disconnect modem on completion +Disconnetti il modem quando il mirror é finito +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(informateci degli errori o problemi)\r\n\rSviluppo:\r\nInterfacccia: Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for Italian translations to:\r\nWitold Krakowski (wkrakowski@libero.it) +About WinHTTrack Website Copier +Informazioni su WinHTTrack Website Copier +Please visit our Web page +Visita la nostra pagina Web +Wizard query +La domanda del wizard +Your answer: +La vostra risposta: +Link detected.. +É stato trovato un collegamento +Choose a rule +Scegli una regola +Ignore this link +Ignora questo collegamento +Ignore directory +Ignora questa cartella +Ignore domain +Ignora questo dominio +Catch this page only +Scarica soltanto questa pagina +Mirror site +Mirror del sito +Mirror domain +Mirror del dominio +Ignore all +Ignora tutto +Wizard query +La domanda del wizard +NO +NO +File +File +Options +Opzioni +Log +Log +Window +Finestra +Help +Aiuto +Pause transfer +Pausa del trasferimento +Exit +Esci +Modify options +Modifica le opzioni +View log +Visualizza il log +View error log +Visualizza il log di errori +View file transfers +Visualizza trasferimenti dei file +Hide +Nascondi +About WinHTTrack Website Copier +Informazioni su WinHTTrack Website Copier +Check program updates... +Verifica gli aggiornamenti del programma... +&Toolbar +Toolbar +&Status Bar +Barra di stato +S&plit +Dividi +File +File +Preferences +Opzioni +Mirror +Aiuto +Log +Log +Window +Finestra +Help +Aiuto +Exit +Esci +Load default options +Carica le opzioni di default +Save default options +Salva le opzioni di default +Reset to default options +Azzera le opzioni di default +Load options... +Carica le opzioni +Save options as... +Salva le opzioni come... +Language preference... +Preferenza di lingua +Contents... +Indice +About WinHTTrack... +Informazioni su WinHTTrack Website Copier +New project\tCtrl+N +Nuovo progetto / importa... +&Open...\tCtrl+O +&Apri...\tCtrl+O +&Save\tCtrl+S +&Salva\tCtrl+S +Save &As... +Salva &come... +&Delete... +&Elimina... +&Browse sites... +&Visita i siti... +User-defined structure +Struttura definita dall'utente +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNome del file senza il tipo (es.: immagine)\n%N\tNome del file, incluso il tipo (es.: immagine)\n%t\tTipo del file (es.: gif)\n%p\tPercorso [senza fine /] (es.: /immagini)\n%h\tIl nome del host (es.: www.someweb.com)\n\n%s?\tVersione corta per il DOS (es.: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Esempio:\t%h%p/%n.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Preferenze del proxy +Proxy address: +L'Indirizzo del proxy +Proxy port: +Port del proxy +Authentication (only if needed) +Autenticazione (solo se necessaria) +Login +Login +Password +Password +Enter proxy address here +Inserisci qui il nuovo indirizzo del proxy +Enter proxy port here +Inserisci qui il port del proxy +Enter proxy login +Inserisci il login del proxy +Enter proxy password +Inserisci la password del proxy +Enter project name here +Inserisci qui il nome del progetto +Enter saving path here +Inserisci qui il percorso per salvare il progetto +Select existing project to update +Seleziona da qui un progetto esistente da aggiornare +Click here to select path +Clicca qui per selezionare il percorso +HTTrack Project Wizard... +Wizard per progetto HTTrack +New project name: +Il nome del nuovo progetto: +Existing project name: +Il nome di un progetto esistente: +Project name: +Il nome del progetto: +Base path: +Il percorso base: +C:\\My Web Sites +C:\\Mie pagine Web +Type a new project name, \r\nor select existing project to update/resume +Inserisci il nome del nuovo progetto, \r\no seleziona un progetto esistente per aggiornare/continuare +New project +Nuovo progetto +Insert URL +Inserisci l'indirizzo URL: +URL: +Indirizzo URL: +Authentication (only if needed) +Identificazione (solo se necessaria) +Login +Login +Password +Password +Forms or complex links: +Formule o collegamenti complessi +Capture URL... +Preleva l'URL +Enter URL address(es) here +Inserisci qui l'indirizzo URL +Enter site login +Inserisci il login del sito +Enter site password +Inserisci la password del sito +Use this capture tool for links that can only be accessed through forms or javascript code +Usa questo tool per prelevare i collegamenti ai quali si può accedere solo tramite formule o collegamenti javascript +Choose language according to preference +Seleziona la lingua +Catch URL! +Preleva l'URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Temporaneamente inserisci le seguenti impostazioni per il proxy (copia/incolla l'indirizzo e il port del proxy).\nQuindi, nella tua pagina del browser clicca sul pulsante ok della form, oppure clicca sul collegamento specifico che vuoi prelevare. +This will send the desired link from your browser to WinHTTrack. +Questo preleverà il coolegamento desiderato dal tuo browser a HTTrack. +ABORT +ANNULLA +Copy/Paste the temporary proxy parameters here +Copia/incolla qui le impostazioni temporanee del proxy +Cancel +Annulla +Unable to find Help files! +Impossibile trovare i file di aiuto +Unable to save parameters! +Impossibile salvare i parametri! +Please drag only one folder at a time +Trascina solo una cartella +Please drag only folders, not files +Trascina solo una cartella, non un file +Please drag folders only +Trascina solo una cartella +Select user-defined structure? +Selezionare la struttura definita dall'utente? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Assicurati che la stringa definita dall'utente è corretta\nSe non è corretta, i nomi dei file saranno errati! +Do you really want to use a user-defined structure? +Vuoi veramente selezionare la struttura definita dall'utente? +Too manu URLs, cannot handle so many links!! +Troppi URL, il programma non può servire così tanti collegamenti! +Not enough memory, fatal internal error.. +Troppa poca memoria, grave errore interno... +Unknown operation! +Operazione sconosciuta! +Add this URL?\r\n +Aggiungere questo URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Attenzione: il processo principale non risponde, non è possibile aggiungere URL. +Type/MIME associations +Corrispondenze tipo/MIME +File types: +Tipi di file +MIME identity: +Identità MIME +Select or modify your file type(s) here +Seleziona o modifica i tuoi tipi di file qui +Select or modify your MIME type(s) here +Seleziona o modifica i tuoi tipi MIME qui +Go up +Vai su +Go down +Vai giù +File download information +Informazioni sullo scaricamento dei file +Freeze Window +Congela la finestra +More information: +Più informazioni: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Benvenuti nel WinHTTrack Website Copier\n\nClicca sul pulsante NEXT per iniziare o continuare un progetto +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Tipi di file con l'estensione:\nNomi di file contenenti:\nQuesto nome di file:\nNomi di cartella contenenti:\nQuesto nome cartella:\nCollegamenti in questo dominio:\nCollegamenti nei domini contenenti:\nCollegamenti da questo host:\nCollegamenti contenenti:\nQuesto collegamento:\nTUTTI I COLLEGAMENTI +Show all\nHide debug\nHide infos\nHide debug and infos +Mostra tutto\nNascondi il debug\nNascondi le informazioni\nNascondi il debug e le informazioni +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Struttura del sito (default)\nHtml nel web, immagini/altri file nel web/immagini/\nHtml nel web/html, immagini/altro nel web/immagini\nHtml nel web/, immagini/altro nel web/\nHtml nel web/, immagini/altro nel web/xxx, dove xxx è l'estensione del file\nHtml nel web/html, immagini/altro nel web/xxx\nStruttura del sito, senza www.dominio.xxx/\nHtml nel nome_del_sito/,immagini/altri file nel nome_del_sito/immagini/\nHtml nel nome_del_sito/html,immagini/altro nel nome_del file/immagini\nHtml nel nome_del_sito/,immagini/altro nel nome_del_sito/\nHtml nel nome_del_sito/,immagini/altro nel nome_del_sito/xxx\nHtml nel nome_del_sito/html,immagini/altro nel nome_del_sito/xxx\nTutti i file nel web/,con nomi casuali\nTutti i file nel nome_del_sito/,con nomi casuali\nStruttura definita dall'utente.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Soltanto scanning\nSalva file html\nSalva file non-html\nSalva tutti i file (default)\nSalva prima i file html +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Non uscire dalla directory\nPuoi andare giù nella struttura (default)\nPuoi salire\nPuoi sia scendere che salire +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Rimani nell'indirizzo indicato (default)\nRimani nello stesso dominio\nRimani nello stesso dominio di livello superiore\nVai dovunque sia necessario nel web +Never\nIf unknown (except /)\nIf unknown +Mai\nSe sconosciuto (eccetto /)\nSe sconosciuto +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Non seguire robots.txt\nrobots.txt eccetto wizard\nsegui le regole di robots.txt +normal\nextended\ndebug +normale\navanzato\ndebug +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Scarica il sito(i) web\nScarica il sito(i) (con richieste)\nScarica file separati\nScarica tutti i siti nelle pagine (mirror multiplo)\nVerifica i collegamenti nelle pagine (test dei bookmark)\n* Continua un download interrotto\n* Aggiorna un download esistente +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +URL Relativo / URL Assoluto (default)\nURL Assoluto / URL Assoluto\nURL Assoluto 7 URL Assoluto\nURL Originale / URL Originale +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Japanese.txt b/lang/Japanese.txt new file mode 100755 index 0000000..c4e13e9 --- /dev/null +++ b/lang/Japanese.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Japanese +LANGUAGE_FILE +Japanese +LANGUAGE_ISO +jp +LANGUAGE_AUTHOR +TAPKAL\r\n +LANGUAGE_CHARSET +shift-jis +OK +OK +Cancel +ƒLƒƒƒ“ƒZƒ‹ +Exit +I—¹ +Close +•‚¶‚é +Cancel changes +•ÏX‚ðƒLƒƒƒ“ƒZƒ‹ +Click to confirm +ƒNƒŠƒbƒN‚µ‚ÄŠm”F +Click to get help! +ƒNƒŠƒbƒN‚µ‚ăwƒ‹ƒv! +Click to return to previous screen +ƒNƒŠƒbƒN‚µ‚Ä‘O‚̉æ–ʂɖ߂é +Click to go to next screen +ƒNƒŠƒbƒN‚µ‚ÄŽŸ‚̉æ–Ê‚Öi‚Þ +Hide password +ƒpƒXƒ[ƒh‚ð‰B‚· +Save project +ƒvƒƒWƒFƒNƒg‚ð•Û‘¶ +Close current project? +Œ»Ý‚̃vƒƒWƒFƒNƒg‚ð•Û‘¶‚µ‚Ü‚·‚©? +Delete this project? +‚±‚̃vƒƒWƒFƒNƒg‚ð휂µ‚Ü‚·‚©? +Delete empty project %s? +‹ó”’‚̃vƒƒWƒFƒNƒg%s ‚ð휂µ‚Ü‚·‚©? +Action not yet implemented +‹@”\‚͂܂½ŽÀ‘•‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ +Error deleting this project +‚±‚̃vƒƒWƒFƒNƒg‚Ì휂Ɏ¸”s‚µ‚Ü‚µ‚½ +Select a rule for the filter +ƒtƒBƒ‹ƒ^‚̃‹[ƒ‹‚ð‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢ +Enter keywords for the filter +ƒtƒBƒ‹ƒ^‚ւ̃L[ƒ[ƒh‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ +Cancel +ƒLƒƒƒ“ƒZƒ‹ +Add this rule +‚±‚̃‹[ƒ‹‚̒ljÁ +Please enter one or several keyword(s) for the rule +‚±‚̃‹[ƒ‹‚̂ЂƂÂA‚Ü‚½‚Í‚¢‚­‚‚©‚̃L[ƒ[ƒh‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ +Add Scan Rule +ƒXƒLƒƒƒ“ƒ‹[ƒ‹‚̒ljÁ +Criterion +ƒtƒBƒ‹ƒ^‚̃‹[ƒ‹ +String +•¶Žš—ñ +Add +’ljÁ +Scan Rules +ƒXƒLƒƒƒ“ƒ‹[ƒ‹ +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +URL‚ðŠÜ‚ß‚éA‚Ü‚½‚ÍœŠO‚·‚邽‚߂ɃƒCƒ‹ƒhƒJ[ƒh‚ðŽg—p‚µ‚Ü‚·B\n\n‚¢‚­‚‚©‚̃XƒLƒƒƒ“•¶Žš—ñ‚𓯂¶s‚É’u‚­‚±‚Æ‚ª‚Å‚«‚Ü‚·B\nƒXƒy[ƒXi‹ó”’j‚𕪊„‚Ì‚½‚߂Ɏg—p‚µ‚Ä‚­‚¾‚³‚¢B\n—á: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +ƒŠƒ“ƒN‚ÌœŠO +Include link(s) +ƒŠƒ“ƒN‚ðŠÜ‚ß‚é +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tipp: ‘S‚Ä‚ÌGIFƒtƒ@ƒCƒ‹‚ðŠÜ‚߂邽‚߂ɂÍA+www.someweb.com/*.gif‚̂悤‚É‘‚«‚Ü‚·B \n(+*.gif / -*.gif ‚Å‘S‚ẴTƒCƒg‚Ì‘S‚Ä‚ÌGIF‚ð ŠÜ‚Ý/”rœ‚µ ‚Ü‚·B) +Save prefs +Ý’è‚̕ۑ¶ +Matching links will be excluded: +ƒ}ƒbƒ`‚µ‚½ƒŠƒ“ƒN‚Í”rœ‚³‚ê‚é: +Matching links will be included: +ƒ}ƒbƒ`‚µ‚½ƒŠƒ“ƒN‚͊܂܂ê‚é: +Example: +—á: +gif\r\nWill match all GIF files +gif\r\n‘S‚Ä‚ÌGIFƒtƒ@ƒCƒ‹‚Ƀ}ƒbƒ` +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\n‘S‚Ä‚Ì'blue'‚ðŠÜ‚Þƒtƒ@ƒCƒ‹i'bluesky-small.jpeg'‚̂悤‚Èj‚Ƀ}ƒbƒ` +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\n ‚Í 'bigfile.mov' ‚Ƀ}ƒbƒ`‚µ‚Ü‚·‚ªA 'bigfile2.mov' ‚ɂ̓}ƒbƒ`‚µ‚Ü‚¹‚ñB +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\n ‚Í•”•ª•¶Žš—ñ 'cgi' ‚ðŽ‚Â /cgi-bin/somecgi.cgi ‚̂悤‚ȃtƒHƒ‹ƒ_‚Ƀ}ƒbƒ`‚·‚郊ƒ“ƒN‚ðŒ©‚Â‚¯‚Ü‚·B +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nFindet Links zu Ordnern namens 'cgi-bin'‚Æ‚¢‚¤Š®‘S‚È•¶Žš—ñ‚ð‚Ƀ}ƒbƒ`‚·‚éƒtƒHƒ‹ƒ_–¼‚ð‚à‚ÂƒŠƒ“ƒN‚ðŒ©‚Â‚¯‚Ü‚·(‚µ‚©‚µA'cgi-bin-2'‚̂悤‚È‚à‚̂͜‚­)B +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nwww.someweb.com‚âprivate.someweb.com‚Æ‚¢‚Á‚½•”•ª•¶Žš—ñ‚Ƀ}ƒbƒ`‚·‚郊ƒ“ƒN‚ðŒ©‚Â‚¯‚Ü‚·B +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nwww.someweb.com‚âwww.someweb.edu, private.someweb.otherweb.com‚Ȃǂ̂悤‚È•”•ª•¶Žš—ñ‚Ƀ}ƒbƒ`‚·‚éƒtƒHƒ‹ƒ_‚Ö‚ÌƒŠƒ“ƒN‚ðŒ©‚Â‚¯‚Ü‚·B +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nwww.someweb.com/...‚̂悤‚ÈŠ®‘S‚È•¶Žš—ñ‚Ƀ}ƒbƒ`‚·‚郊ƒ“ƒN‚ðŒ©‚Â‚¯‚Ü‚·(‚µ‚©‚µAprivate.someweb.com/...‚̂悤‚È‚à‚̂͜‚­) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nFindet Links wie www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\n 'www.test.com/test/someweb.html'‚Æ‚¢‚¤ƒtƒ@ƒCƒ‹‚Ì‚Ý‚ðŒ©‚Â‚¯‚Ü‚·B Š®‘S‚ȃpƒX (URL‚ƃTƒCƒg“àƒpƒX)‚Ì—¼•û‚ð“ü—Í‚µ‚È‚¯‚ê‚΂Ȃç‚È‚¢‚±‚ƂɒˆÓ‚µ‚Ä‚­‚¾‚³‚¢B +All links will match +‘S‚Ä‚ÌƒŠƒ“ƒN‚Ƀ}ƒbƒ` +Add exclusion filter +”rœƒtƒBƒ‹ƒ^‚ð’ljÁ +Add inclusion filter +ŠÜ‚߂邽‚߂̃tƒBƒ‹ƒ^‚ð’ljÁ +Existing filters +Šù‘¶‚̃tƒBƒ‹ƒ^ +Cancel changes +•ÏX‚̃Lƒƒƒ“ƒZƒ‹ +Save current preferences as default values +Œ»Ý‚ÌÝ’è‚ð‹K’è’l‚Æ‚µ‚ĕۑ¶ +Click to confirm +ƒNƒŠƒbƒN‚µ‚ÄŠm”F +No log files in %s! +%s ‚ɂ̓ƒOƒtƒ@ƒCƒ‹‚ª‚ ‚è‚Ü‚¹‚ñ! +No 'index.html' file in %s! +%s ‚É‚Íindex.html‚ª‚ ‚è‚Ü‚¹‚ñ! +Click to quit WinHTTrack Website Copier +WinHTTrack Website Copier ‚ðI‚í‚é‚ɂ͂±‚±‚ðƒNƒŠƒbƒN‚µ‚Ä‚­‚¾‚³‚¢ +View log files +ƒƒOƒtƒ@ƒCƒ‹‚ðŒ©‚é +Browse HTML start page +HTML‚̃Xƒ^[ƒgƒy[ƒW‚ðƒuƒ‰ƒEƒY +End of mirror +ƒRƒs[iƒ~ƒ‰[j‚ÌI—¹ +View log files +ƒƒOƒtƒ@ƒCƒ‹‚ðŒ©‚é +Browse Mirrored Website +ƒ~ƒ‰[‚³‚ꂽƒTƒCƒg‚̃uƒ‰ƒEƒY +New project... +V‹KƒvƒƒWƒFƒNƒg... +View error and warning reports +ƒGƒ‰[‚ÆŒx‚̃ƒO‚ðŒ©‚é +View report +ƒƒO‚ðŒ©‚é +Close the log file window +ƒƒOƒtƒ@ƒCƒ‹‚ð•‚¶‚é +Info type: +î•ñ‚ÌŽí—Þ: +Errors +ƒGƒ‰[ +Infos +î•ñ +Find +ŒŸõ +Find a word +’PŒê‚ÌŒŸõ +Info log file +ƒƒOƒtƒ@ƒCƒ‹î•ñ +Warning/Errors log file +Œx/ƒGƒ‰[ƒƒOƒtƒ@ƒCƒ‹ +Unable to initialize the OLE system +OLE ‚ð‰Šú‰»‚Å‚«‚Ü‚¹‚ñ +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack ‚ÍA“Á’肳‚ꂽƒtƒHƒ‹ƒ_‚ɂ͒†’f‚³‚ꂽƒ_ƒEƒ“ƒ[ƒhƒLƒƒƒbƒVƒ…‚ðŒ©‚Â‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ‚Å‚µ‚½! +Could not connect to provider +ƒvƒƒoƒCƒ_‚ÆÚ‘±‚Å‚«‚Ü‚¹‚ñ +receive +ŽóM +request +ƒŠƒNƒGƒXƒg +connect +Ú‘± +search +ƒT[ƒ` +ready +Š®—¹ +error +ƒGƒ‰[ +Receiving files.. +ƒtƒ@ƒCƒ‹‚ðŽó‚¯Žæ‚Á‚Ä‚¢‚Ü‚·... +Parsing HTML file.. +HTML ƒtƒ@ƒCƒ‹‚̉ðÍ’†... +Purging files.. +ƒtƒ@ƒCƒ‹‚̉ðÍ’†... +Loading cache in progress.. + +Parsing HTML file (testing links).. +HTML ƒtƒ@ƒCƒ‹‚̉ðÍ’† (ƒŠƒ“ƒN‚̃eƒXƒg)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +’†’f - ƒƒjƒ…[‚Ì[ƒ~ƒ‰[]/[“]‘—‚ð’†’f]‚ðƒNƒŠƒbƒN‚·‚é‚ÆÄŠJ‚µ‚Ü‚· +Finishing pending transfers - Select [Cancel] to stop now! +’†’f‚³‚ꂽ“]‘—‚ÌI—¹ - [ƒLƒƒƒ“ƒZƒ‹]‚Å‚·‚®‚É’âŽ~! +scanning +ƒXƒLƒƒƒ“’† +Waiting for scheduled time.. +ݒ肳‚ꂽŠJŽnŽžŠÔ‚ð‘Ò‚Á‚Ä‚¢‚Ü‚·.. +Connecting to provider +ƒvƒƒoƒCƒ_‚ÖÚ‘±’† +[%d seconds] to go before start of operation +ŠJŽn‚Ü‚Å[%d •b] +Site mirroring in progress [%s, %s bytes] +ƒTƒCƒg‚̃Rƒs[iƒ~ƒ‰[jis’† [%s, %s bytes] +Site mirroring finished! +ƒTƒCƒg‚̃Rƒs[iƒ~ƒ‰[jŠ®—¹ +A problem occured during the mirroring operation\n +ƒRƒs[iƒ~ƒ‰[j‚ÌÛA–â‘肪”­¶‚µ‚Ü‚µ‚½\n +\nDuring:\n +\r\n\n”­¶‚µ‚½‰ÓŠ:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\r\n\n•K—v‚È‚ç‚΃ƒOƒtƒ@ƒCƒ‹‚ð‚²——‚ɂȂÁ‚Ä‚­‚¾‚³‚¢B\n\n'I—¹' ‚ðƒNƒŠƒbƒN‚·‚邯 WinHTTrack Website Copier ‚ðI—¹‚µ‚Ü‚·B\n\n WinHTTrack ‚ð‚²—˜—p‚¢‚½‚¾‚«‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚µ‚½! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +ƒRƒs[iƒ~ƒ‰[j‚ÍŠ®—¹‚µ‚Ü‚µ‚½B\nuI—¹v‚Å WinHTTrack‚ðI—¹‚µ‚Ü‚·B\n•K—v‚È‚ç‘S‚Ä‚ªOK‚Å‚ ‚邱‚Æ‚ðŠm”F‚·‚邽‚߂ɃƒOƒtƒ@ƒCƒ‹‚ð‚²——‚ɂȂÁ‚Ä‚­‚¾‚³‚¢B\n WinHTTrack ‚ð‚²—˜—p‚¢‚½‚¾‚«‚ ‚肪‚Æ‚¤‚²‚´‚¢‚Ü‚µ‚½! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * ƒRƒs[iƒ~ƒ‰[j‚ª’†’f‚³‚ê‚Ü‚µ‚½! * *\r\nŒ»Ý‚̈ꎞ“IƒLƒƒƒbƒVƒ…‚Í‚ ‚ç‚ä‚éXVì‹Æ‚É•K—v‚ÅA‚Ü‚½Œ»Ý‚Ì’†’f‚³‚ꂽƒZƒbƒVƒ‡ƒ“‚É‚¨‚¯‚éƒf[ƒ^‚µ‚©Ž‚Á‚Ä‚¢‚Ü‚¹‚ñB\r\nˆÈ‘O‚̃LƒƒƒbƒVƒ…‚Í‚à‚Á‚ÆŠ®‘S‚Èî•ñ‚ðŽ‚Á‚Ä‚¢‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB; ‚à‚µA‚»‚Ìî•ñ‚ðŽ¸‚¢‚½‚­‚È‚¢ê‡‚ÍA‚»‚ê‚𕜌³iƒŠƒXƒgƒAj‚µ‚ÄŒ»Ý‚̃LƒƒƒbƒVƒ…‚ð휂·‚é•K—v‚ª‚ ‚è‚Ü‚·B\r\n[ƒƒ‚: ‚±‚ê‚Í hts-cache/new.* ‚Å‚ ‚ç‚킳‚ê‚éƒtƒ@ƒCƒ‹‚ð휂·‚邱‚ƂŊȒP‚És‚¤‚±‚Æ‚ª‚Å‚«‚Ü‚·]\r\n\r\nˆÈ‘O‚̃LƒƒƒbƒVƒ…‚ª‚æ‚葽‚¢î•ñ‚ðŽ‚Á‚Ä‚¢‚½‚Æl‚¦‚Ü‚·‚©?‚»‚µ‚Ä‚»‚ê‚𕜌³‚µ‚½‚¢‚ÆŽv‚¢‚Ü‚·‚©? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ƒRƒs[iƒ~ƒ‰[j‚̃Gƒ‰[! * *\r\nHTTrack‚ÍŒ»Ý‚̃Rƒs[iƒ~ƒ‰[j‚ª‹ó‚Å‚ ‚邯д’m‚µ‚Ü‚µ‚½B‚à‚µ‚±‚ꂪXV‚Å‚ ‚é‚È‚çAˆÈ‘O‚̃Rƒs[iƒ~ƒ‰[j‚ª•œŒ³‚³‚ê‚Ü‚·B\r\nŒ´ˆö:ʼn‚̃y[ƒW‚ªŒ©‚‚©‚ç‚È‚¢A‚Ü‚½‚ÍÚ‘±‚É–â‘肪”­¶‚µ‚Ü‚µ‚½B\r\n=> WebƒTƒCƒg‚ª‚Ü‚¾‘¶Ý‚·‚邱‚ÆA‚Ü‚½‚̓vƒƒLƒV‚ÌÝ’è‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B<= +\n\nTip: Click [View log file] to see warning or error messages +\r\n\n\nTipp: [ƒƒO‚ðŒ©‚é] ‚ðƒNƒŠƒbƒN‚·‚邯Œx‚ƃGƒ‰[‚ðŒ©‚é‚±‚Æ‚ª‚Å‚«‚Ü‚·B +Error deleting a hts-cache/new.* file, please do it manually +hts-cache/new.* ‚Ì’†‚̃tƒ@ƒCƒ‹íœ‚ÉŽ¸”s‚µ‚Ü‚µ‚½Bƒ}ƒjƒ…ƒAƒ‹‚Å‚Ìíœ‚ð‚¨Šè‚¢‚µ‚Ü‚·B +Do you really want to quit WinHTTrack Website Copier? +WinHTTrack Website Copier ‚ð–{“–‚ÉI—¹‚µ‚Ü‚·‚©? +- Mirroring Mode -\n\nEnter address(es) in URL box +- ƒRƒs[iƒ~ƒ‰[jƒ‚[ƒh -\n\nƒAƒhƒŒƒX ‚ð URL“ü—Í—“‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- ƒCƒ“ƒ^ƒ‰ƒNƒeƒBƒu‚ȃEƒBƒU[ƒhƒ‚[ƒh -\n\nƒAƒhƒŒƒX‚ð URL“ü—Í—“‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ +- File Download Mode -\n\nEnter file address(es) in URL box +- ƒtƒ@ƒCƒ‹ƒ_ƒEƒ“ƒ[ƒhƒ‚[ƒh -\n\nDatei-Adresse(n) in das URL-Feld eingeben +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- ƒŠƒ“ƒNƒeƒXƒgƒ‚[ƒh -\n\nƒŠƒ“ƒN‚Æ‹¤‚ÉWebƒAƒhƒŒƒX‚ðURL‹L“ü—“‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- XVƒ‚[ƒh -\n\n URL “ü—Í—“‚̃AƒhƒŒƒX‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B•K—v‚È‚ç‚΃pƒ‰ƒ[ƒ^‚ðƒ`ƒFƒbƒN‚µ‚ÄuŽŸ‚Övƒ{ƒ^ƒ“‚ðƒNƒŠƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- ÄŠJiƒŒƒWƒ…[ƒ€jƒ‚[ƒh (’†’f‚³‚ꂽ‘€ì‚ÌÄŠJ) -\n\n URL“ü—Í—“‚̃AƒhƒŒƒX‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B•K—v‚È‚çƒpƒ‰ƒ[ƒ^‚ðƒ`ƒFƒbƒN‚µ‚ÄuŽŸ‚Övƒ{ƒ^ƒ“‚ðƒNƒŠƒbƒN‚µ‚Ä‚­‚¾‚³‚¢B +Log files Path +ƒƒOƒtƒ@ƒCƒ‹‚̃pƒX +Path +ƒtƒ@ƒCƒ‹‚̃pƒX +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +-ƒŠƒ“ƒNƒŠƒXƒgƒ‚[ƒh -\n\nURL “ü—Í—“‚ɃRƒs[iƒ~ƒ‰[j‚·‚郊ƒ“ƒN‚ðŠÜ‚ÞƒTƒCƒg‚̃AƒhƒŒƒX‚ð“ü—Í‚µ‚Ä‚­‚¾‚³‚¢B +New project / Import? +V‹KƒvƒƒWƒFƒNƒg / “ǂݞ‚Ý? +Choose criterion +Šî€‚Ì‘I‘ð +Maximum link scanning depth +ƒXƒLƒƒƒ“‚·‚郊ƒ“ƒN‚ÌŠK‘w +Enter address(es) here +ƒAƒhƒŒƒX‚ð‚±‚±‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ +Define additional filtering rules +’ljÁ‚·‚éƒtƒBƒ‹ƒ^ƒ‹[ƒ‹‚Ì’è‹` +Proxy Name (if needed) +ƒvƒƒLƒV–¼ (•K—v‚È‚ç‚Î) +Proxy Port +ƒvƒƒLƒV‚̃|[ƒg +Define proxy settings +ƒvƒƒLƒV‚ÌÝ’è +Use standard HTTP proxy as FTP proxy +•W€‚ÌHTTPƒvƒƒLƒV‚ðFTPƒvƒƒLƒV‚Æ‚µ‚ÄŽg‚¤ +Path +ƒpƒX +Select Path +‘I‘ð‚³‚ê‚½ƒpƒX +Path +ƒpƒX +Select Path +‘I‘ð‚³‚ê‚½ƒpƒX +Quit WinHTTrack Website Copier +WinHTTrack‚ðI—¹ +About WinHTTrack +WinHTTrack‚ɂ‚¢‚Ä +Save current preferences as default values +Œ»Ý‚̃IƒvƒVƒ‡ƒ“‚ðŠù’è‚Æ‚µ‚ĕۑ¶ +Click to continue +ƒNƒŠƒbƒN‚µ‚Ä‘±‚¯‚Ü‚· +Click to define options +ƒNƒŠƒbƒN‚µ‚ăIƒvƒVƒ‡ƒ“‚ðݒ肵‚Ü‚· +Click to add a URL +ƒNƒŠƒbƒN‚µ‚Ä URL ‚ð’ljÁ‚µ‚Ü‚· +Load URL(s) from text file +ƒeƒLƒXƒgƒtƒ@ƒCƒ‹‚©‚çURL‚ð“ǂݞ‚݂܂· +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack Ý’è (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +ƒAƒhƒŒƒXƒŠƒXƒg‚̃eƒLƒXƒgƒtƒ@ƒCƒ‹ (*.txt)|*.txt|| +File not found! +ƒtƒ@ƒCƒ‹‚ªŒ©‚‚©‚è‚Ü‚¹‚ñ! +Do you really want to change the project name/path? +–{“–‚ɃvƒƒWƒFƒNƒg–¼/ƒpƒX‚ð•ÏX‚µ‚Ü‚·‚©? +Load user-default options? +Šù’è‚̃IƒvƒVƒ‡ƒ“‚ð“ǂݞ‚݂܂·‚©? +Save user-default options? +ƒ†[ƒU’è‹`‚̃IƒvƒVƒ‡ƒ“‚ð•Û‘¶‚µ‚Ü‚·‚©? +Reset all default options? +‘S‚Ă̊ù’è‚̃IƒvƒVƒ‡ƒ“‚ðƒŠƒZƒbƒg‚µ‚Ü‚·‚©? +Welcome to WinHTTrack! +WinHTTrack‚ւ悤‚±‚»! +Action: +ƒAƒNƒVƒ‡ƒ“: +Max Depth +Å‘åŠK‘w: +Maximum external depth: +Å‘åŠO•”ŠK‘w: +Filters (refuse/accept links) : +ƒtƒBƒ‹ƒ^ƒ‹[ƒ‹ (ŠÜ‚Þ/”rœ‚·‚é ƒŠƒ“ƒN) : +Paths +ƒpƒX +Save prefs +•Û‘¶Ý’è +Define.. +’è‹`... +Set options.. +ƒIƒvƒVƒ‡ƒ“Ý’è... +Preferences and mirror options: +ƒIƒvƒVƒ‡ƒ“‚ƃRƒs[iƒ~ƒ‰[jƒIƒvƒVƒ‡ƒ“: +Project name +ƒvƒƒWƒFƒNƒg–¼ +Add a URL... +URL‚̒ljÁ... +Web Addresses: (URL) +WebƒAƒhƒŒƒX (URL): +Stop WinHTTrack? +WinHTTrack‚ð’âŽ~‚µ‚Ü‚·‚©? +No log files in %s! +ƒƒOƒtƒ@ƒCƒ‹‚ª %s ‚ɂ͂ ‚è‚Ü‚¹‚ñ! +Pause Download? +ƒ_ƒEƒ“ƒ[ƒh‚ð’†’f‚µ‚Ü‚·‚©? +Stop the mirroring operation +ƒRƒs[iƒ~ƒ‰[j‚ð’âŽ~ +Minimize to System Tray +ƒVƒXƒeƒ€ƒgƒŒƒC‚ÉŬ‰» +Click to skip a link or stop parsing +ƒNƒŠƒbƒN‚µ‚ÄƒŠƒ“ƒN‚ð’âŽ~A‚Ü‚½‚͉ðÍ‚ð’âŽ~ +Click to skip a link +ƒNƒŠƒbƒN‚µ‚ÄƒŠƒ“ƒN‚ðƒXƒLƒbƒv +Bytes saved +•Û‘¶‚µ‚½ƒoƒCƒg”: +Links scanned +ƒXƒLƒƒƒ“‚³‚ꂽƒŠƒ“ƒN +Time: +Œo‰ßŽžŠÔ: +Connections: +Ú‘±: +Running: +“®ì’†: +Hide +Ŭ‰» +Transfer rate +Ú‘±ƒŒ[ƒg: +SKIP +ƒXƒLƒbƒv +Information +î•ñ +Files written: +ƒtƒ@ƒCƒ‹ì¬: +Files updated: +ƒtƒ@ƒCƒ‹XV: +Errors: +ƒGƒ‰[: +In progress: +is’†: +Follow external links +ŠO•”ƒŠƒ“ƒN‚Ì’ÇÕ +Test all links in pages +ƒy[ƒW‚Ì‘S‚Ä‚ÌƒŠƒ“ƒN‚̃eƒXƒg +Try to ferret out all links +‘S‚Ä‚ÌƒŠƒ“ƒN‚ð’T‚µo‚»‚¤‚ÆŽŽ‚Ý‚é +Download HTML files first (faster) +HTMLƒtƒ@ƒCƒ‹‚ðʼn‚Ƀ_ƒEƒ“ƒ[ƒh‚·‚é (‚æ‚葬‚¢) +Choose local site structure +ƒ[ƒJƒ‹‚̕ۑ¶ƒtƒHƒ‹ƒ_‚Ì‘I‘ð +Set user-defined structure on disk +ƒfƒBƒXƒNã‚Ƀ†[ƒU[’è‹`‚̃tƒHƒ‹ƒ_‚ðÝ’è‚·‚é +Use a cache for updates and retries +XViƒAƒbƒvƒf[ƒgj‚ÆƒŠƒgƒ‰ƒC‚ɃLƒƒƒbƒVƒ…‚ðŽg—p‚·‚é +Do not update zero size or user-erased files +0ƒTƒCƒY‚Ü‚½‚̓†[ƒU‚ªÁ‹Ž‚µ‚½ƒtƒ@ƒCƒ‹‚ÌXV‚ðs‚í‚È‚¢ +Create a Start Page +ƒXƒ^[ƒgƒy[ƒW‚Ìì¬ +Create a word database of all html pages +‘S‚Ä‚ÌHTMLƒy[ƒW‚É’PŒêƒf[ƒ^ƒx[ƒX‚ð쬂·‚é +Create error logging and report files +ƒGƒ‰[ƒƒO‚ƃŒƒ|[ƒgƒtƒ@ƒCƒ‹‚ð쬂·‚é +Generate DOS 8-3 filenames ONLY +DOSƒtƒ@ƒCƒ‹ƒl[ƒ€(8+3)‚Ì‚Ýì¬ +Generate ISO9660 filenames ONLY for CDROM medias + +Do not create HTML error pages +HTMLƒGƒ‰[ƒy[ƒW‚ð쬂µ‚È‚¢ +Select file types to be saved to disk +•Û‘¶‚·‚éƒtƒ@ƒCƒ‹‚ÌŽí—Þ‚Ì‘I‘ð +Select parsing direction +‰ð͂̕ûŒü‚Ì‘I‘ð +Select global parsing direction +ƒOƒ[ƒoƒ‹‚ȉð͂̕ûŒü‚Ì‘I‘ð +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +“à•”ƒŠƒ“ƒNiƒ_ƒEƒ“ƒ[ƒh‚³‚ꂽ‚à‚Ìj‚ÆŠO•”ƒŠƒ“ƒNiƒ_ƒEƒ“ƒ[ƒh‚³‚ê‚Ä‚¢‚È‚¢‚à‚Ìj‚ւ̃‹[ƒ‹‚ÌÄ‘‚«ž‚Ý‚ðÝ’è‚·‚éB +Max simultaneous connections +Å‘å“¯ŽžÚ‘±” +File timeout +ƒtƒ@ƒCƒ‹ƒ^ƒCƒ€ƒAƒEƒg +Cancel all links from host if timeout occurs +ƒ^ƒCƒ€ƒAƒEƒg‚µ‚½ê‡AƒzƒXƒg‚©‚ç‚Ì‘S‚Ä‚ÌƒŠƒ“ƒN‚ðƒLƒƒƒ“ƒZƒ‹ +Minimum admissible transfer rate +Ŭ‹–—e“]‘—ƒŒ[ƒg +Cancel all links from host if too slow +‚ ‚Ü‚è‚É‚à’x‚¢ê‡AƒzƒXƒg‚©‚ç‚Ì‘S‚Ä‚ÌƒŠƒ“ƒN‚ðƒLƒƒƒ“ƒZƒ‹ +Maximum number of retries on non-fatal errors +’v–½“IƒGƒ‰[‚łȂ¢ê‡‚ÌÅ‘åÄŽŽs” +Maximum size for any single HTML file +’Pˆê‚ÌHTMLƒtƒ@ƒCƒ‹‚ÌÅ‘åƒTƒCƒY +Maximum size for any single non-HTML file +’Pˆê‚Ì”ñHTMLƒtƒ@ƒCƒ‹‚ÌÅ‘åƒTƒCƒY +Maximum amount of bytes to retrieve from the Web +Web‚©‚ç‚ÌÅ‘åŽæ“¾ƒoƒCƒg” +Make a pause after downloading this amount of bytes +ƒ_ƒEƒ“ƒ[ƒh‚µ‚Ä‚±‚̃oƒCƒg”‚ɂȂÁ‚½‚Ȃ璆’f‚·‚é +Maximum duration time for the mirroring operation +ƒRƒs[iƒ~ƒ‰[j‚ÌÅ‘åŒo‰ßŽžŠÔ +Maximum transfer rate +Å‘å“]‘—ƒŒ[ƒg +Maximum connections/seconds (avoid server overload) +Å‘å‚ÌÚ‘±”/•b (ƒT[ƒo‚̉ߕ‰‰×‚̉ñ”ð) +Maximum number of links that can be tested (not saved!) +ƒeƒXƒg‚³‚ê‚éő僊ƒ“ƒN”i•Û‘¶‚³‚ê‚Ü‚¹‚ñ!) +Browser identity +ƒuƒ‰ƒEƒUID +Comment to be placed in each HTML file +‚Ç‚ÌHTMLƒtƒ@ƒCƒ‹‚É‚à‘}“ü‚³‚ê‚éƒRƒƒ“ƒg +Back to starting page +ƒXƒ^[ƒgƒy[ƒW‚É–ß‚é +Save current preferences as default values +Œ»Ý‚ÌÝ’è‚ðŠù’è‚Æ‚µ‚ĕۑ¶ +Click to continue +ƒNƒŠƒbƒN‚µ‚Ä‘±‚¯‚Ü‚· +Click to cancel changes +ƒNƒŠƒbƒN‚µ‚Ä•ÏX‚ðƒLƒƒƒ“ƒZƒ‹ +Follow local robots rules on sites +ƒTƒCƒg‚̃ƒ{ƒbƒg‹K‘¥‚É]‚¤ +Links to non-localised external pages will produce error pages +ƒ[ƒJƒ‹ƒRƒ“ƒsƒ…[ƒ^‚ɕۑ¶‚³‚ê‚Ä‚¢‚È‚¢ŠO•”ƒy[ƒW‚Ö‚ÌƒŠƒ“ƒN‚̓Gƒ‰[ƒy[ƒW‚Æ‚·‚é +Do not erase obsolete files after update +XVŒãŒÃ‚­‚È‚Á‚½ƒtƒ@ƒCƒ‹‚ðÁ‹Ž‚µ‚È‚¢ +Accept cookies? +ƒNƒbƒL[‚ð‹–‰Â‚µ‚Ü‚·‚©? +Check document type when unknown? +•s–¾‚̃tƒ@ƒCƒ‹ƒ^ƒCƒv‚ðƒ`ƒFƒbƒN‚µ‚Ü‚·‚©? +Parse java applets to retrieve included files that must be downloaded? +ƒ_ƒEƒ“ƒ[ƒh‚·‚ׂ«ƒtƒ@ƒCƒ‹‚Ì‚½‚ß‚ÉJavaƒAƒvƒŒƒbƒg‚ð‰ðÍ‚µ‚Ü‚·‚©? +Store all files in cache instead of HTML only +HTMLƒtƒ@ƒCƒ‹‚¾‚¯‚ł͂Ȃ­A‘S‚ẴLƒƒƒbƒVƒ…“à‚̃tƒ@ƒCƒ‹‚ð•Û‘¶‚·‚é +Log file type (if generated) +ƒtƒ@ƒCƒ‹‚ÌŽí—ނ̃ƒO (V‹K쬂³‚ꂽê‡) +Maximum mirroring depth from root address +ƒ‹[ƒgƒAƒhƒŒƒX‚©‚ç‚ÌÅ‘å‚̃Rƒs[iƒ~ƒ‰[jŠK‘w +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +ŠO•”/‹ÖŽ~‚³‚ꂽƒAƒhƒŒƒX‚Ö‚ÌÅ‘åƒRƒs[iƒ~ƒ‰[jŠK‘w (Šù’è‚Í0, ƒRƒs[‚ð‚±‚±‚ë‚݂Ȃ¢) +Create a debugging file +ƒfƒoƒbƒOƒtƒ@ƒCƒ‹‚Ìì¬n +Use non-standard requests to get round some server bugs +‚¢‚­‚‚©‚̃T[ƒo‚̃oƒO‚ð‰ñ”ð‚·‚é‚½‚߂ɕW€‚łȂ¢ƒŠƒNƒGƒXƒg‚ðŽg—p‚·‚é +Use old HTTP/1.0 requests (limits engine power!) +ˆÈ‘O‚Ì HTTP/1.0 ƒŠƒNƒGƒXƒg‚ðŽg—p‚·‚é (ì‹ÆƒXƒs[ƒh‚̧ŒÀ!) +Attempt to limit retransfers through several tricks (file size test..) +‚¢‚­‚‚©‚̃gƒŠƒbƒNiƒtƒ@ƒCƒ‹ƒTƒCƒYƒeƒXƒg‚È‚Çj‚É‚æ‚éÄ“]‘—§ŒÀ‚ðs‚Á‚Ă݂é +Write external links without login/password +ƒƒOƒCƒ“–¼/ƒpƒXƒ[ƒh‚È‚µ‚ÉŠO•”ƒŠƒ“ƒN‚ð‘‚«o‚· +Write internal links without query string +“à•”ƒŠƒ“ƒN‚ÍŒŸõ•¶Žš—ñ‚È‚µ‚É‘‚«o‚· +Get non-HTML files related to a link, eg external .ZIP or pictures +”ñHTMLƒtƒ@ƒCƒ‹‚ÅƒŠƒ“ƒN‚ÉŠÖ˜A‚·‚éƒtƒ@ƒCƒ‹A‚·‚Ȃ킿ŠO•”‚ÌZIP‚â‰æ‘œƒtƒ@ƒCƒ‹‚ðŽæ“¾‚·‚é +Test all links (even forbidden ones) +‘S‚Ä‚ÌƒŠƒ“ƒN‚̃eƒXƒg (‹ÖŽ~‚³‚ê‚Ä‚¢‚é‚à‚̂ɂ‚¢‚Ä‚à) +Try to catch all URLs (even in unknown tags/code) +‘S‚Ä‚ÌURL‚ðŽæ“¾‚µ‚悤‚ÆŽŽ‚Ý‚é (•s–¾‚ȃ^ƒO‚ƃXƒNƒŠƒvƒg‚ɂ‚¢‚Ä‚à) +Get HTML files first! +HTMLƒtƒ@ƒCƒ‹‚ðæ‚Ɏ擾‚·‚é! +Structure type (how links are saved) +•Û‘¶ƒtƒHƒ‹ƒ_‚ÌÝ’è (ƒŠƒ“ƒN‚̕ۑ¶•û–@) +Use a cache for updates +XV‚ɃLƒƒƒbƒVƒ…‚ðŽg—p‚·‚é +Do not re-download locally erased files +ƒ[ƒJƒ‹‚Å휂³‚ꂽƒtƒ@ƒCƒ‹‚Íă_ƒEƒ“ƒ[ƒh‚µ‚È‚¢ +Make an index +ƒCƒ“ƒfƒbƒNƒX‚Ìì¬ +Make a word database +’PŒêƒf[ƒ^ƒx[ƒX‚ð쬂·‚é +Log files +ƒƒOƒtƒ@ƒCƒ‹ +DOS names (8+3) +DOS–¼ (8+3) +ISO9660 names (CDROM) + +No error pages +ƒGƒ‰[ƒy[ƒW‚È‚µ +Primary Scan Rule +—D悳‚ê‚éƒXƒLƒƒƒ“ƒ‹[ƒ‹ +Travel mode +’Tõ•û–@ +Global travel mode +ƒOƒ[ƒoƒ‹‚È’T¸•û–@ +These options should be modified only exceptionally +‚±‚ê‚ç‚̃IƒvƒVƒ‡ƒ“‚Í•’Ê•ÏX‚³‚ê‚é‚ׂ«‚ł͂ ‚è‚Ü‚¹‚ñB +Activate Debugging Mode (winhttrack.log) +ƒfƒoƒbƒOƒ‚[ƒh‚ðŽg‚¤ (winhttrack.log) +Rewrite links: internal / external +ƒŠƒ“ƒN‚ðÄ‘‚«ž‚Ý‚·‚é “à•” / ŠO•” +Flow control +Ú‘±ƒRƒ“ƒgƒ[ƒ‹ +Limits +ƒŠƒ~ƒbƒg +Identity +ID +HTML footer +HTMLƒtƒbƒ^ +N# connections +Ú‘±” +Abandon host if error +ƒGƒ‰[‚Ìۂɂ̓zƒXƒg‚ð•úŠü +Minimum transfer rate (B/s) +Ŭ“]‘—ƒŒ[ƒg (B/s) +Abandon host if too slow +‚ ‚Ü‚è‚É‚à’x‚¢ê‡‚ɂ̓zƒXƒg‚ð•úŠü +Configure +ƒRƒ“ƒtƒBƒO +Use proxy for ftp transfers +FTP“]‘—‚ɃvƒƒLƒV‚ðŽg—p‚·‚é +TimeOut(s) +ƒ^ƒCƒ€ƒAƒEƒg +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +ÄŽŽs” +Size limit +ƒTƒCƒY‚̧ŒÀ +Max size of any HTML file (B) +HTMLƒtƒ@ƒCƒ‹‚ÌÅ‘åƒoƒCƒg” +Max size of any non-HTML file +”CˆÓ‚Ì”ñHTMLƒtƒ@ƒCƒ‹‚ÌÅ‘åƒoƒCƒg” +Max site size +Å‘åƒTƒCƒgƒTƒCƒY +Max time +ő厞ŠÔ +Save prefs +Ý’è‚̕ۑ¶ +Max transfer rate +Å‘å“]‘—ƒŒ[ƒg +Follow robots.txt +robots.txt ‚ð’ÇÕ‚·‚é +No external pages +ŠO•”ƒy[ƒW‚È‚µ +Do not purge old files +‚Ó‚é‚¢ƒtƒ@ƒCƒ‹‚ðÁ‹Ž‚µ‚È‚¢ +Accept cookies +ƒNƒbƒL[‚ðŽó‚¯“ü‚ê‚é +Check document type +ƒhƒLƒ…ƒƒ“ƒg‚ÌŽí—Þ‚ðƒ`ƒFƒbƒN‚·‚é +Parse java files +JAVAƒtƒ@ƒCƒ‹‚ð‰ðÍ‚·‚é +Store ALL files in cache +‘S‚Ẵtƒ@ƒCƒ‹‚ðƒLƒƒƒbƒVƒ…‚ɕۑ¶ +Tolerant requests (for servers) +ƒT[ƒo‚Ì‹–—eƒŠƒNƒGƒXƒg” +Update hack (limit re-transfers) +XV‚̃gƒŠƒbƒN (Ä“]‘—§ŒÀ) +Force old HTTP/1.0 requests (no 1.1) +ˆÈ‘O‚Ì HTTP/1.0 ƒŠƒNƒGƒXƒg‚ð‹­—v‚·‚é (1.1‚ł͂Ȃ­) +Max connections / seconds +Å‘åÚ‘±” / •b +Maximum number of links +ƒŠƒ“ƒN‚ÌÅ‘å” +Pause after downloading.. +ƒ_ƒEƒ“ƒ[ƒh‚Ì‚ ‚Ƃɒ†’f‚·‚é... +Hide passwords +ƒpƒXƒ[ƒh‚ð‰B‚· +Hide query strings +ŒŸõ•¶Žš—ñ‚ð‰B‚· +Links +ƒŠƒ“ƒN +Build +ƒrƒ‹ƒh +Experts Only +㋉ŽÒŒü‚¯ +Flow Control +Ú‘±ƒRƒ“ƒgƒ[ƒ‹ +Limits +Ú‘±§ŒÀ +Browser ID +ƒuƒ‰ƒEƒU ID +Scan Rules +ƒXƒLƒƒƒ“ƒ‹[ƒ‹ +Spider +ƒXƒpƒCƒ_[ +Log, Index, Cache +ƒƒOAƒCƒ“ƒfƒbƒNƒXAƒLƒƒƒbƒVƒ… +Proxy +ƒvƒƒLƒV +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +WinHTTrack‚ð–{“–‚ÉI—¹‚µ‚Ü‚·‚©? +Do not connect to a provider (already connected) +ƒvƒƒoƒCƒ_‚ÆÚ‘±‚µ‚È‚¢ (‚·‚Å‚ÉÚ‘±) +Do not use remote access connection +ƒŠƒ‚[ƒgƒAƒNƒZƒX‚ðŽg‚í‚È‚¢ +Schedule the mirroring operation +ƒRƒs[iƒ~ƒ‰[j‚̃XƒPƒWƒ…[ƒ‹Ý’è +Quit WinHTTrack Website Copier +WinHTTrack‚ðI—¹‚µ‚Ü‚· +Back to starting page +ƒXƒ^[ƒgƒy[ƒW‚É–ß‚é +Click to start! +ƒNƒŠƒbƒN‚µ‚ÄŠJŽn‚µ‚Ü‚·! +No saved password for this connection! +‚±‚ÌÚ‘±‚ɂ̓pƒXƒ[ƒh‚ª•Û‘¶‚³‚ê‚Ä‚¢‚Ü‚¹‚ñ! +Can not get remote connection settings +ƒŠƒ‚[ƒgÚ‘±‚ÌÝ’è‚ðŽæ“¾‚Å‚«‚Ü‚¹‚ñ +Select a connection provider +Ú‘±ƒvƒƒoƒCƒ_‚Ì‘I‘ð +Start +ŠJŽn +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +•K—v‚È‚ç‚ÎÚ‘±ƒpƒ‰ƒ[ƒ^‚ð’²®‚µ‚Ä‚­‚¾‚³‚¢A\nuŠ®—¹v‚ð‰Ÿ‚·‚ƃRƒs[iƒ~ƒ‰[j‚ª‚Í‚¶‚Ü‚è‚Ü‚·B +Save settings only, do not launch download now. +Ý’è‚݂̂š‚̓_ƒEƒ“ƒ[ƒh‚ðŠJŽn‚µ‚È‚¢ +On hold +’†’f’† +Transfer scheduled for: (hh/mm/ss) +“]‘—ƒXƒPƒWƒ…[ƒ‹: (hh/mm/ss) +Start +ŠJŽn +Connect to provider (RAS) +ƒvƒƒoƒCƒ_‚Ö‚ÌÚ‘± (RAS) +Connect to this provider +‚±‚̃vƒƒoƒCƒ_‚Ö‚ÌÚ‘± +Disconnect when finished +I—¹‚µ‚½‚çÚ‘±‚ðØ’f‚·‚é +Disconnect modem on completion +Š®—¹‚µ‚½‚烂ƒfƒ€‚Æ‚ÌÚ‘±‚ðØ’f‚·‚é +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(ƒoƒO‚Ü‚½‚Í–â‘è‚ɂ‚¢‚Ä‚í‚ê‚í‚ê‚É’m‚点‚Ä‚­‚¾‚³‚¢)\r\n\r\nDevelopment:\r\nInterface(Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nJapanese translation :TAPKAL(nakataka@mars.dti.ne.jp) +About WinHTTrack Website Copier +WinHTTrack‚ɂ‚¢‚Ä +Please visit our Web page +‚í‚ê‚í‚ê‚̃EƒFƒuƒy[ƒW‚É‚¢‚ç‚Á‚µ‚á‚Á‚Ä‚­‚¾‚³‚¢! +Wizard query +ƒEƒBƒU[ƒh +Your answer: +‚ ‚È‚½‚Ì‚±‚½‚¦ +Link detected.. +ƒŠƒ“ƒN‚ªŒŸ’m‚³‚ê‚Ü‚µ‚½... +Choose a rule +ƒ‹[ƒ‹‚Ì‘I‘ð +Ignore this link +‚±‚ÌƒŠƒ“ƒN‚Ì–³Ž‹ +Ignore directory +ƒfƒBƒŒƒNƒgƒŠ‚Ì–³Ž‹ +Ignore domain +ƒhƒƒCƒ“‚𖳎‹‚·‚é +Catch this page only +‚±‚̃y[ƒW‚̂ݎ擾 +Mirror site +ƒTƒCƒg‚̃Rƒs[iƒ~ƒ‰[j +Mirror domain +ƒhƒƒCƒ“‚̃Rƒs[iƒ~ƒ‰[j +Ignore all +‘S‚Ä–³Ž‹ +Wizard query +ƒEƒBƒU[ƒh +NO +‚¢‚¢‚¦ +File +ƒtƒ@ƒCƒ‹ +Options +ƒIƒvƒVƒ‡ƒ“ +Log +ƒƒO +Window +ƒEƒBƒ“ƒhƒE +Help +ƒwƒ‹ƒv +Pause transfer +“]‘—‚ð’†’f +Exit +I—¹ +Modify options +ƒIƒvƒVƒ‡ƒ“‚ðC³‚·‚é +View log +ƒƒO‚ðŒ©‚é +View error log +ƒGƒ‰[ƒƒO‚ðŒ©‚é +View file transfers +ƒtƒ@ƒCƒ‹“]‘—‚ðŒ©‚é +Hide +Ŭ‰» +About WinHTTrack Website Copier +WinHTTrack Website Copier‚ɂ‚¢‚Ä +Check program updates... +ƒvƒƒOƒ‰ƒ€XV‚̃`ƒFƒbƒN... +&Toolbar +&ƒc[ƒ‹ƒo[ +&Status Bar +&ƒXƒe[ƒ^ƒXƒo[ +S&plit +&•ªŠ„ +File +ƒtƒ@ƒCƒ‹ +Preferences +Ý’è +Mirror +ƒ~ƒ‰[ +Log +ƒƒO +Window +ƒEƒBƒ“ƒhƒE +Help +ƒwƒ‹ƒv +Exit +I—¹ +Load default options +‹K’è‚̃IƒvƒVƒ‡ƒ“‚̓ǂݞ‚Ý +Save default options +‹K’è‚̃IƒvƒVƒ‡ƒ“‚̕ۑ¶ +Reset to default options +‹K’è‚̃IƒvƒVƒ‡ƒ“‚ÉƒŠƒZƒbƒg +Load options... +ƒIƒvƒVƒ‡ƒ“‚̓ǂݞ‚Ý... +Save options as... +ƒIƒvƒVƒ‡ƒ“‚𖼑O‚ð•t‚¯‚ĕۑ¶... +Language preference... +Œ¾ŒêÝ’è... +Contents... +ƒwƒ‹ƒv‚̃Rƒ“ƒeƒ“ƒc... +About WinHTTrack... +WinHTTrack‚ɂ‚¢‚Ä... +New project\tCtrl+N +&V‹KƒvƒƒWƒFƒNƒg\tAlt+N +&Open...\tCtrl+O +&ŠJ‚­...\tAlt+O +&Save\tCtrl+S +&•Û‘¶\tAlt+S +Save &As... +–¼‘O‚ð•t‚¯‚ĕۑ¶ &–¼‘O... +&Delete... +&íœ... +&Browse sites... +&ƒTƒCƒg‚̃uƒ‰ƒEƒY... +User-defined structure +ƒ†[ƒU’è‹`‚̃tƒHƒ‹ƒ_ +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tƒtƒ@ƒCƒ‹‚ÌŽí—Þ‚È‚µ‚Ńtƒ@ƒCƒ‹–¼‚Ì‚Ý (—á: gazou)\r\n%N\tƒtƒ@ƒCƒ‹–¼‚ƃtƒ@ƒCƒ‹‚ÌŽí—Þ (—á: gazou.gif)\r\n%t\tƒtƒ@ƒCƒ‹‚ÌŽí—Þ (—á: gif)\r\n%p\tƒpƒX [ÅŒã‚Ì / ‚È‚µ] (—á: /gazofile)\r\n%h\tƒhƒƒCƒ“–¼ (—á: www.someweb.com)\r\n%M\tURL MD5 (128 Bits, 32 ASCII-Bytes)\r\n%Q\tMD5 ƒNƒGƒŠ[•¶Žš—ñ (128 Bits, 32 ASCII-Bytes)\r\n%q\tƒXƒ‚[ƒ‹MD5ƒNƒGƒŠ[•¶Žš—ñ (16 Bits, 4 ASCII-Bytes)\r\n\r\n%s?\tDOSƒtƒ@ƒCƒ‹–¼(—á: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +—á:\t%h%p/%n%q.%t\n->\t\tc:\\kagami\\www.someweb.com\\gazofile\\gazou.gif +Proxy settings +ƒvƒƒLƒV‚ÌÝ’è +Proxy address: +ƒvƒƒLƒV‚̃AƒhƒŒƒX +Proxy port: +ƒvƒƒLƒV‚̃|[ƒg +Authentication (only if needed) +Œ ŒÀÝ’è (•K—v‚ª‚ ‚ê‚Î) +Login +ƒƒOƒCƒ“–¼ +Password +ƒpƒXƒ[ƒh +Enter proxy address here +ƒvƒƒLƒV‚̃AƒhƒŒƒX‚ð‚±‚±‚É“ü—Í +Enter proxy port here +ƒvƒƒLƒV‚̃|[ƒg‚ð‚±‚±‚É“ü—Í +Enter proxy login +ƒvƒƒLƒV‚̃ƒOƒCƒ“–¼‚Ì“ü—Í +Enter proxy password +ƒvƒƒLƒV‚̃pƒXƒ[ƒh‚Ì“ü—Í +Enter project name here +ƒvƒƒWƒFƒNƒg–¼‚ð‚±‚±‚É‹L“ü‚µ‚Ä‚­‚¾‚³‚¢ +Enter saving path here +•Û‘¶‚·‚éƒpƒX‚ð‚±‚±‚É“ü—Í +Select existing project to update +XV‚·‚éŠù‘¶‚̃vƒƒWƒFƒNƒg‚ð‘I‘ð +Click here to select path +‚±‚±‚ðƒNƒŠƒbƒN‚µ‚ăpƒX‚Ì‘I‘ð +HTTrack Project Wizard... +HTTrack ƒvƒƒWƒFƒNƒgƒEƒBƒU[ƒh +New project name: +V‹KƒvƒƒWƒFƒNƒg–¼ +Existing project name: +Šù‘¶‚̃vƒƒWƒFƒNƒg–¼ +Project name: +ƒvƒƒWƒFƒNƒg–¼ +Base path: +Šî€ƒpƒX +C:\\My Web Sites +C:\\My Web Sites +Type a new project name, \r\nor select existing project to update/resume +V‚µ‚¢ƒvƒƒWƒFƒNƒg–¼‚ð‹L“ü‚µ‚Ä‚­‚¾‚³‚¢B \r\nŠù‘¶‚̃vƒƒWƒFƒNƒg‚ðƒAƒbƒvƒf[ƒg/ÄŠJ‚·‚é‚É‚Íã‚ÌƒŠƒXƒg‚©‚ç‘I‘ð‚µ‚Ä‚­‚¾‚³‚¢B +New project +V‹KƒvƒƒWƒFƒNƒg +Insert URL +URL‚Ì‘}“ü +URL: +URL: +Authentication (only if needed) +Œ ŒÀÝ’è (•K—v‚ª‚ ‚ê‚Î) +Login +ƒƒOƒCƒ“–¼ +Password +ƒpƒXƒ[ƒh +Forms or complex links: +ƒtƒH[ƒ€‚Ü‚½‚Í•¡ŽG‚ÈƒŠƒ“ƒN: +Capture URL... +URL‚ðŽæ“¾‚µ‚Ä‚¢‚Ü‚·... +Enter URL address(es) here +URL‚ð‚±‚±‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ +Enter site login +ƒTƒCƒg‚̃ƒOƒCƒ“–¼‚Ì“ü—Í +Enter site password +ƒTƒCƒg‚̃pƒXƒ[ƒh“ü—Í +Use this capture tool for links that can only be accessed through forms or javascript code +ƒtƒH[ƒ€‚Ü‚½‚ÍJava-Script‚É‚æ‚Á‚Ă̂݃AƒNƒZƒX‰Â”\‚ÈƒŠƒ“ƒN‚ðA‚±‚̃c[ƒ‹‚ðŽg‚Á‚Ď擾‚·‚é +Choose language according to preference +Ý’è‚É‚µ‚½‚ª‚Á‚ÄŒ¾Œê‚ð‘I‘ð‚·‚é +Catch URL! +URL‚̎擾! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Œ»Ý‚̃uƒ‰ƒEƒU‚̃vƒƒLƒVÝ’è‚ðŽŸ‚Ì’l‚É“ü—Í‚µ‚Ä‚­‚¾‚³‚¢ (ƒvƒƒLƒV‚̃AƒhƒŒƒX‚ƃ|[ƒg‚ðƒRƒs[/ƒy[ƒXƒg‚µ‚Ü‚·j\nŽŸ‚ÉKlicken Sie dann im Browser auf den Schalter Submit/Absenden o. . des Formulars oder auf die spezielle VerknEfung, die Sie laden wollen. +This will send the desired link from your browser to WinHTTrack. +‚±‚ê‚É‚æ‚Á‚Ä–]‚Ü‚µ‚¢ƒŠƒ“ƒN‚ðƒuƒ‰ƒEƒU‚©‚ç WinHTTrack ‚É‘—‚è‚Ü‚·B +ABORT +’†’f +Copy/Paste the temporary proxy parameters here +Œ»Ý‚̃vƒƒLƒV‚̃pƒ‰ƒ[ƒ^‚ðƒRƒs[/ƒy[ƒXƒg‚µi‚æ‚Ý‚±‚Ýj‚Ü‚· +Cancel +ƒLƒƒƒ“ƒZƒ‹ +Unable to find Help files! +ƒwƒ‹ƒvƒtƒ@ƒCƒ‹‚ðŒ©‚Â‚¯‚邱‚Æ‚ª‚Å‚«‚Ü‚¹‚ñ! +Unable to save parameters! +ƒpƒ‰ƒ[ƒ^‚ð•Û‘¶‚Å‚«‚Ü‚¹‚ñ! +Please drag only one folder at a time +‚P‰ñ‚ɂ͂ЂƂ‚̃tƒHƒ‹ƒ_‚ðƒhƒ‰ƒbƒO‚µ‚Ä‚­‚¾‚³‚¢ +Please drag only folders, not files +ƒtƒ@ƒCƒ‹‚ł͂Ȃ­ƒtƒHƒ‹ƒ_‚݂̂ðƒhƒ‰ƒbƒO‚µ‚Ä‚­‚¾‚³‚¢B +Please drag folders only +ƒtƒHƒ‹ƒ_‚݂̂ðƒhƒ‰ƒbƒO‚µ‚Ä‚­‚¾‚³‚¢ +Select user-defined structure? +ƒ†[ƒU’è‹`‚̃tƒHƒ‹ƒ_‚ð‘I‘ð‚µ‚Ü‚·‚©? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +ƒ†[ƒU’è‹`‚Ì•¶Žš—ñ‚ª³‚µ‚¢‚±‚Æ‚ðŠm”F‚µ‚Ä‚­‚¾‚³‚¢B \n ‚»‚¤‚łȂ¯‚ê‚΃tƒ@ƒCƒ‹–¼‚ª³‚µ‚­‚ ‚è‚Ü‚¹‚ñB +Do you really want to use a user-defined structure? +–{“–‚Ƀ†[ƒU’è‹`‚̃tƒHƒ‹ƒ_‚ðŽg—p‚µ‚Ü‚·‚©? +Too manu URLs, cannot handle so many links!! +URL‚ª‘½‚·‚¬‚Ü‚·! ‚±‚ê‚Ù‚Ç‘½‚­‚ÌƒŠƒ“ƒN‚͈—‚Å‚«‚Ü‚¹‚ñ! +Not enough memory, fatal internal error.. +\•ª‚ȃƒ‚ƒŠ‚ª‚ ‚è‚Ü‚¹‚ñB ’v–½“I“à•”ƒGƒ‰[... +Unknown operation! +•s–¾‚ȃIƒyƒŒ[ƒVƒ‡ƒ“! +Add this URL?\r\n +‚±‚ÌURL‚ð’ljÁ‚µ‚Ü‚·‚©?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Œx: ƒƒCƒ“ƒvƒƒZƒX‚ª‚Ü‚¾‰ž“š‚µ‚Ü‚¹‚ñBURL‚ð’ljÁ‚Å‚«‚Ü‚¹‚ñ.. +Type/MIME associations +ƒtƒ@ƒCƒ‹‚ÌŽí—Þ/MIMEŠÖ˜A +File types: +ƒtƒ@ƒCƒ‹‚ÌŽí—Þ +MIME identity: +MIMEޝ•Ê +Select or modify your file type(s) here +‚±‚±‚Å‚ ‚È‚½‚̃tƒ@ƒCƒ‹‚ÌŽí—Þ‚ð‘I‘ð‚Ü‚½‚ÍC³‚µ‚Ä‚­‚¾‚³‚¢ +Select or modify your MIME type(s) here +‚±‚±‚Å‚ ‚½‚È‚½‚ÌMIME‚ÌŽí—Þ‚ð‘I‘ð‚Ü‚½‚ÍC³‚µ‚Ä‚­‚¾‚³‚¢ +Go up +ã‚Ö +Go down +‰º‚Ö +File download information +ƒtƒ@ƒCƒ‹ƒ_ƒEƒ“ƒ[ƒhî•ñ +Freeze Window +ƒEƒBƒ“ƒhƒE‚̌Œè +More information: +‚æ‚è[‚¢î•ñ +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +WinHTTrack Website Copier‚ւ悤‚±‚»!\n\n V‚µ‚¢ƒvƒƒWƒFƒNƒg‚ðŠJŽn‚·‚é‚©\n ‚Ü‚½‚Í •”•ªƒ_ƒEƒ“ƒ[ƒh‚ðÄŠJ‚·‚é‚É‚Í\n u‚‚¬‚Öv‚ðƒNƒŠƒbƒN‚µ‚Ä‚­‚¾‚³‚¢ +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Šg’£Žq•t‚«ƒtƒ@ƒCƒ‹–¼:\nŽŸ‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼:\n‚±‚̃tƒ@ƒCƒ‹–¼:\nŽŸ‚ðŠÜ‚ÞƒtƒHƒ‹ƒ_–¼:\n‚±‚̃tƒHƒ‹ƒ_–¼:\n‚±‚̃hƒƒCƒ“‚ÌƒŠƒ“ƒN:\nŽŸ‚ðŠÜ‚ÞƒhƒƒCƒ“‚ÌƒŠƒ“ƒN:\n‚±‚̃zƒXƒg‚©‚ç‚ÌƒŠƒ“ƒN:\nŽŸ‚ðŠÜ‚ÞƒŠƒ“ƒN:\n‚±‚ÌƒŠƒ“ƒN:\n‘S‚Ä‚ÌƒŠƒ“ƒN +Show all\nHide debug\nHide infos\nHide debug and infos +‘S‚Ä‚ð•\ަ\nƒfƒoƒbƒO‚ð‰B‚·\nî•ñ‚ð‰B‚·\nƒfƒoƒbƒO‚Æî•ñ‚ð‰B‚· +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +ƒTƒCƒg‚»‚̂܂܂ÌÄŒ»(Šù’è)\nHtmlƒtƒ@ƒCƒ‹‚ðƒtƒHƒ‹ƒ_web/, ‰æ‘œ‚Ù‚©‚̃tƒ@ƒCƒ‹‚ðweb/images/\nHtmlƒtƒ@ƒCƒ‹‚ðƒtƒHƒ‹ƒ_/html, ƒEƒFƒu‚̉摜‚Ù‚©‚̃tƒ@ƒCƒ‹‚ð/images\nHtmlƒtƒ@ƒCƒ‹‚ðƒ‹[ƒgƒtƒHƒ‹ƒ_/, ‰æ‘œ‚Ù‚©‚̃tƒ@ƒCƒ‹‚ðweb/\nHtmlƒtƒ@ƒCƒ‹‚ðweb/, ‰æ‘œ‚Ù‚©‚̃tƒ@ƒCƒ‹‚ðweb/xxx, xxx‚̓tƒ@ƒCƒ‹‚ÌŠg’£Žq‚²‚Æ\nHtmlƒtƒ@ƒCƒ‹‚ðweb/html, ‰æ‘œ‚Ù‚©‚̃tƒ@ƒCƒ‹‚ðweb/xxx\nwww.domain.xxx/‚È‚µ‚ŃTƒCƒg‚ÌÄŒ»\nHtmlƒtƒ@ƒCƒ‹‚ðsite_name/, ‰æ‘œ‚Ù‚©‚̃tƒ@ƒCƒ‹‚ðsite_name/images/\nHtmlƒtƒ@ƒCƒ‹‚ðsite_name/html, ‰æ‘œ‚Ù‚©‚ðsite_name/images\nHtmlƒtƒ@ƒCƒ‹‚ðsite_name/, ‰æ‘œ‚Ù‚©‚ðsite_name/\nHtmlƒtƒ@ƒCƒ‹‚ð site_name/‚É, f‰æ‘œ‚»‚̂ق©‚ð site_name/xxx‚É\nHtmlƒtƒ@ƒCƒ‹‚ð site_name/html‚É, ‰æ‘œ‚»‚Ì‘¼‚ð site_name/xxx‚É\n‘S‚Ẵtƒ@ƒCƒ‹‚ð web/‚Ƀ‰ƒ“ƒ_ƒ€‚È–¼‘O‚ð•t‚¯‚Ä(ƒKƒWƒFƒbƒg!)\n‘S‚Ẵtƒ@ƒCƒ‹‚ð ƒtƒHƒ‹ƒ_site_name/‚Ƀ‰ƒ“ƒ_ƒ€‚È–¼‘O‚ð•t‚¯‚Ä(ƒKƒWƒFƒbƒg!)\nƒ†[ƒU’è‹`‚̃tƒHƒ‹ƒ_... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +ƒXƒLƒƒƒ“‚Ì‚Ý\nHTMLƒtƒ@ƒCƒ‹‚̕ۑ¶\n”ñHTMLƒtƒ@ƒCƒ‹‚̕ۑ¶\n‘S‚Ẵtƒ@ƒCƒ‹‚̕ۑ¶ (Šù’è)\nʼn‚ÉHTMLƒtƒ@ƒCƒ‹‚ð•Û‘¶ +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +“¯ˆêƒfƒBƒŒƒNƒgƒŠ‚ɂƂǂ܂é\n‰º‚̃fƒBƒŒƒNƒgƒŠ‚ւ̈ړ®‚ð‹–‰Â (Šù’è)\nã‚̃fƒBƒŒƒNƒgƒŠ‚ւ̈ړ®‚ð‹–‰Â\n㉺‚̃fƒBƒŒƒNƒgƒŠ‚ւ̈ړ®‚ð‹–‰Â +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +“¯ˆêƒAƒhƒŒƒX‚ɂƂǂ܂é (Šù’è)\n“¯ˆêƒhƒƒCƒ“‚ɂƂǂ܂é\nƒgƒbƒvƒŒƒxƒ‹‚̃hƒƒCƒ“‚ɂƂǂ܂é\nWeb‚̂ǂ±‚Ö‚Å‚às‚­ +Never\nIf unknown (except /)\nIf unknown +‹‘”Û\n–¢’m‚Ìê‡ (/‚𜂭)\n–¢’m‚Ìê‡ +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +robots.txt ‚ª–³Ž‹‚³‚ê‚éꇂ̃‹[ƒ‹\nƒEƒBƒU[ƒh‚𜂫Arobots.txt‚̃‹[ƒ‹‚É]‚¤\nrobots.txt‚̃‹[ƒ‹‚É]‚¤ +normal\nextended\ndebug +Šù’è\nŠg’£\nƒfƒoƒbƒO +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +ƒEƒFƒuƒTƒCƒg‚ÌŽ©“®ƒ_ƒEƒ“ƒ[ƒh\nƒEƒFƒuƒTƒCƒg‚ÌŽ¿–â•t‚«ƒ_ƒEƒ“ƒ[ƒh\n•ªŠ„ƒtƒ@ƒCƒ‹‚̎擾\nƒy[ƒW’†‘S‚ẴTƒCƒg‚̃_ƒEƒ“ƒ[ƒh (•¡”ƒTƒCƒg‚̃Rƒs[(ƒ~ƒ‰[))\nƒy[ƒW‚ÌƒŠƒ“ƒN‚̃eƒXƒg\n* ’†’f‚³‚ꂽƒ_ƒEƒ“ƒ[ƒh‚ÌŒp‘±\n* Šù‘¶‚̃_ƒEƒ“ƒ[ƒh‚ÌXV +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +‘Š‘ÎURI(URIˆê•”‹Lq) / â‘ÎURL(URLƒtƒ‹‹Lq)(Šù’è)\nâ‘ÎURL / â‘ÎURL\nâ‘ÎURI / â‘ÎURL\nƒIƒŠƒWƒiƒ‹‚ÌURL / ƒIƒŠƒWƒiƒ‹‚ÌURL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Macedonian.txt b/lang/Macedonian.txt new file mode 100755 index 0000000..d11d055 --- /dev/null +++ b/lang/Macedonian.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Macedonian +LANGUAGE_FILE +Macedonian +LANGUAGE_ISO +mk +LANGUAGE_AUTHOR +Àëåêñàíäàð Ñàâè (aleks@macedonia.eu.org) \r \n +LANGUAGE_CHARSET +ISO-8859-5 +OK +Äîáðî +Cancel +Îòêàæè +Exit +Èçëåç +Close +Çàòâîðè +Cancel changes +Îòêàæè ãè ïðîìåíèòå +Click to confirm +Êëèêíè çà ïîòâðäà +Click to get help! +Êëèêíè çà ïîìîø +Click to return to previous screen +Êëèêíè çà âðààœå íà ïðåòõîäíèîò åêðàí +Click to go to next screen +Êëèêíè çà íàðåäåí åêðàí +Hide password +Ñîêðè¼ ¼à ëîçèíêàòà +Save project +Çà÷óâ༠ãî ïðîåêòîò +Close current project? +Çàòâîðè ãî ïðîåêòîò? +Delete this project? +Èçáðèøè ãî ïðîåêòîò? +Delete empty project %s? +Èçáðèøè ãî ïðàçíèîò ïðîåêò %s? +Action not yet implemented +Àêöè¼àòà ñåóøòå íå å èìïëåìåíòèðàíà +Error deleting this project +Ãðåøêà ïðè áðèøåœåòî íà ïðîåêòîò +Select a rule for the filter +Èçáåðåòå ïðàâèëî çà ôèëòåðîò +Enter keywords for the filter +Âíåñåòå êëó÷íè çáîðîâè çà ôèëòåðîò +Cancel +Îòêàæè +Add this rule +Äîäàäåòå ãî îâà ïðàâèëî +Please enter one or several keyword(s) for the rule +Âå ìîëèìå âíåñåòå êëó÷íè çáîðîâè çà ïðàâèëîòî +Add Scan Rule +Äîäàäåòå Scan Ïðàâèëî +Criterion +Êðèòåðèóì +String +Ñòðèíã +Add +Äîäàäè +Scan Rules +Scan ôèëòðè +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Êîðèñòåòå Ÿîêåðè çà äà äîäàäåòå/èçáðèøåòå URL èëè ëèíêîâè. Ìîæåòå äà ñòàâèòå ïîâåå scan ñòðèíãîâè íà èñòàòà ëèíè¼à. \nÊîðèñòåòå ïðàçè ìåñòà çà îäâî¼óâàœå.\n\nÏðèìåð: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi\r\n +Exclude links +Èçáðèøåòå ãè ëèíêîâèòå +Include link(s) +Äîäàäåòå ëèíêîâè +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Ñîâåò: Çà äà ãè èìàòå äîäàäåíî ñèòå GIF äàòîòåêè, êîðèñòåòå íåøòî êàêî +www.íåêî¼âåá.com/*.gif. \n(+*.gif / -*.gif å ãè äîäàäå/èçáðèøå ÑÈÒÅ GIF-îâè îä ÑÈÒÅ ñà¼òîâè) +Save prefs +Çà÷óâ༠ãè ïðåôåðåíöèòå +Matching links will be excluded: +Èñòèòå ëèíêîâè å áèäàò èçáðèøàíè: +Matching links will be included: +Èñòèòå ëèíêîâè å áèäàò äîäàäåíè: +Example: +Íà ïðèìåð: +gif\r\nWill match all GIF files +gif\r\nå ãè íà¼äå ñèòå GIF äàòîòåêè +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nå ãè íà¼äå ñèòå äàòîòåêè êîè ñîäðæàò 'blue'ñóá-ñòðèíã êàêî íà ïðèìåð 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nå ¼à íà¼äå äàòîòåêàòà 'bigfile.mov', íî íå è 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nå íà¼äå ëèíêîâè ñî ôîëäåð ÷èå èìå ãî ñîäðæè ñóá-ñòðèíãîò 'cgi' êàêî íà ïðèìåð /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\å íà¼äå ëèíêîâè ñî ôîëäåð ÷èå èìå ãî ñîäðæè öåëèîò 'cgi-bin' ñòðèíã (íî íå è cgi-bin-2, íà ïðèìåð) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nå íà¼äå ëèíêîâè êàêî www.someweb.com, private.someweb.com èòí. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nå íà¼äå ëèíêîâè îä òèïîò íà www.someweb.com, www.someweb.edu, private.someweb.otherweb.com èòí. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nå íà¼äå ëèíêîâè êàêî 'www.someweb.com' (íî íå è ëèíêîâè êàêî private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nå ãè íà¼äå ñèòå ëèíêîâè îä òèïîò íà www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html èòí. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nå ¼à íà¼äå ñàìî 'www.test.com/test/someweb.html äàòîòåêàòà. Çàïîìíåòå äåêà ìîðàòå äà ãî íàïèøåòå êîìïëåòíèîò path (URL + ñà¼ò path) +All links will match +Ñèòå ëèíêîâè ñå äîçâîëåíè +Add exclusion filter +Äîäàäè ôèëòåð çà èñêëó÷óâàœå +Add inclusion filter +Äîäàäè ôèëòåð çà âêëó÷óâàœå +Existing filters +Ïîñòîå÷êè ôèëòðè +Cancel changes +Îòêàæè ãè ïðîìåíèòå +Save current preferences as default values +Çà÷óâ༠ãè ñåãàøíèòå ïðåôåðåíöè êàêî default âðåäíîñòè +Click to confirm +Êëèêíè çà ïîòâðäà +No log files in %s! +Íåìà log äàòîòåêè âî %s! +No 'index.html' file in %s! +Íåìà 'index.html' äàòîòåêè âî %s! +Click to quit WinHTTrack Website Copier +Êëèêíè çà èçëåç îä WinHTTrack Website Copier +View log files +Âèäè ãè log äàòîòåêèòå +Browse HTML start page +Ïðåëèñòóâ༠¼à HTML start ñòðàíèöàòà +End of mirror +Êð༠íà êîïè¼àòà îä ñà¼òîò (mirror) +View log files +Âèäè ãè log äàòîòåêèòå +Browse Mirrored Website +Ïðåëèñò༠¼à êîïè¼àòà íà âåá ñà¼òîò +New project... +Íîâ ïðîåêò... +View error and warning reports +Âèäè ãè èçâåøòàèòå çà ãðåøêè è ïðåäóïðåäóâàœà +View report +Âèäè ãî èçâåøòà¼îò +Close the log file window +Çàòâîðè ãî ïðîçîðåöîò íà log äàòîòåêàòà +Info type: +Òèï íà èíôîðìàöè¼àòà +Errors +Ãðåøêè +Infos +Èíôîðìàöèè +Find +Íà¼äè +Find a word +Íà¼äè ãî çáîðîò +Info log file +Èíôîðìàöèè çà log äàòîòåêàòà +Warning/Errors log file +Log äàòîòåêà çà ïðåäóïðåäóâàœà è ãðåøêè +Unable to initialize the OLE system +Íå ìîæå äà ñå èíèöè¼àëèçèðà OLE ñèñòåìîò +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack íå ìîæå äà íà¼äå íèåäíà ïðåêèíàòà download keø äàòîòåêà âî áàðàíèîò ôîëäåð +Could not connect to provider +Íå ìîæå äà ñå ïîâðçå ñî ïðîâà¼äåðîò +receive +ïðèìà +request +ìîëáà +connect +ïîâðçóâà +search +áàð༠+ready +ïîäãîòâåí +error +ãðåøêà +Receiving files.. +Ïðèìàœå íà äàòîòåêè... +Parsing HTML file.. +Àíàëèçèðàœå íà HTML äàòîòåêàòà... +Purging files.. +Ïðå÷èñòóâàœå íà äàòîòåêèòå... +Loading cache in progress.. + +Parsing HTML file (testing links).. +Àíàëèçèðàœå íà HTML äàòîòåêèòå (òåñòèðàœå íà ëèíêîâèòå).. +Pause - Toggle [Mirror]/[Pause download] to resume operation +Ïàóçà - Èçáåðåòå [Mirror]/[Ïàóçèðàœå íà ñèìíóâàœåòî] çà ïðîäîëæóâàœå íà îïåðàöè¼àòà +Finishing pending transfers - Select [Cancel] to stop now! + +scanning +ñêåíèðà +Waiting for scheduled time.. +Ãî ÷åêàì äàäåíîòî âðåìå... +Connecting to provider +Ïîâðçóâàœå ñî ïðîâà¼äåðîò +[%d seconds] to go before start of operation +Îñòàíóâààò óøòå [%d seconds] äî ñòàðòîò íà îïåðàöè¼àòà +Site mirroring in progress [%s, %s bytes] +Âî òåê å êîïèðàœå íà ñà¼òîò [%s, %s áà¼òè] +Site mirroring finished! +Êîïèðàœåòî íà ñà¼òîò å çàâðøåíî! +A problem occured during the mirroring operation\n +Ñå ïî¼àâè ïðîáëåì ïðè êîïèðàœåòî íà ñà¼òîò\n +\nDuring:\n +\nÂî òåê:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nÂèäè ¼à log äàòîòåêàòà äîêîëêó å ïîòðåáíî.\n\nÊëèêíè ÄÎÁÐÎ çà èçëåç îä WinHTTrack Website Copier.\n\nÁëàãîäàðèìå çà êîðèñòåœåòî íà WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Êîïèðàœåòî íà ñà¼òîò çàâðøè.\nÊëèêíè Èçëåç çà èñêëó÷óâàœå íà WinHTTrack.\nÂèäè ãè log äàòîòåêèòå çà äà ïðîâåðèø äàëè ñå å â ðåä.\n\nÁëàãîäàðèìå çà êîðèñòåœåòî íà WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +** ÊÎÏÈÐÀŒÅÒÎ Å ÏÐÅÊÈÍÀÒÎ!**\r\nÑåãàøíèîò temporary êåø å ïîòðåáåí çà ñåêî¼à update îïåðàöè¼à è ãè ñîäðæè ñàìî ïîäàòîöèòå ñèìíàòè ïðè ñåãàøíàòà ïðåêèíàòà ñåñè¼à.\r\nÁèâøèîò êåø ìîæå äà ñîäðæè êîìïëåòíè èíôîðìàöèè; àêî íå ñàêàòå äà ãè çèãóáèòå òèå èíôîðìàöèè, ìîðàòå äà ãè ïîâðàòèòå è äà ãî èçáðèøåòå ñåãàøíèîò êåø\r\n[Ñîâåò: Îâà ìîæå ëåñíî äà ñå íàïðàâè îâäå ïðåêó áðèøåœå íà hts-cache/new.* äàòîòåêèòå]\r\n\r\nÌèñëèòå ëè äåêà áèâøèîò êåø ìîæå äà ñîäðæè êîìïëåòíè èíôîðìàöèè, è äàëè ñàêàòå äà ãè ïîâðàòèòå? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +**ÃÐÅØÊÀ ÏÐÈ ÊÎÏÈÐÀŒÅÒÎ**\r\nHTTrack îòêðè äåêà ñåãàøíèîò êåø å ïðàçåí. Àêî áèë update, ïðåòõîäíàòà êîïè¼à å ïîâðàòåíà.\r\nÏðè÷èíà: ïðâèòå ñòðàíèöè èëè íå ìîæàò äà áèäàò ïðîíà¼äåíè, èëè ñå ñëó÷è¼ ïðîáëåì ñî êîíåêöè¼àòà.\r\n=> Îñèãóðåòå ñå äàëè âåá ñà¼òîò ñåóøòå ïîñòîè, è/èëè ïðîâåðåòå ãè âàøèòå proxy ñåòèíçè!<= +\n\nTip: Click [View log file] to see warning or error messages +n\nÑîâåò: Êëèêíè [Âèäè ¼à log äàòîòåêàòà] çà äà âèäèòå ïîðàêè çà ãðåøêè èëè ïðåäóïðåäóâàœå +Error deleting a hts-cache/new.* file, please do it manually +Ãðåøêà áðè áðèøåœåòî íà hts-cache/new.* äàòîòåêàòà, âå ìîëèìå íàïðàâåòå ãî òîà ðà÷íî. +Do you really want to quit WinHTTrack Website Copier? +Äàëè íàâèñòèíà ñàêàòå äà ãî èñêëó÷èòå WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Íà÷èíè çà êîïèðàœå íà ñà¼òîò -\n\nÂíåñåòå àäðåñè âî URL ïîëåòî +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Èíòåðàêòèâåí wizard íà÷èí (ïðàøàœà) -n\nÂíåñåòå àäðåñè âî URL ïîëåòî +- File Download Mode -\n\nEnter file address(es) in URL box +- Íà÷èí çà ñèìíóâàœå íà äàòîòåêè -n\nÂíåñåòå ãè àäðåñèòå íà äàòîòåêèòå âî URL ïîëåòî +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Íà÷èí çà òåñòèðàœå íà ëèíêîò -n\nÂíåñåòå Âåá àäðåñè ñî ëèíêîâè çà òåñòèðàœå âî URL ïîëåòî +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Íà÷èí çà íàäãðàäóâàœå -n\nÏîòâðäåòå ãè àäðåñèòå âî URL ïîëåòî, ïðîâåðåòå ãè ïàðàìåòðèòå äîêîëêó å ïîòðåáíî, ïîòîà êëèêíåòå íà 'ÏÎÍÀÒÀÌÓ' êîï÷åòî +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Íà÷èí çà ïðîäîëæóâàœå (Ïðåêèíàòà îïðàöè¼à) -n\nÏîòâðäåòå ãè àäðåñèòå âî URL ïîëåòî, ïðîâåðåòå ãè ïàðàìåòðèòå äîêîëêó å ïîòðåáíî, ïîòîà êëèêíåòå íà 'ÏÎÍÀÒÀÌÓ' êîï÷åòî +Log files Path +Path çà log äàòîòåêèòå +Path +Path +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Íà÷èí çà ëèñòàœå íà ëèíêîâèòå -n\nÊîðèñòåòå ãî URL ïîëåòî çà âíåñóâàœå íà àäðåñè èëè ñòðàíèöè êîè ñîäðæàò ëèíêîâè çà êîïè¼àòà. +New project / Import? +Íîâ ïðîåêò/ Èìïîðòèðà¼? +Choose criterion +Èçáåðåòå êðèòåðèóì +Maximum link scanning depth +Ìàêñèìàëíà äëàáî÷èíà çà ñêåíèðàœå íà ëèíêîò +Enter address(es) here +Âíåñåòå àäðåñè îâäå +Define additional filtering rules +Äåôèíèðà¼òå äîäàòíè ïðàâèëà çà ôèëòðèðàœå +Proxy Name (if needed) +Proxy èìå (äîêîëêó å ïîòðåáíî) +Proxy Port +Proxy ïîðòà +Define proxy settings +Äåôèíèðà¼òå ãè proxy ñåòèíçèòå +Use standard HTTP proxy as FTP proxy +Êîðèñòåòå ñòàíäàðäåí HTTP proxy êàêî FTP proxy +Path +Path +Select Path +Èçáåðåòå Path +Path +Path +Select Path +Èçáåðåòå Path +Quit WinHTTrack Website Copier +Èçëåçåòå îä WinHTTrack Website Copier +About WinHTTrack +Çà WinHTTrack +Save current preferences as default values +Çà÷óâà¼òå ãè ñåãàøíèòå ïðåôåðåíöè êàêî default âðåäíîñòè +Click to continue +Êëèêíåòå çà äà ïðîäîëæèòå +Click to define options +Êëèêíåòå çà äà ãè äåôèíèðàòå îïöèèòå +Click to add a URL +Êëèêíåòå çà äà äîäàäåòå URL +Load URL(s) from text file +Ïîâèêà¼òå ãî URL-òî îä òåêñò äàòîòåêà +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack ïðåôåðåíöè (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Òåêñò äàòîòåêà ñî ëèñòà íà àäðåñè (*.txt)|*.txt| +File not found! +Äàòîòåêàòà íå å ïðîíà¼äåíà! +Do you really want to change the project name/path? +Äàëè íàâèñòèíà ñàêàòå äà ãî ïðîìåíèòå èìåòî íà ïðîåêòîò/path-îò? +Load user-default options? +Ïîâèêà¼òå ãè user-default îïöèèòå? +Save user-default options? +Çà÷óâà¼òå ãè user-default îïöèèòå? +Reset all default options? +Ðåñåòèðà¼òå ãè ñèòå default îïöèè? +Welcome to WinHTTrack! +Äîáðîäî¼äîâòå âî WinHTTrack! +Action: +Àêöè¼à: +Max Depth +Ìàêñèìàëíà äëàáî÷èíà +Maximum external depth: +Ìàêñèìàëíà íàäâîðåøíà äëaáî÷èíà: +Filters (refuse/accept links) : +Ôèëòðè (îäáè¼/ïðèôàòè ãè ëèíêîâèòå) : +Paths +Path-îâè +Save prefs +Çà÷óâ༠ãè ïðåôåðåíöèèòå +Define.. +Äåôèíèðà¼... +Set options.. +Ñåòèð༠ãè îïöèèòå... +Preferences and mirror options: +Ïàðàìåòðè çà êîïè¼àòà íà ñà¼òîò +Project name +Èìå íà ïðîåêòîò +Add a URL... +Äîäàäåòå URL... +Web Addresses: (URL) +Âåá àäðåñè: (URL) +Stop WinHTTrack? +Ñòîïèðà¼òå ãî WinHTTrack? +No log files in %s! +Íåìà log äàòîòåêè âî %s! +Pause Download? +Ïàóçèð༠ãî ñèìíóâàœåòî? +Stop the mirroring operation +Ñòîïèð༠ãî êîïèðàœåòî íà ñà¼òîò? +Minimize to System Tray +Ìèíèìèçèð༠âî System Tray +Click to skip a link or stop parsing +Êëèêíåòå çà ïðåñêîêíóâàœå íà ëèíê èëè ñòîïèðàœå íà àíàëèçàòà +Click to skip a link +Êëèêíåòå çà ïðåñêîêíóâàœå íà ëèíêîò +Bytes saved +Çà÷óâàíè áà¼òè +Links scanned +Ñêåíèðàíè ëèíêîâè +Time: +Âðåìå: +Connections: +Êîíåêöèè: +Running: +Àêòèâíè: +Hide +Ñîêðè¼ +Transfer rate +Áðçèíà íà òðàíñôåð +SKIP +ÏÐÅÑÊÎÊÍÈ +Information +Èíôîðìàöèè +Files written: +Çàïèøàíè äàòîòåêè: +Files updated: +Update-èðàíè äàòîòåêè: +Errors: +Ãðåøêè: +In progress: +Âî òåê: +Follow external links +Ñëåäè ãè íàäâîðåøíèòå ëèíêîâè +Test all links in pages +Òåñòèð༠ãè ñèòå ëèíêîâè âî ñòðàíèöèòå +Try to ferret out all links +Îáèäè ñå äà ãè ïðîíà¼äåø ñèòå ëèíêîâè +Download HTML files first (faster) +Ïðâèí ñèìíåòå ãè HTML äàòîòåêèòå (ïîáðçî) +Choose local site structure +Èçáåðåòå ñòðóêòóðà íà ëîêàëíèîò ñà¼ò +Set user-defined structure on disk +Ñåòèðà¼òå user-äåôèíèðàíà ñòðóêòóðà íà äèñêîò +Use a cache for updates and retries +Êîðèñòåòå êåø çà update è retry +Do not update zero size or user-erased files +Íå ïðàâè update íà èçáðèøàíè äàòîòåêè èëè äàòîòåêè ñî ãîëåìèíà íóëà +Create a Start Page +Êðåèðà¼òå Ñòàðò ñòðàíèöà +Create a word database of all html pages +Êðåèðà¼òå word áàçà íà ïîäàòîöè íà ñèòå html ñòðàíèöè +Create error logging and report files +Êðåèðà¼òå error logging è äàòîòåêè ñî èçâåøòàè +Generate DOS 8-3 filenames ONLY +Ãåíåðèðà¼òå ÑÀÌÎ DOS 8-3 èìèœà íà äàòîòåêè +Generate ISO9660 filenames ONLY for CDROM medias + +Do not create HTML error pages +Íå êðåèðà¼òå HTML ñòðàíèöè ñî ãðåøêè +Select file types to be saved to disk +Ñåëåêòèðà¼òå òèïîâè íà äàòîòåêè êîè å áèäàò çà÷óâàíè íà äèñêîò +Select parsing direction +Ñåëåêòèðà¼òå íàñîêà íà ïðåáàðóâàœå íà ñà¼òîò +Select global parsing direction +Ñåëåêòèðà¼òå ãëîáàëíà íàñîêà íà ïðåáàðóâàœå íà ñà¼òîò +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) + +Max simultaneous connections +Ìàêñèìàëíè ñèìóëòàíè êîíåêöèè +File timeout +Timeout íà äàòîòåêèòå +Cancel all links from host if timeout occurs +Îòêàæè ãè ñèòå ëèíêîâè îä host-îò àêî ñå ñëó÷è timeout +Minimum admissible transfer rate +Ìèíèìàëíà äîçâîëåíà áðçèíà íà òðàíñôåð +Cancel all links from host if too slow +Îòêàæè ãè ñèòå ëèíêîâè îä host-îò àêî å ïðåìíîãó áàâíî +Maximum number of retries on non-fatal errors +Ìàêñèìàëåí áðî¼ íà retry íà íå-ôàòàëíè ãðåøêè +Maximum size for any single HTML file +Ìàêñèìàëíà ãîëåìèíà çà áèëî êî¼à åäèíå÷íà HTML äàòîòåêà +Maximum size for any single non-HTML file +Ìàêñèìàëíà ãîëåìèíà çà áèëî êî¼ åäèíå÷íà íå-HTML äàòîòåêà +Maximum amount of bytes to retrieve from the Web +Ìàêñèìàëíî êîëè÷åñòâî íà áà¼òè çà ñèìíóâàœå îä Âåáîò +Make a pause after downloading this amount of bytes +Íàïðàâåòå ïàóçà ïî ñèìíóâàœåòî íà îâà êîëè÷åñòâî íà áà¼òè +Maximum duration time for the mirroring operation +Ìàêñèìàëíî âðåìå-òðàåœå çà êîïèðàœå íà ñà¼òîò +Maximum transfer rate +Ìàêñèìàëíà áðçèíà íà òðàíñôåð +Maximum connections/seconds (avoid server overload) +Ìàêñèìàëíè êîíåêöèè/ñåêóíäè (îäáåãíóâà¼è îïòåðåòóâàœå íà ñåðâåðîò) +Maximum number of links that can be tested (not saved!) +Ìàêñèìàëåí áðî¼ íà ëèíêîâè êîè ìîæàò äà áèäàò òåñòèðàíè (íå çà÷óâàíè!) +Browser identity +Èäåíòèôèêàöè¼à íà ïðåáàðóâà÷îò +Comment to be placed in each HTML file +Êîìåíòàð êî¼ òðåáà äà áèäå ñìåñòåí âî ñåêî¼à HTML äàòîòåêà +Back to starting page +Íàçàä äî ñòàðòíàòà ñòðàíèöà +Save current preferences as default values +Çà÷óâà¼òå ãè ñåãàøíèòå ïðåôåðåíöè êàêî default âðåäíîñòè +Click to continue +Êëèêíåòå çà äà ïðîäîëæèòå +Click to cancel changes +Êëèêíåòå çà äà ãè îòêàæåòå ïðîìåíèòå +Follow local robots rules on sites +Ñëåäåòå ãè ëîêàëíèòå ïðàâèëà íà ðîáîòèòå íà ñà¼òîâèòå +Links to non-localised external pages will produce error pages +Ëèíêîâèòå äî íå-ëîêàëèçèðàíè íàäâîðåøíè ñòðàíèöè å ïðåäèçâèêààò ñòðàíèöè ñî ãðåøêè +Do not erase obsolete files after update +Íå áðèøè ãè çàñòàðåíèòå äàòîòåêè ïî update-îò +Accept cookies? +Ïðèôàòè êîëà÷èœà (cookies)? +Check document type when unknown? +Ïðîâåðè ãî òèïîò íà äîêóìåíòîò êîãà å íåïîçíàò? +Parse java applets to retrieve included files that must be downloaded? +Àíàëèçèð༠ãè Java àïëåòèòå çà äà ãè ïîâðàòèø âêëó÷åíèòå äàòîòåêè êîè ìîðààò äà áèäàò ñèìíàòè? +Store all files in cache instead of HTML only +Ñìåñòè ãè ñèòå äàòîòåêè âî êåøîò íàìåñòî ñàìî HTML +Log file type (if generated) +Òèï íà log äàòîòåêàòà (àêî å ãåíåðèðàíà) +Maximum mirroring depth from root address +Ìàêñèìàëíà äëàáî÷èíà íà êîïè¼àòà íà ñà¼òîò îä root àäðåñàòà +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Ìàêñèìàëíà äëàáî÷èíà íà êîïè¼àòà íà ñà¼òîò çà íàäâîðåøíè/çàáðàíåòè àäðåñè (0, íåìà, è òîà å default) +Create a debugging file +Êðåèðà¼òå debugging äàòîòåêà +Use non-standard requests to get round some server bugs +Êîðèñòåòå íå-ñòàíäàðäíè ìîëáè çà äà çàîáèêîëèòå íåêîè ãðåøêè íà ñåðâåðîò +Use old HTTP/1.0 requests (limits engine power!) +Êîðèñòåòå ñòàðè HTML/1.0 ìîëáè (îãðàíè÷åíà å ìîæíîñòà íà ïðîãðàìàòà) +Attempt to limit retransfers through several tricks (file size test..) +Îáèäè ñå äà ñå îãðàíè÷àò ïîâòîðíèòå òðàíñôåðè ïðåêó íåêîè òðèêîâè (òåñò íà ãîëåìèíàòà íà äàòîòåêàòà...) +Write external links without login/password +Çàïèøè ãè íàäâîðåøíèòå ëèíêîâè áåç login/password +Write internal links without query string +Çàïèøè ãè âíàòðåøíèòå ëèíêîâè áåç 'query string' +Get non-HTML files related to a link, eg external .ZIP or pictures +Çåìåòå íå-HTML äàòîòåêè êîè ñå ïîâðçàíè ñî ëèíê, íà ïðèìåð, íàäâîðåøíè .ZIP èëè ñëèêè +Test all links (even forbidden ones) +Òåñòèðà¼òå ãè ñèòå ëèíêîâè (äóðè è çàáðàíåòèòå) +Try to catch all URLs (even in unknown tags/code) +Îáèäè ñå äà ñå ôàòàò ñèòå URL (äóðè è âî íåïîçíàòè òàãîâè/êîäîâè) +Get HTML files first! +Ïðâèí çåìè ãè HTML äàòîòåêèòå! +Structure type (how links are saved) +Òèï íà ëîêàëíàòà ñòðóêòóðà (êàêî ñå çà÷óâàíè ëèíêîâèòå) +Use a cache for updates +Êîðèñòåòå êåø çà update-è +Do not re-download locally erased files +Íåìî¼ ïîâòîðíî äà ãè ñèìíóâàø ëîêàëíî èçáðèøàíèòå äàòîòåêè +Make an index +Íàïðàâè èíäåêñ +Make a word database +Íàïðàâè word áàçà íà ïîäàòîöè +Log files +Log äàòîòåêè +DOS names (8+3) +DOS èìèœà (8+3)*/ +ISO9660 names (CDROM) + +No error pages +Áåç ñòðàíèöè ñî ãðåøêè +Primary Scan Rule +Ïðèìàðíè ôèëòðè +Travel mode +Íà÷èí íà ïðåáàðóâàœå +Global travel mode +Ãëîáàëåí íà÷èí íà ïðåáàðóâàœå +These options should be modified only exceptionally +Âîîáè÷àåíî, îâèå îïöèè íå òðåáà äà ñå ìåíóâààò +Activate Debugging Mode (winhttrack.log) +Àêòèâèð༠ãî íà÷èí íà debug (winhttrack.log) +Rewrite links: internal / external + +Flow control +Flow êîíòðîëà +Limits +Îãðàíè÷óâàœà +Identity +Èäåíòèôèêàöè¼à +HTML footer +HTML ôóòåð +N# connections +Áðî¼ íà êîíåêöèè +Abandon host if error +Íàïóøòè ãî host-îò âî ñëó÷༠íà ãðåøêà +Minimum transfer rate (B/s) +Ìèíèìàëíà áðçèíà íà òðàíñôåð (áà¼òè/ñåêóíäà) +Abandon host if too slow +Íàïóøòè ãî host-îò àêî å ïðåìíîãó áàâåí +Configure +Êîíôèãóðèð༠+Use proxy for ftp transfers +Êîðèñòè proxy çà ftp òðàíñôåðè +TimeOut(s) +Òà¼ì àóò(è) +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Retry +Size limit +Îãðàíè÷óâàœå íà ãîëåìèíàòà +Max size of any HTML file (B) +Ìàêñèìàëíà ãîëåìèíà íà áèëî êî¼à HTML äàòîòåêà (B) +Max size of any non-HTML file +Ìàêñèìàëíà ãîëåìèíà íà áèëî êî¼à íå-HTML äàòîòåêà +Max site size +Ìàêñèìàëíà ãîëåìèíà íà ñà¼òîò +Max time +Ìàêñèìóì âðåìå +Save prefs +Çà÷óâ༠ãè ïðåôåðåíöèèòå +Max transfer rate +Ìàêñèìàëíà áðçèíà íà òðàíñôåð +Follow robots.txt +Ñëåäè ãè ïðàâèëàòà îä robots.txt +No external pages +Áåç íàäâîðåøíè ñòðàíèöè +Do not purge old files +Íå ãè áðèøè ñòàðèòå äàòîòåêè +Accept cookies +Ïðèôàòè êîëà÷èœà (cookies) +Check document type +Ïðîâåðè ãî òèïîò íà äîêóìåíòîò +Parse java files +Àíàëèçèð༠ãè Java àïëåòèòå +Store ALL files in cache +Ñìåñòè ãè ÑÈÒÅ äàòîòåêè âî êåøîò +Tolerant requests (for servers) +Òîëåðàíòè ìîëáè (çà ñåðâåðè) +Update hack (limit re-transfers) +Update hack (îãðàíè÷è ãè ïîâòîðíèòå òðàíñôåðè) +Force old HTTP/1.0 requests (no 1.1) +Èñêîðèñòè ãè ñòàðèòå HTTP/1.0 ìîëáè (íå 1.1) +Max connections / seconds +Ìàêñèìàëíè êîíåêöèè /ñåêóíäè +Maximum number of links +Ìàêñèìàëåí áðî¼ íà ëèíêîâè +Pause after downloading.. +Íàïðàâè ïàóçà ïî ñèìíóâàœåòî... +Hide passwords +Ñîêðè¼ ãè ëîçèíêèòå +Hide query strings +Ñîêðè¼ ãè query ñòðèíãîâèòå +Links +Ëèíêîâè +Build +Ñòðóêòóðà +Experts Only +Ñàìî çà åêñïåðòè +Flow Control +Flow êîíòðîëà +Limits +Îãðàíè÷óâàœà +Browser ID +Èäåíòèôèêàöè¼à íà ïðåáàðóâà÷îò +Scan Rules +Ôèëòðè +Spider +Spider +Log, Index, Cache +Log, èíäåêñ, êåø +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Äàëè íàâèñòèíà ñàêàòå äà ãî èñêëó÷èòå WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Íå ñå ïîâðçóâ༠íà ïðîâà¼äåðîò (êîíåêöè¼àòà âåå å âîñïîñòàâåíà) +Do not use remote access connection +Íå êîðèñòè remote access êîíåêöè¼à +Schedule the mirroring operation +Ïðîãðàìèð༠¼à êîïè¼àòà íà ñà¼òîò +Quit WinHTTrack Website Copier +Èñêëó÷è ñå îä WinHTTrack Website Copier +Back to starting page +Íàçàä äî ñòàðòíàòà ñòðàíèöà +Click to start! +Êëèêíè çà ñòàðò! +No saved password for this connection! +Íåìà ñíèìåíè ëîçèíêè çà îâàà êîíåêöè¼à! +Can not get remote connection settings +Íå ìîæå äà ñå äîáè¼àò remote ñåòèíçè çà êîíåêöè¼àòà +Select a connection provider +Ñåëåêòèð༠ïðîâà¼äåð çà ïîâðçóâàœå +Start +Ñòàðò +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Âå ìîëèìå ïîäåñåòå ãè ïàðàìåòðèòå çà êîíåêöè¼àòà äîêîëêó å ïîòðåáíî,\nïîòîà ñòèñíåòå ÄÎÁÐÎ çà ïî÷íóâàœå íà êîïèðàœåòî íà ñà¼òîò +Save settings only, do not launch download now. +Çà÷óâ༠ãè ñàìî ñåòèíçèòå, íå ïî÷íóâ༠ñî ñèìíóâàœå ñåãà. +On hold +On hold +Transfer scheduled for: (hh/mm/ss) +Òðàíñôåðîò å çàêàæàí çà: (hh\mm\ss) +Start +Ñòàðò +Connect to provider (RAS) +Ïîâðçè ñå ñî ïðîâà¼äåðîò (RAS) +Connect to this provider +Ïîâðçè ñå íà îâî¼ ïðîâà¼äåð +Disconnect when finished +Äèñêîíåêòèð༠ñå êîãà å çàâðøè +Disconnect modem on completion +Äèñêîíåêòèð༠ãî ìîäåìîò íà êð༠+\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\Âå ìîëèìå èçâåñòåòå íå çà áèëî êàêâà ãðåøêà èëè ïðîáëåì)\r\n\r\nDevelopment:\r\nÈíòåðôå¼ñ (Windows):Xavier Roche\r\nSpider:Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche è äðóãè\r\nÌÍÎÃÓ ÁËÀÃÎÄÀÐÍÎÑÒ çà ìàêåäîíñêèîò ïðåâîä íà:\r\nÀëåêñàíäàð Ñàâè (aleks@macedonia.eu.org) +About WinHTTrack Website Copier +Çà WinHTTrack Website Copier +Please visit our Web page +Âå ìîëèìå ïîñåòåòå ¼à íàøàòà Âåá ñòðàíèöà +Wizard query +Wizard query +Your answer: +Âàøèîò îäãîâîð: +Link detected.. +Ïðîíà¼äåí å ëèíê... +Choose a rule +Èçáåðè ïðàâèëî +Ignore this link +Èãíîðèð༠ãî îâî¼ ëèíê +Ignore directory +Èãíîðèð༠ãî äèðåêòîðèóìîò +Ignore domain +Èãíîðèð༠ãî äîìåíîò +Catch this page only +Ôàòè ¼à ñàìî îâàà ñòðàíèöà +Mirror site +Êîïè¼à íà ñà¼òîò +Mirror domain +Êîïè¼à íà äîìåíîò +Ignore all +Èãíîðèð༠ñå +Wizard query +Wizard query +NO +ÍÅ +File +Äàòîòåêà +Options +Îïöèè +Log +Log +Window +Ïðîçîðåö +Help +Ïîìîø +Pause transfer +Ïàóçà íà òðàíñôåðîò +Exit +Èçëåç +Modify options +Ìîäèôèöèð༠ãè îïöèèòå +View log +Âèäè ãî log-îò +View error log +Âèäè ãî log-îò çà ãðåøêè +View file transfers +Âèäè ãî òðàíñôåðîò íà ïîäàòîöè +Hide +Ñîêðè¼ +About WinHTTrack Website Copier +Çà WinHTTrack Website Copier +Check program updates... +Ïðîâåðè äàëè èìà update çà ïðîãðàìàòà... +&Toolbar +Toolbar +&Status Bar +Statusbar +S&plit +Ðàçäåëè +File +Äàòîòåêà +Preferences +Ïîäåñóâàœà +Mirror +Êîïè¼à íà ñà¼òîò +Log +Log +Window +Ïðîçîðåö +Help +Ïîìîø +Exit +Èçëåç +Load default options +Ïîâèê༠ãè default îïöèèòå +Save default options +Çà÷óâ༠ãè default îïöèèòå +Reset to default options +Ðåñåòèð༠äî default îïöèèòå +Load options... +Ïîâèê༠ãè îïöèèòå... +Save options as... +Çà÷óâ༠ãè îïöèèòå êàêî... +Language preference... +Ïîäåñóâàœà çà ¼àçèêîò... +Contents... +Ñîäðæèíà +About WinHTTrack... +Çà WinHTTrack... +New project\tCtrl+N +Íîâ ïðîåêò\tCtrl+N +&Open...\tCtrl+O +&Îòâîðè...\tCtrl+O +&Save\tCtrl+S +&Ñíèìè\tCtrl+S +Save &As... +Ñíèìè &êàêî... +&Delete... +&Èçáðèøè... +&Browse sites... +&Ñà¼òîâè çà ïðåáàðóâàœå... +User-defined structure +Ñòðóêòóðà äåôèíèðàíà îä êîðèñíèêîò +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tÈìå íà äàòîòåêàòà áåç åêñòåíçè¼àòà (ïðèìåð:image)\r\n%N\tÈìå íà äàòîòåêàòà ñî åêñòåíçè¼à (ïðèìåð: image.gif)\r\n%t\tÑàìî åêñòåíçè¼à (ïðèìåð: gif)\r\n%p\tPath [áåç çàâðøåòîêîò/] (ïðèìåð: /someimages)\r\n%h\tÈìå íà õîñòîò (ïðèìåð: www.someweb.com)\r\n%M\tMD5 URL (128 áèòà, 32 ascii áà¼òè)\r\n%Q\tMD5 query ñòðèíã (128 áèòà, 32 ascii áà¼òè)\r\n%q\tMD5 ìàë query ñòðèíã (16 áèòà, 4 ascii áà¼òè)\r\n\r\n%s?\tÊðàòêî èìå (ïðèìåð: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Ïðèìåð:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Proxy ñåòèíçè +Proxy address: +Proxy àäðåñà: +Proxy port: +Proxy ïîðòà: +Authentication (only if needed) +Èäåíòèôèêàöè¼à (ñàìî àêî å ïîòðåáíà) +Login +Login +Password +Ëîçèíêà +Enter proxy address here +Âíåñè ¼à proxy àäðåñàòà îâäå +Enter proxy port here +Âíåñè ¼à proxy ïîðòàòà îâäå +Enter proxy login +Âíåñè ãî proxy ëîãèíîò +Enter proxy password +Âíåñè ¼à proxy ëîçèíêàòà +Enter project name here +Âíåñè ãî èìåòî íà ïðåêòîò îâäå +Enter saving path here +Âíåñè ãî path-îò çà çà÷óâóâàœå îâäå +Select existing project to update +Îäáåðåòå ïîñòîå÷êè ïðîåêò çà update +Click here to select path +Êëèêíè îâäå çà èçáèðàœå íà path +HTTrack Project Wizard... +HTTrack Project Wizard... +New project name: +Èìå íà íîâèîò ïðîåêò: +Existing project name: +Èìå íà ïîñòîå÷êèîò ïðîåêò: +Project name: +Èìå íà ïðîåêòîò: +Base path: +Îñíîâåí path: +C:\\My Web Sites +C:\\Ìîè Âåá Ñà¼òîâè +Type a new project name, \r\nor select existing project to update/resume +Âíåñåòå íîâî èìå íà ïðîåêòîò, \r\nèëè îäáåðåòå ïîñòîå÷êè ïðîåêò çà update/resume +New project +Íîâ ïðîåêò +Insert URL +Âíåñåòå URL +URL: +URL: +Authentication (only if needed) +Èäåíòèôèêàöè¼à (ñàìî àêî å ïîòðåáíà) +Login +Login +Password +Ëîçèíêà +Forms or complex links: +Ôîðìè èëè êîìïëåêñíè ëèíêîâè: +Capture URL... +Ôàòè URL... +Enter URL address(es) here +Âíåñè URL àäðåñè îâäå +Enter site login +Âíåñè ãî ëîãèíîò íà ñà¼òîò +Enter site password +Âíåñè ¼à ëîçèíêàòà íà ñà¼òîò +Use this capture tool for links that can only be accessed through forms or javascript code +Êîðèñòè ¼à îâàà capture àëàòêà çà ëèíêîâè êîè ìîæàò äà áèäàò ïðèñòàïåíè ñàìî ïðåêó ôîðìè èëè javascript êîäîâè +Choose language according to preference +Èçáåðè ¼àçèê +Catch URL! +Ôàòè ãî URL-to! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Âå ìîëèìå ïîäåñåòå ãè temporary browser proxy ñåòèíçèòå íà ñëåäíèâå âðåäíîñòè (Copy/Paste Proxy àäðåñàòà è ïîðòàòà).\nÏîòîà êëèêíåòå íà êîï÷åòî 'submit' âî âàøàòà ñòðàíèöà âî ïðåáàðóâà÷îò, èëè ïàê êëèêíåòå íà ëèíêîò êî¼ ñàêàòå äà ãî ôàòèòå. +This will send the desired link from your browser to WinHTTrack. +Îâà å ãî èñïðàòè ïîñàêóâàíèîò ëèíê îä âàøèîò ïðåáàðóâà÷ äî WinHTTrack. +ABORT +ÎÒÊÀÆÈ +Copy/Paste the temporary proxy parameters here +Îâäå íàïðàâåòå Copy/Paste íà temporary ïàðàìåòðèòå +Cancel +Îòêàæè +Unable to find Help files! +Íå ìîæå äà ñå íà¼äàò Help äàòîòåêèòå! +Unable to save parameters! +Íå ìîæå äà ñå ñíèìàò ïàðàìåòðèòå! +Please drag only one folder at a time +Âå ìîëèìå âëå÷åòå ñàìî åäåí ôîëäåð +Please drag only folders, not files +Âå ìîëèìå âëå÷åòå ñàìî ôîëäåðè, íå äàòîòåêè +Please drag folders only +Âå ìîëèìå âëå÷åòå ñàìî ôîëäåðè +Select user-defined structure? +Îäáåðè ¼à ñòðóêòóðàòà äåôèíèðàíà îä êîðèñíèêîò? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Âå ìîëèìå îñèãóðåòå ñå äåêà ñòðèíãîò äåôèíèðàí îä êîðèñíèêîò å òî÷åí,\nèíàêó èìèœàòà íà äàòîòåêèòå ìîæàò äà áèäàò íåòî÷íè! +Do you really want to use a user-defined structure? +Äàëè íàâèñòèíà ñàêàòå äà êîðèñòèòå ñòðóêòóðà äåôèíèðàíà îä êîðèñíèêîò? +Too manu URLs, cannot handle so many links!! +Ïðåìíîãó URL, íå ìîæå äà ñå ðàáîòè ñî òîëêó ìíîãó ëèíêîâè!! +Not enough memory, fatal internal error.. +Íåìà äîâîëíî ìåìîðè¼à, ôàòàëíà âíàòðåøíà ãðåøêà... +Unknown operation! +Íåïîçíàòà îïåðàöè¼à! +Add this URL?\r\n +Äîäàäè ãî îâî¼ URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Ïðåäóïðåäóâàœå:ãëàâíèîò ïðîöåñ ñåóøòå íå îäãîâàðà, íå ìîæå äà ñå äîäàäàò URL... +Type/MIME associations +Ñîîäâåòåí òèï íà äàòîòåêè (Type/MIME) +File types: +Òèïîâè íà äàòîòåêè: +MIME identity: +MIME èäåíòèòåò: +Select or modify your file type(s) here +Îäáåðè ãè èëè èçìåíè ãè òèïîâèòå íà äàòîòåêè îâäå +Select or modify your MIME type(s) here +Îäáåðè ãè èëè èçìåíè ãè MIME òèïîâèòå îâäå +Go up +Îäè íàãîðå +Go down +Îäè íàäîëó +File download information +Èíôîðìàöèè çà ñèìíóâàœåòî íà äàòîòåêèòå +Freeze Window +Çàìðçíè ãî ïðîçîðåöîò +More information: +Ïîâåå èíôîðìàöèè: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Äîáðîäî¼äîâòå âî WinHTTrack Webiste Copier!\n\nÂå ìîëèìå êëèêíåòå íà êîï÷åòî 'ÏÎÍÀÒÀÌÓ' çà äà\n\n- ïî÷íåòå íîâ ïðîåêò\n- èëè ïðîäîëæèòå ñî ïàðöè¼àëíî ñèìíóâàœå +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Èìèœà íà äàòîòåêè ñî åêñòåíçè¼à:\nÈìèœà íà äàòîòåêè êîè ñîäðæàò:\nÎâà èìå íà äàòîòåêàòà:\nÈìèœà íà ôîëäåðè êîè ñîäðæàò:\nÈìå íà îâî¼ ôîëäåð:\nËèíêîâè íà îâî¼ äîìåí:\nËèíîâè íà äîìåíè êîè ñîäðæàò:\nËèíêîâè îä îâî¼ õîñò:\nËèíêîâè êîè ñîäðæàò:\nÎâî¼ ëèíê:\nÑÈÒÅ ËÈÍÊÎÂÈ +Show all\nHide debug\nHide infos\nHide debug and infos +Ïîêàæè ãè ñèòå\nÑîêðè¼ debug\nÑîêðè¼ ãè èíôîðìàöèèòå\nÑîêðè¼ debug è èíôîðìàöèè +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Ñàìî ñêåíèðà¼\nÑìåñòè ãè HTML äàòîòåêèòå\nÑìåñòè ãè íå-HTML äàòîòåêèòå\nÑìåñòè ãè ñèòå äàòîòåêè (default)æíÑìåñòè ãè ïðâèí HTML äàòîòåêèòå +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Îñòàíè âî èñòèîò äèðåêòîðèóì\nÌîæå äà îäè íàäîëó (default)\nÌîæå äà îäè íàãîðå\nÌîæå äà îäè è íàãîðå è íàäîëó +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Îñòàíè íà èñòàòà àäðåñà (default)\nÎñòàíè íà èñòèîò äîìåí\nÎñòàíè íà èñòèîò top level äîìåí\nÎäè íàñåêàäå ïî âåá +Never\nIf unknown (except /)\nIf unknown +Íèêîãàø\níåïîçíàòî (îñâåí/)\níåïîçíàòî +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +áåç robots.txt ïðàâèëàòà\nrobots.txt îñâåí wizard\nñëåäè ãè robots.txt ïðàâèëàòà +normal\nextended\ndebug +íîðìàëíî\nïðîøèðåíî\ndebug +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Ñèìíè âåá ñà¼òîâè\nÑèìíè âåá ñà¼òîâè + ïðàøàœà\nÇåìè ïîñåáíè äàòîòåêè\nÑèìíè ãè ñèòå ñà¼òîâè âî ñòðàíèöè (ïîâååêðàòíà êîïè¼à)\nÒåñòèð༠ãè ëèíêîâèòå âî ñòðàíèöèòå (bookmark òåñò)\n*Ïðîäîëæè ãî ïðåêèíàòîòî ñèìíóâàœå\n*Íàïðàâè update na ïîñòîå÷êîòî ñèìíóâàœåEnglish +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL + +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Magyar.txt b/lang/Magyar.txt new file mode 100755 index 0000000..86ac107 --- /dev/null +++ b/lang/Magyar.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Magyar +LANGUAGE_FILE +Magyar +LANGUAGE_ISO +hu +LANGUAGE_AUTHOR +Jozsef Tamas Herczeg (hdodi at freemail.hu) \r\n +LANGUAGE_CHARSET +ISO-8859-2 +OK +OK +Cancel +Mégse +Exit +Kilépés +Close +Bezárás +Cancel changes +Törli a módosításokat +Click to confirm +Kattintson rá a megerõsítéshez +Click to get help! +Kattintson rá segítségért! +Click to return to previous screen +Az elõzõ képernyõhöz visz vissza +Click to go to next screen +A következõ képernyõre visz +Hide password +Jelszó titkosítása +Save project +Projekt mentése +Close current project? +Bezárja az aktuális projektet? +Delete this project? +Törli ezt a projektet? +Delete empty project %s? +Törli a(z) %s üres projektet? +Action not yet implemented +A mûvelet még nem használható +Error deleting this project +Hiba a projekt törlésekor +Select a rule for the filter +Jelöljön ki szabályt a szûrõhöz +Enter keywords for the filter +Itt írja be a szûrõ kulcsszavait +Cancel +Mégse +Add this rule +Hozzáadja ezt a szabályt +Please enter one or several keyword(s) for the rule +Írjon be egy vagy több kulcsszót a szabályhoz +Add Scan Rule +Szûrõ hozzáadása +Criterion +Válasszon szabályt +String +Kulcsszó beírása +Add +Hozzáadás +Scan Rules +Szûrõk +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Karakterhelyettesítõk használatával kizárhat vagy elfogadhat URL-eket vagy hivatkozásokat.\nTegyen szóközt a szûrõk közé.\n\nPéldául: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Hivatkozás kizárása +Include link(s) +Hivatkozás elfogadása +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tipp: Ha a webrõl minden gif fájlt fogadni akar, használjon ilyet +www.someweb.com/*.gif. \n(+*.gif / -*.gif elfogad/letilt MINDEN gifet MINDEN webhelyen) +Save prefs +Beállítások mentése +Matching links will be excluded: +A megegyezõ hivatkozások kizárásra kerülnek: +Matching links will be included: +A megegyezõ hivatkozásokat tartalmazni fogja: +Example: +Például: +gif\r\nWill match all GIF files +gif\r\nKiszûr minden GIF fájlt +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nMegkeres minden olyan fájlt, ami tartalmazza a 'blue' szöveget, azaz 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nKiszûri a 'bigfile.mov' fájlt, viszont a 'bigfile2.mov' fájlt nem +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nMegkeres minden olyan mappanév hivatkozást, ami tartalmazza a 'cgi' szöveget, azaz /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nMegkeres minden olyan mappanév hivatkozást, ami tartalmazza a teljes 'cgi-bin' szöveget (de a cgi-bin-2 már nem) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nMegkeres minden olyan hivatkozást, ami tartalmazza a www.someweb.com, private.someweb.com stb. szöveget +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nMegkeres minden olyan hivatkozást, ami tartalmazza a www.someweb.com, www.someweb.edu, private.someweb.otherweb.com stb. mappanév szöveget. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nMegkeres minden olyan hivatkozást, ami tartalmazza a teljes 'www.someweb.com' szöveget (de nem olyan hivatkozásokat, mint a private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nMegkeres minden olyan hivatkozást, ami tartalmazza a www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html stb. szövegeket. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nCsak a www.test.com/test/someweb.html fájlt keresi meg. Jegyezze meg, hogy be kell írnia a teljes útvonalat (URL + elérési út) +All links will match +Minden hivatkozást egyeztet +Add exclusion filter +Kizárás szûrõ hozzáadása +Add inclusion filter +Belefoglalás szûrõ hozzáadása +Existing filters +Létezõ szûrõk +Cancel changes +Törli a módosításokat +Save current preferences as default values +Az aktuális beállítások mentése alapértelmezett értékekként +Click to confirm +Nyomja meg a megerõsítéshez +No log files in %s! +%s nem tartalmaz naplófájlt! +No 'index.html' file in %s! +%s nem tartalmaz index.html fájlt +Click to quit WinHTTrack Website Copier +Kattintson rá a WinHTTrack webhely másolóból való kilépéshez +View log files +Naplófájlok megjelenítése +Browse HTML start page +HTML kezdõlap böngészése +End of mirror +Tükrözés vége +View log files +Naplófájlok megtekintése +Browse Mirrored Website +Tükrözött weblap böngészõ +New project... +Új projekt... +View error and warning reports +Hiba- és figyelmeztetési jelentések megtekintése +View report +Jelentés megtekintése +Close the log file window +Naplófájl ablakának bezárása +Info type: +Adat típusa: +Errors +Hibák +Infos +Adatok +Find +Keresés +Find a word +Szó keresése +Info log file +Információs naplófájl +Warning/Errors log file +Figyelmeztetés/Hiba naplófájl +Unable to initialize the OLE system +Az OLE rendszer nem inicializálható +WinHTTrack could not find any interrupted download file cache in the specified folder! +A WinHTTrack nem talált megszakadt letöltési fájl gyorsítótárat a megadott mappában! +Could not connect to provider +Nem lehet csatlakozni a szolgáltatóhoz +receive +fogadás +request +kérés +connect +csatlakozás +search +keresés +ready +kész +error +hiba +Receiving files.. +Fájlok fogadása +Parsing HTML file.. +HTML fájl elemzése +Purging files.. +Fájlok kiürítése +Loading cache in progress.. +A gyorsítótár betöltése folyamatban.. +Parsing HTML file (testing links).. +HTML fájl elemzése (hivatkozások tesztelése) +Pause - Toggle [Mirror]/[Pause download] to resume operation +Szünet - Kattintson a [Tükrözés]/[Letöltés szüneteltetése] parancsra a mûvelet folytatásához +Finishing pending transfers - Select [Cancel] to stop now! +Függõben lévõ átvitelek befejezése - Leállítás a [Mégse] gombbal! +scanning +vizsgálat +Waiting for scheduled time.. +Várakozás az ütemezett idõpontra +Connecting to provider +Csatlakozás a szolgáltatóhoz +[%d seconds] to go before start of operation +[%d másodperc] van hátra a mûvelet megkezdéséhez +Site mirroring in progress [%s, %s bytes] +A tükrözés folyamatban [%s, %s bájt] +Site mirroring finished! +A webhely tükrözése befejezõdött +A problem occured during the mirroring operation\n +A tükrözés közben hiba történt\n +\nDuring:\n +\nKözben:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nNézze meg a naplófájlt, ha szükséges.\n\nKattintson a BEFEJEZÉS gombra a WinHTTrack webhely másolóból való kilépéshez.\n\nKöszönet a WinHTTrack használatáért! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +A tükrözés befejezõdött.\nKattintson az OK gombra a WinHTTrack bezárásához.\nNézze meg a naplófájl(oka)t, ha szükséges, hogy meggyõzõdjön róla, minden rendben van-e.\n\nKöszönet a WinHTTrack használatáért! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * TÜKRÖZÉS MEGSZAKÍTVA! * *\r\nA frissítéshez az aktuális ideiglenes gyorsítótárra van szükség, és csak az imént megszakított mûvelettel letöltött adatokat tartalmazza.\r\nA régi gyorsítótár bizonyára több információt tartalmaz; ha nem akarja elveszíteni azt az információt, vissza kell állítania és törölnie a jelenlegi gyorsítótárat.\r\n[Megjegyzés: Ez könnyen elvégezhetõ itt a hts-cache/new fájlok* törlésével.]\r\n\r\nÚgy gondolja, hogy a régi gyorsítótár teljesebb információt tartalmazhat, és vissza kívánja állítani? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * TÜKRÖZÉSI HIBA! * *\r\nA HTTrack felismerte, hogy az aktuális tükrözés üres. Ha frissítés volt, vissza lett állítva az elõzõ tükrözés.\r\nOk: az elsõ oldal(ak) vagy nem találhatók, vagy csatlakozási probléma lépett föl.\r\n=> Nézze meg, hogy a webhely létezik-e még, és/vagy ellenõrizze a proxy beállításokat! <= +\n\nTip: Click [View log file] to see warning or error messages +\nTipp: Kattintson a [Naplófájl megjelenítése] menüpontra a figyelmeztetések vagy hibaüzenetek megtekintéséhez +Error deleting a hts-cache/new.* file, please do it manually +Hiba a hts-cache/new.* fájl törléskor, végezze el kézzel +Do you really want to quit WinHTTrack Website Copier? +Valóban ki kíván lépni a WinHTTrack webhely másolóból? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Tükrözés mód -\n\nÍrja be a cím(ek)et az URL mezõbe +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Interaktív Varázsló mód (kérdések) -\n\nÍrja be a cím(ek)et az URL mezõbe +- File Download Mode -\n\nEnter file address(es) in URL box +- Fájl letöltés mód -\n\nÍrja be a fájl(ok) címe(i)t az URL mezõbe +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Hivatkozás tesztelési mód -\n\nÍrja be a tesztelendõ hivatkozás(oka)t tartalmazó oldal(ak) címe(i)t az URL mezõbe +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Frissítés mód -\n\nEllenõrizze a cím(ek)et az URL mezõben, s szükség esetén a paramétereket, majd kattintson a 'TOVÁBB' gombra. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Folytatás mód (Megszakadt mûvelet) -\n\nEllenõrizze a címe(ke)t az URL mezõben, s szükség esetén a paramétereket, majd kattintson a 'TOVÁBB' gombra. +Log files Path +Naplófájlok útvonala +Path +Útvonal +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Hivatkozásjegyzék mód -\n\nÍrja be az URL mezõbe azon oldal(ak) címe(i)t, melyek tükrözendõ hivatkozásokat tartalmaznak +New project / Import? +Új projekt / importálás? +Choose criterion +Válassza ki a feltételt +Maximum link scanning depth +Maximális hivatkozási mélység +Enter address(es) here +Ide írja be a címe(ke)t +Define additional filtering rules +Kiegészítõ szûrési szabályok meghatározása +Proxy Name (if needed) +Proxy neve (ha szükséges) +Proxy Port +Proxy port +Define proxy settings +Proxy beállításainak meghatározása +Use standard HTTP proxy as FTP proxy +A szabványos HTTP proxy FTP proxyként való használata +Path +Útvonal +Select Path +Útvonal kijelölése +Path +Útvonal +Select Path +Útvonal kijelölése +Quit WinHTTrack Website Copier +Kilépés a WinHTTrack webhely másolóból +About WinHTTrack +WinHTTrack névjegye +Save current preferences as default values +Aktuális beállítások mentése alapértelemezett értékekként +Click to continue +Nyomja meg a folytatáshoz +Click to define options +Nyomja meg az opciók meghatározásához +Click to add a URL +Nyomja meg URL hozzáadásához +Load URL(s) from text file +URL(-ek) betöltése szövegfájlból +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack beállítások (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Címlista szövegfájl (*.txt)|*.txt|| +File not found! +A fájl nem található! +Do you really want to change the project name/path? +Valóban módosítani kívánja a projekt nevét/útvonalát? +Load user-default options? +Betölti a felhasználó-alapértelmezett opciókat? +Save user-default options? +Menti a felhasználó-alapértelmezett opciókat? +Reset all default options? +Visszaállít minden alapértelmezett opciót? +Welcome to WinHTTrack! +Üdvözli a WinHTTrack webhely másoló! +Action: +Mûvelet: +Max Depth +Max. mélység: +Maximum external depth: +Maximális külsõ mélység: +Filters (refuse/accept links) : +Szûrõk (hivatkozások kizárása/belefoglalása): +Paths +Útvonalak +Save prefs +Beállítások mentése +Define.. +Meghatározás... +Set options.. +Beállítások... +Preferences and mirror options: +Beállítások és tükrözési opciók: +Project name +Projekt neve +Add a URL... +URL hozzáadása... +Web Addresses: (URL) +Webcímek (URL): +Stop WinHTTrack? +Leállítja a programot? +No log files in %s! +A(z) %s nem tartalmaz naplófájlt! +Pause Download? +Szünetelteti a letöltést? +Stop the mirroring operation +Tükrözés leállítása +Minimize to System Tray +Kis méretre zárás a tálcára +Click to skip a link or stop parsing +Nyomja meg hivatkozás kihagyásához vagy az elemzés leállításához +Click to skip a link +Nyomja meg hivatkozás kihagyásához +Bytes saved +Mentett bájt: +Links scanned +Vizsgált hivatkozás: +Time: +Idõ: +Connections: +Csatlakozás: +Running: +Futtatás: +Hide +Elrejtés +Transfer rate +Átviteli sebesség +SKIP +KIHAGY +Information +Információ +Files written: +Írott fájl: +Files updated: +Frissített fájl: +Errors: +Hiba: +In progress: +Folyamatban: +Follow external links +Külsõ hivatkozások követése +Test all links in pages +Az oldal(ak) összes hivatkozásának tesztelése +Try to ferret out all links +Felismer minden hivatkozást +Download HTML files first (faster) +Elõbb a HTML-fájlokat tölti le (gyorsabb) +Choose local site structure +Weblap helyi szerkezetének kiválasztása +Set user-defined structure on disk +Felhasználói meghatározású szerkezet beállítása a lemezen +Use a cache for updates and retries +Gyorsítótár használata a frissítésekhez és próbákhoz +Do not update zero size or user-erased files +Nem frissíti a nulla méretû vagy a felhasználó által törölt fájlokat +Create a Start Page +Kezdõlap létrehozása +Create a word database of all html pages +Az összes HTML oldal szóadatbázisának létrehozása +Create error logging and report files +Hibanapló- és jelentásfájl létrehozása +Generate DOS 8-3 filenames ONLY +CSAK 8-3 formátumú DOS-fájlnév generálása +Generate ISO9660 filenames ONLY for CDROM medias +ISO9660 fájlnevek generálása CSAK CDROM adathordozóhoz +Do not create HTML error pages +Nem hoz létre HTML hibaoldalakat +Select file types to be saved to disk +Jelölje ki a lemezre mentendõ fájltípusokat +Select parsing direction +Jelölje ki az elemzés irányát +Select global parsing direction +Jelölje ki a globális elemzési irányt +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Szabályok alkotása a belsõ (letöltött) hivatkozások és a külsõ (nem letöltött) hivatkozások átírásához +Max simultaneous connections +Egyidejû kapcsolatok max. száma +File timeout +Fájl idõtúllépés +Cancel all links from host if timeout occurs +Minden hivatkozás törlése a kiszolgálóról idõtúllépés esetén +Minimum admissible transfer rate +Minimális engedélyezett átviteli szint +Cancel all links from host if too slow +Minden hivatkozás törlése a kiszolgálóról, ha az túl lassú +Maximum number of retries on non-fatal errors +Próbálkozások maximális száma nem végzetes hiba esetén +Maximum size for any single HTML file +Bármilyen egyszerû HTML fájl maximális mérete +Maximum size for any single non-HTML file +Bármilyen egyszerû nem HTML-fájl maximális mérete +Maximum amount of bytes to retrieve from the Web +A webrõl letöltendõ maximális bájt mennyiség +Make a pause after downloading this amount of bytes +Szüneteltetés ennyi mennyiségû bájt letöltése után +Maximum duration time for the mirroring operation +A tükrözés maximális idõtartama +Maximum transfer rate +Maximális átviteli szint +Maximum connections/seconds (avoid server overload) +Max. csatlakozás/másodperc (a kiszolgáló túlterheltségének csökkentésére) +Maximum number of links that can be tested (not saved!) +A tesztelhetõ hivatkozások max. száma (nincs mentve!) +Browser identity +Böngészõ beazonosítása +Comment to be placed in each HTML file +Mindegyik HTML fájlban elhelyezendõ megjegyzés +Back to starting page +Vissza a kezdõlaphoz +Save current preferences as default values +Aktuális beállítások mentése alapértékekként +Click to continue +Nyomja meg a folytatáshoz +Click to cancel changes +Nyomja meg a módosítások törléséhez +Follow local robots rules on sites +Helyi robotok szabályainak követése a webhelyeken +Links to non-localised external pages will produce error pages +Meghatározatlan helyû külsõ weblapokra mutató hivatkozások hibaoldalakat eredményeznek +Do not erase obsolete files after update +Aktualizálás után nem törli a régi fájlokat +Accept cookies? +Fogadja a sütiket? +Check document type when unknown? +Ellenõrzi a dokumentum típusát, ha ismeretlen? +Parse java applets to retrieve included files that must be downloaded? +Elemzi a Java appleteket a letöltendõ fájlok kikeresésének szempontjából? +Store all files in cache instead of HTML only +Minden fájlt csak a gyorsítótárban tárol a HTML helyett +Log file type (if generated) +Naplófájl típusa (generálás esetén) +Maximum mirroring depth from root address +Tükrözés maximális mélysége a gyökércímtõl +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximum mirroring depth for external/fodbidden addresses (0, that is, none, is the default) +Create a debugging file +Hibakeresõ fájl létrehozása +Use non-standard requests to get round some server bugs +Nem szabványos kérések használata bizonyos kiszolgáló hibák elkerüléséhez +Use old HTTP/1.0 requests (limits engine power!) +Régi HTTP/1.0 kérések használata (korlátozza a motor energiáját!) +Attempt to limit retransfers through several tricks (file size test..) +Ismételt átvitel korlátozása különféle trükkökkel (fájlméret teszt...) +Write external links without login/password +Külsõ hivatkozások felhasználónév/jelszó nélküli írása +Write internal links without query string +Belsõ hivatkozások írása lekérdezési szöveg nélkül +Get non-HTML files related to a link, eg external .ZIP or pictures +Hivatkozáshoz kapcsolódó nem HTML fájlok letöltése, pl. külsõ ZIP vagy képek +Test all links (even forbidden ones) +Minden hivatkozás tesztelése (a tiltottak is) +Try to catch all URLs (even in unknown tags/code) +Minden URL felfogása (ismeretlen tagekben/kódban is) +Get HTML files first! +Elõbb töltse le a HTML-fájlokat! +Structure type (how links are saved) +Szerkezet típusa (a hivatkozások mentésének módja) +Use a cache for updates +Gyorsítótár használata a frissítésekhez +Do not re-download locally erased files +Nem tölti le ismét a helyben törölt fájlokat +Make an index +Mutató készítése +Make a word database +Szóadatbázis létrehozása +Log files +Naplófájlok +DOS names (8+3) +DOS nevek (8+3) +ISO9660 names (CDROM) +ISO9660 nevek (CDROM) +No error pages +Nincs hibaoldal +Primary Scan Rule +Fõ keresési szabály +Travel mode +Közlekedési mód +Global travel mode +Globális közlekedési mód +These options should be modified only exceptionally +Csak kivételes esetben módosítsa ezeket az opciókat +Activate Debugging Mode (winhttrack.log) +Hibakeresõ mód aktiválása (winhttrack.log) +Rewrite links: internal / external +Hivatkozások átírása: belsõ / külsõ +Flow control +Forgalom szabályozás +Limits +Korlátozások +Identity +Azonosítás +HTML footer +HTML lábjegyzet +N# connections +Csatlakozások száma +Abandon host if error +Hiba esetén leválik a kiszolgálóról +Minimum transfer rate (B/s) +Minimális átviteli sebesség (B/s) +Abandon host if too slow +Leválik a kiszolgálóról, ha túl lassú +Configure +Beállítás +Use proxy for ftp transfers +Proxy használata FTP átvitelekhez +TimeOut(s) +Idõtúllépés +Persistent connections (Keep-Alive) +Folytonos kapcsolatok (Életben tartás) +Reduce connection time and type lookup time using persistent connections +A csatlakozási idõ és típus keresési idõ csökkentése folytonos kapcsolatokkal +Retries +Próbák száma +Size limit +Mérethatár +Max size of any HTML file (B) +Bármilyen HTML fájl (B) max. mérete +Max size of any non-HTML file +Bármilyen nem HTML-fájl max. mérete +Max site size +A webhely max. mérete +Max time +Max. idõtartam +Save prefs +Beállítások mentése +Max transfer rate +Max. átviteli sebesség +Follow robots.txt +Robots.txt követése +No external pages +Nincs külsõ oldal +Do not purge old files +Nem üríti ki a régi fájlokat +Accept cookies +Sütik fogadása +Check document type +Dokumentum típus ellenõrzése +Parse java files +Java fájlok elemzése +Store ALL files in cache +MINDEN fájl tárolása a gyorsítótárban +Tolerant requests (for servers) +Türelmes kérések (kiszolgálók részére) +Update hack (limit re-transfers) +Ismételt átvitelek korlátozása +Force old HTTP/1.0 requests (no 1.1) +Régi HTTP/1.0 (1.1 nem) kérések alkalmazása +Max connections / seconds +Max. csatlakozás/másodperc +Maximum number of links +Hivatkozások max. száma +Pause after downloading.. +Szünet letöltés után +Hide passwords +Jelszavak elrejtése +Hide query strings +Lekérdezési szövegek elrejtése +Links +Hivatkozások +Build +Szerkezet +Experts Only +Csak szakembereknek +Flow Control +Forgalom szabályozás +Limits +Korlátozások +Browser ID +Böngészõ beazonosítás +Scan Rules +Keresési szabályok +Spider +Indexelés +Log, Index, Cache +Napló, mutató, gyorsítótár +Proxy +Proxy +MIME Types +MIME-típusok +Do you really want to quit WinHTTrack Website Copier? +Biztos, hogy bezárja a programot? +Do not connect to a provider (already connected) +nem csatlakozik szolgáltatóhoz (már csatlakozott) +Do not use remote access connection +Nem használ távoli elérésû kapcsolatot +Schedule the mirroring operation +Tükrözés ütemezése +Quit WinHTTrack Website Copier +Kilépés a WinHTTrack webhely másolóból +Back to starting page +Vissza a kezdõlaphoz +Click to start! +Nyomja meg az indításhoz! +No saved password for this connection! +Nem mentette el a jelszót ehhez a kapcsolathoz! +Can not get remote connection settings +A távoli kapcsolat beállításai nem hozzáférhetõk +Select a connection provider +Válassza ki a szolgáltatót +Start +Indítás +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Szükség esetén állítsa be a kapcsolat tulajdonságait,\nmajd nyomja meg a BEFEJEZÉS gombot a tükrözés megkezdéséhez. +Save settings only, do not launch download now. +Csak a beállításokat menti, nem indítja a letöltést. +On hold +Várakozás +Transfer scheduled for: (hh/mm/ss) +Átvitel ütemezése: (óó/pp/mm) +Start +Indítás +Connect to provider (RAS) +Csatlakozás a szolgáltatóhoz +Connect to this provider +Csatlakozás ehhez a szolgáltatóhoz +Disconnect when finished +Vonalbontás, ha kész +Disconnect modem on completion +Modem leválasztása, ha kész +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Kérjük, jelezzen nekünk bármilyen hibát vagy problémát)\r\n\r\nFejlesztés:\r\nKezelõfelület (Windows): Xavier Roche\r\nIndexelés: Xavier Roche\r\nJavaElemzõOsztályok: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nEZER KÖSZÖNET a magyar fordításért:\r\nHerczeg József Tamásnak (hdodi@freemail.hu) +About WinHTTrack Website Copier +WinHTTrack webhely másoló névjegye +Please visit our Web page +Keresse fel weblapunkat! +Wizard query +Varázsló kérdése +Your answer: +Az ön válasza: +Link detected.. +Hivatkozás található.. +Choose a rule +Válasszon ki egy szabályt +Ignore this link +Kihagyja ezt a hivatkozást +Ignore directory +Mappa kihagyása +Ignore domain +Tartomány kihagyása +Catch this page only +Csak ezt az oldalt tölti le +Mirror site +Webhely tükrözése +Mirror domain +Tartomány tükrözése +Ignore all +Mindet kihagyja +Wizard query +Varázsló kérdése +NO +NEM +File +Fájl +Options +Beállítások +Log +Napló +Window +Ablak +Help +Súgó +Pause transfer +Átvitel szüneteltetése +Exit +Kilépés +Modify options +Opciók módosítása +View log +Napló megjelenítése +View error log +Hibanapló megjelenítése +View file transfers +Fájlátvitelek megjelenítése +Hide +Elrejtés +About WinHTTrack Website Copier +Névjegy +Check program updates... +Új verzió keresése... +&Toolbar +&Eszköztár +&Status Bar +Állapot&sor +S&plit +&Felosztás +File +Fájl +Preferences +Beállítások +Mirror +Tükrözés +Log +Napló +Window +Ablak +Help +Súgó +Exit +Kilépés +Load default options +Alapértelmezett opciók betöltése +Save default options +Alapértelmezett opciók visszaállítása +Reset to default options +Alaértelmezett opciók visszaállítása +Load options... +Opciók betöltése... +Save options as... +Opciók mentése másként... +Language preference... +Nyelv átváltása... +Contents... +Tartalomjegyzék... +About WinHTTrack... +WinHTTrack névjegye... +New project\tCtrl+N +Új projekt\tCtrl+N +&Open...\tCtrl+O +M&egnyitás...\tCtrl+O +&Save\tCtrl+S +&Mentés\tCtrl+S +Save &As... +Menté&s másként... +&Delete... +&Törlés... +&Browse sites... +Webhelyek &böngészése... +User-defined structure +Felhasználói meghatározású szerkezet +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tFájlnév fájltípus nélkül (kiv: kép)\r\n%N\tFájlnév fájltípussal (kiv: kep.gif)\r\n%t\tCsak fájltípus (kiv: gif)\r\n%p\tÚtvonal [vég nélkül /] (kiv: /nehanykep)\r\n%h\tKiszolgáló neve (kiv: www.someweb.com)\r\n%M\tMD5 URL (128 bit, 32 ascii bájt)\r\n%Q\tMD5 keresendõ szöveg (128 bit, 32 ascii bájt)\r\n%q\tMD5 kis keresési szöveg (16 bit, 4 ascii bájt)\r\n\r\n%s?\tRövid név (kiv: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Példa:\t%h%p/%n%q.%t\n->\t\tc:\\tukor\\www.someweb.com\\nehanykep\\kep.gif +Proxy settings +Proxy beállítások +Proxy address: +Proxy címe: +Proxy port: +Proxy port: +Authentication (only if needed) +Hitelesítés (csakszükség esetén) +Login +Felhasználó +Password +Jelszó +Enter proxy address here +Ide írja be a proxy címét +Enter proxy port here +Ide írja be a proxy portot +Enter proxy login +Ide írja be a proxy felhasználóját +Enter proxy password +Ide írja be a proxy jelszavát +Enter project name here +Ide írja be a projekt nevét +Enter saving path here +Ide írja be a projekt mentési útvonalát +Select existing project to update +Jelöljön ki egy létezõ, frissítendõ projektet +Click here to select path +Nyomja meg az útvonal kijelöléséhez +HTTrack Project Wizard... +HTTrack Projekt Varázsló... +New project name: +Az új projekt neve: +Existing project name: +A létezõ projekt neve: +Project name: +Projekt neve: +Base path: +Útvonal: +C:\\My Web Sites +C:\\Letoltott weblapok +Type a new project name, \r\nor select existing project to update/resume +Írja be az új projekt nevét, \r\nvagy jelöljön ki létezõ projektet a frissítéshez/folytatáshoz +New project +Új projekt +Insert URL +URL beszúrása +URL: +URL: +Authentication (only if needed) +Hitelesítés (csak szükség esetén) +Login +Felhasználó +Password +Jelszó +Forms or complex links: +Ûrlapok vagy összetett hivatkozások: +Capture URL... +URL átvétele... +Enter URL address(es) here +Ide írja be az URL-t +Enter site login +Írja be a webhely felhasználónevét +Enter site password +Írja be a webhely jelszavát +Use this capture tool for links that can only be accessed through forms or javascript code +Ezt az átvételt segítõ eszközt olyan hivatkozásokhoz vegye igénybe, melyek csak ûrlapokon vagy JavaScript kódon keresztül hozzáférhetõk +Choose language according to preference +Válassza ki az ön által beszélt nyelvet +Catch URL! +URL átvétele! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Módosítsa ideiglenesen a böngészõ proxy beállításait a következõ értékekre (a proxy cím és port másolásával/beillesztésével).\nEzután kattintson a böngészõben az ûrlap SUBMIT gombjára, vagy kattintson az átvenni kívánt hivatkozásra. +This will send the desired link from your browser to WinHTTrack. +Ez átküldi a böngészõbõl az óhajtott hivatkozást a WinHTTrack programhoz. +ABORT +MÉGSE +Copy/Paste the temporary proxy parameters here +Az ideiglenes proxy beállítások másolása/beillesztése itt +Cancel +Mégse +Unable to find Help files! +Nem található a Súgó! +Unable to save parameters! +A paraméterek nem menthetõk! +Please drag only one folder at a time +Egyszerre csak egy mappát húzzon át +Please drag only folders, not files +Csak mappát húzzon át, ne fájlt +Please drag folders only +Csak mappát húzzon át +Select user-defined structure? +Felhasználói meghatározású szerkezetet jelöl ki? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Ellenõrizze, hogy a felhasználó által meghatározott szöveg megfelelõ-e,\nmert különben a fájlnevek hamisak lesznek! +Do you really want to use a user-defined structure? +Valóban felhasználó által meghatározott szerkezetet kíván kijelölni? +Too manu URLs, cannot handle so many links!! +Túl sok URL, ilyen sok hivatkozást nem lehet kezelni!! +Not enough memory, fatal internal error.. +Nincs elég memória, végzetes belsõ hiba. +Unknown operation! +Ismeretlen mûvelet! +Add this URL?\r\n +Hozzáadja az URL-t?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Figyelem! A fõ folyamat még nem válaszol, nem lehet URL-(eke)t hozzáadni.. +Type/MIME associations +Típus/MIME társítások +File types: +Fájltípusok: +MIME identity: +MIME azonosítás +Select or modify your file type(s) here +Itt jelölje ki vagy módosítsa a fájltípus(oka)t +Select or modify your MIME type(s) here +Itt jelölje ki vagy módosítsa a MIME típus(oka)t +Go up +Fel +Go down +Le +File download information +Fájl letöltési információk +Freeze Window +Ablak rögzítése +More information: +További információ: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Üdvözli a WinHTTrack webhely másoló!\n\nNyomja meg a TOVÁBB gombot\n\n- új projekt indításához\n- vagy megkezdett letöltés folytatásához. +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Fájlnév kiterjesztéssel:\nFájlnév, tartalmazva:\nIlyen fájlnév:\nMappanév, tartalmazva:\nIlyen mappanév:\nHivatkozások tartományokon:\nHivatkozások tartományokon, tartalmazva:\nHivatkozások errõl a kiszolgálóról:\nHivatkozások, tartalmazva:\nIlyen hivatkozás:\nMINDEN HIVATKOZÁS +Show all\nHide debug\nHide infos\nHide debug and infos +Mind látszik\nHibakeresés elrejtése\nInfók elrejtése\nHibakeresés és infók elrejtése +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Hely-szerkezet (alapértelmezett)\nHtml a web/, képek/egyéb fájlok a web/kepek/\nHtml a web/html, képek/egyebek a web/kepek\nHtml a web/, képek/egyebek a web/\nHtml a web/, képek/egyebek a web/xxx, ahol xxx a fájlkiterjesztés\nHtml a web/html, képek/egyebek a web/xxx\nHely-szerkezet, www.tartomany.xxx nélkül/\nHtml a hely_nev/, képek/egyéb fájlok a hely_nev/kepek/\nHtml a hely_nev/html, képek/egyebek a hely_nev/kepek\nHtml a hely_nev/, képek/egyebek a hely_nev/\nHtml a hely_nev/, képek/egyebek a hely_nev/xxx\nHtml a hely_nev/html, képek/egyebek a hely_nev/xxx\nMinden fájl a web/, véletlen nevekkel (bonyolult !)\nMinden fájl a hely_nev/, véletlen nevekkel (bonyolult !)\nFelhasználó által meghatározott szerkezet... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Csak keresés\nHTML fájlok tárolása\nNem HTML-fájlok tárolása\nMinden fájl tárolása (alapértelmezett)\nElõbb a HTML-fájlokat tárolja +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Ugyanabban a mappában marad\nLemehet (alapértelmezett)\nFelmehet\nLe is, fel is mehet +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Ugyanazon a címen marad (alapértelm.)\nUgyanazon a tartományon marad\nUgyanazon a felsõszintû tartományon m.\nMindenhova megy a weben +Never\nIf unknown (except /)\nIf unknown +Soha\nHa ismeretlen (kivéve /)\nHa ismeretlen +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +nincs robot txt szabály\nrobots.txt a varázsló kivételével\nrobots.txt szabályok követése +normal\nextended\ndebug +normál\nkiterjesztett\nhibakeresés +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Webhely(ek) letöltése\nWebhely(ek) letöltése + kérdések\nÖnálló fájlok megszerzése\nMinden hely letöltése oldalakban (többszörös tükrözés)\nHivatkozások tesztelése az oldalakon (webcím teszt)\n* Megszakadt letöltés folytatása\n* Létezõ letöltés frissítrése +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relatív URL / Abszolút URL (alapértelmezett)\nAbszolút URL / Abszolút URL\nAbszolút URL / Abszolút URL\nEredeti URL / Eredeti URL +Open Source offline browser +Nyílt forráskódú kapcsolat nélküli böngészõ +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Weblapmásoló/Kapcsolat nélküli böngészõ. A távoli webhelyek saját számítógépre másolásához. Ingyenes. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, kapcsolat nélküli böngészõ +URL list (.txt) +URL-lista (.txt) +Previous +Elõzõ +Next +Következõ +URLs +URL-ek +Warning +Figyelmeztetés +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Az ön böngészõje jelenleg nem rendelkezik JavaScript támogatással. JavaScriptes böngészõ használatával jobb eredményt érhet el. +Thank you +Köszönjük +You can now close this window +Mostmár bezárhatja ezt az ablakot +Server terminated +A kiszolgáló befejezte a kapcsolatot +A fatal error has occured during this mirror +Végzetes hiba történt a tükrözés közben diff --git a/lang/Makefile.am b/lang/Makefile.am new file mode 100644 index 0000000..8748e61 --- /dev/null +++ b/lang/Makefile.am @@ -0,0 +1,7 @@ + +langdir = $(datadir)/httrack/lang +lang_DATA = *.txt +langrootdir = $(datadir)/httrack +langroot_DATA = ../lang.def ../lang.indexes + +EXTRA_DIST = $(lang_DATA) $(langroot_DATA) diff --git a/lang/Makefile.in b/lang/Makefile.in new file mode 100644 index 0000000..16e0c0e --- /dev/null +++ b/lang/Makefile.in @@ -0,0 +1,330 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_CFLAGS = @DEFAULT_CFLAGS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LFS_FLAG = @LFS_FLAG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +STRIP = @STRIP@ +THREADS_CFLAGS = @THREADS_CFLAGS@ +THREADS_LIBS = @THREADS_LIBS@ +V6_FLAG = @V6_FLAG@ +VERSION = @VERSION@ +VERSION_INFO = @VERSION_INFO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +langdir = $(datadir)/httrack/lang +lang_DATA = *.txt +langrootdir = $(datadir)/httrack +langroot_DATA = ../lang.def ../lang.indexes + +EXTRA_DIST = $(lang_DATA) $(langroot_DATA) +subdir = lang +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(lang_DATA) $(langroot_DATA) + +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu lang/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +langDATA_INSTALL = $(INSTALL_DATA) +install-langDATA: $(lang_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(langdir) + @list='$(lang_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(langDATA_INSTALL) $$d$$p $(DESTDIR)$(langdir)/$$f"; \ + $(langDATA_INSTALL) $$d$$p $(DESTDIR)$(langdir)/$$f; \ + done + +uninstall-langDATA: + @$(NORMAL_UNINSTALL) + @list='$(lang_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(langdir)/$$f"; \ + rm -f $(DESTDIR)$(langdir)/$$f; \ + done +langrootDATA_INSTALL = $(INSTALL_DATA) +install-langrootDATA: $(langroot_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(langrootdir) + @list='$(langroot_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(langrootDATA_INSTALL) $$d$$p $(DESTDIR)$(langrootdir)/$$f"; \ + $(langrootDATA_INSTALL) $$d$$p $(DESTDIR)$(langrootdir)/$$f; \ + done + +uninstall-langrootDATA: + @$(NORMAL_UNINSTALL) + @list='$(langroot_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(langrootdir)/$$f"; \ + rm -f $(DESTDIR)$(langrootdir)/$$f; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + $(mkinstalldirs) $(distdir)/.. + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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: + $(mkinstalldirs) $(DESTDIR)$(langdir) $(DESTDIR)$(langrootdir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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 + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-langDATA install-langrootDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-langDATA \ + uninstall-langrootDATA + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-langDATA install-langrootDATA \ + install-man 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-info-am \ + uninstall-langDATA uninstall-langrootDATA + +# 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/lang/Nederlands.txt b/lang/Nederlands.txt new file mode 100755 index 0000000..785a2eb --- /dev/null +++ b/lang/Nederlands.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Nederlands +LANGUAGE_FILE +Nederlands +LANGUAGE_ISO +nl +LANGUAGE_AUTHOR +Rudi Ferrari (Wyando at netcologne.de) \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +OK +Cancel +Annuleren +Exit +Beëindigen +Close +Sluiten +Cancel changes +Veranderingen annuleren +Click to confirm +Veranderingen bevestigen +Click to get help! +Klik hier voor help +Click to return to previous screen +Klik voor vorig scherm +Click to go to next screen +Klik voor volgend scherm +Hide password +Verberg wachtwoord +Save project +Project wegschrijven +Close current project? +Actueel project sluiten? +Delete this project? +Dit project wissen? +Delete empty project %s? +Leeg project %s wissen? +Action not yet implemented +Functie nog niet ter beschikking. +Error deleting this project +Fout bij het wissen van dit project. +Select a rule for the filter +Kies een regel voor de filter +Enter keywords for the filter +Geef hier de sleutelwoorden voor deze filter +Cancel +Annuleren +Add this rule +Deze regel toevoegen +Please enter one or several keyword(s) for the rule +Eén of meerdere sleutelwoord(en) voor deze regel in te geven +Add Scan Rule +Filter toevoegen +Criterion +Kies een regel: +String +Geef een sleutelwoord: +Add +Toevoegen +Scan Rules +Filter +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Je kunt verschillende URLs of links door gebruik van jokers uitsluiten of aanvaarden\nJe kunt ofwel een spatie tussen de filters gebruiken\n\nVoorbeeld: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Links uitsluiten: +Include link(s) +Links aanvaarden +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Raad: Indien je alle gif bestanden van een site wilt aanvaarden, probeer iets in de aard van +www.someweb.com/*.gif \n(+*.gif / -*.gif zal ALLE gifs aanvaarden/uitsluiten van ALLE sites) +Save prefs +Instellingen wegschrijven +Matching links will be excluded: +Links volgens deze regel worden uitgesloten: +Matching links will be included: +Links volgens deze regel worden aanvaard: +Example: +Voorbeeld: +gif\r\nWill match all GIF files +gif\r\nZal alle gif (of GIF) bestanden vinden +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nZal alle bestanden met blue vinden, zoals 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nZal het bestand 'bigfile.mov' vinden, maar niet 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nZal links vinden met directories die 'cgi' bevatten, zoals /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nZal links vinden met directory naam 'cgi-bin' (maar niet bevoorbeeld: cgi-bin-2) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nZal alle links vinden zoals www.someweb.com, private.someweb.com etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nZal alle links vinden zoals www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nZal alle links vinden zoals www.someweb.com/... (maar geen links zoals private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nZal alle links vinden zoals www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nZal enkel de link www.test.com/test/someweb.html vinden. Merk op dat je zowel het adres (www.xxx.yyy) alsook de pad (/test/someweb.html) +All links will match +Alle links zullen uitgesloten/aanvaard worden +Add exclusion filter +Toevoegen van een uitsluiten-filter +Add inclusion filter +Toevoegen van een aanvaarden-filter +Existing filters +Bijkomende filters +Cancel changes +Veranderingen annuleren +Save current preferences as default values +Instellingen als standaard wegschrijven +Click to confirm +Klik voor bevestiging +No log files in %s! +Geen protocolbestanden in %s! +No 'index.html' file in %s! +Geen index.html in %s! +Click to quit WinHTTrack Website Copier +Klik om WinHTTrack Website Copier te beëindigen +View log files +Toon protocolbestanden +Browse HTML start page +Toon de html startpagina +End of mirror +Einde van de spiegeling +View log files +Toon protocolbestand +Browse Mirrored Website +Toon web +New project... +Nieuw project... +View error and warning reports +Toon fouten en mededelingen +View report +Toon protocolverslag +Close the log file window +Sluit het protocolvenster +Info type: +Type van informatie: +Errors +Fouten +Infos +Informaties +Find +Zoek +Find a word +Zoek een woord +Info log file +Info-protocolbestand +Warning/Errors log file +Waarschuwingen/Fouten-protocolbestand +Unable to initialize the OLE system +Onmogelijk het OLE systeem te initialiseren +WinHTTrack could not find any interrupted download file cache in the specified folder! +Er geen cache in de aangegeven directory\nWinHTTrack kan geen afgebroken spiegelingen vinden! +Could not connect to provider +Geen verbindung met de provider +receive +ontvangen +request +verzoek +connect +verbinden +search +zoeken +ready +klaar +error +fout +Receiving files.. +Ontvang bestanden. +Parsing HTML file.. +Doorlopen van het HTML bestand... +Purging files.. +Verwijder bestanden... +Loading cache in progress.. +Cache wordt geladen... +Parsing HTML file (testing links).. +Doorlopen van het HTML bestand (test links)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Gepauzeerd (Kies [Spiegeling]/[Pauzeer transfer] om verder te gaan) +Finishing pending transfers - Select [Cancel] to stop now! +Beëindig lopende transfers - Kies [Cancel] om direkt te stoppen! +scanning +scanning +Waiting for scheduled time.. +Wacht op voorgegeven uur om te starten +Connecting to provider +Maak verbinding met de provider +[%d seconds] to go before start of operation +Spiegeling wachtend [%d seconden] +Site mirroring in progress [%s, %s bytes] +Spiegeling is bezig... [%s, %s bytes] +Site mirroring finished! +Spiegeling beëindigd! +A problem occured during the mirroring operation\n +Een probleem is opgetreden tijdens de spiegeling\n +\nDuring:\n +\r\n\nTijdens:\n\r\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Indien noodzakelijk, zie in het protocolbestand.\n\nKlik OK om WinHTTrack Website Copier te beëindigen.\n\nAlvast bedankt voor het gebruik van WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +De spiegeling is uitgevoerd.\nKlik OK om WinHTTrack te beëindigen.\nIndien nodig, zie protocolbestand(en) om zeker te gaan dat alles OK is\n\nAlvast bedankt voor het gebruik van WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * SPIEGELING AFGEBROKEN! * *\r\nDe aktuele tijdelijke cache is noodzakelijk voor gelijkwelke update operatie en bevat enkel data gedownload gedurende de zoeven afgebroken sessie.\r\nDe eerste cache kan juistere informaties bevatten; indien je deze informatie niet wenst te verliezen, dan moet je deze restoren and de aktuele cache wissen.\r\n[Opmerking: Dit is het eenvoudigst door het wissen van de hts-cache/new.* bestanden]\r\n\r\nDenk je dat de eerste cache juistere informaties bevat, en wil je deze restoren? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * FOUT MET DE SPIEGELING * *\r\nHTTrack heeft vastgesteld dat de aktuele spiegeling leeg is. Indien het een update was, is de vorige copie terug actueel.\r\nReden: de eerste pagina(s) konden ofwel niet gevonden worden, of er was een probleem met de connectie.\r\n=> Verzeker je ervan, dat de website nog steeds bestaat en/of je proxy settings correct zijn! <= +\n\nTip: Click [View log file] to see warning or error messages +:\r\n\n\nTip: Klik [Toon protocolbestand] voor de fouten en mededelingen\r\n +Error deleting a hts-cache/new.* file, please do it manually +Het wissen van hts-cache/new.* bestanden is niet gelukt, gelieve dit manueel te doen +Do you really want to quit WinHTTrack Website Copier? +Wil je werkelijk WinHTTrack Website Copier beëindigen? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Spiegelmodus -\n\nVul de adressen in het URL venster in +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Spielgelmodus met navraag -\n\nVul de adressen in het URL venster in +- File Download Mode -\n\nEnter file address(es) in URL box +- Haal-bestand-modus -\n\nVul de adressen in het URL venster in +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Test-links-modus -\n\nVul de adressen van de paginas met links in het URL venster in +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Herzien/voortzetten van de spiegelmodus -\n\nKontroleer de adressen in het URL venster. Daarna klik 'VERDER' en konrtrolleer de parameters. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Voortzetten van de spiegelmodus -\n\nKontroleer de adressen in het URL venster. Daarna klik 'VERDER' en konrtrolleer de parameters. +Log files Path +Protocoldirectory +Path +Pad +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +Spiegellijst-modus, vul de adressen van de paginas met links om te spiegelen in het URL venster in +New project / Import? +Nieuw project / import? +Choose criterion +Kies een actie +Maximum link scanning depth +Maximale linkdiepte om te scannen +Enter address(es) here +Vul hier de adressen in +Define additional filtering rules +Definiëer bijkomende filters +Proxy Name (if needed) +Proxy indien nodig +Proxy Port +Proxy poort +Define proxy settings +Definiëer proxy instellingen +Use standard HTTP proxy as FTP proxy +Gebruik de standaard HTTP proxy voor FTP proxy +Path +Pad +Select Path +Kies een pad +Path +Pad +Select Path +Kies een pad +Quit WinHTTrack Website Copier +WinHTTrack Website Copier beëindigen +About WinHTTrack +Info's over WinHTTrack +Save current preferences as default values +Schrijf voorkeur weg als standaard waarden. +Click to continue +Klik om verder te gaan +Click to define options +Klik om instellingen te definiëeren. +Click to add a URL +Klik om een URL toetevoegen +Load URL(s) from text file +Lees URL(s) vanaf een tekstbestand +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack voorkeursinstellingen (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Tekstbestand met de lijst van adressen (*.txt)|*.txt|| +File not found! +Bestand niet gevonden! +Do you really want to change the project name/path? +Will je werkelijk de projectnaam/pad veranderen? +Load user-default options? +Standaard instellingen van de gebruiker laden? +Save user-default options? +Standaard instellingen van de gebruiker wegschrijven? +Reset all default options? +Alle standaard instellingen wissen? +Welcome to WinHTTrack! +Hartelijk welkom bij WinHTTrack Website Copier! +Action: +Acties: +Max Depth +Maximale diepte: +Maximum external depth: +Maximum externe diepte: +Filters (refuse/accept links) : +Filters (links uitsluiten/aanvaarden): +Paths +Paths +Save prefs +Instellingen wegschrijven +Define.. +Definiëren... +Set options.. +Instellingen definiëren... +Preferences and mirror options: +Voorkeur en instellingen van de spiegelingen: +Project name +Projectnaam +Add a URL... +Toevoegen van een URL... +Web Addresses: (URL) +Webadres: (URL) +Stop WinHTTrack? +Stoppen van WinHTTrack? +No log files in %s! +Geen protocolbestanden in %s! +Pause Download? +Transfer pauzeren? +Stop the mirroring operation +Stop de spiegeling. +Minimize to System Tray +Verberg dit venster onder de systeembalk +Click to skip a link or stop parsing +Klik om een link over te slaan of om de doorloop te onderbreken +Click to skip a link +Klik om een link over te slaan +Bytes saved +Bytes weggeschreven: +Links scanned +Links doorlopen: +Time: +Tijd: +Connections: +Verbindingen: +Running: +Lopende: +Hide +Verbergen +Transfer rate +Transfer snelheid: +SKIP +OVERSLAAN +Information +Informaties +Files written: +Geschreven bestanden: +Files updated: +Bijgewerkte bestanden: +Errors: +Fouten: +In progress: +Bezig: +Follow external links +Haal bestanden ook uit externe links +Test all links in pages +Test alle links in de paginas +Try to ferret out all links +Probeer alle links te vinden +Download HTML files first (faster) +Eerst HTML-bestanden downloaden (sneller) +Choose local site structure +Kies een struktuur voor de lokale bestanden +Set user-defined structure on disk +Definiëer de struktuur van een site op disk +Use a cache for updates and retries +Gebruik een cache voor updates en herhalingen +Do not update zero size or user-erased files +Geen bestanden herladen indien deze nul bytes groot of door de gebruiker gewist zijn +Create a Start Page +Startpagina aanmaken +Create a word database of all html pages +Kreëer een woorden-gegevensbank van alle HTML paginas +Create error logging and report files +Aanmaken van Protokolbestanden voor fouten en mededelingen. +Generate DOS 8-3 filenames ONLY +Genereer enkel 8+3 bestandsnamen +Generate ISO9660 filenames ONLY for CDROM medias +Genereer ISO9660 bestandsnamen ENKEL voor CDROMs +Do not create HTML error pages +Schrijf geen html foutenpaginas +Select file types to be saved to disk +Kies de bestandtypes om weg te schrijven +Select parsing direction +Kies de doorlooprichting van de spiegeling +Select global parsing direction +Kies de globale doorlooprichting in de site +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Instellingen voor het herschrijven van URLs voor interne (gedownloaded) en externe (niet gedownloaded) links +Max simultaneous connections +Maximum aantal connecties +File timeout +Maximum wachttijd voor een bestand +Cancel all links from host if timeout occurs +Annuleer alle links van een host bij een timeout +Minimum admissible transfer rate +Minimale transfer snelheid +Cancel all links from host if too slow +Annuleer alle links van een te langsame host +Maximum number of retries on non-fatal errors +Maximum aantal herhalingen indien een niet fatale fout gebeurt +Maximum size for any single HTML file +Maximale grootte voor een html pagina +Maximum size for any single non-HTML file +Maximale grootte voor een bestand +Maximum amount of bytes to retrieve from the Web +Maximaal aantal bytes voor de spiegeling +Make a pause after downloading this amount of bytes +Pauzeer na download van dit aantal bytes +Maximum duration time for the mirroring operation +Maximale tijd voor de spiegeling +Maximum transfer rate +Maximale transfer snelheid +Maximum connections/seconds (avoid server overload) +Maximale verbindingen/seconde (vermijd overbelasting van de server) +Maximum number of links that can be tested (not saved!) +Maximum aantal links dat kan getest worden (niet gesaved!) +Browser identity +Browser identiteit +Comment to be placed in each HTML file +Voetnoot in elk HTML bestand +Back to starting page +Terug naar de startpagina +Save current preferences as default values +Instellingen als standaard wegschrijven +Click to continue +Klick om verder te gaan +Click to cancel changes +Klik om veranderingen te annuleren +Follow local robots rules on sites +Volg de lokale robotregels van de site +Links to non-localised external pages will produce error pages +Externe paginas (niet opgenomen) linken naar foutenpaginas +Do not erase obsolete files after update +Geen oude bestanden wissen na update +Accept cookies? +Aangeboden cookies aanvaarden? +Check document type when unknown? +Onbekende document types testen? +Parse java applets to retrieve included files that must be downloaded? +Java applets doorzoeken naar inbegrepen bestanden +Store all files in cache instead of HTML only +Alle bestanden in cache wegschrijven in plaats van enkel de HTML bestanden +Log file type (if generated) +Type protocolbestand indien gegenereerd +Maximum mirroring depth from root address +Maximum diepte van de spiegeling vanaf het eerste adres +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximum spiegelingdiepte voor externe/verboden adressen (0 is geen [default]) +Create a debugging file +Debug bestand aanmaken +Use non-standard requests to get round some server bugs +Probeer somige server bugs te vermijden door gebruik van niet gestandaardiseerde aanvragen +Use old HTTP/1.0 requests (limits engine power!) +Gebruik de oude HTTP/1.0 aanvragen (beperkt de zoekfunctie) +Attempt to limit retransfers through several tricks (file size test..) +Probeer, met verschillende trukjes, het aantal 're-transfers' te beperken (test grootte van het bestand...) +Write external links without login/password +Schrijf externe links zonder login/wachtwoord +Write internal links without query string +Schrijf interne links zonder zoekaanvraag +Get non-HTML files related to a link, eg external .ZIP or pictures +Opnemen van niet HTML-bestanden dicht bij een link (bv. .ZIP of grafieken buitenuit geplaatst) +Test all links (even forbidden ones) +Test alle links (ook de niet toegelatenen) +Try to catch all URLs (even in unknown tags/code) +Probeer alle URLs te krijgen (ook in onbekende tags/code) +Get HTML files first! +Haalt eerst de HTML-bestanden! +Structure type (how links are saved) +Struktuurtype (hoe links weggeschreven worden) +Use a cache for updates +Gebruik een cache voor de updates +Do not re-download locally erased files +Lokaal gewiste bestanden niet nogmaals laden +Make an index +Maak een index +Make a word database +Kreëer een woorden-gegevensbank +Log files +Protocolbestanden +DOS names (8+3) +DOS namen (8+3) +ISO9660 names (CDROM) +ISO9660 namen (CDROM) +No error pages +Geen fouten paginas +Primary Scan Rule +Hoofdfilter +Travel mode +Doorloopmodus +Global travel mode +Globale doorloopmodus +These options should be modified only exceptionally +Normaalgezien moeten deze instellingen niet aangepast worden +Activate Debugging Mode (winhttrack.log) +Aktiveer de debug modus (winhttrack.log) +Rewrite links: internal / external +Herschrijf links: intern / extern +Flow control +Stroom controle +Limits +Begrenzingen +Identity +Identiteit +HTML footer +HTML voetnota +N# connections +N# verbindingen +Abandon host if error +Verbinding afbreken indien fout +Minimum transfer rate (B/s) +Minimum transfer snelheid (B/s) +Abandon host if too slow +Verbinding afbreken indien te langzaam +Configure +Instellen +Use proxy for ftp transfers +Gebruik de proxy voor ftp transfers +TimeOut(s) +TimeOut(s) +Persistent connections (Keep-Alive) +Aanhoudende verbindingen (Keep-Alive) +Reduce connection time and type lookup time using persistent connections +Verbindingstijd en nakijktijd verminderen door konstante verbindung met de server +Retries +Herhalingen +Size limit +Berperking in grootte +Max size of any HTML file (B) +Maimale HTML grootte +Max size of any non-HTML file +Andere maximale grootte +Max site size +Maximale site grootte +Max time +Maximale tijd +Save prefs +Instellingen wegschrijven +Max transfer rate +Maximale transfer snelheid +Follow robots.txt +Volg de regels in robot.txt +No external pages +Geen externe pagina's +Do not purge old files +Geen oude pagina's wissen +Accept cookies +Cookies aanvaarden +Check document type +Kontroleer document type +Parse java files +Analiseren van JAVA bestanden +Store ALL files in cache +Alle bestanden in cache wegschrijven +Tolerant requests (for servers) +Tolerante aanvragen (voor servers) +Update hack (limit re-transfers) +Update hack (limiteert de re-transfers) +Force old HTTP/1.0 requests (no 1.1) +Gebruik oude HTTP/1.0 verzoeken (geen 1.0) +Max connections / seconds +Max verbindingen / seconden +Maximum number of links +Maximum aantal links +Pause after downloading.. +Pauze na download... +Hide passwords +Wachtwoorden verbergen +Hide query strings +Verberg zoekaanvragen +Links +Links +Build +Struktuur +Experts Only +Expert +Flow Control +Stroomcontrole +Limits +Beperkingen +Browser ID +Browser ID +Scan Rules +Filters +Spider +Spider +Log, Index, Cache +Protocol, Index, Cache +Proxy +Proxy +MIME Types +MIME typen +Do you really want to quit WinHTTrack Website Copier? +Wil je werkelijk WinHTTrack Website Copier beëindigen? +Do not connect to a provider (already connected) +Geen verbinding met een provider (reeds verbonden) +Do not use remote access connection +Geen gebruik van een remote verbinding +Schedule the mirroring operation +Programeer de spiegeling +Quit WinHTTrack Website Copier +Beeindige WinHTTrack Website Copier +Back to starting page +Terug naar startpagina +Click to start! +Klik om te starten! +No saved password for this connection! +Geen weggeschreven wachtwoord voor deze verbinding +Can not get remote connection settings +Krijg geen instelling van der remote verbinding +Select a connection provider +Kies hier een provider voor de verbinding +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Je kan de spiegeling starten, als je de FINISH knop klikt of definiëer meer instellingen voor de verbinding +Save settings only, do not launch download now. +Enkel de instellingen wegschrijven, download nu niet lanceren +On hold +Vertragen +Transfer scheduled for: (hh/mm/ss) +Wachtend tot: (hh/mm/ss) +Start +START! +Connect to provider (RAS) +Verbind met de provider (RAS) +Connect to this provider +Verbind met deze provider +Disconnect when finished +Indien gedaan verbinding verbreken +Disconnect modem on completion +Indien gedaan modemverbinding verbreken +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Ons fouten en problemen mede te delen)\r\n\r\nOntwikkeling:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for Dutch translations to:\r\nRudi Ferrari (Wyando@netcologne.de) +About WinHTTrack Website Copier +Over WinHTTrack Website Copier +Please visit our Web page +Bezoek onze webpagina +Wizard query +Wizard vraagstelling +Your answer: +Je antwoord: +Link detected.. +Een link werd gevonden +Choose a rule +Kies een regel: +Ignore this link +Deze link uitsluiten +Ignore directory +Deze directory uitsluiten +Ignore domain +Deze domain uitsluiten +Catch this page only +Haal enkel deze pagina +Mirror site +Site-spiegeling +Mirror domain +Domain-spiegeling +Ignore all +Sluit alles uit +Wizard query +Wizard vraagstelling +NO +NEEN +File +Bestand +Options +Instellingen +Log +Protocol +Window +Venster +Help +Help +Pause transfer +Pauzeer transfer +Exit +Beëindigen +Modify options +Instellingen veranderen +View log +Toon protocol +View error log +Toon foutenprotocol +View file transfers +Toon transfer van de bestanden +Hide +Verstoppen +About WinHTTrack Website Copier +Over WinHTTrack Website Copier +Check program updates... +Verifiëer programma updates... +&Toolbar +Toolmenu +&Status Bar +Statusmenu +S&plit +Verdeel +File +Bestand +Preferences +Instellingen +Mirror +Spiegeling +Log +Protocol +Window +Venster +Help +Help +Exit +Beëindigen +Load default options +Standaard opties laden +Save default options +Standaard opties wegschrijven +Reset to default options +Standaard opties wissen +Load options... +Opties laden +Save options as... +Opties wegschrijven als... +Language preference... +Taalopties... +Contents... +Inhoud... +About WinHTTrack... +Over WinHTTrack Website Copier... +New project\tCtrl+N +Nieuw project\tCtrl+N +&Open...\tCtrl+O +&Open...\tCtrl+O +&Save\tCtrl+S +Weg&Schrijven\tCtrl+S +Save &As... +Wegschrijven &als... +&Delete... +&Wissen +&Browse sites... +We&bpaginas aantonen... +User-defined structure +Struktuur door de gebruiker gedefiniëerd +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNaam van het bestand zonder extensie (bv: image)\r\n%N\tNaam van het bestand met extensie (bv: image.gif)\r\n%t\tBestandstype (bv: gif)\r\n%p\tPath [zonder / op het einde] (bv: /someimages)\r\n%h\tHost naam (ex: www.someweb.com)\r\n%M\tURL MD5 (128 bits, 32 ascii bytes)\r\n%Q\tquery string MD5 (128 bits, 32 ascii bytes)\r\n%q\tsmall query string MD5 (16 bits, 4 ascii bytes)\r\n\r\n%s?\tkorte naam versie (ex: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Voorbeeld:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Proxy instellingen +Proxy address: +Proxy adres +Proxy port: +Proxy poort +Authentication (only if needed) +Identificatie (enkel indien nodig) +Login +Login +Password +Wachtwoord +Enter proxy address here +Hier een proxy adres ingeven +Enter proxy port here +Hier proxy poort ingeven +Enter proxy login +Proxy login ingeven +Enter proxy password +Proxy wachtwoord ingeven +Enter project name here +Hier de projectnaam ingeven +Enter saving path here +Hier een pad voor het wegschrijven van het project ingeven +Select existing project to update +Kies hier een bestaand project voor update +Click here to select path +Klik hier om een pad te kiezen +HTTrack Project Wizard... +HTTrack project wizard +New project name: +Nieuw projectnaam: +Existing project name: +Bestaand projectnaam: +Project name: +Projectnaam: +Base path: +Basis pad +C:\\My Web Sites +C:\\Mijn Web paginas +Type a new project name, \r\nor select existing project to update/resume +Geef een nieuw projectnaam, \r\nof kies een bestaand project voor update/voortzetting\r\n +New project +Nieuw project +Insert URL +Toevoegen van een URL +URL: +URL: +Authentication (only if needed) +Identificatie (enkel indien nodig) +Login +Login: +Password +Password: +Forms or complex links: +Ingaveschermen of complexe links: +Capture URL... +Haal URL... +Enter URL address(es) here +Hier URL adres ingeven +Enter site login +Site login ingeven +Enter site password +Site wachtwoord ingeven +Use this capture tool for links that can only be accessed through forms or javascript code +Gebruik deze tool om links te halen die enkel via ingaveschermen of javascripts te krijgen zijn +Choose language according to preference +Kies je taal hier +Catch URL! +Haal de URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Tijdelijk je proxyinstellingen in de browser op volgende waarden zetten: (knip/plak proxyadres en poort).\nDan, in de browser, klik op de verzendknop van het ingavescherm, of klik op de specifieke link die je wilt halen +This will send the desired link from your browser to WinHTTrack. +Dit haalt de gewenste link van je browser naar HTTrack. +ABORT +ANNULEREN +Copy/Paste the temporary proxy parameters here +Knip/plak hier de tijdelijke proxy-instellingen +Cancel +Annuleren +Unable to find Help files! +Hulpbestanden kunnen niet gevonden worden! +Unable to save parameters! +Onmogelijk de parameterers weg te schrijven! +Please drag only one folder at a time +Enkel 1 directory toevoegen +Please drag only folders, not files +Enkel een directory toe te voegen, geen bestanden +Please drag folders only +Enkel een directory toe te voegen +Select user-defined structure? +Gebruikersdefiniëeerde struktuur kiezen? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Verzeker je ervan, dat de gebruikersdefiniëeerde struktuur correct is.\nIndien niet, zullen de bestandsnamen verkeerd zijn.\r\n +Do you really want to use a user-defined structure? +Wil je werkelijk de gebruikersdefiniëerde struktuur kiezen? +Too manu URLs, cannot handle so many links!! +Veel te veel URLs, onmogelijk zoveel links te behandelen!! +Not enough memory, fatal internal error.. +Niet genoeg geheugen, fatale interne fout... +Unknown operation! +Onbekende operatie! +Add this URL?\r\n +Deze URL toevoegen?\r +Warning: main process is still not responding, cannot add URL(s).. +Waarschuwing: hoofd proces antwoord niet, kann geen URLs toevoegen +Type/MIME associations +Associaties type/MIME +File types: +Bestandtype(s): +MIME identity: +MIME identiteit +Select or modify your file type(s) here +Kies of verander je bestandtype(s) hier +Select or modify your MIME type(s) here +Kies of verander je MIME type(s) hier +Go up +Omhoog +Go down +Omlaag +File download information +Informaties over de bestanden gedownload +Freeze Window +Venster invriezen +More information: +Bijkomende informaties +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Welkom bij WinHTTrack Website Copier!\n\nGelieve NEXT te klikken om\n\n- een nieuw project te starten\n\n- of vervoledig een gedeeltelijke download +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Bestandsnamen met extentie:\nBestandsnamen bevattend:\nDit bestandsnaam:\nDirectory-namen bevattend:\nDeze directory:\nLinks op dit domein:\nLinks op domein:\nLinks van deze host:\nLinks bevattend:\nDeze link:\nALLE LINKS +Show all\nHide debug\nHide infos\nHide debug and infos +Toon alles\nVerstop debug\nverstop informaties\nVerstop debug en informaties +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Site-struktuur (default)\nHtml in web/, images/andere bestanden in web/images/\nHtml in web/html, images/andere in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, waarbij xxx de extentie is\nHtml in web/html, images/andere in web/xxx\nSite-struktuur, zonder www.domain.xxx/\nHtml in site_naam/, images/andere files in site_naam/images/\nHtml in site_naam/html, images/andere in site_naam/images\nHtml in site_naam, images/andere in site_name/\nHtml in site_naam/, images/andere in site_naam/xxx\nHtml in site_naam/html, images/andere in site_naam/xxx\nAlle bestenden in web/, met toevallige namen\nAlle bestanden in site_naam/, met toevallige namen\nGebruikers-gedefiniëerde struktuur... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Enkel scannen\nHtml-bestanden wegschrijven\nNiet-Html-bestanden wegschrijven\nAlle bestanden wegschrijven (default)\nEerst Html-bestanden wegschrijven +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +In dezelfde directory blijven\nKan dieper gaan (default)\nCan omhoog gaan\nKan zowel dieper als omhoog gaan +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Op hetzelfde adres blijven (default)\nOp dezelfde domain blijven\nOp dezelfde top level domain blijven\nNaar overal in de web gaan +Never\nIf unknown (except /)\nIf unknown +Nooit\nIndien onbekend (uitgezonderd /)\nIndien onbekend +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Geen robots.txt regels\nrobots.txt uitgezonderd wizard\nvolg robots.txt regels +normal\nextended\ndebug +normaal\nuitgebreid\ndebug +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Download web site(s)\nDownload web site(s) + vragen\nHaal losse bestanden\nDownload alle sites in paginas (veelvuldige spiegeling)\nTest links in paginas (bookmark test)\n* onderbroken download verder doen\n* update bestaande download +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relative URI / Absolute URL (default)\n Absolute URL / Absolute URL\nAbsolute URI / Absolute URL\nURL van oorsprong / URL van oorsprong +Open Source offline browser +Open Source offline browser +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Website Copier/Offline Browser. Kopieer websites op je computer. Gratis. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, offline browser +URL list (.txt) +URL lijst (.txt) +Previous +Vorige +Next +Volgende +URLs +URLs +Warning +Opgelet +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Je browser support momenteel geen javascript. Voor betere resultaten, gelieve een browser met javascript mogelijkheid gebruiken. +Thank you +Dankjewel +You can now close this window +Je kunt dit verster nu sluiten +Server terminated +Server beeindigd +A fatal error has occured during this mirror +Een fatale fout is opgetreden tijdens deze spiegeling diff --git a/lang/Norsk.txt b/lang/Norsk.txt new file mode 100755 index 0000000..51af983 --- /dev/null +++ b/lang/Norsk.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Norsk +LANGUAGE_FILE +Norsk +LANGUAGE_ISO +no +LANGUAGE_AUTHOR +Tobias "Spug" Langhoff (Dark Spug at hazardlabs.com )\r\n[ spug_enigma@hotmail.com ] \r\n +LANGUAGE_CHARSET + +OK +OK +Cancel +Avbryt +Exit +Avslutt +Close +Lukk +Cancel changes +Angre endringer +Click to confirm +Klikk for å bekrefte +Click to get help! +Klikk her for å få hjelp! +Click to return to previous screen +Klikk for å gå tilbake til forrige skjerm +Click to go to next screen +Klikk for å gå til neste skjerm +Hide password +Skjul passord +Save project +Lagre prosjekt +Close current project? +Vil du lukke prosjektet? +Delete this project? +Vil du slette dette prosjektet? +Delete empty project %s? +Vil du slette det tomme prosjektet %s? +Action not yet implemented +Denne funksjonen er ikke utviklet enda +Error deleting this project +Kunne ikke slette prosjektet +Select a rule for the filter +Velg en regel for dette filteret +Enter keywords for the filter +Skriv inn nøkkelord for dette filteret +Cancel +Avbryt +Add this rule +Legg til regel +Please enter one or several keyword(s) for the rule +Skriv inn et eller flere nøkkelord for denne regelen +Add Scan Rule +Legg til søkeregel +Criterion +Kriterier +String +Streng +Add +Legg til +Scan Rules +Søkeregler +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Bruk jokertegn (* og ?) for å ekskludere eller inkludere URLer eller linker.\nDu kan sette inn flere søkeregler på samme linje.\nBruk mellomrom som separatortegn.\n\nEksempel: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Ekskluder link(er) +Include link(s) +Inkluder link(er) +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tips: For å inkludere ALLE GIF-filer, skriv noe sånt som +www.someweb.com/*.gif. \n(+*.gif / -*.gif inkluderer/ekskluderer ALLE GIF-filer fra ALLE sider) +Save prefs +Lagre innstillinger +Matching links will be excluded: +Følgende matchende linker vil bli utelukket: +Matching links will be included: +Følgende matchende linker vil bli inkludert: +Example: +Eksempel: +gif\r\nWill match all GIF files +gif\r\nMatcher alle GIF-filer +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nFinner alle filer med matchende tekst. Skriver du f.eks. 'blue' lastes 'bluesky-small.jpeg' ned. +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nFinner filen 'bigfile.mov', men ikke 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nFinner linker med mappenavn som matcher tekststrengen 'cgi', f.eks. /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nFinner linker med mappenavn som matcher hele 'cgi-bin'-strengen (men ikke cgi-bin-2, for eksempel) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nFinner linker med matchende tekststreng, som f.eks www.someweb.com, private.someweb.com osv. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nFinner linker med mappenavn som matcher tekststrengen 'someweb', for eksempel www.someweb.com, www.someweb.no, private.someweb.otherweb.com osv. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nFinner linker som matcher hele 'www.someweb.com'-strengen (men ikke linker som f.eks private.someweb.com/.. osv.) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nFinner alle linker med matchende tekststreng, som for eksempel www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html osv. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nFinner bare filen 'www.test.com/test/someweb.html'. Legg merke til at du må skrive hele adressen (URL + mappenavn) +All links will match +Alle linker matcher +Add exclusion filter +Legg til ekskluderingsfilter +Add inclusion filter +Legg til inkluderingsfilter +Existing filters +Eksisterende filtre +Cancel changes +Angre endringer +Save current preferences as default values +Lagre nåværende innstillinger som standardinnstillinger +Click to confirm +Klikk for å bekrefte +No log files in %s! +Det finnes ingen logg-filer i %s! +No 'index.html' file in %s! +Det finnes ingen 'index.html'-fil i %s! +Click to quit WinHTTrack Website Copier +Klikk for å avslutte WinHTTrack Website Copier +View log files +Vis logg-filer +Browse HTML start page +Vis HTML-startside +End of mirror +Kopieringen er fullført +View log files +Vis logg-filer +Browse Mirrored Website +Vis den kopierte websiden +New project... +Nytt prosjekt... +View error and warning reports +Vis feil- og advarselsrapporter +View report +Vis rapport +Close the log file window +Lukk loggvinduet +Info type: +Informasjonstype: +Errors +Feil +Infos +Informasjon +Find +Søk +Find a word +Søk etter et ord +Info log file +Informasjonslogg +Warning/Errors log file +Advarsels- og feillogg +Unable to initialize the OLE system +Kan ikke starte OLE-systemet +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack kunne ikke finne noen avbrutte nedlastninger i den angitte mappen! +Could not connect to provider +Kunne ikke koble til leverandør +receive +mottar +request +tillatelse +connect +kobler til +search +søker +ready +klar +error +feil +Receiving files.. +Mottar filer... +Parsing HTML file.. +Overfører HTML-fil... +Purging files.. +Sletter filer... +Loading cache in progress.. + +Parsing HTML file (testing links).. +Overfører HTML-fil (tester linker)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pause - Velg [Kopier]/[Pause nedlasting] for å fortsette nedlastingen +Finishing pending transfers - Select [Cancel] to stop now! +Avslutter aktive nedlastinger - velg [Avbryt] for å avslutte nå! +scanning +søker +Waiting for scheduled time.. +Venter på planlagt tidspunkt... +Connecting to provider +Kobler til leverandør +[%d seconds] to go before start of operation +[%d sekunder] til start +Site mirroring in progress [%s, %s bytes] +Kopiering pågår [%s, %s bytes] +Site mirroring finished! +Kopieringen er fullført! +A problem occured during the mirroring operation\n +Et problem oppsto under kopieringen\n +\nDuring:\n +\nUnder:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nVis loggen hvis nødvendig.\n\nKlikk på AVSLUTT for å avslutte WinHTTrack Website Copier.\n\nTakk for at du brukte WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Kopieringen er fullført.\nKlikk AVSLUTT for å avslutte WinHTTrack.\nVis loggfil(er) vis det er nødvendig, for å sjekke at alt er OK.\n\nTakk for at du brukte WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * KOPIERINGEN ER AVBRUTT! * *\r\nDen nåværende midlertidige cachen er obligatorisk for alle oppdateringsoperasjoner, og inneholder bare data fra den siste avbrutte kopieringsprosessen.\r\nDen tidligere cachen kan inneholde fyldigere informasjon; hvis du ønsker å beholde den informasjonen må du gjenopprette den og slette den aktuelle cachen.\r\n[OBS: Dette kan lettest gjøres ved å slette alle 'hts-cache/new.*'-filer]\r\n\r\nTror du den tidligere cache-filen kanskje inneholder fyldigere informasjon, og vil du gjenopprette den? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * KOPIERINGSFEIL! * *\r\nHttrack har oppdaget at den gjeldende websiden er tom. Hvis du var i gang med å oppdatere enn kopi, vil det gamle innholdet bli gjenopprettet.\r\nMulig årsak: Den første siden kunne enten ikke finnes, eller det oppstod et problem med forbindelsen.\r\n=> Kontroller at websiden fremdeles finnes, og/eller sjekk proxy-innstillingene dine! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nTips: Klikk på [Vis loggfil] for å se advarsler og feilmeldinger +Error deleting a hts-cache/new.* file, please do it manually +Det oppstod en feil ved sletting av hts-cache/new.*-filen. Prøv å slett filen manuelt. +Do you really want to quit WinHTTrack Website Copier? +Vil du virkelig avslutte WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Kopiering av webside -\n\nSkriv adressen(e) i URL-feltet +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Interaktiv guide (spørsmål) -\n\nSkriv inn adressen(e) i URL-feltet +- File Download Mode -\n\nEnter file address(es) in URL box +- Filnedlasting -\n\nSkriv inn filen(e)s adresse(r) i URL-feltet +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Linktest -\n\nSkriv inn webadressen(e) du vil teste i URL-feltet +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Oppdatering -\n\nBekreft adressen(e) i URL-feltet, sjekk eventuelt om innstillingene er riktige og trykk deretter på 'NESTE' +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Fortsett kopiering (hvis kopieringen ble avbrutt) -\n\nBekreft adressen(e) i URL-feltet, sjekk eventuelt om innstillingene er riktige og trykk deretter på 'NESTE' +Log files Path +Plassering av loggfil +Path +Bane +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Linkliste -\n\nBruk URL-feltet til å angi adresse(r) på sider som inneholder linker som skal kopieres. +New project / Import? +Nytt prosjekt / importer prosjekt? +Choose criterion +Velg kriterier +Maximum link scanning depth +Maximum søkedybde på linker +Enter address(es) here +Skriv inn adressen(e) her +Define additional filtering rules +Velg ytterligere filtreringsregler +Proxy Name (if needed) +Proxy-navn (om nødvendig) +Proxy Port +Proxy-port +Define proxy settings +Velg proxy-innstillinger +Use standard HTTP proxy as FTP proxy +Bruk standard HTTP-proxy som FTP-proxy +Path +Bane +Select Path +Velg bane +Path +Bane +Select Path +Velg bane +Quit WinHTTrack Website Copier +Avslutt WinHTTrack Website Copier +About WinHTTrack +Om WinHTTrack +Save current preferences as default values +Lagre nåværende innstillinger som standardinnstillinger +Click to continue +Klikk for å fortsette +Click to define options +Klikk for å velge innstillinger +Click to add a URL +Klikk for å legge til en URL +Load URL(s) from text file +Hent URL(er) fra tekstfil +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack-innstillinger (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Adresseliste (tekstfil) (*.txt)|*.txt|| +File not found! +Finner ikke filen! +Do you really want to change the project name/path? +Vil du virkelig endre prosjektets navn / plassering? +Load user-default options? +Åpne egendefinerte innstillinger? +Save user-default options? +Lagre egendefinerte innstillinger? +Reset all default options? +Nullstill alle standardinnstillinger? +Welcome to WinHTTrack! +Velkommen til WinHTTrack! +Action: +Handling: +Max Depth +Maksimum dybde +Maximum external depth: +Maksimum ekstern dybde: +Filters (refuse/accept links) : +Filtre (ekskluder/inkluder linker): +Paths +Baner +Save prefs +Lagre innstillinger +Define.. +Definer... +Set options.. +Velg innstillinger... +Preferences and mirror options: +Instillinger og kopieringsvalg: +Project name +Prosjektnavn +Add a URL... +Legg til en URL... +Web Addresses: (URL) +Webadresser: (URL) +Stop WinHTTrack? +Stopp WinHTTrack? +No log files in %s! +%s inneholder ingen loggfiler! +Pause Download? +Pause kopieringen? +Stop the mirroring operation +Stopp kopieringsprosessen +Minimize to System Tray +Minimer til systemlinjen +Click to skip a link or stop parsing +Klikk for å hoppe over en link eller stoppe overføringen +Click to skip a link +Klikk for å hoppe over en link +Bytes saved +Bytes nedlastet +Links scanned +Gjennomsøkte linker +Time: +Tid: +Connections: +Tilkoblinger: +Running: +Kjører: +Hide +Minimer +Transfer rate +Overføringshastighet +SKIP +HOPP OVER +Information +Informasjon +Files written: +Kopierte filer: +Files updated: +Oppdaterte filer: +Errors: +Feil: +In progress: +Arbeider: +Follow external links +Følg eksterne linker +Test all links in pages +Test alle linker på siden +Try to ferret out all links +Prøv å utvide alle linker +Download HTML files first (faster) +Last ned HTML-filer først (raskere) +Choose local site structure +Velg lokal sidestruktur +Set user-defined structure on disk +Velg brukerdefinert sidestruktur på disken +Use a cache for updates and retries +Bruk cache til oppdateringer og oppdateringsforsøk +Do not update zero size or user-erased files +Ikke oppdater tomme filer eller filer slettet av bruker +Create a Start Page +Opprett en startside +Create a word database of all html pages +Opprett en ord-database over alle HTML-sider +Create error logging and report files +Opprett feillogging og rapporter +Generate DOS 8-3 filenames ONLY +Lag filnavn KUN i DOS 8-3-format +Generate ISO9660 filenames ONLY for CDROM medias +Lag filnavn i ISO9660-format KUN for CD-ROM +Do not create HTML error pages +Ikke opprett HTML-feilmeldinger +Select file types to be saved to disk +Velg filtyper som skal kopieres +Select parsing direction +Velg overføringsretning +Select global parsing direction +Velg global overføringsretning +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Velg regler for omskrivning av URL for interne linker (nedlastede linker) og eksterne linker (ikke nedlastede) +Max simultaneous connections +Maksimum antall samtidige forbindelser +File timeout +Fil time-out +Cancel all links from host if timeout occurs +Avbryt alle linker fra vert hvis time-out oppstår +Minimum admissible transfer rate +Minimum akseptabel overføringshastighet +Cancel all links from host if too slow +Avbryt alle linker fra vert hvis overføringen er for langsom +Maximum number of retries on non-fatal errors +Maksimalt antall forsøk på ikke-fatale feil +Maximum size for any single HTML file +Maksimum filstørrelse for en enkelt HTML-fil +Maximum size for any single non-HTML file +Maksimum filstørrelse for en enkelt ikke-HTML-fil +Maximum amount of bytes to retrieve from the Web +Maksimum antall bytes som hentes fra internett +Make a pause after downloading this amount of bytes +Pause kopieringen når så mange bytes har blitt lastet ned: +Maximum duration time for the mirroring operation +Maksimal overføringstid på kopieringsprosessen +Maximum transfer rate +Maksimum overføringshastighet +Maximum connections/seconds (avoid server overload) +Maksimum antall forbindelser/sekunder (for å unngå overbelastning av serveren) +Maximum number of links that can be tested (not saved!) +Maksimalt antall linker som kan testes (ikke lagret!) +Browser identity +Nettleser-identitet +Comment to be placed in each HTML file +Sett inn kommentar i alle HTML-filer +Back to starting page +Tilbake til startside +Save current preferences as default values +Lagre nåværende innstillinger som standardinnstillinger +Click to continue +Klikk for å fortsette +Click to cancel changes +Klikk for å angre endringer +Follow local robots rules on sites +Følg lokale robots-regler på websiden +Links to non-localised external pages will produce error pages +Linker til eksterne sider som ikke finnes vil opprette en feilside +Do not erase obsolete files after update +Ikke slett unødvendige filer etter oppdatering +Accept cookies? +Aksepter informasjonskapsler (cookies)? +Check document type when unknown? +Sjekk dokumenttypen hvis ukjent? +Parse java applets to retrieve included files that must be downloaded? +Overfør java-appleter sammen med inkluderte filer som skal lastes ned? +Store all files in cache instead of HTML only +Lagre alle filer i cache i stedet for bare HTML +Log file type (if generated) +Loggfiltype (hvis den opprettes) +Maximum mirroring depth from root address +Maksimum kopieringsdybde fra rotadressen (root) +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maksimum kopieringsdybde for eksterne/forbudte adresser (0, altså ingen, er standard) +Create a debugging file +Opprett en feilfinningsfil +Use non-standard requests to get round some server bugs +Bruk ikke-standarde forespørsler for å unngå serverfeil +Use old HTTP/1.0 requests (limits engine power!) +Bruk gamle HTTP/1.0-forespørsler (begrenser effektiviteten!) +Attempt to limit retransfers through several tricks (file size test..) +Prøv å begrense gjentakelser av samme overføring ved å bruke spesielle 'triks' (f.eks å teste filstørrelsen) +Write external links without login/password +Skriv eksterne linker uten brukernavn/passord +Write internal links without query string +Skriv interne linker uten å spørre +Get non-HTML files related to a link, eg external .ZIP or pictures +Hent ikke-HTML-filer relatert til linker, f.eks eksterne .ZIP-filer eller bilder +Test all links (even forbidden ones) +Test alle linker (også forbudte linker) +Try to catch all URLs (even in unknown tags/code) +Prøv å kopiere alle URLer (selv i ukjente tags / ukjent kode) +Get HTML files first! +Kopier HTML-filer først! +Structure type (how links are saved) +Angi struktur (hvordan linker lagres) +Use a cache for updates +Bruk cache til oppdateringer +Do not re-download locally erased files +Ikke last ned filer som er slettet av bruker på nytt +Make an index +Opprett en forside +Make a word database +Opprett en ord-database +Log files +Loggfiler +DOS names (8+3) +DOS-filnavn (8+3) +ISO9660 names (CDROM) +ISO9660-filnavn (CD-ROM) +No error pages +Ingen feilsider +Primary Scan Rule +Primær søkeregel +Travel mode +Søkemetode +Global travel mode +Global reisemetode +These options should be modified only exceptionally +Disse innstillingene bør bare endres hvis noe ikke virker, og kun av eksperter :) +Activate Debugging Mode (winhttrack.log) +Aktiver feilsøking (winhttrack.log) +Rewrite links: internal / external +Skriv linker om igjen: internt / eksternt +Flow control +Flow-kontroll +Limits +Begrensninger +Identity +Identitet +HTML footer +HTML-fotnote +N# connections +Antall forbindelser +Abandon host if error +Forlat verten hvis det oppstår feil +Minimum transfer rate (B/s) +Minimum overføringshastighet (bytes per sekund) +Abandon host if too slow +Forlat verten hvis den er for langsom +Configure +Konfigurer +Use proxy for ftp transfers +Bruk proxy til FTP-overføringer +TimeOut(s) +Time-out(s) +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Forsøk +Size limit +Størrelsesbegrensning +Max size of any HTML file (B) +Maks. størrelse på hver HTML-fil (bytes) +Max size of any non-HTML file +Maks. størrelse på hver ikke-HTML-fil +Max site size +Maksimum websidestørrelse +Max time +Maksimum tid +Save prefs +Lagre innstillinger +Max transfer rate +Maksimum overføringshastighet +Follow robots.txt +Følg reglene i robots.txt +No external pages +Ingen eksterne websider +Do not purge old files +Ikke slett gamle filer +Accept cookies +Aksepter informasjonskapsler (cookies) +Check document type +Sjekk dokumenttype +Parse java files +Overfør java-filer +Store ALL files in cache +Lagre ALLE filer i cache +Tolerant requests (for servers) +Aksepter forespørsler (for servere) +Update hack (limit re-transfers) +Oppdater hack (begrens gjen-overføringer) +Force old HTTP/1.0 requests (no 1.1) +Gjennomtving gamle HTTP/1.0-forespørsler (ikke 1.1) +Max connections / seconds +Maksimum antall forbindelser / sekunder +Maximum number of links +Maksimum antall linker +Pause after downloading.. +Pause etter nedlastning... +Hide passwords +Skjul passord +Hide query strings +Skjul forespørsels-strenger +Links +Linker +Build +Struktur +Experts Only +Kun for eksperter +Flow Control +Flow-kontroll +Limits +Begrensninger +Browser ID +Nettleser-ID +Scan Rules +Søkeregler +Spider +Webrobot +Log, Index, Cache +Logg, forside, cache +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Vil du virkelig avslutte WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Ikke opprett tilkobling til leverandør (er allerede tilkoblet) +Do not use remote access connection +Ikke bruk fjernoppringning +Schedule the mirroring operation +Planlegg kopieringen +Quit WinHTTrack Website Copier +Avslutt WinHTTrack Website Copier +Back to starting page +Tilbake til startside +Click to start! +Klikk for å starte! +No saved password for this connection! +Ingen lagrede passord for denne tilkoblingen! +Can not get remote connection settings +Kan ikke lese oppringningsinnstillinger +Select a connection provider +Velg en internettleverandør +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Vennligst endre tilkoblingsinnstillinger hvis det er nødvendig,\nog klikk på FULLFØR for å begynne kopieringsprosessen. +Save settings only, do not launch download now. +Bare lagre innstillingene, ikke begynn kopieringen. +On hold +Pause +Transfer scheduled for: (hh/mm/ss) +Kopiering planlagt på tidspunkt: (hh/mm/ss) +Start +Start +Connect to provider (RAS) +Koble til leverandør (RAS) +Connect to this provider +Koble til denne leverandøren +Disconnect when finished +Koble fra når fullført +Disconnect modem on completion +Koble fra modem når fullført +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Vennligst fortell oss om feil eller problemer med programmet)\r\n\r\nUtvikling (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche og andre bidragsytere\r\n\r\nNorwegian translation:\r\nTobias "Spug" Langhoff ( spug_enigma@hotmail.com ) +About WinHTTrack Website Copier +Om WinHTTrack Website Copier +Please visit our Web page +Vennligst besøk vår internettside +Wizard query +Guide-spørsmål +Your answer: +Ditt svar: +Link detected.. +Link oppdaget... +Choose a rule +Velg en regel +Ignore this link +Ignorer denne linken +Ignore directory +Ignorer denne mappen +Ignore domain +Ignorer dette domenet +Catch this page only +Kopier bare denne siden +Mirror site +Kopier side +Mirror domain +Kopier domene +Ignore all +Ignorer alle +Wizard query +Guide-spørsmål +NO +NEI +File +Fil +Options +Innstillinger +Log +Logg +Window +Vindu +Help +Hjelp +Pause transfer +Pause kopiering +Exit +Avslutt +Modify options +Endre innstillinger +View log +Vis logg +View error log +Vis feillogg +View file transfers +Vis filoverføringer +Hide +Minimer +About WinHTTrack Website Copier +Om WinHTTrack Website Copier +Check program updates... +Se etter programoppdateringer (krever internett-tilkobling)... +&Toolbar +&Verktøylinje +&Status Bar +&Statuslinje +S&plit +&Del +File +Fil +Preferences +Innstillinger +Mirror +Kopier webside +Log +Logg +Window +Vindu +Help +Hjelp +Exit +Avslutt +Load default options +Åpne standardinnstillinger +Save default options +Lagre standardinnstillinger +Reset to default options +Tilbakestill til standardinnstillinger +Load options... +Åpne innstillinger... +Save options as... +Lagre innstillinger som... +Language preference... +Språk... +Contents... +Hjelp (engelsk)... +About WinHTTrack... +Om WinHTTrack... +New project\tCtrl+N +&Nytt prosjekt\tCtrl+N +&Open...\tCtrl+O +Å&pne...\tCtrl+O +&Save\tCtrl+S +La&gre\tCtrl+S +Save &As... +Lagre &som... +&Delete... +Sl&ett... +&Browse sites... +Forhåndsvis webside... +User-defined structure +Brukerdefinert struktur +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tFilnavn uten filtype (f.eks bilde)\r\n%N\tFilnavn MED filtype (f.eks bilde.gif)\r\n%t\tBare filtype (f.eks gif)\r\n%p\tBane [uten slutt-/] (f.eks /bilder)\r\n%h\tVertsnavn (f.eks www.someweb.com)\r\n%M\tMD5-URL (128-biters, 32 ASCII-bytes)\r\n%Q\tMD5-forespørsels-streng (128-biters, 32 ASCII-bytes(\r\n%q\tKort MD5-forespørsels-streng (16-biters, 4 ASCII-bytes)\r\n\r\n%s?\tKort navn (f.eks %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Eksempel:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\bilder\\bilde.gif +Proxy settings +Proxyinnstillinger +Proxy address: +Proxyadresse: +Proxy port: +Proxyport: +Authentication (only if needed) +Identifikasjon (hvis nødvendig) +Login +Brukernavn +Password +Passord +Enter proxy address here +Skriv inn proxyadresse her +Enter proxy port here +Skriv inn proxyport her +Enter proxy login +Skriv inn proxybrukernavn +Enter proxy password +Skriv inn proxypassord +Enter project name here +Skriv inn prosjektnavn her +Enter saving path here +Skriv inn banen der filene skal lagres +Select existing project to update +Velg eksisterende prosjekt som skal oppdateres +Click here to select path +Klikk her for å velge bane +HTTrack Project Wizard... +HTTrack prosjektguide... +New project name: +Nytt prosjektnavn: +Existing project name: +Eksisterende prosjektnavn: +Project name: +Prosjektnavn: +Base path: +Lagringsbane: +C:\\My Web Sites +C:\\Mine websider +Type a new project name, \r\nor select existing project to update/resume +Skriv inn et nytt prosjektnavn, \r\neller velg et eksisterende prosjekt du vil oppdatere/fortsette på +New project +Nytt prosjekt +Insert URL +Skriv inn URL +URL: +URL: +Authentication (only if needed) +Godkjennelse (bare hvis det trengs) +Login +Brukernavn +Password +Passord +Forms or complex links: +For skjemaer eller komplekse linker: +Capture URL... +'Fang' URL... +Enter URL address(es) here +Skriv inn URL-adresse(r) her +Enter site login +Skriv inn websidens brukernavn +Enter site password +Skriv inn websidens passord +Use this capture tool for links that can only be accessed through forms or javascript code +Bruk dette verktøyet for å 'fange' linker som bare kan nås via skjemaer eller JavaScript-koder +Choose language according to preference +Velg språket du vil bruke +Catch URL! +'Fang' URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Vennligst sett nettleserens midlertidige proxy-innstillinger til følgende verdi (kopier/lim inn proxy-adresse og port).\nKlikk så på OK-knappen i nettleseren din, eller klikk på linken du vil 'fange'. +This will send the desired link from your browser to WinHTTrack. +Dette vil sende linken fra nettleseren din til WinHTTrack. +ABORT +AVBRYT +Copy/Paste the temporary proxy parameters here +Kopier/lim inn de midlertidige proxy-innstillingene her +Cancel +Avbryt +Unable to find Help files! +Finner ikke hjelpefiler! +Unable to save parameters! +Kan ikke lagre parameterne! +Please drag only one folder at a time +Bare dra én mappe om gangen! +Please drag only folders, not files +Bare dra mapper, ikke filer! +Please drag folders only +Bare dra mapper! +Select user-defined structure? +Velg bruker-definert struktur? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Pass på at den brukerdefinerte strengen stemmer,\nellers vil filnavnene være ugyldige! +Do you really want to use a user-defined structure? +Vil du bruke en brukerdefinert struktur? +Too manu URLs, cannot handle so many links!! +For mange URLer, kan ikke håndtere så mange! +Not enough memory, fatal internal error.. +Ikke nok minne, fatal intern feil... +Unknown operation! +Ukjent kommando! +Add this URL?\r\n +Legg til denne URLen?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Advarsel: hovedprosessen svarer fremdeles ikke, URLen(e) kan ikke legges til... +Type/MIME associations +Type/MIME-tilknytninger +File types: +Filtyper: +MIME identity: +MIME-identitet: +Select or modify your file type(s) here +Velg eller endre filtypen(e) dine her +Select or modify your MIME type(s) here +Velg eller endre MIME-typen(e) dine her +Go up +Gå opp +Go down +Gå ned +File download information +Nedlastningsinformasjon om fil +Freeze Window +Frys vinduet +More information: +Mer informasjon: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Velkommen til WinHTTrack Website Copier!\n\nVennligst klikk på NESTE-knappen for å\n\n- starte et nytt prosjekt\n- eller fortsette en tidligere avbrutt kopiering +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Filnavn med etternavn:\nFilnavn som inneholder:\nDette filnavnet:\nMappenavn som inneholder:\nDette mappenavnet:\nLinker i dette domenet:\nLinker i domener som inneholder:\nLinker fra denne verten:\nLinker som inneholder:\nDenne linken:\nALLE LINKER +Show all\nHide debug\nHide infos\nHide debug and infos +Vis alle\nSkjul filsøking\nSkjul informasjon\nSkjul filsøking og informasjon +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Sidestruktur (standard)\nHTML i web/, bilder/andre filer i web/bilder/\nHTML i web/HTML, bilder/andre i web/bilder\nHTML i web/, bilder/andre i web/\nHTML i web/, bilder/andre i web/xxx, hvor xxx er filtypen\nHTML i web/HTML, bilder/andre i web/xxx\nSidestruktur, uten www.domene.xxx/\nHTML i side_navn/, bilder/andre filer i side_navn/bilder/\nHTML i side_navn/HTML, bilder/andre i side_navn/bilder\nHTML i side_navn/, bilder/andre i side_navn/\nHTML i side_navn/, bilder/andre i side_navn/xxx\nHTML i side_navn/HTML, bilder/andre i side_navn/xxx\mAlle filer på nettet/, med tilfeldige navn (gadget !)\nAlle filer i side_navn/, med tilfeldige navn (gadget !)\nBruker-definert struktur... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Bare søk\nLagre HTML-filer\nLagre ikke-HTML-filer\nLagre alle filer (standard)\nLagre HTML-filer først +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Bli i samme mappe\nKan gå ned (standard)\nKan gå opp\nKan gå både opp og ned +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Bli på samme adresse (standard)\nBli på samme domene\nBli på samme toppnivå-domene\nGå hvor som helst på internett +Never\nIf unknown (except /)\nIf unknown +Aldri\nHvis ukjent (bortsett fra /)\nHvis ukjent +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +ingen robots.txt-regler\nrobots.txt bortsett fra guide\nfølg robots.txt-regler +normal\nextended\ndebug +normal\nutvidet\nfeilsøk +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Last ned webside(r)\nLast ned webside(r) (spør meg)\nHent individuelle filer\nLast ned alle sidene (multiple mirror)\nTest linkene på sidene (bookmark test)\n* Fortsett avbrutt kopiering\n* Oppdater eksisterende kopi +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relativ URL / Fullstendig URL (standard)\nFullstendig URL / Fullstendig URL\nFullstendig URL / Fullstendig URL\nOriginal URL / Original URL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Polski.txt b/lang/Polski.txt new file mode 100755 index 0000000..9e87a54 --- /dev/null +++ b/lang/Polski.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Polski +LANGUAGE_FILE +Polski +LANGUAGE_ISO +pl +LANGUAGE_AUTHOR +Lukasz Jokiel (Opole University of Technology, Lukasz.Jokiel at po.opole.pl) \r\n +LANGUAGE_CHARSET +ISO-8859-2 +OK +OK +Cancel +Anuluj +Exit +Wyjœcie +Close +Zamknij +Cancel changes +Cofnij zmiany +Click to confirm +Kliknij aby potwierdziæ +Click to get help! +Kliknij aby uzyskaæ pomoc +Click to return to previous screen +Kliknij aby wróciæ +Click to go to next screen +Kliknij aby kontynuowaæ +Hide password +Ukryj has³o +Save project +Zachowaj projekt +Close current project? +Czy zamkn¹æ ten projekt ? +Delete this project? +Czy usun¹æ ten projekt ? +Delete empty project %s? +Czy usun¹æ pusty projekt %s? +Action not yet implemented +Funcja jeszcze nie zaimplementowana. +Error deleting this project +Wyst¹pi³ b³¹d podczas usuwania tego projektu. +Select a rule for the filter +Wybierz regu³ê dla tego filtra +Enter keywords for the filter +Podaj s³owa kluczowe dla filtra +Cancel +Anuluj +Add this rule +Dodaj ten filter +Please enter one or several keyword(s) for the rule +Proszê podaæ jedno lub wiele s³ów kluczowych dla tej regu³y +Add Scan Rule +Dodaj filtr +Criterion +Wybierz regu³ê +String +Podaj s³owo kluczowe +Add +Dodaj +Scan Rules +Filtry +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Mo¿esz teraz wykluczyæ lub zaakceptowaæ klika URLi lub ³aczy, dzieki u¿yciu wildcards.\nMo¿esz u¿yæ tak¿e spacji pomiêdzy filtrami.\nPrzyk³ad: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Wyklucz ³¹cza +Include link(s) +Zaakceptuj ³¹cza +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tip: Je¿eli chcesz zaakceptowaæ wszystkie gify na stronie(nach) u¿yj czegoœ w rodzaju +www.pewnastrona.com/*.gif.\n(+*.gif / -*.gif zaakceptuje/odrzuci WSZYSTKIE gify na WSZYSTKICH stornach) +Save prefs +Zapisz ustawienia +Matching links will be excluded: +£¹cza objête t¹ regu³¹ zostan¹ zignorowane (odrzucone): +Matching links will be included: +£¹cza objête t¹ regu³¹ zostan¹ zaakceptowane: +Example: +Przyk³ad: +gif\r\nWill match all GIF files +gif\r\nZnajdzie wszystkie gify +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +niebieskie\r\nZnajdzie wszystkie pliki zawieraj¹ce cz³on 'niebieskie', takie jak 'niebieskieniebo-maly.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +duzyplik.mov\r\nZnajdzie plik 'duzyplik.mov', ale nie 'duzyplik.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nZnajdzie ³¹cza z katalogiem zawieraj¹cym 'cgi' takie jak '/cgi-bin/pewnecgi.cgi' +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nZnajdzie ³¹cza z katalogiem zawieraj¹cym 'cgi-bin', ale na przyk³ad nie 'cgi-bin-2' +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +pewnastrona.com\r\nZnajdzie wszystkie ³¹cza takie jak www.pewnastrona.com, members.pewnastrona.com itd. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +pewnastrona\r\nZnajdzie wszystkie ³¹cza takie jak www.pewnastrona.com, www.pewnastrona.pl, www.pewnastrona.innastrona.edu itd. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.pewnastrona.com\r\nZnajdzie wszystkie ³¹cza takie jak www.pewnastrona.com/ ... (lecz nie takie jak members.pewnastrona.com/...) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +pewnastrona\r\nZnajdzie wszystkie ³acza takie jak www.pewnastrona.com/.., www.test.abc/mojapewnastrona/index.html, www.test.abc/test/pewnastrona.html itd. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/pewnastrona.html\r\nZnajdzie tylko ³¹cza typu www.test.com/test/pewnastrona.html. Zauwa¿, ¿e nale¿y wpisaæ zarówno adres (www.xxx.yyy), jak i œcie¿kê (/test/pewnastrona.html) +All links will match +Wszystkie ³acza bêd¹ akceptowane/ignorowane (odrzucone) +Add exclusion filter +Dodaj filtr, który bêdzie ignorowa³ (odrzuca³) +Add inclusion filter +Dodaj filtr, który bedzie akceptowa³. +Existing filters +Dodatkowe filtry +Cancel changes +Anuluj zmiany +Save current preferences as default values +Zapisz domyœlne ustawienia +Click to confirm +Kliknij aby potwierdziæ +No log files in %s! +Brak plików z logami w %s! +No 'index.html' file in %s! +Brak pliku index.html w %s! +Click to quit WinHTTrack Website Copier +Kliknij aby opuœciæ WinHTTrack Website Copier +View log files +Poka¿ pliki z logami +Browse HTML start page +Poka¿ stronê startow¹ html +End of mirror +Koniec tworzenia lustra (mirroru) +View log files +Poka¿ logi +Browse Mirrored Website +Otwórz kopiê strony Web +New project... +Nowy projekt +View error and warning reports +Poka¿ raport o b³êdach i ostrze¿eniach +View report +Poka¿ raport informacyjny +Close the log file window +Zamkinj okno z raportami +Info type: +Typ informacji +Errors +B³êdy +Infos +Informacje +Find +Szukaj +Find a word +ZnajdŸ s³owo +Info log file +Raport informacyjny +Warning/Errors log file +Raport o b³êdach i ost¿erzeniach +Unable to initialize the OLE system +Nie moge zainicjalizowac OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +W tym katalogu nie ma cache\r\nWinHTTrack nie mo¿e znaleŸæ ¿adnego przerwanego lustra (mirroru) +Could not connect to provider +Po³¹czenie z us³ugodawc¹ by³o niemo¿liwe +receive +odbieram +request +¿¹dam +connect +³¹czenie +search +szukaæ +ready +gotów +error +b³¹d +Receiving files.. +Pobieram pliki... +Parsing HTML file.. +Parsowanie pliku HTML +Purging files.. +Czyszczê pliki... +Loading cache in progress.. +Trwa wczytywanie cache... +Parsing HTML file (testing links).. +Parsowanie pliku HTML (testowanie ³¹cz) +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pauzujê (wybierz Lustro/Pauzuj transfer) aby kontunuowaæ) +Finishing pending transfers - Select [Cancel] to stop now! +Zatrzymywanie transferów w trakcie realizacji - Wybierz [Anuluj] aby zatrzymaæ teraz! +scanning +skanujê +Waiting for scheduled time.. +Czekam na okreœlon¹ godzinê aby wystartowaæ +Connecting to provider +£¹cze siê z us³ugodawc¹ +[%d seconds] to go before start of operation +Lustro czeka (%d sekund(ê)) aby wystartowaæ +Site mirroring in progress [%s, %s bytes] +Tworzenie lustra w toku (%s, %s bajtów) +Site mirroring finished! +Zakoñczono tworzenie lustra (mirroru) +A problem occured during the mirroring operation\n +Poajwi³ siê problem podczas tworzenia lustra\r\n +\nDuring:\n +Podczas:\r\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Je¿eli jest to wymagane sprawdŸ logi.\r\nKliknij OK aby wyjœæ z WinHTTrack Website Copier.\r\nDziêkujemy za u¿ywanie HTTrack ! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Zakoñczono tworzenie lustra.\r\nKliknij OK aby wyjœæ z WinHTTrack.\r\nSprawdŸ logi, upewnij siê, czy wszystko przebieg³o dobrze.\r\nDziêkujemy za u¿ywanie HTTrack ! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * TWORZENIE LUSTRA PRZERWANE! * *\r\nObecnie wykorzystywany cache, wymagany dla jakichkolwiek operacji uaktualniaj¹cych zawiera jedynie dane z obecnej przerwanej sesji.\r\nPoprzedni cache mo¿e zawieraæ bardziej kompletne dane; jeœli nie chcesz ich straciæ, przywróæ je i usuñ obecny cache.\r\n[Uwaga: Mo¿esz to ³atwo zrobiæ tutaj poprzez skasowanie htscache/new.* pliki]\r\nCzy uwa¿asz, ¿e poprzedni cache mo¿e zawieraæ bardziej kompletne informacje i czy przywróciæ go ? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * B£¡D LUSTRA! * *\r\nHTtrack stwierdza ze obecne lustro jest puste. Je¶li by³o to uaktualnienie, to przywrócono poprzedni± wersjê lustra. Powód: Nie mo¿na by³o odczytaæ pierwszych stron lub wyst±pi³ b³±d po³±czenia.\r\n=> Upewnij siê czy strona ci±gle istnieje, lub te¿ sprawd¼ ustawienia proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +Tip: Kliknij (Poka¿ logi) aby zobaczyæ informacje o b³êdach i ostrze¿eniach +Error deleting a hts-cache/new.* file, please do it manually +B³¹d podczas kasowania hts-cache/new.* plik/ów, proszê zrobiæ to rêcznie +Do you really want to quit WinHTTrack Website Copier? +Czy naprawdê chcesz wyjœæ z HTTrack ? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Tryb tworzenia lustra -\n\nPodaj adres(y) w miejscu na URL. +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Tryb tworzenia lustra z kreatorem (zadaje pytania) -\n\nPodaj adres(y) w miejscu na URL. +- File Download Mode -\n\nEnter file address(es) in URL box +- Tryb pobierania plików -\n\nPodaj adres(y) w miejscu na URL. +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Tryb testowania ³¹cz -\n\nPodaj adres(y) stron zawieraj¹cy ³¹cza do testowania w miejscu na URL. +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Uaktualnij/Kontunuuj tryb lustra -\n\nSprawdŸ adres(y) w miejscu na URL, a nastêpnie wciœnij przycisk Nastêpny' i sprawdŸ parametry. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Kontunuuj przerwany tryb lustra -\n\nSprawdŸ adres(y) w miejscu na URL, a nastêpnie wciœnij przycisk Nastêpny' i sprawdŸ parametry. +Log files Path +Œcie¿ka dla raportów +Path +Œcie¿ka +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +Tryb listy lustra, podaj adres(y) stron zawieraj¹ce ³¹cza do lustra w miejscu na URL. +New project / Import? +Nowy projekt / importowaæ ? +Choose criterion +Wybierz dzia³anie +Maximum link scanning depth +Maksymalna g³êbokoœæ ³¹cz do skanowania +Enter address(es) here +Tutaj podaj adres +Define additional filtering rules +Zdefiniuj dodatkowe filtry +Proxy Name (if needed) +Proxy (je¿eli wymagane) +Proxy Port +Port proxy +Define proxy settings +Zdefiniuj ustawienia proxy +Use standard HTTP proxy as FTP proxy +U¿yj standardowego proxy HTTP jako proxy FTP +Path +Œcie¿ka +Select Path +Wybierz œcie¿kê +Path +Œcie¿ka +Select Path +Wybierz œcie¿kê +Quit WinHTTrack Website Copier +Wyjœcie z WinHTTrack Website Copier +About WinHTTrack +O... WinHTTrack +Save current preferences as default values +Zapisz domyœlne opcje +Click to continue +Kliknij, aby kontunowaæ +Click to define options +Kliknij, aby zdefiniowaæ opcjê +Click to add a URL +Kliknij, aby dodaæ URL +Load URL(s) from text file +Wczytaj URLe z pliku tekstowego +WinHTTrack preferences (*.opt)|*.opt|| +Opcje WinHTTrack (*.opt)|*.opt|\r\n +Address List text file (*.txt)|*.txt|| +Tekstowy plik z adresami (*.txt)|*.txt|| +File not found! +Nie odnaleziono pliku! +Do you really want to change the project name/path? +Czy naprawdê chesz zmieniæ nazwê projektu/œcie¿kê ? +Load user-default options? +Wczytaæ domyœlne opcje u¿ytkownika ? +Save user-default options? +Zapisaæ domyœlne opcje u¿ytkownika ? +Reset all default options? +Wyczyœciæ wszystkie domyœlne opcje ? +Welcome to WinHTTrack! +Witamy w WinHTTrack Website Copier! +Action: +Dzia³anie: +Max Depth +Maksymalna g³êbokoœæ +Maximum external depth: +Maksymalna g³êbokoœæ zewnêtrzna: +Filters (refuse/accept links) : +Filtry (odrzuæ/akceptuj ³acza): +Paths +Œcie¿ki +Save prefs +Zapisz opcje +Define.. +Definiuj +Set options.. +Ustaw opcje +Preferences and mirror options: +Preferencje i opcje lustra +Project name +Nazwa projektu +Add a URL... +Dodaj URL... +Web Addresses: (URL) +Adres strony w Sieci: (URL) +Stop WinHTTrack? +Zatrzymaæ WinHTTrack? +No log files in %s! +Brak raportów w %s! +Pause Download? +Pauzowaæ transfer? +Stop the mirroring operation +Zatrzymaj tworzenie lustra +Minimize to System Tray +Schowaj to okno do paseka systemowego +Click to skip a link or stop parsing +Kliknij aby pomin¹æ ³¹cze lub przerwaæ parsowanie +Click to skip a link +Kliknij aby pomin¹æ ³¹cze +Bytes saved +Zapisanych bajtów: +Links scanned +Zeskanowanych ³¹cz: +Time: +Czas: +Connections: +Po³¹czenia: +Running: +Uruchomione: +Hide +Schowaj +Transfer rate +Szybkoœæ transferu: +SKIP +POMIÑ +Information +Informacje +Files written: +Zapisane pliki: +Files updated: +Zaktualizowane pliki: +Errors: +B³êdy: +In progress: +Podczas: +Follow external links +Pobierz pliki nawet jeœli maj¹ obcy (zwenêtrzny) adres +Test all links in pages +Przetestuj wszystkie ³¹cza na stronach +Try to ferret out all links +Spróbuj znaleŸæ (wykryæ) wszystkie ³¹cza +Download HTML files first (faster) +Najpeirw pobierz pliki HTML (szybsze dzia³anie) +Choose local site structure +Wybierz strukturê lokalnego serwisu +Set user-defined structure on disk +Ustaw zdefiniowan¹ przez u¿ytkownika strukturê na dysku +Use a cache for updates and retries +U¿yj cache dla uaktualnieñ i ponowieñ +Do not update zero size or user-erased files +Nie pobieraj plików ju¿ obecnych lokalnie, z zerow¹ wielkoœci¹ albo wymazancyh przez u¿ytkownika +Create a Start Page +Utwórz stronê startow¹ +Create a word database of all html pages +Utwórz bazê s³ów wystêpuj±cych we wszystkich stronach HTML +Create error logging and report files +Utwórz pliki z raportem o b³êdach i informacjach +Generate DOS 8-3 filenames ONLY +Twórz TYLKO pliki z nazw¹ w formacie 8.3 +Generate ISO9660 filenames ONLY for CDROM medias +Stwórz nazyw plików ISO9660 TYLKO dla CDROM +Do not create HTML error pages +Nie zapisuj stron html z informacj¹ o b³êdzie +Select file types to be saved to disk +Wybierz typy plików, które zostan¹ zapisane na dysku +Select parsing direction +Wybierz katalog lustra w tym serwisie +Select global parsing direction +Wybierz globalny katalog lustra w tym serwisie +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Ustaw metody przepisywania URL'i dla l±czy dostêpnych lokalnie (pobranych) oraz ³±czy dostêpnych przez Internet (niepobranych) +Max simultaneous connections +Maksymalna liczba po³¹czeñ +File timeout +Maksymalna wartoœæ przekroczenia czasu oczekiwania dla pliku +Cancel all links from host if timeout occurs +Odwo³aj wszelkie ³¹cza z hosta je¿eli ma miejsce przekroczenie czasu oczekiwanie +Minimum admissible transfer rate +Maksymalna tolerowana prêdkoœæ transferu +Cancel all links from host if too slow +Odwo³aj wszelkie ³¹cza z hosta je¿eli jest za wolny +Maximum number of retries on non-fatal errors +Maksymalna liczba ponowieñ je¿eli wydarzy siê nie-fatalny b³¹d +Maximum size for any single HTML file +Maksymalny rozmiar strony html +Maximum size for any single non-HTML file +Maksymalna wielkoœæ pliku +Maximum amount of bytes to retrieve from the Web +Maksymalna iloœæ bajtów mo¿liwych do transferu z Sieci Web +Make a pause after downloading this amount of bytes +Zrób pauzê po sic¹gniêciu takiej iloœci bajtów +Maximum duration time for the mirroring operation +Maksymalny czas dla lustra +Maximum transfer rate +Maksymalna prêdkoœæ transferu +Maximum connections/seconds (avoid server overload) +Maksymalna iloœæ po³¹czeñ na sekundê (zapobiwga przec¹¿eniu serwera) +Maximum number of links that can be tested (not saved!) +Maksymalna liczba ³±cz jakie mog± byæ przetestowane (zapisanych mo¿e byæ wiêcej!) +Browser identity +Identyfikacja przegl¹darki +Comment to be placed in each HTML file +Stopka do umieszczenia w ka¿dym pliku HTML +Back to starting page +Z powortem do strony startowej +Save current preferences as default values +Zapisz domyœlne opcje +Click to continue +Kliknij, aby kontynuowaæ +Click to cancel changes +Kliknij, aby anulowaæ zmiany +Follow local robots rules on sites +Dostosuj siê do praw robotów (robots) na serwisie +Links to non-localised external pages will produce error pages +Strony zewnêtrzne (niepobrane) bêd¹ po³¹czone do stron z b³êdami +Do not erase obsolete files after update +Nie wymazuj starych plików po uaktualnieniu +Accept cookies? +Zaakceptowaæ wys³ane ciasteczka (cookies)? +Check document type when unknown? +Sprawdzaæ typy dokumentów je¿eli s¹ nieznane? +Parse java applets to retrieve included files that must be downloaded? +Parsowaæ aplety Javy aby odnaleŸæ zawarte w nich pliki do pobrania ? +Store all files in cache instead of HTML only +Zmuœ do zapisania plików w cache a nie tylko w plikach HTML +Log file type (if generated) +Raportujj typ plików je¿eli zosta³ wygenerowany +Maximum mirroring depth from root address +Maksymalna g³êbokoœæ lustra od pierwszych adresów +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maksymalna g³êbokoœæ tworzenia lustra dla zewnêtrznych/zakazanych adresów +Create a debugging file +Utwórz plik dla debuggera +Use non-standard requests to get round some server bugs +Spróbuj omin¹æ pewne b³êdy (bugs) serwera dziêki u¿yciu niestandardowych ¿¹dañ +Use old HTTP/1.0 requests (limits engine power!) +U¿yj trybu zgodnoœci z starszym standardem HTTP/1.0 (ogranicza moc silnika programu) +Attempt to limit retransfers through several tricks (file size test..) +Próba ograniczenia powtórnych transferów dziêki kilku trikom (test wielko¶ci pliku) +Write external links without login/password +Zapisuj zewnêtrzne ³acza bez login/has³o +Write internal links without query string +Zapisuj wewnêtrzne ³¹cza bez paska wyszukiwania +Get non-HTML files related to a link, eg external .ZIP or pictures +Pobierz pliki nie-html w pobli¿u ³¹cza +Test all links (even forbidden ones) +Testuj wszystkie ³¹cza (nawet zabronione) +Try to catch all URLs (even in unknown tags/code) +Próbuj pozyskaæ wszystkie ³¹cza (nawet te w nieznaych tag'ach/kodzie) +Get HTML files first! +Pobierz najpierw pliki HTML +Structure type (how links are saved) +Typ struktury (sposób w jaki ³¹cza s¹ zapisywane) +Use a cache for updates +U¿yj cache dla uaktualnieñ +Do not re-download locally erased files +Nie pobieraj lokalnie usuniêtych plików +Make an index +Utwórz indeks +Make a word database +Utwórz bazê s³ów +Log files +Raportuj pobrane pliki +DOS names (8+3) +Nazwy DOSowe (8+3) +ISO9660 names (CDROM) +Nazwy ISO9660 (CDROM) +No error pages +Bez stron z b³êdami +Primary Scan Rule +G³ówny filtr +Travel mode +Tryb podó¿niczy (mirror) +Global travel mode +Globalny tryb podró¿niczy (mirror) +These options should be modified only exceptionally +Zwykle te opcje nie powinny byæ modyfikowane +Activate Debugging Mode (winhttrack.log) +Aktywacja trybu dla debuggera (winthhrack.log) +Rewrite links: internal / external +Przepisz ³±cza: na dostêpne lokalnie (pobierane i lokalne)/ na dostêpne przez Internet (zewnêtrzne i niepobierane) +Flow control +Kontrola przep³ywu +Limits +Ograniczenia +Identity +Identyfikacja +HTML footer +Stopka HTML +N# connections +N# po³¹czeñ +Abandon host if error +Gdy b³¹d, porzuæ hosta +Minimum transfer rate (B/s) +Minimalna szybkoœæ transferu (B/s) +Abandon host if too slow +Anuluj po³¹czenie gdy transfer zbyt wolny +Configure +Konfiguruj +Use proxy for ftp transfers +U¿yj proxy dla transferu przez FTP +TimeOut(s) +Przekroczenie(a) czasu oczekiwania +Persistent connections (Keep-Alive) +Podtrzymywane połączenia (Keep-Alive) +Reduce connection time and type lookup time using persistent connections +Zmniejsz czas połączenia i czas sprawdzania typu dziÄ™ki użyciu podtrzymywanych połączeÅ„ +Retries +Ponowienia +Size limit +Ograniczenia wielkoœci +Max size of any HTML file (B) +Maksymalna wielkoœæ html +Max size of any non-HTML file +Maksymalna wielkoœæ innych +Max site size +Maksymalna wielkoœæ serwisu +Max time +Maksymalny czas +Save prefs +Zapisz opcje +Max transfer rate +Maksymalna szybkoœæ transferu +Follow robots.txt +Akceptuj prawa robots.txt +No external pages +Bez stron zewnêtrznych +Do not purge old files +Nie wymazuj starych plików +Accept cookies +Akceptuj ciasteczka (cookies) +Check document type +SprawdŸ typ dokumentu +Parse java files +Parsuj pliki Javy +Store ALL files in cache +Zapisz wszystkie pliki w cache +Tolerant requests (for servers) +Toleruj¹ce ¿¹dania (dla serwerów) +Update hack (limit re-transfers) +Dostrajanie uaktualnienia (limitowanie retransferów) +Force old HTTP/1.0 requests (no 1.1) +U¿yj ¿¹dañ HTTP/1.0 (BEZ HTTP/1.1) +Max connections / seconds +Maksymalna iloœæ po³¹czeñ na sekundê +Maximum number of links +Maksymalna liczba ³±cz +Pause after downloading.. +Pauza po pobraniu +Hide passwords +Ukryj has³a +Hide query strings +Schowaj paski zapytañ +Links +£¹cza +Build +Struktura +Experts Only +Tryb eksperta +Flow Control +Kontrola przep³ywu +Limits +Ograniczenia +Browser ID +ID przegl¹darki +Scan Rules +Filtry +Spider +Poszukiwacz (Paj¹k) +Log, Index, Cache +Raport, indeks, cache +Proxy +Proxy +MIME Types +Typy MIME +Do you really want to quit WinHTTrack Website Copier? +Czy naprawdê chcesz wyjœæ z WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Nie ³¹cz siê z us³ugodawc¹ (jestem ju¿ po³¹czony) +Do not use remote access connection +Nie u¿ywaj po³¹czenia zewnêtrznego +Schedule the mirroring operation +Zadania dla lustra (mirrora) +Quit WinHTTrack Website Copier +WyjdŸ z WinHTTrack Website Copier +Back to starting page +Z powrotem do strony startowej +Click to start! +Kliknij aby wystartowaæ! +No saved password for this connection! +Nie zapisuj hase³ dla tego po³¹czenia! +Can not get remote connection settings +Nie mog³em pobraæ zdalnego ustawienia po³¹czenia +Select a connection provider +Wybierz us³ugodawcê z którym chcesz siê po³¹czyæ +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Mo¿esz teraz uruchomniæ tworzenie lustra przez wciœniêcie przycisku FINISH lub te¿ zdefiniowaæ wiêcej opcji po³¹czenia +Save settings only, do not launch download now. +Zapisz jedynie wybrane opcje, nie pobieraj ¿adnych plików +On hold +OpóŸnienie +Transfer scheduled for: (hh/mm/ss) +Czekam do: (hh/mm/ss/) +Start +Start +Connect to provider (RAS) +£¹czê siê z us³ugodawc¹ Internetu +Connect to this provider +Po³¹cz siê z tym us³ugodawc¹ +Disconnect when finished +Zakoñcz po³¹czenie z us³ugodawc¹ po pobraniu +Disconnect modem on completion +Po pobraniu roz³¹cz modem +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(proszê poinformowaæ nas o jakichkolwiek b³êdach w dzia³aniu programu)\r\n\r\nTwórcy:\r\nInterfejs(Windows): Xavier Roche\r\nMotor: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nPolska wersja jêzykowa: £ukasz Jokiel (Opole University of Technology, Lukasz.Jokiel@po.opole.pl) +About WinHTTrack Website Copier +O... WinHTTrack Website Copier +Please visit our Web page +Prosimy o odwiedzenie naszej strony w Sieci +Wizard query +Pytania kreatora +Your answer: +Twoja odpowiedŸ: +Link detected.. +Wykry³em ³¹cze +Choose a rule +Wybierz regu³ê +Ignore this link +Ignoruj to ³¹cze +Ignore directory +Ignoruj katalog +Ignore domain +Ignoruj domenê +Catch this page only +Pobierz tylko tê stronê +Mirror site +Lustro serwisu (mirror) +Mirror domain +Lustro domeny (mirror) +Ignore all +Ignoruj wszystko +Wizard query +Pytanie kreatora +NO +NIE +File +Plik +Options +Opcje +Log +Raport +Window +Okno +Help +Pomoc +Pause transfer +Pauzuj transfer +Exit +Wyjœcie +Modify options +Modyfikacja opcji +View log +Poka¿ raport +View error log +Poka¿ raport b³êdów +View file transfers +Poka¿ transfer plików +Hide +Schowaj +About WinHTTrack Website Copier +O... WinHTTrack Website Copier +Check program updates... +ZnajdŸ nowsz¹ wersjê programu +&Toolbar +Pasek narzêdziowy +&Status Bar +Pasek statusu +S&plit +Podzia³ +File +Plik +Preferences +Opcje +Mirror +Lustro +Log +Raport +Window +Okno +Help +Pomoc +Exit +Wyjœcie +Load default options +Wczytaj domyœlne opcje +Save default options +Zapisz domyœlne opcje +Reset to default options +Wyczyœæ domyœlne opcje +Load options... +Wczytaj opcje +Save options as... +Zapisz opcje jako... +Language preference... +Wybór jêzyka +Contents... +Zawartoœæ +About WinHTTrack... +O... WinHTTrack Website Copier +New project\tCtrl+N +Nowy projekt\tCtrl+N +&Open...\tCtrl+O +&Otwórz... \tCtrl+O +&Save\tCtrl+S +Zapis&z\tCtrl+S +Save &As... +Zapisz j&ako... +&Delete... +&Usuñ +&Browse sites... +&Przegl±daj strony sieciowe... +User-defined structure +Struktura zdefiniowana przez u¿ytkownika +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\r\nNazwa pliku bez typu pliku (np: image)\r\n%N\r\nNazwa wraz z typem pliku (np: image.gif)\r\n%t\r\nTyp pliku (np: .gif)\r\n%p\r\nScie¿ka [bez koñcowego /] (np: /pewneobrazki)\r\n%h\r\nNazwa hosta (np: www.pewnyhost.com)\r\n%s?\r\n%M\tURL MD5 (128 bits, 32 ascii bytes)\r\n%Q\tquery string MD5 (128 bits, 32 ascii bytes)\r\n%q\tsmall query string MD5 (16 bits, 4 ascii bytes)\r\n\r\nKrótka wersja dla DOS (np: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Przyk³ad:\r\n%h%p/%n%q.%t\r\n-> \t\tc:\\mirror\\www.pewienhost.com\\pewneobrazki\\obrazek.gif +Proxy settings +Ustawienia proxy +Proxy address: +Adres proxy +Proxy port: +Port proxy +Authentication (only if needed) +Autentykacja (je¿eli wymagana) +Login +Login +Password +Has³o (pass) +Enter proxy address here +Tutaj podaj adres proxy +Enter proxy port here +Tutaj podaj port proxy +Enter proxy login +Tutaj podaj login proxy +Enter proxy password +Tutaj podaj has³o (pass) dla proxy +Enter project name here +Tutaj podaj nazwê projektu +Enter saving path here +Tutaj podaj œcie¿kê pod któr¹ zostanie zapisany projekt +Select existing project to update +Tutaj wybierz istniej¹cy projekt przeznaczony do aktualizacji +Click here to select path +Kliknij tutaj aby wybraæ œcie¿kê +HTTrack Project Wizard... +Kreator projektu HTTrack +New project name: +Nazwa nowego projektu: +Existing project name: +Nazwa istniej¹cego projektu: +Project name: +Nazwa projektu: +Base path: +Œcie¿ka bazowa +C:\\My Web Sites +C:\\Moje Strony Web +Type a new project name, \r\nor select existing project to update/resume +Wpisz nazwê nowego projektu,\r\nalbo wybierz istniej¹cy projekt, który chesz kontunuowaæ/uaktualniæ +New project +Nowy projekt +Insert URL +Wstaw URL +URL: +Adres URL: +Authentication (only if needed) +Autentykacja (je¿eli wymagana) +Login +Login +Password +Has³o (pass) +Forms or complex links: +Formularze lub skomplikowane ³¹cza: +Capture URL... +Pobierz (pochwyæ) URL +Enter URL address(es) here +Tutaj podaj adres URL +Enter site login +Podaj login serwisu +Enter site password +Podaj has³o (pass) serwisu +Use this capture tool for links that can only be accessed through forms or javascript code +U¿yj tego narzêdzia aby pobraæ ³¹cza, które s¹ dostêpne tylko przez formularze lub ³¹cza z javascript'u +Choose language according to preference +Wybierz jêzyk +Catch URL! +Pobierz URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Proszê tymczasowo ustawiæ proxy w Twojej przegl¹darce (lub Ustawieniach Internetowych) na nastêpuj¹ce: (wytnij/wstaw adres proxy oraz port).\r\nNastêpnie w przegl¹darce, kliknij na formularzu lub kliknij ³¹cze, które chcesz pobraæ. +This will send the desired link from your browser to WinHTTrack. +Ta operacja przechwyci ³¹cze z Twojej przegl¹darki do HTTrack'a +ABORT +ANULUJ +Copy/Paste the temporary proxy parameters here +Wytnij/wstaw tutaj tymczasowe ustawienia proxy +Cancel +Anuluj +Unable to find Help files! +Nie mo¿na znaleŸæ plików pomocy +Unable to save parameters! +Zapisanie opcji niemo¿liwe +Please drag only one folder at a time +Proszê przeci¹gn¹æ tylko jeden folder +Please drag only folders, not files +Proszê przeci¹gn¹æ folder, a nie plik +Please drag folders only +Proszê przeci¹gn¹æ folder +Select user-defined structure? +Wybraæ zdefiniowan¹ przez u¿ytkownika strukturê ? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Upewnij siê czy zdefiniowane przez u¿ytkownika ci¹gi (strings) s¹ poprawne\r\nJeœli tego nie zrobisz to nazwy plików bêd¹ wygl¹da³y bardzo dziwnie! +Do you really want to use a user-defined structure? +Czy naprawdê chcesz wybraæ zdefiniowan¹ przez u¿ytkownika strukturê? +Too manu URLs, cannot handle so many links!! +Zbyt du¿o URLi, nie mo¿na obs³u¿yæ tak wielu ³¹cz!! +Not enough memory, fatal internal error.. +Za ma³o pamiêci, fatalny b³¹d wewnêtrzny... +Unknown operation! +Nieznana operacja! +Add this URL?\r\n +Dodaæ ten URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Ostrze¿enie: g³ówny proces ci¹gle nie odpowiada, nie mo¿na dodaæ URLi.. +Type/MIME associations +Typ/MIME Skojarzenia +File types: +Typy plików: +MIME identity: +To¿samoœæ MIME +Select or modify your file type(s) here +Wybierz lub zmodyfikuj tutaj swoje plik(i) +Select or modify your MIME type(s) here +Wybierz lub zmodyfikuj tutaj swoje typy MIME +Go up +IdŸ w górê +Go down +IdŸ w dó³ +File download information +Informacje o transferze plików +Freeze Window +Zachowaj uk³ad okien +More information: +Dodatkowe informacje: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Witamy w WinHTTrack Website Copier!\n\nProszê wcisn¹ przycisk DALEJ aby\n\n- uruchomiæ nowy projekt\n- aby wznowiæ przerwany projekt +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Nazwy plików z rozszerzeniem:\nNazwy plików zawieraj¹ce:\nTa nazwa pliku:\nNazwy folderów zawieraj¹ce:\nTa nazwa folderu:\n£¹cza w tej domenie:\n£¹cza w domenie zawieraj¹ce:\n£¹cza z tego hosta:\n£¹cza zawieraj¹ce:\nTo ³¹cze:\nWSZYSTKIE £¥CZA +Show all\nHide debug\nHide infos\nHide debug and infos +Poka¿ wszystko\nUkryj debugowanie\nUkryj informacje\nUkryj debugowanie i informacje +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Struktura strony (domyœlnie))\nHtml w Web/, obrazki/inne pliki w Web/obrazki/\nHtml na web/html, obrazki/outros na web/imagens\nHtml na web/, imagens/outros na web/\nHtml na web/, imagens/outros na web/xxx, quando xxx é a extensão do arquivo\nHtml na web/html, imagens/outros na web/xxx\nEstrutura do site, sem www.dominio.xxx/\nHtml no nome_do_site/, imagens/outros no nome_do_site/imagens/\nHtml no nome_do_site/html, imagens/outros no nome_do_site/imagens\nHtml no nome_do_site/, imagens/outros no nome_do_site/\nHtml no nome_do_site/, imagens/outros no nome_do_site/xxx\nHtml no nome_do_site/html, imagens/outros no nome_do_site/xxx\nTodos os arquivos na web/, com nomes aleatórios (gadget !)\nTodos os arquivos no nome_do_site/, com nomes aleatórios (gadget !)\nEstrutura definida pelo usuário.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Skanuj\nZachowaj pliki html\nZachowaj pliki nie-html\nZachowaj wszystkie pliki (domyœlnie)\nNajpierw zachowaj pliki html +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Pozostañ w tym samym katalogu\nMo¿e iœæ w dó³ (domyœlnie)\nMo¿e iœæ w górê\nMo¿e iœæ w górê i w dó³ +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Pozostañ na tym samym adresie (domyœlnie)\nPozostañ na tej samej domenie\nPozostañ na domenie nadrzêdnej\nIdŸ po ca³ej sieci Web +Never\nIf unknown (except /)\nIf unknown +Nigdy\nJeœli nieznane (bez /)\nJeœli nieznane +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Ignoruj regu³y robots.txt\nrobots.txt oprócz kreatora\npod¹¿aj za regu³ami robots.txt +normal\nextended\ndebug +normalny\nrozszerzony\ntestowy +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Pobierz stronê(y) Web\nPobierz stronê(y) Web + pytania\npobierz oddzielne pliki\nPobierz strony Web w stronach (wiele luster)\nTestuj ³¹cza na stronach (test zak³adek)\n* Wznów tworzenie lustra\n* Uaktualnij lustro +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relatywne URI / Absolutne URI (domy¶lnie)\nAbsolutne RRL / Absolutne URL\nAbsolutne URI / Absolutne URL\nOriginalne URL / Oryginalne URL +Open Source offline browser +Przegladarka Offline Open Source +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Program kopiujacy strony/Przegladarka Offline. Kopiuje strony WWW z Internetu na Twoj komputer. Darmowy. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, przegladarka offline. +URL list (.txt) +Lista URL'i (.txt) +Previous +Poprzedni +Next +Nastepny +URLs +URL'e +Warning +Ostrzezenie +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Twoja przegladarka nie obsluguje jeszcze JavaScript. Aby lepiej wyswietlac strony uzyj przegladarki z obsluga JavaScript. +Thank you +Dziekuje +You can now close this window +Mozesz teraz zamknac to okno. +Server terminated +Serwer zakonczyl prace +A fatal error has occured during this mirror +Podczas tworzenia lustra wydarzyl sie fatalny blad. diff --git a/lang/Portugues-Brasil.txt b/lang/Portugues-Brasil.txt new file mode 100755 index 0000000..65a1509 --- /dev/null +++ b/lang/Portugues-Brasil.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Português-Brasil +LANGUAGE_FILE +Portugues-Brasil +LANGUAGE_ISO +pt +LANGUAGE_AUTHOR +Paulo Neto (company at layout.com.br) \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +OK +Cancel +Cancelar +Exit +Sair +Close +Fechar +Cancel changes +Cancelar alterações +Click to confirm +Clique para confirmar +Click to get help! +Clique para obter ajuda +Click to return to previous screen +Clique para voltar +Click to go to next screen +Clique para prosseguir +Hide password +Ocultar senha +Save project +Salvar projeto +Close current project? +Fechar o projeto atual? +Delete this project? +Excluir este projeto? +Delete empty project %s? +Excluir o projeto vazio %s? +Action not yet implemented +Ação ainda não implementada +Error deleting this project +Erro ao excluir este projeto +Select a rule for the filter +Escolha uma regra para o filtro +Enter keywords for the filter +Digite aqui as palavras para filtrar +Cancel +Cancelar +Add this rule +Adicionar esta regra +Please enter one or several keyword(s) for the rule +Digite uma ou mais palavras para esta regra +Add Scan Rule +Adicionar filtro +Criterion +Escolha uma regra +String +Escolha uma senha +Add +Adicionar +Scan Rules +Regras de filtragem +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Pode-se excluir ou aceitar várias URL's ou links, usando (*) ou (?)\n Pode-se usar vírgulas (,) ou espaços entre os filtros.\n\n Por Exemplo: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Excluir links +Include link(s) +Incluir links +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Dica: Se você quiser incluir todos os gif's da web, usar algo como +www.algumacoisa.com/*.gif. \n(+*.gif / -*.gif irá incluir/excluir TODOS os gif's de todos os sites) +Save prefs +Salvar preferências +Matching links will be excluded: +Estes links serão proibidos +Matching links will be included: +Estas regras serão incluidas +Example: +Exemplo: +gif\r\nWill match all GIF files +gif\r\nDetectará todos os arquivos gif (ou arquivos GIF) +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +verde\r\nDetectará todos os arquivos contendo verde, tais como 'verdepiscina.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +grande.mov\r\nDetectará o arquivo 'grande.mov', porém não 'grande2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nDetectará links em diretórios contendo 'cgi' tais como /cgi-bin/algumacoisa.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nDetectará links (diretórios) com nomes 'cgi-bin (porém não cgi-bin-2, por exemplo) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +algumacoisa.com\r\nDetectará todos os links como www.algumacosia.com, privado.algumacoisa.com etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +algumsite\r\nDetectará links como www.algumsite.com, www.algumsite.edu, private.algumsite.outrosite.com, etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +ww.algumsite.com\r\nDetectará todos os links como ww.algumsite.com/... (porém não links como private.algumsite.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +algumsite\r\nDetectará todos os links como www.algumsite.com/.., www.teste.abc/dealgumsite/index.html, www.teste.abc/teste/algumsite.html etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.teste.com/teste/algumsite.html\r\nApenas detectará links como www.teste.com/teste/algumsite.html. Note que você terá que digitar ambos os endereços (www.xxx.yyy) e caminhos (/teste/algumsite.html) +All links will match +Todos os links serão detectados +Add exclusion filter +Adicionar filtro de exclusão +Add inclusion filter +Adicionar filtro de inclusão +Existing filters +Filtros existentes +Cancel changes +Cancelar alterações +Save current preferences as default values +Salvar preferências atuais como valores padrão +Click to confirm +Clique para confirmar +No log files in %s! +Não há relatórios em %s! +No 'index.html' file in %s! +Não existe o arquivo index.html em %s! +Click to quit WinHTTrack Website Copier +Click para sair do Website WinHTTrack Copier +View log files +Visualizar relatórios +Browse HTML start page +Navegar para a página inicial +End of mirror +Cópia finalizada +View log files +Visualizar relatórios +Browse Mirrored Website +Explorar a cópia do site +New project... +Novo projeto... +View error and warning reports +Visualizar relatórios de erros e avisos +View report +Visualizar informações do relatório +Close the log file window +Fechar janela do relatório +Info type: +Tipo de informação: +Errors +Erros +Infos +Informações +Find +Localizar +Find a word +Localizar uma palavra +Info log file +Informações do relatório +Warning/Errors log file +Atenção/Erros de relatório +Unable to initialize the OLE system +Não foi possível iniciar o sistema OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +O WinHTTrack não pode encontar nenhuma cópia finalizada na pasta especificada! +Could not connect to provider +Não foi possível conectar ao provedor +receive +receber +request +Solicitar +connect +Conectar +search +Localizar +ready +preparado +error +erro +Receiving files.. +Recebendo arquivos... +Parsing HTML file.. +Analizando arquivo HTML... +Purging files.. +Limpando arquivos... +Loading cache in progress.. + +Parsing HTML file (testing links).. +Analizando arquivo HTML (testando links)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pausa - Escolher [Cópia do site]/[Suspender download] para prosseguir operação +Finishing pending transfers - Select [Cancel] to stop now! +Finalizando transferências pendentes - Selecione [Cancelar] para parar agora! +scanning +analizando +Waiting for scheduled time.. +Aguardando horário programado para iniciar... +Connecting to provider +Conectando ao provedor +[%d seconds] to go before start of operation +[%d segundos] antes de iniciar a operação +Site mirroring in progress [%s, %s bytes] +Processo de recebimento [%s, %s bytes] +Site mirroring finished! +Cópia do site finalizada! +A problem occured during the mirroring operation\n +Ocorreu um problema durante a operação de recebimento\n +\nDuring:\n +Durante:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Veja o relatório se necessário.\n\nClique OK para sair do WinHTTrack.\n\nObrigado por usar o WinHTTrack Website Copier! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Cópia finalizada.\nClique OK para sair.\nVeja o relatório para verificar se está tudo OK.\n\nObrigado por utilizar o WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * CÓPIA INTERROMPIDA! * *\r\nO cache temporário atual é necessário para qualquer operação de atualização e somente contém dados carregados durante a presente sessão.\r\nÉ possível que o cache anterior contenha dados mais completas; se você não quiser perder esses dados, você deve restaurá-lo e excluir o cache atual.\r\n[Nota: Esta operação pode ser facilmente executada aqui excluindo os arquivos hts-cache/novo.*]\r\n\r\nVocê acredita que o cache anterior pode conter informações mais completas, e você deseja restaurá-lo? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ERRO DE CÓPIA! * *\r\nO HTTrack detectou que a cópia atual está vazia. Se ela fosse uma atualização, a cópia anterior teria sido restaurada.\r\nCausa: a primeira página não foi encontrada, ou um problema de conexão ocorreu.\r\n=> Assegure-se de que o website existe, e/ou verifique suas configurações proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +Dica: Clique [Ver relatório] para visualizar avisos e as mensagens de erro +Error deleting a hts-cache/new.* file, please do it manually +Erro ao excluir o arquivo hts-cache/novo.*, por favor faça isto manualmente +Do you really want to quit WinHTTrack Website Copier? +Você quer realmente sair do WinHTTrack Website? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Método da cópia automática -\n\nIntroduza o(s) endereço(s) na caixa de URL's +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Método de cópia com assistente (faz perguntas) -\n\nDigite o(s) endereço(s) na caixa de URL's +- File Download Mode -\n\nEnter file address(es) in URL box +- Método de download do arquivo -\n\nIntroduza o(s) endereço(s) do(s) arquivo(s) na caixa de URL. +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Método de teste dos Links -\n\nIntroduza o(s) endreço(s) da(s) página(s) contendo os links para testar na caixa de URL. +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Método de atualização -\n\nVerifique o(s) endereço(s) na caixa de URL's, verifique os parâmetros se necessário e então clique o botão 'AVANÇAR'. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Método de continuação (Operação Interrompida) -\n\nVerifique o(s) endereço(s) na caixa de URL's, verifique os parâmetros se necessário e então clique o botão 'AVANÇAR'. +Log files Path +Caminho do arquivo de relatório +Path +Caminho +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +Método da lista de links -\n\nUtilize a caixa URL's para digitar o(s) endereço(s) da(s) página(s) contendo links para recebimento. +New project / Import? +Novo projeto / Importar? +Choose criterion +Escolher uma ação +Maximum link scanning depth +Profundidade máxima de rastreamento +Enter address(es) here +Digite o(s) endereço(s) aqui +Define additional filtering rules +Definir filtros adicionais +Proxy Name (if needed) +Nome do Proxy (se necessário) +Proxy Port +Porta do servidor proxy +Define proxy settings +Definir configurações do servidor proxy +Use standard HTTP proxy as FTP proxy +Utilizar proxy HTTP padrão como proxy FTP +Path +Caminho +Select Path +Selecionar caminho +Path +Caminho +Select Path +Selecionar caminho +Quit WinHTTrack Website Copier +Sair do WinHTTrack Website Copier +About WinHTTrack +Sobre o WinHTTrack +Save current preferences as default values +Salvar preferências atuais como valor padrão +Click to continue +Clique para continuar +Click to define options +Clique para definir opções +Click to add a URL +Clique para adicionar uma URL +Load URL(s) from text file +Carregar URL's de um arquivo texto +WinHTTrack preferences (*.opt)|*.opt|| +Preferências do WinHTTrack (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Arquivo de texto da lista de endereços (*.txt)|*.txt|| +File not found! +Arquivo não encontrado! +Do you really want to change the project name/path? +Você deseja realmente alterar o nome/caminho do projeto? +Load user-default options? +Carregar opções padrão do usuário? +Save user-default options? +Salvar opções padrão do usuário? +Reset all default options? +Refazer todas as opções padrão? +Welcome to WinHTTrack! +Bem-vindo ao WinHTTrack Website Copier! +Action: +Ação: +Max Depth +Profundidade máxima: +Maximum external depth: +Máximo de profundidade externa: +Filters (refuse/accept links) : +Filtros (incluir/excluir links) +Paths +Caminhos +Save prefs +Salvar preferências +Define.. +Definir... +Set options.. +Definir as opções... +Preferences and mirror options: +Parâmetros e opções de cópia do site +Project name +Nome do projeto +Add a URL... +Adicionar URL... +Web Addresses: (URL) +Endereço Web: (URL) +Stop WinHTTrack? +Suspender o WinHTTrack? +No log files in %s! +Nenhum relatório em %s! +Pause Download? +Suspender a cópia do site? +Stop the mirroring operation +Parar recebimento +Minimize to System Tray +Minimizar para barra de sistema +Click to skip a link or stop parsing +Clique para ignorar um link ou interromper a cópia +Click to skip a link +Clique para ignorar um link +Bytes saved +Bytes gravados: +Links scanned +Link(s) processado(s) +Time: +Tempo: +Connections: +Conexões: +Running: +Em execução: +Hide +Minimizar +Transfer rate +Taxa de transferência: +SKIP +IGNORAR +Information +Informações +Files written: +Arquivos gravados: +Files updated: +Arquivos atualizados: +Errors: +Erros: +In progress: +Em progresso: +Follow external links +Copiar arquivos mesmo em links externos +Test all links in pages +Testar todos os links da página +Try to ferret out all links +Tentar detectar todos os links +Download HTML files first (faster) +Transferir primeiro os arquivos HTML (mais rápido) +Choose local site structure +Escolher estrutura local dos arquivos +Set user-defined structure on disk +Configurar estrutura definida pelo usuário no disco +Use a cache for updates and retries +Usar cache para atualizações e novas tentativas +Do not update zero size or user-erased files +Não atualizar arquivos presentes, com tamanho zero ou excluídos pelo usuário +Create a Start Page +Criar uma página inicial +Create a word database of all html pages +Criar uma base de dados da palavra de todas páginas HTML +Create error logging and report files +Criar relatórios de erros e informações +Generate DOS 8-3 filenames ONLY +Gerar SOMENTE nomes de arquivos DOS (8+3 caracteres) +Generate ISO9660 filenames ONLY for CDROM medias + +Do not create HTML error pages +Não criar páginas de erro HTML +Select file types to be saved to disk +Selecionar tipos de arquivos para salvar +Select parsing direction +Selecionar direção de navegação no site +Select global parsing direction +Selecionar direção geral do site +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) + +Max simultaneous connections +Máximo de conexões simultâneas +File timeout +Tempo limite de espera por um arquivo +Cancel all links from host if timeout occurs +Cancelar todos os links de um servidor se ocorrer 'excesso de tempo' +Minimum admissible transfer rate +Taxa mínima de transferência +Cancel all links from host if too slow +Cancelar todos os links de um servidor se ele for demasiadamente lento +Maximum number of retries on non-fatal errors +Número máximo de tentativas se um erro não fatal ocorrer +Maximum size for any single HTML file +Tamanho máximo de cada página HTML +Maximum size for any single non-HTML file +Tamanho máximo de cada arquivo +Maximum amount of bytes to retrieve from the Web +Número máximo de bytes para copiar da Web +Make a pause after downloading this amount of bytes +Pausar após fazer o download desta quantidade de bytes +Maximum duration time for the mirroring operation +Tempo máximo para efetuar a cópia +Maximum transfer rate +Taxa de transferência máxima +Maximum connections/seconds (avoid server overload) +Máximo de conexões/segundos (para evitar sobrecarga dos servidores) +Maximum number of links that can be tested (not saved!) +Número de máximo de links que pode ser testado (não armazenado!) +Browser identity +Indentidade do navegador +Comment to be placed in each HTML file +Notas de rodapé em cada arquivo HTML +Back to starting page +Voltar à página inicial +Save current preferences as default values +Salvar preferências atuais como valor padrão +Click to continue +Clique para continuar +Click to cancel changes +Clique para cancelar alterações +Follow local robots rules on sites +Seguir as regras de mecanismo local para o site +Links to non-localised external pages will produce error pages +Links para páginas externas não localizadas produzirão páginas de erro +Do not erase obsolete files after update +Não excluir arquivos obsoletos após atualização +Accept cookies? +Aceitar cookies? +Check document type when unknown? +Verificar tipo do documento se for desconhecido? +Parse java applets to retrieve included files that must be downloaded? +Analisar applets JAVA para incluir arquivos recuperados que deverão ser recebidos? +Store all files in cache instead of HTML only +Armazenar todos os arquivos no cache em vez de somente HTML +Log file type (if generated) +Tipo de relatório (se gerado) +Maximum mirroring depth from root address +Profundidade máxima de recebimento do endereço raiz +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Máximo de profundidade de espelhamento externo/endereços proibidos (0, isto é, nenhum, é o padrão) +Create a debugging file +Criar um arquivo de debug +Use non-standard requests to get round some server bugs +Tentar evitar alguns erros do servidor usando chamadas não padrão +Use old HTTP/1.0 requests (limits engine power!) +Utilizar chamadas antigas HTTP/1.0 limita a capacidade de captura! +Attempt to limit retransfers through several tricks (file size test..) +Tentativa de limitar a retransferência através de várias maneiras (teste do tamanho do arquivo..) +Write external links without login/password +Gravar links externos sem login/senha +Write internal links without query string +Gravar links internos sem perguntar +Get non-HTML files related to a link, eg external .ZIP or pictures +Capturar arquivos não HTML próximo de um link (ex: arquivos .ZIP localizados no exterior) +Test all links (even forbidden ones) +Testar todos os links (mesmo os proibidos) +Try to catch all URLs (even in unknown tags/code) +Tentar detectar todas as URL's (mesmo que os códigos sejam desconhecidos) +Get HTML files first! +Receber arquivos HTML primeiro! +Structure type (how links are saved) +Tipo de estrutura (como os links são gravados) +Use a cache for updates +Utilizar cache para atulizações +Do not re-download locally erased files +Não receber novamente arquivos excluídos localmente +Make an index +Criar um índice +Make a word database +Criar um banco de dados de palavras +Log files +Relatórios +DOS names (8+3) +Nomes DOS (8+3) +ISO9660 names (CDROM) + +No error pages +Sem página de erros +Primary Scan Rule +Filtro primário +Travel mode +Método de percurso +Global travel mode +Método de percurso global +These options should be modified only exceptionally +Normalmente estas configurações não devem ser alteradas! +Activate Debugging Mode (winhttrack.log) +Ativar método de debug (winhttrack.log) +Rewrite links: internal / external + +Flow control +Controle de fluxo +Limits +Limites +Identity +Identificação +HTML footer +Rodapé do HTML +N# connections +Número de conexões +Abandon host if error +Abandonar servidor em caso de erro +Minimum transfer rate (B/s) +Taxa de transferência mínima (bps) +Abandon host if too slow +Abandonar site se for lento demais +Configure +Configurar +Use proxy for ftp transfers +usar servidor proxy para transferências FTP +TimeOut(s) +Limite de tempo +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Tentativas +Size limit +Limite de tamanho +Max size of any HTML file (B) +Tamanho máximo dos arquivos html: +Max size of any non-HTML file +Tamanho máximo de outros arquivos: +Max site size +Tamanho máximo do site +Max time +Tempo máximo de captura +Save prefs +Salvar preferências +Max transfer rate +Taxa de transferência máxima +Follow robots.txt +Seguir regras do arquivo robots.txt +No external pages +Sem páginas externas +Do not purge old files +Não excluir arquivos antigos +Accept cookies +Aceitar cookies +Check document type +Verificar tipos de documento +Parse java files +Analizar arquivos JAVA +Store ALL files in cache +Armazenar todos os arquivos no cache +Tolerant requests (for servers) +Requisição de tolerância (para servidores) +Update hack (limit re-transfers) +Corte de atualização (limite da retransferência) +Force old HTTP/1.0 requests (no 1.1) +Forçar requisição HTTP/1.0 anterior (não 1.1) +Max connections / seconds +Número máximo de conexões/segundos +Maximum number of links +Número máximo de links +Pause after downloading.. +Suspender após copiar... +Hide passwords +Ocultar senha +Hide query strings +Ocultar seqüencia de perguntas +Links +Links +Build +Estrutura +Experts Only +Somente especialistas +Flow Control +Controle de fluxo +Limits +Limites +Browser ID +Identidade do navegador +Scan Rules +Filtros +Spider +Indexador +Log, Index, Cache +Relatório, Índice, Cache +Proxy +Servidor proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Você deseja realmente sair do WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Não conectar ao provedor (se já estabelecida) +Do not use remote access connection +Não usar acesso remoto de conexão +Schedule the mirroring operation +Programar uma operação alternativa +Quit WinHTTrack Website Copier +Sair do WinHTTrack Website Copier +Back to starting page +Voltar à página inicial +Click to start! +Clique para iniciar +No saved password for this connection! +Não salvar senha para esta conexão! +Can not get remote connection settings +Não foi possível obter parâmetros de conexão +Select a connection provider +Selecionar uma conexão ao provedor de acesso +Start +Iniciar +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Favor ajustar os parâmetros de conexão se necessário,\nentão pressione INICIAR para carregar a operação alternativa +Save settings only, do not launch download now. +Somente salvar configurações, não carregar agora. +On hold +Espera +Transfer scheduled for: (hh/mm/ss) +Aguardar até às: (hh/mm/ss) +Start +Iniciar +Connect to provider (RAS) +Provedor de acesso (RAS) +Connect to this provider +Conectar a este provedor +Disconnect when finished +Desconectar ao finalizar +Disconnect modem on completion +Desconectar o modem ao finalizar +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(por favor nos comunique sobre erros ou problemas)\r\n\r\nDesenvolvimento:\r\nInterface (Windows): Xavier Roche\r\nMotor: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche e outros colaboradores\r\nTraduzido para o Português-Brasil por :\r\nPaulo Neto (Layout do Brasil, company@layout.com.br) +About WinHTTrack Website Copier +Sobre o WinHTTrack Website Copier +Please visit our Web page +Por favor visite nossa página da Web +Wizard query +Assistente de dúvidas +Your answer: +Sua resposta: +Link detected.. +Um link foi detectado +Choose a rule +Escolha uma regra +Ignore this link +Ignorar este link +Ignore directory +Ignorar diretório +Ignore domain +Ignorar domínio +Catch this page only +Capturar somente esta página +Mirror site +Cópia do site +Mirror domain +Cópia do domínio +Ignore all +Ignorar tudo +Wizard query +Dúvida do assistente +NO +Não +File +Arquivo +Options +Opções +Log +Relatório +Window +Janelas +Help +Ajuda +Pause transfer +Suspender transferência +Exit +Sair +Modify options +Alterar opções +View log +Visualizar relatório +View error log +Visualizar relatórios de erros +View file transfers +Visualizar transferência dos arquivos +Hide +Ocultar +About WinHTTrack Website Copier +Sobre o WinHTTrack Website Copier +Check program updates... +Verificar atualizações do programa +&Toolbar +Barra de ferramentas +&Status Bar +Barra de status +S&plit +Dividir +File +Arquivo +Preferences +Opções +Mirror +Cópia do site +Log +Relatório +Window +Janelas +Help +Ajuda +Exit +Sair +Load default options +Carregar opções padrão +Save default options +Salvar opções padrão +Reset to default options +Excluir opções padrão +Load options... +Carregar opções +Save options as... +Salvar opções como... +Language preference... +Preferências do idioma... +Contents... +Conteúdo... +About WinHTTrack... +Sobre o WiHTTrack Website Copier +New project\tCtrl+N +Novo projeto\tCtrl+N +&Open...\tCtrl+O +&Abrir...\tCtrl+O +&Save\tCtrl+S +&Salvar\tCtrl+S +Save &As... +Salvar &como... +&Delete... +&Excluir... +&Browse sites... +&Procurar sites... +User-defined structure +Estrutura definida pelo usuário +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNome do arquivo sem extensão (ex.: imagem)\r\n%N\tNome do arquivo com extensão (ex.: imagem.gif)\r\n%t\tExtensão (ex.: gif)\r\n%p\tCaminho (sem o / final) (ex.: /imagens)\r\n%h\tNome do servidor (ex.: www.algumsite.com)\r\n%M\tURL MD5 (128 bits, 32 ascii bytes)\r\n%Q\tsequência de pesquisa MD5 (128 bits, 32 ascii bytes)\r\n%q\tpequena sequência de pesquisa MD5 (16 bits, 4 ascii bytes)\r\n\r\n%s?\tNome curto (ex.: %sN ) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Exemplo:\t%h%p/%n%q.%t\n->\t\tc:\\alternativo\\www.algumsite.com\\algumasimagens\\imagem.gif +Proxy settings +Configuração do servidor proxy +Proxy address: +Endereço do servidor proxy: +Proxy port: +Porta do servidor proxy: +Authentication (only if needed) +Identificação (se necessário) +Login +Nome do usuário (Login) +Password +Senha +Enter proxy address here +Digite o endereço proxy +Enter proxy port here +Digite a porta do proxy aqui +Enter proxy login +Digite o login do proxy +Enter proxy password +Digite a senha do proxy +Enter project name here +Digite o nome do projeto aqui +Enter saving path here +Digite o caminho para salvar o projeto aqui +Select existing project to update +Selecionar um projeto existente para atualizar +Click here to select path +Clique aqui para selecionar o caminho +HTTrack Project Wizard... +Assistente de projetos HTTrack... +New project name: +Nome do novo projeto: +Existing project name: +Nome do projeto existente: +Project name: +Nome do projeto: +Base path: +Caminho base: +C:\\My Web Sites +C:\\Meus Sites +Type a new project name, \r\nor select existing project to update/resume +Digite um nome para o novo projeto, \r\nou escolha um projeto existente para continuar/atualizar. +New project +Novo projeto +Insert URL +Inserir URL +URL: +URL: +Authentication (only if needed) +Identificação (se necessária) +Login +Login: +Password +Senha: +Forms or complex links: +Formulários ou links complexos: +Capture URL... +Capturar URL... +Enter URL address(es) here +Digite aqui o(s) endereço(s) URL +Enter site login +Digite o login do site +Enter site password +Digite a senha do site +Use this capture tool for links that can only be accessed through forms or javascript code +Use esta ferramenta para capturar os links que podem ser acessados através de um formulário ou código javascript +Choose language according to preference +Selecione o seu Idioma aqui +Catch URL! +Capturar URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Favor configurar uma navegação proxy temporária no seu Navegador para os seguintes valores (Copiar/Colar Endereço Proxy e Porta).\n Então clique no botão ENVIAR do formulário em sua página do navegador, ou clique no link específico que você deseja capturar. +This will send the desired link from your browser to WinHTTrack. +Isto enviará o link pretendido do seu navegador para o WinHTTrack. +ABORT +ABORTAR +Copy/Paste the temporary proxy parameters here +Copiar/Colar os parâmetros temporárias do proxy aqui +Cancel +Cancelar +Unable to find Help files! +Não foi possível encontrar os arquivos de ajuda! +Unable to save parameters! +Não foi possível salvar os parâmetros! +Please drag only one folder at a time +Por favor arraste apenas uma pasta de cada vez +Please drag only folders, not files +Por favor arraste somente pastas, não arquivos +Please drag folders only +Por favor arraste somente pastas +Select user-defined structure? +Selecionar estrutura definida pelo usuário? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Assegure-se que a sequência definida pelo usuário está correta.\nDe outro modo, o nome dos arquivos serão incorretos! +Do you really want to use a user-defined structure? +Você deseja realmente selecionar uma estrutura definida pelo usuário? +Too manu URLs, cannot handle so many links!! +Muitas URLs, não é possivel manejar tantos links!! +Not enough memory, fatal internal error.. +Memória insuficiente, erro fatal interno... +Unknown operation! +Operação desconhecida! +Add this URL?\r\n +Adicionar esta URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Atenção: o processo principal não está respondendo, não foi possivel adicionar URL(s). +Type/MIME associations +Associações tipo/MIME +File types: +Tipos de arquivo: +MIME identity: +MIME identity +Select or modify your file type(s) here +Selecionar ou modificar seu(s) tipo(s) de arquivo(s) aqui +Select or modify your MIME type(s) here +Selecionar ou modificar seu(s) tipo(s) de arquivo(s) MIME aqui +Go up +Ir para cima +Go down +Ir para baixo +File download information +Informações do(s) arquivo(s) recebido(s) +Freeze Window +Fixar janela +More information: +Mais informações: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Bem-vindo ao WinHTTrack Website Copier!\n\nFavor clicar o botão AVANÇAR para\n\niniciar um novo projeto ou retomar o download parcial. +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Tipos de arquivo:\nNomes de arquivo contendo:\nNome deste arquivo:\nNomes de pasta contendo:\nNome desta pasta:\nLinks deste domínio:\nLinks no domínio contendo:\nLinks deste servidor:\nLinks contendo:\nEste link:\nTODOS OS LINKS +Show all\nHide debug\nHide infos\nHide debug and infos +Exibir tudo\nOcultar erros\nOcultar informações\nOcultar erros e informações +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Estrutura do site (padrão)\nHtml na web/, imagens/outros arquivos na web/imagens/\nHtml na web/html, imagens/outros na web/imagens\nHtml na web/, imagens/outros na web/\nHtml na web/, imagens/outros na web/xxx, quando xxx é a extensão do arquivo\nHtml na web/html, imagens/outros na web/xxx\nEstrutura do site, sem www.dominio.xxx/\nHtml no nome_do_site/, imagens/outros no nome_do_site/imagens/\nHtml no nome_do_site/html, imagens/outros no nome_do_site/imagens\nHtml no nome_do_site/, imagens/outros no nome_do_site/\nHtml no nome_do_site/, imagens/outros no nome_do_site/xxx\nHtml no nome_do_site/html, imagens/outros no nome_do_site/xxx\nTodos os arquivos na web/, com nomes aleatórios (gadget !)\nTodos os arquivos no nome_do_site/, com nomes aleatórios (gadget !)\nEstrutura definida pelo usuário.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Somente analizar\nArmazenar arquivos html\nArmazenar arquivos não html\nAmazenar todos os arquivos (padrão)\nArmazenar arquivos html primeiro +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Permanecer no mesmo diretório\nPermite ir para abaixo (padrão)\nPermite ir para cima\nPermite ir para cima & para baixo +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Permanecer no mesmo endereço (padrão)\nPermanecer no mesmo domínio\nPermanecer no mesmo domínio do nível acima\nIr para todos os lugares da Web +Never\nIf unknown (except /)\nIf unknown +Nunca\nSe desconhecido (exceto /)\nSe desconhecido +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +nenhuma regra para robots.txt\nregras robots.txt exceto assistente\nseguir regras robots.txt +normal\nextended\ndebug +normal\nextendido\ncorrigir +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Copiar site(s) da Web\nCopiar site(s) interativos da Web (perguntas)\nReceber arquivos específicos\nCopiar todas as páginas do site (alternação múltipla)\nTestar links nas páginas (testar indicador)\n* Retomar download interrompido\n* Atualizar download existente +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL + +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Portugues.txt b/lang/Portugues.txt new file mode 100755 index 0000000..71a704d --- /dev/null +++ b/lang/Portugues.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Português +LANGUAGE_FILE +Portugues +LANGUAGE_ISO +pt +LANGUAGE_AUTHOR +Rui Fernandes (CANTIC, ruiefe at mail.malhatlantica.pt) \r\nPedro T. Pinheiro (Universidade Nova de Lisboa-FCT, ptiago at mail.iupi.pt) \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +OK +Cancel +Cancelar +Exit +Sair +Close +Fechar +Cancel changes +Cancelar alterações +Click to confirm +Clique para confirmar +Click to get help! +Clique para obter ajuda +Click to return to previous screen +Clique para retroceder +Click to go to next screen +Clique para avançar +Hide password +Ocultar palavra-chave +Save project +Guardar projecto +Close current project? +Fechar o projecto em curso? +Delete this project? +Apagar este projecto? +Delete empty project %s? +Apagar o projecto vazio %s? +Action not yet implemented +Função não disponível +Error deleting this project +Erro ao apagar o projecto +Select a rule for the filter +Escolha uma regra para o filtro +Enter keywords for the filter +Introduza uma palavra-chave para o filtro +Cancel +Cancelar +Add this rule +Adicionar esta regra +Please enter one or several keyword(s) for the rule +Escreva uma ou mais palavras-chave para esta regra +Add Scan Rule +Adicionar filtro +Criterion +Escolha uma regra +String +Palavra-chave: +Add +Adicionar +Scan Rules +Filtros +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Usar * ou ? para excluir ou incluir vários URL ou hiperligações.\n Pode usar vírgulas ou espaços entre os filtros.\n\n Exemplo: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Excluir hiperligações +Include link(s) +Incluir hiperligações +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Sugestão: Para incluir todos os ficheiros GIF, use algo como +www.pagina.com/*.gif. \nPara incluir/excluir TODOS os ficheiros GIF de todos os sites utilize +*.gif ou -*.gif +Save prefs +Guardar preferências +Matching links will be excluded: +As hiperligações correspondentes a esta regra serão excluídas +Matching links will be included: +As hiperligações correspondentes a esta regra serão incluídas +Example: +Exemplo: +gif\r\nWill match all GIF files +gif\r\ndetectará todos os ficheiros GIF +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\ndetectará todos os ficheiros contendo blue, tais como 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\ndetectará o ficheiro 'bigfile.mov' mas não 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\ndetectará hiperligações contendo 'cgi' tais como /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\ndetectará por exemplo hiperligações com nomes contendo 'cgi-bin' mas não 'cgi-bin-2' +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\ndetectará hiperligações como www.someweb.com, private.someweb.com, etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\ndetectará hiperligações como www.someweb.com, www.someweb.edu, private.someweb.otherweb.com, etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\ndetectará hiperligações como www.someweb.com/... (mas não hiperligações como private.someweb.com/...) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\ndetectará hiperligações como www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html, etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\napenas detectará hiperligações como www.test.com/test/someweb.html. Note que terá que digitar o endereço completo (URL + caminho do ficheiro) +All links will match +Todas as hiperligações serão detectadas +Add exclusion filter +Acrescentar filtro de exclusão +Add inclusion filter +Acrescentar filtro de inclusão +Existing filters +Filtros existentes +Cancel changes +Anular alterações +Save current preferences as default values +Guardar preferências como opções padrão +Click to confirm +Clique para confirmar +No log files in %s! +Não há relatórios em %s! +No 'index.html' file in %s! +Não existe index.html em %s +Click to quit WinHTTrack Website Copier +Clique para sair do WinHTTrack Website Copier +View log files +Ver relatórios +Browse HTML start page +Aceder à página inicial +End of mirror +Cópia terminada +View log files +Ver relatórios +Browse Mirrored Website +Aceder à Web +New project... +Novo projecto... +View error and warning reports +Ver relatórios de erros e avisos +View report +Ver informação do relatório +Close the log file window +Fechar a janela do relatório +Info type: +Tipo de informação: +Errors +Erros +Infos +Informações +Find +Localizar +Find a word +Localizar uma palavra +Info log file +Relatórios de cópia +Warning/Errors log file +Relatório de erros e avisos +Unable to initialize the OLE system +Impossível iniciar o sistema OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack não encontra nenhuma cópia completa ou parcial na pasta indicada +Could not connect to provider +Impossível estabelecer a ligação +receive +recepção +request +pedido +connect +ligação +search +localizar +ready +pronto +error +erro +Receiving files.. +Recepção de ficheiros +Parsing HTML file.. +Análise das hiperligações da página +Purging files.. +Limpeza de ficheiros... +Loading cache in progress.. + +Parsing HTML file (testing links).. +Teste das hiperligações da página +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pausa - Escolha [Ficheiro]/[Interromper transferência] para continuar +Finishing pending transfers - Select [Cancel] to stop now! +A concluir as transferências em curso - Seleccione [Cancelar] para terminar agora! +scanning +analisando +Waiting for scheduled time.. +Aguardando hora programada para começar +Connecting to provider +Ligação ao fornecedor de acesso +[%d seconds] to go before start of operation +Cópia em espera (%d segundos) +Site mirroring in progress [%s, %s bytes] +A copiar (%s, %s Bytes) +Site mirroring finished! +Cópia terminada +A problem occured during the mirroring operation\n +Ocorreu um problema durante a cópia\n +\nDuring:\n +Durante:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Veja o relatório, se necessário.\n\nClique TERMINAR para sair do WinHTTrack.\n\nObrigado por usar o WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Cópia terminada.\nClique OK para sair.\nVeja o relatório para verificar se não há erros.\n\nObrigado por usar o WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * CÓPIA INTERROMPIDA! * *\r\nA cache temporária actual é necessária para actualização e só contém os dados carregados durante a sessão em curso.\r\nÉ possível que a cache anterior contenha dados mais completos; para não perder esses dados, deve restaurá-la e apagar a cache actual.\r\n[Nota: Esta operação pode ser facilmente executada aqui apagando os ficheiros hts-cache/new.*]\r\n\r\nPensa que a cache anterior pode conter informações mais completas e quer restaurá-la? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ERRO DE CÓPIA! * *\r\nHTTrack detectou que a cópia actual está vazia. Se fez uma actualização, a cópia anterior foi restaurada.\r\nRazão: a primeira página não foi encontrada ou ocorreu um problema na conexão.\r\n=> Certifique-se de que o site existe e confirme as configurações do proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +\nSugestão:Clique [Ver relatório] para ver os avisos e as mensagens de erro +Error deleting a hts-cache/new.* file, please do it manually +Erro ao apagar hts-cache/new.*, apague manualmente +Do you really want to quit WinHTTrack Website Copier? +Quer realmente sair de WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Modo de cópia automática -\n\nIntroduza os endereços na caixa de diálogo. +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Modo de cópia interactiva (perguntas) -\n\nIntroduza os endereços na caixa de diálogo. +- File Download Mode -\n\nEnter file address(es) in URL box +- Modo de download do ficheiro -\n\nIntroduza os endereços na caixa de diálogo. +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Modo de teste de hiperligações -\n\nIntroduza os endereços das páginas com hiperligações para testar na caixa de diálogo. +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Modo de actualização de cópia -\n\nVerifique os endereços na lista, verifique as opções, depois clique SEGUINTE. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Modo de continuação de cópia -\n\nVerifique os endereços na lista, verifique as opções, depois clique SEGUINTE. +Log files Path +Caminho para os ficheiros de relatório +Path +Caminho +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +Modo de cópia de hiperligações -\n\nIntroduza os endereços a copiar na caixa de diálogo. +New project / Import? +Novo projecto / importar ? +Choose criterion +Escolha uma acção +Maximum link scanning depth +Profundidade máxima de análise de hiperligações +Enter address(es) here +Introduza os endereços aqui +Define additional filtering rules +Definir filtros adicionais +Proxy Name (if needed) +Nome do proxy (se necessário) +Proxy Port +Porta do proxy +Define proxy settings +Definir as opções do proxy +Use standard HTTP proxy as FTP proxy +Utilizar o proxy HTTP padrão como proxy FTP +Path +Caminho +Select Path +Escolha o caminho +Path +Caminho +Select Path +Escolha o caminho +Quit WinHTTrack Website Copier +Sair do WinHTTrack Website Copier +About WinHTTrack +Acerca do WinHTTrack +Save current preferences as default values +Guardar preferências como opções padrão +Click to continue +Clique para continuar +Click to define options +Clique para definir as opções +Click to add a URL +Clique para adicionar um endereço URL +Load URL(s) from text file +Importar endereços URL de um ficheiro de texto +WinHTTrack preferences (*.opt)|*.opt|| +Preferências do WinHTTrack (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Ficheiro de texto com lista de endereços (*.txt)|*.txt|| +File not found! +Ficheiro não encontrado! +Do you really want to change the project name/path? +Deseja realmente alterar o nome/caminho do projecto? +Load user-default options? +Carregar as opções padrão (definidas pelo utilizador)? +Save user-default options? +Guardar as opções padrão do utilizador? +Reset all default options? +Apagar todas as opções padrão? +Welcome to WinHTTrack! +Bem-vindo ao WinHTTrack Website Copier +Action: +Acção: +Max Depth +Profundidade máxima: +Maximum external depth: +Profundidade externa máxima: +Filters (refuse/accept links) : +Filtros (incluir/excluir hiperligações) +Paths +Caminhos +Save prefs +Guardar preferências +Define.. +Definir... +Set options.. +Definir as opções... +Preferences and mirror options: +Parâmetros de cópia do site +Project name +Nome do projecto +Add a URL... +Adicionar... +Web Addresses: (URL) +Endereço (URL): +Stop WinHTTrack? +Parar o WinHTTrack? +No log files in %s! +Nenhum relatório em %s! +Pause Download? +Suspender a cópia do site? +Stop the mirroring operation +Parar a cópia do site? +Minimize to System Tray +Minimizar na barra de sistema +Click to skip a link or stop parsing +Clique para saltar uma ligação ou interromper a cópia +Click to skip a link +Clique para saltar a ligação +Bytes saved +Bytes guardados: +Links scanned +Hiperligações processadas: +Time: +Tempo: +Connections: +Ligações: +Running: +Em curso: +Hide +Minimizar +Transfer rate +Taxa de transferência: +SKIP +SALTAR +Information +Informações +Files written: +Ficheiros escritos: +Files updated: +Ficheiros actualizados: +Errors: +Erros: +In progress: +Em curso: +Follow external links +Copiar ficheiros mesmo em hiperligações externas +Test all links in pages +Testar todas as hiperligações nas páginas +Try to ferret out all links +A tentar detectar todas as hiperligações +Download HTML files first (faster) +Transferir primeiro os ficheiros HTML (mais rápido) +Choose local site structure +Escolher a estrutura local de ficheiros +Set user-defined structure on disk +Definir os parâmetros da estrutura personalizada +Use a cache for updates and retries +Utilizar chache para actualizações e novas tentativas +Do not update zero size or user-erased files +Não actualizar ficheiros com tamanho zero ou apagados pelo utilizador +Create a Start Page +Criar uma página inicial +Create a word database of all html pages +Criar base de dados de palavras de todas as páginas html +Create error logging and report files +Criar ficheiros para as mensagens de erro e avisos +Generate DOS 8-3 filenames ONLY +Gerar APENAS nomes de ficheiros DOS (8+3 caracteres) +Generate ISO9660 filenames ONLY for CDROM medias + +Do not create HTML error pages +Não escrever ficheiros de erro HTML +Select file types to be saved to disk +Selecção dos tipos de ficheiros a guardar +Select parsing direction +Modo de percurso de hiperligações no site +Select global parsing direction +Limites da zona global de exploração +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) + +Max simultaneous connections +Numero máximo de conexões +File timeout +Tempo máximo de espera para um ficheiro +Cancel all links from host if timeout occurs +Cancelar todas as hiperligações num domínio em caso de espera excessiva +Minimum admissible transfer rate +Taxa de transferência mínima tolerada +Cancel all links from host if too slow +Cancelar todas as hiperligações num domínio em caso de transferência muito lenta +Maximum number of retries on non-fatal errors +Número máximo de tentativas em caso de erro não fatal +Maximum size for any single HTML file +Tamanho máximo para uma página HTML +Maximum size for any single non-HTML file +Tamanho máximo para cada ficheiro não HTML +Maximum amount of bytes to retrieve from the Web +Tamanho total máximo para cópia +Make a pause after downloading this amount of bytes +Fazer uma pausa depois de transferir esta quantidade de bytes +Maximum duration time for the mirroring operation +Tempo total máximo para cópia +Maximum transfer rate +Taxa de transferência máxima +Maximum connections/seconds (avoid server overload) +Número máximo de conexões/segundos (limita sobrecarga dos servidores) +Maximum number of links that can be tested (not saved!) +Número máximo de hiperligações que podem ser testadas (não gravadas!) +Browser identity +Identidade do browser +Comment to be placed in each HTML file +Nota de rodapé em cada ficheiro HTML +Back to starting page +Voltar à página inicial +Save current preferences as default values +Guardar as preferências actuais como opções padrão +Click to continue +Clique para continuar +Click to cancel changes +Clique para cancelar +Follow local robots rules on sites +Seguir as regras locais dos robots nos sites +Links to non-localised external pages will produce error pages +As hiperligações fora do domínio de exploração geram mensagens de erro +Do not erase obsolete files after update +Não apagar os ficheiros antigos depois da actualização +Accept cookies? +Aceitar cookies? +Check document type when unknown? +Verificar o tipo de documento se desconhecido? +Parse java applets to retrieve included files that must be downloaded? +Analisar os applets Java para transferir os ficheiros incluídos? +Store all files in cache instead of HTML only +Armazenamento de TODOS os ficheiros em cache (em vez de só HTML) +Log file type (if generated) +Tipo de relatório (se gerado) +Maximum mirroring depth from root address +Profundidade máxima da cópia desde o endereço inicial +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximum mirroring depth for external/fodbidden addresses (0, that is, none, is the default) +Create a debugging file +Criar um ficheiro de debug +Use non-standard requests to get round some server bugs +Tentar evitar os bugs dos servidores usando chamadas não-standard +Use old HTTP/1.0 requests (limits engine power!) +A utilização de chamadas antigas HTTP/1.0 limita as capacidades do motor de captura! +Attempt to limit retransfers through several tricks (file size test..) +Tentativa de limitar a retransferência através de vários métodos (teste do tamanho do ficheiro...) +Write external links without login/password +Guardar hiperligações externas sem login/palavra-chave +Write internal links without query string +Guardar hiperligações internas sem 'query string' +Get non-HTML files related to a link, eg external .ZIP or pictures +Capturar ficheiros não-HTML próximos (ex: ficheiros .ZIP situados no exterior) +Test all links (even forbidden ones) +Testar todas as hiperligações (mesmo as excluídas) +Try to catch all URLs (even in unknown tags/code) +Tentar detectar todas as hiperligações (mesmo tag desconhecidos/código javascript) +Get HTML files first! +Transferir ficheiros HTML primeiro! +Structure type (how links are saved) +Tipo de estrutura (modo como as hiperligações são guardadas) +Use a cache for updates +Utilizar a cache para actulizações +Do not re-download locally erased files +Não voltar a transferir ficheiros apagados localmente +Make an index +Construir um índice +Make a word database +Criar base de dados de palavras +Log files +Relatórios +DOS names (8+3) +Nomes DOS (8+3) +ISO9660 names (CDROM) + +No error pages +Sem páginas de erros +Primary Scan Rule +Filtro primário +Travel mode +Modo de percurso +Global travel mode +Modo de percurso global +These options should be modified only exceptionally +Opções a modificar apenas excepcionalmente +Activate Debugging Mode (winhttrack.log) +Activar o modo de debug (winhttrack.log) +Rewrite links: internal / external + +Flow control +Controlo de fluxo +Limits +Limites +Identity +Identificação +HTML footer +Rodapé HTML +N# connections +Número de conexões +Abandon host if error +Abandonar servidor em caso de erro +Minimum transfer rate (B/s) +Taxa de transferência mínima (Bps) +Abandon host if too slow +Abandonar em caso de transferência muito lenta +Configure +Configurar +Use proxy for ftp transfers +Utilizar o proxy para transferências FTP +TimeOut(s) +Tempo excessivo +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Tentativas +Size limit +Tamanho limite +Max size of any HTML file (B) +Tamanho máximo dos ficheiros HTML +Max size of any non-HTML file +Tamanho máximo dos outros ficheiros +Max site size +Tamanho máximo do site +Max time +Tempo máximo +Save prefs +Guardar as opções actuais +Max transfer rate +Taxa de transferência máxima +Follow robots.txt +Seguir as regras no ficheiro robots.txt +No external pages +Sem páginas externas +Do not purge old files +Não eliminar ficheiros antigos +Accept cookies +Aceitar cookies +Check document type +Verificar os tipos de documento +Parse java files +Analizar os ficheiros Java +Store ALL files in cache +Guardar TODOS os ficheiros na cache +Tolerant requests (for servers) +Chamadas tolerantes (para servidores) +Update hack (limit re-transfers) +Actualização forçada (limita retransferências) +Force old HTTP/1.0 requests (no 1.1) +Chamadas antigas HTTP/1.0 (não 1.1) +Max connections / seconds +Número máximo de conexões/segundos +Maximum number of links +Número máximo de hiperligações +Pause after downloading.. +Suspender após a cópia de... +Hide passwords +Ocultar palavra-chave +Hide query strings +Ocultar 'query strings' +Links +Hiperligações +Build +Estrutura +Experts Only +Só especialistas +Flow Control +Controlo de fluxo +Limits +Limites +Browser ID +Identidade do browser +Scan Rules +Filtros +Spider +Indexador +Log, Index, Cache +Relatório, Indice, Cache +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Deseja realmente sair do WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Não ligar a um fornecedor de acesso (ligação já estabelecida) +Do not use remote access connection +Não utilizar acesso remoto +Schedule the mirroring operation +Programar cópia do site +Quit WinHTTrack Website Copier +Sair do WinHTTrack Website Copier +Back to starting page +Voltar à página inicial +Click to start! +Clique para começar! +No saved password for this connection! +Não existem palavras-chave para esta conexão! +Can not get remote connection settings +Impossível obter os parâmetros de conexão +Select a connection provider +Seleccione o ISP +Start +Iniciar... +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Defina as OPÇÕES de conexão se necessário,\nem seguida clique Avançar para começar a cópia do site +Save settings only, do not launch download now. +Registar só as configurações, não iniciar a transferência. +On hold +Temporização +Transfer scheduled for: (hh/mm/ss) +Esperar até às: (hh/mm/ss) +Start +INICIAR! +Connect to provider (RAS) +Fornecedor de acesso +Connect to this provider +Ligar a este fornecedor de acesso +Disconnect when finished +Desligar no fim da operação +Disconnect modem on completion +Desconectar o modem no final +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Por favor avise-nos acerca de erros ou problemas)\r\n\r\nDesenvolvimento:\r\nInterface (Windows): Xavier Roche\r\nMotor: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nAgradecimentos pela tradução para o Português para:\r\nRui Fernandes (CANTIC, ruiefe@mail.malhatlantica.pt) +About WinHTTrack Website Copier +Acerca do WinHTTrack Website Copier +Please visit our Web page +Visite a nossa página Web! +Wizard query +Pergunta do Assistente +Your answer: +A sua resposta: +Link detected.. +Foi detectada uma hiperligação +Choose a rule +Escolha uma regra: +Ignore this link +Ignorar esta hiperligação +Ignore directory +Ignorar esta pasta +Ignore domain +Ignorar este domínio +Catch this page only +Transferir APENAS esta página +Mirror site +Cópia do site +Mirror domain +Transferir todo o domínio +Ignore all +Ignorar tudo +Wizard query +Questão do Assistente +NO +NÃO +File +Ficheiro +Options +Opções +Log +Relatório +Window +Janelas +Help +Ajuda +Pause transfer +Suspender a transferência +Exit +Sair +Modify options +Modificar as opções +View log +Ver relatório +View error log +Ver relatório de erros +View file transfers +Ver ficheiros transferidos +Hide +Minimizar +About WinHTTrack Website Copier +Acerca do WINHTTrack +Check program updates... +Procurar actualizações do WINHTTrack... +&Toolbar +Barra de ferramentas +&Status Bar +Barra de estado +S&plit +Dividir +File +Ficheiro +Preferences +Opções +Mirror +Cópia do site +Log +Relatório +Window +Janelas +Help +Ajuda +Exit +Sair +Load default options +Carregar opções padrão +Save default options +Guardar opções padrão +Reset to default options +Apagar opções padrão +Load options... +Carregar opções +Save options as... +Guardar opções como... +Language preference... +Preferências de linguagem +Contents... +Índice... +About WinHTTrack... +Acerca do WinHTTrack Website Copier +New project\tCtrl+N +Novo projecto\tCtrl+N +&Open...\tCtrl+O +&Abrir...\tCtrl+O +&Save\tCtrl+S +&Guardar\tCtrl+S +Save &As... +Guardar &como... +&Delete... +A&pagar... +&Browse sites... +&Ver sites... +User-defined structure +Estrutura local de ficheiros +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNome do ficheiro sem extensão (ex: image)\r\n%N\tNome do ficheiro incluindo extensão (ex: image.gif)\r\n%t\tExtensão (ex: gif)\r\n%p\tCaminho (sem / final) (ex: /someimages)\r\n%h\tNome do servidor (ex: www.someweb.com)\r\n%M\tURL MD5 (128 bits, 32 ascii bytes)\r\n%Q\tquery string MD5 (128 bits, 32 ascii bytes)\r\n%q\tsmall query string MD5 (16 bits, 4 ascii bytes)\r\n\r\n%s?\tVersão curta DOS (ex: %sN ) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Exemplo:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Configuração do proxy +Proxy address: +Endereço do proxy +Proxy port: +Porta do proxy +Authentication (only if needed) +Identificação (se necessária) +Login +Login +Password +Palavra-chave +Enter proxy address here +Introduza o endereço do proxy +Enter proxy port here +Introduza a porta do proxy +Enter proxy login +Introduza o login do proxy +Enter proxy password +Introduza a palavra-chave do proxy +Enter project name here +Introduza o nome do projecto +Enter saving path here +Digite o caminho onde quer guardar o projecto +Select existing project to update +Selecione um projecto existente para actualização +Click here to select path +Clique aqui para seleccionar o caminho +HTTrack Project Wizard... +Assistente de projectos do WinHTTrack +New project name: +Nome do novo projecto: +Existing project name: +Nome do projecto existente: +Project name: +Nome do projecto: +Base path: +Caminho base: +C:\\My Web Sites +C:\\Os meus Sites +Type a new project name, \r\nor select existing project to update/resume +Introduza o nome para um novo projecto,\nou escolha um projecto para continuar ou actualizar +New project +Novo projecto +Insert URL +Introduza endereço URL +URL: +Endereço URL +Authentication (only if needed) +Identificação (se necessária) +Login +Login +Password +Palavra-chave +Forms or complex links: +Formulários ou hiperligações complexos: +Capture URL... +Capturar URL... +Enter URL address(es) here +Introduza aqui o endereço URL +Enter site login +Digite o login do site +Enter site password +Digite a palavra-chave do site +Use this capture tool for links that can only be accessed through forms or javascript code +Use esta ferramenta para capturar as hiperligações que apenas podem ser acedidas através de um formulário ou script de Java +Choose language according to preference +Selecione o seu idioma aqui +Catch URL! +Capturar URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Queira definir temporariamente as opções do proxy no seu browser para os valores abaixo (cortar/colar o endereço proxy e a porta).\n Depois, no browser, clique no botão SUBMIT do formulário, ou clique na hiperligação específica que quer capturar. +This will send the desired link from your browser to WinHTTrack. +Isto enviará a hiperligação pretendida do seu browser para o WinHTTrack. +ABORT +CANCELAR +Copy/Paste the temporary proxy parameters here +Copiar/colar as preferências temporárias do proxy aqui +Cancel +Cancelar +Unable to find Help files! +Impossível encontrar os ficheiros de ajuda! +Unable to save parameters! +Impossível guardar os parâmetros! +Please drag only one folder at a time +Arraste apenas uma pasta de cada vez +Please drag only folders, not files +Arraste apenas pastas, não ficheiros +Please drag folders only +Arraste apenas pastas +Select user-defined structure? +Seleccionar uma estrutura personalizada? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Assegure-se que a cadeia personalizada está correctat\nSe não, os nomes dos ficheiros serão incorrectos! +Do you really want to use a user-defined structure? +Quer realmente utilizar uma estrutura personalizada? +Too manu URLs, cannot handle so many links!! +Demasiados URL, impossível manusear tantas hiperligações !! +Not enough memory, fatal internal error.. +Memória insuficiente, erro fatal interno... +Unknown operation! +Operação desconhecida!! +Add this URL?\r\n +Adicionar este endereço URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Aviso: o processo principal ainda não responde, impossível adicionar URL. +Type/MIME associations +Correspondências tipo/MIME +File types: +Tipos de ficheiros: +MIME identity: +MIME identity +Select or modify your file type(s) here +Seleccione ou modifique os tipos de ficheiros aqui +Select or modify your MIME type(s) here +Seleccione ou altere os tipos MIME aqui +Go up +Para cima +Go down +Para baixo +File download information +Informações sobre os ficheiros transferidos +Freeze Window +Fixar a janela +More information: +Mais informações: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Benvindo ao WinHTTrack Website Copier!\n\nClique no botão Seguinte para\n\n- iniciar um novo projecto ou\n- retomar um projecto existente. +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Ficheiros de tipo:\nFicheiros contendo:\nEste ficheiro:\nNomes de pastas contendo:\nEsta pasta:\nHiperligações neste domínio:\nHiperligações num domínio contendo:\nHiperligações deste servidor:\nHiperligações contendo:\nEsta hiperligação:\nTODAS AS HIPERLIGAÇÕES\r\n +Show all\nHide debug\nHide infos\nHide debug and infos +Mostrar tudo\nOcultar erros\nOcultar informações\nOcultar erros e informações +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Estrutura do site (padrão)\nHtml na web/, imagens/outros na web/imagens/\nHtml na web/html, imagens/outros na web/imagens\nHtml na web/, imagens/outros na web/\nHtml na web/, imagens/outros na web/xxx, quando xxx é a extensão do ficheiro\nHtml na web/html, imagens/outros na web/xxx\nEstrutura do site, sem www.domínio.xxx/\nHtml no nome_do_site/, imagens/outros no nome_do_site/imagens/\nHtml no nome_do_site/html, imagens/outros no nome_do_site/imagens\nHtml no nome_do_site/, imagens/outros no nome_do_site/\nHtml no nome_do_site/, imagens/outros no nome_do_site/xxx\nHtml no nome_do_site/html, imagens/outros no nome_do_site/xxx\nTodos os ficheiros na web/, com nomes aleatórios (gadget !)\nTodos os arquivos no nome_do_site/, com nomes aleatórios (gadget !)\nEstrutura definida pelo utilizador.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Só análise de hiperligações\nGuardar ficheiros HTML\nGuardar ficheiros não HTML\nGuardar todos os ficheiros (padrão)\nGuardar ficheiros HTML primeiro +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Manter no mesmo directório\nPode ir para baixo (padrão)\nPode ir para acima\nPode ir para baixo & para cima +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Manter no mesmo endereço (padrão)\nManter no mesmo domínio\nManter no mesmo domínio de nível superior\nPercurso livre na Web +Never\nIf unknown (except /)\nIf unknown +Nunca\nSe desconhecido (excepto /)\nSe desconhecido +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +sem regras robots.txt\regras robots.txt excepto filtros\nseguir as regras robots.txt +normal\nextended\ndebug +normal\nestendido\ncorrigir +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Cópia automática de sites Web\nCópia interactiva de sites Web (questões)\nTransferir ficheiros específicos\nTransferir todos os sites nas páginas (cópias múltiplas)\nTestar as hiperligações nas páginas (testar indicador)\n* Retomar cópia interrompida\n* Actualizar uma cópia existente +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL + +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Romanian.txt b/lang/Romanian.txt new file mode 100755 index 0000000..ff8c606 --- /dev/null +++ b/lang/Romanian.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Romanian +LANGUAGE_FILE +Romanian +LANGUAGE_ISO +ro +LANGUAGE_AUTHOR +Alin Gheorghe Miron (miron.alin@personal.ro) +LANGUAGE_CHARSET +ISO-8859-1 +OK +Da +Cancel +Anuleazã +Exit +Ieºire +Close +Închide +Cancel changes +Anuleazã schimbãrile +Click to confirm +Click pentru confirmare. +Click to get help! +Click pentru ajutor! +Click to return to previous screen +Click pentru revenire la fereastra precedentã +Click to go to next screen +Click pentru a trece la fereastra urmãtoare! +Hide password +Ascunde parola +Save project +Salveazã proiect +Close current project? +Închid proiectul curent? +Delete this project? +ªterg acest proiect? +Delete empty project %s? +ªterg proiectul gol %s? +Action not yet implemented +Funcþia nu este încã implementatã +Error deleting this project +Eroare la ºtergerea acestui proiect +Select a rule for the filter +Selectaþi o regulã pentru filtrare +Enter keywords for the filter +Introduceþi un cuvânt cheie pentru filtrare +Cancel +Anulare +Add this rule +Adaugã aceastã regulã de filtrare +Please enter one or several keyword(s) for the rule +Introduceºi unul sau mai multe cuvinte cheie pentru regula de filtrare +Add Scan Rule +Adaugã o regulã de scanare +Criterion +Criteriu: +String +Cuvânt cheie +Add +Adaugã +Scan Rules +Reguli de scanare +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Folosiþi ? sau *pentru a exclude sau include URL-uri sau linkuri.\r\nPuteþi pune mai multe adrese pe aceeaºi linie.\r\nFolosiþi spaþiile ca separatori. \r\nExemplu +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Exclude link(uri) +Include link(s) +Include link(uri) +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Pentru a include toate fiºierele GIF dintr-un singur site, folosiþi ceva de genul +www.nume_site.com/*.gif.\r\n(+*.gif / -*.gif va include/exclude toate fiºierele GIF din toate siturile) +Save prefs +Salveazã preferinþele +Matching links will be excluded: +Link-urile care se potrivesc acestei reguli vor fi excluse: +Matching links will be included: +Link-urile care se potrivesc acestei reguli vor fi incluse: +Example: +Exemplu: +gif\r\nWill match all GIF files +gif\r\nVa potrivi toate fiºierele GIF +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nVa gãsi toate fiºierele care conþin un subºir 'blue' cum ar fi 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nVa detecta numai fiºierul 'bigfile.mov', dar nu ºi 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nVa gãsi linkuri spre folderele în numele cãrora se gãseºte subºirul "cgi" cum ar fi /cgi/bin/oricecgi,cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nVa gãsi linkuri spre folderele în numele cãrora se gãseºte numai subºirul 'cgi-bin' (dar nu ºi cgi-bin-2, de exemplu) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nVa gãsi linkuri ce conþin acest subºir cum ar fi www.someweb.com, private.someweb.com etc.\r\n +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nVa gãsi linkuri ce conþin acest subºir cum ar fi www.someweb.com,www.someweb.edu,private.someweb.otherweb.com etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nVa gãsi linkurile care conþin tot subºirul 'www.someweb.com' ( dar nu ºi linkuri de genul private.someweb.com/..)\r\n +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nVa gãsi orice link ce conþine subºirul dat, de exemplu: www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc.\r\n +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nVa gãsi numai fiºierul 'www.test.com/test/someweb.html' .Observaþi cã trebuie sã introduceþi calea completã (URL + site path) +All links will match +Toate linkurile vor fi cãutate +Add exclusion filter +Adaugã filtru de excludere +Add inclusion filter +Adaugã un filtru de includere +Existing filters +Filtre existente +Cancel changes +Anulare schimbãri +Save current preferences as default values +Salveazã preferinþele curente ca valori implicite. +Click to confirm +Click pentru confirmare +No log files in %s! +Nu sunt fiºiere jurnal (*.log) în %s! +No 'index.html' file in %s! +Nu existã fiºier "index.html" în %s! +Click to quit WinHTTrack Website Copier +Click pentru ieºire din WinHTTrack Website Copier +View log files +Vezi fiºierul jurnal +Browse HTML start page +Rãsfoieºte pagina HTML de start +End of mirror +Copiere terminatã +View log files +Vezi fisierul jurnal (log) +Browse Mirrored Website +Rãsfoieºte situl copiat. +New project... +Proiect nou... +View error and warning reports +Vezi raportul cu erori ºi avertismente +View report +Vezi raportul +Close the log file window +Închide fereastra fiºierului jurnal +Info type: +Tipul informaþiei +Errors +Erori +Infos +Informaþii +Find +Cautã +Find a word +Cautã un cuvânt +Info log file +Raportul copierii +Warning/Errors log file +Fiºierul jurnal cu avertismente/erori +Unable to initialize the OLE system +Imposibil de iniþializat sistemul OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack nu a putut gãsi nici un fiºier downloadat parþial, în folderul specificat ! +Could not connect to provider +Nu mã pot conecta la furnizor +receive +recepþie +request +cerere +connect +conectare +search +cãutare +ready +pregãtit +error +eroare +Receiving files.. +Recepþionez fiºiere +Parsing HTML file.. +Analizez link-urile din paginã +Purging files.. +Curãþire fiºiere +Loading cache in progress.. +Încarcare cache în desfãºurare... +Parsing HTML file (testing links).. +Testarea link-urilor de pe paginã +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pauzã - selectati 'Suspendare download' din meniul 'Clonare' pentru a continua download-ul +Finishing pending transfers - Select [Cancel] to stop now! +Terminare transferuri curente - Selectaþi [Cancel] pentru a opri acum +scanning +scanare in progres +Waiting for scheduled time.. +Aºtept timpul programat pentru a continua... +Connecting to provider +Mã conectez la furnizor +[%d seconds] to go before start of operation +Mai sunt (%d seconds) înainte de începerea operaþiei +Site mirroring in progress [%s, %s bytes] +Clonare sit în desfãºurare [%s %s octeþi] +Site mirroring finished! +Clonare site terminatã! +A problem occured during the mirroring operation\n +A survenit o eroare în timpul operaþiei de clonare +\nDuring:\n +\nDureazã:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nVezi jurnalul (log-ul) dacã este necesar. \n\nClick TERMINARE pentru a ieºi din WinHTTrack Website Copier.\n\nVã mulþumim cã folosiþi WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Operaþia de clonare terminatã. \nClick Ieºire pentru a pãrãsi WinHTTrack. \nVezi fiºierele jurnal dacã este necesar, pentru a vã asigura cã totul e OK. \n\nVã mulþumim cã folosiþi WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* *CLONARE ÎNTRERUPTÃ! * * \r\nCache-ul teporar este necesar pentru orice operaþie de actualizare ºi nu conþine decât datele descãrcate în timpul sesiunii curente întrerupte.\r\nCache-ul precedent poate conþine informaþia mai completã; dacã nu doriþi sã pierdeþi aceste date, trebuie sã restauraþi ºi sã ºtergeþi cache-ul curent\r\n(Notã: Aceastã operaþie poate fi fãcutã cu uºurinþã prin ºtergerea fiºierelor hts-cache/new.*)\r\n\r\n Credeºi cã vechiul cache poate conþine mai multe informaþii ºi doriþi sã le restauraþi? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * EROARE CLONARE! * *\r\nHTTrack a detectat cã, clona curentã este goalã. Dacã a fost o actualizare, clona precedentã a fost restauratã.\r\nMotivul: Fie prima(ele) paginã(i) nu pot(ate) fi gãsitã(e), fie a intervenit o problemã de conectare.\r\n=>Asiguraþi-vã cã situl existã ºi/sau verificaþi setãrile legate de proxy!<= +\n\nTip: Click [View log file] to see warning or error messages +\n\nSfat:Click [Vizualizeazã fiºierul jurnal] pentru a vedea mesajele de avertizare sau eroare. +Error deleting a hts-cache/new.* file, please do it manually +Eroare la ºtergerea fisierului hts-cache/new.* , vã rog ºtergeþi fiºierul manual. +Do you really want to quit WinHTTrack Website Copier? +Chiar doriþi sã pãrãsiþi WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Faza de clonare (copiere automatã) - \n\nIntroduceþi adresa(adresele) în caseta URL +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Mod interactiv de copiere a siteurilor -\n\nIntroduceþi adresa(adresele) în caseta URL +- File Download Mode -\n\nEnter file address(es) in URL box +- Modul de descãrcare a fiºierelor - \n\nIntroduceþi adresa (adresele) în caseta URL +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Modul de testare a link-urilor - \n\nIntroduceþi adresa (adresele) cu linkuri pentru testat. +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Modul de actualizare - \n\nVerificaþi adresa (adresele) în caseta URL, verificaþi opþiunile necesare, apoi daþi click pe "Next". +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Modul de recuperare (operaþie întreruptã) - \n\nVerificaþi adresa (adresele) în caseta URL, verificaþi opþiunile necesare, apoi daþi click pe "Next". +Log files Path +Calea fiºierelor jurnal +Path +Calea +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Modul de copiere a site-urilor dupã linkuri - \n\nFolosiþi caseta URL pentru a introduce adresa (adresele) paginii(lor) ce conþin linkurile de copiat. +New project / Import? +Proiect nou / Import? +Choose criterion +Alegeþi tipul acþiunii. +Maximum link scanning depth +Adâncimea maximã de scanare a link-urilor. +Enter address(es) here +Introduceþi adresa (adresele) aici +Define additional filtering rules +Definire reguli de filtrare suplimentare +Proxy Name (if needed) +Nume server proxy (dacã e necesar) +Proxy Port +Portul serverului proxy +Define proxy settings +Definiþi parametrii serverului proxy +Use standard HTTP proxy as FTP proxy +Foloseºte proxy-ul standard HTTP ca proxy FTP +Path +Calea +Select Path +Selecteazã calea +Path +Calea +Select Path +Selecteazã calea +Quit WinHTTrack Website Copier +Pãrãseºte WinHTTrack Website Copier +About WinHTTrack +Despre WinHTTrack +Save current preferences as default values +Salveazã setãrile curente ca valori implicite. +Click to continue +Click pentru a continua +Click to define options +Click pentru a defini opþiunile +Click to add a URL +Click pentru a asãuga o adresã URL +Load URL(s) from text file +Încarcã adresã(e) URL din fiºierul text +WinHTTrack preferences (*.opt)|*.opt|| +Preferinþe WinHTTrack (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Fiºier text cu lista de adrese (*.txt)|*.txt|| +File not found! +Nu s-a gãsit fiºierul! +Do you really want to change the project name/path? +Chiar doriþi sã schimbaºi numele/calea proiectului? +Load user-default options? +Încarc configuraþia personalizatã implicitã? +Save user-default options? +Salvez configuraþia personalizatã implicitã? +Reset all default options? +Reºetez toate opþiunile implicite? +Welcome to WinHTTrack! +Bine aþi venit în WinHTTrack! +Action: +Acþiune: +Max Depth +Adâncime maximã +Maximum external depth: +Adâncime externã maximã (link-uri externe) : +Filters (refuse/accept links) : +Filtre (refuzã/acceptã) linkuri: +Paths +Cãi +Save prefs +Salveazã preferinþele +Define.. +Defineºte... +Set options.. +Seteazã opþiuni... +Preferences and mirror options: +Preferinþe ºi opþiuni de clonare: +Project name +Numele proiectului +Add a URL... +Adaugã o adresã URL... +Web Addresses: (URL) +Adrese Web: (URL) +Stop WinHTTrack? +Opresc WinHTTrack? +No log files in %s! +Nici un fiºier jurnal în %s! +Pause Download? +Pauzã descãrcare? +Stop the mirroring operation +Opreºte operaþia de clonare +Minimize to System Tray +Minimizeazã în Sistem Tray +Click to skip a link or stop parsing +Click pentru salt peste un link sau oprirea copierii lui +Click to skip a link +Click pentru a sãri peste un link +Bytes saved +Octeþi salvaþi +Links scanned +Link- uri scanate +Time: +Timp: +Connections: +Conexiuni: +Running: +Ruleazã: +Hide +Ascunde +Transfer rate +Ratã de transfer +SKIP +SALT +Information +Informaþii +Files written: +Fiºiere scrise: +Files updated: +Fiºiere actualizate: +Errors: +Erori: +In progress: +În progres: +Follow external links +Recupereazã fiºierele pânã la linkurile externe +Test all links in pages +Testeazã toate link- urile care existã în pagini +Try to ferret out all links +Încearcã reperarea tuturor link - urilor +Download HTML files first (faster) +Downloadeazã fiºierele HTML înainte (mai rapid) +Choose local site structure +Alege structura localã de fiºiere a sitului +Set user-defined structure on disk +Defineºte parametrii structurii personalizate pe disk +Use a cache for updates and retries +Foloseºte un cache pentru actualizãri ºi reîncercãri +Do not update zero size or user-erased files +Nu actualiza fiºierele de mãrime 0 sau fiºierele ºterse de utilizator +Create a Start Page +Creazã o Paginã de Start +Create a word database of all html pages +Creeazã o bazã de date semanticã a tuturor paginilor html +Create error logging and report files +Creeazã fiºiere jurnal pentru mesajele de eroare ºi fiºiere raport +Generate DOS 8-3 filenames ONLY +Genereazã NUMAI nume de fiºier de format 8.3 (DOS) +Generate ISO9660 filenames ONLY for CDROM medias +Genereazã NUMAI nume de fiºier ISO9660 pentru mediile CDROM +Do not create HTML error pages +Nu genera fiºiere de eroare HTML +Select file types to be saved to disk +Selecteazã tipurile de fiºiere care vor fi salvate pe disk +Select parsing direction +Selectaþi modul de parcurgere a link-urilor pe site +Select global parsing direction +Limitele zonei globale de explorare +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Setaþi regulile de rescriere a adreselor URL pentru linkurile interne (cele descãrcate) ºi pentru linkurile externe (cele nedescãrcate) +Max simultaneous connections +Numãr maxim de conexiuni simultane +File timeout +Timp expirat (timeout) pentru fiºier +Cancel all links from host if timeout occurs +Anuleazã toate link-urile de la gazdã dacã intervin timpi morþi +Minimum admissible transfer rate +Ratã de transfer minimã admisibilã +Cancel all links from host if too slow +Anuleazã toate link- urile de la gazdã dacã transferul e prea lent +Maximum number of retries on non-fatal errors +Numãrul maxim de încercãri în cazul erorilor nefatale +Maximum size for any single HTML file +Mãrimea maximã pentru un orice fiºier HTML +Maximum size for any single non-HTML file +Mãrimea maximã pentru orice fiºier non HTML +Maximum amount of bytes to retrieve from the Web +Cantitatea maximã de octeþi de scos de pe site +Make a pause after downloading this amount of bytes +Fã o pauzã dupã descãrcarea acestei cantitãþi de octeþi +Maximum duration time for the mirroring operation +Durata maximã a operaþiei de copiere +Maximum transfer rate +Rata maximã de transfer +Maximum connections/seconds (avoid server overload) +Nr. maxim de conexiuni /secunde (evitã supraîncãrcarea serverului) +Maximum number of links that can be tested (not saved!) +Numãrul maxim de link-uri care pot fi testate (nu salvate!) +Browser identity +Identitatea browser-ului +Comment to be placed in each HTML file +Comentariu ce va fi plasat în fiecare fiºier HTML +Back to starting page +Înapoi la pagina de start +Save current preferences as default values +Salveazã preferinþele curente ca valori implicite +Click to continue +Click pentru continuare +Click to cancel changes +Click pentru anularea schimbãrilor +Follow local robots rules on sites +Urmeazã regulile locale a roboþilor de pe site +Links to non-localised external pages will produce error pages +Link-urile spre pagini externe nelocalizate vor produce pagini de erori +Do not erase obsolete files after update +Nu ºterge fiºierele vechi, dupã actualizare +Accept cookies? +Sã accept cookies-urile? +Check document type when unknown? +Verificaþi tipul documentului când acesta este necunoscut? +Parse java applets to retrieve included files that must be downloaded? +Analizez appleturile java pentru a recupera fiºierele incluse ce trebuie descãrcate? +Store all files in cache instead of HTML only +Stocheazã toate fiºierele în cache, nu numai în HTML +Log file type (if generated) +Tipul fisierului jurnal (dacã s-a generat) +Maximum mirroring depth from root address +Adâncime maximã de clonare, plecând de la adresa rãdãcinã +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Adresã maximã de clonare pentru adresele externe/interzise (0= nici una, implicit) +Create a debugging file +Creeazã un fiºier de depanare +Use non-standard requests to get round some server bugs +Încearcã evitarea bugurilor de pe unele servere, folosind cereri nestandard +Use old HTTP/1.0 requests (limits engine power!) +Foloseºte vechile cereri HTTP/1.0 (limiteazã puterea!) +Attempt to limit retransfers through several tricks (file size test..) +Încearcã sã limitezi retransferurile prin folosirea unor trucuri (file size test...) +Write external links without login/password +Scrie linkurile externe fãrã login/password +Write internal links without query string +Scrie link- urile interne fãrã sirul de interogare (query string) +Get non-HTML files related to a link, eg external .ZIP or pictures +Scoate fiºierele non-HTML apropiate (ºi din link- uri), ex arhive sau imagini. +Test all links (even forbidden ones) +Testeazã toate linkurile (chiar ºi cele interzise) +Try to catch all URLs (even in unknown tags/code) +Încearcã sã detectezi toate adresele URL (chiar ºi tagurile/codul necunoscut(e)) +Get HTML files first! +Descarcã întâi fiºierele HTML! +Structure type (how links are saved) +Tipul structurii (cum sunt salvate link-urile) +Use a cache for updates +Foloseºte un cache pentru actualizare +Do not re-download locally erased files +Nu redescãrca fiºierele ºterse local +Make an index +Construieºte un index +Make a word database +Construieºte o bazã de date semanticã +Log files +Fiºiere jurnal +DOS names (8+3) +Nume DOS (8.3) +ISO9660 names (CDROM) +Nume ISO9660 (CDROM) +No error pages +Fãrã pagini de eroare +Primary Scan Rule +Regulã de scanare principalã +Travel mode +Mod de parcurgere +Global travel mode +Mod de parcurgere globalã +These options should be modified only exceptionally +Aceste opþiuni nu se vor modifica decât în cazuri excepþionale. +Activate Debugging Mode (winhttrack.log) +Activeazã modul de depanare +Rewrite links: internal / external +Rescrie link - uri: interne/externe +Flow control +Controlul fluxului +Limits +Limite +Identity +Identitate +HTML footer +Subsol HTML +N# connections +Numãr de conexiuni +Abandon host if error +Abandoneazã gazdã în caz de eroare +Minimum transfer rate (B/s) +Ratã de transfer minimã (B/s) +Abandon host if too slow +Abandoneazã gazda dacã transferul este prea lent +Configure +Configureazã +Use proxy for ftp transfers +Foloseºte serverul proxy pentru transferurile FTP +TimeOut(s) +TimeOut(-uri) +Persistent connections (Keep-Alive) +Conexiuni persistente [menþine active] +Reduce connection time and type lookup time using persistent connections +Redu timpul de conectare ºi timpul de cãutare a tipului folosind conexiuni persistente. +Retries +Încercãri +Size limit +Limitã de dimensiune +Max size of any HTML file (B) +Dimensiune maximã a oricãrui fiºier HTML (B) +Max size of any non-HTML file +Dimensiunea maximã a oricãrui fiºier non-HTML +Max site size +Dimensiunea maximã a site-ului +Max time +Timp maxim +Save prefs +Salveazã preferinþele +Max transfer rate +Ratã maximã de transfer +Follow robots.txt +Urmeazã robots.txt +No external pages +Fãrã pagini externe +Do not purge old files +Nu elimina fiºierele vechi +Accept cookies +Acceptã cookies-uri +Check document type +Verificã tipul documentului +Parse java files +Analizeazã fiºierele java +Store ALL files in cache +Stocheazã toate fiºierele în cache +Tolerant requests (for servers) +Cereri tolerante (pentru servere) +Update hack (limit re-transfers) +Actualizare forþatã (limiteazã re-transferurile) +Force old HTTP/1.0 requests (no 1.1) +Forþeazã vechile cereri HTTP/1.0 (fãrã cereri HTTP/1.1) +Max connections / seconds +Numãrul maxim de conexiuni/secundã +Maximum number of links +Numãrul maxim de link-uri +Pause after downloading.. +Pauzã dupã descarcarea... +Hide passwords +Ascunde parole +Hide query strings +Ascunde 'query string'-urile +Links +Link-uri +Build +Structureazã +Experts Only +Pentru experþi +Flow Control +Controlul fluxului +Limits +Limite +Browser ID +Identificã HTTrack Web Copier ca: +Scan Rules +Reguli de scanare: +Spider +Pãianjen (spider) +Log, Index, Cache +Jurnal, Index, Cache +Proxy +Server proxy +MIME Types +Tipuri MIME +Do you really want to quit WinHTTrack Website Copier? +Chiar doriþi sã pãrãsiþi WinHTTrack Website Copier ? +Do not connect to a provider (already connected) +Nu conecta la un furnizor (deja conectat) +Do not use remote access connection +Nu folosi conexiune cu acces la distanþã +Schedule the mirroring operation +Programeazã operaþia de clonare (copiere) a site-ului +Quit WinHTTrack Website Copier +Ieºire din WinHTTrack Website Copier +Back to starting page +Înapoi la pagina de start +Click to start! +Click pentru pornire! +No saved password for this connection! +Nici o parolã salvatã pentru aceastã conexiune! +Can not get remote connection settings +Nu pot obþine ºetãrile conexiunii la distanþã +Select a connection provider +Alege un furnizor de conexiune +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Ajustaþi parametrii conexiunii dacã este necesar, \napoi apãsaþi FINISH pentru a începe clonarea sit-ului +Save settings only, do not launch download now. +Salveazã setãrile dar nu porni descãrcarea acum. +On hold +În aºteptare +Transfer scheduled for: (hh/mm/ss) +Transfer programat pentru:(hh/mm/ss) +Start +Start +Connect to provider (RAS) +Conecteazã la furnizorul de internet (RAS) +Connect to this provider +Conecteazã la acest furnizor de internet +Disconnect when finished +Deconecteazã ºa terminare +Disconnect modem on completion +Deconecteazã modemul la terminare +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) + +About WinHTTrack Website Copier +Despre WinHTTrack Website Copier +Please visit our Web page +Vizitaþi pagina noastrã Web +Wizard query +Vrãjitor de interogare +Your answer: +Rãspunsul d-voastrã: +Link detected.. +S-a detectat un link. +Choose a rule +Alege o regulã +Ignore this link +Ignorã acest link +Ignore directory +Ignorã director +Ignore domain +Ignorã domeniu +Catch this page only +Captureazã doar aceastã paginã +Mirror site +Cloneazã site +Mirror domain +Cloneazã domeniu +Ignore all +Ignorã tot +Wizard query +Vrãjitor de interogare +NO +NU +File +Fiºier +Options +Opþiuni +Log +Jurnal +Window +Fereastrã +Help +Ajutor +Pause transfer +Suspendã transfer +Exit +Ieºire +Modify options +Modificã opþiuni +View log +Vezi fiºierul jurnal. +View error log +Vezi fiºierul jurnal cu erori +View file transfers +Vezi transferurile de fiºiere +Hide +Ascunde +About WinHTTrack Website Copier +Despre WinHTTrack Website Copier +Check program updates... +Verificã actualizãrile pentru WinHTTrack... +&Toolbar +&Bara de instrumente +&Status Bar +Bara de &Stare +S&plit +Îm&parte +File +Fiºier +Preferences +Preferinþe +Mirror +Clonare (copiere sit) +Log +Jurnal +Window +Fereastrã +Help +Ajutor +Exit +Ieºire +Load default options +Încarcã opþiunile implicite +Save default options +Salveazã optiunile implicite +Reset to default options +Reseteazã la opþiunile implicite +Load options... +Încarcã opþiunile... +Save options as... +Salveazã opþiunile ca... +Language preference... +Alegere Limbã +Contents... +Conþinut... +About WinHTTrack... +Despre WinHTTrack... +New project\tCtrl+N +Proiect nou\tCtrl+N +&Open...\tCtrl+O +&Deschide...\tCtrl+O +&Save\tCtrl+S +&Salveazã\tCtrl+S +Save &As... +Salveazã C&a... +&Delete... +ªt&erge... +&Browse sites... +&Rãsfoire situri... +User-defined structure +Structurã definitã de utilizator +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNumele fiºierului fãrã extensie (ex: image)\r\n%N\tNumele fiºierului cu extensie (ex: image.gif)\r\n%t\tNumai tipul fiºierului (extensia) (ex: gif)\r\n%p\tCalea [fãrã / la sfârºit] (ex: /someimages)\r\n%h\tNumele Gazdei (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tDenumire scurtã DOS (ex: %sN)\r\n +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Exemplu:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Setãri ale serverului proxy: +Proxy address: +Adresa serverului proxy: +Proxy port: +Portul serverului proxy: +Authentication (only if needed) +Autentificare (numai dacã este necesarã) +Login +Nume utilizator (Login) +Password +Parola +Enter proxy address here +Introduceþi aici adresa serverului proxy +Enter proxy port here +Introduceþi aici portul serverului proxy +Enter proxy login +Introduceþi numele utilizatorului (login) serverului proxy +Enter proxy password +Introduceþi parola de conectare la serverul proxy +Enter project name here +Introduceþi numele proiectului aici +Enter saving path here +Introduceþi calea pentru salvarea proiectului +Select existing project to update +Selecteazã un proiect existent pentru actualizare +Click here to select path +Click aici pentru a selecta calea +HTTrack Project Wizard... +Vrãjitor proiect HTTrack... +New project name: +Nume proiect nou: +Existing project name: +Numele proiectului existent: +Project name: +Nume proiect: +Base path: +Calea de bazã: +C:\\My Web Sites +C:\\Siturile Mele +Type a new project name, \r\nor select existing project to update/resume +Introduceþi numele unui proiect nou,\r\nsau selectaþi un proiect existent pentru actiualizare/continuare +New project +Proiect nou +Insert URL +Introduceþi o adresã URL +URL: +URL: +Authentication (only if needed) +Autentificare (doar dacã e necesarã) +Login +Nume utilizator (Login) : +Password +Parola +Forms or complex links: +Formulare sau link- uri complexe +Capture URL... +Captureazã URL... +Enter URL address(es) here +Introduceþi adresa (adresele) URL aici +Enter site login +Introduceþi numele de utilizator pentru site +Enter site password +Introduceþi parola pentru site +Use this capture tool for links that can only be accessed through forms or javascript code +Foloseºte aceastã unealtã de capturã pentru link- uri care pot fi accesate numai prin formulare sau cod javascript +Choose language according to preference +Alege limba de aici... +Catch URL! +Captureazã aceastã adresã URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Setaþi proprietãþile temporar serverului proxy a browserului vostru cu urmãtoarele valori (Copy/Paste Adresa Proxy ºi Portul).\nApoi daþi click pe butonul Trimite din formular, sau faceþi click pe un link specific, pe care doriþi sa îl capturaþi. +This will send the desired link from your browser to WinHTTrack. +Aceasta va trimite link-ul dorit, din browser cãtre WinHTTrack. +ABORT +RENUNÞà +Copy/Paste the temporary proxy parameters here +Copiazã/Lipeºte parametrii temporari ai serverului proxy aici +Cancel +Anulare +Unable to find Help files! +Nu gãsesc fiºierele de Ajutor! +Unable to save parameters! +Nu pot sã salvez parametrii! +Please drag only one folder at a time +Vã rog trageþi numai un fiºier o datã +Please drag only folders, not files +Trageþi numai dosare, nu fiºiere +Please drag folders only +Trageþi numai dosare +Select user-defined structure? +Alegeþi o structurã definitã de utilizator pentru copierea sit-ului ? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Asiguraþi-vã cã ºirul definit de utilizator este corect,\n altfel numele fiºierelor vor fi eronate ! +Do you really want to use a user-defined structure? +Chiar doriþi sã folosiþi o structurã personalizatã (user-defined)? +Too manu URLs, cannot handle so many links!! +Prea multe adrese URL, nu pot manipula aºa multe link-uri +Not enough memory, fatal internal error.. +Memorie insuficientã, eroare internã fatalã... +Unknown operation! +Operaþie necunoscutã! +Add this URL?\r\n +Adaug aceastã adresã URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +ATENÞIE: Procesul principal tot nu rãspunde, nu pot adãuga adresa (adresele) URL.. +Type/MIME associations +Asocieri de tip/MIME +File types: +Tipuri de fiºiere: +MIME identity: +Identitate MIME: +Select or modify your file type(s) here +Alege sau modificã tip(urile) de fiºier(e) aici +Select or modify your MIME type(s) here +Alege sau modificã tipul (tipurile) MIME aici +Go up +Urcã +Go down +Coboarã +File download information +Informaþii despre fiºierele descãrcate +Freeze Window +Îngheaþã fereastra +More information: +Mai multe informaþii: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Bine aþi venit la WinHTTrack Website Copier!\n\nClick pe butonul Next pentru\n\n- a începe un proiect nou\n- sau a continua o descãrcare parþialã +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Nume de fiºier cu extensie:\nNume de fiºiere ce conþin:\nAcest nume de fiºier:\nNume de directoare ce conþin:\nAcest nume de director:\nLinkurile din acest domeniu:\nLinkurile din acest domeniu care conþin:\nLink-urile de la aceastã gazdã:\nLink-urile care conþin:\nAcest link:\nTOATE LINK-URILE +Show all\nHide debug\nHide infos\nHide debug and infos +Aratã tot\nAscunde informaþiile de depanare\nAscunde informaþiile generale\nAscunde ºi informaþiile de depanare ºi cele generale +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Structura site-ului (implicit)\nHtml în web/, imagini/alte fiºiere din web/imagini/\nHtml în web/html, imagini/altele în web/imagini\nHtml în web/, imagini/altele în web/\nHtml în web/, imagini/altele în web/xxx, unde xxx este extensia fiºierului\nHtml în web/html, imagini/altele în web/xxx\nStructura-site, fãrã www.domeniu.xxx/\nHtml în numele_site-ului/, imagini/alte fiºiere în numele_site-ului/imagini/\nHtml în numele_site-ului/html, imagini/altele în numele_site-ului/imagini\nHtml în site_name/, imagini/altele în numele_site-ului /\nHtml în numele_site-ului/, imagini/altele în numele_site-ului/xxx\nHtml în numele_site-ului/html, imagini/alte în numele_site-ului/xxx\nToate fiºierele în web/, cu nume aleatoare (gadget !)\nToate fiºierele în numele_site-ului/, cu nume aleatoare (gadget !)\nStructurã personalizatã (definitã de utilizator ).. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Doar scaneazã\nStocheazã fiºiere\nStocheazã fiºiere non HTML\nStocheazã toate fiºierele (implicit)\nStocheazã întâi fiºierele html +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Rãmâi în acelaºi director\nCoborâre permisã\nUrcare permisã\nUrcare ºi coborâre permisã +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Rãmâi la aceeaºi adresã (implicit)\nRãmâi pe acelaºi domeniu\nRãmâi la acelaºi domeniu de nivel superior\nMergi oriunde pe web +Never\nIf unknown (except /)\nIf unknown +Niciodatã\nDacã este necunoscut (excepþie /)\nDacã este necunoscut +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Fãrã regulile robots.txt\nrobots.txt exceptând filtrele\n urmeazã regulile din robots.txt +normal\nextended\ndebug +normal\nextins\ndepanare +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Descarcã site(-uri) web\nDescãrcare interactivã site(-uri) web\nDescarcã fiºiere individuale\nDescarcã toate ºite-urile din pagini (clonãri multiple)\nTesteazã linkurile din pagini (testeazã semnele de carte)\n* Continuã o descãrcare întreruptã \n* Actualizeazã o descãrcare existentã +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Adresã URI relativã / Adresã URL absolutã (implicit)\nAdresã URL absolutã / Adresã URL absolutã\nAdresã URI absolutã / Adresã URL absolutã \n Adresã URL originalã / Adresã URL originalã +Open Source offline browser +Browser offline open source. +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Copiator de situri web/Browser offline. Copiazã situri web pe calculatorul dumneavoastrã.Gratuit +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, offline browser +URL list (.txt) +Lista URL (.txt) +Previous +Anterior +Next +Urmãtor +URLs +URL- uri +Warning +Avertisment +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Browserul dumneavoastrã nu suportã javascript. Pentru rezultate mai bune, vã rugãm sa folosiþi un browser ce suportã javascript. +Thank you +Vã mulþumim +You can now close this window +Acum puteþi închide aceastã fereastrã. +Server terminated +Server terminat +A fatal error has occured during this mirror +A survenit o eroare fatalã în timpul acestei clonãri. diff --git a/lang/Russian.txt b/lang/Russian.txt new file mode 100755 index 0000000..d9abc5b --- /dev/null +++ b/lang/Russian.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Russian +LANGUAGE_FILE +Russian +LANGUAGE_ISO +ru +LANGUAGE_AUTHOR +Andrei Iliev (iliev at vitaplus.ru) \r\n +LANGUAGE_CHARSET +windows-1251 +OK +ÎÊ +Cancel +Îòìåíà +Exit +Âûõîä +Close +Çàêðûòü +Cancel changes +Îòìåíèòü èçìåíåíèÿ +Click to confirm +Ïîäòâåðäèòü +Click to get help! +Ïîëó÷èòü ñïðàâêó +Click to return to previous screen +Âåðíóòüñÿ íàçàä +Click to go to next screen +Ïåðåéòè ê ñëåäóþùåìó ýêðàíó +Hide password +Ñêðûòü ïàðîëü +Save project +Ñîõðàíèòü ïðîåêò +Close current project? +Çàêðûòü òåêóùèé ïðîåêò? +Delete this project? +Óäàëèòü ýòîò ïðîåêò? +Delete empty project %s? +Óäàëèòü ïóñòîé ïðîåêò %s? +Action not yet implemented +Ïîêà íå ðåàëèçîâàíî +Error deleting this project +Îøèáêà óäàëåíèÿ ïðîåêòà +Select a rule for the filter +Âûáðàòü òèï ôèëüòðà +Enter keywords for the filter +Ââåäèòå çíà÷åíèÿ óñëîâèé ôèëüòðà +Cancel +Îòìåíà +Add this rule +Äîáàâèòü ýòî óñëîâèå +Please enter one or several keyword(s) for the rule +Ââåäèòå çíà÷åíèÿ óñëîâèé ôèëüòðà +Add Scan Rule +Äîáàâèòü ôèëüòð +Criterion +Âûáðàòü òèï: +String +Ââåñòè çíà÷åíèå: +Add +Äîáàâèòü +Scan Rules +Ôèëüòðû +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Èñïîëüçóÿ ìàñêè âû ìîæåòå èñêëþ÷èòü/âêëþ÷èòü ñðàçó íåñêîëüêî àäðåñîâ\nÊàê ðàçäåëèòåëü ôèëüòðîâ èñïîëüçóéòå çàïÿòûå èëè ïðîáåëû.\nÏðèìåð: +*.zip -www.*.com,-www.*.edu/cgi-bin/*.cgi +Exclude links +Èñêëþ÷èòü... +Include link(s) +Âêëþ÷èòü... +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Ñîâåò: Åñëè âû õîòèòå ñêà÷àòü âñå gif-ôàéëû, èñïîëüçóéòå, íàïðèìåð, òàêîé ôèëüòð +www.someweb.com/*.gif. \n(+*.gif / -*.gif ðàçðåøàåò/çàïðåùàåò äëÿ ñêà÷èâàíèÿ ÂÑÅ gif-ôàéëû íà ÂÑÅÕ ñàéòàõ) +Save prefs +Ñîõðàíèòü íàñòðîéêè +Matching links will be excluded: +Ëèíêè, óäîâëåòâîðÿþùèå ýòîìó óñëîâèþ áóäóò èñêëþ÷åíû: +Matching links will be included: +Ëèíêè, óäîâëåòâîðÿþùèå ýòîìó óñëîâèþ áóäóò âêëþ÷åíû: +Example: +Ïðèìåð: +gif\r\nWill match all GIF files +gif\r\nÎáíàðóæèò âñå gif (èëè GIF) ôàéëû +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nÎòëîâèò âñå ôàéëû, ñîäåðæàùèå â èìåíè ïîäñòðîêó 'blue', íàïðèìåð 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nÎòëîâèò ôàéë 'bigfile.mov', íî, â òîæå âðåìÿ, ïðîïóñòèò ôàéë 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nÎòëîâèò àäðåñà, ñîäåðæàùèå êàòàëîãè ñ ïîäñòðîêîé 'cgi', òàêèå êàê /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nÎòëîâèò àäðåñà, ñîäåðæàùèå êàòàëîã 'cgi-bin' (íî íå cgi-bin-2, íàïðèìåð) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nÎòëîâèò òàêèå ëèíêè, êàê www.someweb.com, private.someweb.com è ò.ï.. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nÎòëîâèò àäðåñà òèïà www.someweb.com, www.someweb.edu, private.someweb.otherweb.com è ò.ä.\r\n +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nÎòëîâèò àäðåñà, òàêèå êàê www.someweb.com/... (íî íå òàêèå, êàê private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nÎòëîâèò âñå ëèíêè òàêèå, êàê www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html è ò.ï. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nÎòëîâèò òîëüêî www.test.com/test/someweb.html. Çàìåòèì, ÷òî íåîáõîäèìî óêàçàòü ïîëíûé àäðåñ ðåñóðñà - õîñò (www.xxx.yyy) è ïóòü (/test/someweb.html) +All links will match +Âñå ëèíêè äîïóñòèìû +Add exclusion filter +Äîáàâèòü èñêëþ÷àþùèé ôèëüòð +Add inclusion filter +Äîáàâèòü âêëþ÷àþùèé ôèëüòð +Existing filters +Äîïîëíèòåëüíûå ôèëüòðû +Cancel changes +Îòìåíèòü èçìåíåíèÿ +Save current preferences as default values +Ñîõðàíèòü òåêóùèå íàñòðîéêè êàê çíà÷åíèÿ ïî óìîë÷àíèþ +Click to confirm +Ïîäòâåðäèòü +No log files in %s! +Îòñóòñòâóþò ëîã ôàéëû â %s! +No 'index.html' file in %s! +Îòñóòñòâóåò ôàéë index.html â %s! +Click to quit WinHTTrack Website Copier +Âûéòè èç ïðîãðàììû WinHTTrack Website Copier +View log files +Ïðîñìîòð ëîã ôàéëîâ +Browse HTML start page +Îòîáðàçèòü ñòàðòîâóþ html ñòðàíèöó +End of mirror +Ñîçäàíèå çåðêàëà çàâåðøåíî +View log files +Ïðîñìîòð log ôàéëîâ +Browse Mirrored Website +Ïðîñìîòð çåðêàëà +New project... +Íîâûé ïðîåêò... +View error and warning reports +Ïðîñìîòð îò÷åòà îá îøèáêàõ è ïðåäóïðåæäåíèÿõ +View report +Ïðîñìîòð îò÷åòà +Close the log file window +Çàêðûòü îêíî ëîãà +Info type: +Òèï èíôîðìàöèè +Errors +Îøèáêè +Infos +Èíôîðìàöèÿ +Find +Íàéòè +Find a word +Íàéòè ñëîâî +Info log file +Èíôî ëîã-ôàéë +Warning/Errors log file +Ëîã ôàéë îøèáîê/ïðåäóïðåæäåíèé +Unable to initialize the OLE system +Íåâîçìîæíî èíèöèàëèçèðîâàòü OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! + óêàçàííîì êàòàëîãå WinHTTrack íå ìîæåò íàéòè íè îäíîãî êýøà ïðåðâàííîé çàêà÷êè! +Could not connect to provider +Íå âîçìîæíî ñîåäèíèòüñÿ ñ ïðîâàéäåðîì +receive +ïîëó÷åíèå +request +çàïðîñ +connect +ñîåäèíåíèå +search +ïîèñê +ready +ãîòîâ +error +îøèáêà +Receiving files.. +Ïîëó÷àåì ôàéëû +Parsing HTML file.. +Ðàçáîð HTML ôàéëà... +Purging files.. +Óäàëÿåì ôàéëû... +Loading cache in progress.. +Èäåò çàãðóçêà êýøà.. +Parsing HTML file (testing links).. +Àíàëèçèðóåì HTML ôàéë (ïðîâåðÿåì ëèíêè)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Îñòàíîâëåíî (äëÿ ïðîäîëæåíèÿ âûáåðåòå [Çåðêàëî]/[Ïðèîñòàíîâèòü çàêà÷êó] ) +Finishing pending transfers - Select [Cancel] to stop now! +Çàâåðøàþòñÿ îòëîæåííûå çàêà÷êè - ÷òîáû ïðåðâàòü, íàæìèòå Cancel! +scanning +ñêàíèðóåì +Waiting for scheduled time.. +Îæèäàåì çàäàííîå âðåìÿ íà÷àëà +Connecting to provider +Ñîåäèíÿåìñÿ ñ ïðîâàéäåðîì +[%d seconds] to go before start of operation +Îñòàëîñü [%d ñåêóíä] äî íà÷àëà +Site mirroring in progress [%s, %s bytes] +Ñîçäàåòñÿ çåðêàëî [%s, %s áàéò] +Site mirroring finished! +Ñîçäàíèå çåðêàëà çàâåðøåíî! +A problem occured during the mirroring operation\n + ïðîöåññå çàêà÷êè ïðîèçîøëà îøèáêà\n +\nDuring:\n + òå÷åíèè:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! + ñëó÷àå íåîáõîäèìîñòè, ñìîòðè ëîã ôàéë.\n\nÄëÿ âûõîäà èç WinHTTrack íàæìèòå êíîïêó OK.\n\nÑïàñèáî çà èñïîëüçîâàíèå WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Ñîçäàíèå çåðêàëà çàâåðøåíî.\nÄëÿ âûõîäà èç ïðîãðàììû íàæìèòå êíîïêó OK.\nÄëÿ ïðîâåðêè óñïåøíîñòè çàêà÷êè ïîñìîòðèòå ëîã ôàéë(û).\n\nÑïàñèáî çà èñïîëüçîâàíèå WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * ÇÀÊÀ×ÊÀ ÏÐÅÐÂÀÍÀ! * *\r\nÂðåìåííûé êýø, ñîçäàííûé âî âðåìÿ òåêóùåé ñåññèé, ñîäåðæèò äàííûå, çàãðóæåííûå òîëüêî âî âðåìÿ äàííîé ñåññèè è ïîòðåáóåòñÿ òîëüêî â ñëó÷àå âîçîáíîâëåíèÿ çàêà÷êè.\r\nÎäíàêî, ïðåäûäóùèé êýø ìîæåò ñîäåðæàòü áîëåå ïîëíóþ èíôîðìàöèþ. Åñëè âû íå õîòèòå ïîòåðÿòü ýòè äàííûå, âàì íóæíî óäàëèòü òåêóùèé êýø è âîçîáíîâèòü ïðåäûäóùèé.\r\n(Ýòî ìîæíî ëåãêî ñäåëàòü ïðÿìî çäåñü, óäàëèâ ôàéëû hts-cache/new.]\r\n\r\nÑ÷èòàåò-ëè âû, ÷òî ïðåäûäóùèé êýø ìîæåò ñîäåðæàòü áîëåå ïîëíóþ èíôîðìàöèþ, è õîòèòå ëè âû âîññòàíîâèòü åãî? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ÎØÈÁÊÀ! * *\r\nÒåêóùåå çåðêàëî - ïóñòî. Åñëè ýòî áûëî îáíîâëåíèå, ïðåäûäóùàÿ âåðñèÿ çåðêàëà âîññòàíîâëåíà.\r\nÏðè÷èíà: ïåðâàÿ ñòðàíèöà(û) èëè íå íàéäåíà, èëè áûëè ïðîáëåìû ñ ñîåäèíåíèåì.\r\n=> Óáåäèòåñü, ÷òî âåáñàéò âñå-åùå ñóùåñòâóåò, è/èëè ïðîâåðüòå óñòàíîâêè ïðîêñè-ñåðâåðà! <= +\n\nTip: Click [View log file] to see warning or error messages +\nÏîäñêàçêà:Äëÿ ïðîñìîòðà ñîîáùåíèé îá îøèáêàõ è ïðåäóïðåæäåíèé íàæìèòå [Ïðîñìîòð ëîã ôàéëà] +Error deleting a hts-cache/new.* file, please do it manually +Îøèáêà óäàëåíèÿ ôàéëà hts-cache/new.* , ïîæàëóéñòà, óäàëèòå åãî ðó÷êàìè.\r\n +Do you really want to quit WinHTTrack Website Copier? +Âû äåéñòâèòåëüíî õîòèòå âûéòè èç WinHTTrack? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Ìîäà çåðêàëèçàöèè -\n\nÂâåäèòå àäðåñ(à) â ïîëå URL. +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Èíòåðàêòèâíàÿ ìîäà - Ìàñòåð ñîçäàíèÿ çåðêàëà (áóäóò çàäàíû âîïðîñû) -\n\nÂâåäèòå àäðåñ(à) â ïîëå URL. +- File Download Mode -\n\nEnter file address(es) in URL box +- Ìîäà çàêà÷êè îòäåëüíûõ ôàéëîâ -\n\nÂâåäèòå àäðåñ(à) ôàéëîâ â ïîëå URL. +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Ìîäà òåñòèðîâàíèÿ ëèíêîâ -\n\nÂâåäèòå àäðåñ(à) ñòðàíèö, ñîäåðæàùèõ URL'û, êîòîðûå âû õîòèòå ïðîòåñòèðîâàòü. +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Ìîäà îáíîâëåíèÿ -\n\nÏðîâåðüòå àäðåñ(à) â ïîëå URL, çàòåì íàæìèòå êíîïêó 'ÄÀËÅÅ' è ïðîâåðüòå ïàðàìåòðû. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Ìîäà ïðîäîëæåíèÿ ðàíåå ïðåðâàííîãî ñîçäàíèÿ çåðêàëà -\n\nÏðîâåðüòå àäðåñ(à) â ïîëå URL, çàòåì íàæìèòå êíîïêó 'ÄÀËÅÅ' è ïðîâåðüòå ïàðàìåòðû. +Log files Path +Ïóòü ê ëîã ôàéëàì +Path +Ïóòü +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +Ìîäà ñîçäàíèÿ çåðêàë èç ñïèñêà-\n\n ïîëå URL çàïîëíèòå àäðåñà ñòðàíèö, ñîäåðæàùèõ URL'û, êîòîðûå âû õîòèòå çåðêàëèçîâàòü. +New project / Import? +Íîâûé ïðîåêò / èìïîðòèðîâàòü? +Choose criterion +Âûáåðåòå äåéñòâèå +Maximum link scanning depth +Ìàêñ.ãëóáèíà ñêàíèðîâàíèÿ +Enter address(es) here +Ââåäèòå àäðåñà +Define additional filtering rules +Çàäàòü äîïîëíèòåëüíûå ôèëüòðû +Proxy Name (if needed) +Ïðîêñè, åñëè òðåáóåòñÿ +Proxy Port +Íîìåð ïîðòà ïðîêñè-ñåðâåðà +Define proxy settings +Çàäàéòå óñòàíîâêè ïðîêñè +Use standard HTTP proxy as FTP proxy +Èñïîëüçîâàòü HTTP ïðîêñè êàê FTP ïðîêñè +Path +Ïóòü +Select Path +Âûáåðåòå ïóòü +Path +Ïóòü +Select Path +Âûáåðåòå ïóòü +Quit WinHTTrack Website Copier +Âûéòè èç WinHTTrack Website Copier +About WinHTTrack +Î ïðîãðàììå WinHTTrack +Save current preferences as default values +Ñîõðàíèòü òåêóùèå óñòàíîâêè êàê ïàðàìåòðû ïî óìîë÷àíèþ +Click to continue +Ïðîäîëæèòü +Click to define options +Çàäàòü ïàðàìåòðû çàêà÷êè +Click to add a URL +Äîáàâèòü URL +Load URL(s) from text file +Çàãðóçèòü URL(û) èç òåêñòîâîãî ôàéëà +WinHTTrack preferences (*.opt)|*.opt|| +Íàñòðîéêè WinHTTrack (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Òåêñòîâûé ôàéë ñïèñêà àäðåñîâ(*.txt)|*.txt|| +File not found! +Ôàéë íå íàéäåí! +Do you really want to change the project name/path? +Âû äåéñòâèòåëüíî õîòèòå èçìåíèòü íàçâàíèå ïðîåêòà/ïóòü? +Load user-default options? +Çàãðóçèòü óñòàíîâêè ïî óìîë÷àíèþ? +Save user-default options? +Ñîõðàíèòü íàñòðîéêè? +Reset all default options? +Ïåðåóñòàíîâèòü âñå ïàðàìåòðû ïî óìîë÷àíèþ? +Welcome to WinHTTrack! +WinHTTrack ïðèâåòñòâóåò âàñ! +Action: +Òèï ðàáîòû: +Max Depth +Ìàêñ. ãëóáèíà: +Maximum external depth: +Ìàêñèìàëüíàÿ ãëóáèíà âíåøíèõ ñàéòîâ: +Filters (refuse/accept links) : +Ôèëüòðû (âêëþ÷èòü/âûêëþ÷èòü ëèíêè) +Paths +Ïóòè +Save prefs +Ñîõðàíèòü íàñòðîéêè +Define.. +Çàäàòü... +Set options.. +Çàäàòü ïàðàìåòðû... +Preferences and mirror options: +Íàñòðîéêè ïàðàìåòðîâ çàêà÷êè:: +Project name +Íàçâàíèå ïðîåêòà +Add a URL... +Äîáàâèòü URL... +Web Addresses: (URL) +Âåá àäðåñà: (URL) +Stop WinHTTrack? +Ïðåðâàòü WinHTTrack? +No log files in %s! +Íåò ëîã ôàéëîâ â %s! +Pause Download? +Ïðèîñòàíîâèòü çàêà÷êó? +Stop the mirroring operation +Ïðåðâàòü çàêà÷êó +Minimize to System Tray +Ñïðÿòàòü â ñèñòåìíûé òðýé +Click to skip a link or stop parsing +Ïðîïóñòèòü ëèíê èëè ïðåðâàòü àíàëèç ôàéëà +Click to skip a link +Ïðîïóñòèòü ëèíê +Bytes saved +Ñîõðàíåíî áàéò: +Links scanned +Ïðîñêàíèðîâàíî ëèíêîâ: +Time: +Âðåìÿ: +Connections: +Ñîåäèíåíèé: +Running: +Ñîñòîÿíèå: +Hide +Ñïðÿòàòü +Transfer rate +Ñêîðîñòü çàêà÷êè: +SKIP +ÏÐÎÏÓÑÒÈÒÜ +Information +Èíôîðìàöèÿ +Files written: +Ñîõðàíåíî ôàéëîâ: +Files updated: +Îáíîâëåíî ôàéëîâ: +Errors: +Îøèáîê: +In progress: + ïðîöåññå: +Follow external links +Çàêà÷àòü ôàéëû èç âíåøíèõ ëèíêîâ +Test all links in pages +Ïðîâåðÿòü âñå ôàéëû íà ñòðàíèöàõ +Try to ferret out all links +Ñòàðàòüñÿ îïðåäåëèòü âñå ëèíêè +Download HTML files first (faster) +Çàãðóçèòü âíà÷àëå HTML-ôàéëû (áûñòðåå) +Choose local site structure +Âûáðàòü ëîêàëüíóþ ñòðóêòóðó ñàéòà +Set user-defined structure on disk +Óñòàíîâèòü çàäàííóþ ëîêàëüíóþ ñòðóêòóðó ñàéòà +Use a cache for updates and retries +Èñïîëüçîâàòü êýø äëÿ îáíîâëåíèÿ è äîêà÷êè +Do not update zero size or user-erased files +Íå êà÷àòü ôàéëû, êîòîðûå áûëè îäíàæäû ñêà÷àíû, äàæå åñëè îíè íóëåâîé äëèíû èëè óäàëåíû +Create a Start Page +Ñîçäàòü íà÷àëüíóþ ñòðàíèöó +Create a word database of all html pages +óÏÚÄÁÔØ ÂÁÚÕ ÄÁÎÎÙÈ ÓÌÏ×, ÓÏÄÅÒÖÁÝÉÈÓÑ × html-ÓÔÒÁÎÉÃÁÈ +Create error logging and report files +Ñîçäàòü ëîã ôàéëû ñ èíôîðìàöèåé î ðàáîòå è îøèáêàõ +Generate DOS 8-3 filenames ONLY +Ñîçäàâàòü ôàéëû â DOS-ôîðìàòå 8.3 +Generate ISO9660 filenames ONLY for CDROM medias +Ñîçäàâàòü èìåíà ôàéëîâ â ñòàíäàðòå ISO9660 òîëüêî äëÿ CDROM +Do not create HTML error pages +Íå çàïèñûâàòü ôàéëû html-îøèáîê +Select file types to be saved to disk +Âûáåðåòå òèïû ôàéëîâ, ñîõðàíÿåìûõ íà äèñêå +Select parsing direction +Âûáåðåòå íàïðàâëåíèå ïðîäâèæåíèÿ ïî ñàéòó +Select global parsing direction +Âûáåðåòå ãëîáàëüíîå íàïðàâëåíèå ïðîäâèæåíèÿ ïî ñàéòó +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Óñòàíîâèòü ïðàâèëà ïåðåèìåíîâàíèÿ ëèíêîâ êàê äëÿ âíóòðåííèõ (çàêà÷èâàåìûõ) òàê è äëÿ âíåøíèõ (íå çàãðóæàåìûõ) àäðåñîâ +Max simultaneous connections +Maêñèìàëüíîå ÷èñëî ñîåäèíåíèé +File timeout +Maêñèìàëüíîå âðåìÿ íå àêòèâíîñòè çàêà÷êè +Cancel all links from host if timeout occurs + ñëó÷àå ïðåâûøåíèÿ âðåìåíè îæèäàíèÿ îòìåíèòü âñå ëèíêè ñ äàííîãî õîñòà +Minimum admissible transfer rate +Mèíèìàëüíî äîïóñòèìàÿ ñêîðîñòü çàêà÷êè +Cancel all links from host if too slow + ñëó÷àå, åñëè õîñò ñëèøêîì ìåäëåííûé, îòìåíèòü âñå ëèíêè ñ äàííîãî õîñòà +Maximum number of retries on non-fatal errors +Maêñèìàëüíîå ÷èñëî ïîâòîðíûõ ïîïûòîê, â ñëó÷àå íå ôàòàëüíûõ îøèáîê. +Maximum size for any single HTML file +Maêñèìàëüíûé ðàçìåð ëþáîãî html-ôàéëà +Maximum size for any single non-HTML file +Maêñèìàëüíûé ðàçìåð ëþáîãî íå HTML-ôàéëà +Maximum amount of bytes to retrieve from the Web +Maêñèìàëüíîå êîëè÷åñòâî áàéò, äîïóñòèìûõ äëÿ çàêà÷êè +Make a pause after downloading this amount of bytes +Ïîñëå çàãðóçêè óêàçàííîãî ÷èñëà áàéòîâ, ñäåëàòü ïàóçó +Maximum duration time for the mirroring operation +Maêñ. ïðîäîëæèòåëüíîñòü çåðêàëèçàöèè +Maximum transfer rate +Ìàêñ. ñêîðîñòü çàêà÷êè +Maximum connections/seconds (avoid server overload) +Ìàêñ. êîëè÷åñòâî ñîåäèíåíèé â ñåêóíäó (íå ïåðåãðóæàòü ñåðâåð) +Maximum number of links that can be tested (not saved!) +íÁËÓÉÍÁÌØÎÏÅ ÞÉÓÌÏ ÔÅÓÔÉÒÕÅÍÙÈ ÌÉÎËÏ× (ÔÅÓÔÉÒÕÅÍÙÈ, Á ÎÅ ÓÏÈÒÁÎÑÅÍÙÈ!) +Browser identity +Èäåíòèôèêàöèÿ áðîóçåðà (ñòðîêà User-Agent) +Comment to be placed in each HTML file +Êîììåíòàðèé, ðàçìåùàåìûé â êàæäîì HTML ôàéëå +Back to starting page +Íàçàä íà íà÷àëüíóþ ñòðàíèöó +Save current preferences as default values +Ñîõðàíèòü íàñòðîéêè êàê çíà÷åíèÿ ïî óìîë÷àíèþ +Click to continue +Ïðîäîëæèòü +Click to cancel changes +Îòìåíèòü èçìåíåíèÿ +Follow local robots rules on sites +Ïîä÷èíÿòüñÿ ïðàâèëàì äëÿ ðîáîòîâ, óñòàíàâëèâàåìûì ñàéòàìè +Links to non-localised external pages will produce error pages +Ïî ññûëêàì íà âíåøíèå ñòðàíèöû (íå ñêà÷àííûå) áóäåò ïåðåõîä ê ñòðàíèöàì îøèáîê +Do not erase obsolete files after update +Íå óäàëÿòü ñòàðûå ôàéëû ïîñëå ïðîöåäóðû îáíîâëåíèÿ çåðêàëà +Accept cookies? +Ðàçðåøèòü cookies? +Check document type when unknown? +Ïðîâåðÿòü òèï äîêóìåíòà, â ñëó÷àå êîãäà îí íå èçâåñòåí? +Parse java applets to retrieve included files that must be downloaded? +Àíàëèçèðîâàòü ÿâà-àïïëåòû ñ öåëüþ îïðåäåëåíèÿ âêëþ÷àåìûå ôàéëîâ? +Store all files in cache instead of HTML only +Ïðèíóäèòåëüíî ñîõðàíÿòü âñå ôàéëû â êýøå, à íå òîëüêî ôàéëû HTML +Log file type (if generated) +Òèï log ôàëà +Maximum mirroring depth from root address +Ìàêñ. ãëóáèíà ñîçäàíèÿ çåðêàëà îò íà÷àëüíîãî àäðåñà +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Ìàêñèìàëüíàÿ ãëóáèíà çàêà÷êè äëÿ âíåøíèõ/çàïðåùåííûõ àäðåñîâ (0, ò.å., íåò îãðàíè÷åíèé, ýòî çíà÷åíèå ïîóìîë÷àíèþ) +Create a debugging file +Ñîçäàòü ôàéë ñ îòëàäî÷íîé èíôîðìàöèåé +Use non-standard requests to get round some server bugs +Ïîïûòàòüñÿ îáîéòè îøèáêè íåêîòîðûõ ñåðâåðîâ, èñïîëüçóÿ íå ñòàíäàðòíûå çàïðîñû +Use old HTTP/1.0 requests (limits engine power!) +Èñïîëüçîâàòü ñòàðûé ïðîòîêîë HTTP/1.0 (îãðàíè÷èò âîçìîæíîñòè ïðîãðàììû!) +Attempt to limit retransfers through several tricks (file size test..) +Ïîïûòêà îãðàíè÷èòü ïåðåêà÷êó èñïîëüóÿ íåêîòîðûå ïðèåìû (òåñò íà ðàçìåð ôàéëà..) +Write external links without login/password +Ñîõðàíÿòü âíåøíèå ëèíêè áåç ëîãèíà/ïàðîëÿ +Write internal links without query string +Ñîõðàíÿòü âíóòðåííèå ëèíêè óñå÷åííî (äî çàíàêà ?) +Get non-HTML files related to a link, eg external .ZIP or pictures +Êà÷àòü íå-html ôàéëû âáëèçè ññûëêè (íàïð.: âíåøíèå .ZIP èëè ãðàô. ôàéëû) +Test all links (even forbidden ones) +Ïðîâåðÿòü âñå ëèíêè (äàæå çàïðåùåííûå ê çàêà÷êå) +Try to catch all URLs (even in unknown tags/code) +Ñòàðàòüñÿ îïðåäåëÿòü âñå URL'û (äàæå â íåîïîçíàííûõ òýãàõ/ñêðèïòàõ) +Get HTML files first! +Ïîëó÷èòü âíà÷àëå HTML ôàéëû! +Structure type (how links are saved) +Òèï ëîêàëüíîé ñòðóêòóðû çåðêàëà (ñïîñîá ñîõðàíåíèÿ ôàéëîâ) +Use a cache for updates +Èñïîëüçîâàòü êýø äëÿ îáíîâëåíèÿ +Do not re-download locally erased files +Íå êà÷àòü çàíîâî ëîêàëüíî óäàëåííûå ôàéëû +Make an index +Ñîçäàòü èíäåêñ +Make a word database +óÏÚÄÁÔØ ÂÁÚÕ ÄÁÎÎÙÈ ÓÌÏ× +Log files +Log ôàéëû +DOS names (8+3) +DOS-ôîðìàò ôàéëîâ (8+3) +ISO9660 names (CDROM) +Èìåíà â ñòàíäàðòå ISO9660 (CDROM) +No error pages +Áåç ñòðàíèö îøèáîê +Primary Scan Rule +Îñíîâíîé ôèëüòð +Travel mode +Ìîäà ñêàíèðîâàíèÿ +Global travel mode +Ãëîáàëüíàÿ ìîäà ñêàíèðîâàíèÿ +These options should be modified only exceptionally +Êàê ïðàâèëî, ýòè íàñòðîéêè èçìåíÿòü íå ñëåäóåò +Activate Debugging Mode (winhttrack.log) +Âêëþ÷èòü ìîäó îòëàäêè (winhttrack.log) +Rewrite links: internal / external +Ïåðåèìåíîâàòü ëèíêè: âíóòðåííèå/âíåøíèå +Flow control +Êîíòðîëü íàïðàâëåíèÿ ñêàíèðîâàíèÿ +Limits +Îãðàíè÷åíèÿ +Identity +Èäåíòèôèêàòîð +HTML footer +Íèæíèé HTML êîëîíòèòóë +N# connections +N# ñîåäèíåíèé +Abandon host if error +Ïðåêðàòèòü çàêà÷êó ñ õîñòà, â ñëó÷àå îøèáêè +Minimum transfer rate (B/s) +Mèíèìàëüíàÿ ñêîðîñòü çàêà÷êè (B/s) +Abandon host if too slow +Ïðåêðàòèòü çàêà÷êó ñ õîñòà, åñëè îíà ñëèøêîì ìåäëåííàÿ +Configure +Íàñòðîèòü +Use proxy for ftp transfers +Èñïîëüçîâàòü ïðîêñè äëÿ ftp-çàêà÷êè +TimeOut(s) +Òàéì-àóò +Persistent connections (Keep-Alive) +Ïîñòîÿííûå ñîåäèíåíèÿ (Keep-Alive) +Reduce connection time and type lookup time using persistent connections +Óìåíüøèòü âðåìåíà ñîåäèíåíèÿ è îáðàùåíèÿ èñïîëüçóÿ ïîñòîÿííûå ñîåäèíåíèÿ +Retries +Ïîâòîðíûå ïîïûòêè +Size limit +Îãðàíè÷åíèå ïî ðàçìåðó +Max size of any HTML file (B) +Ìàêñ. ðàçìåð html-ôàéëà: +Max size of any non-HTML file +Ìàêñ. ðàçìåð íå-html: +Max site size +Ìàêñ. ðàçìåð ñàéòà +Max time +Ìàêñ. âðåìÿ çàêà÷êè +Save prefs +Ñîõðàíèòü íàñòðîéêè +Max transfer rate +Ìàêñ. ñêîðîñòü çàêà÷êè +Follow robots.txt +Ñëåäîâàòü ïðàâèëàì èç robots.txt +No external pages +Áåç âíåøíèõ ññûëîê +Do not purge old files +Íå óäàëÿòü ñòàðûå ôàéëû +Accept cookies +Ðàçðåøèòü cookies +Check document type +Ïðîâåðÿòü òèï äîêóìåíòà +Parse java files +Àíàëèç ÿâà ôàéëîâ +Store ALL files in cache +Ñîõðàíÿòü ÂÑÅ ôàéëû â êýøå +Tolerant requests (for servers) +Òîëåðàíòíûå çàïðîñû (ê ñåðâåðàì) +Update hack (limit re-transfers) +Update hack (îãðàíè÷åíèå ïîâòîðíûõ çàêà÷åê) +Force old HTTP/1.0 requests (no 1.1) +Èñïîëüçîâàòü ñòàðûé ïðîòîêîë HTTP/1.0 (íå 1.1) +Max connections / seconds +Ìàêñ. ÷èñëî ñîåäèíåíèé/ñåê. +Maximum number of links +íÁËÓÉÍÁÌØÎÏÅ ÞÍÓÌÏ ÌÉÎËÏ× +Pause after downloading.. +Ïàóçà ïîñëå çàãðóçêè... +Hide passwords +Ñêðûòü ïàðîëè +Hide query strings +Ñïðÿòàòü çàïðîñíóþ ÷àñòü ñòðîêè (âñå, ÷òî ïîñëå çíàêà ?) +Links +Ëèíêè +Build +Ñòðóêòóðà +Experts Only +Ýêñïåðò +Flow Control +Óïðàâëåíèå çàêà÷êîé +Limits +Îãðàíè÷åíèÿ +Browser ID +Èäåíòèôèêàöèÿ +Scan Rules +Ôèëüòðû +Spider +Êà÷àëêà +Log, Index, Cache +Ëîã, Èíäåêñ. Êýø +Proxy +Ïðîêñè +MIME Types +MIME Types (Òèïû ôàéëîâ) +Do you really want to quit WinHTTrack Website Copier? +Âû äåéñòâèòåëüíî õîòèòå çàâåðøèòü ðàáîòó ñ ïðîãðàììîé? +Do not connect to a provider (already connected) +Íå ñîåäèíÿòüñÿ ñ ïðîâàéäåðîì (ñîåäèíåíèå óæå óñòàíîâëåíî) +Do not use remote access connection +Íå èñïîüçîâàòü óäàëåííîé ñîåäèíåíèÿ +Schedule the mirroring operation +Çàêà÷êà ïî ðàñïèñàíèþ +Quit WinHTTrack Website Copier +Âûéòè èç WinHTTrack Website Copier +Back to starting page +Íàçàä ê íà÷àëüíîé ñòðàíèöå +Click to start! +Íà÷àòü! +No saved password for this connection! +Íåò ñîõðàíåííîãî ïàðîëÿ äëÿ ýòîãî ñîåäèíåíèÿ +Can not get remote connection settings +Íå ìîãó ïîëó÷èòü óñòàíîâêè óäàëåííîãî ñîåäèíåíèÿ +Select a connection provider +Âûáåðåòå ïðîâàéäåðà, ê êîòîðîìó óñòàíîâèòü ñîåäèíåíèå +Start +Íà÷àòü +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Âû ìîæåòå èëè íà÷àòü çàêà÷êó, íàæàâ êíîïêó ÑÒÀÐÒ, èëè ìîæåòå çàäàòü äîïîëíèòåëüíûå ïàðàìåòðû ñîåäèíåíèÿ +Save settings only, do not launch download now. +Òîëüêî ñîõðàíèòü óñòàíîâêè, íå íà÷èíàòü çàêà÷êó. +On hold +Çàäåðæêà +Transfer scheduled for: (hh/mm/ss) +Æäåì äî: (hh/mm/ss) +Start +Íà÷àòü! +Connect to provider (RAS) +Ñîåäèíèòüñÿ ñ ïðîâàéäåðîì (RAS) +Connect to this provider +Ñîåäèíèòüñÿ ñ ýòèì ïðîâàéäåðîì +Disconnect when finished +Îòñîåäèíèòüñÿ ïðè çàâåðøåíèè +Disconnect modem on completion +Îòñîåäåíèòü ïðè çàâåðøåíèè +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Ñîîáùèòå íàì ïîæàëóéñòà î çàìå÷åííûõ ïðîáëåìàõ è îøèáêàõ)\r\n\r\nÐàçðàáîòêà:\r\nÈíòåðôåéñ (Windows): Xavier Roche\r\nÊà÷àëêà (spider): Xavier Roche\r\nÏàðñåð ÿâà-êëàññîâ: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for Russian translations to:\r\nAndrei Iliev (andreiiliev@mail.ru) +About WinHTTrack Website Copier +Î ïðîãðàììå WinHTTrack Website Copier +Please visit our Web page +Ïîæàëóéñòà, ïîñåòèòå íàøó âåá-ñòðàíèöó +Wizard query +Âîïðîñ ìàñòåðà +Your answer: +Âàø îòâåò: +Link detected.. +Íàéäåí ëèíê +Choose a rule +Âûáåðåòå ïðàâèëî +Ignore this link +Èãíîðèðîâàòü ýòîò ëèíê +Ignore directory +Èãíîðèðîâàòü äèðåêòîðèþ +Ignore domain +Èãíîðèðîâàòü äîìåí +Catch this page only +Ñêà÷àòü òîëüêî ýòó ñòðàíè÷êó +Mirror site +Çåðêàëèçîâàòü ñàéò +Mirror domain +Çåðêàëèçîâàòü äîìåí +Ignore all +Èãíîðèðîâàòü âñå +Wizard query +Âîïðîñ ìàñòåðà +NO +ÍÅÒ +File +Ôàéë +Options +Íàñòðîéêè +Log +Ëîã +Window +Îêíî +Help +Ïîìîùü +Pause transfer +Ïðèîñòàíîâèòü çàêà÷êó +Exit +Âûõîä +Modify options +Èçìåíèòü íàñòðîéêè +View log +Ïðîñìîòðåòü ëîã +View error log +Ïðîñìîòðåòü ëîã îøèáîê +View file transfers +Ïîñìîòðåòü ïðîöåññ ïåðåäà÷è ôàéëîâ +Hide +Ñïðÿòàòü +About WinHTTrack Website Copier +Î ïðîãðàììå... +Check program updates... +Ïðîâåðèòü íàëè÷èå îáíîâëåííèé ïðîãðàììû... +&Toolbar +Ïàíåëü èíñòðóïåíòîâ +&Status Bar +Ïàíåëü ñîñòîÿíèÿ +S&plit +Ðàçäåëèòü +File +Ôàéë +Preferences +Íàñòðîéêè +Mirror +Çåðêàëî +Log +Ëîã +Window +Îêíî +Help +Ïîìîùü +Exit +Âûõîä +Load default options +Çàãðóçèòü çíà÷åíèÿ ïàðàìåòðîâ ïî óìîë÷àíèþ +Save default options +Ñîõðàíèòü çíà÷åíèÿ ïî óìîë÷àíèþ +Reset to default options +Î÷èñòèòü çíà÷åíèÿ ïî óìîë÷àíèþ +Load options... +Çàãðóçèòü íàñòðîéêè... +Save options as... +Ñîõðàíèòü íàñòðîéêè êàê... +Language preference... +Âûáîð ÿçûêà +Contents... +Ñîäåðæàíèå... +About WinHTTrack... +Î WinHTTrack... +New project\tCtrl+N +Íîâûé ïðîåêò\tCtrl+N +&Open...\tCtrl+O +&Îòêðûòü...\tCtrl+O +&Save\tCtrl+S +&Ñîõðàíèòü\tCtrl+S +Save &As... +Ñîõðàíèòü &Êàê... +&Delete... +&Óäàëèòü... +&Browse sites... +&Ïðîñìîòð ñàéòîâ... +User-defined structure +Çàäàíèå ñòðóêòóðû +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tÈìÿ ôàéëà áåç ðàñøèðåíèÿ (íàïð.: image)\r\n%N\tÈìÿ ôàéëà ñ ðàñøèðåíèåì (íàïð.: image.gif)\r\n%t\tÐàñøèðåíèå ôàéëà (íàïð.: gif)\r\n%p\tÏóòü ê ôàéëó [áåç îêàí÷èâàþùåãî /] (íàïð.: /someimages)\r\n%h\tÈìÿ õîñòà (íàïð.: www.someweb.com)\r\n%M\tURL MD5 (128 bits, 32 ascii bytes)\r\n%Q\tquery string MD5 (128 bits, 32 ascii bytes)\r\n%q\tsmall query string MD5 (16 bits, 4 ascii bytes)\r\n\r\n%s?\tDOS'êîå èìÿ (íàïð: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Ïðèìåð:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Íàñòðîéêè ïðîêñè +Proxy address: +Àäðåñ ïðîêñè: +Proxy port: +Íîìåð ïîðòà: +Authentication (only if needed) +Àóòåíòèôèêàöèÿ (åñëè òðåáóåòñÿ) +Login +Ëîãèí +Password +Ïàðîëü +Enter proxy address here +Ââåäèòå àäðåñ ïðîêñè ñåðâåðà +Enter proxy port here +Ââåäèòå íîìåð ïîðòà ïðîêñè ñåðâåðà +Enter proxy login +Ââåäèòå ëîãèí ïðîêñè +Enter proxy password +Ââåäèòå ïàðîëü äëÿ ïðîêñè ñåðâåðà +Enter project name here +Ââåäèòå èìÿ ïðîåêòà +Enter saving path here +Óêàæèòå êàòàëîã äëÿ ñîõðàíåíèÿ ïðîåêòà +Select existing project to update +Äëÿ îáíîâëåíèÿ ïðîåêòà, âûáåðåòå åãî èç ñïèñêà +Click here to select path +Âûáðàòü êàòàëîã ïðîåêòà +HTTrack Project Wizard... +Ìàñòåð ñîçäàíèÿ ïðîåêòà HTTrack... +New project name: +Èìÿ íîâîãî ïðîåêòà: +Existing project name: +Èìÿ ñóùåñòâóþùåãî ïðîåêòà: +Project name: +Èìÿ ïðîåêòà: +Base path: +Êàòàëîã: +C:\\My Web Sites +C:\\Ìîè Web Ñàéòû +Type a new project name, \r\nor select existing project to update/resume +Çàäàéòå íàçâàíèå íîâîãî ïðîåêòà, \r\nèëè âûáåðåòå ñóùåñòâóþùèé ïðîåêò äëÿ åãî àêòóàëèçàöèè/ïðîäîëæåíèÿ +New project +Íîâûé ïðîåêò +Insert URL +Âñòàâüòå URL +URL: +URL: +Authentication (only if needed) +Àóòåíòèôèêàöèÿ (åñëè íóæíî) +Login +Ëîãèí: +Password +Ïàðîëü: +Forms or complex links: +Ñëîæíûå ëèíêè: +Capture URL... +Çàñå÷ü URL... +Enter URL address(es) here +Ââåäèòå URL àäðåñ +Enter site login +Ââåäèòå ëîãèí äëÿ äîñòóïà ê ñàéòó +Enter site password +Ââåäèòå ïàðîëü äëÿ äîñòóïà ê ñàéòó +Use this capture tool for links that can only be accessed through forms or javascript code +Èñïîëüçóéòå ýòî ñðåäñòâî äëÿ îòëîâà äèíàìè÷åñêèõ URL (javascript, ôîðìû è ò.ï.) +Choose language according to preference +Âûáîð ÿçûêà +Catch URL! +Ïîéìàòü URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Âðåìåííî óñòàíîâèòå â íàñòðîéêàõ ïðîêñè âàøåãî áðîóçåðà óêàçàííûå íèæå çíà÷åíèÿ àäðåñà è íîìåðà ïîðòà.\nÇàòåì, â áðîóçåðå âûïîëíèòå íåîáõîäèìûå äåéñòâèÿ (ïîñëàòü ôîðìó, àêòèâèçèðîâàòü ñêðèïò è ò.ï.) . +This will send the desired link from your browser to WinHTTrack. +Òàêèì îáðàçîì âû ñìîæåòå ïåðåäàòü æåëàåìûé ëèíê èç áðàóçåðà â HTTrack. +ABORT +Îòìåíà +Copy/Paste the temporary proxy parameters here +Ñêîïèðóé/âñòàâü âðåìåííûå íàñòðîéêè ïðîêñè +Cancel +Îòìåíà +Unable to find Help files! +Íå íàéäåíû ôàéëû ïîìîùè! +Unable to save parameters! +Íå âîçìîæíî ñîõðàíèòü ïàðàìåòðû! +Please drag only one folder at a time +Ïîæàëóéñòà, ïåðåòàñêèâàéòå òîëüêî îäíó ïàïêó +Please drag only folders, not files +Ïîæàëóéñòà, òàùèòå òîëüêî ïàïêó, à íå ôàéë +Please drag folders only +Ïîæàëóéñòà, òàùèòå òîëüêî ïàïêó +Select user-defined structure? +Âûáðàòü çàäàííóþ âàìè ñòðóêòóðó? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Ïðîâåðüòå, ÷òî îïðåäåëåííàÿ âàìè ñòðóêòóðà ïðàâèëüíà, â ïðîòèâíîì ñëó÷àå, èìåíà ôàéëîâ áóäóò íåïðåäñêàçóåìû +Do you really want to use a user-defined structure? +Âû äåéñòâèòåëüíî õîòèòå âûáðàòü çàäàííóþ ñòðóêòóðó? +Too manu URLs, cannot handle so many links!! +Ñëèøêîì ìíîãî URL'îâ, íå ìîãó îáðàáîòàòü òàêîå êîëè÷åñòâî ëèíêîâ! +Not enough memory, fatal internal error.. +Íå äîñòàòî÷íî ïàìÿòè, ôàòàëüíàÿ âíóòðåííÿÿ îøèáêà... +Unknown operation! +Íåèçâåñòíàÿ îïåðàöèÿ +Add this URL?\r\n +Äîáàâèòü ýòîò URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Âíèìàíèå: ïðîãðàììà íå îòâå÷àåò íà çàïðîñû, íå âîçìîæíî äîáàâèòü URL'û... +Type/MIME associations +Ñîîòâåòñâèå òèïó ôàéëîâ (Type/MIME) +File types: +Òèïû ôàéëîâ: +MIME identity: +MIME identity +Select or modify your file type(s) here +Âûáðàòü èëè èçìåíèòü òèïû ôàéëîâ +Select or modify your MIME type(s) here +Âûáðàòü èëè èçìåíèòü òèïû ôàéëîâ +Go up +Ââåðõ +Go down +Âíèç +File download information +Èíôîðìàöèÿ î çàãðóçêå ôàéëà +Freeze Window +Çàìîðîçèòü îêíî +More information: +Äîïîëíèòåëüíàÿ èíôîðìàöèÿ: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Äîáðî ïîæàëîâàòü â ïðîãðàììó WinHTTrack Website Copier!\n\nÏîæàëóéñòà íàæìèòå êíîïêó ÄÀËÅÅ äëÿ òîãî, ÷òîáû\n\n- íà÷àòü íîâûé ïðîåêò\n- èëè âîçîáíîâèòü ÷àñòè÷íóþ çàêà÷êó +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Èìåíà ôàéëîâ ñ ðàøèðåíèåì:\nÈìåíà ôàéëîâ, ñîäåðæàùèå:\nÝòîò ôàéë:\nÈìåíà ôîëäåðîâ ñîäåðæàò:\nÝòîò ôîëäåð:\nËèíêè èç ýòîãî äîìåíà:\nËèíêè èç äîìåíîâ, ñîäåðæàùèå:\nËèíêè èç ýòîãî õîñòà:\nËèíêè ñîäåðæàùèå:\nÝòîò ëèíê:\nÂÑÅ ËÈÍÊÈ +Show all\nHide debug\nHide infos\nHide debug and infos +Ïîêàçàòü âñå\nÑïðÿòàòü îòëàäêó\nÑïðÿòàòü èíôî\nÑïðÿòàòü îòëàäêó è èíôî +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Ñòðóêòóðà ñàéòà (ïî óìîë÷àíèþ)\nHtml/, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû/ôàéëû èçîáðàæåíèé/\nHtml/html, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû/ôàéëû èçîáðàæåíèé\nHtml/, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû/\nHtml/, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû/xxx, ãäå xxx - ðàñøèðåíèå ôàéëà\nHtml, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû/xxx\nÑòðóêòóðà ñàéòà áåç www.domain.xxx/\nHtml â site_name/ ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû â site_name/ôàéëû èçîáðàæåíèé/\nHtml â site_name/html, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû â site_name/ôàéëû èçîáðàæåíèé\nHtml â site_name/, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû â site_name/\nHtml â site_name/, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû â site_name/xxx\nHtml â site_name/html, ôàéëû èçîáðàæåíèé/äðóãèå ôàéëû â site_name/xxx\nÂñå ôàéëû èç âåáà/, ñ ïðîèçâîëüíûìè èìåíàìè (íîâèíêà !)\nÂñå ôàéëû èç site_name/, ñ ïðîèçâîëüíûìè èìåíàìè (íîâèíêà !)\nÇàäàííàÿ ïîëüçîâàòåëåì ñòðóêòóðà... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Òîëüêî ñêàíèðîâàòü\nÑîõðàíÿòü html ôàéëû\nÑîõðàíÿòü íå html ôàéëû\nÑîõðàíÿòü âñå ôàéëû (ïî óìîë÷àíèþ)\nÑîõðàíÿòü âíà÷àëå html ôàéëû +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Îñòàâàòüñÿ â òîéæå äèðåêòîðèè\nÌîæíî äâèãàòüñÿ âíèç (ïî óìîë÷àíèþ)\nÌîæíî äâèãàòüñÿ ââåðõ\nÌîæíî äâèãàòüñÿ ââåðõ è âíèç +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Îñòàâàòüñÿ íà òîì æå àäðåñå (ïî óìîë÷àíèþt)\nÎñòàâàòüñÿ íà òîì æå äîìåíå\nÎñòàâàòüñÿ íà òîì äå äîìåíå âåðõíåãî óðîâíÿ\nÈäòè êóäà óãîäíî +Never\nIf unknown (except /)\nIf unknown +Íèêîãäà\nÅñëè íåèçâåñòíî (êðîìå /)\nÅñëè íåèçâåñòíî +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Íå ïîä÷èíÿòüñÿ ïðàâèëàì robots.txt\nrobots.txt êðîìå Ìàñòåðà\nïîä÷èíÿòüñÿ ïðàâèëàì robots.txt +normal\nextended\ndebug +Îáû÷íàÿ\nðàñøèðåííàÿ\nîòëàäêà +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Çàãðóçèòü ñàéò(û)\nÇàãðóçèòü ñàéò(û) +âîïðîñû\nÇàãðóçèòü îòäåëüíûå ôàéëû\nÇàãðóçèòü âñå ñàéòû ñî ñòðàíèöû (íåñêîëüêî çåðêàë)\nÒåñòèðîâàòü ëèíêè ñî ñòðàíèöû (òåñò çàêëàäîê)\n* Ïðîäîëæèòü ïðåðâàííóþ çàãðóçêó\n* Îáíîâèòü ñóùåñòâóþùóþ çàêà÷êó +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Îòíîñèòåëüíûé URI / Àáñîëþòíûé URL (ïî-óìîë÷àíèþ)\nÀáñîëþòíûé URL / Àáñîëþòíûé URL\nÀáñîëþòíûé URI / Àáñîëþòíûé URL\nÏåðâîíà÷àëüíûé URL / Ïåðâîíà÷àëüíûé URL +Open Source offline browser +Open Source îôôëàéí áðàóçåð +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Êà÷àëêà âåáñàéòîâ/Îôôëàéí áðàóçåð. Êà÷àåò âåáñàéòû íà âàø êîìïüþòåð. Áåñïëàòíî. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, offline browser +URL list (.txt) +Ëèñò URL'îâ (.txt) +Previous +Íàçàä +Next +Âïåðåä +URLs +URLs +Warning +Ïðåäóïðåæäåíèå +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Âàø áðàóçåð èëè íå ïîääåðæèâàåò javascript èëè åãî ïîääåðæêà âûêëþ÷åíà. Äëÿ ïîëó÷åíèÿ íàèëó÷øåãî ðåçóëüòàòà àêòèâèçèðóéòå ïîääåðæêó javascript. +Thank you +Ñïàñèáî +You can now close this window +Òåïåðü Âû ìîæåòå çàêðûòü ýòî îêíî +Server terminated +Server terminated +A fatal error has occured during this mirror +Âî âðåìÿ òåêóùåé çàêà÷êè ïðîèçîøëà ôàòàëüíàÿ îøèáêà diff --git a/lang/Slovak.txt b/lang/Slovak.txt new file mode 100755 index 0000000..38d9311 --- /dev/null +++ b/lang/Slovak.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Slovak +LANGUAGE_FILE +Slovak +LANGUAGE_ISO +sk +LANGUAGE_AUTHOR +Dr. Martin Sereday (sereday at stonline.sk)\r\n +LANGUAGE_CHARSET +ISO-8859-2 +OK +Áno +Cancel +Zruši +Exit +Ukonèi +Close +Zatvori +Cancel changes +Zruši zmeny +Click to confirm +Potvrdi zmeny +Click to get help! +Pomoc +Click to return to previous screen +Predchádzajúca obrazovka +Click to go to next screen +Nasledujúca obrazovka +Hide password +Skry heslo +Save project +Uloži projekt +Close current project? +Zatvori projekt? +Delete this project? +Vymaza projekt? +Delete empty project %s? +Vymaza prázdne projekty? +Action not yet implemented +Akcia zatia¾ nebola zaradená +Error deleting this project +Chyba pri mazaní projektu +Select a rule for the filter +Vybra pravidlo filtra +Enter keywords for the filter +Vloži k¾úèové slovo pre filter +Cancel +Zruši +Add this rule +Prida toto pravidlo +Please enter one or several keyword(s) for the rule +Vlož jedno alebo nieko¾ko k¾úèových slov pre pravidlo +Add Scan Rule +Pridaj previdlo pre vyh¾adávanie +Criterion +Kritériá +String +Reazec +Add +Pridaj +Scan Rules +Pravidlá pre vyh¾adávanie +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Použi masky na vylúèenie alebo doplnenie URL alebo linkov. n\Do jedného riadku možno vloži aj viac reazcov.\nAko odde¾ovaè použi medzeru.n\n\Napr.: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Vylúèi linky +Include link(s) +Prida linky +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tip: Ak sa majú zaradi všetky GIFy, použi napr. *www.stránka.com/.gif.\n(+*.gif /-*.gif bude onsahova/vylúèi vešetky GIFy zo všetkých stránok). +Save prefs +Uloži nastavenia +Matching links will be excluded: +Zodpovedajúce linky budú vylúèené +Matching links will be included: +Zodpovedajúce linky budú zaradené +Example: +Napr.: +gif\r\nWill match all GIF files +gif\r\nZodpovedá všetkým GIF súborom +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nNájde všetky súbory obsahujúce skupinu znakov 'blue' - napr. 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nZodpovedá súborom 'bigfile.mov', ale nie 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nVyh¾adá všetky linky s názvom adresára obsahujúcim skupinu znakov 'cgi' - napr. /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nVyh¾adá všetky linky s názvom adresára obsahujúcim skupinu znakov 'cgi-bin' (ale už nie napr. cgi-bin-2) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nVyh¾adá všetky zhodné reazce napr.: www.someweb.com, private.someweb.com atï. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nVyh¾adá všetky adresáre obsahujúce reazec napr.: www.someweb.com, www.someweb.edu, private.someweb.otherweb.com atï. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nVyh¾adá všetky linky obsahujúce úplný reazec napr.: 'www.someweb.com' (ale nie linky napr.: private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nVyh¾adá všetky linky obsahujúce reazec napr.: www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html atï. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nVyh¾adá iba súbor 'www.test.com/test/someweb.html'. POZOR!, musí sa napísa úplná cesta (URL + cesta v rámci štruktúry) +All links will match +Všetky linky sa budú zhodova +Add exclusion filter +Zada filter pre vylúèenie +Add inclusion filter +Zada filter pre zaèlenenie +Existing filters +Existujúce filtre +Cancel changes +Zruši zmeny +Save current preferences as default values +Uloži aktuálne nastavenia ako základné hodnoty +Click to confirm +Potvrdi kliknutím +No log files in %s! +V %s neexistuje protokol! +No 'index.html' file in %s! +V %s neexistuje súbor 'index.html ! +Click to quit WinHTTrack Website Copier +Vystúpi z WinHTTrack Website Copier +View log files +Zobrazi protokoly +Browse HTML start page +Prezrie úvodnú stránku HTML +End of mirror +Koniec sahovania +View log files +Zobrazi protokoly +Browse Mirrored Website +Prezrie stihnutú stránku +New project... +Nový projekt ... +View error and warning reports +Prezrie chybové a varovné hlásenia +View report +Pozrie hlásenie +Close the log file window +Zavrie okno protokolu +Info type: +Typ informácie: +Errors +Chyby +Infos +Informácie +Find +Nájs +Find a word +Nájs slovo +Info log file +Protokol informácií +Warning/Errors log file +Protokol chýb / varovaní +Unable to initialize the OLE system +Nedá sa incializova OLE systém +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack nenašiel žiaden cache prerušeného súboru v špecifikovanom adresári\r\n +Could not connect to provider +Nedá sa spoji s providerom +receive +Prijímanie +request +Požiadavka +connect +Spojenie +search +H¾danie +ready +Pripravené +error +Chyba +Receiving files.. +Prijímanie súborov +Parsing HTML file.. +Analýza HTML súboru... +Purging files.. +Uvo¾nenie súboru +Loading cache in progress.. +Prebieha napåòanie chache.. +Parsing HTML file (testing links).. +Analýza HTML súboru (testovanie linkov) +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pauza - Pokraèova [Stránka - Kópia]/[Zastavi kopírovanie] +Finishing pending transfers - Select [Cancel] to stop now! +Ukonèenie prebiehajúcich prenosov - Zvoµ [Zru¹i»]! +scanning +Skenovanie +Waiting for scheduled time.. +Èakanie na plánovaný èas... +Connecting to provider +Pripájanie providera +[%d seconds] to go before start of operation +[%d sekúnd] chýba do zaèiatku operácie +Site mirroring in progress [%s, %s bytes] +Prebieha kopírovanie stránky [%s, %s bytov] +Site mirroring finished! +Kopírovanie stránky ukonèené! +A problem occured during the mirroring operation\n +Poèas kopírovania sa vyskytol problém\n +\nDuring:\n +\nPoèas:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nAk treba, pozrie protokol.\n\n\r\nKliknutím na KONIEC opusti WinHTTrack Website Copier.\n\nVïaka za použitie WinHTTrack!\r\n +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Operácia kopírovania ukonèená.\nKliknutím na Exit opusti WinHTTrack.\nPozrie protokoly súbor(y), ak sa treba uisti, že všetkoje v poriadku.\n\nVïaka za použitie WinHTTrack!\r\n +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * KOPÍROVANIE PRERUŠENÉ! * *\r\nAktuálna doèasná cache je potrebná prevšetky aktualizaèné operácie a obsahuje iba dáta stiahnuté poèas tejto prerušenej operácie\r\nPredchádzajúca chache môže obsahova kompletnejšie informácie. Ak sa tieto informácie nemajú strati, treba ju obnovi a vymaza terajšiu aktuálnu cache.\r\n[Poznámka: Dá sa to urobi teraz vymazaním súborov hts-cache/new.* ]\r\n\r\nObsahuje predchádzajúca cache obsahuje kompletnejšiu informáciu a má sa obnovi?\r\n +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * CHYBA KOPÍROVANIA! * *\r\nHTTrack zistil, že táto kópia je prázdna. Ak mala by aktualizovaná, predchádzajúca kópia bola obnovená.\r\nDôvod: Úvodná stránka buï nebola nájdená, alebo nastal problém so spojením.\r\n=> Presvedèi sa, èi webstránka ešte existuje a/alebo skontrolova vlastné nastavenie proxy! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nTip: Kliknú na [Zobrazi protokol] a pozrie na upozornania alebo chybové hlásenia +Error deleting a hts-cache/new.* file, please do it manually +Chyba pri mazaní súborov hts-cache/new.* . Vymaza ruène +Do you really want to quit WinHTTrack Website Copier? +Naozaj opusti WinHTTrack Website Copier?\r\n +- Mirroring Mode -\n\nEnter address(es) in URL box +- Mód kopírovania -\n\nUda adresu(y) do políèka URL +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Mód interaktívneho pomocníka (otázky) -\n\nUda adresu(y) do políèka URL +- File Download Mode -\n\nEnter file address(es) in URL box +- Mód kopírovania súboru -\n\nUda adresu(y) súboru do políèka URL +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Mód testovania linkov -\n\nUda adresu(y) www s linkami na otestovanie do políèka URL +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Mód aktualizácie -\n\nOveri si adresu(y) v políèku URL, ak je nutné, skontrolova parametre, potom kliknú na 'Next' +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Mód pokraèovania (prerušenej operácie) -\n\nOveri si adresu(y) v políèku URL, ak je nutné, skontrolova parametre, potom kliknú na 'Next' +Log files Path +Cesta k súborom s protokolmi +Path +Cesta +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Mód zoznamu linkov -\n\nPouži políèko URL na zadanie adresy (adries) súboru(ov) obsahujúcich linky ku kópii\r\n +New project / Import? +Nový projekt / Import? +Choose criterion +Zvoli kritériá +Maximum link scanning depth +Maximálna håbka skenovania linkov +Enter address(es) here +Sem zada adresu(y) +Define additional filtering rules +Definova dodatoèné pravidlá filtrovania +Proxy Name (if needed) +Meno proxy (ak je potrebné) +Proxy Port +Port proxy +Define proxy settings +Definova nastavenie proxy +Use standard HTTP proxy as FTP proxy +Použi štandardný HTTP proxy ako FTP proxy +Path +Cesta +Select Path +Vybra cestu +Path +Cesta +Select Path +Vyba cestu +Quit WinHTTrack Website Copier +Ukonèi WinHTTrack Website Copier +About WinHTTrack +O WinHTTrack... +Save current preferences as default values +Uloži aktuálne nastavenia ako základné hodnoty +Click to continue +Kliknutím pokraèova +Click to define options +Kliknú a definova nastavenia +Click to add a URL +Klikuntím vlo¾ URL +Load URL(s) from text file +Naèíta URL z textového súboru +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack - nastavenia (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Textový súbor so zoznamom adries (*.txt)|*.txt|| +File not found! +Súbor nenájdený! +Do you really want to change the project name/path? +Naozaj zmeni názov/umiestnenie projektu? +Load user-default options? +Naèíta užívate¾ské - základné nastavenia? +Save user-default options? +Uloži užívate¾ské - základné nastavenia? +Reset all default options? +Obnovi všetky základné nastavenia? +Welcome to WinHTTrack! +Vitaj vo WinHTTrack! +Action: +Akcia: +Max Depth +Maximálna håbka: +Maximum external depth: +Maximálna externá håbka: +Filters (refuse/accept links) : +Filtre (odmietni/potvrï linky): +Paths +Cesty +Save prefs +Uloži nastavenia +Define.. +Definova... +Set options.. +Nastavi nastavenia... +Preferences and mirror options: +Nastavenia a nastavenia kópie: +Project name +Názov projektu +Add a URL... +Zadaj URL... +Web Addresses: (URL) +Adresa www: (URL) +Stop WinHTTrack? +Zastavi WinHTTrack? +No log files in %s! +Žiadne protokoly v %s! +Pause Download? +Pozastavi kopírovanie? +Stop the mirroring operation +Zastavi operáciu kopírovania +Minimize to System Tray +Minimalizova na systémovú lištu +Click to skip a link or stop parsing +Klinutím preskoèi link alebo zastavi analýzu +Click to skip a link +Kliknutím preskoèi link +Bytes saved +Uložené byty +Links scanned +Skenované linky +Time: +Èas: +Connections: +Spojenia: +Running: +Prebieha: +Hide +Skry +Transfer rate +Úroveò prenosu: +SKIP +PRESKOÈI +Information +Informácie +Files written: +Zapísané súbory: +Files updated: +Aktualizované súbory: +Errors: +Chyby: +In progress: +Spracováva sa: +Follow external links +Preh¾ada vonkajšie linky +Test all links in pages +Testova všetky linky na stránkach +Try to ferret out all links +SKúsi preh¾ada všetky linky +Download HTML files first (faster) +Skopírova najprv súbory HTML (rýchlejšie) +Choose local site structure +Zvoli vnútornú štruktúru stránky +Set user-defined structure on disk +Nastavi užívate¾sky definovnú štruktúru na disku +Use a cache for updates and retries +Použi cache pre aktualizácie a obnovenia +Do not update zero size or user-erased files +Neaktualizova prázdne súbory alebo súbory vymazané užívate¾om +Create a Start Page +Vytvori úvodnú stránku +Create a word database of all html pages +Vytvori databázu všetkých slov ako html stránky +Create error logging and report files +Vytvori protokoly chýb a hlásení +Generate DOS 8-3 filenames ONLY +Vytvori LEN DOS-ovské 8-3 názvy súborov +Generate ISO9660 filenames ONLY for CDROM medias +Vytvor názvy ISO9660 IBA PRE CD ROM. +Do not create HTML error pages +Nevytvára HTML chybové stránky +Select file types to be saved to disk +Vybra typy súborov, ktoré majú by uložené na disk +Select parsing direction +Vybra poradie anaklýzy +Select global parsing direction +Vybra globálnu analýzu +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Nastav URL prepísaním pravidiel pre vnútorné linky (u¾ skopírované) a vonkaj¹ie linky (e¹te neskopírované). +Max simultaneous connections +Maximum súèasných spojení +File timeout +Maximálna èakacia doba pre súbory +Cancel all links from host if timeout occurs +Po vypršaní èakacej doby zruši všetky spojenia +Minimum admissible transfer rate +Najnižšia prípustná úroveò prenosu +Cancel all links from host if too slow +Zruši všetky spojenia, ak je prenos príliš pomalý +Maximum number of retries on non-fatal errors +Maximálny poèet pokusov pri nepodstatných chybách +Maximum size for any single HTML file +Maximálna ve¾kos jednotlivého HTML súboru +Maximum size for any single non-HTML file +Maximálna ve¾kos pre jednotlivý nie-HTML súbor +Maximum amount of bytes to retrieve from the Web +Maximálny poèet bytov kopírovaných z www +Make a pause after downloading this amount of bytes +Po skopírovaní tohoto množstva urobi pauzu +Maximum duration time for the mirroring operation +Maximálny èas pre kokpírovanie +Maximum transfer rate +Maximálna úroveò kopírovania +Maximum connections/seconds (avoid server overload) +Maximum spojení za sekundu (predchádza preaženiu servera) +Maximum number of links that can be tested (not saved!) +Maximum linkov, ktoré majú by testované (nie uložené!) +Browser identity +Identifikácia prehliadaèa +Comment to be placed in each HTML file +Komentár, ktorý má by umiestnený do každého HTML súboru +Back to starting page +Spä na úvodnú stránku +Save current preferences as default values +Uloži aktuálne nastavenia ako základné hodnoty +Click to continue +Pokraèova +Click to cancel changes +Zruši zmeny +Follow local robots rules on sites +Prija pravidlá lokálneho robota na stránkach +Links to non-localised external pages will produce error pages +Linky na nelokalizované externé stránky vyprodukujú chybné stránky +Do not erase obsolete files after update +Po aktualizácii nevymazáva prebytoèné stránky +Accept cookies? +Prija cookies ? +Check document type when unknown? +Kontrolova dokumenty, ak nie je známy ich typ? +Parse java applets to retrieve included files that must be downloaded? +Analyzova Java applety, aby sa zistilo, ktoré súbory musia by kopírované? +Store all files in cache instead of HTML only +Uloži všetky súbory v cache, nie iba v HTML +Log file type (if generated) +Typ protokolu (ak bol vytvorený) +Maximum mirroring depth from root address +Maximálny håbka kopírovania od koreòovej adresy +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Maximálna håbka kopírovania externých/zakázaných adries (0 znamené žiadna - základné nastavenie) +Create a debugging file +Vytvori debugovací súbor +Use non-standard requests to get round some server bugs +Použi neštandardné požiadavky na obídenie jednotlivých chýb servera +Use old HTTP/1.0 requests (limits engine power!) +Použi staré HTTP/1.0 požuadavky (obmdzuje pracovné tempo!) +Attempt to limit retransfers through several tricks (file size test..) +Pokúsi sa rôznymi trikmi obmedzi opakované transféry (test ve¾kosti súborov). +Write external links without login/password +Zada vonkajšie linky bez užívate¾ského mena/hesla +Write internal links without query string +Písa vnútorné linky bez overovacích reazcov +Get non-HTML files related to a link, eg external .ZIP or pictures +Prebra iné, než HTML súbory súvisiace s linkom, napr. externé ZIP súbory alebo obrázky +Test all links (even forbidden ones) +Testova všetky linky (aj zakázané) +Try to catch all URLs (even in unknown tags/code) +Pokúsi sa zachyti všetky URL (vrátane neznámych tagov/kódov) +Get HTML files first! +Prebra najprv HTML súbory! +Structure type (how links are saved) +Typ štruktúry (ako budú linky uložené) +Use a cache for updates +Na aktualiizáciu použi cache +Do not re-download locally erased files +Nesahova znovu lokálne vymazané súbory +Make an index +Vytvori index +Make a word database +Vytvori slovnú databázu +Log files +Log súbory +DOS names (8+3) +DOS názvy (8+3) +ISO9660 names (CDROM) +Názvy ISO9660 (CD ROM) +No error pages +Žiadne chybové stránky +Primary Scan Rule +Základné skenovacie pravidlá +Travel mode +Vyh¾adávací mód +Global travel mode +Globálny vyh¾adávací mód +These options should be modified only exceptionally +Tieto pravidlá majú by upravované iba výnimoène +Activate Debugging Mode (winhttrack.log) +Aktivova mód vyh¾adávania chýb (winhttrack.log) +Rewrite links: internal / external +Prepí¹ linky: vnútorné / vonkaj¹ie +Flow control +Kontrola toku +Limits +Limity +Identity +Identita +HTML footer +Päta HTML +N# connections +Poèet spojení +Abandon host if error +V prípade chyby opusti zdroj +Minimum transfer rate (B/s) +Minimálna úroveò sahovania (B/s) +Abandon host if too slow +Opusti zdroj, ak je prenos príliš pomalý +Configure +Konfigurova +Use proxy for ftp transfers +Pre prenosy cez ftp použi proxy +TimeOut(s) +Interval(y) èakania +Persistent connections (Keep-Alive) +Trvalé spojenie (Udr¾a»-¾ivé) +Reduce connection time and type lookup time using persistent connections +Zní¾ dobu pripojenia a zadaj èas vyhµadávania pri trvalých spojeniach +Retries +Opätovné pokusy +Size limit +Limity ve¾kosti +Max size of any HTML file (B) +Maximálna ve¾kos jednotlivého HTML súboru (B) +Max size of any non-HTML file +Maximálna ve¾kos iného ako HTML súboru +Max site size +Maximálna ve¾kos stránky +Max time +Maximálny èas +Save prefs +Uloži nastavenia +Max transfer rate +Maximálna úroveò prenosu +Follow robots.txt +Použi pravidlá z robots.txt +No external pages +Žiadne externé stránky +Do not purge old files +Nevyprázdòva staré súbory +Accept cookies +Prija cookies +Check document type +Overi typ dokumentu +Parse java files +Analyzova súbory v Jave +Store ALL files in cache +Všetky súbory uloži do cahce +Tolerant requests (for servers) +Prípustné požiadavky (pre servery) +Update hack (limit re-transfers) +Trik pre aktualizáciu (obmedzenie opakovaných prenosov) +Force old HTTP/1.0 requests (no 1.1) +Použi staré pravidlá HTTP/1.0 (nie 1.1) +Max connections / seconds +Maximálny poèet spojení +Maximum number of links +Maximálny poèet linkov +Pause after downloading.. +Pauza po skopírovaní +Hide passwords +Skry heslo +Hide query strings +Skry vyh¾adávacie reazce +Links +Linky +Build +Vytvori +Experts Only +Iba pre expertov +Flow Control +Kontrola toku +Limits +Limity +Browser ID +ID prehliadaèa +Scan Rules +Pravidlá skenovania +Spider +Pavúk +Log, Index, Cache +Log, index, cache +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Naozaj chceš ukonèi WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Nepripája providera (už je pripojený) +Do not use remote access connection +Nepouživa spojenie dia¾kového ovládania +Schedule the mirroring operation +Naplánova kopírovanie +Quit WinHTTrack Website Copier +Ukonèi WinHTTrack Website Copier +Back to starting page +Spä na štartovaciu stránku +Click to start! +Spusti! +No saved password for this connection! +Pre toto spojenie nie sú uložené žiadne heslá! +Can not get remote connection settings +Nemožno získa nastavenia pre vzdialené spojenie +Select a connection provider +Vybra poskytovate¾a spojenia +Start +Štart +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +V prípade potreby nastavi parametre spojenia,\npotom stlaèi DOKONÈI na spustenie kopírovania. +Save settings only, do not launch download now. +Uloži nastvenia, nespúša teraz kopírovanie. +On hold +Zastavi +Transfer scheduled for: (hh/mm/ss) +Kopírovanie naplánované na: (hh/mm/ss) +Start +Štart! +Connect to provider (RAS) +Spoji s poskytovate¾om (RAS) +Connect to this provider +Pripoji k tomuto poskytovate¾ovi +Disconnect when finished +Odpoji, ak je kopírovanie ukonèené +Disconnect modem on completion +Odpoji modem po dokonèení +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Oznám nám akúko¾vek chybu alebo problém)\r\n\r\nVývoj:\r\nProstredie (Windows): Xavier Roche\r\nPavúk: Xavier Roche\r\nKontrolór Javy: Yann Philippot\r\n\r\n(C)1998-2001 Xavier Roche a ostatní pomocníci\r\nVE¼KÉ POÏAKOVANIE za preklady:\r\nDr. Martin Sereday (sereday@slovanet.sk) +About WinHTTrack Website Copier +O WinHTTrack Website Copier... +Please visit our Web page +Navštív našu web stránku +Wizard query +Otázky pomocníka +Your answer: +Tvoja odpoveï: +Link detected.. +Nájdený link. +Choose a rule +Zvoli pravidlo +Ignore this link +Ignoroav tento link +Ignore directory +Ignorova adresár +Ignore domain +Ignorova doménu +Catch this page only +Prebra iba túto stranu +Mirror site +Umiestnenie zrkadla +Mirror domain +Doména zrkadla +Ignore all +Ignorova všetky +Wizard query +Otázka pomocníka +NO +NIE +File +Súbor +Options +Vo¾by +Log +Protokol +Window +Okno +Help +Pomoc +Pause transfer +Prestávka kopírovania +Exit +Zavrie +Modify options +Upravi nastavenia +View log +Ukáza protokol +View error log +Ukáza protokol chýb +View file transfers +Ukáza prenosy súbporov +Hide +Skry +About WinHTTrack Website Copier +O WinHTTrack Website Copier... +Check program updates... +Skontrolova aktualizácie WinHTTrack... +&Toolbar +&Nástrojová lišta +&Status Bar +&Stavový riadok +S&plit +R&ozdeli +File +Súbor +Preferences +Nastavenia +Mirror +Zrkadlo +Log +Protokol +Window +Okno +Help +Pomoc +Exit +Zavrie +Load default options +Naèíta povinné nastavenia +Save default options +Uloži povinné nastavenia +Reset to default options +Obnovi povinné nastavenia +Load options... +Naèíta nastavenia... +Save options as... +Uloži nastavenia ako... +Language preference... +Nastavenia jazyka... +Contents... +Obsah... +About WinHTTrack... +O Win HTTrack... +New project\tCtrl+N +Nový projekt\tCtrl+N +&Open...\tCtrl+O +&Otvori...\tCtrl+O +&Save\tCtrl+S +&Uloži\tCtrl+S +Save &As... +Uloži ako... +&Delete... +&Vymaza... +&Browse sites... +&Prezera stránky... +User-defined structure +Štruktúra definovaná užívate¾om +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tNázov súboru bez udania typu (napr.: obrázok)\r\n%N\tNázov súboru vrátane typu (napr.: obrázok.gif)\r\n%t\tIba typ súboru (napr.: gif)\r\n%p\tCesta bez ukonèenia /] (napr.: /obrázky)\r\n%h\tNázov zdroja (napr.: www.someweb.com)\r\n%M\tMD5 URL (128 bitov, 32 ascii bytov)\r\n%Q\tMD5 vyh¾adávací reazec (128 bitov, 32 ascii bytov)\r\n%q\tMD5 malý vyh¾adávací reazec (16 bitov, 4 ascii bytov)\r\n\r\n%s?\tKrátky názov (napr.: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Príklad:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Nastavenie proxy +Proxy address: +Adresa proxy +Proxy port: +Port proxy +Authentication (only if needed) +Autentifikácia (iba ak je potrebná) +Login +Login +Password +Heslo +Enter proxy address here +Sem vloži adresu proxy +Enter proxy port here +Sem vloži port proxy +Enter proxy login +Vloži login proxy +Enter proxy password +Vloži heslo proxy +Enter project name here +Sem vloži názov projektu +Enter saving path here +Sem vloži cestu uloženia +Select existing project to update +Vybra existujúci projekt, ktorý má by aktualizovaný +Click here to select path +Kliknú sem a vybra cestu +HTTrack Project Wizard... +HTTrack Project Wizard... +New project name: +Názov nového projektu: +Existing project name: +Názov existujúceho projektu: +Project name: +Názov porjektu: +Base path: +Základná cesta: +C:\\My Web Sites +C:\\My Web Sites +Type a new project name, \r\nor select existing project to update/resume +Napísa názov nového projektu, alebo zvoli existujúci projekt, \r\nv ktorom sa má pokraèova alebo aktualizova\r\n +New project +Nový projekt +Insert URL +Vloži URL +URL: +URL: +Authentication (only if needed) +Autentifikácia (iba ak je potrebná) +Login +Login +Password +Heslo +Forms or complex links: +Formuláre alebo komplexné linky: +Capture URL... +Prebra URL... +Enter URL address(es) here +Sem vloži adresu(y) URL +Enter site login +Vloži login stránky +Enter site password +Vloži heslo stránky +Use this capture tool for links that can only be accessed through forms or javascript code +Použi tento snímací nástroj pre linky, ktoré môžu by prístupné iba cez formuláre alebo java scripty +Choose language according to preference +Zvoli jazyk pod¾a nastavení +Catch URL! +Prebra URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Nastavi doèasne nastavenia proxy prehliadaèa na tieto hodnoty (Kopírova/Vloži adresa a port proxy).\n\rPotom kliknú na tlaèidlo POŠLI na stránke prehliadaèa, alebo kliknú na konkrétny link, ktorý sa má prevzia.\r\n +This will send the desired link from your browser to WinHTTrack. +Toto odošle požadovaný link z tvojho prehliadaèa do WinHTTrack. +ABORT +PRERUŠI +Copy/Paste the temporary proxy parameters here +Kopírova/Vloži sem doèasné parametre proxy +Cancel +Zruši +Unable to find Help files! +Neviem nájs súbory nápovedy! +Unable to save parameters! +Nemôžem uloži parametre! +Please drag only one folder at a time +Sahova súèasne iba jediný adresár +Please drag only folders, not files +Sahova iba adresáre, nie súbory +Please drag folders only +Sahova iba adresáre +Select user-defined structure? +Vybra štruktúru definovanú užívate¾om? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Presvedèi sa, že užívate¾om definovaný reazec je správny,\ninak budú názvy súborov chybné! +Do you really want to use a user-defined structure? +Naozaj sa má použi užívate¾om definovaná štruktúra? +Too manu URLs, cannot handle so many links!! +Príliš ve¾a URL, neviem zvládnu tak ve¾a linkov! +Not enough memory, fatal internal error.. +Nedostatok pamäti, závažná interná chyba... +Unknown operation! +Neznáma operácia! +Add this URL?\r\n +Prida toto URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Upozornenie: hlavný proces ešte stále neodpovedá, nemôžem prida URL.. +Type/MIME associations +Typ/MIME priradenia +File types: +Typ súborov: +MIME identity: +Identita MIME: +Select or modify your file type(s) here +Vybra alebo upravi typ súboru(ov) +Select or modify your MIME type(s) here +Vybera alebo upravi MIME súboru(ov) +Go up +Nahor +Go down +Nadol +File download information +Informácie pre kopírovanie +Freeze Window +Fixova okno +More information: +Viac informácií +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Vitaj vo WinHTTrack Website Copier!\n\nKliknú na tlaèidlo NEXT \n\n- a spusti nový projekt\n- alebo pokraèova v èiastoène skopírovanom +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Názvy súborov s príponou:\nNázvy súborov obsahujúcich:\nNázov tohoto súboru:\nNázvy adresárov obsahujúcich:\nNázov tohoto adresára:\nLinky na tejto doméne:\nLinky na doménach obsahujúcich:\nLinky z tohoto hostu:\nLinky obsahujúce:\nTento link:\nVŠETKY LINKY +Show all\nHide debug\nHide infos\nHide debug and infos +Ukáza všetko\nSkry ladenie\nSkry informácie\nSkry ladenie a informácie +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Štruktúra stránky (default)\nHtml vo webe/, obrázky/iné súbory vo webe/obrázky/\nHtml vo webe/html, obrázky/iné vo webe/obrázky\nHtml vo webe/, obrázky/iné vo webe/\nHtml vo webe/, obrázky/iné vo webe/xxx, kde xxx je prípona súboru\nHtml vo webe/html, obrázky/iné vo webe/xxx\nŠtruktúra stránky, bez www.doména.xxx/\nHtml v názve stránky/, obrázky/iné súbory v názve stránky/obrázky/\nHtml v názve stránky/html, obrázky/iné v názve stránky/obrázky\nHtml v názve stránky/, obrázky/iné v názve stránky/\nHtml v názve stránky/, obrázky/iné v názve stránky/xxx\nHtml v názve stránky/html, obrázky/iné v názve stránky/xxx\nVšetky súbory vo webe/, s náhodnými menami (gadget !)\nVšetky súbory v názve stránky/, s náhodnými menami (gadget !)\nUžívate¾om definovaná štruktúra.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Iba skenova\nUloži html súbory\nUloži nie-html súbory\nUloži všetky súbory (default)\nUloži najprv html súbory +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Osta v tom istom adresári\nMožno ís nižšie (default)\nMožno ís vyššie\nMožno ís nižšie aj vyššie +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Osta na tej istej adrese (default)\nOsta na tej istej doméne\nOsta -//- najvyššej úrovne\nÍs hocikam na webe +Never\nIf unknown (except /)\nIf unknown +Nikdy\nAk nie je známe (s výnimkou/)\nAk nie je známe +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Ignorova pravidlá v robots.txt\nPrevza pravidlá -//- okrem filtrov\nPrevzia všetky pravidlá v -//- +normal\nextended\ndebug +normálny\nrozšírený\nladenie +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Skopíruj web stránku(y)\nSkopíruj web stránku(y) + otázky\nPreber jednotlivé súbory\nSkopíruj v¹etky umiestnenia na stánkach (viacnásobné zrkadlo)\nOtestuj linky na stránkach (testuj zálo¾ky)\n* Pokraèuj v preru¹enom kopírovaní\n* Aktualizuj existujúce kópie +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relatívna URI / Absolútna URL (prednastavené)\nABsolútna URL / Absolútna URL\nAbsolútna URL\nPôvodná URL / Pôvodná URL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Slovenian.txt b/lang/Slovenian.txt new file mode 100755 index 0000000..b533c39 --- /dev/null +++ b/lang/Slovenian.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Slovenian +LANGUAGE_FILE +Slovenian +LANGUAGE_ISO +si +LANGUAGE_AUTHOR +Jadran Rudec,iur.\r\njrudec@email.si \r\n +LANGUAGE_CHARSET +ISO-8859-1 +OK +Vredu +Cancel +Opusti +Exit +Izhod +Close +Zapri +Cancel changes +Opusti spremembe +Click to confirm +Klikni za potrditev +Click to get help! +Klikni za pomoè! +Click to return to previous screen +Klikni za vrnitev na prejšnji zaslon +Click to go to next screen +Klikni za prehod na naslednji zaslon +Hide password +Skrij geslo +Save project +Shrani projekt +Close current project? +Zaprem tekoèi projekt? +Delete this project? +Zbrišem ta projekt? +Delete empty project %s? +Zbrišem prazen projekt %s? +Action not yet implemented +Dogodek še ni predviden +Error deleting this project +Napaka med brisanjem tega projekta +Select a rule for the filter +Izberi pravilo za filtriranje +Enter keywords for the filter +Vpišite kljuèno besedo filtriranja +Cancel +Opusti +Add this rule +Dodaj to pravilo +Please enter one or several keyword(s) for the rule +Vpišite eno individualno besedo kljuèno besedo za pravilo +Add Scan Rule +Dodaj iskano besedo +Criterion +Pogoj +String +String +Add +Dodaj +Scan Rules +Išèi pravila +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Uporabite joker za izkljuèitev/vkljuèitev URL-jev ali povezav.\nLahko vstavite posamièen string v eni vrstici.\nUporabite presledke ali separatorje.\n\nPrimer: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Izkljuèi povezave +Include link(s) +Vkljuèi povezave +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Namig: Za vkljuèitev vseh GIF datotek uporabite kot npr. +www.spletnastran.com/*.gif. \n(+*.gif / -*.gif bo vkljuèil/izkljuèil vseh GIF-e z vseh spletnih strani) +Save prefs +Shrani lastnosti +Matching links will be excluded: +Zadete povezave bodo izkljuèene: +Matching links will be included: +Zadete povezave bodo vkljuèene: +Example: +Primer: +gif\r\nWill match all GIF files +gif\r\nBo vseboval vse GIF datoteke +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nNašel bo vse datoteke z zadetki 'modro' pod string kot 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nBo zadel datoteko 'bigfile.mov' toda ne 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nNašel bo povezave z mapo kot zadetek z imenom pod string 'cgi' kot /cgi-bin/poljubwencgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nNašel bopovezave z zadetim imenom mapeing v celoti 'cgi-bin' string (toda ne cgi-bin-2, kot primer) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nNael bo povezave z zadetim pod stringom kot www.spletnastran.com, private.spletnastran.com itn. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nNašel bo povezave z zadeto mapo podstringa kot www.spletnastran.com, www.semeweb.edu, private.someweb.otherweb.com etc. +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nNašel bo povezave zadete kot 'www.someweb.com' pod string (toda ne povezave kot so private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nNašel bo povezave zadetih pod stringom kot www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nNašel bo le povezave kot 'www.test.com/test/someweb.html' datoteko. Pazite, da boste vpisali popolno pot (URL + pot spletne strani) +All links will match +Vse povezave bodo zadete +Add exclusion filter +Dodaj izkljuèitveni filter +Add inclusion filter +Dodaj vkljuètveni filter +Existing filters +Obstojeèi filtri +Cancel changes +Opusti spremembe +Save current preferences as default values +Shrani tekoèe lastnosti kot privzete vrednosti +Click to confirm +Kliknite za potrditev +No log files in %s! +Ni log datoteke znotraj %s! +No 'index.html' file in %s! +Ni 'index.html' datoteke znotraj %s! +Click to quit WinHTTrack Website Copier +Kliknite za konec dela z WinHTTrack Website Copierom +View log files +Preglej log datoteke +Browse HTML start page +Prebrskaj zaèetno HTML stran +End of mirror +Konec zrcaljenja +View log files +Preglej log datoteke +Browse Mirrored Website +Prebrskaj zrcaljeno stran +New project... +Novi projekt... +View error and warning reports +Preglej napake in varnostna poroèila +View report +Preglej poroèilo +Close the log file window +Zapri okno z log datoteko +Info type: + +Errors +Napake +Infos +Informacije +Find +Poišèi +Find a word +Poišèi besedo +Info log file +Informacije o log datoteki +Warning/Errors log file +Napaka/Napaka log datoteke +Unable to initialize the OLE system +Omogoèi inicializacijo OLE sistema +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack ne najde nobene prekinitve naložene datoteke v doloèeni mapi! +Could not connect to provider +Ne morem se povezati z oskrbovalcem +receive +prejem +request +zahteva +connect +povezava +search +iskanje +ready +pripravljen +error +napaka +Receiving files.. +Prejete datoteke.. +Parsing HTML file.. +Razèlenjujem HTML datoteko.. +Purging files.. +Èistim datoteke.. +Loading cache in progress.. + +Parsing HTML file (testing links).. +Razèlenjujem HTML datoteko (preverjam povezave).. +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pavza - Stikalo [Zrcaljenje]/[Pavza prenosa] za dokonèanje opravila +Finishing pending transfers - Select [Cancel] to stop now! +Dokonèanje prenosov - Izbor [Opusti] za takojšnjo zavstavitev! +scanning +iskanje +Waiting for scheduled time.. +Èakanje na èas razporejanja.. +Connecting to provider +Povezava z oskrbovalcem +[%d seconds] to go before start of operation +[%d sekund] pred prièetkom opravila +Site mirroring in progress [%s, %s bytes] + +Site mirroring finished! +Zrcaljenje strani je dokonèano! +A problem occured during the mirroring operation\n +Prišlo je do napake med zrcaljenjem strani\n +\nDuring:\n +\nmed:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nPreberite log datoteko, èe je potrebno.\n\nKliknite na gumb KONÈANO za konec dele z WinHTTrack Website Copier.\n\nZahvaljujemo se za to, da ste uporabljali WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Zrcaljenje je popolnoma dokonèano.\nKliknite na gumb Izhod za konec dela s programom WinHTTrack.\nPreberite log datoteko(e), èe se želite preprièati, da je bilo vse vredu.\n\nZahvaljujemo se za to, da ste uporabljali WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * ZRCALJENJE JE PREKINJENO! * *\r\nTekoèi zaèasni predpomnilnik je bil zahtevan za kaktere koli postopke nadgradnje in vsebuje le prenešene podatke znotraj prekinjene seje.\r\nOblikovani predpomnilnik vsebuje veè popolnih informacij; èe ne želite izgubiti teh podatkov jih lahko obnovite in zbrišete tekoèi predpomnilnik.\r\n[Opomba: To lahko enostavneje storite, èe boste roèno zbrisali hts-cache/ nemudoma * datoteke]\r\n\r\nMislite, da oblikovani predpomnilnik vsebuje veè popolnih informacij in jih želite obnoviti? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * NAPAKA MED ZRCALJENJEM! * *\r\nHTTrack je ugotovil, da je aktivno zrcaljenje prazno. Èe je bilo nadgrajeno bo obnovljeno prejšnje zrcaljenje.\r\nVzrok: prva stran ni bila najdena ali pa vsebuje napake.\r\n=> Preprièajte se ali spletna stran sploh obstaja in/ ali ste preverili vaše nastavitve proxy strežnika! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nNamig: Kliknite na [Preglej log datoteko] kjer boste lahko prebrali vsa opozorila in sporoèila o napakah +Error deleting a hts-cache/new.* file, please do it manually +Napaka med brisanjem hts-cache/ je nastala.* datotek, storite to roèno! +Do you really want to quit WinHTTrack Website Copier? +Zares želite konèadi delo z WinHTTrack Website Copierom? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Naèin z zrcaljenjem -\n\nVpišite naslov(e) v URL okence +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Naèin z interaktivnim èarovnikom (vprašanja) -\n\nVpišite naslov(e) v URL okence +- File Download Mode -\n\nEnter file address(es) in URL box +- Naèin s prenosom datotek -\n\nVpišite naslov(e) v URL okence +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Naèin s preverjanjem povezav -\n\nVpišite spletni naslov(e) s povezavami za preverjanje znotraj URL okenca +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Nadgrajevalni naèin -\n\nPreverite naslov(e) znotraj URL okenca, preverite parametre, èe je to potrebno in kliknite na gumb 'NAPREJ' ! +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Strnjeni naèin (Prekinjena opravila) -\n\nPreverite naslov(e) znotraj URL okenca, preverite parametre, èe je to potrebno in kliknite na gumb 'NAPREJ' ! +Log files Path +Pot do log datotek +Path +Pot +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Naèin z seznamom povezav -\n\nUporabite URL okence za vpis naslova (ov spletne (straneh) za povezovanje zrcaljenja +New project / Import? +Novi projekt / Uvoz? +Choose criterion +Izberite pogoj +Maximum link scanning depth +Najveèja globina iskanja povezav +Enter address(es) here +Tukaj vpišite naslov(e) +Define additional filtering rules +Doloèite dodatna pravila filtriranja +Proxy Name (if needed) +Ime Proxy strežnika (èe je potrebno) +Proxy Port +Vrata Proxy-ja +Define proxy settings +Doloèi nastavitve za proxy +Use standard HTTP proxy as FTP proxy +Uporabi obièajni HTTP proxy kot FTP proxy +Path +Pot +Select Path +Izberite pot +Path +Pot +Select Path +Izberite pot +Quit WinHTTrack Website Copier +Konec dela z WinHTTrack Website Copier +About WinHTTrack +Vizitka +Save current preferences as default values +Shrani tekoèe nastavitve kot privzete vrednosti +Click to continue +Kliknite za nadaljevanje +Click to define options +Kliknite za doloèitev opcij +Click to add a URL +Kliknite za dodajanje URL naslova +Load URL(s) from text file +Naloži URL(je) iz besedilne datoteke +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack nastavitve (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Besedilna datoteka z seznamom naslovov (*.txt)|*.txt|| +File not found! +Ni datoteke! +Do you really want to change the project name/path? +Zares želite spremeniti ime projekta/pot? +Load user-default options? +Naj naložim privzete uporabniške nastavitve? +Save user-default options? +Naj shranim privzete uporabniške nastavitve? +Reset all default options? +Naj obnovim vse privzete nastavitve? +Welcome to WinHTTrack! +Dobrodošli pri delu z WinHTTrack! +Action: +Opravilo: +Max Depth +Najveèja globina +Maximum external depth: +Najveèja zunanja globina: +Filters (refuse/accept links) : +Filtri (zlitje/uvaževanje povezav) : +Paths +Poti +Save prefs +Shrani nastavitve +Define.. +Doloèi.. +Set options.. +Nastavi opcije.. +Preferences and mirror options: +Opcije nastavitev in zrcaljenja: +Project name +Ime projekta +Add a URL... +Dodaj URL... +Web Addresses: (URL) +Spletni naslovi: (URL) +Stop WinHTTrack? +Naj ustavim WinHTTrack? +No log files in %s! +Ni log datotek v %s! +Pause Download? +Zaèsno zaustavim prenos? +Stop the mirroring operation +Ustavi postopek zrcaljenja +Minimize to System Tray +Pomanjšaj v sistemsko programsko vrstico +Click to skip a link or stop parsing +Kliknite za preskok povezave ali zavstavitev razèlenitve +Click to skip a link +Kliknite za preskok povezave +Bytes saved +Shranjenih Bytov +Links scanned +Preiskanih povezav +Time: +Èas: +Connections: +Povezave: +Running: +Poteka: +Hide +Skrij +Transfer rate +Prenosna hitrost +SKIP +PRESKOÈI +Information +Informacije +Files written: +Zapisanih datotek: +Files updated: +Nadgrajenih datotek: +Errors: +Napake: +In progress: +Poteka: +Follow external links +Sledi zunanjim povezavam +Test all links in pages +Preverjaj vse povezave znotraj strani +Try to ferret out all links +Poskusi zavreèi vse skrite povezave +Download HTML files first (faster) +Najprej prenesi HTML datoteke (hitreje) +Choose local site structure +Izberi strukturo lokalne strani +Set user-defined structure on disk +Nastavi uporabniško strukturo na disk +Use a cache for updates and retries +Uporabi predpomnilnik za nadgraditev in ponovitve +Do not update zero size or user-erased files +Ne nadgrajuj strani z nièelno velikostjo ali uporabniško zbrisanih datotek +Create a Start Page +Naredi Zaèetno stran +Create a word database of all html pages +Naredi besedilno bazo podatkov vseh html strani +Create error logging and report files +Naredi zgodovino napak (log) in datoteke s poroèili +Generate DOS 8-3 filenames ONLY +Generiraj LE DOS 8-3 imena datotek +Generate ISO9660 filenames ONLY for CDROM medias +Generiraj LE ISO9660 imena datotek za CDROM medije +Do not create HTML error pages +Ne pripravi HTML strani z napakami +Select file types to be saved to disk +Izberi tipe datotek, ki bodo shranjene na disk +Select parsing direction +Izberi smer razèlenjevanja +Select global parsing direction +Izberi splošno smer razèlenjevanja +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Namesti pravila URL ponovnega branja za notranje povezave (prenesi enkrat) in zunanje povezave (ne prenesi enkrat) +Max simultaneous connections +Najveè soèasnih prikljuèitev/povezav +File timeout +Pretek èasa za datoteko +Cancel all links from host if timeout occurs +Opusti vse povezave z gostiteljem, èe je potekal èas +Minimum admissible transfer rate +Najkrajši sprejemljivi prenosni èas +Cancel all links from host if too slow +Opusti vse povezave z gostiteljem, èe je le-ta prepoèasen +Maximum number of retries on non-fatal errors +Najveèje število ponovitev on obièajnih napakah (ne fatalnih) +Maximum size for any single HTML file +Najveèja velikost posamezne HTML datoteke +Maximum size for any single non-HTML file +Najveèja velikost posamezne ne-HTML datoteke +Maximum amount of bytes to retrieve from the Web +Najveèa kolièina bytov za obnovo z spleta +Make a pause after downloading this amount of bytes +Naredi pavzo po renosu te kolièine bitov +Maximum duration time for the mirroring operation +Najdaljši èas trajanja zrcaljenja +Maximum transfer rate +Najveèja hitrost prenosa +Maximum connections/seconds (avoid server overload) +Najveè povezav/sekund (izogibanje preobremenitvam strežnika) +Maximum number of links that can be tested (not saved!) +Najveèje število povezav, ki jih je možno preverjati (ne shranjenih!) +Browser identity +Istovetnost brskalnika +Comment to be placed in each HTML file +Opombe bodo vstavljene v HTML dattekah +Back to starting page +Pojdi na zaèetno stran +Save current preferences as default values +Shrani tekoèe nastavitve kot privzete vrednosti +Click to continue +Klikni za nadaljevanje +Click to cancel changes +Klikni za opustitev sprememb +Follow local robots rules on sites +Zasleduj lokalnim robotovim pravilom na straneh +Links to non-localised external pages will produce error pages +Povezave z ne lokaliziranimi zunanjimi stranmi bodo povzroèile napake strani +Do not erase obsolete files after update +Ne briši zastarelih datotek po nadgradnji +Accept cookies? +Uveljavim piškote? +Check document type when unknown? +Preveri tip dokumenta, èe je neznan? +Parse java applets to retrieve included files that must be downloaded? +Razèlenjuj java applete za obnovo vklljuèenih datotek kadar morajo biti le-te prenešene? +Store all files in cache instead of HTML only +Shrani vse datoteke v predpomnilnik namesto le HTML dokumenta +Log file type (if generated) +Tip log datoteke (èe je bila narejena) +Maximum mirroring depth from root address +Najveèja globina zrcaljenja z korenskega naslova +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Najveèja globina zrcaljenja za zunanje/prepovedane naslove (0= da, ne = privzeto) +Create a debugging file +Naredi razhrošèevalno datoteko +Use non-standard requests to get round some server bugs +Uporabi neobièajne zahteve posamiènih napak strežnika +Use old HTTP/1.0 requests (limits engine power!) +Uporabi starejše HTTP/1.0 zahteve (omejuje moè naprav!) +Attempt to limit retransfers through several tricks (file size test..) +Opozori na omejitve ponovnega prenosa z naigi (preverjanje dolžine datotek..) +Write external links without login/password +apiši zunanje povezave brez prijave/gesla +Write internal links without query string +Zapiši notranje povezave brez poizvedovalnih stringov +Get non-HTML files related to a link, eg external .ZIP or pictures +Vzemi ne-HTML datoteke pridružene s povezavo, npr. zunanje .ZIP ali sklike +Test all links (even forbidden ones) +Preverjaj vse povezave (prviè že prepovedane) +Try to catch all URLs (even in unknown tags/code) +Poskusi zgrabiti vse URL-je (z ne znanimi tagi/kodo) +Get HTML files first! +Najprej vzemi HTML datoteke! +Structure type (how links are saved) +Tip strukture (kako so shranjene povezave) +Use a cache for updates +Uporabi predpomnilnik za nadgradnje +Do not re-download locally erased files +Ne nalagaj ponovno lokalno zbrisanih datotek +Make an index +Naredi indeks +Make a word database +Naredi podatkovno bazo besed +Log files +Log datoteke +DOS names (8+3) +DOS imena (8+3) +ISO9660 names (CDROM) +ISO9660 imena (CDROM) +No error pages +Ni napak strani +Primary Scan Rule +Primarno pravilo iskanja +Travel mode +Prenosni naèin +Global travel mode +Splošni prenosni naèin +These options should be modified only exceptionally +Te nastavitve spreminjajte le izjemoma +Activate Debugging Mode (winhttrack.log) +Aktiviraj Razhrošèevalni naèin (winhttrack.log) +Rewrite links: internal / external +Ponovno zapiši povezave: notranje / zunanje +Flow control +Nadzor poteka +Limits +Omejitve +Identity +Istovetnost +HTML footer +Glava HTML dokumenta +N# connections +Število prikljuèitev +Abandon host if error +Zapusti gostitelja v primeru napake +Minimum transfer rate (B/s) +Najmanjša hitrost prenosa (B/s) +Abandon host if too slow +Zapusti gostitelja, èe je prepoèasen +Configure +Nastavi +Use proxy for ftp transfers +Uporabi proxy za ftp prenose +TimeOut(s) +Premorov +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Ponovitev +Size limit +Omejitev velikosti +Max size of any HTML file (B) +Najveèja velikost katere koli HTML datoteke (B) +Max size of any non-HTML file +Najveèja velikost katere koli ne-HTML datoteke +Max site size +Najveèja velikost strani +Max time +Najdaljši èas +Save prefs +Shrani lastnosti +Max transfer rate +Najveèja hitrost prenosa +Follow robots.txt +Zasleduj robots.txt +No external pages +Ni zunanjih strani +Do not purge old files +Ne poèisti stare datoteke +Accept cookies +Sprejmi piškote +Check document type +Prevarjaj tip dokumenta +Parse java files +Razèlenjuj java datoteke +Store ALL files in cache +Shrani VSE datoteke v predpomnilnik +Tolerant requests (for servers) +Toleriraj zahteve (za strežnike) +Update hack (limit re-transfers) +Nadgradi pokašljevanje (omejitev ponovnih prenosov) +Force old HTTP/1.0 requests (no 1.1) +Vsili starejše HTTP/1.0 zahteve (ne 1.1) +Max connections / seconds +Najveè prikljuèitev / sekund +Maximum number of links +Najveèje število povezav +Pause after downloading.. +Odmor po konèanem prenosu.. +Hide passwords +Skrij gesla +Hide query strings +Skrij poizvedovalne stringe +Links +Povezave +Build +Izgradnja +Experts Only +Le za eksperte +Flow Control +Nadzor poteka +Limits +Omejitve +Browser ID +ID brskalnika +Scan Rules +Iskanje pravil +Spider +Hitrost +Log, Index, Cache +Log, Indeks, predpomnilnik +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Zares želite konèati delo z WinHTTrack Website Copier? +Do not connect to a provider (already connected) +Ne poveži se oskrbovalcem (povezava je že vspostavljena) +Do not use remote access connection +Ne uporabi oddaljeni dostop povezave +Schedule the mirroring operation +Razporedi opravila zrcaljenja +Quit WinHTTrack Website Copier +Konec dela z WinHTTrack Website Copier +Back to starting page +Nazaj na zaèetno stran +Click to start! +Kliknite za zaèetek! +No saved password for this connection! +Ni shranjenih gesel za to povezavo! +Can not get remote connection settings +Ne morem prevzeti nastavitev oddaljene povezave +Select a connection provider +Izberite oskrbovalca povezave +Start +Zaèni +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Prosimo, da izravnate parametre povezovanja, èe je potrebno \nter pritisnite na gumb KONEC za zagon zrcaljenja. +Save settings only, do not launch download now. +Le shrani nastavitve, ne poženi takoj prenosa. +On hold +Ob pritisku +Transfer scheduled for: (hh/mm/ss) +Razpored prenosov za: (uu/mm/ss) +Start +Zaèni +Connect to provider (RAS) +Poveži se z oskrbnikom (RAS) +Connect to this provider +Poveži se zs tem oskrbnikom +Disconnect when finished +Prekini povezavo, ko bo konèano +Disconnect modem on completion +Izkljuèi modem ob dokonèanju +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Prosimo Vas, da nas obvestite o kakršnih koli težavah ali napakah)\r\n\r\nRazvoj:\r\nVmesnik (Okna): Xavier Roche\r\nHitrost: Xavier Roche\r\nJavaParserRazredi: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche in drugi sodelujoèi\r\nVELIKA ZAHVALA za namige prevodov gre:\r\nRobertu Lagadecu (rlagadec@yahoo.fr) +About WinHTTrack Website Copier +O programu WinHTTrack Website Copier +Please visit our Web page +Prosimo, da obišèete našo spletno stran +Wizard query +Èarovnik poizvedb +Your answer: +Vaš odgovor: +Link detected.. +Ugotovljena povezava.. +Choose a rule +Izberite pravilo +Ignore this link +Prezri to povezavo +Ignore directory +Prezri mapo +Ignore domain +Prezri domeno +Catch this page only +Zagrabi le to stran +Mirror site +Zrcaljena stran +Mirror domain +Zrcaljena domena +Ignore all +Prezri vse +Wizard query +Èarovnik poizvedb +NO +ne +File +Datoteka +Options +Možnosti +Log +Log datoteka +Window +Okna +Help +Pomoè +Pause transfer +Pavza med prenosom +Exit +Izhod +Modify options +Sprememba možnosti +View log +Preglej zgodovino +View error log +Preglej zgodovino napak +View file transfers +View file transfers +Hide +Skrij +About WinHTTrack Website Copier +O programu WinHTTrack Website Copier +Check program updates... +Preveri možnost nadgradnje programa... +&Toolbar +&Orodjarna +&Status Bar +&Statusna vrstica +S&plit +&Razdeli +File +Datoteka +Preferences +Nastavitve +Mirror +Zrcaljena stran +Log +Log datoteka +Window +Okno +Help +Pomoè +Exit +Izhod +Load default options +Naloži privzete nastavitve +Save default options +Shrani privzete nastavitve +Reset to default options +Obnovi privzete nastavitve +Load options... +Naloži možnosti... +Save options as... +Shrani možnosti kot... +Language preference... +Jezikovne nastavitve... +Contents... +Vsebine... +About WinHTTrack... +Vizitka... +New project\tCtrl+N +Novi Projekt\tCtrl+N +&Open...\tCtrl+O +&Odpri...\tCtrl+O +&Save\tCtrl+S +&Shrani\tCtrl+S +Save &As... +Shrani &Kot... +&Delete... +&Zbriši... +&Browse sites... +&Prebrskaj spletne strani... +User-defined structure +Uporabniško doloèena struktura +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tIme datoteke brez konènice (npr.: slika)\r\n%N\tIme datoteko s konènico (npr: slika.gif)\r\n%t\tLe konènica datoteke (npr: gif)\r\n%p\tPot [brez zakljuèka /] (primer: /poljubnaslika)\r\n%h\tIme gostitelja (npr: www.poljubnastran.com)\r\n%M\tMD5 URL (128 bitov, 32 ascii bytov)\r\n%Q\tMD5 poizvedovalni string (128 bitov, 32 ascii bytov)\r\n%q\tMD5 majhen poizvedovalni string (16 bitov, 4 ascii bytov)\r\n\r\n%s?\tKratko ime (Npr.: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif + +Proxy settings +Proxy nastavitve +Proxy address: +Proxy naslovi: +Proxy port: +Proxy vrata: +Authentication (only if needed) +Ugotavljanje pristnosti (le, èe je potrebno) +Login +Prijava +Password +Geslo +Enter proxy address here +Tukaj vpišite naslov proxy-ja +Enter proxy port here +Tukaj vpišite vrata proxy-ja +Enter proxy login +Vpišite prijavo za proxy +Enter proxy password +Vpišite geslo za proxy +Enter project name here +Tukaj vpišite ime projekta +Enter saving path here +Tukaj vpišite pot shranjevanja +Select existing project to update +Izberite obstojeèi projekt za nadgradnjo +Click here to select path +Tukaj kliknite za izbor poti +HTTrack Project Wizard... +Èarovnik HTTrack projektov... +New project name: +Novo ime projekta: +Existing project name: +Ime obstojeèega projekta: +Project name: +Naziv projekta: +Base path: +Osnovna pot: +C:\\My Web Sites +C:\\Moje spletne strani +Type a new project name, \r\nor select existing project to update/resume +Vpišite novo ime projekta, \r\nali izberite obstojeèe za nadgradnjo/prevzem +New project +Novi projekt +Insert URL +Vpišite URL +URL: +URL: +Authentication (only if needed) +Ugotavljanje pristnosti(le, èe je zahtevano) +Login +Prijava +Password +Geslo +Forms or complex links: +Obrazci ali kompleksne povezave: +Capture URL... +Zagrabi URL... +Enter URL address(es) here +Tukaj vnesite URL naslov(e) +Enter site login +Vpis prijava na spletno stran +Enter site password +Vpišite geslo +Use this capture tool for links that can only be accessed through forms or javascript code +Uporabite to orodje za grabež za povezave, ki lahko izbajajo obrazce ali javascript codo +Choose language according to preference +Izberite jezik za izbor lastnosti +Catch URL! +Zagrabi URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Prosimo, da nastavte zaèasne nastavitve proxy brskalnika z naslednjimi vrednostmi (Kopiraj/Prilepi vrata in naslove Proxy-ja).\nPotem kliknite na gumb Opusti obrazca znotraj vaše spletne strani ali pa kliknite na doloèeno povezavo, ki jo želite zagrabiti. +This will send the desired link from your browser to WinHTTrack. +To bo poslalo izbrano povezavo z vašega brskalnika k WinHTTrack. +ABORT +PREKINITEV +Copy/Paste the temporary proxy parameters here +Tukaj Kopiraj/Prilepi zaèasne proxy parametre +Cancel +Opusti +Unable to find Help files! +Omogoèi iskanje datotek s pomoèjo! +Unable to save parameters! +Omogoèi shranjevanje parametrov! +Please drag only one folder at a time +Prosimo, da zagrabite istoèasno le eno mapo +Please drag only folders, not files +Prosimo, da zagrabite le mape, ne pa datotek +Please drag folders only +Prosimo, da zagrabite le mape +Select user-defined structure? +Naj izberem uporabniško doloèeno strukturo? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Preverite pravilnost uporabniško doloèenega stringa,\ ker bodo imena ponarejena! +Do you really want to use a user-defined structure? +Resnièno želite uporabljati uporabniško doloèeno strukturo? +Too manu URLs, cannot handle so many links!! +Preveè URL-jev, ne morem rokovati s tem številom povezav!! +Not enough memory, fatal internal error.. +Ni dovolj pomnilnika, usodna notranja napaka... +Unknown operation! +Neznano opravilo! +Add this URL?\r\n +Dodaj ta URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Opozorilo: glavni proces je nepremièen in ne morem dodati URL(je).. +Type/MIME associations +Tip/MIME združevanja +File types: +Datoteèni tipi: +MIME identity: +MIME pristnost: +Select or modify your file type(s) here +Tukaj izberite ali urejajte vaš tip datotek +Select or modify your MIME type(s) here +Tukaj izberite Izbor ali uredite vaše MIME tipe +Go up +Pojdi gor +Go down +Pojdi dol +File download information +Informacije o naloženi datoteki +Freeze Window +Zmrzni Okna +More information: +Veè podatkov: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Dobrodošli pri delu z WinHTTrack Website Copierom!\n\nKliknite na gumb NAPREJ za\n\n- zaèetek novega projekta\n- ali dokonèanje posameznih prenosov +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Datoteke z podaljškom:\nImena datotek vsebujejo:\nTo ime datoteke:\nVsebina map z imenom:\nTo ime mape:\nPovezava z domeno:\nVsebina povezave z domeno:\nPovezava s tem gostiteljem:\nVebina povezave:\nTa povezava:\nVSE POVEZAVE +Show all\nHide debug\nHide infos\nHide debug and infos +Prikaži vse\nSkrij razhrošèevanje\nSkrij informacije\nSkrij razhrošèevanje in informacije +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. + +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Never\nIf unknown (except /)\nIf unknown +Nikoli\nÈe je neznan (uveljavi /)\nÈe je neznan +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +ni robots.txt pravil\nrobots.txt izloèen èarovnik\nzasleduj robots.txt pravila +normal\nextended\ndebug +obièajno\nrazširjeno\nrazhrošèevanje +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Prenos spletne (nih) strani\nPrenos spletne (nih) strani) + vprašanja\nPrevzem posameznih datotek\nPrenos vseh posamiènih strani (veèkratno zrcaljenje)\nPreverjanje povezav znotraj strani (preverjanje zaznamkov)\n* Nadaljevanje prekinjenih prenosov\n* Nadgradnja obstojeèih prenosov +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relativni URL / Absolutni URL (privzeto)\nAbsolutni URL / Absolutni URL\nAbsolutni URI / Absolutni URL\nOriginalni URL / Originalni URL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Svenska.txt b/lang/Svenska.txt new file mode 100755 index 0000000..97adaba --- /dev/null +++ b/lang/Svenska.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Svenska +LANGUAGE_FILE +Svenska +LANGUAGE_ISO +sv +LANGUAGE_AUTHOR +Staffan Ström (staffan at fam-strom.org) \r\n +LANGUAGE_CHARSET +ISO-8859-2 +OK +OK +Cancel +Annulera +Exit +Avsluta +Close +Stäng +Cancel changes +Ångra ändringarna +Click to confirm +Klicka för att bekräfta +Click to get help! +Klicka för att få hjälp! +Click to return to previous screen +Klicka för att gå till föregående bild +Click to go to next screen +Klicka för att se nästa bild +Hide password +Dölj lösenord +Save project +Spara projekt +Close current project? +Stäng aktuellt projekt? +Delete this project? +Radera detta projekt? +Delete empty project %s? +Radera tomt projekt %s? +Action not yet implemented +Denna funktion är inte utvecklad ännu +Error deleting this project +Ett fel uppstod vid radering av detta projekt +Select a rule for the filter +Välj vilken regel som skall gälla för detta filter +Enter keywords for the filter +Skriv in ett nyckelord för detta filter +Cancel +Annulera +Add this rule +Lägg till denna regel +Please enter one or several keyword(s) for the rule +Skriv in en eller flera nykelord för denna regel +Add Scan Rule +Lägg till en sökregel +Criterion +Kriterie +String +Sträng +Add +Lägg till +Scan Rules +Sökregler +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Använd jokertecken (*) till att inkludera/exkludera URLer eller länkar.\nDu kan använda flera söksträngar i samma rad.\nAnvänd mellanrum som separator.\n\nExempel: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Uteslut länk(ar) +Include link(s) +Inkludera länk(ar) +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Tips: För att få med ALLA GIF-filer, prova och använd: +www.someweb.com/*.gif. \n(+*.gif / -*.gif kommer att inkludera/exkludera ALLA GIF-filer från ALLA webb-sajter) +Save prefs +Spara inställningar +Matching links will be excluded: +Matchande länkar kommer att uteslutas: +Matching links will be included: +Matchande länkar kommer att inkluderas: +Example: +Exempel: +gif\r\nWill match all GIF files +gif\r\n Kommer att matcha alla GIF-filer +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nKommer att hitta alla filer med en matchande textsträng. Skriver du ex. vis 'blue' medtages 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nKommer att ta med filen 'bigfile.mov', men inte filen 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nKommer att hitta länkar med mappnamn som matchar textsträngen 'cgi', t.ex. /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nFinner länkar med mappnamn som matchar hela 'cgi-bin' textsträngen (men inte cgi-bin-2, som ett exempel) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nHittar länkar med matchande sub-string t.ex. www.someweb.com, private.someweb.com etc. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nHittar länkar med matchande mappnamn sub-string som t.ex. www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc.\r\n\r\n +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nHittar länkar som matchar hela strängen 'www.someweb.com' , (men INTE länkar som: private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nHittar möjliga länkar med matchande text-sträng som t.ex. www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc.\r\n +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nHittar bara 'www.test.com/test/someweb.html' filen. Notera att du skall skriva den fullständiga sökvägen[URL + sökväg] +All links will match +Alla länkar kommer att matcha +Add exclusion filter +Lägg till exkluderings-filter +Add inclusion filter +Lägg till inkluderings-filter +Existing filters +Existerande filter +Cancel changes +Upphäv ändringarna +Save current preferences as default values +Spara nuvarande inställningar som standardinställning +Click to confirm +Klicka för bekräfta +No log files in %s! +Det finns ingen log-fil i %s! +No 'index.html' file in %s! +Dettt finns ingen 'index.html'-fil i %s! +Click to quit WinHTTrack Website Copier +Klicka för att avsluta WinHTTrack Website Copier +View log files +Granska log filer +Browse HTML start page +Granska HTML startsida +End of mirror +Kopieringen av denna webb är klar +View log files +Visa logfiler +Browse Mirrored Website +Granska kopierad Webb +New project... +Nytt projekt... +View error and warning reports +Granska fel/varnings-rapporten +View report +Granska rapporten +Close the log file window +Lås loggfils fönstret +Info type: +Informationstyp: +Errors +Fel +Infos +Information +Find +Sök +Find a word +Sök efter ett ord +Info log file +Info loggfil +Warning/Errors log file +Varning/Fel loggfil +Unable to initialize the OLE system +Kan inte starta OLE-systemet +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack kan inte hitta någon avbruten download fil-cache i den angivna mappen!\r\n +Could not connect to provider +Kan inte ansluta till Internet +receive +motagit +request +anmodan +connect +ansluta +search +söka +ready +klar +error +fel +Receiving files.. +Tar emot filer... +Parsing HTML file.. +Överför HTML fil... +Purging files.. +Ta bort filer.. +Loading cache in progress.. + +Parsing HTML file (testing links).. +Överför HTML fil (testar länkar).... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Pause - Välj från menyn [Kopiera]/[Pause nerladdning] för att återuppta överföringen +Finishing pending transfers - Select [Cancel] to stop now! +Avsluta pågående överföring - Välj [Avbryt] för att stoppa +scanning +sökning +Waiting for scheduled time.. +Vänta på planlagd tidpunkt... +Connecting to provider +Ansluter till Internet +[%d seconds] to go before start of operation +[%d sekunder] kvar till start av denna operation +Site mirroring in progress [%s, %s bytes] +Webb kopieras nu [%s, %s bytes] +Site mirroring finished! +Kopieringen är avslutad ! +A problem occured during the mirroring operation\n +Det uppstod ett problem under kopieringen +\nDuring:\n +\nUnder:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nGranska eventuellt log filen.\n\nKlicka på AVSLUTA för att stänga WinHTTrack Website Copier.\n\nTack för att du använder WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Webb kopieringen är utförd. \nKlicka OK för att avsluta WinHTTrack.\nGranska log-fil(erna) för att kontrollera att allt har fungerat.\n\nTack för att du avänder WinHTTrack!\r\n +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * KOPIERINGEN ÄR AVBRUTEN! * *\r\nDen nuvarnde cachen är obligatorisk för alla uppdaterings operationer och innehåller data från senaste nerladdning med den aktuella avbrutna överföringen.\r\nDen tidigare cachen kan innehålla mera komplett information; on du önskar att spara den informationen, ska du återskapa den och radera den aktuella cachen.\r\n[Note: Detta kan lättast göras genom att radera samtliga 'hts-cache/new.* filer]\r\n\r\nTror du att den tidigare cache-fil eventuellt innehåler mera komplett information, och vill du återställa den? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * KOPIERINGSFEL! * *\r\nWinHTTrack har upptäckt att den nuvarande webb-kopieringen är tom. Om det var en uppdatering du utförde, har den gamla kopian återskapats.\r\nMöjlig fel: Den första sidan kunde antingen inte hittas eller uppstod det ett problem med förbindelsen.\r\n=> Kontrollera att webbservern finns och/eller kontrollera Proxy-inställningen! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\nTips: Klicka [Granska log fil] för att granska varning/fel-meddelande +Error deleting a hts-cache/new.* file, please do it manually +Det uppstod ett fel vid radering av hts-cache/new.* file, radera filen manuellt. +Do you really want to quit WinHTTrack Website Copier? +Vill du verklingen avsluta WinHTTrack Website Copier? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Kopiering av webb -\n\nSkriv webb-adressen i URL fältet +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Interaktiv guide (frågor) -\n\nSkriv webb-adressen i URL fältet +- File Download Mode -\n\nEnter file address(es) in URL box +- Filöverföring -\n\nSkriv webb-adressen i URL fältet +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Länk test -\n\nSkriv webb-adressen i URL fältet +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Uppdatering -\n\nBekräfta webb-adressen i URL fältet. Kontrollera ev. dina inställingar och klicka sedan på 'NÄSTA'. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Återuppta kopiering (där överföringen blev avbruten) -\n\nBekräfta webb-adressen i URL fältet. Kontrollera ev. dina inställingar och klicka sedan på 'NÄSTA'. +Log files Path +Sökväg för log-fil +Path +Sökväg +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +- Länklista- \n\nAnvänd URL fältet till att ange address(er) på sidor där innehåller länkar som skall kopieras. +New project / Import? +Nytt projekt / Import? +Choose criterion +Välj kriterier +Maximum link scanning depth +Max sökdjup för länkar +Enter address(es) here +Skriv in webb-adress(er) här +Define additional filtering rules +Definera ytterligare filtreringsregler +Proxy Name (if needed) +Proxy Namn (om det behövs) +Proxy Port +Proxy portnummer +Define proxy settings +Definera proxy-inställningar +Use standard HTTP proxy as FTP proxy +Använd standard HTTP proxy som FTP proxy +Path +Sökväg +Select Path +välj sökväg +Path +Sökväg +Select Path +Välj sökväg +Quit WinHTTrack Website Copier +Avsluta WinHTTrack Website Copier +About WinHTTrack +Om WinHTTrack +Save current preferences as default values +Spara nuvarande inställningar som standard +Click to continue +Klicka för att fortsätta +Click to define options +Klicka för att definera inställingar +Click to add a URL +Klicka för att lägga till URL +Load URL(s) from text file +Hämta URL från text fil +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack inställingar (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Adresslista text fil (*.txt)|*.txt|| +File not found! +Filen hittades inte! +Do you really want to change the project name/path? +Är du säker på att ändra projektnamn/sökväg? +Load user-default options? +Ladda användardefinierade standardinställningar? +Save user-default options? +Spara användardefinierade standardinställningar? +Reset all default options? +Nollställ alla standardinställningar? +Welcome to WinHTTrack! +Välkommen till WinHTTrack Website Copier! +Action: +Handling: +Max Depth +Max djup: +Maximum external depth: +Max externt djup: +Filters (refuse/accept links) : +Filtrerings-regel (utan/med länkar) +Paths +Sökväg +Save prefs +Spara inställningar +Define.. +Definera... +Set options.. +Bestäm inställningar... +Preferences and mirror options: +Inställningar och kopieringsval +Project name +Projektnamn +Add a URL... +Skriv URL... +Web Addresses: (URL) +Webb-adress (URL) +Stop WinHTTrack? +Stoppa WinHTTrack? +No log files in %s! +Ingen loggfil i %s! +Pause Download? +Paus i kopieringen? +Stop the mirroring operation +Stoppa kopieringen? +Minimize to System Tray +Minimera till verktygsfältet +Click to skip a link or stop parsing +Klicka för att hoppa över en länk eller stoppa överföringen +Click to skip a link +Klicka för att hoppa över en länk +Bytes saved +Bytes sparade: +Links scanned +Sökta länkar +Time: +Tid : +Connections: +Förbindelse: +Running: +I gång : +Hide +Gömma +Transfer rate +Överföringshastighet +SKIP +Hoppa över +Information +Information +Files written: +Filer skrivna: +Files updated: +Filer uppdaterade: +Errors: +Fel: +In progress: +Arbetar: +Follow external links +Följ externa länkar +Test all links in pages +Testa alla länkar på sidan +Try to ferret out all links +Prova att utvidga alla länkar +Download HTML files first (faster) +Ladda HTML-filer först (snabbast) +Choose local site structure +Välj en lokal webb-struktur +Set user-defined structure on disk +Bestäm användardefinerade inställningar för lokal struktur +Use a cache for updates and retries +Använd cache till uppdateringar och uppdateringsförsök +Do not update zero size or user-erased files +Uppdatera inte filer med noll-värde eller filer som är raderade +Create a Start Page +Skapa en startsida +Create a word database of all html pages +Skapa en textbaserad databas över alla HTML-sidor +Create error logging and report files +Skapa felloggning och rapport-filer +Generate DOS 8-3 filenames ONLY +Skapa ENDAST filnamn i DOS 8-3-format +Generate ISO9660 filenames ONLY for CDROM medias + +Do not create HTML error pages +Skapa inte sidor med HTML felrapporter +Select file types to be saved to disk +Välj filtyp som ska sparas på disken +Select parsing direction +Välj överföringsriktning +Select global parsing direction +Välj global överföringsriktning +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Regler för hur överskrivning av URL skall ske för interna (nerladdade) och externa (inte nerladdade) länkar +Max simultaneous connections +Max antal samtidiga förbindelser +File timeout +Fil timeout +Cancel all links from host if timeout occurs +Annulera alla länkar från värd om timeout inträffar +Minimum admissible transfer rate +Min aceptabla överföringshastighet +Cancel all links from host if too slow +Annulera alla länkar när kommunikationen är för långsam +Maximum number of retries on non-fatal errors +Max antal försök efter icke-fatala fel +Maximum size for any single HTML file +Max storlek för enskild HTML-fil +Maximum size for any single non-HTML file +Max storlek för enskils icke HTML-fil +Maximum amount of bytes to retrieve from the Web +Max antal bytes som hämtas från webben +Make a pause after downloading this amount of bytes +Gör paus efter att ha laddat ned denna mängd bytes +Maximum duration time for the mirroring operation +Max överföringstid för kopieringen +Maximum transfer rate +Max överföringshastighet +Maximum connections/seconds (avoid server overload) +Max antal förbindelser/sekund (för att undvika överbelastning på servern) +Maximum number of links that can be tested (not saved!) +Max antal länkar som kan bli testade (inte sparat!) +Browser identity +Webbläsare identitet +Comment to be placed in each HTML file +Kommentarer för infogas i varje HTML fil +Back to starting page +Tillbaka till startsidan +Save current preferences as default values +Spara nuvarande inställning som standard +Click to continue +Klicka för att fortsätta +Click to cancel changes +Klicka för att ångra ändringarna +Follow local robots rules on sites +Följ lokala sökregler på webbsidan +Links to non-localised external pages will produce error pages +Länkar till icke funna externa sidor kommer att skapa felsida +Do not erase obsolete files after update +Radera inte överflödiga filer efter uppdatering +Accept cookies? +Acceptera cookies? +Check document type when unknown? +Kontrollera dokumenttyp när det är okänt? +Parse java applets to retrieve included files that must be downloaded? +Överföra java applets tillsammans med inkluderade filer som skall laddas ned? +Store all files in cache instead of HTML only +Lagra alla filer i chchen istället för enbart HTML? +Log file type (if generated) +Logga filtyp (om det genereras) +Maximum mirroring depth from root address +Max kopieringsdjup från root adressen +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Max kopierngsdjup för externa/förbjuden adress (0, betyder ingen, är standard) +Create a debugging file +Skapar en felsökningsfil (debugg-fil) +Use non-standard requests to get round some server bugs +Använder icke-standard förfrågningar för att kringå serverfel +Use old HTTP/1.0 requests (limits engine power!) +Använder gamla HTTP/1.0 förfrågningar (begränsar effektiviteten!) +Attempt to limit retransfers through several tricks (file size test..) +Försöker att begränsa omsändningar genom att använda flera 'trick' (file size test..) +Write external links without login/password +Skriver externa länkar utan att använda login/lösenord +Write internal links without query string +Skriver interna länkar utan frågesats +Get non-HTML files related to a link, eg external .ZIP or pictures +Hämtar icke-HTML filer relaterat till en länk, t.ex. .ZIP eller bilder +Test all links (even forbidden ones) +Testar alla länkar (även förbjudna) +Try to catch all URLs (even in unknown tags/code) +Försöker att fånga alla URLer (också för okända tags/koder) +Get HTML files first! +Hämtar HTML filer först! +Structure type (how links are saved) +Anger struktur (hur länkar är sparade) +Use a cache for updates +Använd cache för uppdatering +Do not re-download locally erased files +Hämta inte filer som är lokalt raderade +Make an index +Gör ett index +Make a word database +Gör en textbaserad databas +Log files +Log filer +DOS names (8+3) +DOS namn (8+3)*/ +ISO9660 names (CDROM) + +No error pages +Ingen felsida +Primary Scan Rule +Primär sökregel +Travel mode +Sökmetod +Global travel mode +Global sökmetod +These options should be modified only exceptionally +Dessa inställningar skall endast ändras undantagsvis! +Activate Debugging Mode (winhttrack.log) +Aktivera felsökningsloggen (winhttrack.log) +Rewrite links: internal / external +Skriv om länkar: interna / externa +Flow control +Flödeskontroll +Limits +Begränsningar +Identity +Identitet +HTML footer +HTML fot +N# connections +Antal förbindelser +Abandon host if error +Lämna värd om det uppstår fel +Minimum transfer rate (B/s) +Min. överföringshastighet (B/s) +Abandon host if too slow +Lämna värd om den är för långsam +Configure +Konfigurera +Use proxy for ftp transfers +Använd proxy för FTP-överföringar +TimeOut(s) +TimeOut(s) +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Antal försök +Size limit +Storleksbegränsning +Max size of any HTML file (B) +Max storlek för HTML-fil (B) +Max size of any non-HTML file +Max storlek för icke-HTML fil +Max site size +Max webbplats storlek +Max time +Max tid +Save prefs +Spara inställningar +Max transfer rate +Max överföringshastighet +Follow robots.txt +Följ reglerna i robots.txt +No external pages +Inga externa sidor +Do not purge old files +Radera inte gamla filer +Accept cookies +Acceptera cookies +Check document type +Kontrollera dokumenttypen +Parse java files +Överför javafiler +Store ALL files in cache +Lagra ALLA filer i cachen +Tolerant requests (for servers) +Acceptera förfrågningar (från server) +Update hack (limit re-transfers) +Uppdatera avbrott (begränsa omsändningar) +Force old HTTP/1.0 requests (no 1.1) +Forcera gamla HTTP/1.0 förfrågningar (inte 1.1) +Max connections / seconds +Max förbindelser/sekunder +Maximum number of links +Max antal länkar +Pause after downloading.. +Paus efter överföring... +Hide passwords +Dölj lösenord +Hide query strings +Dölj frågesträngar +Links +Länkar +Build +Struktur +Experts Only +Inställningar för experter +Flow Control +Flödeskontroll +Limits +Begränsningar +Browser ID +Webbläsare Identitet +Scan Rules +Sökregler +Spider +Webbrobot +Log, Index, Cache +Log, Index, Cache +Proxy +Proxy +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Vill du verklingen avsluta WinHTTTrack Website Copier? +Do not connect to a provider (already connected) +Anslut inte till Internet (Är redan ansluten) +Do not use remote access connection +Använd inte fjärranslutning (RAS) +Schedule the mirroring operation +Planlägg kopieringen +Quit WinHTTrack Website Copier +Sluta WinHTTTrack Website Copier +Back to starting page +Åter startsida +Click to start! +Klicka för att starta! +No saved password for this connection! +Det finns inget sparat lösenord för denna förbindelse! +Can not get remote connection settings +Kan inte läsa värdens inloggningsinställningar +Select a connection provider +Välj en Internetuppkoppling +Start +Start +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Justera inställningarna för förbindelsen, om nödvändigt\nKlicka på UTFÖR för att starta kopieringen +Save settings only, do not launch download now. +Spara inställningarna, men starta inte överföringen nu. +On hold +Satt i väntan +Transfer scheduled for: (hh/mm/ss) +Överföringen planlagd till :(hh/mm/ss) +Start +Starta +Connect to provider (RAS) +Koppla upp till leverantör (RAS) +Connect to this provider +Koppla upp till Internet +Disconnect when finished +Koppla ner förbindelsen när överföringen är klar +Disconnect modem on completion +Koppla ned modemet efter avslutning +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Hittar du fel eller uppstår det problem, kontakta oss)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for Swedish translations to:\r\nStaffan Ström (staffan@fam-strom.org) +About WinHTTrack Website Copier +Om WinHTTrack Website Copier... +Please visit our Web page +Besök vår webb +Wizard query +Guidad frågeformulär +Your answer: +Ditt svar +Link detected.. +Länk funnen +Choose a rule +Välj en regel +Ignore this link +Ignorera denna länk +Ignore directory +Ignorera denna mapp +Ignore domain +Ignorera domänen +Catch this page only +Hämta endast denna sida +Mirror site +Kopiera webbsidorna +Mirror domain +Kopiera domänen +Ignore all +Ignorera allt +Wizard query +Guidad frågeformulär +NO +Nej +File +Fil +Options +Inställningar +Log +Log +Window +Fönster +Help +Hjälp +Pause transfer +Pause överföring +Exit +Avsluta +Modify options +Ändra inställningarna +View log +Visa loggen +View error log +Visa felloggen +View file transfers +Visa överföringsloggen +Hide +Dölj +About WinHTTrack Website Copier +Om WinHTTTrack Website Copier +Check program updates... +Kontrollera program uppdateringar... +&Toolbar +&Verktygsrad +&Status Bar +&Statusrad +S&plit +&Dela +File +Fil +Preferences +Inställningar +Mirror +Kopiera webbsidor +Log +Logg +Window +Fönster +Help +Hjälp +Exit +Avsluta +Load default options +Ladda in standardinställningar +Save default options +Spara standard inställingar +Reset to default options +Återställ till standardinställningar +Load options... +Ladda inställingar... +Save options as... +Spara inställingar som... +Language preference... +Valt språk... +Contents... +Innehåll... +About WinHTTrack... +Om WinHTTrack... +New project\tCtrl+N +Nytt projekt\tCtrl+N +&Open...\tCtrl+O +&Öppna...\tCtrl+O +&Save\tCtrl+S +&Spara\tCtrl+S +Save &As... +Spara &som... +&Delete... +&Radera... +&Browse sites... +&Gå igenom webbsidor +User-defined structure +Användardefinerad struktur +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tFilnamn utan filtyp (ex: image)\r\n%N\tHela filnamnet inkl. filtyp (ex: image.gif)\r\n%t\tEnbart filtyp (ex: gif)\r\n%p\tSökväg [utan ändelsen /] (ex: /someimages)\r\n%h\tVärddator-namn (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 frågesträng (128 bits, 32 ascii bytes)\r\n%q\tMD5 kort frågesträng (16 bits, 4 ascii bytes)\r\n\r\n%s?\tKort namn (ex: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Exempel:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Proxy inställningar +Proxy address: +Proxy adress +Proxy port: +Proxy port: +Authentication (only if needed) +Identifikation (om nödvändigt) +Login +Användarnamn +Password +Lösenord +Enter proxy address here +Skriv in proxy adressen här +Enter proxy port here +Skriv in proxy portnummer här +Enter proxy login +Skriv in proxy användarnamn/ login +Enter proxy password +Skriv in proxy lösenord +Enter project name here +Skriv in projektets namn här +Enter saving path here +Skriv in sökvägen där projektet skall sparas +Select existing project to update +Välj ett existerande projektnamn att uppdatera +Click here to select path +Klicka här för att välja sökväg +HTTrack Project Wizard... +HTTrack Projektassistent +New project name: +Nytt projektnamn: +Existing project name: +Existerande projektnamn: +Project name: +Projektnamn: +Base path: +Välj en fast sökväg till dina projekt: +C:\\My Web Sites +C:\\Mina webbsidor +Type a new project name, \r\nor select existing project to update/resume +Skriv namnet på ett nytt projekt\neller\nvälj att uppdatera ett existerande projekt +New project +Nytt projekt +Insert URL +Skriv in URL +URL: +URL: +Authentication (only if needed) +Identifikation (om nödvändigt) +Login +Användarnamn/ Login +Password +Lösenord +Forms or complex links: +Formulär eller komplexa länkar: +Capture URL... +'Fånga' URL +Enter URL address(es) here +Skriv in URL adress(er) här +Enter site login +Skriv in webbsidornas Användarnamn +Enter site password +Skriv in websidornas Lösenord +Use this capture tool for links that can only be accessed through forms or javascript code +Använd detta verktyg för att 'fånga' länkar som endast kan nås via formulär eller javascript-kod +Choose language according to preference +Välj ditt förvalda språk +Catch URL! +'Fånga' URL +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Sätt tillfälligt webbläsarens proxy till följande värden: (Kopiera/Klistra in Proxy Adress och Port).\nKlicka på Form SUBMIT knappen i din webbläsare, eller klicka på den specifika länk du önskar att hämta. +This will send the desired link from your browser to WinHTTrack. +Detta sänder den önskade länken från din webbläsare til WinHTTrack. +ABORT +AVBRYT +Copy/Paste the temporary proxy parameters here +Kopiera/Klistra in de temporära proxy parametrarna här +Cancel +Annullera +Unable to find Help files! +Kan inte hitta Hjälpfilerna! +Unable to save parameters! +Kan inte spara parametrana! +Please drag only one folder at a time +Drag enbart en mapp åt gången! +Please drag only folders, not files +Drag enbart mappar, inte filer +Please drag folders only +Drag bara mappar +Select user-defined structure? +Välj användardefinierad struktur? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Var säker på att den användardefinierade strängen är korrekt\nImotsat fall kommer filnamnen att vara ogiltiga! +Do you really want to use a user-defined structure? +Är du riktigt säker på att använda en användardefinierad struktur? +Too manu URLs, cannot handle so many links!! +För många URLer, WinHTTrack kan inte hantera så många länkar!!! +Not enough memory, fatal internal error.. +Det finns inte tillräckligt med minne, allvarligt internt fel har uppstått.. +Unknown operation! +Okänd handling! +Add this URL?\r\n +Addera denna URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Varning: Processen svarar inte, URLen kan inte adderas.... +Type/MIME associations +Typ/MIME sammankoppling +File types: +Fil typer: +MIME identity: +MIME Identitet: +Select or modify your file type(s) here +Välj eller ändra dina filtyp(er) här +Select or modify your MIME type(s) here +Välj eller ändra dina MIME typ(er) här +Go up +Gå upp +Go down +Gå ned +File download information +Filöverföringsinformation +Freeze Window +Frys fönstret +More information: +Mera information: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Välkommen till WinHTTrack Website Copier!\n\Klicka på 'Nästa' för att för att\n-Starta ett nytt projekt\n-eller uppdatera ett existerande projekt. +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Filnamn med filtilläg:\nFilnamn som innehåller:\nDetta filnamn:\nMappnamn som innehåller:\nDetta mappnamn:\nLänkar på denna domän:\nLänkar på denna domän som innehåller:\nLänkar från denna värd:\nLänkar som innehåller:\nDenna Länk:\nAlla Länkar +Show all\nHide debug\nHide infos\nHide debug and infos +Visa alla\nGöm felhantering\nGöm information\nGöm felhantering och information +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Webbplats-struktur (Standard)\nHtml i webb/, Bilder/andra filer i webb/bilder/\nHtml i webb/html, Bilder och annat i webb/bilder\nHtml i webb/, Bilder och annat i webb/\nHtml i webb/, Bilder och annat i webb/xxx, med xxx där Datatyp\nHtml i webb/html, Bilder och annat i webb/xxx\nWebbplats-struktur, utan www.domain.xxx/\nHtml i webbplats/, Bilder och andra i webbplats/images/\nHtml i webbplats/html, Bilder och andra i webbplats/images\nHtml i webbplats/, Bilder och andra i webbplats/\nHtml i webbplats/, Bilder och andra i webbplats/xxx\nHtml i webbplats/html, Bilder och andra i webbplats/xxx\nAlla filer i webbplats/, med slumpnamn \nAlla filer i webbplats/, med Slumpnamn \nAnvändardefinierad Struktur... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Bara sök\nSpara html filer\nSpara icke-html filer\nSpara alla filer (standard)\nSpara html filer först +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Bli kvar i samma mapp\nKan gå ned(standard)\nKan gå upp\nKan gå både upp och ned +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Bli kvar på samma adress [standard]\nBli kvar på samma domän\nBli kvar på samma toppnivå-domän\n Gå överallt på Internet. +Never\nIf unknown (except /)\nIf unknown +Aldrig\nOm okänt (undantaget /]\nOm okänt +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Ingen robots.txt regel\nrobots.txt med undantag av guiden\nfölj robots.txt reglerna +normal\nextended\ndebug +Normal\nutvidgat\nfelsökning +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Ladda ner webbplats(er)\nLadda ner webplats(er) + frågor\nHämta separata filer\nÖverför alla sidor (multiple mirror)\nTesta länkarna på sidorna (bookmark test)\n* Fortsätt avbrutet projekt\n* Uppdatera tidigare projekt +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Relativ URI / Fullständig URL (default)\nFullständig URL / Fullständig URL\nFullständig URI / Fullständig URL\nUrsprunglig URL / Ursprunglig URL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lang/Turkish.txt b/lang/Turkish.txt new file mode 100755 index 0000000..47e0e54 --- /dev/null +++ b/lang/Turkish.txt @@ -0,0 +1,918 @@ +LANGUAGE_NAME +Turkish +LANGUAGE_FILE +Turkish +LANGUAGE_ISO +tr +LANGUAGE_AUTHOR +Arman (Armish) Aksoy \r\n +LANGUAGE_CHARSET +ISO-8859-9 +OK +Tamam +Cancel +Vazgeç +Exit +Çýkýþ +Close +Kapat +Cancel changes +Deðiþikleri Kaydetme +Click to confirm +Onaylamak için Týklayýn +Click to get help! +Yardým almak için Týklayýn +Click to return to previous screen +Önceki ekrana dönmek için týklayýn +Click to go to next screen +Sonraki ekrana gitmek için týklayýn +Hide password +Parolayý Gizle +Save project +Projeyi Kaydet +Close current project? +Açýk proje kapatýlsýn mý? +Delete this project? +Bu proje silinsin mi? +Delete empty project %s? +%s boþ projesi silinsin mi? +Action not yet implemented +Eylem henüz uygulanmadý +Error deleting this project +Bu proje silinirken hata oluþtu +Select a rule for the filter +Filtre için bir kural seçin +Enter keywords for the filter +Filtre için anahtar kelimeleri giriniz +Cancel +Vazgeç +Add this rule +Bu kuralý ekle +Please enter one or several keyword(s) for the rule +Lütfen bu kural için bir veya daha fazla anahtar kelime giriniz +Add Scan Rule +Tarama Kuralý Ekle +Criterion +Kriter +String +Dizim +Add +Ekle +Scan Rules +Kurallarý Tara +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Adresleri veya baðlantýlarý almak veya almamak için özel sembolleri kullanýn.\n Bir satýrda birden çok kelime kullanabilirsiniz.\nAyýraç olarak boþluk kullanýn.\n\nÖrnek: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Exclude links +Baðlantýlarý Alma +Include link(s) +Baðlantýlarý Al +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Ýpucu: Bir sitedeki tüm GIF dosyalarýný almak için, +www.siteniz.com/*.gif benzeri birþey kullanabilirsiniz. \n(+*.gif / -*.gif ile sitedeki GIF dosyalarýnýn alýnýp alýnmayacaðýný belirtebilirsiniz) +Save prefs +Ayarlarý kaydet +Matching links will be excluded: +Eþleþen bu baðlantýlar alýnmayacaktýr:: +Matching links will be included: +Eþleþen bu baðlantýlar alýnacaktýr: +Example: +Örnek: +gif\r\nWill match all GIF files +gif\r\nTüm GIF dosyalarýný eþleþtirecektir +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +mavi\r\nTüm kelimeleri ve içerdiklerini 'mavi' adlý kelimeyle karþýlaþtýracaktýr, mesela 'mavigokyuzu.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +buyukdosya.mov\r\nBu aramada 'buyukdosya.mov' eþleþecektir fakat 'buyukdosya2.mov' eþleþmeyecektir +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\n'cgi' kelimesiyle eþleþen tüm baðlantýlarý bulacaktýr, mesela '/cgi-bin/somecgi.cgi' +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\n'cgi-bin' ile eþleþen tüm dizin baðlantýlarýný bulacaktýr, fakat 'cgi-bin-2' gibi bir kelime bu aramada eþleþmez +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +siteniz.com\r\n'siteniz.com' içeren tüm baðlantýlarý bulacaktýr, mesela 'www.siteniz.com', 'ozel.siteniz.com' +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +siteniz\r\n'siteniz' kelimesini içeren tüm baðlantýlarý bulacaktýr, mesela 'www.siteniz.com', 'ozel.siteniz.com', 'www.siteniz.edu' +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.siteniz.com\r\n'www.siteniz.com' içeren tüm adresleri bulacaktýr, ama mesela 'ozel.siteniz.com' bu aramada eþleþmeyecektir +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +siteniz\r\n'siteniz' ile eþleþen tüm alt ve ana baðlantýlarý bulacaktýr, mesela www.siteniz.com/blabla, www.deneme.abc/sitenizden/, wwww.deneme.com/siteniz.html +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.deneme.com/deneme/adres.html\r\nSadece 'www.deneme.com/deneme/adres.html' dosyasýnýz bulur. Bunun için tam adresi (Site adresi + site konumu) girmeniz gerektiðini unutmayýnýz +All links will match +Bütün baðlantýlar eþleþtirilecek +Add exclusion filter +Alýnmayacaklar için filtre ekle +Add inclusion filter +Alýnacaklar için filtre ekle +Existing filters +Filtreler +Cancel changes +Deðiþiklikleri kaydetme +Save current preferences as default values +Þuanki ayarlarý öntanýmlý ayarlar olarak ata +Click to confirm +Onaylamak için týklayýn +No log files in %s! +%s içinde kayýt dosyasý yok!! +No 'index.html' file in %s! +%s içinde 'index.html' yok! +Click to quit WinHTTrack Website Copier +WinHTTrack Website Copier'dan çýkmak için týklayýn +View log files +Kayýt dosyalarýný görüntüle +Browse HTML start page +HTML baþlangýç sayfasýný tarat +End of mirror +Yansý Sonu +View log files +Kayýt Dosyalarýný Göster +Browse Mirrored Website +Web Sitesinin Yansýsýný Tara +New project... +Yeni proje... +View error and warning reports +Hata ve uyarý raporlarýný göster +View report +Raporu göster +Close the log file window +Kayýt Dosya Penceresini Kapat +Info type: +Bilgi tipi: +Errors +Hatalar +Infos +Bilgiler +Find +Bul +Find a word +Sözcük bul +Info log file +Bilgi kayýt dosyasý +Warning/Errors log file +Uyarý/Hata kayýt dosyasý +Unable to initialize the OLE system +OLE sistemi yüklenemiyor +WinHTTrack could not find any interrupted download file cache in the specified folder! +WinHTTrack belirtilen dizinde hiç indirilirken kesilmiþ dosya kaydý bulamadý! +Could not connect to provider +Servis saðlayýcýsýna baðlanýlamýyor +receive +al +request +iste +connect +baðlan +search +ara +ready +hazýr +error +hata +Receiving files.. +Dosyalar alýnýyor.. +Parsing HTML file.. +HTML dosyasý ayýklanýyorr.. +Purging files.. +Dosyalar temizleniyor.. +Loading cache in progress.. +Önbellek yükleniyor.. +Parsing HTML file (testing links).. +HTML dosyasý ayýklanýyor (baðlantýlar kontrol ediliyor).. +Pause - Toggle [Mirror]/[Pause download] to resume operation +Duraklat - Ýþleme devam etmek için [Yansý]/[Ýndirmeyi duraklat]'a geçin +Finishing pending transfers - Select [Cancel] to stop now! +Bekleyen transferler sonlandýrýlýyor - Durdurmak için [Ýptal]'i seçin! +Waiting for scheduled time.. +Planlanan zaman bekleniyor.. +Connecting to provider +Servis saðlayýcýya baðlanýyor +[%d seconds] to go before start of operation +Ýþleme baþlamaya [%d saniye] +Site mirroring in progress [%s, %s bytes] +Sitenin yansýsý alýnýyor [%s, %s bayt] +Site mirroring finished! +Sitenin yansýsý alýndý! +A problem occured during the mirroring operation\n +Yansý iþlemi sýrasýnda bir hata oluþtu\n +\nDuring:\n +\nSüresince:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +\nEðer gerekliyse kayýt dosyasýna bakabilirsiniz.\n\nWinHTTrack Website Copier'den çýkmak için BÝTÝR'e týklayýn.\n\nWinHTTrack kullandýðýnýz için teþekkürler! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Yansý iþlemi tamamlandý.\nWinHTTrac'dan çýkmak için Çýk'a týklayýn.\nHerþeyin düzgün yapýldýðýndan emin olmak için kayýt dosyasýna bakabilirsiniz.\n\nWinHTTrack kullandýðýnýz için teþekkürler! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * YANSI ÝÞLEMÝ ÝPTAL EDÝLDÝ! * *\r\nHerhangi bir güncelleme iþlemi için þuanki geçici kayýtlar gereklidir ve bu kayýtlar indirilen dosyalarý tutarlar.\r\nBiçimlendirilmiþ kayýt daha fazla bilgi içerebilir; eðer bu bilgiyi kaybetmek istemiyorsanýz, bu kaydý yedekleyebilir ve geçici olanýný silebilirsiniz.\r\n[Not: Bu iþlemi hts-cache/new.* dosyalarýný silerek kolaylýkla yapabilirsiniz]\r\n\rBiçimlendirilmiþ kaydý geri almak istiyor musunuz? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * YANSI ÝÞLEMÝ HATASI! * *\r\nHTTrack kullanýlan yanýsnýn boþ olduðunu tespit etti. Eðer bu bir güncelleme ise, önceki yansý geri alýnabilir.\r\nNeden: baþlangýç sayfa(lar)ý bulunamadý veya bir baðlantý problemi oluþtu.\r\n=> Web sitesinin olup olmadýðýný ve vekil sunucu ayarlarýnýzý kontrol edin! <= +\n\nTip: Click [View log file] to see warning or error messages +\n\Ýpucu: Hata ve uyarý mesajlarýný görmek için [Kayýt dosyasýný göster]'e týklayýnn +Error deleting a hts-cache/new.* file, please do it manually +hts-cache/new.* dosyalarý silinirken hata oluþtu, lütfen bunu kendiniz yapýn +Do you really want to quit WinHTTrack Website Copier? +WinHTTrack Website Copier'dan çýkmak istediðine emin misiniz?? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Yansý Modu -\n\nAdresleri URL kutusuna giriniz +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- Etkileþimli Sihirbaz Modu (sorular) -\n\nAdresleri URL kutusuna giriniz +- File Download Mode -\n\nEnter file address(es) in URL box +- Dosya Ýndirme Modu -\n\nAdresleri URL kutusuna giriniz +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Link Test Modu -\n\nWeb adreslerini baðlantýlarla birlikte test etmek için URL kutusuna giriniz +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Güncelleme Modu -\n\nURL kutusundaki adresli onaylayýn, eðer gerekli ise parametreleri kontrol edip 'ÝLERÝ' tuþuna týklayýn +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Devam Modu (Kesilmiþ Ýþlem) -\n\n\URL kutusundaki adresli onaylayýn, eðer gerekli ise parametreleri kontrol edip 'ÝLERÝ' tuþuna týklayýn +Log files Path +Kayý dosyalarý konumu +Path +Konum +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +-Baðlantý Listeleme Modu -\n\nYansýlanacak sayfalarýn adreslerini URL kutusuna giriniz +New project / Import? +Yeni Proje / Aktarýlsýn mý? +Choose criterion +Kriter seçiniz +Maximum link scanning depth +Maksimum baðlantý arama derinliði +Enter address(es) here +Adresleri buraya giriniz +Define additional filtering rules +Ek filtre kurallarý tanýmla +Proxy Name (if needed) +Vekil Sunucu Adý (gerekli ise) +Proxy Port +Vekil Sunucu Portu +Define proxy settings +Vekil sunucu ayarlarýný tanýmlayýn +Use standard HTTP proxy as FTP proxy +FTP Vekil sunucusu için öntanýmlý HTTP sunucusunu kullan +Path +Konum +Select Path +Konum Seç +Path +Konum +Select Path +Konum Seç +Quit WinHTTrack Website Copier +WinHTTrack Website Copier'den çýk +About WinHTTrack +WinHTTrack Hakkýnda +Save current preferences as default values +Þuanki ayarlarý öntanýmlý deðerler olarak kaydet +Click to continue +Devam etmek için týklayýn +Click to define options +Özellikleri tanýmlamak için týklayýn +Click to add a URL +URL eklemek için týklayýn +Load URL(s) from text file +URLleri metin dosyasýndan yükle +WinHTTrack preferences (*.opt)|*.opt|| +WinHTTrack ayarlarý (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Adres Listesi metin dosyasý (*.txt)|*.txt|| +File not found! +Dosya bulunamadý! +Do you really want to change the project name/path? +Proje adýný/konumunu deðiþtirmek istediðinizden emin misiniz? +Load user-default options? +Kullanýcý-tanýmlý ayarlar yüklensin mi? +Save user-default options? +Kullanýcý-tanýmlý ayarlar kaydedilsin mi? +Reset all default options? +Öntanýmlý ayarlar sýfýrlansýn mý? +Welcome to WinHTTrack! +WinHTTrack'a Hoþgeldiniz! +Action: +Eylem: +Max Depth +Max Derinlik +Maximum external depth: +Maximum harici derinlik: +Filters (refuse/accept links) : +Filtreler (red/kabul edilen baðlantýlar) : +Paths +Konumlar +Save prefs +Özellikleri Kaydet +Define.. +Tanýmla.. +Set options.. +Ayarlar.. +Preferences and mirror options: +Ayarlar ve yansý seçenekleri: +Project name +Proje adý +Add a URL... +URL ekle... +Web Addresses: (URL) +Web Adresleri: (URL) +Stop WinHTTrack? +WinHTTrack Durdurulsun mu? +No log files in %s! +%s içinde kayýt dosyasý yok! +Pause Download? +Ýndirme duraklatýlsýn mý? +Stop the mirroring operation +Yansý iþlemini durdur +Minimize to System Tray +Sistem çubuðuna küçült +Click to skip a link or stop parsing +Baðlantýyý geçmek için veya ayýklamayý durdurmak için týklayýn +Click to skip a link +Baðlantýyý atlamak için týklayýn +Bytes saved +Bayt kaydedildi +Links scanned +Link tarandý +Time: +Zaman: +Connections: +Baðlantýlar: +Running: +Çalýþýyor: +Hide +Gizle +Transfer rate +Transfer hýzý +SKIP +ATLA +Information +Bilgi +Files written: +Yazýlan dosyalar: +Files updated: +Güncellenen dosyalar: +Errors: +Hatalar: +In progress: +Ýlerleme: +Follow external links +Alýnmayan baðlantýlarý izle +Test all links in pages +Sayfadaki tüm baðlantýlarý test et +Try to ferret out all links +Tüm baðlantýlarý ortaya çýkarmaya çalýþ +Download HTML files first (faster) +Öncelikli olarak HTML dosyalarýný indir (daha hýzlý) +Choose local site structure +Yerel site yapýsý seç +Set user-defined structure on disk +Diskteki kullanýcý-tanýmlý yapýyý ata +Use a cache for updates and retries +Denemeler ve güncellemer için bir kayýt kullan +Do not update zero size or user-erased files +Silinen veya boþ olan dosyalarý güncelleme +Create a Start Page +Baþlangýç Sayfasý Yarat +Create a word database of all html pages +Tüm html sayfalarýndan bir kelime veritabaný yarat +Create error logging and report files +Hata kaydý ve rapor dosyalarý yarat +Generate DOS 8-3 filenames ONLY +Yalnýzca DOS 8-3 dosya adlarý üret +Generate ISO9660 filenames ONLY for CDROM medias +Yalnýz CDROM lar için ISO9660 dosya adlarý üret +Do not create HTML error pages +HTML hata sayfalarý yaratma +Select file types to be saved to disk +Diske kaydedilecek dosya tiplerini seçin +Select parsing direction +Ayýklama yönlendirmesini seçin +Select global parsing direction +Genel ayýklama yönlendirmesini seçinr +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Alýnan ve alýnmayan dosyalar için URLleri yeniden yazma amaçlý kurallar hazýrla +Max simultaneous connections +Max simule baðlantý sayýsý +File timeout +Dosya zaman aþýmý +Cancel all links from host if timeout occurs +Eðer zaman aþýmý yaþanýrsa sunucudaki tüm baðlantýlarý iptal et +Minimum admissible transfer rate +Kabul edilebilen minimum ransfer hýzý +Cancel all links from host if too slow +Eðer sunucu çok yavaþsa tüm baðlantýlarý iptal et +Maximum number of retries on non-fatal errors +Hata durumunda maksimum dene sayýsý +Maximum size for any single HTML file +Bir HTML dosyasý için maksimum boyutt +Maximum size for any single non-HTML file +HTML olmayan dosyalar için maksimum boyut +Maximum amount of bytes to retrieve from the Web +Web'den alýnacak maksimum bayt miktarý +Make a pause after downloading this amount of bytes +Bu miktarda bir indirme yaparsan durakla +Maximum duration time for the mirroring operation +Yansýlama için maksimum süreklilik +Maximum transfer rate +Maksimum transfer hýzý +Maximum connections/seconds (avoid server overload) +Maksimum baðlantý/saniye (sunucuya fazla yüklenmekten kaçýnmak için) +Maximum number of links that can be tested (not saved!) +Test edilebilecek maksimum baðlantý sayýsý (kaydedilmeyen!) +Browser identity +Browser Kimliði +Comment to be placed in each HTML file +Her HTML sayfasýnýn içerisine yerleþtirilecek açýklama +Back to starting page +Baþlangýç sayfasýna dön +Save current preferences as default values +Þuanki özellikleri öntanýmlý deðerler olarak kaydet +Click to continue +Devam etmek için týklayýn +Click to cancel changes +Deðiþiklikleri iptal etmek için týklayýn +Follow local robots rules on sites +Sitelerde yerel robot kurallarýný izle +Links to non-localised external pages will produce error pages +Alýnmayan sayfalarý gösteren baðlantýlar hata sayfalarýna yönlendirilsin +Do not erase obsolete files after update +Güncellemeden sonra eski dosyalarý silme +Accept cookies? +Çerezler kabul edilsin mi? +Check document type when unknown? +Bilinmeyen dosya türleri kontrol edilsin mi? +Parse java applets to retrieve included files that must be downloaded? +Ýndirilmesi gereken java uygulamarý ayýklansýn mý? +Store all files in cache instead of HTML only +Sadece HTML sayfalarý yerine bellekteki tüm dosyalarý geri al +Log file type (if generated) +Kayýt dosyasýnýn türü (eðer üretilirse) +Maximum mirroring depth from root address +Yansýlama iþleminde ana adresten uzaklaþýlacak maksimum derinlik +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Alýnmayan/yasak adreslerin yansý iþlemi için maksimum derinlik (0, bahsedilen, none, öntanýmlý deðer) +Create a debugging file +Hata ayýklama için dosya yarat +Use non-standard requests to get round some server bugs +Bazý sunucu hatalarýndan kurtulmak için standart olmayan istekler kullan +Use old HTTP/1.0 requests (limits engine power!) +Eski HTTP/1.0 isteklerini kullan (sistem gücünü kýsýtlar!) +Attempt to limit retransfers through several tricks (file size test..) +Tekrarlanan transferleri birkaç hile ile kýsýtlandýrmaya çalýþ (dosya boyutu testi...) +Write external links without login/password +Alýnmayan baðlantýlarý giriþ/parola istemeden yaz +Write internal links without query string +Sorgulama kelimesi olmadan alýnan baðlantýlarý yaz +Get non-HTML files related to a link, eg external .ZIP or pictures +Bir baðlantýyla alakalý HTML türünde olmayan dosyalarý da al, örnek .ZIP dosyalarý ve resimler +Test all links (even forbidden ones) +Tüm baðlantýlarý test et (yasak olanlarý bile) +Try to catch all URLs (even in unknown tags/code) +Tüm baðlantýlarý almaya çalýþ (bilinmeyen etiket/kod içinde olanlarý bile)) +Get HTML files first! +Öncelikle HTML dosyalarýný al! +Structure type (how links are saved) +Yapý türü (baðlantýlarýn nasýl kaydedileceði) +Use a cache for updates +Güncellemeler için önbellek kullan +Do not re-download locally erased files +Yerel olarak silinen dosyalarý tekrar indirme +Make an index +Bir index yarat +Make a word database +Sözcük veritabaný hazýrla +Log files +Kayýt dosyalarý +DOS names (8+3) +DOS adlarý (8+3) +ISO9660 names (CDROM) +ISO9660 adlarý (CDROM) +No error pages +Hata sayfalarýný alma +Primary Scan Rule +Öncelikli Arama Kuralý +Travel mode +Gezi modu +Global travel mode +Genel gezi modu +These options should be modified only exceptionally +Bu ayarlar sadece kabul edilebildikleri zaman deðiþtirilebilirler +Activate Debugging Mode (winhttrack.log) +Hata Ayýklama Modunu Aktifleþtir (winhttrack.log) +Rewrite links: internal / external +Baðlantýlarý tekrar yaz: alýnan / alýnmayan +Flow control +Taþma kontrolü +Limits +Sýnýrlar +Identity +Kimlik +HTML footer +HTML sayfa altlýðý +N# connections +N# baðlantý +Abandon host if error +Eðer hata oluþursa sunucuyu býrak +Minimum transfer rate (B/s) +Minimum transfer hýzý (B/s) +Abandon host if too slow +Eðer sunucu çok yavaþsa býrak +Configure +Yapýlandýr +Use proxy for ftp transfers +FTP transfeleri için vekil sunucu kullan +TimeOut(s) +Zaman Aþýmý(s) +Persistent connections (Keep-Alive) +Aktif tutulan baðlantýlar (Sürekli) +Reduce connection time and type lookup time using persistent connections +Baðlantý süresini düþürün ve kalýcý baðlantýlar kullanýlarak yapýlan arama süresini girin. +Retries +Tekrar Deneme +Size limit +Boyut sýnýrý +Max size of any HTML file (B) +HTML dosyalarý için maksimum boyut (B) +Max size of any non-HTML file +HTML olmayan dosyalar için maksimum boyut) +Max site size +Max site boyutu +Max time +Max süre +Save prefs +Ayarlarý kaydeti +Max transfer rate +Max transfer hýzý +Follow robots.txt +Robots.txt'i takip et +No external pages +Tüm sayfalar alýnsýn +Do not purge old files +Eski dosyalarý temizleme +Accept cookies +Çerezleri kabul et +Check document type +Belge türünü kontrol et +Parse java files +Java dosyalarýný ayýkla +Store ALL files in cache +Tüm dosyalarý önbellekte topla +Tolerant requests (for servers) +Tölerans istekleri (sunucular için) +Update hack (limit re-transfers) +Güncelleme ince ayarý (tekrar eden transferleri sýnýrla) +Force old HTTP/1.0 requests (no 1.1) +Eski HTTP/1.0 isteklerine zorla (no 1.1) +Max connections / seconds +Max baðlantý / saniye +Maximum number of links +Maximum baðlantý sayýsý +Pause after downloading.. +Ýndirme iþleminden sonra beklee.. +Hide passwords +Parolalarý gizle +Hide query strings +Sorgulama kelimelerini gizle +Links +Baðlantýlar +Build +Kur +Experts Only +Yalnýzca Uzmanlarn +Flow Control +Taþma Kontrolü +Limits +Sýnýrlar +Browser ID +Tarayýcý ID +Scan Rules +Tarama Kurallarý +Spider +Að +Log, Index, Cache +Kayýt, Indeks, Önbellek +Proxy +Vekil Sunucu +MIME Types +MIME Türleri +Do you really want to quit WinHTTrack Website Copier? +WinHTTrack Website Copier'den çýkmak istediðine emin misiniz? +Do not connect to a provider (already connected) +Sunucuya baðlanma (zaten baðlý) +Do not use remote access connection +Uzaktan eriþim baðlantýlarý kullanma +Schedule the mirroring operation +Yansýma iþlemini zamanla +Quit WinHTTrack Website Copier +WinHTTrack Website Copier'dan Çýk +Back to starting page +Baþlangýç sayfasýna dön +Click to start! +Baþlamak için týklayýn! +No saved password for this connection! +Bu baðlantý için kaydedilmiþ parola yok! +Can not get remote connection settings +Uzaktan eriþim ayarlarý alýnamýyor +Select a connection provider +Bir baðlantý sunucusu seçin +Start +Baþlat +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Lütfen eðer gerekli ise baðlantý parametrelerini belirtiniz,\ndaha sonra BAÞLAT'a basarak yansýlama iþlemini baþlatabilirsiniz. +Save settings only, do not launch download now. +Sadece ayarlarý kaydet, indirme iþlemine baþlama. +On hold +Beklemede +Transfer scheduled for: (hh/mm/ss) +Transferin zamaný: (hh/mm/ss) +Start +Baþlat +Connect to provider (RAS) +Sunucuya baðlan (RAS) +Connect to this provider +Bu sunucuya baðlan +Disconnect when finished +Bittiðinde baðlantýyý kes +Disconnect modem on completion +Ýþlem tamamlandýðýnda modemden baðlantýyý kopar +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Lütfen bize her türlü hatayý ve problemi aktarýnýz)\r\n\r\nGeliþtirme:\r\nArayüz (Windows): Xavier Roche\r\nAð: Xavier Roche\r\nJava Ayýklama Sýnýflarý: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche ve diðerleri\r\nÇeviri ipuçlarý için teþekkürler: \r\nRobert Lagadec (rlagadec@yahoo.fr) +About WinHTTrack Website Copier +WinHTTrack Website Copier Hakkýnda +Please visit our Web page +Lütfen web sitemizi ziyaret edin +Wizard query +Sorgulama sihirbazý +Your answer: +Cevabýnýz: +Link detected.. +Bulunan baðlantý.. +Choose a rule +Bir kural seçin +Ignore this link +Bu baðlantýyý yoksay +Ignore directory +Bu dizini yoksay +Ignore domain +Bu alanadýný yoksay +Catch this page only +Sasece bu sayfayý önbelleðe al +Mirror site +Siteyi yansýla +Mirror domain +Alanadýný yansýla +Ignore all +Tümünü yoksay +Wizard query +Sorgulama sihirbazý +NO +Hayýr +File +Dosya +Options +Seçenekler +Log +Kayýt +Window +Pencere +Help +Yardým +Pause transfer +Transferi duraklat +Exit +Çýk +Modify options +Seçenekleri deðiþtir +View log +Kaydý göster +View error log +Hata kaydýný göster +View file transfers +Dosya transfelerini göster +Hide +Gizle +About WinHTTrack Website Copier +WinHTTrack Website Copier Hakkýnda +Check program updates... +Program güncellemelerini kontrol et... +&Toolbar +&Araç Çubuðu +&Status Bar +&Durum Çubuðu +S&plit +A&yýr +File +Dosya +Preferences +Ayarlar +Mirror +Yansý +Log +Kayýt +Window +Pencere +Help +Yardým +Exit +Çýk +Load default options +Varsayýlan ayarlarý yükle +Save default options +Varsayýlan ayarlarý kaydet +Reset to default options +Varsayýlan ayarlara dön +Load options... +Ayarlarý yükle... +Save options as... +Ayarlarý farklý kaydett... +Language preference... +Dil seçimi... +Contents... +Ýçerikler... +About WinHTTrack... +WinHTTrack Hakkýnda... +New project\tCtrl+N +Yeni Proje\tCtrl+N +&Open...\tCtrl+O +&Aç...\tCtrl+O +&Save\tCtrl+S +&Kaydet\tCtrl+S +Save &As... +&Farklý Kaydet... +&Delete... +&Sil... +&Browse sites... +&Siteleri tara... +User-defined structure +Kullanýcý tanýmlý yapý +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\tDosyanýn soneksiz adý (örn: resim)\r\n%N\tDosyanýn sonekli adý (örn: resim.gif)\r\n%t\tYalnýz dosyanýn türü (örn: gif)\r\n%p\tKonum [/ ile bitmeyen] (örn: /resimler)\r\n%h\tSunucu adý (örn: www.siteniz.com)\r\n%M\tMD5 URL (128 bit, 32 ascii bayt)\r\n%Q\tMD5 sorgu kelimesi (128 bit, 32 ascii bayt)\r\n%q\tMD5 kýsa arama kelimesi (16 bit, 4 ascii bayt)\r\n\r\n%s?\tKýsa ad (örnek: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Örnek:\t%h%p/%n%q.%t\n->\t\tc:\\yansý\\www.siteniz.com\\resimler\\resim.gif +Proxy settings +Vekil sunucu ayarlarý +Proxy address: +Vekil sunucu adresi: +Proxy port: +Vekil sunucu portu: +Authentication (only if needed) +Yetkilendirme (gerektiðinde) +Login +Kullanýcý +Password +Parola +Enter proxy address here +Vekil sunucu adresini buraya girin +Enter proxy port here +Vekil sunucu portunu buraya girin +Enter proxy login +Vekil sunucu kullanýcý adýnýzý girin +Enter proxy password +Vekil sunucu parolasýný girin +Enter project name here +Proje adýný buraya girin +Enter saving path here +Saklanacak konumu buraya girinr +Select existing project to update +Güncellenecek projeyi seçin +Click here to select path +Konumu seçmek için týklayýn +HTTrack Project Wizard... +HTTrack Proje Sihirbazý... +New project name: +Yeni proje adý: +Existing project name: +Mevcut proje adý: +Project name: +Proje adý: +Base path: +Ana konum: +C:\\My Web Sites +C:\\Benim Web Sitem +Type a new project name, \r\nor select existing project to update/resume +Yeni bir proje adý yazýn, \r\nveya devam edilecek/güncellenecek projeyi seçin +New project +Yeni proje +Insert URL +URL ekle +URL: +URL: +Authentication (only if needed) +Yetkilendirme (gerekirse) +Login +Kullanýcý +Password +Parola +Forms or complex links: +Formlar veya karmaþýk baðlantýlar: +Capture URL... +URL yakala... +Enter URL address(es) here +URL Adres(ler)ini buraya girin +Enter site login +Site için kullanýcý adý girin +Enter site password +Site için parola girin +Use this capture tool for links that can only be accessed through forms or javascript code +Yalnýzca formlarla veya javascript koduyla eriþilebilen baðlantýlarý bu yakalama aracýný kullanarak al +Choose language according to preference +Dili ayarlara göre seç +Catch URL! +URL Yakala! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Lütfen geçici tarayýcý vekil sunucu ayarlarýný bu deðerlere göre atayýnýz (Vekil sunucu adresini ve portunu Kopyala/Yapýþtýr yapabilirsiniz).\nDaha sonra tarayýcýnýzda formun GÖNDER (SUBMIT) tuþuna veya almak istediðiniz özel baðlantýya týklayýnýz. +This will send the desired link from your browser to WinHTTrack. +Bu iþlem istenilen baðlantýyý tarayýcýnýzdan WinHTTrack'e gönderecektir. +ABORT +ÝPTAL ET +Copy/Paste the temporary proxy parameters here +Geçici vekil sunucu parametrelerini buraya Kopyala/Yapýþtýr yapýnr +Cancel +Vazgeç +Unable to find Help files! +Yardým dosyalarý bulunamadý! +Unable to save parameters! +Parametreler kaydedilemedi! +Please drag only one folder at a time +Lütfen bir seferde yalnýz bir klasör sürükleyin +Please drag only folders, not files +Lütfen dosyalar yerine dizinleri sürükleyin +Please drag folders only +Lütfen sadece dizinleri sürükleyin +Select user-defined structure? +Kullanýcý tanýmlý yapý seçilsin mi?? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Lütfen kullanýcý tanýmlý kelimenin doðru olduðundan emin olun,\nyoksa dosya adlarý sahte olacaktýr! +Do you really want to use a user-defined structure? +Kullanýcý tanýmlý bir yapý kullanmak istediðinizden emin misiniz? +Too manu URLs, cannot handle so many links!! +Çok fazla adres var, bu kadar fazla adres tutulamayacaktýr!! +Not enough memory, fatal internal error.. +Yeterli hafýza yok, ölümcül iç hata.. +Unknown operation! +Bilinmeyen iþlem! +Add this URL?\r\n +Bu URL eklensin mi?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Uyarý: Ana süreç hala cevap vermedi, URL eklenemedi.. +Type/MIME associations +Tür/MIME iliþkileri +File types: +Dosya türleri: +MIME identity: +MIME kimliði: +Select or modify your file type(s) here +Buradan dosya türlerini seçin ve deðiþitirin +Select or modify your MIME type(s) here +Buradan MIME türlerini seçin ve deðiþitirin +Go up +Yukarý +Go down +Aþaðý +File download information +Dosya indirme bilgisi +Freeze Window +Pencereyi Dondur +More information: +Daha çok bilgi: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +WinHTTrack Website Copier'a Hoþgeldiniz!\n\nLütfen yeni bir projeye baþlamak\nveya yarým kalmýþ bir indirmeye devam etmek için\nÝLERÝ butonuna týklayýn\n +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +Uzantýlarý ile birlikte dosya adlarý:\nDosya adlarý içinde:\nBu dosya adý:\nDizin adlarý içinde:\nBu dizin adý:\nBu alan adýndaki baðlantýlar:\nAlan adlarýndaki baðlantýlar içinde:\nBu sunucudan baðlantýlar:\nBaðlantýlar içinde:\nBu baðlantý:\nTÜM BAÐLANTILAR +Show all\nHide debug\nHide infos\nHide debug and infos +Hepsini göster\nHata ayýklamayý gizle\nBilgileri gizle\nBilgileri ve hata ayýklamayý gizle +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Site yapýsý (öntanýmlý)\nweb/'de Html, web/resimler/ içinde resimler/diðer dosyalar\nweb/html içinde Html, /web/resimler içinde resimler/diðer dosyalar\nweb/ içinde Html, web/ içinde resimler/diðer dosyalar\nweb/ içindeki resimler, web/xxx içindeki resimler/diðer dosyalar, (Buradaki xxx dosya uzantýsýdýr)\nweb/html içinde Html, web/xxx içinde resimler\nwww.alanadi.xxx/ olmadan site yapýsý\nsite_adi içinde Html, site_adi/resimler/ içinde resimler/diðer dosyalar\nsite_adi/html içinde Html, site_adi/resimler içinde resimler/diðeer dosyalar\nsite_adi içinde Html, site_adi/ içinde resimler/diðer dosyalar\nsite_adi/ içinde html, site_adi/xxx içinde resimler/diðer dosyalar\nsite_adi/html içinde Html, site_adi/xxx içinde resimler/diðer dosyalar\nweb/ içindeki tüm dosyalar, (rastgele adlarla!)\nsite_adi/ içindeki tüm dosyalar (rastgele adlarla!)\nKullanýcý tanýmlý yapý.. +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Sadece tara\nHtml dosyalarýný al\nHtml türünde olmayan dosyalarý al\nTüm dosyalarý al (öntanýmlý)\nÖncelikli olarak html dosyalarýný al +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Ayný dizin içinde kal\nAlt dizinlere geçilebilir /öntanýmlý)\nÜst dizinlere geçilebilir\nHem alt hem üst dizinlere geçilebilir +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Ayný adreste kal (öntanýmlý)\nAyný alan adýnda kal\nAyný üst seviye adresinde kal\nWeb'deki her yere git +Never\nIf unknown (except /)\nIf unknown +Asla\nBilinmiyorsa (/ hariç)\nBilinmiyorsa +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Robot.txt kurallarý olmasýn\nrobot.txt kurallarý (sihirbaz hariç)\nrobot.txt kurallarýný uygula +normal\nextended\ndebug +normal\ngeniþletilmiþ\nhata ayýkla +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Web sitelerini indir\nWeb sitelerini + istekleri indir\nAyrý dosyalarý al\nSayfalardaki tüm siteleri indir (çoklu yansý)\nSayfalardaki baðlantýlarý test et (sýk kullanýlanlar testi)\n* Tamamlanmamýþ indirme iþlemine devam et\n* Ýndirilmiþ sayfayý güncelle +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +Benzer URI / Tam URL (öntanýmlý)\nTam URL / Tam URL\nTam URI / Tam URL\nOrjinal URL / Orjinal URL +Open Source offline browser +Açýk kaynak kodlu çevrimdýþý tarayýcý +Website Copier/Offline Browser. Copy remote websites to your computer. Free. +Web sitesi Kopyalýcý/Çevrimdýþý Tarayýcý. Web sitelerini bilgisayarýnýza kopyalayýn. Bedava. +httrack, winhttrack, webhttrack, offline browser +httrack, winhttrack, webhttrack, çevrimdýþý tarayýcý +URL list (.txt) +URL listesi (.txt) +Previous +Geri +Next +Ýleri +URLs +URLler +Warning +Uyarý +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. +Tarayýcýnýz þuanda javascript'i desteklemiyor. Daha iyi sonuçlar için, lütfen javascript destekli bir tarayýcý kullanýn. +Thank you +Teþekkürler +You can now close this window +Bu pencereyi artýk kapatabilirsiniz +Server terminated +Sunucu sonlandýrdý +A fatal error has occured during this mirror +Bu yansýlama iþlemi sýrasýnda ölümcül bir hata oluþtu diff --git a/lang/Ukrainian.txt b/lang/Ukrainian.txt new file mode 100755 index 0000000..82b0be9 --- /dev/null +++ b/lang/Ukrainian.txt @@ -0,0 +1,920 @@ +LANGUAGE_NAME +Ukrainian +LANGUAGE_FILE +Ukrainian +LANGUAGE_ISO +ua +LANGUAGE_AUTHOR +Andrij Shevchuk (http://programy.com.ua, http://vic-info.com.ua) \r\n +LANGUAGE_CHARSET +ISO-8859-5 +OK +ÎÊ +Cancel +Ñêàñóâàòè +Exit +Âèõ³ä +Close +Çàêðèòè +Cancel changes +Ñêàñóâàòè çì³íè +Click to confirm +ϳäòâåðäèòè +Click to get help! +Îäåðæàòè äîâ³äêó +Click to return to previous screen +Ïîâåðíóòèñÿ íàçàä +Click to go to next screen +Ïåðåéòè äî íàñòóïíîãî åêðàíó +Hide password +Ñõîâàòè ïàðîëü +Save project +Çáåðåãòè ïðîåêò +Close current project? +Çàêðèòè ïîòî÷íèé ïðîåêò? +Delete this project? +Âèäàëèòè öåé ïðîåêò? +Delete empty project %s? +Âèäàëèòè ïîðîæí³é ïðîåêò %s? +Action not yet implemented +Ïîêè íå ðåàë³çîâàíî +Error deleting this project +Ïîìèëêà âèäàëåííÿ ïðîåêòó +Select a rule for the filter +Âèáðàòè òèï ô³ëüòðà +Enter keywords for the filter +Ââåä³òü çíà÷åííÿ óìîâ ô³ëüòðà +Cancel +Ñêàñóâàòè +Add this rule +Äîäàòè öþ óìîâó +Please enter one or several keyword(s) for the rule +Ââåä³òü çíà÷åííÿ óìîâ ô³ëüòðà +Add Scan Rule +Äîäàòè ô³ëüòð +Criterion +Âèáðàòè òèï: +String +Ââåñòè çíà÷åííÿ: +Add +Äîäàòè +Scan Rules +Ô³ëüòðè +Use wildcards to exclude or include URLs or links.\nYou can put several scan strings on the same line.\nUse spaces as separators.\n\nExample: +*.zip -www.*.com -www.*.edu/cgi-bin/*.cgi +Âèêîðèñòîâóþ÷è ìàñêè âè ìîæåòå âèêëþ÷èòè/óêëþ÷èòè â³äðàçó ê³ëüêà àäðåñ\nÿê ðîçä³ëüíèê ô³ëüòð³â âèêîðèñòîâóéòå êîìè ÷è ïðîá³ëè.\níàïðèêëàä: +*.zip -www.*.com,-www.*.edu/cgi-bin/*.cgi +Exclude links +Âèêëþ÷èòè... +Include link(s) +Óêëþ÷èòè... +Tip: To have ALL GIF files included, use something like +www.someweb.com/*.gif. \n(+*.gif / -*.gif will include/exclude ALL GIFs from ALL sites) +Ïîðàäà: ßêùî âè õî÷åòå ñêà÷àòè âñ³ gif-ôàéëè, âèêîðèñòîâóéòå, íàïðèêëàä, òàêèé ô³ëüòð +www.someweb.com/*.gif. \n(+*.gif / -*.gif äîçâîëÿº/çàáîðîíÿº äëÿ çàâàíòàæåííÿ ÂѲ gif-ôàéëè íà ÂÑ²Õ ñàéòàõ) +Save prefs +Çáåðåãòè íàñòðîþâàííÿ +Matching links will be excluded: +˳íêè, ùî çàäîâîëüíÿþòü ö³é óìîâ³ áóäóòü âèêëþ÷åí³: +Matching links will be included: +˳íêè, ùî çàäîâîëüíÿþòü ö³é óìîâ³ áóäóòü âêëþ÷åí³: +Example: +Ïðèêëàä: +gif\r\nWill match all GIF files +gif\r\nçíàéäå óñ³ gif (÷è GIF) ôàéëè +blue\r\nWill find all files with a matching 'blue' sub-string such as 'bluesky-small.jpeg' +blue\r\nçíàéäåàéëè, ùî ì³ñòÿòü â ³ìåí³ ïîäñòðîêó 'blue', íàïðèêëàä 'bluesky-small.jpeg' +bigfile.mov\r\nWill match the file 'bigfile.mov', but not 'bigfile2.mov' +bigfile.mov\r\nçíàéäå'bigfile.mov', àëå, ó òåæ ÷àñ, ïðîïóñòèòü ôàéë 'bigfile2.mov' +cgi\r\nWill find links with folder name matching sub-string 'cgi' such as /cgi-bin/somecgi.cgi +cgi\r\nçíàéäå àäðåñè, ùî ì³ñòÿòü êàòàëîãè ç ïîäñòðîêîé 'cgi', òàê³ ÿê /cgi-bin/somecgi.cgi +cgi-bin\r\nWill find links with folder name matching whole 'cgi-bin' string (but not cgi-bin-2, for example) +cgi-bin\r\nçíàéäå àäðåñè, ùî ì³ñòÿòü êàòàëîã 'cgi-bin' (àëå íå cgi-bin-2, íàïðèêëàä) +someweb.com\r\nWill find links with matching sub-string such as www.someweb.com, private.someweb.com etc. +someweb.com\r\nçíàéäå òàê³ ë³íêè, ÿê www.someweb.com, private.someweb.com ³ ò.ï.. +someweb\r\nWill find links with matching folder sub-string such as www.someweb.com, www.someweb.edu, private.someweb.otherweb.com etc. +someweb\r\nçíàéäå àäðåñè òèïó www.someweb.com, www.someweb.edu, private.someweb.otherweb.com ³ ò.ä.\r\n +www.someweb.com\r\nWill find links matching whole 'www.someweb.com' sub-string (but not links such as private.someweb.com/..) +www.someweb.com\r\nçíàéäå àäðåñè, òàê³ ÿê www.someweb.com/... (àëå íå òàê³, ÿê private.someweb.com/..) +someweb\r\nWill find any links with matching sub-string such as www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html etc. +someweb\r\nçíàéäå óñ³ ë³íêè òàê³, ÿê www.someweb.com/.., www.test.abc/fromsomeweb/index.html, www.test.abc/test/someweb.html ³ ò.ï. +www.test.com/test/someweb.html\r\nWill only find the 'www.test.com/test/someweb.html' file. Note that you have to type the complete path (URL + site path) +www.test.com/test/someweb.html\r\nçíàéäå ò³ëüêè www.test.com/test/someweb.html. Çâàæòå, íåîáõ³äíî âêàçàòè ïîâíó àäðåñó ðåñóðñó - õîñò (www.xxx.yyy) ³ øëÿõ (/test/someweb.html) +All links will match +Óñ³ ë³íêè ïðèïóñòèì³ +Add exclusion filter +Äîäàòè ô³ëüòð, ùî âèêëþ÷ຠ+Add inclusion filter +Äîäàòè ô³ëüòð, ùî âêëþ÷ຠ+Existing filters +Äîäàòêîâ³ ô³ëüòðè +Cancel changes +Ñêàñóâàòè çì³íè +Save current preferences as default values +Çáåðåãòè ïîòî÷í³ íàñòðîþâàííÿ ÿê çíà÷åííÿ çà çàìîâ÷óâàííÿì +Click to confirm +ϳäòâåðäèòè +No log files in %s! +³äñóòí³ ëîã ôàéëè â %s! +No 'index.html' file in %s! +Îòñóòñòâóåò ôàéë index.html ó %s! +Click to quit WinHTTrack Website Copier +Âèéòè ç ïðîãðàìè WinHTTrack Website Copier +View log files +Ïåðåãëÿä ëîã ôàéë³â +Browse HTML start page +³äîáðàçèòè ñòàðòîâó html ñòîð³íêó +End of mirror +Ñòâîðåííÿ äçåðêàëà çàâåðøåíå +View log files +Ïåðåãëÿä log ôàéë³â +Browse Mirrored Website +Ïåðåãëÿä äçåðêàëà +New project... +Íîâèé ïðîåêò... +View error and warning reports +Ïåðåãëÿä çâ³òó ïðî ïîìèëêè ³ ïîïåðåäæåííÿ +View report +Ïåðåãëÿä çâ³òó +Close the log file window +Çàêðèòè â³êíî ëîãó +Info type: +Òèï ³íôîðìàö³¿ +Errors +Ïîìèëêè +Infos +²íôîðìàö³ÿ +Find +Çíàéòè +Find a word +Çíàéòè ñëîâî +Info log file +²íôî ëîã-ôàéë +Warning/Errors log file +Ëîã ôàéë ïîìèëîê/ïîïåðåäæåíü +Unable to initialize the OLE system +Íåìîæëèâî ³í³ö³àë³çóâàòè OLE +WinHTTrack could not find any interrupted download file cache in the specified folder! +Ó çàçíà÷åíîìó êàòàëîç³ WinHTTrack íå ìîæå çíàéòè æîäíîãî êåøó ïåðåðâàíîãî çàâàíòàæåííÿ! +Could not connect to provider +Íå ìîæëèâî ç'ºäíàòèñÿ ç ïðîâàéäåðîì +receive +îäåðæàííÿ +request +çàïèò +connect +ç'ºäíàííÿ +search +ïîøóê +ready +ãîòîâèé +error +ïîìèëêà +Receiving files.. +Îäåðæóºìî ôàéëè +Parsing HTML file.. +Ðîçá³ð HTML ôàéëó... +Purging files.. +Âèäàëÿºìî ôàéëè... +Loading cache in progress.. + +Parsing HTML file (testing links).. +Àíàë³çóºìî HTML ôàéë (ïåðåâ³ðÿºìî ë³íêè)... +Pause - Toggle [Mirror]/[Pause download] to resume operation +Çóïèíåíî (äëÿ ïðîäîâæåííÿ Âèáåð³òü [Äçåðêàëî]/[Ïðèçóïèíèòè çàâàíòàæåííÿ] ) +Finishing pending transfers - Select [Cancel] to stop now! +Çàâåðøóþòüñÿ â³äêëàäåí³ çàâàíòàæåííÿ - ùîá ïåðåðâàòè, íàòèñí³òü Ñêàñóâàòè! +scanning +ñêàíóºìî +Waiting for scheduled time.. +Î÷³êóºìî çàäàíèé ÷àñ ïî÷àòêó +Connecting to provider +Ç'ºäíóºìîñÿ ç ïðîâàéäåðîì +[%d seconds] to go before start of operation +Çàëèøèëîñü [%d ñåêóíä] äî ïî÷àòêó +Site mirroring in progress [%s, %s bytes] +Ñòâîðþºòüñÿ äçåðêàëî [%s, %s áàéò] +Site mirroring finished! +Ñòâîðåííÿ äçåðêàëà çàâåðøåíå! +A problem occured during the mirroring operation\n +Ó ïðîöåñ³ çàâàíòàæåííÿ â³äáóëàñÿ ïîìèëêà\n +\nDuring:\n +Ó ïëèí³:\n +\nSee the log file if necessary.\n\nClick FINISH to quit WinHTTrack Website Copier.\n\nThanks for using WinHTTrack! +Ó ðàç³ ïîòðåáè, äèâ³òüñÿ ëîã ôàéë.\n\näëÿ âèõîäó ç WinHTTrack íàòèñí³òü êíîïêó OK.\n\näÿêóºìî çà âèêîðèñòàííÿ WinHTTrack! +Mirroring operation complete.\nClick Exit to quit WinHTTrack.\nSee log file(s) if necessary to ensure that everything is OK.\n\nThanks for using WinHTTrack! +Ñòâîðåííÿ äçåðêàëà çàâåðøåíå.\näëÿ âèõîäó ç ïðîãðàìè íàòèñí³òü êíîïêó OK.\näëÿ ïåðåâ³ðêè óñï³øíîñò³ çàâàíòàæåííÿ ïîäèâèòåñÿ ëîã ôàéë(è).\n\näÿêóºìî çà âèêîðèñòàííÿ WinHTTrack! +* * MIRROR ABORTED! * *\r\nThe current temporary cache is required for any update operation and only contains data downloaded during the present aborted session.\r\nThe former cache might contain more complete information; if you do not want to lose that information, you have to restore it and delete the current cache.\r\n[Note: This can easily be done here by erasing the hts-cache/new.* files]\r\n\r\nDo you think the former cache might contain more complete information, and do you want to restore it? +* * ÇÀÂÀÍÒÀÆÅÍÍß ÏÅÐÅÐÂÀÍÅ! * *\r\nòèì÷àñîâèé êåø, ñòâîðåíèé ï³ä ÷àñ ïîòî÷íî¿ ñåñ³¿, ì³ñòèòü äàí³, çàâàíòàæåí³ ò³ëüêè ï³ä ÷àñ äàíî¿ ñåñ³¿ ³ áóäå ïîòð³áíèé ò³ëüêè ó âèïàäêó ïîíîâëåííÿ çàâàíòàæåííÿ.\r\nàëå, ìîæå ì³ñòèòè á³ëüø ïîâíó ³íôîðìàö³þ. ßêùî âè íå õî÷åòå âòðàòèòè ö³ äàí³, âàì ïîòð³áíî âèäàëèòè ïîòî÷íèé êåø ³ â³äíîâèòè ïîïåðåäí³é.\r\n(Öå ìîæíà ëåãêî çðîáèòè ïðÿìî òóò, âèäàëèâøè ôàéëè hts-cache/new.]\r\n\r\nÂè ââàæàºòå, ùî ïîïåðåäí³é êåø ìîæå ì³ñòèòè á³ëüø ïîâíó ³íôîðìàö³þ, ³ ÷è õî÷åòå âè â³äíîâèòè éîãî? +* * MIRROR ERROR! * *\r\nHTTrack has detected that the current mirror is empty. If it was an update, the previous mirror has been restored.\r\nReason: the first page(s) either could not be found, or a connection problem occured.\r\n=> Ensure that the website still exists, and/or check your proxy settings! <= +* * ÏÎÌÈËÊÀ! * *\r\nöå äçåðêàëî - ïîðîæíº. ßêùî öå áóëî â³äíîâëåííÿ, âåðñ³ÿ äçåðêàëà â³äíîâëåíà.\r\nïðè÷èíà: ïåðøà ñòîð³íêà(è) ÷è íå çíàéäåíà, ÷è áóëè ïðîáëåìè ç ç'ºäíàííÿì.\r\n=> Ïåðåêîíàéòåñÿ, ùî âåáñàéò ùå ³ñíóº, ³/÷è ïåðåâ³ðòå óñòàíîâêè ïðîêñ³-ñåðâåðà! <= +\n\nTip: Click [View log file] to see warning or error messages +\nïîäñêàçêà:Äëÿ ïåðåãëÿäó ïîâ³äîìëåíü ïðî ïîìèëêè ³ ïîïåðåäæåíü íàòèñí³òü [Ïåðåãëÿä ëîã ôàéëó] +Error deleting a hts-cache/new.* file, please do it manually +Ïîìèëêà âèäàëåííÿ ôàéëó hts-cache/new.* , áóäü ëàñêà, âèäàëèòå éîãî ðó÷êàìè.\r\n +Do you really want to quit WinHTTrack Website Copier? +Âè ä³éñíî õî÷åòå âèéòè ç WinHTTrack? +- Mirroring Mode -\n\nEnter address(es) in URL box +- Ìîäà çåðêàë³çàöè¿ -\n\nââåä³òü àäðåñó(è) ó ïîëå URL. +- Interactive Wizard Mode (questions) -\n\nEnter address(es) in URL box +- ²íòåðàêòèâíà ìîäà - Ìàéñòåð ñòâîðåííÿ äçåðêàëà (áóäóòü çàäàí³ ïèòàííÿ) -\n\nââåä³òü àäðåñó(è) ó ïîëå URL. +- File Download Mode -\n\nEnter file address(es) in URL box +- Ìîäà çàâàíòàæåííÿ îêðåìèõ ôàéë³â -\n\nââåä³òü àäðåñó(è) ôàéë³â ó ïîëå URL. +- Link Testing Mode -\n\nEnter Web address(es) with links to test in URL box +- Ìîäà òåñòóâàííÿ ë³íê³â -\n\nââåä³òü àäðåñó(è) ñòîð³íîê, ùî ì³ñòÿòü URL'è, ùî âè õî÷åòå ïðîòåñòóâàòè. +- Update Mode -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Ìîäà â³äíîâëåííÿ -\n\nïåðåâ³ðòå àäðåñó(è) ó ïîë³ URL, ïîò³ì íàòèñí³òü êíîïêó 'ÄÀ˲' ³ ïåðåâ³ðòå ïàðàìåòðè. +- Resume Mode (Interrupted Operation) -\n\nVerify address(es) in URL box, check parameters if necessary then click on 'NEXT' button +- Ìîäà ïðîäîâæåííÿ ðàí³øå ïåðåðâàíîãî ñòâîðåííÿ äçåðêàëà -\n\nïåðåâ³ðòå àäðåñó(è) ó ïîëå URL, ïîò³ì íàòèñí³òü êíîïêó 'ÄÀ˲' ³ ïåðåâ³ðòå ïàðàìåòðè. +Log files Path +Øëÿõ äî ëîã ôàéë³â +Path +Øëÿõ +- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror +Ìîäà ñòâîðåííÿ äçåðêàë ç³ ñïèñêó-\n\nâ ïîëå URL çàïîâí³òü àäðåñè ñòîð³íîê, ùî ì³ñòÿòü URL'è, ùî âè õî÷åòå äçåðêàëþâàòè. +New project / Import? +Íîâèé ïðîåêò / ³ìïîðòóâàòè? +Choose criterion +Âèáåð³òü ä³þ +Maximum link scanning depth +Ìàêñ.ãëèáèíà ñêàíóâàííÿ +Enter address(es) here +Ââåä³òü àäðåñè +Define additional filtering rules +Çàäàòè äîäàòêîâ³ ô³ëüòðè +Proxy Name (if needed) +Ïðîêñ³, ÿêùî ïîòð³áíî +Proxy Port +Íîìåð ïîðòó ïðîêñ³-ñåðâåðà +Define proxy settings +Çàäàéòå óñòàíîâêè ïðîêñ³ +Use standard HTTP proxy as FTP proxy +Âèêîðèñòîâóâàòè HTTP ïðîêñ³ ÿê FTP ïðîêñ³ +Path +Øëÿõ +Select Path +Âèáåð³òü øëÿõ +Path +Øëÿõ +Select Path +Âèáåð³òü øëÿõ +Quit WinHTTrack Website Copier +Âèéòè ç WinHTTrack Website Copier +About WinHTTrack +Ïðî ïðîãðàìó WinHTTrack +Save current preferences as default values +Çáåðåãòè ïîòî÷í³ óñòàíîâêè ÿê ïàðàìåòðè çà çàìîâ÷óâàííÿì +Click to continue +Ïðîäîâæèòè +Click to define options +Çàäàòè ïàðàìåòðè çàâàíòàæåííÿ +Click to add a URL +Íàòèñí³òü ùîá äîäàòè URL +Load URL(s) from text file +Çàâàíòàæèòè URL(è) ç òåêñòîâîãî ôàéëó +WinHTTrack preferences (*.opt)|*.opt|| +Íàñòðîþâàííÿ WinHTTrack (*.opt)|*.opt|| +Address List text file (*.txt)|*.txt|| +Òåêñòîâèé ôàéë ñïèñêó àäðåñ(*.txt)|*.txt|| +File not found! +Ôàéë íå çíàéäåíèé! +Do you really want to change the project name/path? +Âè ä³éñíî õî÷åòå çì³íèòè íàçâó ïðîåêòó/øëÿõ? +Load user-default options? +Çàâàíòàæèòè óñòàíîâêè çà çàìîâ÷óâàííÿì? +Save user-default options? +Çáåðåãòè íàñòðîþâàííÿ? +Reset all default options? +Ïåðåóñòàíîâèòè âñ³ ïàðàìåòðè çà çàìîâ÷óâàííÿì? +Welcome to WinHTTrack! +WinHTTrack â³òຠâàñ! +Action: +Òèï ðîáîòè: +Max Depth +Ìàêñ. ãëèáèíà: +Maximum external depth: +Ìàêñèìàëüíà ãëèáèíà çîâí³øí³õ ñàéò³â: +Filters (refuse/accept links) : +Ô³ëüòðè (óêëþ÷èòè/âèêëþ÷èòè ë³íêè) +Paths +Øëÿõó +Save prefs +Çáåðåãòè íàñòðîþâàííÿ +Define.. +Çàäàòè... +Set options.. +Çàäàòè ïàðàìåòðè... +Preferences and mirror options: +Íàñòðîþâàííÿ ïàðàìåòð³â çàâàíòàæåííÿ:: +Project name +Íàçâà ïðîåêòó +Add a URL... +Äîäàòè URL ... +Web Addresses: (URL) +Âåá àäðåñè: (URL) +Stop WinHTTrack? +Ïåðåðâàòè WinHTTrack? +No log files in %s! +Íåìຠëîã ôàéë³â ó %s! +Pause Download? +Ïðèçóïèíèòè çàâàíòàæåííÿ? +Stop the mirroring operation +Ïåðåðâàòè çàâàíòàæåííÿ +Minimize to System Tray +Ñõîâàòè â ñèñòåìíèé òðåé +Click to skip a link or stop parsing +Ïðîïóñòèòè ë³íê ÷è ïåðåðâàòè àíàë³ç ôàéëó +Click to skip a link +Ïðîïóñòèòè ë³íê +Bytes saved +Çáåðåæåíî áàéò: +Links scanned +Ïðîñêàíîâàíî ë³íê³â: +Time: +×àñ: +Connections: +Ç'ºäíàíü: +Running: +Ñòàí: +Hide +Ñõîâàòè +Transfer rate +Øâèäê³ñòü çàâàíòàæåííÿ: +SKIP +ÏÐÎÏÓÑÒÈÒÈ +Information +²íôîðìàö³ÿ +Files written: +Çáåðåæåíî ôàéë³â: +Files updated: +Îáíîâëåíî ôàéë³â: +Errors: +Ïîìèëîê: +In progress: +Ó ïðîöåñ³: +Follow external links +Çàâàíòàæèòè ôàéëè ç çîâí³øí³õ ë³íê³â +Test all links in pages +Ïåðåâ³ðÿòè óñ³ ôàéëè íà ñòîð³íêàõ +Try to ferret out all links +Íàìàãàòèñÿ âèçíà÷èòè âñ³ ë³íêè +Download HTML files first (faster) +Çàâàíòàæèòè ñïî÷àòêó HTML-ôàéëè (øâèäøå) +Choose local site structure +Âèáðàòè ëîêàëüíó ñòðóêòóðó ñàéòó +Set user-defined structure on disk +Óñòàíîâèòè çàäàíó ëîêàëüíó ñòðóêòóðó ñàéòó +Use a cache for updates and retries +Âèêîðèñòîâóâàòè êåø äëÿ â³äíîâëåííÿ ³ äîêà÷êè +Do not update zero size or user-erased files +Íå êà÷àòè ôàéëè, ùî áóëè îäèí ðàç çàâàíòàæåí³, íàâ³òü ÿêùî âîíè íóëüîâî¿ äîâæèíè ÷è âèëó÷åí³ +Create a Start Page +Ñòâîðèòè ïî÷àòêîâó ñòîð³íêó +Create a word database of all html pages +Ñòîâðèòè áàçó äàíèõ ñë³â ç³ âñ³õ html ñòîð³íîê +Create error logging and report files +Ñòâîðèòè ëîã ôàéëè ç ³íôîðìàö³ºþ ïðî ðîáîòó ³ ïîìèëêè +Generate DOS 8-3 filenames ONLY +Ñòâîðþâàòè ôàéëè â DOS-ôîðìàò³ 8.3 +Generate ISO9660 filenames ONLY for CDROM medias +Ãåíåðóâàòè ³ìåíà ôàéë³â â ôîðìàò³ ISO9660 äëÿ çàïèñó íà CDROM +Do not create HTML error pages +Generate ISO9660 filenames ONLY for CDROM medias +Select file types to be saved to disk +Âèáåð³òü òèïè ôàéë³â, ùî çáåð³ãàþòüñÿ íà äèñêó +Select parsing direction +Âèáåð³òü íàïðÿìîê ïðîñóâàííÿ ïî ñàéòó +Select global parsing direction +Âèáåð³òü ãëîáàëüíèé íàïðÿìîê ïðîñóâàííÿ ïî ñàéòó +Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones) +Âèçíà÷òå ïðàâèëà äëÿ çîâí³øí³õ òà äëÿ âíóòð³øí³õ ë³íê³â +Max simultaneous connections +Ìàêñèìàëüíå ÷èñëî ç'ºäíàíü +File timeout +Ìàêñèìàëüíèé ÷àñ íå àêòèâíîñò³ çàâàíòàæåííÿ +Cancel all links from host if timeout occurs +Ó âèïàäêó ïåðåâèùåííÿ ÷àñó ÷åêàííÿ ñêàñóâàòè âñ³ ë³íêè ç äàíîãî õîñòà +Minimum admissible transfer rate +̳í³ìàëüíî ïðèïóñòèìà øâèäê³ñòü çàâàíòàæåííÿ +Cancel all links from host if too slow +Ó âèïàäêó, ÿêùî õîñò çàíàäòî ïîâ³ëüíèé, ñêàñóâàòè âñ³ ë³íêè ç äàíîãî õîñòà +Maximum number of retries on non-fatal errors +Ìàêñèìàëüíå ÷èñëî ïîâòîðíèõ ñïðîá, ó âèïàäêó íå ôàòàëüíèõ ïîìèëîê. +Maximum size for any single HTML file +Ìàêñèìàëüíèé ðîçì³ð áóäü-ÿêîãî html-ôàéëó +Maximum size for any single non-HTML file +Ìàêñèìàëüíèé ðîçì³ð áóäü-ÿêîãî íå HTML-ôàéëó +Maximum amount of bytes to retrieve from the Web +Ìàêñèìàëüíà ê³ëüê³ñòü áàéò, ïðèïóñòèìèõ äëÿ çàâàíòàæåííÿ +Make a pause after downloading this amount of bytes +ϳñëÿ çàâàíòàæåííÿ çàçíà÷åíîãî ÷èñëà áàéò³â, çðîáèòè ïàóçó +Maximum duration time for the mirroring operation +Ìàêñ. òðèâàë³ñòü äçåðêàë³çàö³¿ +Maximum transfer rate +Ìàêñ. øâèäê³ñòü çàâàíòàæåííÿ +Maximum connections/seconds (avoid server overload) +Ìàêñ. ê³ëüê³ñòü ç'ºäíàíü ó ñåêóíäó (íå ïåðåâàíòàæóâàòè ñåðâåð) +Maximum number of links that can be tested (not saved!) +Ìàêñèìàëüíå ÷èñëî ë³íê³â, ùî ìîæíà òåñòóâàòè (îïö³ÿ íå çàïèñóºòüñÿ!) +Browser identity +²äåíòèô³êàö³ÿ áðîóçåðà (ðÿäîê User-Agent) +Comment to be placed in each HTML file +Êîìåíòàð, ðîçòàøîâóâàíèé ó êîæíîìó HTML ôàéë³ +Back to starting page +Íàçàä íà ïî÷àòêîâó ñòîð³íêó +Save current preferences as default values +Çáåðåãòè íàñòðîþâàííÿ ÿê çíà÷åííÿ çà çàìîâ÷óâàííÿì +Click to continue +Ïðîäîâæèòè +Click to cancel changes +Ñêàñóâàòè çì³íè +Follow local robots rules on sites +ϳäêîðÿòèñÿ ïðàâèëàì äëÿ ðîáîò³â, óñòàíîâëþâàíèì ñàéòàìè +Links to non-localised external pages will produce error pages +Ïî ïîñèëàííÿõ íà çîâí³øí³ ñòîð³íêè (íå çàâàíòàæåí³) áóäå ïåðåõ³ä äî ñòîð³íîê ïîìèëîê +Do not erase obsolete files after update +Íå âèäàëÿòè ñòàð³ ôàéëè ï³ñëÿ ïðîöåäóðè â³äíîâëåííÿ äçåðêàëà +Accept cookies? +Äîçâîëèòè cookies? +Check document type when unknown? +Ïåðåâ³ðÿòè òèï äîêóìåíòà, ó âèïàäêó êîëè â³í íå â³äîìèé? +Parse java applets to retrieve included files that must be downloaded? +Àíàë³çóâàòè java-àïïëåòè ç ìåòîþ âèçíà÷åííÿ âêëþ÷åííÿ ôàéë³â? +Store all files in cache instead of HTML only +Ïðèìóñîâî çáåð³ãàòè óñ³ ôàéëè â êåø³, à íå ò³ëüêè ôàéëè HTML +Log file type (if generated) +Òèï log ôàéëó +Maximum mirroring depth from root address +Ìàêñ. ãëèáèíà ñòâîðåííÿ äçåðêàëà â³ä ïî÷àòêîâî¿ àäðåñè +Maximum mirroring depth for external/forbidden addresses (0, that is, none, is the default) +Ìàêñèìàëüíà ãëèáèíà çàâàíòàæåííÿ äëÿ çîâí³øí³õ/çàáîðîíåíèõ àäðåñ (0, òîáòî, íåìຠîáìåæåíü, öå çíà÷åííÿ ïî-çàìîâ÷óâàííþ) +Create a debugging file +Ñòâîðèòè ôàéë ç ³íôîðìàö³ºþ â³äëàãîäæåííÿ +Use non-standard requests to get round some server bugs +Ñïðîáóâàòè îá³éòè ïîìèëêè äåÿêèõ ñåðâåð³â, âèêîðèñòîâóþ÷è íå ñòàíäàðòí³ çàïèòè +Use old HTTP/1.0 requests (limits engine power!) +Âèêîðèñòîâóâàòè ñòàðèé ïðîòîêîë HTTP/1.0 (îáìåæèòü ìîæëèâîñò³ ïðîãðàìè!) +Attempt to limit retransfers through several tricks (file size test..) +Ñïðîáà îáìåæèòè ïåðåêà÷óâàííÿ âèêîðèñòîâóþ÷è äåÿê³ ïðèéîìè (òåñò íà ðîçì³ð ôàéëó..) +Write external links without login/password +Çáåð³ãàòè çîâí³øí³ ë³íêè áåç ëîã³íà/ïàðîëþ +Write internal links without query string +Çáåð³ãàòè âíóòð³øí³ ë³íêè îáð³çàíî (äî çíàêó ?) +Get non-HTML files related to a link, eg external .ZIP or pictures +Êà÷àòè íå-html ôàéëè ïîáëèçó ïîñèëàííÿ (íàïð.: çîâí³øí³ .ZIP ÷è ãðàô. ôàéëè) +Test all links (even forbidden ones) +Ïåðåâ³ðÿòè âñ³ ë³íêè (íàâ³òü çàáîðîíåí³ äî çàâàíòàæåííÿ) +Try to catch all URLs (even in unknown tags/code) +Íàìàãàòèñÿ âèçíà÷àòè âñ³ URL'è (íàâ³òü ó íåï³çíàíèõ òåãàõ/ñêð³ïòàõ) +Get HTML files first! +Îäåðæàòè ñïî÷àòêó HTML ôàéëè! +Structure type (how links are saved) +Òèï ëîêàëüíî¿ ñòðóêòóðè äçåðêàëà (ñïîñ³á çáåðåæåííÿ ôàéë³â) +Use a cache for updates +Âèêîðèñòîâóâàòè êåø äëÿ â³äíîâëåííÿ +Do not re-download locally erased files +Íå êà÷àòè çàíîâî ëîêàëüíî âèëó÷åí³ ôàéëè +Make an index +Ñòâîðèòè ³íäåêñ +Make a word database +Ñòâîðèòè áàçó äàíèõ ñë³â +Log files +Log ôàéëè +DOS names (8+3) +DOS ³ìåíà (8+3) +ISO9660 names (CDROM) +ISO9660 ³ìåíà (CDROM) +No error pages +Áåç ñòîð³íîê ïîìèëîê +Primary Scan Rule +Îñíîâíèé ô³ëüòð +Travel mode +Ìîäà ñêàíóâàííÿ +Global travel mode +Ãëîáàëüíà ìîäà ñêàíóâàííÿ +These options should be modified only exceptionally +ßê ïðàâèëî, ö³ íàñòðîþâàííÿ çì³íþâàòè íå ñë³ä +Activate Debugging Mode (winhttrack.log) +Óêëþ÷èòè ìîäó íàëàãîäæåííÿ (winhttrack.log) +Rewrite links: internal / external +Ïåðåçàïèñ ë³íê³â: âíóòð³ùí³/çîâí³øí³ +Flow control +Êîíòðîëü íàïðÿìêó ñêàíóâàííÿ +Limits +Îáìåæåííÿ +Identity +²äåíòèô³êàòîð +HTML footer +Íèæí³é HTML êîëîíòèòóë +N# connections +N# ç'ºäíàíü +Abandon host if error +Ïðèïèíèòè çàâàíòàæåííÿ ç õîñòà, ó âèïàäêó ïîìèëêè +Minimum transfer rate (B/s) +̳í³ìàëüíà øâèäê³ñòü çàâàíòàæåííÿ (B/s) +Abandon host if too slow +Ïðèïèíèòè çàâàíòàæåííÿ ç õîñòà, ÿêùî âîíà çàíàäòî ïîâ³ëüíà +Configure +Íàñòðî¿òè +Use proxy for ftp transfers +Âèêîðèñòîâóâàòè ïðîêñ³ äëÿ ftp-çàâàíòàæåííÿ +TimeOut(s) +Òàéì-àóò +Persistent connections (Keep-Alive) + +Reduce connection time and type lookup time using persistent connections + +Retries +Ïîâòîðí³ ñïðîáè +Size limit +Îáìåæåííÿ ïî ðîçì³ð³ +Max size of any HTML file (B) +Ìàêñ. ðîçì³ð html-ôàéëó: +Max size of any non-HTML file +Ìàêñ. ðîçì³ð íå-html: +Max site size +Ìàêñ. ðîçì³ð ñàéòó +Max time +Ìàêñ. ÷àñ çàâàíòàæåííÿ +Save prefs +Çáåðåãòè íàñòðîþâàííÿ +Max transfer rate +Ìàêñ. øâèäê³ñòü çàâàíòàæåííÿ +Follow robots.txt +Êîðèñòóâàòèñü ïðàâèëàìè ç robots.txt +No external pages +Áåç çîâí³øí³õ ïîñèëàíü +Do not purge old files +Íå âèäàëÿòè ñòàð³ ôàéëè +Accept cookies +Äîçâîëèòè cookies +Check document type +Ïåðåâ³ðÿòè òèï äîêóìåíòà +Parse java files +Àíàë³ç java ôàéë³â +Store ALL files in cache +Çáåð³ãàòè ÓѲ ôàéëè â êåøå +Tolerant requests (for servers) +Òîëåðàíòí³ çàïèòè (äî ñåðâåð³â) +Update hack (limit re-transfers) +Update hack (îáìåæåííÿ ïîâòîðíèõ çàâàíòàæåíü) +Force old HTTP/1.0 requests (no 1.1) +Âèêîðèñòîâóâàòè ñòàðèé ïðîòîêîë HTTP/1.0 (íå 1.1) +Max connections / seconds +Ìàêñ. ÷èñëî ç'ºäíàíü/ñåê. +Maximum number of links +Ìàêñèìàëüíå ÷èñëî ë³íê³â +Pause after downloading.. +Ïàóçà ï³ñëÿ çàâàíòàæåííÿ... +Hide passwords +Ñõîâàòè ïàðîë³ +Hide query strings +Ñõîâàòè çàïèòàëüíó ÷àñòèíó ðÿäêà (óñå, ùî ï³ñëÿ çíàêà ?) +Links +˳íêè +Build +Ñòðóêòóðà +Experts Only +Åêñïåðò +Flow Control +Êåðóâàííÿ çàâàíòàæåííÿì +Limits +Îáìåæåííÿ +Browser ID +²äåíòèô³êàö³ÿ +Scan Rules +Ô³ëüòðè +Spider +Êà÷àëêà +Log, Index, Cache +Ëîã, ²íäåêñ. Êåø +Proxy +Ïðîêñ³ +MIME Types + +Do you really want to quit WinHTTrack Website Copier? +Âè ä³éñíî õî÷åòå çàâåðøèòè ðîáîòó ç ïðîãðàìîþ? +Do not connect to a provider (already connected) +Íå ç'ºäíóâàòèñÿ ç ïðîâàéäåðîì (ç'ºäíàííÿ óæå âñòàíîâëåíå) +Do not use remote access connection +Íå âèêîðèñòîâóâàòè ï³ä'ºäíàííü â³ääàëåíîãî äîñòóïó +Schedule the mirroring operation +Çàâàíòàæåííÿ çà ðîçêëàäîì +Quit WinHTTrack Website Copier +Âèéòè ç WinHTTrack Website Copier +Back to starting page +Íàçàä äî ïî÷àòêîâî¿ ñòîð³íêè +Click to start! +Ïî÷àòè! +No saved password for this connection! +Íåìຠçáåðåæåíîãî ïàðîëÿ äëÿ öüîãî ç'ºäíàííÿ +Can not get remote connection settings +Íå ìîæó îäåðæàòè óñòàíîâêè âèëó÷åíîãî ç'ºäíàííÿ +Select a connection provider +Âèáåð³òü ïðîâàéäåðà, äî ÿêîãî óñòàíîâèòè ç'ºäíàííÿ +Start +Ïî÷àòè +Please adjust connection parameters if necessary,\nthen press FINISH to launch the mirroring operation. +Âè ìîæåòå ïî÷àòè çàâàíòàæåííÿ, íàòèñíóâøè êíîïêó ÑÒÀÐÒ, ÷è ìîæåòå çàäàòè äîäàòêîâ³ ïàðàìåòðè ç'ºäíàííÿ +Save settings only, do not launch download now. +Ò³ëüêè çáåðåãòè óñòàíîâêè, íå ïî÷èíàòè çàâàíòàæåííÿ. +On hold +Çàòðèìêà +Transfer scheduled for: (hh/mm/ss) +×åêàºìî äî: (hh/mm/ss) +Start +Ïî÷àòè! +Connect to provider (RAS) +Ç'ºäíàòèñÿ ç ïðîâàéäåðîì (RAS) +Connect to this provider +Ç'ºäíàòèñÿ ç öèì ïðîâàéäåðîì +Disconnect when finished +³ä'ºäíàòèñü ïðè çàâåðøåíí³ +Disconnect modem on completion +³ä'ºäíàòè ïðè çàâåðøåíí³ +\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr) +\r\n(Ïîâ³äîìèòå íàì áóäü ëàñêà ïðî ïîì³÷åí³ ïðîáëåìè ³ ïîìèëêè)\r\n\r\nðàçðàáîòêà:\r\nèíòåðôåéñ (Windows): Xavier Roche\r\nêà÷àëêà (spider): Xavier Roche\r\nïàðñåð java-êëàñ³â: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for Ukrainian translations to:\r\nAndrij Shevchuk (andrijsh@mail.lviv.ua) http://programy.com.ua, http://vic-info.com.ua +About WinHTTrack Website Copier +Ïðî ïðîãðàìó WinHTTrack Website Copier +Please visit our Web page +Áóäü ëàñêà, â³äâ³äàéòå íàøó äîì³âêó +Wizard query +Ïèòàííÿ ìàéñòðà +Your answer: +Âàøà â³äïîâ³äü: +Link detected.. +Çíàéäåíèé ë³íê +Choose a rule +Âèáåð³òü ïðàâèëî +Ignore this link +²ãíîðóâàòè öåé ë³íê +Ignore directory +²ãíîðóâàòè äèðåêòîð³þ +Ignore domain +²ãíîðóâàòè äîìåí +Catch this page only +Ñêà÷àòè ò³ëüêè öþ ñòîð³íêó +Mirror site +Äçåðêàëþâàòè ñàéò +Mirror domain +Äçåðêàëþâàòè äîìåí +Ignore all +²ãíîðóâàòè âñ³ +Wizard query +Ïèòàííÿ ìàéñòðà +NO +Ͳ +File +Ôàéë +Options +Íàñòðîþâàííÿ +Log +Ëîã +Window +³êíî +Help +Äîïîìîãà +Pause transfer +Ïðèçóïèíèòè çàâàíòàæåííÿ +Exit +Âèõ³ä +Modify options +Çì³íèòè íàñòðîþâàííÿ +View log +Ïåðåãëÿíóòè ëîã +View error log +Ïåðåãëÿíóòè ëîã ïîìèëîê +View file transfers +Ïîäèâèòèñÿ ïðîöåñ ïåðåäà÷³ ôàéë³â +Hide +Ñõîâàòè +About WinHTTrack Website Copier +Ïðî ïðîãðàìó... +Check program updates... +Ïåðåâ³ðèòè íàÿâí³ñòü îáíîâëåíî¿ ïðîãðàìè... +&Toolbar +Ïàíåëü ³íñòðóìåíò³â +&Status Bar +Ïàíåëü ñòàíó +S&plit +Ðîçä³ëèòè +File +Ôàéë +Preferences +Íàñòðîþâàííÿ +Mirror +Äçåðêàëî +Log +Ëîã +Window +³êíî +Help +Äîïîìîãà +Exit +Âèõ³ä +Load default options +Çàâàíòàæèòè çíà÷åííÿ ïàðàìåòð³â çà çàìîâ÷óâàííÿì +Save default options +Çáåðåãòè çíà÷åííÿ çà çàìîâ÷óâàííÿì +Reset to default options +Î÷èñòèòè çíà÷åííÿ çà çàìîâ÷óâàííÿì +Load options... +Çàâàíòàæèòè íàñòðîþâàííÿ... +Save options as... +Çáåðåãòè íàñòðîþâàííÿ ÿê... +Language preference... +Âèá³ð ìîâè +Contents... +Çì³ñò... +About WinHTTrack... +Ïðî WinHTTrack... +New project\tCtrl+N +Íîâèé ïðîåêò\tCtrl+N +&Open...\tCtrl+O +&³äêðèòè...\tCtrl+O +&Save\tCtrl+S +&Çáåðåãòè\tCtrl+S +Save &As... +Çáåðåãòè &ßê... +&Delete... +&Âèäàëèòè... +&Browse sites... +&Ïåðåãëÿä ñàéò³â... +User-defined structure +Çàäàííÿ ñòðóêòóðè +%n\tName of file without file type (ex: image)\r\n%N\tName of file including file type (ex: image.gif)\r\n%t\tFile type only (ex: gif)\r\n%p\tPath [without ending /] (ex: /someimages)\r\n%h\tHost name (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tShort name (ex: %sN) +%n\t²ìåíà ôàéë³â áåç òèïó (íàïðèêëàä: image)\r\n%N\t²ìåíà ôàéë³â ç òèïîì (íàïð.: image.gif)\r\n%t\tÒ³ëüêè òèï ôàéëó (íàïð.: gif)\r\n%p\tØëÿõ [áåç çàê³í÷åííÿ /] (ïð.: /someimages)\r\n%h\tÍàçâà Õîñòà (ex: www.someweb.com)\r\n%M\tMD5 URL (128 bits, 32 ascii bytes)\r\n%Q\tMD5 query string (128 bits, 32 ascii bytes)\r\n%q\tMD5 small query string (16 bits, 4 ascii bytes)\r\n\r\n%s?\tÊîðîòê³ ³ìåíà (ïð: %sN) +Example:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Íàïðèêëàä:\t%h%p/%n%q.%t\n->\t\tc:\\mirror\\www.someweb.com\\someimages\\image.gif +Proxy settings +Íàñòðîþâàííÿ ïðîêñ³ +Proxy address: +Àäðåñà ïðîêñ³: +Proxy port: +Íîìåð ïîðòó: +Authentication (only if needed) +Àóòåíòèôiêàöiÿ (ÿêùî ïîòð³áíî) +Login +Ëîãií +Password +Ïàðîëü +Enter proxy address here +Ââåä³òü àäðåñó ïðîêñ³ ñåðâåðà +Enter proxy port here +Ââåä³òü íîìåð ïîðòó ïðîêñ³ ñåðâåðà +Enter proxy login +Ââåä³òü ëîãèí ïðîêñ³ +Enter proxy password +Ââåä³òü ïàðîëü äëÿ ïðîêñ³ ñåðâåðà +Enter project name here +Ââåä³òü ³ì'ÿ ïðîåêòó +Enter saving path here +Âêàæ³òü êàòàëîã äëÿ çáåðåæåííÿ ïðîåêòó +Select existing project to update +Äëÿ â³äíîâëåííÿ ïðîåêòó, âèáåð³òü éîãî ç³ ñïèñêó +Click here to select path +Âèáðàòè êàòàëîã ïðîåêòó +HTTrack Project Wizard... +Ìàéñòåð ñòâîðåííÿ ïðîåêòó HTTrack... +New project name: +²ì'ÿ íîâîãî ïðîåêòó: +Existing project name: +²ì'ÿ ³ñíóþ÷îãî ïðîåêòó: +Project name: +²ì'ÿ ïðîåêòó: +Base path: +Êàòàëîã: +C:\\My Web Sites +C:\\Ìî¿ Web Ñàéòè +Type a new project name, \r\nor select existing project to update/resume +Çàäàéòå íàçâó íîâîãî ïðîåêòó, \r\nàáî Âèáåð³òü ³ñíóþ÷èé ïðîåêò äëÿ éîãî àêòóàë³çàö³¿/ïðîäîâæåííÿ +New project +Íîâèé ïðîåêò +Insert URL +Âñòàâòå URL +URL: +Àäðåñà: +Authentication (only if needed) +Àóòåíòèô³êàö³ÿ (ÿêùî ïîòð³áíî) +Login +Ëîã³í: +Password +Ïàðîëü: +Forms or complex links: +Ñêëàäí³ ë³íêè: +Capture URL... +Çàñ³êòè URL... +Enter URL address(es) here +Ââåä³òü URL àäðåñà +Enter site login +Ââåä³òü ëîã³í äëÿ äîñòóïó äî ñàéòó +Enter site password +Ââåä³òü ïàðîëü äëÿ äîñòóïó äî ñàéòó +Use this capture tool for links that can only be accessed through forms or javascript code +Âèêîðèñòîâóéòå öåé çàñ³á äëÿ âèëîâó äèíàì³÷íèõ URL (javascript, ôîðìè ³ ò.ï.) +Choose language according to preference +Âèá³ð ìîâè +Catch URL! +ϳéìàòè URL! +Please set temporary browser proxy settings to the following values (Copy/Paste Proxy Address and Port).\nThen click on the Form SUBMIT button in your browser page, or click on the specific link you want to capture. +Òèì÷àñîâî âñòàíîâ³òü â íàñòðîþâàííÿõ ïðîêñ³ âàøîãî áðîóçåðà çàçíà÷åí³ íèæ÷å çíà÷åííÿ àäðåñè ³ íîìåðà ïîðòó.\näàë³, ó áðîóçåð³ âèêîíàéòå íåîáõ³äí³ ä³¿ (ïîñëàòè ôîðìó, àêòèâ³çóâàòè ñêð³ïò ³ ò.ï.) . +This will send the desired link from your browser to WinHTTrack. +Ó òàêèé ñïîñ³á âè çìîæåòå ïåðåäàòè áàæàíèé ë³íê ³ç áðàóçåðà â HTTrack. +ABORT +Ñêàñóâàííÿ +Copy/Paste the temporary proxy parameters here +Ñêîï³þâàòè/âñòàâèòè òèì÷àñîâ³ íàñòðîþâàííÿ ïðîêñ³ +Cancel +Ñêàñóâàííÿ +Unable to find Help files! +Íå çíàéäåí³ ôàéëè äîïîìîãè! +Unable to save parameters! +Íå ìîæëèâî çáåðåãòè ïàðàìåòðè! +Please drag only one folder at a time +Áóäü ëàñêà, ïåðåòÿãóéòå ò³ëüêè îäíó ïàïêó +Please drag only folders, not files +Áóäü ëàñêà, ïåðåòÿãóéòå ò³ëüêè ïàïêó, à íå ôàéë +Please drag folders only +Áóäü ëàñêà, ïåðåòÿãóéòå ò³ëüêè ïàïêó +Select user-defined structure? +Âèáðàòè çàäàíó âàìè ñòðóêòóðó? +Please ensure that the user-defined-string is correct,\notherwise filenames will be bogus! +Ïåðåâ³ðòå, ùî âèçíà÷åíà âàìè ñòðóêòóðà ïðàâèëüíà, ó ïðîòèëåæíîìó âèïàäêó, ³ìåíà ôàéë³â áóäóòü íåïåðåäáà÷åí³ +Do you really want to use a user-defined structure? +Âè ä³éñíî õî÷åòå âèáðàòè çàäàíó ñòðóêòóðó? +Too manu URLs, cannot handle so many links!! +Çàíàäòî áàãàòî URL'³â, íå ìîæó îáðîáèòè òàêó ê³ëüê³ñòü ë³íê³â! +Not enough memory, fatal internal error.. +Çàìàëî ïàì'ÿò³, ôàòàëüíà âíóòð³øíÿ ïîìèëêà... +Unknown operation! +Íåâ³äîìà îïåðàö³ÿ +Add this URL?\r\n +Äîäàòè öåé URL?\r\n +Warning: main process is still not responding, cannot add URL(s).. +Óâàãà: ïðîãðàìà íå â³äïîâ³äຠíà çàïèòè, íå ìîæëèâî äîäàòè URL'è... +Type/MIME associations +³äïîâ³äí³ñòü òèïó ôàéë³â (Type/MIME) +File types: +Òèïè ôàéë³â: +MIME identity: +MIME identity +Select or modify your file type(s) here +Âèáðàòè ÷è çì³íèòè òèïè ôàéë³â +Select or modify your MIME type(s) here +Âèáðàòè ÷è çì³íèòè òèïè ôàéë³â +Go up +Íàãîðó +Go down +Âíèç +File download information +²íôîðìàö³ÿ ïðî çàâàíòàæåííÿ ôàéëó +Freeze Window +Çàìîðîçèòè â³êíî +More information: +Äîäàòêîâà ³íôîðìàö³ÿ: +Welcome to WinHTTrack Website Copier!\n\nPlease click on the NEXT button to\n\n- start a new project\n- or resume a partial download +Ëàñêàâî ïðîñèìî â ïðîãðàìó WinHTTrack Website Copier!\n\náóäü-ëàñêà íàòèñí³òü êíîïêó ÄÀ˲ äëÿ òîãî, ùîá\n\n- ïî÷àòè íîâèé ïðîåêò\n- ÷è â³äíîâèòè ÷àñòêîâå çàâàíòàæåííÿ +File names with extension:\nFile names containing:\nThis file name:\nFolder names containing:\nThis folder name:\nLinks on this domain:\nLinks on domains containing:\nLinks from this host:\nLinks containing:\nThis link:\nALL LINKS +²ìåíà ôàéë³â ç ðîçøèðåííÿì:\n³ìåíà ôàéë³â, ùî ì³ñòÿòü:\nöåé ôàéë:\n³ìåíà ïàïîê ì³ñòÿòü:\nöÿ ïàïêà:\në³íêè ç öüîãî äîìåíà:\në³íêè ç äîìåí³â, ùî ì³ñòÿòü:\në³íêè ç öüîãî õîñòà:\në³íêè óòðèìóþ÷³:\nöåé ë³íê:\nâñ³ ˲ÍÊÈ +Show all\nHide debug\nHide infos\nHide debug and infos +Ïîêàçàòè âñ³\nñõîâàòè íàëàãîäæåííÿ\nñõîâàòè èíôî\nñõîâàòè íàëàãîäæåííÿ ³ ³íôî +Site-structure (default)\nHtml in web/, images/other files in web/images/\nHtml in web/html, images/other in web/images\nHtml in web/, images/other in web/\nHtml in web/, images/other in web/xxx, where xxx is the file extension\nHtml in web/html, images/other in web/xxx\nSite-structure, without www.domain.xxx/\nHtml in site_name/, images/other files in site_name/images/\nHtml in site_name/html, images/other in site_name/images\nHtml in site_name/, images/other in site_name/\nHtml in site_name/, images/other in site_name/xxx\nHtml in site_name/html, images/other in site_name/xxx\nAll files in web/, with random names (gadget !)\nAll files in site_name/, with random names (gadget !)\nUser-defined structure.. +Ñòðóêòóðà ñàéòó (çà çàìîâ÷óâàííÿì)\nHtml/, ôàéëè çîáðàæåíü/³íø³ ôàéëè/ôàéëè çîáðàæåíü/\nHtml/html, ôàéëè çîáðàæåíü/³íø³ ôàéëè/ôàéëè çîáðàæåíü\nHtml/, ôàéëè çîáðàæåíü/³íø³ ôàéëè/\nHtml/, ôàéëè çîáðàæåíü/³íø³ ôàéëè/xxx, äå xxx - ðîçøèðåííÿ ôàéëó\nHtml, ôàéëè çîáðàæåíü/³íø³ ôàéëè/xxx\nñòðóêòóðà ñàéòó áåç www.domain.xxx/\nHtml ó site_name/ ôàéëè çîáðàæåíü/³íø³ ôàéëè â site_name/ôàéëè çîáðàæåíü/\nHtml ó site_name/html, ôàéëè çîáðàæåíü/³íø³ ôàéëè â site_name/ôàéëè çîáðàæåíü\nHtml ó site_name/, ôàéëè çîáðàæåíü/³íø³ ôàéëè â site_name/\nHtml ó site_name/, ôàéëè çîáðàæåíü/³íø³ ôàéëè â site_name/xxx\nHtml ó site_name/html, ôàéëè çîáðàæåíü/³íø³ ôàéëè â site_name/xxx\nâñ³ ôàéëè ç âåáà/, ç äîâ³ëüíèìè ³ìåíàìè (íîâèíêà !)\nâñ³ ôàéëè ç site_name/, ç äîâ³ëüíèìè ³ìåíàìè (íîâèíêà !)\nçàäàíà êîðèñòóâà÷åì ñòðóêòóðà... +Just scan\nStore html files\nStore non html files\nStore all files (default)\nStore html files first +Ò³ëüêè ñêàíóâàòè\nçáåð³ãàòè html ôàéëè\nçáåð³ãàòè íå html ôàéëè\nçáåð³ãàòè óñ³ ôàéëè (çà çàìîâ÷óâàííÿì)\nçáåð³ãàòè ñïî÷àòêó html ôàéëè +Stay in the same directory\nCan go down (default)\nCan go up\nCan both go up & down +Çàëèøàòèñÿ â ò³é æå äèðåêòîð³¿\nìîæíà ðóõàòèñÿ âíèç (çà çàìîâ÷óâàííÿì)\nìîæíà ðóõàòèñÿ íàãîðó\nìîæíà ðóõàòèñÿ íàãîðó ³ âíèç +Stay on the same address (default)\nStay on the same domain\nStay on the same top level domain\nGo everywhere on the web +Çàëèøàòèñÿ íà ò³é æå àäðåñ³ (ïî çàìîâ÷óâàííþ)\nîçàëèøàòèñÿ íà ò³ì æå äîìåí³\nçàëèøàòèñÿ íà ò³ì æå äîìåí³ âåðõíüîãî ð³âíÿ\n³äòè êóäè çàâãîäíî +Never\nIf unknown (except /)\nIf unknown +ͳêîëè\nÿêùî íåâ³äîìî (êð³ì /)\nÿêùî íåâ³äîìî +no robots.txt rules\nrobots.txt except wizard\nfollow robots.txt rules +Íå ï³äêîðÿòèñÿ ïðàâèëàì robots.txt\nrobots.txt êð³ì Ìàéñòðà\nñëóõàòèñÿ ïðàâèë robots.txt +normal\nextended\ndebug +Çâè÷àéíà\nðàçøèðåíà\nâ³äëàãîäæåííÿ +Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download +Ñêà÷àòè ñàéò(è)\nÑêà÷àòè ñàéò(è) + çàïèòàííÿ\nÎòðèìàòè äåÿê³ ôàéëè\nÎòðèìàòè âñ³ ñàéòè ç ñòîð³íêè\nÒåñòóâàòè ë³íêè ç³ ñòîð³íêè\n* Ïðîäîâæèòè ïåðåðâàíó çàâàíòàæåííÿ\n* Ïîíîâèòè ³ñíóþ÷å çàâàíòàæåííÿ +Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL +³äíîñíèé URI / Àáñîëþòíèé URL (default)\nÀáñîëþòíèé URL / Àáñîëþòíèé URL\nÀáñîëþòíèé URI / Àáñîëþòíèé URL\nÎðèã³íàëüíèé URL / Îðèã³íàëüíèé URL +Open Source offline browser + +Website Copier/Offline Browser. Copy remote websites to your computer. Free. + +httrack, winhttrack, webhttrack, offline browser + +URL list (.txt) + +Previous + +Next + +URLs + +Warning + +Your browser does not currently support javascript. For better results, please use a javascript-aware browser. + +Thank you + +You can now close this window + +Server terminated + +A fatal error has occured during this mirror + diff --git a/lib/example.c b/lib/example.c deleted file mode 100644 index 33a7cc1..0000000 --- a/lib/example.c +++ /dev/null @@ -1,156 +0,0 @@ -/* - HTTrack library example - .c file - - To Build on Windows: - - compile everything in src/ BUT htsparse.c, compile example.c - - multithreaded - - avoid precompiled headers with VC - - To Build on Linux: - make lib_linux (or "make lib_netbsd", or "make lib_default" and so on) - cp htssystem.h src/htssystem.h - make build_httracklib -*/ - - -#include -#include -#include -#include "src/httrack-library.h" - -#include "example.h" - - - -/* - * Name: main - * Description: main() function - * Parameters: None - * Should return: error status -*/ -int main(void) { - /* - First, ask for an URL - Note: For the test, option r2 (mirror max depth=1) and --testscan (no index, no cache, do not store, no log files) - */ - char _argv[][256] = {"httrack_test" , "" , "-r3" , "--testscan" , "" }; - char* argv[] = {NULL , NULL , NULL , NULL , NULL}; - int argc = 0; - while(strlen(_argv[argc])) { - argv[argc]=_argv[argc]; - argc++; - } - argv[argc]=NULL; - printf("HTTrackLib test program\n"); - printf("Enter URL (example: www.foobar.com/index.html) :"); - scanf("%s",argv[1]); - printf("Test: 1 depth\n"); - - hts_init(); - htswrap_add("init",httrack_wrapper_init); - htswrap_add("free",httrack_wrapper_uninit); - htswrap_add("start",httrack_wrapper_start); - htswrap_add("change-options",httrack_wrapper_chopt); - htswrap_add("end",httrack_wrapper_end); - htswrap_add("check-html",httrack_wrapper_checkhtml); - htswrap_add("loop",httrack_wrapper_loop); - htswrap_add("query",httrack_wrapper_query); - htswrap_add("query2",httrack_wrapper_query2); - htswrap_add("query3",httrack_wrapper_query3); - htswrap_add("check-link",httrack_wrapper_check); - htswrap_add("pause",httrack_wrapper_pause); - htswrap_add("save-file",httrack_wrapper_filesave); - htswrap_add("link-detected",httrack_wrapper_linkdetected); - htswrap_add("transfer-status",httrack_wrapper_xfrstatus); - htswrap_add("save-name",httrack_wrapper_savename); - - /* Then, launch the mirror */ - hts_main(argc,argv); - - /* Wait for a key */ - printf("\nPress ENTER key to exit\n"); - scanf("%s",argv[1]); - - /* That's all! */ - return 0; -} - - -/* CALLBACK FUNCTIONS */ - -/* Initialize the Winsock */ -void __cdecl httrack_wrapper_init(void) { - printf("Engine started\n"); -#ifdef _WIN32 - { - WORD wVersionRequested; // requested version WinSock API - WSADATA wsadata; // Windows Sockets API data - int stat; - wVersionRequested = 0x0101; - stat = WSAStartup( wVersionRequested, &wsadata ); - if (stat != 0) { - printf("Winsock not found!\n"); - return; - } else if (LOBYTE(wsadata.wVersion) != 1 && HIBYTE(wsadata.wVersion) != 1) { - printf("WINSOCK.DLL does not support version 1.1\n"); - WSACleanup(); - return; - } - } -#endif - -} -void __cdecl httrack_wrapper_uninit(void) { - printf("Engine exited\n"); -#ifdef _WIN32 - WSACleanup(); -#endif -} -int __cdecl httrack_wrapper_start(httrackp* opt) { - printf("Start of mirror\n"); - return 1; -} -int __cdecl httrack_wrapper_chopt(httrackp* opt) { - return __cdecl httrack_wrapper_start(opt); -} -int __cdecl httrack_wrapper_end(void) { - printf("End of mirror\n"); - return 1; -} -int __cdecl httrack_wrapper_checkhtml(char* html,int len,char* url_adresse,char* url_fichier) { - printf("Parsing html file: http://%s%s\n",url_adresse,url_fichier); - return 1; -} -int __cdecl httrack_wrapper_loop(void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats) { - /* printf("..httrack_wrapper_loop called\n"); */ - return 1; -} -char* __cdecl httrack_wrapper_query(char* question) { - return "N"; -} -char* __cdecl httrack_wrapper_query2(char* question) { - return "N"; -} -char* __cdecl httrack_wrapper_query3(char* question) { - return ""; -} -int __cdecl httrack_wrapper_check(char* adr,char* fil,int status) { - printf("Link status tested: http://%s%s\n",adr,fil); - return -1; -} -void __cdecl httrack_wrapper_pause(char* lockfile) { -} -void __cdecl httrack_wrapper_filesave(char* file) { -} -void __cdecl httrack_wrapper_savename(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save) { -/* strcpy(save, "foo.html"); */ -} -int __cdecl httrack_wrapper_linkdetected(char* link) { - printf("Link detected: %s\n",link); - return 1; -} -int __cdecl httrack_wrapper_xfrstatus(void* back) { - return 1; -} - diff --git a/lib/example.dsp b/lib/example.dsp deleted file mode 100644 index 4da0cb4..0000000 --- a/lib/example.dsp +++ /dev/null @@ -1,311 +0,0 @@ -# Microsoft Developer Studio Project File - Name="example" - Package Owner=<4> -# Microsoft Developer Studio Generated Build File, Format Version 6.00 -# ** DO NOT EDIT ** - -# TARGTYPE "Win32 (x86) Console Application" 0x0103 - -CFG=example - Win32 Debug -!MESSAGE This is not a valid makefile. To build this project using NMAKE, -!MESSAGE use the Export Makefile command and run -!MESSAGE -!MESSAGE NMAKE /f "example.mak". -!MESSAGE -!MESSAGE You can specify a configuration when running NMAKE -!MESSAGE by defining the macro CFG on the command line. For example: -!MESSAGE -!MESSAGE NMAKE /f "example.mak" CFG="example - Win32 Debug" -!MESSAGE -!MESSAGE Possible choices for configuration are: -!MESSAGE -!MESSAGE "example - Win32 Release" (based on "Win32 (x86) Console Application") -!MESSAGE "example - Win32 Debug" (based on "Win32 (x86) Console Application") -!MESSAGE - -# Begin Project -# PROP AllowPerConfigDependencies 0 -# PROP Scc_ProjName "" -# PROP Scc_LocalPath "" -CPP=cl.exe -RSC=rc.exe - -!IF "$(CFG)" == "example - Win32 Release" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 0 -# PROP BASE Output_Dir "Release" -# PROP BASE Intermediate_Dir "Release" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 0 -# PROP Output_Dir "Release" -# PROP Intermediate_Dir "Release" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD BASE RSC /l 0x40c /d "NDEBUG" -# ADD RSC /l 0x40c /d "NDEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 wsock32.lib /nologo /subsystem:console /machine:I386 - -!ELSEIF "$(CFG)" == "example - Win32 Debug" - -# PROP BASE Use_MFC 0 -# PROP BASE Use_Debug_Libraries 1 -# PROP BASE Output_Dir "Debug" -# PROP BASE Intermediate_Dir "Debug" -# PROP BASE Target_Dir "" -# PROP Use_MFC 0 -# PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" -# PROP Intermediate_Dir "Debug" -# PROP Ignore_Export_Lib 0 -# PROP Target_Dir "" -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c -# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c -# SUBTRACT CPP /YX -# ADD BASE RSC /l 0x40c /d "_DEBUG" -# ADD RSC /l 0x40c /d "_DEBUG" -BSC32=bscmake.exe -# ADD BASE BSC32 /nologo -# ADD BSC32 /nologo -LINK32=link.exe -# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 wsock32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept - -!ENDIF - -# Begin Target - -# Name "example - Win32 Release" -# Name "example - Win32 Debug" -# Begin Source File - -SOURCE=.\example.c -# End Source File -# Begin Source File - -SOURCE=.\example.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsalias.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsalias.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsback.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsback.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsbase.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsbasenet.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsbauth.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsbauth.h -# End Source File -# Begin Source File - -SOURCE=.\src\htscache.c -# End Source File -# Begin Source File - -SOURCE=.\src\htscache.h -# End Source File -# Begin Source File - -SOURCE=.\src\htscatchurl.c -# End Source File -# Begin Source File - -SOURCE=.\src\htscatchurl.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsconfig.h -# End Source File -# Begin Source File - -SOURCE=.\src\htscore.c -# End Source File -# Begin Source File - -SOURCE=.\src\htscore.h -# End Source File -# Begin Source File - -SOURCE=.\src\htscoremain.c -# End Source File -# Begin Source File - -SOURCE=.\src\htscoremain.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsdefines.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsfilters.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsfilters.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsftp.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsftp.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsglobal.h -# End Source File -# Begin Source File - -SOURCE=.\src\htshash.c -# End Source File -# Begin Source File - -SOURCE=.\src\htshash.h -# End Source File -# Begin Source File - -SOURCE=.\src\htshelp.c -# End Source File -# Begin Source File - -SOURCE=.\src\htshelp.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsindex.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsindex.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsjava.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsjava.h -# End Source File -# Begin Source File - -SOURCE=.\src\htslib.c -# End Source File -# Begin Source File - -SOURCE=.\src\htslib.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsmd5.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsmd5.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsname.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsname.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsnet.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsopt.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsrobots.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsrobots.h -# End Source File -# Begin Source File - -SOURCE=.\src\htsthread.c -# End Source File -# Begin Source File - -SOURCE=.\src\htsthread.h -# End Source File -# Begin Source File - -SOURCE=.\src\htstools.c -# End Source File -# Begin Source File - -SOURCE=.\src\htstools.h -# End Source File -# Begin Source File - -SOURCE=.\src\htswizard.c -# End Source File -# Begin Source File - -SOURCE=.\src\htswizard.h -# End Source File -# Begin Source File - -SOURCE=.\src\htswrap.c -# End Source File -# Begin Source File - -SOURCE=.\src\htswrap.h -# End Source File -# Begin Source File - -SOURCE=".\src\httrack-library.h" -# End Source File -# Begin Source File - -SOURCE=.\src\httrack.c -# End Source File -# Begin Source File - -SOURCE=.\src\httrack.h -# End Source File -# Begin Source File - -SOURCE=.\src\md5.c -# End Source File -# Begin Source File - -SOURCE=.\src\md5.h -# End Source File -# End Target -# End Project diff --git a/lib/example.dsw b/lib/example.dsw deleted file mode 100644 index 8ddad80..0000000 --- a/lib/example.dsw +++ /dev/null @@ -1,29 +0,0 @@ -Microsoft Developer Studio Workspace File, Format Version 6.00 -# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! - -############################################################################### - -Project: "example"=.\example.dsp - Package Owner=<4> - -Package=<5> -{{{ -}}} - -Package=<4> -{{{ -}}} - -############################################################################### - -Global: - -Package=<5> -{{{ -}}} - -Package=<3> -{{{ -}}} - -############################################################################### - diff --git a/lib/example.h b/lib/example.h deleted file mode 100644 index 2ea0a67..0000000 --- a/lib/example.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - HTTrack library example - .h file -*/ - -#if __WIN32 -#else -#define __cdecl -#endif - -void __cdecl httrack_wrapper_init(void); -void __cdecl httrack_wrapper_uninit(void); -int __cdecl httrack_wrapper_start(httrackp* opt); -int __cdecl httrack_wrapper_chopt(httrackp* opt); -int __cdecl httrack_wrapper_end(void); -int __cdecl httrack_wrapper_checkhtml(char* html,int len,char* url_adresse,char* url_fichier); -int __cdecl httrack_wrapper_loop(void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats); -char* __cdecl httrack_wrapper_query(char* question); -char* __cdecl httrack_wrapper_query2(char* question); -char* __cdecl httrack_wrapper_query3(char* question); -int __cdecl httrack_wrapper_check(char* adr,char* fil,int status); -void __cdecl httrack_wrapper_pause(char* lockfile); -void __cdecl httrack_wrapper_filesave(char* file); -int __cdecl httrack_wrapper_linkdetected(char* link); -int __cdecl httrack_wrapper_xfrstatus(void* back); -void __cdecl httrack_wrapper_savename(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save); - diff --git a/lib/htssystem.h b/lib/htssystem.h deleted file mode 100644 index 5112ece..0000000 --- a/lib/htssystem.h +++ /dev/null @@ -1,12 +0,0 @@ -/* - HTTrack library example -*/ - -#define HTS_PLATFORM 1 -#define HTS_ANALYSTE 1 -#define HTS_PLATFORM_NAME "example" -#ifdef _WIN32 -#define HTS_WIN 1 -#define HTS_USEZLIB 0 -#endif - diff --git a/lib/readme.txt b/lib/readme.txt deleted file mode 100644 index 658cfdf..0000000 --- a/lib/readme.txt +++ /dev/null @@ -1,35 +0,0 @@ -HTTrack library example ------------------------ - -Here is an example of how to integrate HTTrack Website Copier into a project -to use it as a "core engine". Copy the src/ directory and the Makefile.*/configure -scripts in lib/ to have a working example. - - -Important Notice: ----------------- - -These sources are covered by the GNU General Public License (see below) -(Projects based on these sources must follow the GPL, too) - - -Copyright notice: ----------------- - -HTTrack Website Copier, Offline Browser for Windows and Unix -Copyright (C) Xavier Roche and other contributors - -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 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. - diff --git a/libtest/Makefile.am b/libtest/Makefile.am new file mode 100644 index 0000000..9bd2fe7 --- /dev/null +++ b/libtest/Makefile.am @@ -0,0 +1,5 @@ + +exemplesdir = $(datadir)/httrack/libtest +exemples_DATA = *.c *.h *.txt *.dsp *.dsw + +EXTRA_DIST = $(exemples_DATA) diff --git a/libtest/Makefile.in b/libtest/Makefile.in new file mode 100644 index 0000000..701bef3 --- /dev/null +++ b/libtest/Makefile.in @@ -0,0 +1,307 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_CFLAGS = @DEFAULT_CFLAGS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LFS_FLAG = @LFS_FLAG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +STRIP = @STRIP@ +THREADS_CFLAGS = @THREADS_CFLAGS@ +THREADS_LIBS = @THREADS_LIBS@ +V6_FLAG = @V6_FLAG@ +VERSION = @VERSION@ +VERSION_INFO = @VERSION_INFO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +exemplesdir = $(datadir)/httrack/libtest +exemples_DATA = *.c *.h *.txt *.dsp *.dsw + +EXTRA_DIST = $(exemples_DATA) +subdir = libtest +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(exemples_DATA) + +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu libtest/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +exemplesDATA_INSTALL = $(INSTALL_DATA) +install-exemplesDATA: $(exemples_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(exemplesdir) + @list='$(exemples_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(exemplesDATA_INSTALL) $$d$$p $(DESTDIR)$(exemplesdir)/$$f"; \ + $(exemplesDATA_INSTALL) $$d$$p $(DESTDIR)$(exemplesdir)/$$f; \ + done + +uninstall-exemplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(exemples_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(exemplesdir)/$$f"; \ + rm -f $(DESTDIR)$(exemplesdir)/$$f; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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: + $(mkinstalldirs) $(DESTDIR)$(exemplesdir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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 + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-exemplesDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-exemplesDATA uninstall-info-am + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am \ + install-exemplesDATA install-info install-info-am install-man \ + 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-exemplesDATA uninstall-info-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/libtest/callbacks-example.c b/libtest/callbacks-example.c new file mode 100755 index 0000000..3364969 --- /dev/null +++ b/libtest/callbacks-example.c @@ -0,0 +1,73 @@ +/* + HTTrack external callbacks example + .c file + + How to use: + - compile this file as a module (callback.so or callback.dll) + example: + (with gcc) + gcc -O -g3 -Wall -D_REENTRANT -DINET6 -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -shared -o callback.so callbacks-example.c + or (with visual c++) + cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"callback.dll" callbacks-example.c + - use the --wrapper option in httrack: + httrack --wrapper check-html=callback:process_file + --wrapper link-detected=callback:check_detectedlink + --wrapper loop=callback:check_loop +*/ + +#include +#include +#include + +/* "External" */ +#ifdef _WIN32 +#define EXTERNAL_FUNCTION __declspec(dllexport) +#else +#define EXTERNAL_FUNCTION +#endif + +/* + This sample just lists all links in documents with the parent link: + -> + This sample can be improved, for example, to make a map of a website. +*/ + +static char currentURLBeingParsed[2048]; + +/* +"check-html" callback +typedef int (* t_hts_htmlcheck)(char* html,int len,char* url_adresse,char* url_fichier); +*/ +EXTERNAL_FUNCTION int process_file(char* html, int len, char* url_adresse, char* url_fichier) { + printf("now parsing %s%s..\n", url_adresse, url_fichier); + strcpy(currentURLBeingParsed, url_adresse); + strcat(currentURLBeingParsed, url_fichier); + return 1; /* success */ +} + +/* +"link-detected" callback +typedef int (* t_hts_htmlcheck_linkdetected)(char* link); +*/ +EXTERNAL_FUNCTION int check_detectedlink(char* link) { + printf("[%s] -> [%s]\n", currentURLBeingParsed, link); + return 1; /* success */ +} + +/* +"loop" callback +typedef int (* t_hts_htmlcheck_loop)(void* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,void* stats); +*/ +EXTERNAL_FUNCTION int check_loop(void* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,void* stats) { + static int fun_animation=0; + printf("%c\r", "/-\\|"[(fun_animation++)%4]); + return 1; +} + +/* +a default callback for testing purpose +*/ +EXTERNAL_FUNCTION int check_void(void) { + printf("\n* * * default callback function called! * * *\n\n"); + return 1; +} diff --git a/libtest/example.c b/libtest/example.c new file mode 100644 index 0000000..3361872 --- /dev/null +++ b/libtest/example.c @@ -0,0 +1,158 @@ +/* + HTTrack library example + .c file + + To Build on Windows: + - install winhttrack + - set the proper path in the project settings (especially for the httrack lib and dll) + - compile in multithreaded DLL + - avoid precompiled headers with VC + + To Build on Linux: + - install httrack + - link with libhttrack.so and compile using something like: + gcc example.c -I/usr/include/httrack -lhttrack +*/ + + +#include +#include +#include + +#include "httrack-library.h" + +#include "example.h" + + + +/* + * Name: main + * Description: main() function + * Parameters: None + * Should return: error status +*/ +int main(void) { + /* + First, ask for an URL + Note: For the test, option r2 (mirror max depth=1) and --testscan (no index, no cache, do not store, no log files) + */ + char _argv[][256] = {"httrack_test" , "" , "-r3" , "--testscan" , "" }; + char* argv[] = {NULL , NULL , NULL , NULL , NULL}; + int argc = 0; + while(strlen(_argv[argc])) { + argv[argc]=_argv[argc]; + argc++; + } + argv[argc]=NULL; + printf("HTTrackLib test program\n"); + printf("Enter URL (example: www.foobar.com/index.html) :"); + scanf("%s",argv[1]); + printf("Test: 1 depth\n"); + + hts_init(); + htswrap_add("init",httrack_wrapper_init); + htswrap_add("free",httrack_wrapper_uninit); + htswrap_add("start",httrack_wrapper_start); + htswrap_add("change-options",httrack_wrapper_chopt); + htswrap_add("end",httrack_wrapper_end); + htswrap_add("check-html",httrack_wrapper_checkhtml); + htswrap_add("loop",httrack_wrapper_loop); + htswrap_add("query",httrack_wrapper_query); + htswrap_add("query2",httrack_wrapper_query2); + htswrap_add("query3",httrack_wrapper_query3); + htswrap_add("check-link",httrack_wrapper_check); + htswrap_add("pause",httrack_wrapper_pause); + htswrap_add("save-file",httrack_wrapper_filesave); + htswrap_add("link-detected",httrack_wrapper_linkdetected); + htswrap_add("transfer-status",httrack_wrapper_xfrstatus); + + /* Then, launch the mirror */ + hts_main(argc,argv); + + /* Wait for a key */ + printf("\nPress ENTER key to exit\n"); + scanf("%s",argv[1]); + + /* That's all! */ + return 0; +} + + +/* CALLBACK FUNCTIONS */ + +/* Initialize the Winsock */ +void CDECL httrack_wrapper_init(void) { + printf("Engine started\n"); +#ifdef _WIN32 + { + WORD wVersionRequested; // requested version WinSock API + WSADATA wsadata; // Windows Sockets API data + int stat; + wVersionRequested = 0x0101; + stat = WSAStartup( wVersionRequested, &wsadata ); + if (stat != 0) { + printf("Winsock not found!\n"); + return; + } else if (LOBYTE(wsadata.wVersion) != 1 && HIBYTE(wsadata.wVersion) != 1) { + printf("WINSOCK.DLL does not support version 1.1\n"); + WSACleanup(); + return; + } + } +#endif + +} +void CDECL httrack_wrapper_uninit(void) { + printf("Engine exited\n"); +#ifdef _WIN32 + WSACleanup(); +#endif +} +int CDECL httrack_wrapper_start(httrackp* opt) { + printf("Start of mirror\n"); + return 1; +} +int CDECL httrack_wrapper_chopt(httrackp* opt) { + return CDECL httrack_wrapper_start(opt); +} +int CDECL httrack_wrapper_end(void) { + printf("End of mirror\n"); + return 1; +} +int CDECL httrack_wrapper_checkhtml(char* html,int len,char* url_adresse,char* url_fichier) { + printf("Parsing html file: http://%s%s\n",url_adresse,url_fichier); + return 1; +} +int CDECL httrack_wrapper_loop(void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats) { + /* printf("..httrack_wrapper_loop called\n"); */ + return 1; +} +char* CDECL httrack_wrapper_query(char* question) { + /* Answer is No */ + return "N"; +} +char* CDECL httrack_wrapper_query2(char* question) { + /* Answer is No */ + return "N"; +} +char* CDECL httrack_wrapper_query3(char* question) { + /* Answer is "" */ + return ""; +} +int CDECL httrack_wrapper_check(char* adr,char* fil,int status) { + printf("Link status tested: http://%s%s\n",adr,fil); + return -1; +} +void CDECL httrack_wrapper_pause(char* lockfile) { + /* Wait until lockfile is removed.. */ +} +void CDECL httrack_wrapper_filesave(char* file) { +} +int CDECL httrack_wrapper_linkdetected(char* link) { + printf("Link detected: %s\n",link); + return 1; +} +int CDECL httrack_wrapper_xfrstatus(void* back) { + return 1; +} + diff --git a/libtest/example.dsp b/libtest/example.dsp new file mode 100644 index 0000000..0f87ae0 --- /dev/null +++ b/libtest/example.dsp @@ -0,0 +1,95 @@ +# Microsoft Developer Studio Project File - Name="example" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=example - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "example.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "example.mak" CFG="example - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "example - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "example - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "example - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD CPP /nologo /MT /W3 /GX /O2 /I "C:\Dev" /I "C:\Dev\IPv6Kit\inc" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 wsock32.lib libhttrack.lib /nologo /subsystem:console /machine:I386 + +!ELSEIF "$(CFG)" == "example - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c +# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "C:\Dev\IPv6Kit\inc" /I "C:\Dev" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /FD /GZ /c +# SUBTRACT CPP /YX +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 wsock32.lib libhttrack.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept + +!ENDIF + +# Begin Target + +# Name "example - Win32 Release" +# Name "example - Win32 Debug" +# Begin Source File + +SOURCE=.\example.c +# End Source File +# Begin Source File + +SOURCE=.\example.h +# End Source File +# End Target +# End Project diff --git a/libtest/example.dsw b/libtest/example.dsw new file mode 100644 index 0000000..adba05b --- /dev/null +++ b/libtest/example.dsw @@ -0,0 +1,29 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "example"=".\example.dsp" - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/libtest/example.h b/libtest/example.h new file mode 100644 index 0000000..161dce5 --- /dev/null +++ b/libtest/example.h @@ -0,0 +1,27 @@ +/* + HTTrack library example + .h file +*/ + +#ifdef __WIN32 +#define CDECL __cdecl +#else +#define CDECL +#endif + +void CDECL httrack_wrapper_init(void); +void CDECL httrack_wrapper_uninit(void); +int CDECL httrack_wrapper_start(httrackp* opt); +int CDECL httrack_wrapper_chopt(httrackp* opt); +int CDECL httrack_wrapper_end(void); +int CDECL httrack_wrapper_checkhtml(char* html,int len,char* url_adresse,char* url_fichier); +int CDECL httrack_wrapper_loop(void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats); +char* CDECL httrack_wrapper_query(char* question); +char* CDECL httrack_wrapper_query2(char* question); +char* CDECL httrack_wrapper_query3(char* question); +int CDECL httrack_wrapper_check(char* adr,char* fil,int status); +void CDECL httrack_wrapper_pause(char* lockfile); +void CDECL httrack_wrapper_filesave(char* file); +int CDECL httrack_wrapper_linkdetected(char* link); +int CDECL httrack_wrapper_xfrstatus(void* back); + diff --git a/libtest/htssystem.h b/libtest/htssystem.h new file mode 100644 index 0000000..58941ed --- /dev/null +++ b/libtest/htssystem.h @@ -0,0 +1,2 @@ +#define HTS_ANALYSTE 1 + diff --git a/libtest/readme.txt b/libtest/readme.txt new file mode 100644 index 0000000..3c23e4c --- /dev/null +++ b/libtest/readme.txt @@ -0,0 +1,34 @@ +HTTrack library example +----------------------- + +Here is an example of how to integrate HTTrack Website Copier into a project +to use it as a "core library". + + +Important Notice: +---------------- + +These sources are covered by the GNU General Public License (see below) +(Projects based on these sources must follow the GPL, too) + + +Copyright notice: +---------------- + +HTTrack Website Copier, Offline Browser for Windows and Unix +Copyright (C) Xavier Roche and other contributors + +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 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. + diff --git a/license.txt b/license.txt index 2de9d1a..9543ff8 100644 --- a/license.txt +++ b/license.txt @@ -17,23 +17,22 @@ 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. +In addition, as a special exception, Xavier Roche gives permission to +link the code of this program with the openSSL library (or with +modified versions of openSSL that use the same license as openSSL), +and distribute linked combinations including the two. You must obey +the GNU General Public License in all respects for all of the code +used other than openSSL. If you modify this file, you may extend this +exception to your version of the file, but you are not obligated to do +so. If you do not wish to do so, delete this exception statement from +your version. Important notes: -- We hereby ask people using this source NOT to use it in purpose of grabbing +We hereby ask people using this source NOT to use it in purpose of grabbing emails addresses, or collecting any other private informations on persons. This would disgrace our work, and spoil the many hours we spent on it. -- PLEASE REMEMBER THAT EXPORT/IMPORT AND/OR USE OF STRONG CRYPTOGRAPHY -SOFTWARE, PROVIDING CRYPTOGRAPHY HOOKS OR EVEN JUST COMMUNICATING -TECHNICAL DETAILS ABOUT CRYPTOGRAPHY SOFTWARE IS ILLEGAL IN SOME -PARTS OF THE WORLD. SO, WHEN YOU IMPORT THIS PACKAGE TO YOUR -COUNTRY, RE-DISTRIBUTE IT FROM THERE OR EVEN JUST EMAIL TECHNICAL -SUGGESTIONS OR EVEN SOURCE PATCHES TO THE AUTHOR OR OTHER PEOPLE -YOU ARE STRONGLY ADVISED TO PAY CLOSE ATTENTION TO ANY EXPORT/IMPORT -AND/OR USE LAWS WHICH APPLY TO YOU. THE AUTHORS ARE NOT LIABLE FOR -ANY VIOLATIONS YOU MAKE HERE. SO BE CAREFUL, IT IS YOUR RESPONSIBILITY. - Contacting us / support: Please refer to the README file diff --git a/ltmain.sh b/ltmain.sh new file mode 100644 index 0000000..46a9450 --- /dev/null +++ b/ltmain.sh @@ -0,0 +1,5100 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 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 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" + +# Parse our command line options once, thoroughly. +while test $# -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" + exit 0 + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $0 + exit 0 + ;; + + --debug) + echo "$progname: enabling shell trace mode" + set -x + ;; + + --dry-run | -n) + run=: + ;; + + --features) + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + exit 0 + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 +fi + +# 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= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + case $nonopt in + *cc | *++ | gcc* | *-gcc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + prev= + lastarg= + srcfile="$nonopt" + suppress_output= + + user_target=no + for arg + do + case $prev in + "") ;; + xcompiler) + # Aesthetically quote the previous argument. + prev= + lastarg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + + case $arg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + continue + ;; + esac + + # Accept any command-line options. + case $arg in + -o) + if test "$user_target" != "no"; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit 1 + fi + user_target=next + ;; + + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + continue + ;; + esac + + case $user_target in + next) + # The next one is the -o target name + user_target=yes + continue + ;; + yes) + # We got the output file + user_target=set + libobj="$arg" + continue + ;; + esac + + # Accept the current argument as the source file. + lastarg="$srcfile" + srcfile="$arg" + + # Aesthetically quote the previous argument. + + # Backslashify any backslashes, double quotes, and dollar signs. + # These are the only characters that are still specially + # interpreted inside of double-quoted scrings. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $lastarg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + # Add the previous argument to base_compile. + if test -z "$base_compile"; then + base_compile="$lastarg" + else + base_compile="$base_compile $lastarg" + fi + done + + case $user_target in + set) + ;; + no) + # Get the name of the library object. + libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + *) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit 1 + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSfmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.f90) xform=f90 ;; + *.for) xform=for ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit 1 + ;; + esac + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $libobj" + else + removelist="$libobj" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit 1" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; 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 "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit 1" 1 2 15 + else + 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 "$need_locks" = yes; then + until $run ln "$0" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; 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." + + $run $rm $removelist + exit 1 + fi + echo $srcfile > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + else + # Don't build PIC code + command="$base_compile $srcfile" + fi + if test "$build_old_libs" = yes; then + lo_libobj="$libobj" + dir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$libobj"; then + dir="$objdir" + else + dir="$dir/$objdir" + fi + libobj="$dir/"`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + + if test -d "$dir"; then + $show "$rm $libobj" + $run $rm $libobj + else + $show "$mkdir $dir" + $run $mkdir $dir + status=$? + if test $status -ne 0 && test ! -d $dir; then + exit $status + fi + fi + fi + if test "$compiler_o_lo" = yes; then + output_obj="$libobj" + command="$command -o $output_obj" + elif test "$compiler_c_o" = yes; then + output_obj="$obj" + command="$command -o $output_obj" + fi + + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + test -n "$output_obj" && $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + 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." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed, then go on to compile the next one + if test x"$output_obj" != x"$libobj"; then + $show "$mv $output_obj $libobj" + if $run $mv $output_obj $libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # If we have no pic_flag, then copy the object into place and finish. + if (test -z "$pic_flag" || test "$pic_mode" != default) && + test "$build_old_libs" = yes; then + # Rename the .lo from within objdir to obj + if test -f $obj; then + $show $rm $obj + $run $rm $obj + fi + + $show "$mv $libobj $obj" + if $run $mv $libobj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$obj" | $Xsed -e "s%.*/%%"` + libobj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` + # Now arrange that obj and lo_libobj become the same file + $show "(cd $xdir && $LN_S $baseobj $libobj)" + if $run eval '(cd $xdir && $LN_S $baseobj $libobj)'; then + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $run $rm "$lockfile" + fi + exit 0 + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Allow error messages only from the first compilation. + suppress_output=' >/dev/null 2>&1' + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $srcfile" + else + # All platforms use -DPIC, to notify preprocessed assembler code. + command="$base_compile $srcfile $pic_flag -DPIC" + fi + if test "$compiler_c_o" = yes; then + command="$command -o $obj" + output_obj="$obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command="$command$suppress_output" + $run $rm "$output_obj" + $show "$command" + if $run eval "$command"; then : + else + $run $rm $removelist + exit 1 + fi + + if test "$need_locks" = warn && + 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." + + $run $rm $removelist + exit 1 + fi + + # Just move the object if needed + if test x"$output_obj" != x"$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Create an invalid libtool object if no PIC, so that we do not + # accidentally link it into a program. + if test "$build_libtool_libs" != yes; then + $show "echo timestamp > $libobj" + $run eval "echo timestamp > \$libobj" || exit $? + else + # Move the .lo from within objdir + $show "$mv $libobj $lo_libobj" + if $run $mv $libobj $lo_libobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + fi + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + $run $rm "$lockfile" + fi + + exit 0 + ;; + + # libtool link mode + link | relink) + modename="$modename: link" + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invokation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which 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" + 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= + + avoid_version=no + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -all-static | -static) + if test "X$arg" = "X-all-static"; then + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + else + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + fi + build_libtool_libs=no + build_old_libs=yes + prefer_static_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 + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit 1 + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$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 + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + 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 + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit 1 + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + 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* | no/*-*-nonstopux*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + exit 1 + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-mingw* | *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + # The PATH hackery in wrapper scripts is required on Windows + # in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -o) prev=output ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit 1 + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static) + # 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 + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.lo | *.$objext) + # A library or standard object. + if test "$prev" = dlfiles; then + # This file was specified with -dlopen. + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $arg" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles "`$echo "X$arg" | $Xsed -e "$lo2o"` + prev= + else + case $arg in + *.lo) libobjs="$libobjs $arg" ;; + *) objs="$objs $arg" ;; + esac + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + 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. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'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\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d $output_objdir; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + status=$? + if test $status -ne 0 && test ! -d $output_objdir; then + exit $status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + *.$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 test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + 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 link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit 1 + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test $linkmode = prog; then + # Determine which files to process + case $pass in + dlopen) + libs="$dlfiles" + save_deplibs="$deplibs" # Collect dlpreopened libraries + deplibs= + ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -l*) + if test $linkmode = oldlib && test $linkmode = obj; then + $echo "$modename: warning: \`-l' is ignored for archives/objects: $deplib" 1>&2 + continue + fi + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + # Search the libtool library + lib="$searchdir/lib${name}.la" + if test -f "$lib"; then + found=yes + break + fi + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test $linkmode = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test $pass = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test $pass = scan; then + deplibs="$deplib $deplibs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects: $deplib" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test $pass = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test $pass = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + if test "$deplibs_check_method" != pass_all; then + 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 used here." + else + echo + echo "*** Warning: Linking the shared library $output against the" + echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test $pass != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test $pass = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test $found = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib'" 1>&2 + exit 1 + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variable installed. + installed=yes + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test $linkmode = oldlib && test $linkmode = obj; }; then + # Add dl[pre]opened files of deplib + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test $pass = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit 1 + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test $linkmode != prog && test $linkmode != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit 1 + fi + continue + fi # $pass = conv + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit 1 + fi + + # This library was specified with -dlopen. + if test $pass = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit 1 + fi + if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. + dlprefiles="$dlprefiles $lib" + else + newdlfiles="$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 + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test $pass = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit 1 + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test $linkmode = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" + fi + continue + fi + + if test $linkmode = prog && test $pass != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test $linkalldeplibs = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + link_static=no # Whether the deplib will be linked statically + if test -n "$library_names" && + { test "$prefer_static_libs" = no || test -z "$old_library"; }; then + # Link against this shared library + + if test "$linkmode,$pass" = "prog,link" || + { test $linkmode = lib && test $hardcode_into_libs = yes; }; 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 "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + if test $linkmode = prog; then + # We need to hardcode the library path + if test -n "$shlibpath_var"; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $dir" ;; + esac + fi + fi + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; 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*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + eval cmds=\"$extract_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + eval cmds=\"$old_archive_from_expsyms_cmds\" + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + 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 $linkmode = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case "$libdir" in + [\/]*) + add_dir="-L$inst_prefix_dir$libdir $add_dir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit 1 + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test $linkmode = prog; 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 "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test $linkmode = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + 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 + [\/]*) + add_dir="-L$inst_prefix_dir$libdir $add_dir" + ;; + esac + fi + add="-l$name" + fi + + if test $linkmode = prog; 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 $linkmode = prog; then + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + + # Try to link the static library + # 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 "$hardcode_direct" != unsupported; 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 "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; 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 can not 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 "$module" = yes; 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 "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + convenience="$convenience $dir/$old_library" + old_convenience="$old_convenience $dir/$old_library" + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test $linkmode = lib; then + if test -n "$dependency_libs" && + { test $hardcode_into_libs != yes || test $build_old_libs = yes || + test $link_static = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test $link_all_deplibs != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="-L$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit 1 + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="-L$absdir" + fi + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$deplibs $path" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test $pass = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test $pass != dlopen; then + test $pass != scan && dependency_libs="$newdependency_libs" + if test $pass != conv; then + # 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 "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_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 + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + *) + 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 "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + if test "$pass" = "conv" && + { test "$linkmode" = "lib" || test "$linkmode" = "prog"; }; then + libs="$deplibs" # reset libs + deplibs= + fi + done # for pass + if test $linkmode = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit 1 + else + echo + echo "*** Warning: Linking the shared library $output against the non-libtool" + echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test $# -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + libext=al + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + current="$2" + revision="$3" + age="$4" + + # 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]) ;; + *) + $echo "$modename: CURRENT \`$current' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case $revision in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + case $age in + 0 | [1-9] | [1-9][0-9] | [1-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' is not a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + ;; + esac + + if test $age -gt $current; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit 1 + 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 + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + major=`expr $current - $age + 1` + + 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 $loop != 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test $loop != 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit 1 + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + verstring="0.0" + 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 "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs. + $show "${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.*" + $run ${rm}r $output_objdir/$outputname $output_objdir/$libname.* $output_objdir/${libname}${release}.* + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + for path in $notinst_path; do + lib_search_path=`echo "$lib_search_path " | ${SED} -e 's% $path % %g'` + deplibs=`echo "$deplibs " | ${SED} -e 's% -L$path % %g'` + dependency_libs=`echo "$dependency_libs " | ${SED} -e '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 + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test $hardcode_into_libs != yes || test $build_old_libs = yes; 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 "*) ;; + *) dlfiles="$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 "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd*) + # Do not include libc due to us having libc/libc_r. + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test $build_libtool_need_lc = "yes"; then + deplibs="$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 behaviour. + 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. + $rm conftest.c + cat > conftest.c </dev/null` + 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 "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | egrep "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + 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 + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name="`expr $a_deplib : '-l\(.*\)'`" + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; 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 below in file_magic test + if eval echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | egrep "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + 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 + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + if $echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g' -e 's/[ ]//g' | + grep . >/dev/null; then + echo + if test "X$deplibs_check_method" = "Xnone"; 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 + fi + ;; + 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 is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; 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 "$build_old_libs" = no; 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 $allow_undefined = no; 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 "$build_old_libs" = no; 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 + + # 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 "$build_libtool_libs" = yes; then + if test $hardcode_into_libs = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $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"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$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 + rpath="$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 "$mode" != relink && 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 library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + test -z "$dlname" && dlname=$soname + + lib="$output_objdir/$realname" + for link + do + linknames="$linknames $link" + done + + # Ensure that we have .o objects for linkers which dislike .lo + # (e.g. aix) in case we are running --disable-static + for obj in $libobjs; do + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` + if test ! -f $xdir/$oldobj; then + $show "(cd $xdir && ${LN_S} $baseobj $oldobj)" + $run eval '(cd $xdir && ${LN_S} $baseobj $oldobj)' || exit $? + fi + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + eval cmds=\"$export_symbols_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "egrep -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval 'egrep -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + libobjs="$libobjs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval cmds=\"$archive_expsym_cmds\" + else + save_deplibs="$deplibs" + for conv in $convenience; do + tmp_deplibs= + for test_deplib in $deplibs; do + if test "$test_deplib" != "$conv"; then + tmp_deplibs="$tmp_deplibs $test_deplib" + fi + done + deplibs="$tmp_deplibs" + done + eval cmds=\"$archive_cmds\" + deplibs="$save_deplibs" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + exit 0 + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run 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 "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit 1 + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $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= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${obj}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + for xlib in $convenience; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + reload_conv_objs="$reload_objs "`find $xdir -name \*.o -print -o -name \*.lo -print | $NL2SP` + done + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + eval cmds=\"$reload_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${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" + $run eval "echo timestamp > $libobj" || exit $? + exit 0 + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + eval cmds=\"$reload_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + else + # Just create a symlink. + $show $rm $libobj + $run $rm $libobj + xdir=`$echo "X$libobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$libobj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$libobj" | $Xsed -e 's%^.*/%%'` + oldobj=`$echo "X$baseobj" | $Xsed -e "$lo2o"` + $show "(cd $xdir && $LN_S $oldobj $baseobj)" + $run eval '(cd $xdir && $LN_S $oldobj $baseobj)' || exit $? + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit 0 + ;; + + prog) + case $host in + *cygwin*) output=`echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + compile_command="$compile_command $compile_deplibs" + finalize_command="$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 "*) ;; + *) finalize_rpath="$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"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + 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"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$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 "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval 'egrep -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval 'egrep -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$output.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@$/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + else + $run eval "${SED} -e 's/\([][.*^$]\)/\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$output.exp"' + $run eval 'grep -f "$output_objdir/$output.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval 'echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # 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/$dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + 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*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DPIC";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $CC -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"` + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit 1 + ;; + 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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` + finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` + fi + + if test $need_relink = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + 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 + rpath="$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 + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; 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 "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit 0 + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "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}\" || 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 + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $0 --fallback-echo"; then + case $0 in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $0 --fallback-echo";; + *) qecho="$SHELL `pwd`/$0 --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) exeext=.exe ;; + *) exeext= ;; + esac + $rm $output + trap "$rm $output; exit 1" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# 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. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +if test \"\${CDPATH+set}\" = set; then CDPATH=:; export CDPATH; fi + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + 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 + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + echo >> $output "\ + 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 >> $output "\ + + # 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 >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # win32 systems need to use the prog path for dll + # lookup to work + *-*-cygwin* | *-*-pw32*) + $echo >> $output "\ + exec \$progdir/\$program \${1+\"\$@\"} +" + ;; + + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \$progdir\\\\\$program \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + # Export the path to the program. + PATH=\"\$progdir:\$PATH\" + export PATH + + exec \$program \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\" + exit 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\ +" + chmod +x $output + fi + exit 0 + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$objs$old_deplibs "`$echo "X$libobjs_save" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP` + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "mkdir $gentop" + $run mkdir "$gentop" + status=$? + if test $status -ne 0 && test ! -d "$gentop"; then + exit $status + fi + generated="$generated $gentop" + + # Add in members from convenience archives. + for xlib in $addlibs; do + # Extract the objects. + case $xlib in + [\\/]* | [A-Za-z]:[\\/]*) xabs="$xlib" ;; + *) xabs=`pwd`"/$xlib" ;; + esac + xlib=`$echo "X$xlib" | $Xsed -e 's%^.*/%%'` + xdir="$gentop/$xlib" + + $show "${rm}r $xdir" + $run ${rm}r "$xdir" + $show "mkdir $xdir" + $run mkdir "$xdir" + status=$? + if test $status -ne 0 && test ! -d "$xdir"; then + exit $status + fi + $show "(cd $xdir && $AR x $xabs)" + $run eval "(cd \$xdir && $AR x \$xabs)" || exit $? + + oldobjs="$oldobjs "`find $xdir -name \*.${objext} -print -o -name \*.lo -print | $NL2SP` + done + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + eval cmds=\"$old_archive_from_new_cmds\" + else + # Ensure that we have .o objects in place in case we decided + # not to build a shared library, and have fallen back to building + # static libs even though --disable-static was passed! + for oldobj in $oldobjs; do + if test ! -f $oldobj; then + xdir=`$echo "X$oldobj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$oldobj"; then + xdir="." + else + xdir="$xdir" + fi + baseobj=`$echo "X$oldobj" | $Xsed -e 's%^.*/%%'` + obj=`$echo "X$baseobj" | $Xsed -e "$o2lo"` + $show "(cd $xdir && ${LN_S} $obj $baseobj)" + $run eval '(cd $xdir && ${LN_S} $obj $baseobj)' || exit $? + fi + done + + eval cmds=\"$old_archive_cmds\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "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}\" || 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 + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $0 --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"` + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; 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) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit 1 + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# 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' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test $need_relink = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit 0 + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | $Xsed | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg="$nonopt" + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest="$arg" + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) prev="-f" ;; + -g) prev="-g" ;; + -m) prev="-m" ;; + -o) prev="-o" ;; + -s) + stripme=" -s" + continue + ;; + -*) ;; + + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest="$arg" + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*) + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit 1 + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test $# -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + 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. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$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 "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. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit 1 + fi + + 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 + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit 1 + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test $# -gt 0; then + # Delete the old symlinks, and create new ones. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval "(cd $destdir && $rm $linkname && $LN_S $realname $linkname)" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + eval cmds=\"$postinstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$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 + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit 0 + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | egrep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $wrapper ;; + *) . ./$wrapper ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit 1 + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $wrapper ;; + *) . ./$wrapper ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir="/tmp" + test -n "$TMPDIR" && tmpdir="$TMPDIR" + tmpdir="$tmpdir/libtool-$$" + if $mkdir -p "$tmpdir" && chmod 700 "$tmpdir"; then : + else + $echo "$modename: error: cannot create temporary directory \`$tmpdir'" 1>&2 + continue + fi + file=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyways + case $install_prog,$host in + /usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + eval cmds=\"$old_postinstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $0 --finish$current_libdirs' + else + exit 0 + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + eval cmds=\"$finish_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = ":" && exit 0 + + 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" + echo "more information, such as the ld(1) and ld.so(8) manual pages." + echo "----------------------------------------------------------------------" + exit 0 + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit 1 + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit 1 + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + 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 + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved enviroment variables + if test "${save_LC_ALL+set}" = set; then + LC_ALL="$save_LC_ALL"; export LC_ALL + fi + if test "${save_LANG+set}" = set; then + LANG="$save_LANG"; export LANG + fi + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # 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 0 + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + 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) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit 1 + fi + + rmdirs= + + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$objdir" + else + objdir="$dir/$objdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test $mode = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test $mode = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + 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 test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + test $mode = clean && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + + if test $mode = uninstall; then + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + eval cmds=\"$postuninstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + eval cmds=\"$old_postuninstall_cmds\" + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" + if test $? != 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + fi + fi + ;; + + *.lo) + if test "$build_old_libs" = yes; then + oldobj=`$echo "X$name" | $Xsed -e "$lo2o"` + rmfiles="$rmfiles $dir/$oldobj" + fi + ;; + + *) + # Do a test to see if this is a libtool program. + if test $mode = clean && + (${SED} -e '4q' $file | egrep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$file + + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $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 + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit 1 + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit 1 +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --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 + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --version print version information + +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. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE." + exit 0 + ;; + +clean) + $echo \ +"Usage: $modename [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: $modename [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 + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +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: $modename [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: $modename [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: $modename [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 rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [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 + -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 + -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 + -static do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +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: $modename [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." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit 1 + ;; +esac + +echo +$echo "Try \`$modename --help' for more information about other modes." + +exit 0 + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/man/Makefile.am b/man/Makefile.am new file mode 100644 index 0000000..24cdbb8 --- /dev/null +++ b/man/Makefile.am @@ -0,0 +1,5 @@ + +# man_MANS = httrack.1 +man_MANS = httrack.1 webhttrack.1 htsserver.1 + +EXTRA_DIST = $(man_MANS) diff --git a/man/Makefile.in b/man/Makefile.in new file mode 100644 index 0000000..18a5607 --- /dev/null +++ b/man/Makefile.in @@ -0,0 +1,335 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_CFLAGS = @DEFAULT_CFLAGS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LFS_FLAG = @LFS_FLAG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +STRIP = @STRIP@ +THREADS_CFLAGS = @THREADS_CFLAGS@ +THREADS_LIBS = @THREADS_LIBS@ +V6_FLAG = @V6_FLAG@ +VERSION = @VERSION@ +VERSION_INFO = @VERSION_INFO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +# man_MANS = httrack.1 +man_MANS = httrack.1 webhttrack.1 htsserver.1 + +EXTRA_DIST = $(man_MANS) +subdir = man +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = + +NROFF = nroff +MANS = $(man_MANS) +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu man/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: + +man1dir = $(mandir)/man1 +install-man1: $(man1_MANS) $(man_MANS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(man1dir) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ + else file=$$i; fi; \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + case "$$ext" in \ + 1*) ;; \ + *) ext='1' ;; \ + esac; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ + $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ + done +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ + l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ + for i in $$l2; do \ + case "$$i" in \ + *.1*) list="$$list $$i" ;; \ + esac; \ + done; \ + for i in $$list; do \ + ext=`echo $$i | sed -e 's/^.*\\.//'`; \ + inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ + inst=`echo $$inst | sed -e 's/^.*\///'`; \ + inst=`echo $$inst | sed '$(transform)'`.$$ext; \ + echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ + rm -f $(DESTDIR)$(man1dir)/$$inst; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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 $(MANS) + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(man1dir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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 + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-man + +install-exec-am: + +install-info: install-info-am + +install-man: install-man1 + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-man + +uninstall-man: uninstall-man1 + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-man1 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-info-am uninstall-man uninstall-man1 + +# 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/man/htsserver.1 b/man/htsserver.1 new file mode 100644 index 0000000..754564b --- /dev/null +++ b/man/htsserver.1 @@ -0,0 +1,67 @@ +.\" Process this file with +.\" groff -man -Tascii htsserver.1 +.\" +.TH htsserver 1 "Mar 2003" "httrack website copier" +.SH NAME +htsserver \- offline browser server : copy websites to a local directory +.SH SYNOPSIS +.B htsserver [ path/ ] [ keyword value [ keyword value .. ] ] +.B +.SH DESCRIPTION +.B htsserver +this program is a web frontend server to +.BR httrack (1). +, a website copier, used by +.BR webhttrack (1). +.SH EXAMPLES +.TP +.B htsserver /usr/share/httrack/ path "$HOME/websites" lang 1 + then, browse http://localhost:8080/ +.SH FILES +.I /etc/httrack.conf +.RS +The system wide configuration file. +.SH ENVIRONMENT +.IP HOME +Is being used if you defined in /etc/httrack.conf the line +.I path ~/websites/# +.SH DIAGNOSTICS +Errors/Warnings are reported to +.I hts-log.txt +located in the destination directory. + +.SH BUGS +Please reports bugs to +.B . +Include a complete, self-contained example that will allow the bug to be reproduced, and say which version of (web)httrack you are using. Do not forget to detail options used, OS version, and any other information you deem necessary. +.SH COPYRIGHT +Copyright (C) Xavier Roche and other contributors + +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 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. +.SH AVAILABILITY +The most recent released version of (web)httrack can be found at: +.B http://www.httrack.com +.SH AUTHOR +Xavier Roche +.SH "SEE ALSO" +The +.B HTML +documentation (available online at +.B http://www.httrack.com/html/ +) contains more detailed information. Please also refer to the +.B httrack FAQ +(available online at +.B http://www.httrack.com/html/faq.html +) diff --git a/man/httrack.1 b/man/httrack.1 new file mode 100644 index 0000000..db3d75b --- /dev/null +++ b/man/httrack.1 @@ -0,0 +1,623 @@ +.\" Process this file with +.\" groff -man -Tascii httrack.1 +.\" +.TH httrack 1 "HTTrack version 3.30-RC-19+swf (compiled Oct 4 2003)" "httrack website copier" +.SH NAME +httrack \- offline browser : copy websites to a local directory +.SH SYNOPSIS +.B httrack [ url ]... [ -filter ]... [ +filter ]... [ +.B-O, --path +] [ +.B -w, --mirror +] [ +.B -W, --mirror-wizard +] [ +.B -g, --get-files +] [ +.B -i, --continue +] [ +.B -Y, --mirrorlinks +] [ +.B -P, --proxy +] [ +.B -%f, --httpproxy-ftp[=N] +] [ +.B -%b, --bind +] [ +.B -rN, --depth[=N] +] [ +.B -%eN, --ext-depth[=N] +] [ +.B -mN, --max-files[=N] +] [ +.B -MN, --max-size[=N] +] [ +.B -EN, --max-time[=N] +] [ +.B -AN, --max-rate[=N] +] [ +.B -%cN, --connection-per-second[=N] +] [ +.B -GN, --max-pause[=N] +] [ +.B -cN, --sockets[=N] +] [ +.B -TN, --timeout +] [ +.B -RN, --retries[=N] +] [ +.B -JN, --min-rate[=N] +] [ +.B -HN, --host-control[=N] +] [ +.B -%P, --extended-parsing[=N] +] [ +.B -n, --near +] [ +.B -t, --test +] [ +.B -%L, --list +] [ +.B -%S, --urllist +] [ +.B -NN, --structure[=N] +] [ +.B -%M, --mime-html[=N] +] [ +.B -LN, --long-names[=N] +] [ +.B -KN, --keep-links[=N] +] [ +.B -x, --replace-external +] [ +.B -%x, --disable-passwords +] [ +.B -%q, --include-query-string +] [ +.B -o, --generate-errors +] [ +.B -X, --purge-old[=N] +] [ +.B -%p, --preserve +] [ +.B -bN, --cookies[=N] +] [ +.B -u, --check-type[=N] +] [ +.B -j, --parse-java[=N] +] [ +.B -sN, --robots[=N] +] [ +.B -%h, --http-10 +] [ +.B -%k, --keep-alive +] [ +.B -%B, --tolerant +] [ +.B -%s, --updatehack +] [ +.B -%u, --urlhack +] [ +.B -%A, --assume +] [ +.B -@iN, --protocol[=N] +] [ +.B -F, --user-agent +] [ +.B -%F, --footer +] [ +.B -%l, --language +] [ +.B -C, --cache[=N] +] [ +.B -k, --store-all-in-cache +] [ +.B -%n, --do-not-recatch +] [ +.B -%v, --display +] [ +.B -Q, --do-not-log +] [ +.B -q, --quiet +] [ +.B -z, --extra-log +] [ +.B -Z, --debug-log +] [ +.B -v, --verbose +] [ +.B -f, --file-log +] [ +.B -f2, --single-log +] [ +.B -I, --index +] [ +.B -%i, --build-top-index +] [ +.B -%I, --search-index +] [ +.B -pN, --priority[=N] +] [ +.B -S, --stay-on-same-dir +] [ +.B -D, --can-go-down +] [ +.B -U, --can-go-up +] [ +.B -B, --can-go-up-and-down +] [ +.B -a, --stay-on-same-address +] [ +.B -d, --stay-on-same-domain +] [ +.B -l, --stay-on-same-tld +] [ +.B -e, --go-everywhere +] [ +.B -%H, --debug-headers +] [ +.B -V, --userdef-cmd +] [ +.B -%U, --user +] [ +.B -%W, --callback +] [ +.B -K, --keep-links[=N] +] [ +.B +.SH DESCRIPTION +.B httrack +allows you to download a World Wide Web site from the Internet to a local directory, building recursively all directories, getting HTML, images, and other files from the server to your computer. HTTrack arranges the original site's relative link-structure. Simply open a page of the "mirrored" website in your browser, and you can browse the site from link to link, as if you were viewing it online. HTTrack can also update an existing mirrored site, and resume interrupted downloads. +.SH EXAMPLES +.TP +.B httrack www.someweb.com/bob/ + mirror site www.someweb.com/bob/ and only this site +.TP +.B httrack www.someweb.com/bob/ www.anothertest.com/mike/ +*.com/*.jpg + mirror the two sites together (with shared links) and accept any .jpg files on .com sites +.TP +.B httrack www.someweb.com/bob/bobby.html +* -r6 +means get all files starting from bobby.html, with 6 link-depth, and possibility of going everywhere on the web +.TP +.B httrack www.someweb.com/bob/bobby.html --spider -P proxy.myhost.com:8080 +runs the spider on www.someweb.com/bob/bobby.html using a proxy +.TP +.B httrack --update +updates a mirror in the current folder +.TP +.B httrack +will bring you to the interactive mode +.TP +.B httrack --continue +continues a mirror in the current folder +.SH OPTIONS +.SS General options: +.IP -O +path for mirror/logfiles+cache (-O path +mirror[,path +cache +and +logfiles]) (--path ) + +.SS Action options: +.IP -w +*mirror web sites (--mirror) +.IP -W +mirror web sites, semi-automatic (asks questions) (--mirror-wizard) +.IP -g +just get files (saved in the current directory) (--get-files) +.IP -i +continue an interrupted mirror using the cache (--continue) +.IP -Y +mirror ALL links located in the first level pages (mirror links) (--mirrorlinks) + +.SS Proxy options: +.IP -P +proxy use (-P proxy:port or -P user:pass@proxy:port) (--proxy ) +.IP -%f +*use proxy for ftp (f0 don t use) (--httpproxy-ftp[=N]) +.IP -%b +use this local hostname to make/send requests (-%b hostname) (--bind ) + +.SS Limits options: +.IP -rN +set the mirror depth to N (* r9999) (--depth[=N]) +.IP -%eN +set the external links depth to N (* %e0) (--ext-depth[=N]) +.IP -mN +maximum file length for a non-html file (--max-files[=N]) +.IP -mN,N2 +maximum file length for non html (N) and html (N2) +.IP -MN +maximum overall size that can be uploaded/scanned (--max-size[=N]) +.IP -EN +maximum mirror time in seconds (60=1 minute, 3600=1 hour) (--max-time[=N]) +.IP -AN +maximum transfer rate in bytes/seconds (1000=1KB/s max) (--max-rate[=N]) +.IP -%cN +maximum number of connections/seconds (*%c10) (--connection-per-second[=N]) +.IP -GN +pause transfer if N bytes reached, and wait until lock file is deleted (--max-pause[=N]) + +.SS Flow control: +.IP -cN +number of multiple connections (*c8) (--sockets[=N]) +.IP -TN +timeout, number of seconds after a non-responding link is shutdown (--timeout) +.IP -RN +number of retries, in case of timeout or non-fatal errors (*R1) (--retries[=N]) +.IP -JN +traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link (--min-rate[=N]) +.IP -HN +host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow (--host-control[=N]) + +.SS Links options: +.IP -%P +*extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don t use) (--extended-parsing[=N]) +.IP -n +get non-html files near an html file (ex: an image located outside) (--near) +.IP -t +test all URLs (even forbidden ones) (--test) +.IP -%L + add all URL located in this text file (one URL per line) (--list ) +.IP -%S + add all scan rules located in this text file (one scan rule per line) (--urllist ) + +.SS Build options: +.IP -NN +structure type (0 *original structure, 1+: see below) (--structure[=N]) +.IP -or +user defined structure (-N "%h%p/%n%q.%t") +.IP -%M +generate a RFC MIME-encapsulated full-archive (.mht) (--mime-html[=N]) +.IP -LN +long names (L1 *long names / L0 8-3 conversion / L2 ISO9660 compatible) (--long-names[=N]) +.IP -KN +keep original links (e.g. http://www.adr/link) (K0 *relative link, K absolute links, K4 original links, K3 absolute URI links) (--keep-links[=N]) +.IP -x +replace external html links by error pages (--replace-external) +.IP -%x +do not include any password for external password protected websites (%x0 include) (--disable-passwords) +.IP -%q +*include query string for local files (useless, for information purpose only) (%q0 don t include) (--include-query-string) +.IP -o +*generate output html file in case of error (404..) (o0 don t generate) (--generate-errors) +.IP -X +*purge old files after update (X0 keep delete) (--purge-old[=N]) +.IP -%p +preserve html files as is (identical to -K4 -%F "" ) (--preserve) + +.SS Spider options: +.IP -bN +accept cookies in cookies.txt (0=do not accept,* 1=accept) (--cookies[=N]) +.IP -u +check document type if unknown (cgi,asp..) (u0 don t check, * u1 check but /, u2 check always) (--check-type[=N]) +.IP -j +*parse Java Classes (j0 don t parse) (--parse-java[=N]) +.IP -sN +follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always) (--robots[=N]) +.IP -%h +force HTTP/1.0 requests (reduce update features, only for old servers or proxies) (--http-10) +.IP -%k +use keep-alive if possible, greately reducing latency for small files and test requests (%k0 don t use) (--keep-alive) +.IP -%B +tolerant requests (accept bogus responses on some servers, but not standard!) (--tolerant) +.IP -%s +update hacks: various hacks to limit re-transfers when updating (identical size, bogus response..) (--updatehack) +.IP -%u +url hacks: various hacks to limit duplicate URLs (strip //, www.foo.com==foo.com..) (--urlhack) +.IP -%A +assume that a type (cgi,asp..) is always linked with a mime type (-%A php3,cgi=text/html;dat,bin=application/x-zip) (--assume ) +.IP -@iN +internet protocol (0=both ipv6+ipv4, 4=ipv4 only, 6=ipv6 only) (--protocol[=N]) + +.SS Browser ID: +.IP -F +user-agent field (-F "user-agent name") (--user-agent ) +.IP -%F +footer string in Html code (-%F "Mirrored [from host %s [file %s [at %s]]]" (--footer ) +.IP -%l +preffered language (-%l "fr, en, jp, *" (--language ) + +.SS Log, index, cache +.IP -C +create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before) (--cache[=N]) +.IP -k +store all files in cache (not useful if files on disk) (--store-all-in-cache) +.IP -%n +do not re-download locally erased files (--do-not-recatch) +.IP -%v +display on screen filenames downloaded (in realtime) - * %v1 short version (--display) +.IP -Q +no log - quiet mode (--do-not-log) +.IP -q +no questions - quiet mode (--quiet) +.IP -z +log - extra infos (--extra-log) +.IP -Z +log - debug (--debug-log) +.IP -v +log on screen (--verbose) +.IP -f +*log in files (--file-log) +.IP -f2 +one single log file (--single-log) +.IP -I +*make an index (I0 don t make) (--index) +.IP -%i +make a top index for a project folder (* %i0 don t make) (--build-top-index) +.IP -%I +make an searchable index for this mirror (* %I0 don t make) (--search-index) + +.SS Expert options: +.IP -pN +priority mode: (* p3) (--priority[=N]) +.IP -p0 +just scan, don t save anything (for checking links) +.IP -p1 +save only html files +.IP -p2 +save only non html files +.IP -*p3 +save all files +.IP -p7 +get html files before, then treat other files +.IP -S +stay on the same directory (--stay-on-same-dir) +.IP -D +*can only go down into subdirs (--can-go-down) +.IP -U +can only go to upper directories (--can-go-up) +.IP -B +can both go up&down into the directory structure (--can-go-up-and-down) +.IP -a +*stay on the same address (--stay-on-same-address) +.IP -d +stay on the same principal domain (--stay-on-same-domain) +.IP -l +stay on the same TLD (eg: .com) (--stay-on-same-tld) +.IP -e +go everywhere on the web (--go-everywhere) +.IP -%H +debug HTTP headers in logfile (--debug-headers) + +.SS Guru options: (do NOT use if possible) +.IP -#X +*use optimized engine (limited memory boundary checks) (--fast-engine) +.IP -#0 +filter test (-#0 *.gif www.bar.com/foo.gif ) (--debug-testfilters ) +.IP -#C +cache list (-#C *.com/spider*.gif (--debug-cache ) +.IP -#f +always flush log files (--advanced-flushlogs) +.IP -#FN +maximum number of filters (--advanced-maxfilters[=N]) +.IP -#h +version info (--version) +.IP -#K +scan stdin (debug) (--debug-scanstdin) +.IP -#L +maximum number of links (-#L1000000) (--advanced-maxlinks) +.IP -#p +display ugly progress information (--advanced-progressinfo) +.IP -#P +catch URL (--catch-url) +.IP -#R +old FTP routines (debug) (--debug-oldftp) +.IP -#T +generate transfer ops. log every minutes (--debug-xfrstats) +.IP -#u +wait time (--advanced-wait) +.IP -#Z +generate transfer rate statictics every minutes (--debug-ratestats) +.IP -#! +execute a shell command (-#! "echo hello") (--exec ) + +.SS Command-line specific options: +.IP -V +execute system command after each files ($0 is the filename: -V "rm \$0") (--userdef-cmd ) +.IP -%U +run the engine with another id when called as root (-%U smith) (--user ) +.IP -%W +use an external library function as a wrapper (-%W link-detected=foo.so:myfunction) (--callback ) + +.SS Details: Option N +.IP -N0 +Site-structure (default) +.IP -N1 +HTML in web/, images/other files in web/images/ +.IP -N2 +HTML in web/HTML, images/other in web/images +.IP -N3 +HTML in web/, images/other in web/ +.IP -N4 +HTML in web/, images/other in web/xxx, where xxx is the file extension (all gif will be placed onto web/gif, for example) +.IP -N5 +Images/other in web/xxx and HTML in web/HTML +.IP -N99 +All files in web/, with random names (gadget !) +.IP -N100 +Site-structure, without www.domain.xxx/ +.IP -N101 +Identical to N1 exept that "web" is replaced by the site s name +.IP -N102 +Identical to N2 exept that "web" is replaced by the site s name +.IP -N103 +Identical to N3 exept that "web" is replaced by the site s name +.IP -N104 +Identical to N4 exept that "web" is replaced by the site s name +.IP -N105 +Identical to N5 exept that "web" is replaced by the site s name +.IP -N199 +Identical to N99 exept that "web" is replaced by the site s name +.IP -N1001 +Identical to N1 exept that there is no "web" directory +.IP -N1002 +Identical to N2 exept that there is no "web" directory +.IP -N1003 +Identical to N3 exept that there is no "web" directory (option set for g option) +.IP -N1004 +Identical to N4 exept that there is no "web" directory +.IP -N1005 +Identical to N5 exept that there is no "web" directory +.IP -N1099 +Identical to N99 exept that there is no "web" directory +.SS Details: User-defined option N + %n Name of file without file type (ex: image) + %N Name of file, including file type (ex: image.gif) + %t File type (ex: gif) + %p Path [without ending /] (ex: /someimages) + %h Host name (ex: www.someweb.com) + %M URL MD5 (128 bits, 32 ascii bytes) + %Q query string MD5 (128 bits, 32 ascii bytes) + %q small query string MD5 (16 bits, 4 ascii bytes) + %s? Short name version (ex: %sN) + %[param] param variable in query string + %[param:before:after:notfound:empty] advanced variable extraction +.SS Details: User-defined option N and advanced variable extraction + %[param:before:after:notfound:empty] +.IP -param +: parameter name +.IP -before +: string to prepend if the parameter was found +.IP -after +: string to append if the parameter was found +.IP -notfound +: string replacement if the parameter could not be found +.IP -empty +: string replacement if the parameter was empty +.IP -all +fields, except the first one (the parameter name), can be empty + +.SS Details: Option K +.IP -K0 +foo.cgi?q=45 -> foo4B54.html?q=45 (relative URI, default) +.IP -K +-> http://www.foobar.com/folder/foo.cgi?q=45 (absolute URL) (--keep-links[=N]) +.IP -K4 +-> foo.cgi?q=45 (original URL) +.IP -K3 +-> /folder/foo.cgi?q=45 (absolute URI) + +.SS Shortcuts: +.IP --mirror + *make a mirror of site(s) (default) +.IP --get + get the files indicated, do not seek other URLs (-qg) +.IP --list + add all URL located in this text file (-%L) +.IP --mirrorlinks + mirror all links in 1st level pages (-Y) +.IP --testlinks + test links in pages (-r1p0C0I0t) +.IP --spider + spider site(s), to test links: reports Errors & Warnings (-p0C0I0t) +.IP --testsite + identical to --spider +.IP --skeleton + make a mirror, but gets only html files (-p1) +.IP --update + update a mirror, without confirmation (-iC2) +.IP --continue + continue a mirror, without confirmation (-iC1) + +.IP --catchurl + create a temporary proxy to capture an URL or a form post URL +.IP --clean + erase cache & log files + +.IP --http10 + force http/1.0 requests (-%h) + +.SS Details: Option %W: External callbacks prototypes +.SS init : void (* myfunction)(void); +.SS free : void (* myfunction)(void); +.SS start : int (* myfunction)(httrackp* opt); +.SS end : int (* myfunction)(void); +.SS change-options : int (* myfunction)(httrackp* opt); +.SS check-html : int (* myfunction)(char* html,int len,char* url +adresse,char* url +fichier); +.SS query : char* (* myfunction)(char* question); +.SS query2 : char* (* myfunction)(char* question); +.SS query3 : char* (* myfunction)(char* question); +.SS loop : int (* myfunction)(lien +back* back,int back +max,int back +index,int lien +tot,int lien +ntot,int stat +time,hts +stat +struct* stats); +.SS check-link : int (* myfunction)(char* adr,char* fil,int status); +.SS pause : void (* myfunction)(char* lockfile); +.SS save-file : void (* myfunction)(char* file); +.SS link-detected : int (* myfunction)(char* link); +.SS transfer-status : int (* myfunction)(lien +back* back); +.SS save-name : int (* myfunction)(char* adr +complete,char* fil +complete,char* referer +adr,char* referer +fil,char* save); +.SH FILES +.I /etc/httrack.conf +.RS +The system wide configuration file. +.SH ENVIRONMENT +.IP HOME +Is being used if you defined in /etc/httrack.conf the line +.I path ~/websites/# +.SH DIAGNOSTICS +Errors/Warnings are reported to +.I hts-log.txt +by default, or to stderr if the +.I -v +option was specified. +.SH LIMITS +These are the principals limits of HTTrack for that moment. Note that we did not heard about any other utility +that would have solved them. + + +.SM - Several scripts generating complex filenames may not find them (ex: img.src='image'+a+Mobj.dst+'.gif') + +.SM - Some java classes may not find some files on them (class included) + +.SM - Cgi-bin links may not work properly in some cases (parameters needed). To avoid them: use filters like -*cgi-bin* + +.SH BUGS +Please reports bugs to +.B . +Include a complete, self-contained example that will allow the bug to be reproduced, and say which version of httrack you are using. Do not forget to detail options used, OS version, and any other information you deem necessary. +.SH COPYRIGHT +Copyright (C) Xavier Roche and other contributors + +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 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. +.SH AVAILABILITY +The most recent released version of httrack can be found at: +.B http://www.httrack.com +.SH AUTHOR +Xavier Roche +.SH "SEE ALSO" +The +.B HTML +documentation (available online at +.B http://www.httrack.com/html/ +) contains more detailed information. Please also refer to the +.B httrack FAQ +(available online at +.B http://www.httrack.com/html/faq.html +) diff --git a/man/httrack.1.gz b/man/httrack.1.gz deleted file mode 100644 index b56bbac..0000000 Binary files a/man/httrack.1.gz and /dev/null differ diff --git a/man/webhttrack.1 b/man/webhttrack.1 new file mode 100644 index 0000000..399cbc2 --- /dev/null +++ b/man/webhttrack.1 @@ -0,0 +1,68 @@ +.\" Process this file with +.\" groff -man -Tascii webhttrack.1 +.\" +.TH webhttrack 1 "Mar 2003" "httrack website copier" +.SH NAME +webhttrack \- offline browser : copy websites to a local directory +.SH SYNOPSIS +.B webhttrack [ keyword value [ keyword value .. ] ] +.B +.SH DESCRIPTION +.B webhttrack +this program is a script frontend to +.BR httrack (1) +and +.BR htsserver (1) +, a website copier. +.SH EXAMPLES +.TP +.B webhttrack lang 1 + will launch the webhttrack server frontend, and the default system browser, with "lang" set to "english" (language #1) +.SH FILES +.I /etc/httrack.conf +.RS +The system wide configuration file. +.SH ENVIRONMENT +.IP HOME +Is being used if you defined in /etc/httrack.conf the line +.I path ~/websites/# +.SH DIAGNOSTICS +Errors/Warnings are reported to +.I hts-log.txt +located in the destination directory. + +.SH BUGS +Please reports bugs to +.B . +Include a complete, self-contained example that will allow the bug to be reproduced, and say which version of (web)httrack you are using. Do not forget to detail options used, OS version, and any other information you deem necessary. +.SH COPYRIGHT +Copyright (C) Xavier Roche and other contributors + +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 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. +.SH AVAILABILITY +The most recent released version of (web)httrack can be found at: +.B http://www.httrack.com +.SH AUTHOR +Xavier Roche +.SH "SEE ALSO" +The +.B HTML +documentation (available online at +.B http://www.httrack.com/html/ +) contains more detailed information. Please also refer to the +.B httrack FAQ +(available online at +.B http://www.httrack.com/html/faq.html +) diff --git a/missing b/missing new file mode 100755 index 0000000..6a37006 --- /dev/null +++ b/missing @@ -0,0 +1,336 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 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., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# 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 + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -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' + 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]" + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing 0.4 - GNU automake" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, and you do not seem to have it handy on your + system. You might have modified some files without having the + proper tools for further handling them. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + 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' is missing on your system. 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 [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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 [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is missing on your system. 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." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # 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 you do not seem to have it handy on your + system. 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 prerequirements 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 diff --git a/mkinstalldirs b/mkinstalldirs new file mode 100755 index 0000000..8ab885e --- /dev/null +++ b/mkinstalldirs @@ -0,0 +1,99 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy +# Author: Noah Friedman +# Created: 1993-05-16 +# Public domain + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..." + +# process command line arguments +while test $# -gt 0 ; do + case "${1}" in + -h | --help | --h* ) # -h for help + echo "${usage}" 1>&2; exit 0 ;; + -m ) # -m PERM arg + shift + test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; } + dirmode="${1}" + shift ;; + -- ) shift; break ;; # stop option processing + -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option + * ) break ;; # first non-opt arg + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in +0) exit 0 ;; +esac + +case $dirmode in +'') + if mkdir -p -- . 2>/dev/null; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + fi ;; +*) + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + fi ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + 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: 3 +# End: +# mkinstalldirs ends here diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index be898d9..0000000 --- a/src/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -all : - @echo "please launch configure before! :" - @echo "./configure" - @echo "" - @echo "then, you can launch:" - @echo "make" - @echo "make install" - @echo "" - @echo "(see INSTALL file to know how-to-install)" - diff --git a/src/Makefile.am b/src/Makefile.am new file mode 100644 index 0000000..c391d3f --- /dev/null +++ b/src/Makefile.am @@ -0,0 +1,60 @@ +#SUBDIRS = swf + +DevIncludesdir = $(includedir)/httrack +DevIncludes_DATA = httrack-library.h \ + htsglobal.h \ + htsopt.h \ + htswrap.h \ + htssystem.h \ + htsconfig.h \ + ../config.h \ + htsmodules.h \ + htsbasenet.h \ + htsbauth.h + +INCLUDES = \ + @DEFAULT_CFLAGS@ \ + @THREADS_CFLAGS@ \ + @V6_FLAG@ \ + @LFS_FLAG@ \ + -DPREFIX=\""$(prefix)"\" \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DDATADIR=\""$(datadir)"\" \ + -DLIBDIR=\""$(libdir)"\" + +bin_PROGRAMS = httrack htsserver + +httrack_LDADD = $(THREADS_LIBS) -lhttrack +htsserver_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) -lhttrack + +lib_LTLIBRARIES = libhttrack.la + +htsserver_SOURCES = htsserver.c htsserver.h htsweb.c htsweb.h + +whttrackrundir = $(bindir) +whttrackrun_SCRIPTS = webhttrack + +libhttrack_la_SOURCES = htscore.c htsparse.c htsback.c htscache.c \ + htscatchurl.c htsfilters.c htsftp.c htshash.c htsinthash.c \ + htshelp.c htsjava.c htslib.c htscoremain.c \ + htsname.c htsrobots.c htstools.c htswizard.c \ + htsalias.c htsthread.c htsindex.c htsbauth.c \ + htsmd5.c htszlib.c htsnostatic.c htswrap.c \ + htsmodules.c \ + md5.c \ + hts-indextmpl.h htsalias.h htsback.h htsbase.h \ + htsbasenet.h htsbauth.h htscache.h htscatchurl.h \ + htsconfig.h htscore.h htsparse.h htscoremain.h htsdefines.h \ + htsfilters.h htsftp.h htsglobal.h htshash.h htsinthash.h \ + htshelp.h htsindex.h htsjava.h htslib.h htsmd5.h \ + htsmodules.h htsname.h htsnet.h htsnostatic.h \ + htsopt.h htsrobots.h htssystem.h htsthread.h \ + htstools.h htswizard.h htswrap.h htszlib.h \ + httrack-library.h md5.h + +libhttrack_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS) $(SOCKET_LIBS) +libhttrack_la_LDFLAGS = -version-info $(VERSION_INFO) + +EXTRA_DIST = httrack.h webhttrack \ + httrack.dsp httrack.dsw \ + webhttrack.dsp webhttrack.dsw diff --git a/src/Makefile.in b/src/Makefile.in index 57bf1d3..22590c6 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -1,417 +1,639 @@ -# HTTrack Website Copier, Offline Browser for Windows and Unix -# Copyright (C) Xavier Roche and other contributors -# -# 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 any later version. -# +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# Version: 1.3 (09/2001) -# Usage: just type 'make' - -# Generated by configure -AUTONAME = -#__AUTONAME__ - - -### Makefile commands -SHELL = /bin/sh -MAIN = -CC = gcc -CFLAGS = __CFLAGS__ -# threads -LFLAGS = __LFLAGS__ __LFLAGS2__ __LFLAGS3__ - - -BINARIES = htscore.o htsback.o htscache.o\ - htscatchurl.o htsfilters.o htsftp.o htshash.o\ - htshelp.o htsjava.o htslib.o htscoremain.o\ - htsname.o htsrobots.o htstools.o htswizard.o\ - htsalias.o htsthread.o htsindex.o\ - htsbauth.o htsmd5.o\ - htswrap.o md5.o htszlib.o\ - htsnostatic.o \ - httrack.o - -SOBINARIES = htscore.o htsback.o htscache.o\ - htscatchurl.o htsfilters.o htsftp.o htshash.o\ - htshelp.o htsjava.o htslib.o htscoremain.o\ - htsname.o htsrobots.o htstools.o htswizard.o\ - htsalias.o htsthread.o htsindex.o\ - htsbauth.o htsmd5.o htszlib.o\ - htsnostatic.o \ - htswrap.o md5.o - -MAINBIN = httrack.c - -BOUTPUT = httrack -BOUTPUTSO = libhttrack.so -DOCS = ../HelpHtml ../templates ../httrack-doc.html ../COPYING ../INSTALL ../README ../*.txt -HTSSYSTEM = htssystem.h -BINPATH = __BINPATH__ -ETCPATH = __ETCPATH__ -LIBPATH = __LIBPATH__ -PREFIX = __PREFIX__ - -## Defines for "library" (program compiled with HTTrack) -BINARIES_LIB = example.o httracklib.o\ - src/htscore.o src/htsback.o src/htscache.o\ - src/htscatchurl.o src/htsfilters.o src/htsftp.o src/htshash.o\ - src/htshelp.o src/htsjava.o src/htslib.o src/htscoremain.o\ - src/htsname.o src/htsrobots.o src/htstools.o src/htswizard.o\ - src/htsalias.o src/htsthread.o src/htsindex.o\ - src/htsbauth.o src/htsmd5.o htszlib.o\ - src/htsshow.o src/htswrap.o\ - src/htsnostatic.o \ - src/md5.o -BOUTPUT_LIB = example -HTSSYSTEM_LIB = src/htssystem.h - -# in_addr_t problems : -# In case of problems during compiling, -# make htss -# edit htssystem.h and add the following line: -# #define HTS_DO_NOT_REDEFINE_in_addr_t -# make manual - - -# Keywords for build types (example: make linux) -MAKE_LINUX = linux -MAKE_NETBSD = netbsd -MAKE_OPENBSD = openbsd -MAKE_SOLARIS = solaris -MAKE_AIX = aix -MAKE_STD = standard -MAKE_STD2 = standard2 -MAKE_STD3 = standard3 -MAKE_STD4 = standard4 -### -MAKE_LIB = build_httracklib -### -MAKE_AUTO = auto -### - -# First, detect OS Type -# If your make does not recognize this, change it! -SHORTUNAME = $(shell uname) -FULLUNAME = $(shell uname -a) - -### Targets: - -# Default target, attempt to use uname if necessary -# if uname is empty, display info message -all : - @if test -n "$(AUTONAME)"; then\ - $(MAKE) $(AUTONAME);\ - elif test -n "$(SHORTUNAME)"; then\ - $(MAKE) $(SHORTUNAME);\ - else\ - $(MAKE) help;\ - fi - -# If we can not detect the OS Type, show a message info -help : - @clear - @echo "" - @echo "Welcome to HTTrack Website Copier install!" - @echo "-----------------------------------------" - @echo "" - @echo "1. To make HTTrack, just type in:" - @echo " make $(MAKE_LINUX)" - @echo " or" - @echo " make $(MAKE_NETBSD)" - @echo " or" - @echo " make $(MAKE_OPENBSD)" - @echo " or" - @echo " make $(MAKE_SOLARIS)" - @echo " or" - @echo " make $(MAKE_AIX)" - @echo " or" - @echo " make $(MAKE_STD)" - @echo " or (problems with in_addr_t)" - @echo " make $(MAKE_STD2)" - @echo " or (problems with 64-bit)" - @echo " make $(MAKE_STD3)" - @echo " or (problems with both in_addr_t and 64-bit)" - @echo " make $(MAKE_STD4)" - @echo "" - @echo "According to your OS type" - @echo "(example: type in 'make $(MAKE_LINUX)' if you compile HTTrack with linux)" - @echo - @echo "Or, if it does not work, you can try " - @echo " make htss" - @echo " edit htssystem.h (check OS type), and add the following line:" - @echo " #define HTS_DO_NOT_REDEFINE_in_addr_t" - @echo " make manual" - @echo - @echo "2. Then, type in 'make install' to copy httrack to $(BINPATH)" - @echo " or just use ./httrack to launch the program" - @echo "" - @echo "3. Build problems, type in:" - @echo " make moreinfo" - @echo "" - @echo "Have fun with HTTrack Website Copier!" - @echo "" -info : help - -# Troubleshooter -moreinfo : - @echo "Known problems:" - @echo "" - @echo "\`in_addr_t' undeclared (first use this function)" - @echo "see in_addr_t problems in Makefile" - @echo "" - -### - -## Build Targets (this is the name given by 'uname') -Linux : $(MAKE_LINUX) -SunOS : $(MAKE_SOLARIS) -AIX : $(MAKE_AIX) -NetBSD : $(MAKE_NETBSD) -OpenBSD : $(MAKE_OPENBSD) - -### Build Targets (standard types) -default : firstinfo htssystem htssystem_default build_default strip clean lastinfo -$(MAKE_LINUX) : firstinfo htssystem htssystem_linux build_default strip clean lastinfo -$(MAKE_SOLARIS) : firstinfo htssystem htssystem_solaris build_solaris strip clean lastinfo -$(MAKE_AIX) : firstinfo htssystem htssystem_aix build_default strip clean lastinfo -$(MAKE_NETBSD) : firstinfo htssystem htssystem_netbsd build_default strip clean lastinfo -$(MAKE_OPENBSD) : firstinfo htssystem htssystem_openbsd build_nopthread strip clean lastinfo -$(MAKE_STD) : firstinfo htssystem htssystem_default build_default strip clean lastinfo -$(MAKE_STD2) : firstinfo htssystem htssystem_default2 build_default strip clean lastinfo -$(MAKE_STD3) : firstinfo htssystem htssystem_default3 build_default strip clean lastinfo -$(MAKE_STD4) : firstinfo htssystem htssystem_default4 build_default strip clean lastinfo -### Defines for "library" (program compiled with HTTrack) -$(MAKE_LIB) : build_lib strip_lib clean_lib lastinfo -### -$(MAKE_AUTO) : __MAKEAUTO__ -### - -## Defines for OSes -lib_default : htssystem htssystem_default addhtssystem_lib info_lib -lib_linux : htssystem htssystem_linux addhtssystem_lib info_lib -lib_solaris : htssystem htssystem_solaris addhtssystem_lib info_lib -lib_aix : htssystem htssystem_aix addhtssystem_lib info_lib -lib_netbsd : htssystem htssystem_netbsd addhtssystem_lib info_lib -lib_openbsd : htssystem htssystem_openbsd addhtssystem_lib info_lib -lib_std : htssystem htssystem_default addhtssystem_lib info_lib - - -# manual build -htss : htssystem htssystem_default -manual : build_default strip clean lastinfo - -# Creates htssystem.h file -htssystem : - @echo "/* HTTrack, Offline Browser for Windows and Unix */" > $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - @echo "/* HTTrack system definition */" >> $(HTSSYSTEM) - @echo "/* This should be the only file you have to change */" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - @echo "/* Solaris: 0 / Windows: 1 / AIX: 2 / Linux: 3 */" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - @echo "/* Fix plateform number to 0 (SunOS) */" >> $(HTSSYSTEM) - @echo "/* If it doesn't compile, try another one */" >> $(HTSSYSTEM) - -htssystem_solaris : - @echo "#define HTS_PLATFORM 0" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define HTS_LITTLE_ENDIAN" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_aix : - @echo "#define HTS_PLATFORM 2" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define HTS_LITTLE_ENDIAN" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_linux : - @echo "#define HTS_PLATFORM 3" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_netbsd: - @echo "#define HTS_PLATFORM 3" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define HTS_DO_NOT_REDEFINE_in_addr_t" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_openbsd: - @echo "#define HTS_PLATFORM 3" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define HTS_DO_NOT_REDEFINE_in_addr_t" >> $(HTSSYSTEM) - @echo "#define HTS_DO_NOT_USE_PTHREAD" >> $(HTSSYSTEM) - @echo "#define HTS_DO_NOT_USE_UID" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_nopthread: - @echo "#define HTS_PLATFORM 3" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define HTS_DO_NOT_USE_PTHREAD" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_default : - @echo "#define HTS_PLATFORM 3" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_default2 : - @echo "#define HTS_PLATFORM 3" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define HTS_DO_NOT_REDEFINE_in_addr_t" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_default3 : - @echo "#define HTS_PLATFORM 3" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define HTS_NO_64_BIT" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -htssystem_default4 : - @echo "#define HTS_PLATFORM 3" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define HTS_DO_NOT_REDEFINE_in_addr_t" >> $(HTSSYSTEM) - @echo "#define HTS_NO_64_BIT" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -# Generated by configure -htssystem_auto : - @echo "#define HTS_PLATFORM __PLATFORM__" >> $(HTSSYSTEM) - @echo "#define HTS_PLATFORM_NAME \"$(FULLUNAME)\"" >> $(HTSSYSTEM) - @echo "#define __DEFINEUID__" >> $(HTSSYSTEM) - @echo "#define __DEFINEINA__" >> $(HTSSYSTEM) - @echo "#define __DEFINEPTH__" >> $(HTSSYSTEM) - @echo "#define __DEFINE64B__" >> $(HTSSYSTEM) - @echo "#define __DEFINEFTI__" >> $(HTSSYSTEM) - @echo "#define HTS_PREFIX \"__DEFINEPRE__\"" >> $(HTSSYSTEM) - @echo "#define HTS_BINPATH \"__BINPATH__\"" >> $(HTSSYSTEM) - @echo "#define HTS_ETCPATH \"__ETCPATH__\"" >> $(HTSSYSTEM) - @echo "#define HTS_LIBPATH \"__LIBPATH__\"" >> $(HTSSYSTEM) - @echo "#define HTS_USEZLIB __ZLIB__" >> $(HTSSYSTEM) - @echo "#define HTS_ALIGN __PTRALIGN__" >> $(HTSSYSTEM) - @echo "#define HTS_INET6 __INET6__" >> $(HTSSYSTEM) - @echo "#define HTS_USEOPENSSL __SSL__" >> $(HTSSYSTEM) - -## Defines for "library" (program compiled with HTTrack) -addhtssystem_lib : - @echo "/* Extended functions */" >> $(HTSSYSTEM) - @echo "#define HTS_ANALYSTE 2" >> $(HTSSYSTEM) - @echo "" >> $(HTSSYSTEM) - -# Info message before build -firstinfo : - @echo "Building all, please wait" - @echo "In case of problems, type in:" - @echo "make help" - @echo "" - @echo "OS TYPE: $(SHORTUNAME)" - @echo "Make mode: $(MAKECMDGOALS)" - @echo - -## -info_lib : - @echo "Please copy htssystem.h to src/htssystem.h by typing:" - @echo "cp htssystem.h src/htssystem.h" - -### Targets for compiling -build_solaris : $(BINARIES) - $(CC) $(CFLAGS) $(BINARIES) -o $(BOUTPUT) $(LFLAGS) -lnsl -lsocket - chmod 755 $(BOUTPUT) - -build_nopthread: $(BINARIES) - $(CC) $(NOPCFLAGS) $(BINARIES) -o $(BOUTPUT) $(NOPLFLAGS) - chmod 755 $(BOUTPUT) - -build_default : $(BINARIES) - $(CC) $(CFLAGS) $(BINARIES) -o $(BOUTPUT) $(LFLAGS) - chmod 755 $(BOUTPUT) - -## Defines for "library" (program compiled with HTTrack) -build_lib : $(BINARIES_LIB) - $(CC) $(CFLAGS) $(BINARIES_LIB) -o $(BOUTPUT_LIB) $(LFLAGS) - chmod 644 $(BOUTPUT_LIB) - -## Auto -build_auto : build_bin__DYNAMIC__ - -build_bin : $(BINARIES) - $(CC) $(CFLAGS) $(BINARIES) -o $(BOUTPUT) $(LFLAGS) - chmod 755 $(BOUTPUT) - -build_binso : $(SOBINARIES) - $(CC) $(CFLAGS) -shared -Wl,-x,-soname,$(BOUTPUTSO) -o $(BOUTPUTSO) $(SOBINARIES) -lc $(LFLAGS) - $(CC) -L. -lhttrack $(MAINBIN) -o $(BOUTPUT) - chmod 755 $(BOUTPUT) - -## -# Strip file so that is can be shorter -strip : - strip --strip-all $(BOUTPUT) || strip $(BOUTPUT) - __STRIPLIB__ - -strip_lib : - strip --strip-unneeded $(BOUTPUT_LIB) - -# Cleaning up.. -clean : - rm -f $(BINARIES) - -## Defines for "library" (program compiled with HTTrack) -clean_lib : - rm -f $(BINARIES_LIB) - -# Bye bye -lastinfo : - @echo "Build successful" - -# Installing httrack into the correct folder -install : __INSTALL__ -uninstall : remove -remove : __UNINSTALL__ - -# Install docs -docinstall : - (mkdir -p "$(PREFIX)/doc/httrack" && chmod 755 "$(PREFIX)/doc/httrack") || true - cp -fR $(DOCS) "$(PREFIX)/doc/httrack/" - -# Uninstall docs -docremove : - rm -rf "$(PREFIX)/doc/httrack" - -# Install binaries and conf files -bininstall : - @echo "Copying $(BOUTPUT) to $(BINPATH).." - test ! -d "$(BINPATH)" && (mkdir -p "$(BINPATH)" && chmod 755 "$(BINPATH)") || true - cp -f $(BOUTPUT) $(BINPATH) - chmod 755 $(BINPATH)/$(BOUTPUT) - -libremove : - rm -f "$(LIBPATH)/$(BOUTPUTSO)" - test -L "$(PREFIX)/lib/$(BOUTPUTSO).1" && rm -f "$(PREFIX)/lib/$(BOUTPUTSO).1" || true - -libinstall : - @echo "Copying $(BOUTPUTSO) to $(LIBPATH)/.." - test ! -d "$(LIBPATH)" && (mkdir -p "$(LIBPATH)" && chmod 755 "$(LIBPATH)") || true - cp -f $(BOUTPUTSO) $(LIBPATH)/ - chmod 644 $(LIBPATH)/$(BOUTPUTSO) - ln -sf "$(BOUTPUTSO)" "$(PREFIX)/lib/$(BOUTPUTSO).1" - - -# Uninstall binaries -binremove : - rm -f $(BINPATH)/$(BOUTPUT) - rm -f $(ETCPATH)/httrack.conf - -# Configure program -config : - @./postinst-config - -### +# 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@ + +#SUBDIRS = swf + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_CFLAGS = @DEFAULT_CFLAGS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LFS_FLAG = @LFS_FLAG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +STRIP = @STRIP@ +THREADS_CFLAGS = @THREADS_CFLAGS@ +THREADS_LIBS = @THREADS_LIBS@ +V6_FLAG = @V6_FLAG@ +VERSION = @VERSION@ +VERSION_INFO = @VERSION_INFO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +DevIncludesdir = $(includedir)/httrack +DevIncludes_DATA = httrack-library.h \ + htsglobal.h \ + htsopt.h \ + htswrap.h \ + htssystem.h \ + htsconfig.h \ + ../config.h \ + htsmodules.h \ + htsbasenet.h \ + htsbauth.h + + +INCLUDES = \ + @DEFAULT_CFLAGS@ \ + @THREADS_CFLAGS@ \ + @V6_FLAG@ \ + @LFS_FLAG@ \ + -DPREFIX=\""$(prefix)"\" \ + -DSYSCONFDIR=\""$(sysconfdir)"\" \ + -DDATADIR=\""$(datadir)"\" \ + -DLIBDIR=\""$(libdir)"\" + + +bin_PROGRAMS = httrack htsserver + +httrack_LDADD = $(THREADS_LIBS) -lhttrack +htsserver_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) -lhttrack + +lib_LTLIBRARIES = libhttrack.la + +htsserver_SOURCES = htsserver.c htsserver.h htsweb.c htsweb.h + +whttrackrundir = $(bindir) +whttrackrun_SCRIPTS = webhttrack + +libhttrack_la_SOURCES = htscore.c htsparse.c htsback.c htscache.c \ + htscatchurl.c htsfilters.c htsftp.c htshash.c htsinthash.c \ + htshelp.c htsjava.c htslib.c htscoremain.c \ + htsname.c htsrobots.c htstools.c htswizard.c \ + htsalias.c htsthread.c htsindex.c htsbauth.c \ + htsmd5.c htszlib.c htsnostatic.c htswrap.c \ + htsmodules.c \ + md5.c \ + hts-indextmpl.h htsalias.h htsback.h htsbase.h \ + htsbasenet.h htsbauth.h htscache.h htscatchurl.h \ + htsconfig.h htscore.h htsparse.h htscoremain.h htsdefines.h \ + htsfilters.h htsftp.h htsglobal.h htshash.h htsinthash.h \ + htshelp.h htsindex.h htsjava.h htslib.h htsmd5.h \ + htsmodules.h htsname.h htsnet.h htsnostatic.h \ + htsopt.h htsrobots.h htssystem.h htsthread.h \ + htstools.h htswizard.h htswrap.h htszlib.h \ + httrack-library.h md5.h + + +libhttrack_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS) $(SOCKET_LIBS) +libhttrack_la_LDFLAGS = -version-info $(VERSION_INFO) + +EXTRA_DIST = httrack.h webhttrack \ + httrack.dsp httrack.dsw \ + webhttrack.dsp webhttrack.dsw + +subdir = src +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +LTLIBRARIES = $(lib_LTLIBRARIES) + +libhttrack_la_DEPENDENCIES = +am_libhttrack_la_OBJECTS = htscore.lo htsparse.lo htsback.lo htscache.lo \ + htscatchurl.lo htsfilters.lo htsftp.lo htshash.lo htsinthash.lo \ + htshelp.lo htsjava.lo htslib.lo htscoremain.lo htsname.lo \ + htsrobots.lo htstools.lo htswizard.lo htsalias.lo htsthread.lo \ + htsindex.lo htsbauth.lo htsmd5.lo htszlib.lo htsnostatic.lo \ + htswrap.lo htsmodules.lo md5.lo +libhttrack_la_OBJECTS = $(am_libhttrack_la_OBJECTS) +bin_PROGRAMS = httrack$(EXEEXT) htsserver$(EXEEXT) +PROGRAMS = $(bin_PROGRAMS) + +am_htsserver_OBJECTS = htsserver.$(OBJEXT) htsweb.$(OBJEXT) +htsserver_OBJECTS = $(am_htsserver_OBJECTS) +htsserver_DEPENDENCIES = +htsserver_LDFLAGS = +httrack_SOURCES = httrack.c +httrack_OBJECTS = httrack.$(OBJEXT) +httrack_DEPENDENCIES = +httrack_LDFLAGS = +SCRIPTS = $(whttrackrun_SCRIPTS) + + +DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/htsalias.Plo ./$(DEPDIR)/htsback.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htsbauth.Plo ./$(DEPDIR)/htscache.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htscatchurl.Plo ./$(DEPDIR)/htscore.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htscoremain.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htsfilters.Plo ./$(DEPDIR)/htsftp.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htshash.Plo ./$(DEPDIR)/htshelp.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htsindex.Plo ./$(DEPDIR)/htsinthash.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htsjava.Plo ./$(DEPDIR)/htslib.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htsmd5.Plo ./$(DEPDIR)/htsmodules.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htsname.Plo ./$(DEPDIR)/htsnostatic.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htsparse.Plo ./$(DEPDIR)/htsrobots.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htsserver.Po ./$(DEPDIR)/htsthread.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htstools.Plo ./$(DEPDIR)/htsweb.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/htswizard.Plo ./$(DEPDIR)/htswrap.Plo \ +@AMDEP_TRUE@ ./$(DEPDIR)/htszlib.Plo ./$(DEPDIR)/httrack.Po \ +@AMDEP_TRUE@ ./$(DEPDIR)/md5.Plo +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) \ + $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +DIST_SOURCES = $(libhttrack_la_SOURCES) $(htsserver_SOURCES) httrack.c +DATA = $(DevIncludes_DATA) + +DIST_COMMON = Makefile.am Makefile.in +SOURCES = $(libhttrack_la_SOURCES) $(htsserver_SOURCES) httrack.c + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) +libLTLIBRARIES_INSTALL = $(INSTALL) +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(libdir) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) $$p $(DESTDIR)$(libdir)/$$f"; \ + $(LIBTOOL) --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="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p"; \ + $(LIBTOOL) --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 +libhttrack.la: $(libhttrack_la_OBJECTS) $(libhttrack_la_DEPENDENCIES) + $(LINK) -rpath $(libdir) $(libhttrack_la_LDFLAGS) $(libhttrack_la_OBJECTS) $(libhttrack_la_LIBADD) $(LIBS) +binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(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) --mode=install $(binPROGRAMS_INSTALL) $$p $(DESTDIR)$(bindir)/$$f"; \ + $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --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 +htsserver$(EXEEXT): $(htsserver_OBJECTS) $(htsserver_DEPENDENCIES) + @rm -f htsserver$(EXEEXT) + $(LINK) $(htsserver_LDFLAGS) $(htsserver_OBJECTS) $(htsserver_LDADD) $(LIBS) +httrack$(EXEEXT): $(httrack_OBJECTS) $(httrack_DEPENDENCIES) + @rm -f httrack$(EXEEXT) + $(LINK) $(httrack_LDFLAGS) $(httrack_OBJECTS) $(httrack_LDADD) $(LIBS) +whttrackrunSCRIPT_INSTALL = $(INSTALL_SCRIPT) +install-whttrackrunSCRIPTS: $(whttrackrun_SCRIPTS) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(whttrackrundir) + @list='$(whttrackrun_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 " $(whttrackrunSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(whttrackrundir)/$$f"; \ + $(whttrackrunSCRIPT_INSTALL) $$d$$p $(DESTDIR)$(whttrackrundir)/$$f; \ + else :; fi; \ + done + +uninstall-whttrackrunSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(whttrackrun_SCRIPTS)'; for p in $$list; do \ + f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ + echo " rm -f $(DESTDIR)$(whttrackrundir)/$$f"; \ + rm -f $(DESTDIR)$(whttrackrundir)/$$f; \ + done + +mostlyclean-compile: + -rm -f *.$(OBJEXT) core *.core + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsalias.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsback.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsbauth.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscache.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscatchurl.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscore.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscoremain.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsfilters.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsftp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htshash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htshelp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsindex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsinthash.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsjava.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htslib.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsmd5.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsmodules.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsname.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsnostatic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsparse.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsrobots.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsserver.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsthread.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htstools.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsweb.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htswizard.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htswrap.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htszlib.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httrack.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@ + +distclean-depend: + -rm -rf ./$(DEPDIR) + +.c.o: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `test -f '$<' || echo '$(srcdir)/'`$< + +.c.obj: +@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'`; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'` + +.c.lo: +@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" \ +@am__fastdepCC_TRUE@ -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<; \ +@am__fastdepCC_TRUE@ then mv "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; \ +@am__fastdepCC_TRUE@ else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; \ +@am__fastdepCC_TRUE@ fi +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Plo' tmpdepfile='$(DEPDIR)/$*.TPlo' @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +DevIncludesDATA_INSTALL = $(INSTALL_DATA) +install-DevIncludesDATA: $(DevIncludes_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(DevIncludesdir) + @list='$(DevIncludes_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(DevIncludesDATA_INSTALL) $$d$$p $(DESTDIR)$(DevIncludesdir)/$$f"; \ + $(DevIncludesDATA_INSTALL) $$d$$p $(DESTDIR)$(DevIncludesdir)/$$f; \ + done + +uninstall-DevIncludesDATA: + @$(NORMAL_UNINSTALL) + @list='$(DevIncludes_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(DevIncludesdir)/$$f"; \ + rm -f $(DESTDIR)$(DevIncludesdir)/$$f; \ + done + +ETAGS = etags +ETAGSFLAGS = + +CTAGS = ctags +CTAGSFLAGS = + +tags: TAGS + +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; } \ + END { for (i in files) print i; }'`; \ + mkid -fID $$unique + +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; } \ + END { for (i in files) print i; }'`; \ + test -z "$(ETAGS_ARGS)$$tags$$unique" \ + || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique + +ctags: CTAGS +CTAGS: $(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; } \ + END { 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 +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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 $(LTLIBRARIES) $(PROGRAMS) $(SCRIPTS) $(DATA) +install-binPROGRAMS: install-libLTLIBRARIES + + +installdirs: + $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(bindir) $(DESTDIR)$(whttrackrundir) $(DESTDIR)$(DevIncludesdir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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-libLTLIBRARIES \ + clean-libtool mostlyclean-am + +distclean: distclean-am + +distclean-am: clean-am distclean-compile distclean-depend \ + distclean-generic distclean-libtool distclean-tags + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-DevIncludesDATA install-whttrackrunSCRIPTS + +install-exec-am: install-binPROGRAMS install-libLTLIBRARIES + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-DevIncludesDATA uninstall-binPROGRAMS \ + uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-whttrackrunSCRIPTS + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic clean-libLTLIBRARIES clean-libtool ctags \ + distclean distclean-compile distclean-depend distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am info \ + info-am install install-DevIncludesDATA install-am \ + install-binPROGRAMS install-data install-data-am install-exec \ + install-exec-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-strip \ + install-whttrackrunSCRIPTS 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-DevIncludesDATA uninstall-am uninstall-binPROGRAMS \ + uninstall-info-am uninstall-libLTLIBRARIES \ + uninstall-whttrackrunSCRIPTS +# 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/src/configure b/src/configure deleted file mode 100755 index 7c2d472..0000000 --- a/src/configure +++ /dev/null @@ -1,603 +0,0 @@ -#!/bin/sh -# No, this isn't generated by autoconf -# Some parts are inspired by autoconf (Free Software Foundation), however -# And the idea is slightly the same - -# Usage: -# './configure' and then 'make' and 'make install', or -# './configure --make --install' - -SHELL=/bin/sh - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - case "$ac_option" in - - --pthread | --thread) THREADS=1 ;; - --nopthread | --nothread) THREADS=0 ;; - - --zlib | --gzip) ZLIB=1 ;; - --nozlib | --nogzip) ZLIB=0 ;; - - --static | --noso) DYNAMIC=0 - ;; - --dynamic | --so) DYNAMIC=1 - ;; - - --longlong) LONGLONG=1 ;; - --nolonglong) LONGLONG=0 ;; - - --inaddrt) NODECLINADDRT=0 ;; - --noinaddrt) NODECLINADDRT=1 ;; - - --ipv6) IPV6=1 ;; - --noipv6) IPV6=0 ;; - - --ssl) SSL=1 ;; - --https) SSL=1 ;; - --nossl) SSL=0 ;; - --nohttps) SSL=0 ;; - - --useuid) NOUID=0 ;; - --nouseuid) NOUID=1 ;; - - --useftime) NOFTIME=0 ;; - --nouseftime) NOFTIME=1 ;; - - --system=*) SYSTEMTYPE="$ac_optarg" ;; - --system) ac_prev=SYSTEMTYPE ;; - - --debug) OTYPE="-O0 -g3" - MKTYPE="firstinfo htssystem htssystem_auto build_auto strip clean lastinfo" ;; - - --make) DOMAKE=1 ;; - --install) DOINSTALL=1 ;; - --bininstall) DOINSTALL=1 - NODOCINSTALL=1 - ;; - --docinstall) DOINSTALL=1 - DOCINSTALL=1 - ;; - --cls) - cd .. - chmod 'u=rw,go=r' `find ./ -type f` - chmod 'u=rwx,go=rx' `find ./ -type d` - chmod 'u=rwx,go=rx' ./src/configure - chmod 'u=rwx,go=rx' ./src/strip_cr.in - chmod 'u=rwx,go=rx' ./src/postinst-config.in - cd src - strip_cr *.c *.h - rm -f ./httrack 2>/dev/null - exit - ;; - -prefix | --prefix | --prefi | --pref | --pre | --pr) - ac_prev=PREFIX ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=*) - PREFIX="$ac_optarg" ;; - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=BINPATH ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - BINPATH="$ac_optarg" ;; - -etcdir | --etcdir | --etcdi | --etcd | --etc | --et) - ac_prev=ETCPATH ;; - -etcdir=* | --etcdir=* | --etcdi=* | --etcd=* | --etc=* | --et=*) - ETCPATH="$ac_optarg" ;; - -libdir | --libdir | --libdi | --libd | --lib | --li) - ac_prev=LIBPATH ;; - -libdir=* | --libdir=* | --libdi=* | --libd=* | --lib=* | --li=*) - LIBPATH="$ac_optarg" ;; - - --help) - cat < : override system type (uname) - NOT RECOMMENDED! (types: 'Default','Linux','SunOS','AIX') ---make : 'make' after configure ---install : 'make install' after configure ---bininstall : 'make bininstall' after configure ---docinstall : 'make docinstall' after configure ---debug : add debug information (for gdb) -EOF - exit - ;; - - *) echo "Unrecognized option: $ac_option" - exit - ;; - - esac - -done - -echo "Welcome to HTTrack Website Copier!" -echo "Type in ./configure --help for more details" -echo "If this script fails, you can enter supplemental options through '--option=value'" -echo "or enter in manual make, through 'make help'" -echo "" - -if cp -f Makefile.in Makefile; then - -SEDEXEC= - -# System (OS) type? -printf "Checking for OS type.. " -if test -z "$SYSTEMTYPE"; then - SYSTEMTYPE="`uname`" -fi -case "$SYSTEMTYPE" in - SunOS) printf "SunOS/Solaris\n"; - PLATFORM=0 - SOLSOCK=1 - ;; - AIX) printf "AIX\n"; PLATFORM=2 ;; - *) printf "Linux type\n"; PLATFORM=3 ;; -esac - -WTYPE="-Wall -Wcast-align -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wpointer-arith -Wnested-externs" - -if test -z "$OTYPE"; then - OTYPE="-O3" -fi -if test -z "$MKTYPE"; then - MKTYPE="firstinfo htssystem htssystem_auto build_auto strip clean lastinfo" -fi - -# Root group -if test -z "$ROOTGROUP"; then - printf "Checking for 'root' group.." - if egrep "^root:" /etc/group >/dev/null; then - ROOTGROUP="root" - elif egrep "^wheel:" /etc/group >/dev/null; then - ROOTGROUP="wheel" - fi - printf "$ROOTGROUP\n" -else - echo "Overriding ROOTGROUP=$ROOTGROUP" -fi - - -# Binaries location -if test -z "$BINPATH"; then -printf "Checking for bin directory.. " -if test -n "$PREFIX"; then - BINPATH="$PREFIX/bin" -elif test -d "/usr/bin"; then - BINPATH="/usr/bin" -else - BINPATH="/bin" -fi -printf "$BINPATH\n" -else - echo "Overriding BINPATH=$BINPATH" -fi - -# shlib? -if test -d "/usr/shlib"; then -SYSLIB=/usr/shlib -else -SYSLIB=/usr/lib -fi - -# /etc location -if test -z "$ETCPATH"; then -printf "Checking for etc directory.. " -if test -n "$PREFIX"; then - ETCPATH="$PREFIX/etc" -elif test -d "/usr/etc"; then - ETCPATH="/usr/etc" -else - ETCPATH="/etc" -fi -printf "$ETCPATH\n" -else - echo "Overriding ETCPATH=$ETCPATH" -fi - -# /usr/lib location -if test -z "$LIBPATH"; then -printf "Checking for lib directory.. " -if test -n "$PREFIX"; then - LIBPATH="$PREFIX/lib" -elif test -d "/usr/lib"; then - LIBPATH="/usr/lib" -elif test -d "/usr/local/lib"; then - LIBPATH="/usr/local/lib" -else - LIBPATH="/lib" -fi -printf "$LIBPATH\n" -else - echo "Overriding LIBPATH=$LIBPATH" -fi - -# Prefix location -if test -z "$PREFIX"; then - printf "Checking for prefix directory.. " - PREFIX="/usr" - printf "$PREFIX\n" -else - echo "Overriding PREFIX=$PREFIX" -fi - - -# 64-bit (long long) cause some troubles to some processors -# because some alignements aren't properly defined -# we only accept 64-bit on tested processors here -if test -z "$LONGLONG"; then -printf "Checking for long long.. " -LONGLONG= -if grep "long long" /usr/include/sys/types.h >/dev/null; then -if uname -a|egrep ' i[3-9]86 ' >/dev/null; then - LONGLONG=1 -fi -fi -if test -n "$LONGLONG"; then - printf "supported\n" -else - printf "not tested/supported. Use --LONGLONG=1 to override\n" -fi -else - echo "Overriding LONGLONG=$LONGLONG" -fi - -# IPV6? -# NOT TESTED FOR OTHER PLATFORMS.. FIXME! -if test -z "$IPV6"; then -printf "Checking for ipv6 support.. " -if test -f "/usr/include/linux/in6.h" -o -f "/usr/local/include/linux/in6.h"; then -IPV6=1 -else -IPV6=0 -fi -if test "$IPV6" -eq 1; then -printf "supported\n" -else -printf "not supported\n" -fi -else - echo "Overriding IPV6=$IPV6" -fi -if test "$IPV6" -eq 1; then -IPTYPE="-DINET6" -LIPTYPE="" -else -IPTYPE= -LIPTYPE= -fi - -# HTTPS? -# NOT TESTED FOR OTHER PLATFORMS.. FIXME! -if test -z "$SSL"; then -printf "Checking for SSL support.. " -if test -f "/usr/include/openssl/ssl.h" -o -f "/usr/local/include/openssl/ssl.h"; then -SSL=1 -else -SSL=0 -fi -if test "$SSL" -eq 1; then -printf "supported\n" -else -printf "not supported\n" -fi -else - echo "Overriding SSL=$SSL" -fi -if test "$SSL" -eq 1; then -SSTYPE="-lssl -lcrypto" -else -SSTYPE= -fi - -# Alignement -if test -z "$PTRALIGN"; then -printf "Checking for pointer alignements.. " -PTRALIGN= -if test `uname -p` = "alpha" -o `uname -p` = "sparc"; then -PTRALIGN=8 -else -PTRALIGN=4 -fi -fi -printf "$PTRALIGN\n" - - -# Dynamic (.so) module? -if test -z "$DYNAMIC"; then - DYNAMIC=1 -fi -printf "Checking for compilation mode: " -if test "$DYNAMIC" -eq "1"; then - echo "dynamic" - SOTYPE=-fPIC -else - echo "static" - SOTYPE= -fi - -# Do we not have to redeclare in_addr_t ? -# Sometimes this type is defined, or not.. -if test -z "$NODECLINADDRT"; then -printf "Checking for in_addr_t declaration in in.h.. " -if grep -E "typedef .* in_addr_t" /usr/include/netinet/in.h >/dev/null || grep -E "typedef .* in_addr_t" /usr/include/sys/types.h; then - printf "found, do not redeclare\n" - NODECLINADDRT=1 -else - printf "not found, declaring\n" - NODECLINADDRT= -fi -else - echo "Overriding NODECLINADDRT=$NODECLINADDRT" -fi - -# Test if we can use zlib (/usr/lib/libz.so) -# This allow to speed up transfers using HTTP compression -if test -z "$ZLIB"; then -printf "Checking for ${SYSLIB}/libz.so.. " -if test -f "${SYSLIB}/libz.so"; then - printf "found\n" - ZLIB=1 -else - printf "library not found (too bad), no http compression will be available\n" - ZLIB=0 -fi -else - echo "Overriding ZLIB=$ZLIB" -fi - -# Sometimes, pthread.h doesn't exists on some systems -# This is sad, because it speeds up some useful things, like DNS or ftp -if test -z "$THREADS"; then -printf "Checking for /usr/include/pthread.h.. " -if test -f "/usr/include/pthread.h" -o -f "/usr/local/include/pthread.h"; then -if test -f "${SYSLIB}/libpthread.so"; then - printf "found\n" - THREADS=1 -else - printf "library not found (too bad), no threads will be available\n" - THREADS= -fi -else - printf "not found, no threads will be available\n" - THREADS= -fi -else - echo "Overriding THREADS=$THREADS" -fi - -# Sometimes, setuid and setgid can't be used (missing pwd.h and unistd.h ?!) -if test -z "$NOUID"; then -NOUID=1 -printf "Checking for /usr/include/pwd.h and /usr/include/unistd.h.. " -if test -f "/usr/include/pwd.h" -o "/usr/local/include/pwd.h"; then -if test -f "/usr/include/unistd.h" -o -f "/usr/local/include/unistd.h" ; then - NOUID= -fi -fi -if test -z "$NOUID"; then - printf "found\n" -else - printf "not found, not using setuid() and setgid()\n" -fi -else - echo "Overriding NOUID=$NOUID" -fi - -# Sometimes, ftime can't be used (missing declaration...) -if test -z "$NOFTIME"; then -NOFTIME=1 -printf "Checking for ftime in /usr/include/sys/timeb.h.. " -if grep "int ftime" /usr/include/sys/timeb.h >/dev/null; then - NOFTIME= -fi -if test -z "$NOFTIME"; then - printf "found\n" -else - printf "not found (too bad), not using ftime()\n" -fi -else - echo "Overriding NOFTIME=$NOFTIME" -fi - -# Test variables -if test "$NOUID" = 1; then - SEDEXEC="$SEDEXEC | sed -e 's/__DEFINEUID__/HTS_DO_NOT_USE_UID/'" -fi -if test "$NOFTIME" = 1; then - SEDEXEC="$SEDEXEC | sed -e 's/__DEFINEFTI__/HTS_DO_NOT_USE_FTIME/'" -fi -if test "$NODECLINADDRT" = 1; then - SEDEXEC="$SEDEXEC | sed -e 's/__DEFINEINA__/HTS_DO_NOT_REDEFINE_in_addr_t/'" -fi -if test "$THREADS" = 1; then -THTYPE="-D_REENTRANT" -LPTHTYPE="-lpthread" -else -THTYPE= -LPTHTYPE= -fi -SEDEXEC="$SEDEXEC | sed -e \"s/__CFLAGS__/$SOTYPE $OTYPE $WTYPE $IPTYPE $THTYPE/g\"" -SEDEXEC="$SEDEXEC | sed -e \"s/__LFLAGS__/$LPTHTYPE $SSTYPE $LIPTYPE/g\"" -if test ! "$THREADS" = 1; then - SEDEXEC="$SEDEXEC | sed -e 's/__DEFINEPTH__/HTS_DO_NOT_USE_PTHREAD/'" -fi -if test "$ZLIB" = 1; then - SEDEXEC="$SEDEXEC | sed -e 's/__LFLAGS3__/-lz/g'" -else - SEDEXEC="$SEDEXEC | sed -e 's/__LFLAGS3__//g'" -fi -SEDEXEC="$SEDEXEC | sed -e \"s/__ZLIB__/$ZLIB/\"" -if test "$SOLSOCK" = 1; then - SEDEXEC="$SEDEXEC | sed -e 's/__LFLAGS2__/-lnsl -lsocket/g'" -else - SEDEXEC="$SEDEXEC | sed -e 's/__LFLAGS2__//g'" -fi -if test ! "$LONGLONG" = 1; then - SEDEXEC="$SEDEXEC | sed -e 's/__DEFINE64B__/HTS_NO_64_BIT/'" -fi -if test -n "$PTRALIGN"; then - SEDEXEC="$SEDEXEC | sed -e \"s/__PTRALIGN__/$PTRALIGN/g\"" -fi -if test -n "$IPV6"; then - SEDEXEC="$SEDEXEC | sed -e \"s/__INET6__/$IPV6/g\"" -fi -if test -n "$SSL"; then - SEDEXEC="$SEDEXEC | sed -e \"s/__SSL__/$SSL/g\"" -fi -if test "$DYNAMIC" = 1; then - SEDEXEC="$SEDEXEC | sed -e 's/__DYNAMIC__/so/'" - SEDEXEC="$SEDEXEC | sed -e 's/__INSTALL__/bininstall libinstall docinstall/'" - SEDEXEC="$SEDEXEC | sed -e 's/__UNINSTALL__/binremove libremove docremove/'" - SEDEXEC="$SEDEXEC | sed -e 's/__STRIPLIB__/strip --strip-unneeded \\\$(BOUTPUTSO)/'" -else - SEDEXEC="$SEDEXEC | sed -e 's/__DYNAMIC__//'" - SEDEXEC="$SEDEXEC | sed -e 's/__INSTALL__/bininstall docinstall/'" - SEDEXEC="$SEDEXEC | sed -e 's/__UNINSTALL__/binremove docremove/'" - SEDEXEC="$SEDEXEC | sed -e 's/__STRIPLIB__//'" -fi - -SEDEXEC="$SEDEXEC | sed -e \"s/__PLATFORM__/$PLATFORM/g\"" -SEDEXEC="$SEDEXEC | sed -e 's/#__AUTONAME__/AUTONAME = auto/'" -SEDEXEC="$SEDEXEC | sed -e 's/#define __DEFINE.*__//g'" - -# Paths -TMP=`echo $BINPATH | sed -e 's/\\//\\\\\\//g'` -SEDEXEC="$SEDEXEC | sed -e \"s/__BINPATH__/$TMP/g\"" -TMP=`echo $ETCPATH | sed -e 's/\\//\\\\\\//g'` -SEDEXEC="$SEDEXEC | sed -e \"s/__ETCPATH__/$TMP/g\"" -TMP=`echo $LIBPATH | sed -e 's/\\//\\\\\\//g'` -SEDEXEC="$SEDEXEC | sed -e \"s/__LIBPATH__/$TMP/g\"" -TMP=`echo $PREFIX | sed -e 's/\\//\\\\\\//g'` -SEDEXEC="$SEDEXEC | sed -e \"s/__PREFIX__/$TMP/g\"" -TMP=`echo $ROOTGROUP | sed -e 's/\\//\\\\\\//g'` -SEDEXEC="$SEDEXEC | sed -e \"s/__ROOTGROUP__/$TMP/g\"" - -TMP=`echo $PREFIX | sed -e 's/\\//\\\\\\//g'` -SEDEXEC="$SEDEXEC | sed -e \"s/__DEFINEPRE__/$TMP/g\"" -SEDEXEC="$SEDEXEC | sed -e 's/__MAKEAUTO__/$MKTYPE/'" - -# Search for gmake -printf "Checking for make.. " -MAKEPATH= -if test -f "/usr/bin/gmake"; then -MAKEPATH=/usr/bin/gmake -else -if test -f "/bin/gmake"; then -MAKEPATH=/bin/gmake -else -if test -f "/usr/local/bin/gmake"; then -MAKEPATH=/usr/local/bin/gmake -fi -fi -fi -if test -n "$MAKEPATH"; then -printf "found $MAKEPATH\n" -else -MAKEPATH=make -printf "not found, assume make will work\n" -fi - -# Sed strip_cr -EXCL='#!' -printf "Checking for perl.. " -PERLPATH= -cp -f strip_cr.in strip_cr -if test -f "/usr/bin/perl"; then -PERLPATH=/usr/bin/perl -else -if test -f "/bin/perl"; then -PERLPATH=/bin/perl -else -if test -f "/usr/local/bin/perl"; then -PERLPATH=/usr/local/bin/perl -fi -fi -fi -if test -n "$PERLPATH"; then -printf "found $PERLPATH\nEnsuring that *.c/*.h source files don't contains CR (^M).. " -TMP=`echo $PERLPATH | sed -e 's/\\//\\\\\\//g'` -cat strip_cr | sed -e "s/__PERL__/${EXCL}${TMP}/" > __tmp; mv __tmp strip_cr -chmod 755 strip_cr -./strip_cr *.c *.h -printf "done\n" -fi - -# Sed postinst-config -cp -f postinst-config.in postinst-config -CMD="cat postinst-config $SEDEXEC > __tmp; mv __tmp postinst-config" -if eval $CMD; then -chmod 755 postinst-config -else -echo "Error while seding postinst-config" -exit 1 -fi - -# Sed all __VARS__ -CMD="cat Makefile $SEDEXEC > __tmp; mv __tmp Makefile" -echo "Command: $CMD" -if eval $CMD; then - -echo "" -echo "Makefile created!" -echo "Type in '$MAKEPATH' to build and '$MAKEPATH install' to install" - -if test -n "$DOMAKE"; then - echo "Making.." - eval $MAKEPATH clean - eval $MAKEPATH -fi -if test -n "$DOINSTALL"; then - if test -n "$NODOCINSTALL"; then - echo "Installing binary.." - eval $MAKEPATH bininstall - elif test -n "$DOCINSTALL"; then - echo "Installing docs.." - eval $MAKEPATH docinstall - else - echo "Installing.." - eval $MAKEPATH install - fi -fi - -else - echo "Error while seding Makefile.." - exit 1 -fi - -else - echo "Error copying Makefile.in -> Makefile.. giving up" - exit 1 -fi - diff --git a/src/gpl.txt b/src/gpl.txt deleted file mode 100644 index 546a71a..0000000 --- a/src/gpl.txt +++ /dev/null @@ -1,287 +0,0 @@ - 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 - - - diff --git a/src/hts-indextmpl.h b/src/hts-indextmpl.h index a82b69d..29dd122 100644 --- a/src/hts-indextmpl.h +++ b/src/hts-indextmpl.h @@ -167,7 +167,7 @@ regen: "
"LF\ "
"LF\ "
"LF\ - " Mirror and index made by HTTrack Website Copier [XR&CO'2002]"LF\ + " Mirror and index made by HTTrack Website Copier [XR&CO'2003]"LF\ "
"LF\ " %s"LF\ " "LF\ @@ -186,7 +186,7 @@ regen: ""LF\ ""LF\ " "LF\ - " "LF\ + " "LF\ " "LF\ "
© 2002 Xavier Roche & other contributors - Web Design: Kauler Leto.© 2003 Xavier Roche & other contributors - Web Design: Kauler Leto.
"LF\ ""LF\ @@ -317,7 +317,7 @@ regen: " "LF\ "
"LF\ "
"LF\ - " Mirror and index made by HTTrack Website Copier [XR&CO'2002]"LF\ + " Mirror and index made by HTTrack Website Copier [XR&CO'2003]"LF\ "
"LF\ " %s"LF\ " "LF\ @@ -335,7 +335,7 @@ regen: ""LF\ ""LF\ " "LF\ - " "LF\ + " "LF\ " "LF\ "
© 2002 Xavier Roche & other contributors - Web Design: Kauler Leto.© 2003 Xavier Roche & other contributors - Web Design: Kauler Leto.
"LF\ ""LF\ @@ -476,7 +476,7 @@ regen: ""LF\ ""LF\ " "LF\ - " "LF\ + " "LF\ " "LF\ "
© 2002 Xavier Roche & other contributors - Web Design: Kauler Leto.© 2003 Xavier Roche & other contributors - Web Design: Kauler Leto.
"LF\ ""LF\ @@ -613,7 +613,7 @@ regen: ""LF\ ""LF\ " "LF\ - " "LF\ + " "LF\ " "LF\ "
© 2002 Xavier Roche & other contributors - Web Design: Kauler Leto.© 2003 Xavier Roche & other contributors - Web Design: Kauler Leto.
"LF\ ""LF\ diff --git a/src/htsalias.c b/src/htsalias.c index 65a34e3..1b65945 100644 --- a/src/htsalias.c +++ b/src/htsalias.c @@ -38,13 +38,14 @@ Please visit our Website: http://www.httrack.com #include #include #include +#include "htsbase.h" #include "htsalias.h" #include "htsglobal.h" void linput(FILE* fp,char* s,int max); void hts_lowcase(char* s); #define _NOT_NULL(a) ( (a!=NULL) ? (a) : "" ) -#define is_realspace(c) (strchr(" \x0d\x0a\x09\x0c",(c))!=NULL) +#define is_realspace(c) (strchr(" \x0d\x0a\x09\x0b\x0c",(c))!=NULL) // COPY OF cmdl_ins in htsmain.c // Insert a command in the argc/argv @@ -55,7 +56,7 @@ void hts_lowcase(char* s); argv[i]=argv[i-1];\ } \ argv[0]=(buff+ptr); \ - strcpy(argv[0],token); \ + strcpybuff(argv[0],token); \ ptr += (strlen(argv[0])+1); \ argc++ // END OF COPY OF cmdl_ins in htsmain.c @@ -80,7 +81,7 @@ void hts_lowcase(char* s); param1 : this option must be alone, and needs one distinct parameter (-P ) param0 : this option must be alone, but the parameter should be put together (+*.gif) */ -const char hts_optalias[][4][64] = { +const char* hts_optalias[][4] = { /* {"","","",""}, */ {"path","-O","param1","output path"}, {"chroot","-%O","param1","default top path"}, @@ -90,6 +91,7 @@ const char hts_optalias[][4][64] = { {"quiet","-q","single",""}, {"mirrorlinks","-Y","single",""}, {"proxy","-P","param1","proxy name:port"}, + {"bind","-%b","param1","hostname to bind"}, {"httpproxy-ftp","-%f","param",""}, {"depth","-r","param",""},{"recurse-levels","-r","param",""}, {"ext-depth","-%e","param",""}, @@ -108,12 +110,14 @@ const char hts_optalias[][4][64] = { {"near","-n","single",""}, {"test","-t","single",""}, {"list","-%L","param1",""}, + {"urllist","-%S","param1",""}, {"language","-%l","param1",""}, {"lang","-%l","param1",""}, {"structure","-N","param",""}, {"user-structure","-N","param1",""}, {"long-names","-L","param",""}, {"keep-links","-K","param",""}, + {"mime-html","-%M","param",""}, {"mht","-%M","param",""}, {"replace-external","-x","single",""}, - {"no-passwords","-%x","single",""},{"no-password","-%x","single",""}, + {"disable-passwords","-%x","single",""},{"disable-password","-%x","single",""}, {"include-query-string","-%q","single",""}, {"generate-errors","-o","single",""}, {"purge-old","-X","param",""}, @@ -124,9 +128,12 @@ const char hts_optalias[][4][64] = { {"protocol","-@i","param",""}, {"robots","-s","param",""}, {"http-10","-%h","single",""},{"http-1.0","-%h","single",""}, - {"no-compression","-%z","single",""}, + {"keep-alive","-%k","single",""}, + {"build-top-index","-%i","single",""}, + {"disable-compression","-%z","single",""}, {"tolerant","-%B","single",""}, {"updatehack","-%s","single",""}, {"sizehack","-%s","single",""}, + {"urlhack","-%u","single",""}, {"user-agent","-F","param1","user-agent identity"}, {"footer","-%F","param1",""}, {"cache","-C","param","number of retries for non-fatal errors"}, @@ -143,6 +150,7 @@ const char hts_optalias[][4][64] = { {"priority","-p","param",""}, {"debug-headers","-%H","single",""}, {"userdef-cmd","-V","param1",""}, + {"callback","-%W","param1",""}, {"wrapper","-%W","param1",""}, {"structure","-N","param1","user-defined structure"}, {"usercommand","-V","param1","user-defined command"}, {"display","-%v","single","show files transfered and other funny realtime information"}, @@ -167,13 +175,16 @@ const char hts_optalias[][4][64] = { {"version","-#h","single",""}, {"debug-scanstdin","-#K","single",""}, {"advanced-maxlinks","-#L","single",""}, - {"advanced-progressinfo","-#p","single",""}, + {"advanced-progressinfo","-#p","single","deprecated"}, {"catch-url","-#P","single","catch complex URL through proxy"}, {"debug-oldftp","-#R","single",""}, {"debug-xfrstats","-#T","single",""}, {"advanced-wait","-#u","single",""}, {"debug-ratestats","-#Z","single",""}, {"exec","-#!","param1",""}, + {"fast-engine","-#X","single","Enable fast routines"}, + {"debug-overflows","-#X0","single","Attempt to detect buffer overflows"}, + {"debug-cache","-#C","param1","List files in the cache"}, /* STANDARD ALIASES */ {"spider","-p0C0I0t","single",""}, @@ -194,6 +205,7 @@ const char hts_optalias[][4][64] = { {"ultrawide","-c48","single",""}, {"http10","-%h","single",""}, {"filelist","-%L","single",""}, {"list","-%L","single",""}, + {"filterlist","-%S","single",""}, /* END OF ALIASES */ /* Filters */ @@ -249,25 +261,25 @@ int optalias_check(int argc,const char * const * argv,int n_arg, /* --sockets=8 */ if ( (position=strchr(argv[n_arg],'=')) ) { /* Copy command */ - strncat(command,argv[n_arg]+2,(int) (position - (argv[n_arg]+2)) ); + strncatbuff(command,argv[n_arg]+2,(int) (position - (argv[n_arg]+2)) ); /* Copy parameter */ - strcpy(param,position+1); + strcpybuff(param,position+1); } /* --nocache */ else if (strncmp(argv[n_arg]+2,"no",2)==0) { - strcpy(command,argv[n_arg]+4); - strcpy(param,"0"); + strcpybuff(command,argv[n_arg]+4); + strcpybuff(param,"0"); } /* --sockets 8 */ else { if (strncmp(argv[n_arg]+2,"wide-",5)==0) { - strcpy(addcommand,"c32"); - strcpy(command,strchr(argv[n_arg]+2,'-')+1); + strcpybuff(addcommand,"c32"); + strcpybuff(command,strchr(argv[n_arg]+2,'-')+1); } else if (strncmp(argv[n_arg]+2,"tiny-",5)==0) { - strcpy(addcommand,"c1"); - strcpy(command,strchr(argv[n_arg]+2,'-')+1); + strcpybuff(addcommand,"c1"); + strcpybuff(command,strchr(argv[n_arg]+2,'-')+1); } else - strcpy(command,argv[n_arg]+2); + strcpybuff(command,argv[n_arg]+2); need_param=2; } @@ -275,7 +287,7 @@ int optalias_check(int argc,const char * const * argv,int n_arg, pos=optalias_find(command); if (pos>=0) { /* Copy real name */ - strcpy(command,hts_optalias[pos][1]); + strcpybuff(command,hts_optalias[pos][1]); /* With parameters? */ if (strncmp(hts_optalias[pos][2],"param",5)==0) { /* Copy parameters? */ @@ -286,7 +298,7 @@ int optalias_check(int argc,const char * const * argv,int n_arg, command,command,_NOT_NULL(optalias_help(command))); return 0; } - strcpy(param,argv[n_arg+1]); + strcpybuff(param,argv[n_arg+1]); need_param=2; } } else @@ -296,30 +308,30 @@ int optalias_check(int argc,const char * const * argv,int n_arg, /* Must be alone (-P /tmp) */ if (strcmp(hts_optalias[pos][2],"param1")==0) { - strcpy(return_argv[0],command); - strcpy(return_argv[1],param); + strcpybuff(return_argv[0],command); + strcpybuff(return_argv[1],param); *return_argc=2; /* 2 parameters returned */ } /* Alone with parameter (+*.gif) */ else if (strcmp(hts_optalias[pos][2],"param0")==0) { /* Command */ - strcpy(return_argv[0],command); - strcat(return_argv[0],param); + strcpybuff(return_argv[0],command); + strcatbuff(return_argv[0],param); } /* Together (-c8) */ else { /* Command */ - strcpy(return_argv[0],command); + strcpybuff(return_argv[0],command); /* Parameters accepted */ if (strncmp(hts_optalias[pos][2],"param",5)==0) { /* --cache=off or --index=on */ if (strcmp(param,"off")==0) - strcat(return_argv[0],"0"); + strcatbuff(return_argv[0],"0"); else if (strcmp(param,"on")==0) { // on is the default - // strcat(return_argv[0],"1"); + // strcatbuff(return_argv[0],"1"); } else - strcat(return_argv[0],param); + strcatbuff(return_argv[0],param); } *return_argc=1; /* 1 parameter returned */ } @@ -342,8 +354,8 @@ int optalias_check(int argc,const char * const * argv,int n_arg, return 0; } /* Copy parameters */ - strcpy(return_argv[0],argv[n_arg]); - strcpy(return_argv[1],argv[n_arg+1]); + strcpybuff(return_argv[0],argv[n_arg]); + strcpybuff(return_argv[1],argv[n_arg+1]); /* And return */ *return_argc=2; /* 2 parameters returned */ return 2; /* 2 parameters used */ @@ -352,7 +364,7 @@ int optalias_check(int argc,const char * const * argv,int n_arg, } /* Copy and return other unknown option */ - strcpy(return_argv[0],argv[n_arg]); + strcpybuff(return_argv[0],argv[n_arg]); return 1; } @@ -461,9 +473,9 @@ int optinclude_file(const char* name, char _tmp_argv[4][HTS_CDLMAXSIZE]; char* tmp_argv[4]; tmp_argv[0]=_tmp_argv[0]; tmp_argv[1]=_tmp_argv[1]; tmp_argv[2]=_tmp_argv[2]; tmp_argv[3]=_tmp_argv[3]; - strcpy(tmp_argv[0],"--"); - strcat(tmp_argv[0],a); - strcpy(tmp_argv[1],b); + strcpybuff(tmp_argv[0],"--"); + strcatbuff(tmp_argv[0],a); + strcpybuff(tmp_argv[1],b); result=optalias_check(2,(const char * const *)tmp_argv,0, &return_argc,(tmp_argv+2), @@ -513,8 +525,8 @@ char* hts_gethome(void) { void expand_home(char* str) { if (str[0] == '~') { char tempo[HTS_URLMAXSIZE*2]; - strcpy(tempo,hts_gethome()); - strcat(tempo,str+1); - strcpy(str,tempo); + strcpybuff(tempo,hts_gethome()); + strcatbuff(tempo,str+1); + strcpybuff(str,tempo); } } diff --git a/src/htsalias.h b/src/htsalias.h index 1c94b19..e5e8f82 100644 --- a/src/htsalias.h +++ b/src/htsalias.h @@ -39,7 +39,7 @@ Please visit our Website: http://www.httrack.com #ifndef HTSALIAS_DEFH #define HTSALIAS_DEFH -extern const char hts_optalias[][4][64]; +extern const char* hts_optalias[][4]; int optalias_check(int argc,const char * const * argv,int n_arg, int* return_argc,char** return_argv, char* return_error); diff --git a/src/htsback.c b/src/htsback.c index d99564f..6d0b119 100644 --- a/src/htsback.c +++ b/src/htsback.c @@ -122,7 +122,16 @@ int back_nsoc(lien_back* back,int back_max) { int n=0; int i; for(i=0;i0) // réception uniquement + if (back[i].status > 0) // only receive + n++; + + return n; +} +int back_nsoc_overall(lien_back* back,int back_max) { + int n=0; + int i; + for(i=0;i 0 || back[i].status == -103) n++; return n; @@ -144,32 +153,32 @@ int back_finalize(httrackp* opt,cache_back* cache,lien_back* back,int p) { /* décompression */ #if HTS_USEZLIB - if (back[p].r.compressed) { + if (gz_is_available && back[p].r.compressed) { if (back[p].r.size > 0) { //if ( (back[p].r.adr) && (back[p].r.size>0) ) { // stats back[p].compressed_size=back[p].r.size; // en mémoire -> passage sur disque if (!back[p].r.is_write) { - back[p].tmpfile[0]='\0'; - strcpy(back[p].tmpfile,tempnam(NULL,"httrz")); - if (back[p].tmpfile[0]) { + back[p].tmpfile_buffer[0]='\0'; + back[p].tmpfile=tmpnam(back[p].tmpfile_buffer); + if (back[p].tmpfile != NULL && back[p].tmpfile[0] != '\0') { back[p].r.out=fopen(back[p].tmpfile,"wb"); if (back[p].r.out) { if ((back[p].r.adr) && (back[p].r.size>0)) { - if ((INTsys)fwrite(back[p].r.adr,1,(INTsys)back[p].r.size,back[p].r.out) != back[p].r.size) { + if (fwrite(back[p].r.adr,1,(INTsys)back[p].r.size,back[p].r.out) != back[p].r.size) { back[p].r.statuscode=-1; - strcpy(back[p].r.msg,"Write error when decompressing"); + strcpybuff(back[p].r.msg,"Write error when decompressing"); } } else { back[p].tmpfile[0]='\0'; back[p].r.statuscode=-1; - strcpy(back[p].r.msg,"Empty compressed file"); + strcpybuff(back[p].r.msg,"Empty compressed file"); } } else { back[p].tmpfile[0]='\0'; back[p].r.statuscode=-1; - strcpy(back[p].r.msg,"Open error when decompressing"); + strcpybuff(back[p].r.msg,"Open error when decompressing"); } } } @@ -179,17 +188,18 @@ int back_finalize(httrackp* opt,cache_back* cache,lien_back* back,int p) { back[p].r.out=NULL; } // décompression - if (back[p].tmpfile[0] && back[p].url_sav[0]) { + if (back[p].tmpfile != NULL && back[p].tmpfile[0] != '\0' && back[p].url_sav[0]) { LLint size; filecreateempty(back[p].url_sav); // filenote & co if ((size = hts_zunpack(back[p].tmpfile,back[p].url_sav))>=0) { back[p].r.size=back[p].r.totalsize=size; // fichier -> mémoire if (!back[p].r.is_write) { + deleteaddr(&back[p].r); back[p].r.adr=readfile(back[p].url_sav); if (!back[p].r.adr) { back[p].r.statuscode=-1; - strcpy(back[p].r.msg,"Read error when decompressing"); + strcpybuff(back[p].r.msg,"Read error when decompressing"); } remove(back[p].url_sav); } @@ -214,39 +224,45 @@ int back_finalize(httrackp* opt,cache_back* cache,lien_back* back,int p) { struct tm* A; tt=time(NULL); A=localtime(&tt); + if (A == NULL) { + int localtime_returned_null=0; + assert(localtime_returned_null); + } strftime(s,250,"%H:%M:%S",A); flags[0]='\0'; /* input flags */ if (back[p].is_update) - strcat(flags, "U"); // update request + strcatbuff(flags, "U"); // update request else - strcat(flags, "-"); + strcatbuff(flags, "-"); if (back[p].range_req_size) - strcat(flags, "R"); // range request + strcatbuff(flags, "R"); // range request else - strcat(flags, "-"); + strcatbuff(flags, "-"); /* state flags */ if (back[p].r.is_file) // direct to disk - strcat(flags, "F"); + strcatbuff(flags, "F"); else - strcat(flags, "-"); + strcatbuff(flags, "-"); /* output flags */ if (!back[p].r.notmodified) - strcat(flags, "M"); // modified + strcatbuff(flags, "M"); // modified else - strcat(flags, "-"); + strcatbuff(flags, "-"); if (back[p].r.is_chunk) // chunked - strcat(flags, "C"); + strcatbuff(flags, "C"); else - strcat(flags, "-"); + strcatbuff(flags, "-"); if (back[p].r.compressed) - strcat(flags, "Z"); // gzip + strcatbuff(flags, "Z"); // gzip else - strcat(flags, "-"); - fprintf(cache->txt,"%s\t"LLintP"/"LLintP"\t%s\t", s, - back[p].r.size, back[p].r.totalsize, - flags); + strcatbuff(flags, "-"); + /* Err I had to split these.. */ + fprintf(cache->txt,"%s\t", s); + fprintf(cache->txt,LLintP"/", (LLint)back[p].r.size); + fprintf(cache->txt,LLintP,(LLint)back[p].r.totalsize); + fprintf(cache->txt,"\t%s\t",flags); } if (back[p].r.statuscode==200) { if (back[p].r.size>=0) { @@ -323,7 +339,7 @@ int back_finalize(httrackp* opt,cache_back* cache,lien_back* back,int p) { /* Cache */ cache_mayadd(opt,cache,&back[p].r,back[p].url_adr,back[p].url_fil,back[p].url_sav); - + // status finished callback #if HTS_ANALYSTE hts_htmlcheck_xfrstatus(&back[p]); @@ -333,9 +349,165 @@ int back_finalize(httrackp* opt,cache_back* cache,lien_back* back,int p) { return -1; } +/* try to keep the connection alive */ +int back_letlive(httrackp* opt, lien_back* back, int p) { + htsblk* src = &back[p].r; + if (src && !src->is_file + && src->soc != INVALID_SOCKET + && src->statuscode >= 0 /* no timeout errors & co */ + && src->keep_alive_trailers == 0 /* not yet supported (chunk trailers) */ + && !check_sockerror(src->soc) + /*&& !check_sockdata(src->soc)*/ /* no unexpected data */ + ) { + htsblk tmp; + memset(&tmp, 0, sizeof(tmp)); + /* clear everything but connection: switch, close, and reswitch */ + back_connxfr(src, &tmp); + back_delete(opt, back, p); + //deletehttp(src); + back_connxfr(&tmp, src); + src->req.flush_garbage=1; /* ignore CRLF garbage */ + return 1; + } + return 0; +} + +void back_connxfr(htsblk* src, htsblk* dst) { + dst->soc = src->soc; + src->soc = INVALID_SOCKET; +#if HTS_USEOPENSSL + dst->ssl = src->ssl; + src->ssl = 0; + dst->ssl_con = src->ssl_con; + src->ssl_con = NULL; +#endif + dst->keep_alive = src->keep_alive; + src->keep_alive = 0; + dst->keep_alive_max = src->keep_alive_max; + src->keep_alive_max = 0; + dst->keep_alive_t = src->keep_alive_t; + src->keep_alive_t = 0; + dst->debugid = src->debugid; + src->debugid = 0; +} + +// clear, or leave for keep-alive +int back_maydelete(httrackp* opt,lien_back* back, int p) { + if (p>=0) { // on sait jamais.. + if (!opt->nokeepalive + && back[p].r.keep_alive + && back[p].r.keep_alive_max > 1 + && back[p].ka_time_start + && time_local() < back[p].ka_time_start + back[p].r.keep_alive_t + ) { + lien_back tmp; + strcpybuff(tmp.url_adr, back[p].url_adr); + if (back_letlive(opt, back, p)) { + strcpybuff(back[p].url_adr, tmp.url_adr); + back[p].status = -103; // alive & waiting + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(Keep-Alive): successfully saved #%d (%s)"LF, + back[p].r.debugid, + back[p].url_adr); test_flush; + } + return 1; + } + } + back_delete(opt,back, p); + } + return 0; +} + +// clear, or leave for keep-alive +void back_maydeletehttp(httrackp* opt, lien_back* back, int back_max, int p) { + if (back[p].r.soc!=INVALID_SOCKET) { + int q; + if (!opt->nokeepalive + && back[p].r.keep_alive + && back[p].r.keep_alive_max > 1 + && back[p].ka_time_start + && time_local() < back[p].ka_time_start + back[p].r.keep_alive_t + && ( q = back_search(opt, back, back_max) ) >= 0 + ) + { + lien_back tmp; + strcpybuff(tmp.url_adr, back[p].url_adr); + deletehttp(&back[q].r); // security check + back_connxfr(&back[p].r, &back[q].r); // transfer live connection settings from p to q + back[q].ka_time_start = back[p].ka_time_start; // refresh + back[p].r.soc = INVALID_SOCKET; + strcpybuff(back[q].url_adr, tmp.url_adr); // address + back[q].status = -103; // alive & waiting + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(Keep-Alive): successfully preserved #%d (%s)"LF, + back[q].r.debugid, + back[q].url_adr); test_flush; + } + } else { + deletehttp(&back[p].r); + back[p].r.soc = INVALID_SOCKET; + } + } +} + + +/* attempt to attach a live connection to this slot */ +int back_trylive(httrackp* opt,lien_back* back, int back_max, int p) { + if (p>=0 && back[p].status != -103) { // we never know.. + int i = back_searchlive(opt,back, back_max, back[p].url_adr); // search slot + if (i >= 0 && i != p) { + deletehttp(&back[p].r); // security check + back_connxfr(&back[i].r, &back[p].r); // transfer live connection settings from i to p + back_delete(opt,back, i); // delete old slot + back[p].status=100; // ready to connect + return 1; // success: will reuse live connection + } + } + return 0; +} + +/* search for a live position, or, if not possible, try to return a new one */ +int back_searchlive(httrackp* opt, lien_back* back, int back_max, char* search_addr) { + int i; + + /* search for a live socket */ + for(i = 0 ; i < back_max ; i++ ) { + if (back[i].status == -103) { + if (strfield2(back[i].url_adr, search_addr)) { /* same location (xxc: check also virtual hosts?) */ + if (time_local() < back[i].ka_time_start + back[i].r.keep_alive_t) { + return i; + } + } + } + } + return -1; +} + +int back_search(httrackp* opt,lien_back* back, int back_max) { + int i; + + /* try to find an empty place */ + for(i = 0 ; i < back_max ; i++ ) { + if (back[i].status == -1) { + return i; + } + } + + /* couldn't find an empty place, try to requisition a keep-alive place */ + for(i = 0 ; i < back_max ; i++ ) { + if (back[i].status == -103) { + /* close this place */ + back_delete(opt,back, i); + return i; + } + } + + /* oops, can't find a place */ + return -1; +} // effacer entrée -int back_delete(lien_back* back,int p) { +int back_delete(httrackp* opt, lien_back* back, int p) { if (p>=0) { // on sait jamais.. // Vérificateur d'intégrité #if DEBUG_CHECKINT @@ -356,21 +528,6 @@ int back_delete(lien_back* back,int p) { back[p].r.soc=INVALID_SOCKET; } -#if HTS_USEOPENSSL - /* Free OpenSSL structures */ - if (back[p].r.ssl_con) { - SSL_shutdown(back[p].r.ssl_con); - SSL_free(back[p].r.ssl_con); - back[p].r.ssl_con=NULL; - } - /* - if (back[p].r.ssl_soc) { - BIO_free_all(back[p].r.ssl_soc); - back[p].r.ssl_soc=NULL; - } - */ -#endif - if (back[p].r.adr!=NULL) { // reste un bloc à désallouer freet(back[p].r.adr); back[p].r.adr=NULL; @@ -379,6 +536,7 @@ int back_delete(lien_back* back,int p) { freet(back[p].chunk_adr); back[p].chunk_adr=NULL; back[p].chunk_size=0; + back[p].chunk_blocksize=0; back[p].is_chunk=0; } // if (back[p].r.is_file) { // fermer fichier entrée @@ -402,7 +560,7 @@ int back_delete(lien_back* back,int p) { set_filetime_rfc822(back[p].url_sav,back[p].r.lastmodified); /* executer commande utilisateur après chargement du fichier */ - usercommand(0,NULL,back[p].url_sav); + //xx usercommand(opt,0,NULL,back[p].url_sav, back[p].url_adr, back[p].url_fil); back[p].r.is_write=0; } @@ -426,7 +584,7 @@ int back_stack_available(lien_back* back,int back_max) { } // ajouter un lien en backing -int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* referer_adr,char* referer_fil,int test,short int* pass2_ptr) { +int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* referer_adr,char* referer_fil,int test,int* pass2_ptr) { int p=0; // vérifier cohérence de adr et fil (non vide!) @@ -444,37 +602,37 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* } // FIN vérifier cohérence de adr et fil (non vide!) + // stats + opt->state.back_add_stats++; + // rechercher emplacement - while((p= 0) { back[p].send_too[0]='\0'; // éventuels paramètres supplémentaires à transmettre au serveur - // ne sert à rien normalement - if (back[p].r.soc!=INVALID_SOCKET) { -#if HTS_DEBUG_CLOSESOCK - DEBUG_W("back_add: deletehttp\n"); -#endif + // clear r + if (back[p].r.soc!=INVALID_SOCKET) { /* we never know */ deletehttp(&back[p].r); } - - // effacer r - memset(&(back[p].r), 0, sizeof(htsblk)); back[p].r.soc=INVALID_SOCKET; back[p].r.location=back[p].location_buffer; + memset(&(back[p].r), 0, sizeof(htsblk)); + back[p].r.soc=INVALID_SOCKET; + back[p].r.location=back[p].location_buffer; // créer entrée - strcpy(back[p].url_adr,adr); - strcpy(back[p].url_fil,fil); - strcpy(back[p].url_sav,save); + strcpybuff(back[p].url_adr,adr); + strcpybuff(back[p].url_fil,fil); + strcpybuff(back[p].url_sav,save); back[p].pass2_ptr=pass2_ptr; // copier referer si besoin - strcpy(back[p].referer_adr,""); - strcpy(back[p].referer_fil,""); + strcpybuff(back[p].referer_adr,""); + strcpybuff(back[p].referer_fil,""); if ((referer_adr) && (referer_fil)) { // existe if ((strnotempty(referer_adr)) && (strnotempty(referer_fil))) { // non vide if (referer_adr[0]!='!') { // non détruit if (strcmp(referer_adr,"file://")) { // PAS file:// if (strcmp(referer_adr,"primary")) { // pas referer 1er lien - strcpy(back[p].referer_adr,referer_adr); - strcpy(back[p].referer_fil,referer_fil); + strcpybuff(back[p].referer_adr,referer_adr); + strcpybuff(back[p].referer_fil,referer_fil); } } } @@ -482,7 +640,6 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* } // sav ne sert à rien pour le moment back[p].r.size=0; // rien n'a encore été chargé - back[p].r.soc=INVALID_SOCKET; // pas de socket back[p].r.adr=NULL; // pas de bloc de mémoire back[p].r.is_write=0; // à priori stockage en mémoire back[p].maxfile_html=opt->maxfile_html; @@ -496,11 +653,10 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* else if (strcmp(back[p].url_sav,BACK_ADD_TEST2)==0) // test en GET back[p].head_request=2; // test en get - /* Stop requested - abort backing */ if (opt->state.stop) { back[p].r.statuscode=-1; // fatal - strcpy(back[p].r.msg,"mirror stopped by user"); + strcpybuff(back[p].r.msg,"mirror stopped by user"); back[p].status=0; // terminé if ((opt->debug>0) && (opt->log!=NULL)) { fspc(opt->log,"warning"); fprintf(opt->log,"File not added due to mirror cancel: %s%s"LF,adr,fil); test_flush; @@ -508,7 +664,6 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* return 0; } - // tester cache if ((strcmp(adr,"file://")) /* pas fichier */ && ( (!test) || (cache->type==1) ) /* cache prioritaire, laisser passer en test! */ @@ -528,10 +683,10 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* #endif char buff[HTS_URLMAXSIZE*4]; #if HTS_FAST_CACHE - strcpy(buff,adr); strcat(buff,fil); + strcpybuff(buff,adr); strcatbuff(buff,fil); hash_pos_return=inthash_read((inthash)cache->hashtable,buff,(long int*)&hash_pos); #else - buff[0]='\0'; strcat(buff,"\n"); strcat(buff,adr); strcat(buff,"\n"); strcat(buff,fil); strcat(buff,"\n"); + buff[0]='\0'; strcatbuff(buff,"\n"); strcatbuff(buff,adr); strcatbuff(buff,"\n"); strcatbuff(buff,fil); strcatbuff(buff,"\n"); a=strstr(cache->use,buff); #endif @@ -550,21 +705,45 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* sscanf(a,"%d",&pos); // lire position #endif if (pos<0) { // pas de mise en cache data, vérifier existence - if (fsize(antislash(save)) <= 0) { // fichier existe pas ou est vide! + if (fsize(fconv(save)) <= 0) { // fichier existe pas ou est vide! + int found=0; + + /* It is possible that the file has been moved due to changes in build structure */ + { + char previous_save[HTS_URLMAXSIZE*2]; + previous_save[0] = '\0'; + back[p].r = cache_readex(opt, cache, adr, fil, NULL, back[p].location_buffer, previous_save, 0); + if (previous_save[0] != '\0' && fexist(fconv(previous_save))) { + rename(fconv(previous_save), fconv(save)); + if (fexist(fconv(save))) { + found = 1; + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"File '%s' has been renamed since last mirror to '%s' ; applying changes"LF, previous_save, save); test_flush; + } + } else { + if ((opt->debug>0) && (opt->log!=NULL)) { + fspc(opt->log,"error"); fprintf(opt->log,"Could not rename '%s' to '%s' ; will have to retransfer it"LF, previous_save, save); test_flush; + } + } + } + } + + if (!found) { #if HTS_FAST_CACHE - hash_pos_return=0; + hash_pos_return=0; #else - a=NULL; -#endif - // dévalider car non présent sur disque dans structure originale!!! - // sinon, le fichier est ok à priori, mais on renverra un if-modified-since pour - // en être sûr - if (opt->norecatch) { // tester norecatch - if (!fexist(antislash(save))) { // fichier existe pas mais déclaré: on l'a effacé - FILE* fp=fopen(antislash(save),"wb"); - if (fp) fclose(fp); - if (opt->log!=NULL) { - fspc(opt->log,"warning"); fprintf(opt->log,"File must have been erased by user, ignoring: %s%s"LF,back[p].url_adr,back[p].url_fil); test_flush; + a=NULL; +#endif + // dévalider car non présent sur disque dans structure originale!!! + // sinon, le fichier est ok à priori, mais on renverra un if-modified-since pour + // en être sûr + if (opt->norecatch) { // tester norecatch + if (!fexist(fconv(save))) { // fichier existe pas mais déclaré: on l'a effacé + FILE* fp=fopen(fconv(save),"wb"); + if (fp) fclose(fp); + if (opt->log!=NULL) { + fspc(opt->log,"warning"); fprintf(opt->log,"File must have been erased by user, ignoring: %s%s"LF,back[p].url_adr,back[p].url_fil); test_flush; + } } } } @@ -587,18 +766,15 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* if (a!=NULL) { // OK existe en cache (et données aussi)! #endif if (cache->type==1) { // cache prioritaire (pas de test if-modified..) - // dans ce cas on peut également lire des réponses cachées comme 404,302... + // dans ce cas on peut également lire des réponses cachées comme 404,302... // lire dans le cache if (!test) - back[p].r=cache_read(opt,cache,adr,fil,save); + back[p].r = cache_read(opt,cache,adr,fil,save, back[p].location_buffer); else - back[p].r=cache_read(opt,cache,adr,fil,NULL); // charger en tête uniquement du cache - if (!back[p].r.location) - back[p].r.location=back[p].location_buffer; - else { /* recopier */ - strcpy(back[p].location_buffer,back[p].r.location); - back[p].r.location=back[p].location_buffer; - } + back[p].r = cache_read(opt,cache,adr,fil,NULL, back[p].location_buffer); // charger en tête uniquement du cache + + /* ensure correct location buffer set */ + back[p].r.location=back[p].location_buffer; /* Interdiction taille par le wizard? --> détruire */ if (back[p].r.statuscode != -1) { // pas d'erreur de lecture @@ -606,9 +782,9 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* back[p].status=0; // FINI back[p].r.statuscode=-1; if (!back[p].testmode) - strcpy(back[p].r.msg,"Cached file skipped (too big)"); + strcpybuff(back[p].r.msg,"Cached file skipped (too big)"); else - strcpy(back[p].r.msg,"Test: Cached file skipped (too big)"); + strcpybuff(back[p].r.msg,"Test: Cached file skipped (too big)"); return 0; } } @@ -639,42 +815,43 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* } } else if (cache->type==2) { // si en cache, demander de tester If-Modified-Since - htsblk* r=cache_header(opt,cache,adr,fil); + htsblk r; + cache_header(opt,cache,adr,fil,&r); /* Interdiction taille par le wizard? */ { LLint save_totalsize=back[p].r.totalsize; - back[p].r.totalsize=r->totalsize; + back[p].r.totalsize=r.totalsize; if (!back_checksize(opt,&back[p],1)) { - r=NULL; + r.statuscode = -1; // back[p].status=0; // FINI deletehttp(&back[p].r); back[p].r.soc=INVALID_SOCKET; if (!back[p].testmode) - strcpy(back[p].r.msg,"File too big"); + strcpybuff(back[p].r.msg,"File too big"); else - strcpy(back[p].r.msg,"Test: File too big"); + strcpybuff(back[p].r.msg,"Test: File too big"); return 0; } back[p].r.totalsize=save_totalsize; } - if (r) { - if (r->statuscode==200) { // uniquement des 200 (OK) - if (strnotempty(r->etag)) { // ETag (RFC2616) + if (r.statuscode != -1) { + if (r.statuscode==200) { // uniquement des 200 (OK) + if (strnotempty(r.etag)) { // ETag (RFC2616) /* - If both an entity tag and a Last-Modified value have been provided by the origin server, SHOULD use both validators in cache-conditional requests. This allows both HTTP/1.0 and HTTP/1.1 caches to respond appropriately. */ - if (strnotempty(r->lastmodified)) - sprintf(back[p].send_too,"If-None-Match: %s\r\nIf-Modified-Since: %s\r\n",r->etag,r->lastmodified); + if (strnotempty(r.lastmodified)) + sprintf(back[p].send_too,"If-None-Match: %s\r\nIf-Modified-Since: %s\r\n",r.etag,r.lastmodified); else - sprintf(back[p].send_too,"If-None-Match: %s\r\n",r->etag); + sprintf(back[p].send_too,"If-None-Match: %s\r\n",r.etag); } - else if (strnotempty(r->lastmodified)) - sprintf(back[p].send_too,"If-Modified-Since: %s\r\n",r->lastmodified); + else if (strnotempty(r.lastmodified)) + sprintf(back[p].send_too,"If-Modified-Since: %s\r\n",r.lastmodified); else if (strnotempty(cache->lastmodified)) sprintf(back[p].send_too,"If-Modified-Since: %s\r\n",cache->lastmodified); @@ -754,7 +931,7 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* filenote(save,NULL); // ne pas purger tout de même back[p].status=0; // OK prêt back[p].r.statuscode=-1; // erreur - strcpy(back[p].r.msg,"Null-size file not recaught"); + strcpybuff(back[p].r.msg,"Null-size file not recaught"); return 0; } } else { @@ -781,12 +958,13 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* // recopier proxy memcpy(&(back[p].r.req.proxy), &opt->proxy, sizeof(opt->proxy)); // et user-agent - strcpy(back[p].r.req.user_agent,opt->user_agent); - strcpy(back[p].r.req.lang_iso,opt->lang_iso); + strcpybuff(back[p].r.req.user_agent,opt->user_agent); + strcpybuff(back[p].r.req.lang_iso,opt->lang_iso); back[p].r.req.user_agent_send=opt->user_agent_send; // et http11 back[p].r.req.http11=back[p].http11; back[p].r.req.nocompression=opt->nocompression; + back[p].r.req.nokeepalive=opt->nokeepalive; // mode ftp, court-circuit! if (strfield(back[p].url_adr,"ftp://")) { @@ -804,7 +982,7 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* { char nid[32]; sprintf(nid,"htsftp%d-in_progress.lock",p); - strcpy(back[p].location_buffer,fconcat(opt->path_log,nid)); + strcpybuff(back[p].location_buffer,fconcat(opt->path_log,nid)); } launch_ftp(&(back[p]),back[p].location_buffer,opt->exec); #endif @@ -812,49 +990,60 @@ int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* } } #if HTS_USEOPENSSL - else if (strfield(back[p].url_adr,"https://")) { // let's rock + else if (SSL_is_available && strfield(back[p].url_adr,"https://")) { // let's rock back[p].r.ssl = 1; // back[p].r.ssl_soc = NULL; back[p].r.ssl_con = NULL; } #endif + if (!back_trylive(opt,back, back_max, p)) { #if HTS_XGETHOST #if HDEBUG - printf("back_solve..\n"); + printf("back_solve..\n"); #endif - back[p].status=101; // tentative de résolution du nom de host - soc=INVALID_SOCKET; // pas encore ouverte - back_solve(&back[p]); // préparer - if (host_wait(&back[p])) { // prêt, par ex fichier ou dispo dans dns + back[p].status=101; // tentative de résolution du nom de host + soc=INVALID_SOCKET; // pas encore ouverte + back_solve(&back[p]); // préparer + if (host_wait(&back[p])) { // prêt, par ex fichier ou dispo dans dns #if HDEBUG - printf("ok, dns cache ready..\n"); + printf("ok, dns cache ready..\n"); #endif - soc=http_xfopen(0,0,0,back[p].send_too,adr,fil,&(back[p].r)); - if (soc==INVALID_SOCKET) { - back[p].status=0; // fini, erreur + soc=http_xfopen(0,0,0,back[p].send_too,adr,fil,&(back[p].r)); + if (soc==INVALID_SOCKET) { + back[p].status=0; // fini, erreur + } } - } -// + // #else -// + // #if CNXDEBUG - printf("XFopen..\n"); + printf("XFopen..\n"); #endif - - if (strnotempty(back[p].send_too)) // envoyer un if-modified-since + + if (strnotempty(back[p].send_too)) // envoyer un if-modified-since #if HTS_XCONN - soc=http_xfopen(0,0,0,back[p].send_too,adr,fil,&(back[p].r)); + soc=http_xfopen(0,0,0,back[p].send_too,adr,fil,&(back[p].r)); #else - soc=http_xfopen(0,0,1,back[p].send_too,adr,fil,&(back[p].r)); + soc=http_xfopen(0,0,1,back[p].send_too,adr,fil,&(back[p].r)); #endif - else + else #if HTS_XCONN - soc=http_xfopen(test,0,0,NULL,adr,fil,&(back[p].r)); + soc=http_xfopen(test,0,0,NULL,adr,fil,&(back[p].r)); #else - soc=http_xfopen(test,0,1,NULL,adr,fil,&(back[p].r)); + soc=http_xfopen(test,0,1,NULL,adr,fil,&(back[p].r)); #endif #endif + } else { + soc = back[p].r.soc; + + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(Keep-Alive): successfully linked #%d (for %s%s)"LF, + back[p].r.debugid, + back[p].url_adr, back[p].url_fil); test_flush; + } + } + if (opt->timeout>0) { // gestion du opt->timeout back[p].timeout=opt->timeout; back[p].timeout_refresh=time_local(); @@ -938,7 +1127,7 @@ PTHREAD_TYPE Hostlookup(void* iadr_p) { #if DEBUGDNS printf("resolv in background: %s\n",jump_identification(iadr_p)); #endif - strcpy(iadr,jump_identification(iadr_p)); + strcpybuff(iadr,jump_identification(iadr_p)); // couper éventuel : { char *a; @@ -965,7 +1154,7 @@ PTHREAD_TYPE Hostlookup(void* iadr_p) { cache->n=(t_dnscache*) calloct(1,sizeof(t_dnscache)); if (cache->n!=NULL) { t_fullhostent fullhostent_buffer; - strcpy(cache->n->iadr,iadr); + strcpybuff(cache->n->iadr,iadr); cache->n->host_length=0; /* pour le moment rien */ cache->n->n=NULL; _hts_lockdns(0); // délocker @@ -1019,7 +1208,7 @@ void back_solve(lien_back* back) { { char* p = calloct(strlen(a)+2,1); if (p) { - strcpy(p,a); + strcpybuff(p,a); _beginthread( Hostlookup , 0, p ); } } @@ -1031,7 +1220,7 @@ void back_solve(lien_back* back) { #if USE_BEGINTHREAD char* p = calloct(strlen(a)+2,1); if (p) { - strcpy(p,a); + strcpybuff(p,a); _beginthread( Hostlookup , 0, p ); } #else @@ -1061,32 +1250,79 @@ int host_wait(lien_back* back) { // élimine les fichiers non html en backing (anticipation) // cleanup non-html files in backing to save backing space // and allow faster "save in cache" operation +// also cleanup keep-alive sockets and ensure that not too many sockets are being opened void back_clean(httrackp* opt,cache_back* cache,lien_back* back,int back_max) { +#if HTS_ANALYSTE + int oneMore = ( (_hts_in_html_parsing == 2 && opt->maxsoc >= 2) || (_hts_in_html_parsing == 1 && opt->maxsoc >= 4) ) ? 1 : 0; // testing links +#endif int i; for(i=0;i0) { // size>0 - if (back[i].r.statuscode==200) { // HTTP "OK" - if (!is_hypertext_mime(back[i].r.contenttype)) { // not HTML/hypertext - if (!may_be_hypertext_mime(back[i].r.contenttype)) { // may NOT be parseable mime type - if (back[i].pass2_ptr) { - // finalize - // // back_finalize(opt,cache,back,i); - // stats - //HTS_STAT.stat_bytes+=back[i].r.size; - //HTS_STAT.stat_files++; - //if ( (!back[i].r.notmodified) && (opt->is_update) ) { - // HTS_STAT.stat_updated_files++; // page modifiée - //} - //cache_mayadd(opt,cache,&back[i].r,back[i].url_adr,back[i].url_fil,back[i].url_sav); - *back[i].pass2_ptr=-1; // Done! - back_delete(back,i); // Delete backing entry - if ((opt->debug>0) && (opt->log!=NULL)) { - fspc(opt->log,"info"); fprintf(opt->log,"File successfully written in background: %s"LF,back[i].url_sav); test_flush; + if (back[i].r.is_write // not in memory (on disk, ready) + && !is_hypertext_mime(back[i].r.contenttype) // not HTML/hypertext + && !may_be_hypertext_mime(back[i].r.contenttype) // may NOT be parseable mime type + ) { + if (back[i].pass2_ptr) { + // finalize + // // back_finalize(opt,cache,back,i); + // stats + //HTS_STAT.stat_bytes+=back[i].r.size; + //HTS_STAT.stat_files++; + //if ( (!back[i].r.notmodified) && (opt->is_update) ) { + // HTS_STAT.stat_updated_files++; // page modifiée + //} + //xxxcache_mayadd(opt,cache,&back[i].r,back[i].url_adr,back[i].url_fil,back[i].url_sav); + usercommand(opt, 0, NULL, back[i].url_sav, back[i].url_adr, back[i].url_fil); + *back[i].pass2_ptr=-1; // Done! + back_maydelete(opt,back,i); // May delete backing entry + if ((opt->debug>0) && (opt->log!=NULL)) { + fspc(opt->log,"info"); fprintf(opt->log,"File successfully written in background: %s"LF,back[i].url_sav); test_flush; + } + } + } else { + if (!back[i].finalized) { + if (1) { + /* Ensure deleted or recycled socket */ + /* BUT DO NOT YET WIPE back[i].r.adr */ + back_maydeletehttp(opt, back, back_max, i); + if ( (opt->debug>1) && (opt->log!=NULL) ) { + fspc(opt->log,"debug"); fprintf(opt->log,"file %s%s validated (cached, left in memory)"LF,back[i].url_adr,back[i].url_fil); test_flush; + } + } else { + /* + NOT YET HANDLED CORRECTLY (READ IN NEW CACHE TO DO) + */ + /* Lock the entry but do not keep the html data in memory (in cache) */ + if (opt->cache) { + htsblk r; + + /* Ensure deleted or recycled socket */ + back_maydeletehttp(opt, back, back_max, i); + assertf(back[i].r.soc == INVALID_SOCKET); + + /* Check header */ + cache_header(opt,cache,back[i].url_adr,back[i].url_fil,&r); + if (r.statuscode == 200) { + if (back[i].r.soc == INVALID_SOCKET) { + /* Delete buffer and sockets */ + deleteaddr(&back[i].r); + deletehttp(&back[i].r); + back[i].finalized = 1; + if ( (opt->debug>1) && (opt->log!=NULL) ) { + fspc(opt->log,"debug"); fprintf(opt->log,"file %s%s temporarily left in cache to spare memory"LF,back[i].url_adr,back[i].url_fil); test_flush; + } + } + } else { + if ((opt->debug>0) && (opt->log!=NULL)) { + fspc(opt->log,"warning"); fprintf(opt->log,"Unexpected html cache lookup error during back clean"LF); test_flush; + } } + // xxc xxc } } } @@ -1095,8 +1331,49 @@ void back_clean(httrackp* opt,cache_back* cache,lien_back* back,int back_max) { } } } + } else if (back[i].status == -103) { // waiting (keep-alive) + if ( + ! back[i].r.keep_alive + || back[i].r.soc == INVALID_SOCKET + || back[i].r.keep_alive_max < 1 + || time_local() >= back[i].ka_time_start + back[i].r.keep_alive_t + ) { + if ((opt->debug>0) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(Keep-Alive): live socket closed #%d (%s)"LF, + back[i].r.debugid, + back[i].url_adr); + test_flush; + } + back_delete(opt,back, i); // delete backing entry + } } - } + } + /* switch connections to live ones */ + for(i=0;imaxsoc > 0) { + int max = opt->maxsoc + oneMore; + int curr = back_nsoc_overall(back, back_max); + if (curr > max) { + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(Keep-Alive): deleting #%d sockets"LF, + curr - max); test_flush; + } + } + for(i = 0 ; i < back_max && curr > max ; i++) { + if (back[i].status == -103) { + back_delete(opt,back, i); // delete backing entry + curr--; + } + } + } } @@ -1208,9 +1485,9 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta } else { back[i].r.statuscode=-4; if (back[i].status==100) - strcpy(back[i].r.msg,"Connect Error"); + strcpybuff(back[i].r.msg,"Connect Error"); else - strcpy(back[i].r.msg,"Receive Error"); + strcpybuff(back[i].r.msg,"Receive Error"); back[i].status=0; // terminé if ((opt->debug>0) && (opt->log!=NULL)) { fspc(opt->log,"warning"); fprintf(opt->log,"Unexpected socket error during pre-loop"LF); test_flush; @@ -1251,6 +1528,13 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta if (nsockets) { if (opt->maxrate>0) { max_read_bytes = ( check_downloadable_bytes(opt->maxrate) / nsockets ); + if (max_read_bytes > TAILLE_BUFFER) { + /* limit size */ + max_read_bytes = TAILLE_BUFFER; + } else if (max_read_bytes < TAILLE_BUFFER) { + /* a small pause */ + Sleep(10); + } } } if (!max_read_bytes) @@ -1273,10 +1557,14 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta back[i].r.soc=INVALID_SOCKET; back[i].r.statuscode=-4; if (back[i].status==100) - strcpy(back[i].r.msg,"Connect Error"); + strcpybuff(back[i].r.msg,"Connect Error"); else - strcpy(back[i].r.msg,"Receive Error"); - back[i].status=0; // terminé + strcpybuff(back[i].r.msg,"Receive Error"); + if (back[i].status == -103) { /* Keep-alive socket */ + back_delete(opt,back, i); + } else { + back[i].status=0; // terminé + } } } } @@ -1297,7 +1585,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta #if HTS_USEOPENSSL /* SSL mode */ - if (back[i].r.ssl) { + if (SSL_is_available && back[i].r.ssl) { // handshake not yet launched if (!back[i].r.ssl_con) { SSL_CTX_set_options(openssl_ctx, SSL_OP_ALL); @@ -1315,7 +1603,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta } /* Error */ if (back[i].r.statuscode == -6) { - strcpy(back[i].r.msg, "bad SSL/TLS handshake"); + strcpybuff(back[i].r.msg, "bad SSL/TLS handshake"); deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; back[i].r.statuscode=-5; @@ -1335,14 +1623,16 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta Sleep(1000/opt->maxconn); } + back[i].ka_time_start=time_local(); if (back[i].timeout>0) { // refresh timeout si besoin est - back[i].timeout_refresh=time_local(); + back[i].timeout_refresh=back[i].ka_time_start; } if (back[i].rateout>0) { // le taux de transfert de base sur le début de la connexion - back[i].rateout_time=time_local(); + back[i].rateout_time=back[i].ka_time_start; } // envoyer header //if (strcmp(back[i].url_sav,BACK_ADD_TEST)!=0) // vrai get + HTS_STAT.stat_nrequests++; if (!back[i].head_request) http_sendhead(opt->cookie,0,back[i].send_too,back[i].url_adr,back[i].url_fil,back[i].referer_adr,back[i].referer_fil,&back[i].r); else if (back[i].head_request==2) // test en GET! @@ -1356,7 +1646,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta // attente gethostbyname } #if HTS_USEOPENSSL - else if (back[i].status==102) { // wait for SSL handshake + else if (SSL_is_available && back[i].status==102) { // wait for SSL handshake /* SSL mode */ if (back[i].r.ssl) { int conn_code; @@ -1372,7 +1662,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta tmp[0]='\0'; ERR_error_string(err_code, tmp); back[i].r.msg[0]='\0'; - strncat(back[i].r.msg, tmp, sizeof(back[i].r.msg) - 2); + strncatbuff(back[i].r.msg, tmp, sizeof(back[i].r.msg) - 2); if (!strnotempty(back[i].r.msg)) { sprintf(back[i].r.msg, "SSL/TLS error %d", err_code); } @@ -1385,7 +1675,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta back[i].status=100; // back to waitconnect } } else { - strcpy(back[i].r.msg, "unexpected SSL/TLS error"); + strcpybuff(back[i].r.msg, "unexpected SSL/TLS error"); deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; back[i].r.statuscode=-5; @@ -1425,7 +1715,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta back[i].r.soc=INVALID_SOCKET; back[i].r.statuscode=-5; if (strnotempty(back[i].r.msg)==0) - strcpy(back[i].r.msg,"Unable to resolve host name"); + strcpybuff(back[i].r.msg,"Unable to resolve host name"); } } @@ -1451,9 +1741,9 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta back[i].r.msg[j++]='\0'; fclose(fp); remove(fconcat(back[i].location_buffer,".ok")); - strcpy(fconcat(back[i].location_buffer,".ok"),""); + strcpybuff(fconcat(back[i].location_buffer,".ok"),""); } else { - strcpy(back[i].r.msg,"Unknown ftp result, check if file is ok"); + strcpybuff(back[i].r.msg,"Unknown ftp result, check if file is ok"); back[i].r.statuscode=-1; } back[i].status=0; @@ -1507,20 +1797,26 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta if (back[i].r.statuscode==200) { // 'OK' if (!is_hypertext_mime(back[i].r.contenttype)) { // pas HTML if (opt->getmode&2) { // on peut ecrire des non html + int fcheck=0; back[i].r.is_write=1; // écrire if (back[i].r.compressed && /* .gz are *NOT* depacked!! */ (strfield(get_ext(back[i].url_sav),"gz") == 0) ) { - back[i].tmpfile[0]='\0'; - strcpy(back[i].tmpfile,tempnam(NULL,"httrZ")); - if (back[i].tmpfile[0]) + back[i].tmpfile_buffer[0]='\0'; + back[i].tmpfile=tmpnam(back[i].tmpfile_buffer); + if (back[i].tmpfile != NULL && back[i].tmpfile[0]) back[i].r.out=fopen(back[i].tmpfile,"wb"); } else { back[i].r.compressed=0; back[i].r.out=filecreate(back[i].url_sav); } + if (back[i].r.out==NULL) { + if ((fcheck=check_fatal_io_errno())) { + opt->state.exit_xh=-1; /* fatal error */ + } + } #if HDEBUG printf("direct-disk: %s\n",back[i].url_sav); #endif @@ -1531,7 +1827,11 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta if (back[i].r.out==NULL) { if (opt->errlog) { fspc(opt->errlog,"error"); - fprintf(opt->errlog,"Unable to save file %s"LF,back[i].url_sav); + fprintf(opt->errlog,"Unable to save file %s : %s"LF,back[i].url_sav, strerror(errno)); + if (fcheck) { + fspc(opt->errlog,"error"); + fprintf(opt->errlog,"* * Fatal write error, giving up"LF); + } test_flush; } back[i].r.is_write=0; // erreur, abandonner @@ -1573,7 +1873,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta if (back[i].status) { if (back[i].status==99) // recevoir par bloc de lignes retour_fread=http_xfread1(&(back[i].r),0); - else if (back[i].status==98) { // recevoir longueur chunk en hexa caractère par caractère + else if (back[i].status==98 || back[i].status==97) { // recevoir longueur chunk en hexa caractère par caractère // backuper pour lire dans le buffer chunk htsblk r; memcpy(&r, &(back[i].r), sizeof(htsblk)); @@ -1593,7 +1893,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta } else if (back[i].is_chunk) { // attention chunk, limiter taille à lire #if CHUNKDEBUG==1 - printf("read %d bytes\n",(int)min(back[i].r.totalsize-back[i].r.size,max_read_bytes)); + printf("[%d] read %d bytes\n",(int)back[i].r.soc,(int)min(back[i].r.totalsize-back[i].r.size,max_read_bytes)); #endif retour_fread=(int) http_xfread1(&(back[i].r),(int) min(back[i].r.totalsize-back[i].r.size,max_read_bytes)); } else @@ -1607,38 +1907,47 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta if (back[i].is_chunk) { // attendre prochain chunk if (back[i].r.size==back[i].r.totalsize) { // fin chunk! //printf("chunk end at %d\n",back[i].r.size); - back[i].status=98; // prochain chunk - if (back[i].chunk_adr!=NULL) { freet(back[i].chunk_adr); back[i].chunk_adr=NULL; } back[i].chunk_size=0; + back[i].status=97; /* fetch ending CRLF */ + if (back[i].chunk_adr!=NULL) { + freet(back[i].chunk_adr); + back[i].chunk_adr=NULL; + } + back[i].chunk_size=0; retour_fread=0; // pas d'erreur #if CHUNKDEBUG==1 - printf("waiting for next chunk header (soc %d)..\n",back[i].r.soc); + printf("[%d] waiting for current chunk CRLF..\n",(int)back[i].r.soc); #endif } + } else if (back[i].r.keep_alive) { + if (back[i].r.size==back[i].r.totalsize) { // fin! + retour_fread=-1; // end + } } } - - if (retour_fread < 0) { // erreur réception + + if (retour_fread < 0) { // fin réception back[i].status=0; // terminé if (back[i].r.soc!=INVALID_SOCKET) { #if HTS_DEBUG_CLOSESOCK DEBUG_W("back_wait(4): deletehttp\n"); #endif - deletehttp(&back[i].r); + /*KA deletehttp(&back[i].r);*/ + back_maydeletehttp(opt, back, back_max, i); } - back[i].r.soc=INVALID_SOCKET; + /*KA back[i].r.soc=INVALID_SOCKET; */ #if CHUNKDEBUG==1 if (back[i].is_chunk) - printf("must be the last chunk for %s (connection closed) - %d/%d\n",back[i].url_fil,back[i].r.size,back[i].r.totalsize); + printf("[%d] must be the last chunk for %s (connection closed) - %d/%d\n",(int)back[i].r.soc,back[i].url_fil,back[i].r.size,back[i].r.totalsize); #endif //if ((back[i].r.statuscode==-1) && (strnotempty(back[i].r.msg)==0)) { - if ((back[i].r.statuscode<0) && (strnotempty(back[i].r.msg)==0)) { + if ((back[i].r.statuscode <= 0) && (strnotempty(back[i].r.msg)==0)) { #if HDEBUG printf("error interruped: %s\n",back[i].r.adr); #endif if (back[i].r.size>0) - strcat(back[i].r.msg,"Interrupted transfer"); + strcatbuff(back[i].r.msg,"Interrupted transfer"); else - strcat(back[i].r.msg,"No data (connection closed)"); + strcatbuff(back[i].r.msg,"No data (connection closed)"); back[i].r.statuscode=-4; } @@ -1652,15 +1961,15 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta if (back[i].r.totalsize!=back[i].r.size) { // pas la même! if (!opt->tolerant) { //#if HTS_CL_IS_FATAL - if (back[i].r.adr) freet(back[i].r.adr); back[i].r.adr=NULL; + deleteaddr(&back[i].r); if (back[i].r.sizeerrlog!=NULL) { - fspc(cache->errlog,"warning"); fprintf(cache->errlog,"Incorrect length ("LLintP"!="LLintP" expected) for %s%s"LF,back[i].r.size,back[i].r.totalsize,back[i].url_adr,back[i].url_fil); + fspc(cache->errlog,"warning"); fprintf(cache->errlog,"Incorrect length ("LLintP"!="LLintP" expected) for %s%s"LF,(LLint)back[i].r.size,(LLint)back[i].r.totalsize,back[i].url_adr,back[i].url_fil); } //#endif } @@ -1675,92 +1984,156 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta } // Traitement des en têtes chunks ou en têtes - if (back[i].status==98) { // réception taille chunk en hexa ( après les en têtes, peut ne pas - if (back[i].chunk_size>=2) { + if (back[i].status==98 || back[i].status==97) { // réception taille chunk en hexa ( après les en têtes, peut ne pas + if (back[i].chunk_size > 0 && back[i].chunk_adr[back[i].chunk_size-1]==10) { int chunk_size=-1; - // être présent) - if (back[i].chunk_adr[back[i].chunk_size-1]==10) { // LF, fin ligne chunk - char chunk_data[64]; - if (back[i].chunk_size<32) { // pas trop gros - back[i].chunk_adr[ back[i].chunk_size-1]='\0'; // octet nul - strcpy(chunk_data,""); // hex number - strcat(chunk_data,back[i].chunk_adr); + char chunk_data[64]; + if (back[i].chunk_size<32) { // pas trop gros + char* chstrip=back[i].chunk_adr; + back[i].chunk_adr[ back[i].chunk_size-1]='\0'; // octet nul + // skip leading spaces or cr + while(isspace(*chstrip)) chstrip++; + chunk_data[0] = '\0'; + strncatbuff(chunk_data, chstrip, sizeof(chunk_data) - 2); + // strip chunk-extension + while( (chstrip = strchr(chunk_data, ';'))) *chstrip='\0'; + while( (chstrip = strchr(chunk_data, ' '))) *chstrip='\0'; + while( (chstrip = strchr(chunk_data, '\r'))) *chstrip='\0'; #if CHUNKDEBUG==1 - printf("chunk received and read: %s\n",chunk_data); + printf("[%d] chunk received and read: %s\n",(int)back[i].r.soc,chunk_data); #endif - if (back[i].r.totalsize<0) - back[i].r.totalsize=0; // initialiser à 0 + if (back[i].r.totalsize<0) + back[i].r.totalsize=0; // initialiser à 0 + if (back[i].status==98) { // "real" chunk if (sscanf(chunk_data,"%x",&chunk_size) == 1) { + if (chunk_size > 0) + back[i].chunk_blocksize = chunk_size; /* the data block chunk size */ + else + back[i].chunk_blocksize = -1; /* ending */ back[i].r.totalsize+=chunk_size; // noter taille back[i].r.adr=(char*) realloct(back[i].r.adr,(INTsys) back[i].r.totalsize + 1); if (!back[i].r.adr) { if (cache->errlog!=NULL) { - fprintf(cache->errlog,"Error: Not enough memory ("LLintP") for %s%s"LF,back[i].r.totalsize,back[i].url_adr,back[i].url_fil); + fprintf(cache->errlog,"Error: Not enough memory ("LLintP") for %s%s"LF,(LLint)back[i].r.totalsize,back[i].url_adr,back[i].url_fil); } } #if CHUNKDEBUG==1 - printf("chunk length: %d - next total "LLintP":\n",chunk_size,back[i].r.totalsize); + printf("[%d] chunk length: %d - next total "LLintP":\n",(int)back[i].r.soc,(int)chunk_size,(LLint)back[i].r.totalsize); #endif - } else + } else { if (cache->errlog!=NULL) { fprintf(cache->errlog,"Warning: Illegal chunk (%s) for %s%s"LF,back[i].chunk_adr,back[i].url_adr,back[i].url_fil); } - } else { - if (cache->errlog!=NULL) { - fprintf(cache->errlog,"Warning: Chunk too big ("LLintP") for %s%s"LF,back[i].chunk_size,back[i].url_adr,back[i].url_fil); + } + } else { /* back[i].status==97 : just receiving ending CRLF after data */ + if (chunk_data[0] == '\0') { + if (back[i].chunk_blocksize > 0) + chunk_size=(int)back[i].chunk_blocksize; /* recent data chunk size */ + else if (back[i].chunk_blocksize == -1) + chunk_size=0; /* ending chunk */ + else + chunk_size=1; /* fake positive size for 1st chunk history */ +#if CHUNKDEBUG==1 + printf("[%d] chunk CRLF seen\n", (int)back[i].r.soc); +#endif + } else { + if (cache->errlog!=NULL) { + fprintf(cache->errlog,"Warning: Illegal chunk CRLF (%s) for %s%s"LF,back[i].chunk_adr,back[i].url_adr,back[i].url_fil); + } +#if CHUNKDEBUG==1 + printf("[%d] chunk CRLF ERROR!! : '%s'\n", (int)back[i].r.soc, chunk_data); +#endif } } + } else { + if (cache->errlog!=NULL) { + fprintf(cache->errlog,"Warning: Chunk too big ("LLintP") for %s%s"LF,(LLint)back[i].chunk_size,back[i].url_adr,back[i].url_fil); + } + } - // ok, continuer sur le body + // ok, continuer sur le body - // si chunk non nul continuer (ou commencer) - if (chunk_size>0) { - back[i].status=1; // continuer body + // si chunk non nul continuer (ou commencer) + if (back[i].status==97 && chunk_size > 0) { + back[i].status = 98; /* waiting for next chunk (NN\r\n\r\nNN\r\n..\r\n0\r\n\r\n) */ +#if CHUNKDEBUG==1 + printf("[%d] waiting for next chunk\n", (int)back[i].r.soc); +#endif + } else if (back[i].status==98 && chunk_size == 0) { /* final chunk */ + back[i].status=97; /* final CRLF */ +#if CHUNKDEBUG==1 + printf("[%d] waiting for final CRLF (chunk)\n", (int)back[i].r.soc); +#endif + } else if (back[i].status==98 && chunk_size >= 0) { /* will fetch data now */ + back[i].status=1; // continuer body #if CHUNKDEBUG==1 - printf("waiting for body (chunk)\n"); + printf("[%d] waiting for body (chunk)\n", (int)back[i].r.soc); #endif - } else { // chunk nul, c'est la fin + } else { /* zero-size-chunk-CRLF (end) or error */ #if CHUNKDEBUG==1 - printf("chunk end, total: %d\n",back[i].r.size); + printf("[%d] chunk end, total: %d\n",(int)back[i].r.soc,back[i].r.size); #endif - back[i].status=0; // fin - // finalize transfer - back_finalize(opt,cache,back,i); - if (back[i].r.soc!=INVALID_SOCKET) { + /* End */ + //if (back[i].status==97) { + back[i].status=0; // fin + //} + + // finalize transfer + back_finalize(opt,cache,back,i); + if (back[i].r.soc!=INVALID_SOCKET) { #if HTS_DEBUG_CLOSESOCK - DEBUG_W("back_wait(5): deletehttp\n"); + DEBUG_W("back_wait(5): deletehttp\n"); #endif + /* Error */ + if (chunk_size < 0) { deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; - + deleteaddr(&back[i].r); + back[i].r.statuscode=-1; + strcpybuff(back[i].r.msg,"Invalid chunk"); +#if CHUNKDEBUG==1 + printf("[%d] chunk error\n", (int)back[i].r.soc); +#endif + } else /* if chunk_size == 0 */ { +#if CHUNKDEBUG==1 + printf("[%d] all chunks now received\n", (int)back[i].r.soc); +#endif + /* Tester totalsize en fin de chunk */ if ((back[i].r.totalsize>0)) { // tester totalsize if (back[i].r.totalsize!=back[i].r.size) { // pas la même! #if HTS_CL_IS_FATAL - if (back[i].r.adr) { freet(back[i].r.adr); back[i].r.adr=NULL; } + deleteaddr(&back[i].r); back[i].r.statuscode=-1; - strcpy(back[i].r.msg,"Incorrect length"); + strcpybuff(back[i].r.msg,"Incorrect length"); #else // Un warning suffira.. if (cache->errlog!=NULL) { - fspc(cache->errlog,"warning"); fprintf(cache->errlog,"Incorrect length ("LLintP"!="LLintP" expected) for %s%s"LF,back[i].r.size,back[i].r.totalsize,back[i].url_adr,back[i].url_fil); + fspc(cache->errlog,"warning"); fprintf(cache->errlog,"Incorrect length ("LLintP"!="LLintP" expected) for %s%s"LF,(LLint)back[i].r.size,(LLint)back[i].r.totalsize,back[i].url_adr,back[i].url_fil); } #endif } } - - + + /* Oops, trailers! */ + if (back[i].r.keep_alive_trailers) { + /* fixme (not yet supported) */ + } + } + + } - - // effacer buffer (chunk en tete) - if (back[i].chunk_adr!=NULL) { - freet(back[i].chunk_adr); - back[i].chunk_adr=NULL; - back[i].chunk_size=0; - } + } + + // effacer buffer (chunk en tete) + if (back[i].chunk_adr!=NULL) { + freet(back[i].chunk_adr); + back[i].chunk_adr=NULL; + back[i].chunk_size=0; + // NO! xxback[i].chunk_blocksize = 0; + } - } // chunk LF? - } // taille buffer chunk>2 + } // taille buffer chunk > 1 && LF // } else if (back[i].status==99) { // en têtes (avant le chunk si il est présent) // @@ -1779,15 +2152,34 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta printf("..ok, header received\n"); #endif + + // Callback +#if HTS_ANALYSTE + if (hts_htmlcheck_receivehead != NULL) { + int test_head=hts_htmlcheck_receivehead(back[i].r.adr, back[i].url_adr, back[i].url_fil, back[i].referer_adr, back[i].referer_fil, &back[i].r); + if (test_head!=1) { + if ((opt->debug>0) && (opt->log!=NULL)) { + fspc(opt->log,"warning"); fprintf(opt->log,"External wrapper aborted transfer, breaking connection: %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush; + } + back[i].status=0; // FINI + deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; + strcpybuff(back[i].r.msg,"External wrapper aborted transfer"); + back[i].r.statuscode = -1; + } + } +#endif + /* Hack for zero-length headers */ - if (back[i].r.adr[0] != '<') { + if (back[i].status != 0 && back[i].r.adr[0] != '<') { // ---------------------------------------- // traiter en-tête! // status-line à récupérer ptr+=binput(back[i].r.adr+ptr,rcvd,2000); - if (strnotempty(rcvd)==0) - ptr+=binput(back[i].r.adr+ptr,rcvd,2000); // "certains serveurs buggés envoient un \n au début" (RFC) + if (strnotempty(rcvd)==0) { + /* Bogus CRLF, OR recycled connection and trailing chunk CRLF */ + ptr+=binput(back[i].r.adr+ptr,rcvd,2000); + } // traiter status-line treatfirstline(&back[i].r,rcvd); @@ -1797,7 +2189,8 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta #endif if (_DEBUG_HEAD) { if (ioinfo) { - fprintf(ioinfo,"response for %s%s:\r\ncode=%d\r\n",jump_identification(back[i].url_adr),back[i].url_fil,back[i].r.statuscode); + fprintf(ioinfo,"[%d] response for %s%s:\r\ncode=%d\r\n", + back[i].r.debugid, jump_identification(back[i].url_adr),back[i].url_fil,back[i].r.statuscode); fprintfio(ioinfo,back[i].r.adr,">>> "); fprintf(ioinfo,"\r\n"); fflush(ioinfo); @@ -1831,7 +2224,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta // ---------------------------------------- // libérer mémoire -- après! -- - if (back[i].r.adr!=NULL) { freet(back[i].r.adr); back[i].r.adr=NULL; } + deleteaddr(&back[i].r); } else { // assume text/html, OK treatfirstline(&back[i].r, back[i].r.adr); @@ -1870,10 +2263,11 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta // -> // Content-Range: bytes */2830 if (back[i].range_req_size == back[i].r.crange) { + filenote(back[i].url_sav,NULL); + //xxusercommand(opt,0,NULL,back[i].url_sav,back[i].url_adr,back[i].url_fil); deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; back[i].status=0; // READY back[i].r.size=back[i].r.totalsize=back[i].range_req_size; - filenote(back[i].url_sav,NULL); back[i].r.statuscode=304; // NOT MODIFIED if ((opt->debug>1) && (opt->log!=NULL)) { fspc(opt->log,"debug"); fprintf(opt->log,"File seems complete (good 416 message), breaking connection: %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush; @@ -1897,8 +2291,8 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta // If the size is the same, and the option has been set, we assume // that the file is identical - and therefore let's break the connection if (back[i].is_update) { // mise à jour - if (back[i].r.statuscode==200) { // 'OK' - htsblk r = cache_read(opt,cache,back[i].url_adr,back[i].url_fil,NULL); // lire entrée cache + if (back[i].r.statuscode==200 && !back[i].testmode) { // 'OK' + htsblk r = cache_read(opt,cache,back[i].url_adr,back[i].url_fil,NULL,NULL); // lire entrée cache if (r.statuscode == 200) { // OK pas d'erreur cache LLint len1,len2; len1=r.totalsize; @@ -1930,7 +2324,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta // Detect already downloaded file (with another browser, for example) if (opt->sizehack) { if (!back[i].is_update) { // mise à jour - if (back[i].r.statuscode==200) { // 'OK' + if (back[i].r.statuscode==200 && !back[i].testmode) { // 'OK' if (!is_hypertext_mime(back[i].r.contenttype)) { // not HTML if (strnotempty(back[i].url_sav)) { // target found int size = fsize(back[i].url_sav); // target size @@ -1940,6 +2334,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta back[i].status=0; // READY back[i].r.size=back[i].r.totalsize; filenote(back[i].url_sav,NULL); + //xxusercommand(opt,0,NULL,back[i].url_sav,back[i].url_adr,back[i].url_fil); back[i].r.statuscode=304; // NOT MODIFIED if ((opt->debug>1) && (opt->log!=NULL)) { fspc(opt->log,"debug"); fprintf(opt->log,"File seems complete (same size file discovered), breaking connection: %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush; @@ -1976,6 +2371,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta back[i].status=0; // READY back[i].r.size=back[i].r.totalsize; filenote(back[i].url_sav,NULL); + //xxusercommand(opt,0,NULL,back[i].url_sav,back[i].url_adr,back[i].url_fil); back[i].r.statuscode=304; // NOT MODIFIED if ((opt->debug>1) && (opt->log!=NULL)) { fspc(opt->log,"debug"); fprintf(opt->log,"File seems complete (reget failed), breaking connection: %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush; @@ -2006,9 +2402,9 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta back[i].status=0; // FINI deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; if (!back[i].testmode) - strcpy(back[i].r.msg,"File too big"); + strcpybuff(back[i].r.msg,"File too big"); else - strcpy(back[i].r.msg,"Test: File too big"); + strcpybuff(back[i].r.msg,"Test: File too big"); } } @@ -2023,7 +2419,9 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta DEBUG_W("back_wait(head request): deletehttp\n"); #endif // Couper connexion - deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; + if (!back[i].http11) { /* NO KA */ + deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; + } back[i].status=0; // terminé } // traiter une éventuelle erreur 304 (cache à jour utilisable) @@ -2033,13 +2431,14 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta #if HTS_DEBUG_CLOSESOCK DEBUG_W("back_wait(file is not modified): deletehttp\n"); #endif - deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; - back[i].r=cache_read(opt,cache,back[i].url_adr,back[i].url_fil,back[i].url_sav); - if (!back[i].r.location) - back[i].r.location=back[i].location_buffer; - else { /* recopier */ - strcpy(back[i].location_buffer,back[i].r.location); + /* clear everything but connection: switch, close, and reswitch */ + { + htsblk tmp; + memset(&tmp, 0, sizeof(tmp)); + back_connxfr(&back[i].r, &tmp); + back[i].r=cache_read(opt,cache,back[i].url_adr,back[i].url_fil,back[i].url_sav,back[i].location_buffer); back[i].r.location=back[i].location_buffer; + back_connxfr(&tmp,&back[i].r); } // hack: @@ -2048,6 +2447,10 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta if (back[i].r.statuscode == -1) { if (fexist(back[i].url_sav)) { back[i].r.statuscode=200; // OK + strcpybuff(back[i].r.msg, "OK (cached)"); + back[i].r.is_file=1; + back[i].r.totalsize = back[i].r.size = fsize(back[i].url_sav); + get_httptype(back[i].r.contenttype, back[i].url_sav, 1); if ((opt->debug>0) && (opt->log!=NULL)) { fspc(opt->log,"debug"); fprintf(opt->log,"Not-modified status without cache guessed: %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush; } @@ -2078,6 +2481,8 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta } +/********** NO - must complete the body! ********** */ +#if 0 } else if ((back[i].r.statuscode==301) || (back[i].r.statuscode==302) || (back[i].r.statuscode==303) @@ -2089,20 +2494,21 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta DEBUG_W("back_wait(301,302,303,307,412,416..): deletehttp\n"); #endif // Couper connexion - deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; + /*KA deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET;*/ + back_maydeletehttp(opt, back, back_max, i); + back[i].status=0; // terminé // finalize if (back[i].r.statuscode>0) { back_finalize(opt,cache,back,i); } +#endif +/********** **************************** ********** */ } else { // il faut aller le chercher // effacer buffer (requète) if (!noFreebuff) { - if (back[i].r.adr!=NULL) { - freet(back[i].r.adr); - back[i].r.adr=NULL; - } + deleteaddr(&back[i].r); back[i].r.size=0; } @@ -2130,7 +2536,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta #endif } else { // On est dans la m** back[i].status=0; // terminé (voir plus loin) - strcpy(back[i].r.msg,"Can not open partial file"); + strcpybuff(back[i].r.msg,"Can not open partial file"); } } } else { // mémoire @@ -2139,13 +2545,13 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta LLint alloc_mem=sz + 1; if (back[i].r.totalsize>0) alloc_mem+=back[i].r.totalsize; // AJOUTER RESTANT! - if ( (back[i].r.adr=(char*) malloct((INTsys) alloc_mem)) ) { + if ( deleteaddr(&back[i].r) && (back[i].r.adr=(char*) malloct((INTsys) alloc_mem)) ) { back[i].r.size=sz; if (back[i].r.totalsize>0) back[i].r.totalsize+=sz; // plus en fait - if (((int) fread(back[i].r.adr,1,(INTsys)sz,fp)) != sz) { + if (( fread(back[i].r.adr,1,(INTsys)sz,fp)) != sz) { back[i].status=0; // terminé (voir plus loin) - strcpy(back[i].r.msg,"Can not read partial file"); + strcpybuff(back[i].r.msg,"Can not read partial file"); } else { back[i].r.statuscode=200; // Forcer 'OK' #if HDEBUG @@ -2154,17 +2560,17 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta } } else { back[i].status=0; // terminé (voir plus loin) - strcpy(back[i].r.msg,"No memory for partial file"); + strcpybuff(back[i].r.msg,"No memory for partial file"); } fclose(fp); } else { // Argh.. back[i].status=0; // terminé (voir plus loin) - strcpy(back[i].r.msg,"Can not open partial file"); + strcpybuff(back[i].r.msg,"Can not open partial file"); } } } else { // Non trouvé?? back[i].status=0; // terminé (voir plus loin) - strcpy(back[i].r.msg,"Can not find partial file"); + strcpybuff(back[i].r.msg,"Can not find partial file"); } // Erreur? if (back[i].status==0) { @@ -2178,25 +2584,36 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta //back[i].r.statuscode=206; ???????? back[i].r.statuscode=-5; if (strnotempty(back[i].r.msg)) - strcpy(back[i].r.msg,"Error attempting to solve status 206 (partial file)"); + strcpybuff(back[i].r.msg,"Error attempting to solve status 206 (partial file)"); } } if (back[i].status!=0) { // non terminé (erreur) if (!back[i].testmode) { // fichier normal - if (!back[i].r.is_chunk) { // pas de chunk + if (back[i].r.empty && back[i].r.statuscode==200) { // empty response + // Couper connexion + deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; + back[i].status=0; // terminé + if ( deleteaddr(&back[i].r) && (back[i].r.adr=(char*) malloct((INTsys) 2)) ) { + back[i].r.adr[0] = 0; + } + back_finalize(opt,cache,back,i); + } + else if (!back[i].r.is_chunk) { // pas de chunk //if (back[i].r.http11!=2) { // pas de chunk back[i].is_chunk=0; back[i].status=1; // start body } else { #if CHUNKDEBUG==1 - printf("chunk encoding detected %s..\n",back[i].url_fil); + printf("[%d] chunk encoding detected %s..\n",(int)back[i].r.soc, back[i].url_fil); #endif back[i].is_chunk=1; back[i].chunk_adr=NULL; back[i].chunk_size=0; + back[i].chunk_blocksize=0; back[i].status=98; // start body wait chunk + back[i].r.totalsize=0; /* devalidate size! (rfc) */ } if (back[i].rateout>0) { back[i].rateout_time=time_local(); // refresh pour transfer rate @@ -2211,14 +2628,14 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta #endif deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; if (back[i].r.statuscode==200) { - strcpy(back[i].r.msg,"Test: OK"); + strcpybuff(back[i].r.msg,"Test: OK"); back[i].r.statuscode=-10; // test réussi } else { // test a échoué, on ne change rien sauf que l'erreur est à titre indicatif char tempo[1000]; - strcpy(tempo,back[i].r.msg); - strcpy(back[i].r.msg,"Test: "); - strcat(back[i].r.msg,tempo); + strcpybuff(tempo,back[i].r.msg); + strcpybuff(back[i].r.msg,"Test: "); + strcatbuff(back[i].r.msg,tempo); } } @@ -2254,9 +2671,9 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta if (opt->verbosedisplay==1) { if (back[i].status==0) { if (back[i].r.statuscode==200) - printf("* %s%s ("LLintP" bytes) - OK"VT_CLREOL"\r",back[i].url_adr,back[i].url_fil,back[i].r.size); + printf("* %s%s ("LLintP" bytes) - OK"VT_CLREOL"\r",back[i].url_adr,back[i].url_fil,(LLint)back[i].r.size); else - printf("* %s%s ("LLintP" bytes) - %d"VT_CLREOL"\r",back[i].url_adr,back[i].url_fil,back[i].r.size,back[i].r.statuscode); + printf("* %s%s ("LLintP" bytes) - %d"VT_CLREOL"\r",back[i].url_adr,back[i].url_fil,(LLint)back[i].r.size,back[i].r.statuscode); fflush(stdout); } } @@ -2284,11 +2701,11 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta back[i].r.soc=INVALID_SOCKET; back[i].r.statuscode=-2; if (back[i].status==100) - strcpy(back[i].r.msg,"Connect Time Out"); + strcpybuff(back[i].r.msg,"Connect Time Out"); else if (back[i].status==101) - strcpy(back[i].r.msg,"DNS Time Out"); + strcpybuff(back[i].r.msg,"DNS Time Out"); else - strcpy(back[i].r.msg,"Receive Time Out"); + strcpybuff(back[i].r.msg,"Receive Time Out"); back[i].status=0; // terminé } else if ((back[i].rateout>0) && (back[i].status<99)) { if (((int) (act-back[i].rateout_time))>=HTS_WATCHRATE) { // checker au bout de 15s @@ -2302,7 +2719,7 @@ void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TSta } back[i].r.soc=INVALID_SOCKET; back[i].r.statuscode=-3; - strcpy(back[i].r.msg,"Transfer Rate Too Low"); + strcpybuff(back[i].r.msg,"Transfer Rate Too Low"); } } } @@ -2333,7 +2750,7 @@ int back_checksize(httrackp* opt,lien_back* eback,int check_only_totalsize) { if (size_to_test>=0) { /* Interdiction taille par le wizard? */ - if (hts_testlinksize(opt,eback->url_adr,eback->url_fil,(eback->r.totalsize+1023)/1024)==-1) { + if (hts_testlinksize(opt,eback->url_adr,eback->url_fil,eback->r.totalsize/1024)==-1) { return 0; /* interdit */ } @@ -2345,13 +2762,31 @@ int back_checksize(httrackp* opt,lien_back* eback,int check_only_totalsize) { return 1; } +int back_checkmirror(httrackp* opt) { + // Check max time + if ((opt->maxsite>0) && (HTS_STAT.stat_bytes >= opt->maxsite)) { + if (opt->errlog) { + fprintf(opt->errlog,"More than "LLintP" bytes have been transfered.. giving up"LF,(LLint)opt->maxsite); + test_flush; + } + return 0; + } else if ((opt->maxtime>0) && ((time_local()-HTS_STAT.stat_timestart)>opt->maxtime)) { + if (opt->errlog) { + fprintf(opt->errlog,"More than %d seconds passed.. giving up"LF,opt->maxtime); + test_flush; + } + return 0; + } + return 1; /* Ok, go on */ +} + // octets transférés + add LLint back_transfered(LLint nb,lien_back* back,int back_max) { int i; // ajouter octets en instance for(i=0;i0) && (back[i].status<99)) + if ((back[i].status>0) && (back[i].status<99 || back[i].status>=1000)) nb+=back[i].r.size; return nb; } @@ -2360,10 +2795,10 @@ LLint back_transfered(LLint nb,lien_back* back,int back_max) { // j: 1 afficher sockets 2 afficher autres 3 tout afficher void back_info(lien_back* back,int i,int j,FILE* fp) { if (back[i].status>=0) { - char s[256]; + char s[HTS_URLMAXSIZE*2+1024]; s[0]='\0'; back_infostr(back,i,j,s); - strcat(s,LF); + strcatbuff(s,LF); fprintf(fp,"%s",s); } } @@ -2375,19 +2810,19 @@ void back_infostr(lien_back* back,int i,int j,char* s) { int aff=0; if (j & 1) { if (back[i].status==100) { - strcat(s,"CONNECT "); + strcatbuff(s,"CONNECT "); } else if (back[i].status==99) { - strcat(s,"INFOS "); + strcatbuff(s,"INFOS "); aff=1; - } else if (back[i].status==98) { - strcat(s,"INFOSC"); // infos chunk + } else if (back[i].status==98 || back[i].status==97) { + strcatbuff(s,"INFOSC"); // infos chunk aff=1; } else if (back[i].status>0) { #if HTS_ANALYSTE==2 - strcat(s,"WAIT "); + strcatbuff(s,"WAIT "); #else - strcat(s,"RECEIVE "); + strcatbuff(s,"RECEIVE "); #endif aff=1; } @@ -2396,47 +2831,47 @@ void back_infostr(lien_back* back,int i,int j,char* s) { if (back[i].status==0) { switch (back[i].r.statuscode) { case 200: - strcat(s,"READY "); + strcatbuff(s,"READY "); aff=1; break; #if HTS_ANALYSTE==2 default: - strcat(s,"ERROR "); + strcatbuff(s,"ERROR "); break; #else case -1: - strcat(s,"ERROR "); + strcatbuff(s,"ERROR "); aff=1; break; case -2: - strcat(s,"TIMEOUT "); + strcatbuff(s,"TIMEOUT "); aff=1; break; case -3: - strcat(s,"TOOSLOW "); + strcatbuff(s,"TOOSLOW "); aff=1; break; case 400: - strcat(s,"BADREQUEST "); + strcatbuff(s,"BADREQUEST "); aff=1; break; case 401: case 403: - strcat(s,"FORBIDDEN "); + strcatbuff(s,"FORBIDDEN "); aff=1; break; case 404: - strcat(s,"NOT FOUND "); + strcatbuff(s,"NOT FOUND "); aff=1; break; case 500: - strcat(s,"SERVERROR "); + strcatbuff(s,"SERVERROR "); aff=1; break; default: { char s2[256]; sprintf(s2,"ERROR(%d)",back[i].r.statuscode); - strcat(s,s2); + strcatbuff(s,s2); } aff=1; #endif @@ -2446,12 +2881,12 @@ void back_infostr(lien_back* back,int i,int j,char* s) { if (aff) { { - char s2[1024]; - sprintf(s2,"\"%s",back[i].url_adr); strcat(s,s2); + char s2[HTS_URLMAXSIZE*2+1024]; + sprintf(s2,"\"%s",back[i].url_adr); strcatbuff(s,s2); - if (back[i].url_fil[0]!='/') strcat(s,"/"); - sprintf(s2,"%s\" ",back[i].url_fil); strcat(s,s2); - sprintf(s,LLintP" "LLintP" ",back[i].r.size,back[i].r.totalsize); strcat(s,s2); + if (back[i].url_fil[0]!='/') strcatbuff(s,"/"); + sprintf(s2,"%s\" ",back[i].url_fil); strcatbuff(s,s2); + sprintf(s,LLintP" "LLintP" ",(LLint)back[i].r.size,(LLint)back[i].r.totalsize); strcatbuff(s,s2); } } } diff --git a/src/htsback.h b/src/htsback.h index af5fe6c..74fd540 100644 --- a/src/htsback.h +++ b/src/htsback.h @@ -50,11 +50,19 @@ int back_available(lien_back* back,int back_max); LLint back_incache(lien_back* back,int back_max); HTS_INLINE int back_exist(lien_back* back,int back_max,char* adr,char* fil,char* sav); int back_nsoc(lien_back* back,int back_max); -int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* referer_adr,char* referer_fil,int test,short int* pass2_ptr); +int back_nsoc_overall(lien_back* back,int back_max); +int back_add(lien_back* back,int back_max,httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* referer_adr,char* referer_fil,int test,int* pass2_ptr); int back_stack_available(lien_back* back,int back_max); +int back_search(httrackp* opt, lien_back* back, int back_max); void back_clean(httrackp* opt,cache_back* cache,lien_back* back,int back_max); void back_wait(lien_back* back,int back_max,httrackp* opt,cache_back* cache,TStamp stat_timestart); -int back_delete(lien_back* back,int p); +int back_letlive(httrackp* opt, lien_back* back, int p); +int back_searchlive(httrackp* opt, lien_back* back, int back_max, char* search_addr); +void back_connxfr(htsblk* src, htsblk* dst); +int back_delete(httrackp* opt,lien_back* back,int p); +int back_maydelete(httrackp* opt, lien_back* back, int p); +void back_maydeletehttp(httrackp* opt, lien_back* back, int back_max, int p); +int back_trylive(httrackp* opt,lien_back* back, int back_max, int p); int back_finalize(httrackp* opt,cache_back* cache,lien_back* back,int p); void back_info(lien_back* back,int i,int j,FILE* fp); void back_infostr(lien_back* back,int i,int j,char* s); @@ -65,6 +73,7 @@ void back_solve(lien_back* back); int host_wait(lien_back* back); #endif int back_checksize(httrackp* opt,lien_back* eback,int check_only_totalsize); +int back_checkmirror(httrackp* opt); #if HTS_XGETHOST #if USE_BEGINTHREAD diff --git a/src/htsbase.h b/src/htsbase.h index 3e83471..139e3ed 100644 --- a/src/htsbase.h +++ b/src/htsbase.h @@ -38,20 +38,43 @@ Please visit our Website: http://www.httrack.com #ifndef HTS_BASICH #define HTS_BASICH +#ifdef __cplusplus +extern "C" { +#endif + #include "htsglobal.h" // size_t et mode_t #include -#if HTS_WIN -#else -#include +#include + +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_STAT_H +#include +#endif +#ifdef HAVE_DLFCN_H +#include +#endif + +#ifndef _WIN32 +#include #endif #if HTS_WIN #else - #define min(a,b) ((a)>(b)?(b):(a)) - #define max(a,b) ((a)>(b)?(a):(b)) +#include #endif +#include + +#undef min +#undef max +#define min(a,b) ((a)>(b)?(b):(a)) +#define max(a,b) ((a)>(b)?(a):(b)) // teste égalité de 2 chars, case insensitive #define hichar(a) ((((a)>='a') && ((a)<='z')) ? ((a)-('a'-'A')) : (a)) @@ -63,6 +86,7 @@ Please visit our Website: http://www.httrack.com ( (strfield2((a),"text/html")!=0)\ || (strfield2((a),"application/x-javascript")!=0) \ || (strfield2((a),"text/css")!=0) \ + /*|| (strfield2((a),"text/vnd.wap.wml")!=0)*/ \ || (strfield2((a),"image/svg+xml")!=0) \ || (strfield2((a),"image/svg-xml")!=0) \ /*|| (strfield2((a),"audio/x-pn-realaudio")!=0) */\ @@ -77,60 +101,287 @@ Please visit our Website: http://www.httrack.com // caractère maj #define isUpperLetter(a) ( ((a) >= 'A') && ((a) <= 'Z') ) -// conversion éventuelle / vers antislash -#if HTS_WIN -char* antislash(char* s); +// functions +#ifdef _WIN32 +#define DynamicGet(handle, sym) GetProcAddress(handle, sym) #else -#define antislash(A) (A) +#define DynamicGet(handle, sym) dlsym(handle, sym) #endif +// emergency log +typedef void (*t_abortLog)(char* msg, char* file, int line); +extern HTSEXT_API t_abortLog abortLog__; +#define abortLog(a) abortLog__(a, __FILE__, __LINE__) +#define abortLogFmt(a) do { \ + FILE* fp = fopen("CRASH.TXT", "wb"); \ + if (!fp) fp = fopen("/tmp/CRASH.TXT", "wb"); \ + if (!fp) fp = fopen("C:\\CRASH.TXT", "wb"); \ + if (fp) { \ + fprintf(fp, "HTTrack " HTTRACK_VERSIONID " closed at '" __FILE__ "', line %d\r\n", __LINE__); \ + fprintf(fp, "Reason:\r\n"); \ + fprintf(fp, a); \ + fprintf(fp, "\r\n"); \ + fflush(fp); \ + fclose(fp); \ + } \ +} while(0) -// functions -#if HTS_PLATFORM!=3 -#ifdef __cplusplus -extern "C" { -#endif -#if HTS_PLATFORM!=2 -#if HTS_PLATFORM!=1 - int open (const char *, int, ...); -#endif - //int read (int,const char*,int); - //int write (int,char*,int); -#endif -#if HTS_PLATFORM!=1 - int close (int); - void* calloc (size_t,size_t); - void* malloc (size_t); - void* realloc (void*,size_t); - void free (void*); -#endif -#if HTS_WIN -#else - int mkdir (const char*,mode_t); -#endif -#ifdef __cplusplus -} -#endif -#endif +#define _ , +#define abortLogFmt(a) do { \ + FILE* fp = fopen("CRASH.TXT", "wb"); \ + if (!fp) fp = fopen("/tmp/CRASH.TXT", "wb"); \ + if (!fp) fp = fopen("C:\\CRASH.TXT", "wb"); \ + if (fp) { \ + fprintf(fp, "HTTrack " HTTRACK_VERSIONID " closed at '" __FILE__ "', line %d\r\n", __LINE__); \ + fprintf(fp, "Reason:\r\n"); \ + fprintf(fp, a); \ + fprintf(fp, "\r\n"); \ + fflush(fp); \ + fclose(fp); \ + } \ +} while(0) +#define assertf(exp) do { \ + if (! ( exp ) ) { \ + abortLog("assert failed: " #exp); \ + if (htsCallbackErr != NULL) { \ + htsCallbackErr("assert failed: " #exp, __FILE__ , __LINE__ ); \ + } \ + assert(exp); \ + abort(); \ + } \ +} while(0) +/* non-fatal assert */ +#define assertnf(exp) do { \ + if (! ( exp ) ) { \ + abortLog("assert failed: " #exp); \ + if (htsCallbackErr != NULL) { \ + htsCallbackErr("assert failed: " #exp, __FILE__ , __LINE__ ); \ + } \ + } \ +} while(0) -// tracer malloc() -#if HTS_TRACE_MALLOC -#define malloct(A) hts_malloc(A,0) -#define calloct(A,B) hts_malloc(A,B) -#define freet(A) hts_free(A) + +/* regular malloc's() */ +#ifndef HTS_TRACE_MALLOC +#define malloct(A) malloc(A) +#define calloct(A,B) calloc((A), (B)) +#define freet(A) do { assertnf((A) != NULL); if ((A) != NULL) { free(A); (A) = NULL; } } while(0) +#define realloct(A,B) ( ((A) != NULL) ? realloc((A), (B)) : malloc(B) ) +#define memcpybuff(A, B, N) memcpy((A), (B), (N)) +#else +/* debug version */ +#define malloct(A) hts_malloc(A) +#define calloct(A,B) hts_calloc(A,B) +#define freet(A) do { hts_free(A); (A) = NULL; } while(0) #define realloct(A,B) hts_realloc(A,B) void hts_freeall(); -void* hts_malloc (size_t,size_t); +void* hts_malloc (size_t); +void* hts_calloc(size_t,size_t); +void* hts_xmalloc(size_t,size_t); void hts_free (void*); void* hts_realloc (void*,size_t); +mlink* hts_find(char* adr); +/* protected memcpy */ +#define memcpybuff(A, B, N) do { \ + mlink* lnk = hts_find((void*)(A)); \ + if (lnk != NULL) { \ + assertf(lnk != NULL); \ + assertf( * ( (t_htsboundary*) ( ((char*) lnk->adr) - sizeof(htsboundary) ) ) == htsboundary ); \ + assertf( * ( (t_htsboundary*) ( ((char*) lnk->adr) + lnk->len ) ) == htsboundary ); \ + assertf( ( ((char*)(A)) + (N)) < (char*) (lnk->adr + lnk->len) ); \ + } \ + memcpy(A, B, N); \ +} while(0) + +#endif + +typedef void (* htsErrorCallback)(char* msg, char* file, int line); +extern HTSEXT_API htsErrorCallback htsCallbackErr; +extern HTSEXT_API int htsMemoryFastXfr; + +/* +*/ + + +#ifdef STRDEBUG + +/* protected strcat, strncat and strcpy - definitely useful */ +#define strcatbuff(A, B) do { \ + assertf( (A) != NULL ); \ + if ( ! (B) ) { assertf( 0 ); } \ + if (htsMemoryFastXfr) { \ + if (sizeof(A) != sizeof(char*)) { \ + (A)[sizeof(A) - 1] = '\0'; \ + } \ + strcat(A, B); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf((A)[sizeof(A) - 1] == '\0'); \ + } \ + } else { \ + unsigned int sz = (unsigned int) strlen(A); \ + unsigned int szf = (unsigned int) strlen(B); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf(sz + szf + 1 < sizeof(A)); \ + if (szf > 0) { \ + if (sz + szf + 1 < sizeof(A)) { \ + memcpy((A) + sz, (B), szf + 1); \ + } \ + } \ + } else if (szf > 0) { \ + memcpybuff((A) + sz, (B), szf + 1); \ + } \ + } \ +} while(0) +#define strncatbuff(A, B, N) do { \ + assertf( (A) != NULL ); \ + if ( ! (B) ) { assertf( 0 ); } \ + if (htsMemoryFastXfr) { \ + if (sizeof(A) != sizeof(char*)) { \ + (A)[sizeof(A) - 1] = '\0'; \ + } \ + strncat(A, B, N); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf((A)[sizeof(A) - 1] == '\0'); \ + } \ + } else { \ + unsigned int sz = (unsigned int) strlen(A); \ + unsigned int szf = (unsigned int) strlen(B); \ + if (szf > (unsigned int) (N)) szf = (unsigned int) (N); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf(sz + szf + 1 < sizeof(A)); \ + if (szf > 0) { \ + if (sz + szf + 1 < sizeof(A)) { \ + memcpy((A) + sz, (B), szf); \ + * ( (A) + sz + szf) = '\0'; \ + } \ + } \ + } else if (szf > 0) { \ + memcpybuff((A) + sz, (B), szf); \ + * ( (A) + sz + szf) = '\0'; \ + } \ + } \ +} while(0) +#define strcpybuff(A, B) do { \ + assertf( (A) != NULL ); \ + if ( ! (B) ) { assertf( 0 ); } \ + if (htsMemoryFastXfr) { \ + if (sizeof(A) != sizeof(char*)) { \ + (A)[sizeof(A) - 1] = '\0'; \ + } \ + strcpy(A, B); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf((A)[sizeof(A) - 1] == '\0'); \ + } \ + } else { \ + unsigned int szf = (unsigned int) strlen(B); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf(szf + 1 < sizeof(A)); \ + if (szf > 0) { \ + if (szf + 1 < sizeof(A)) { \ + memcpy((A), (B), szf + 1); \ + } else { \ + * (A) = '\0'; \ + } \ + } else { \ + * (A) = '\0'; \ + } \ + } else { \ + memcpybuff((A), (B), szf + 1); \ + } \ + } \ +} while(0) +#define strncpybuff(A, B, N) do { \ + assertf( (A) != NULL ); \ + if ( ! (B) ) { assertf( 0 ); } \ + if (htsMemoryFastXfr) { \ + if (sizeof(A) != sizeof(char*)) { \ + (A)[sizeof(A) - 1] = '\0'; \ + } \ + strncpy(A, B, N); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf((A)[sizeof(A) - 1] == '\0'); \ + } \ + } else { \ + unsigned int szf = (unsigned int) strlen(B); \ + if (szf > (unsigned int) (N)) szf = (unsigned int) (N); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf(szf + 1 < sizeof(A)); \ + if (szf > 0) { \ + if (szf + 1 < sizeof(A)) { \ + memcpy((A), (B), szf); \ + } \ + } \ + } else { \ + memcpybuff((A), (B), szf); \ + } \ + } \ +} while(0) + +#else + +#ifdef STRDEBUGFAST + +/* protected strcat, strncat and strcpy - definitely useful */ +#define strcatbuff(A, B) do { \ + assertf( (A) != NULL ); \ + if ( ! (B) ) { assertf( 0 ); } \ + if (sizeof(A) != sizeof(char*)) { \ + (A)[sizeof(A) - 1] = '\0'; \ + } \ + strcat(A, B); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf((A)[sizeof(A) - 1] == '\0'); \ + } \ +} while(0) +#define strncatbuff(A, B, N) do { \ + assertf( (A) != NULL ); \ + if ( ! (B) ) { assertf( 0 ); } \ + if (sizeof(A) != sizeof(char*)) { \ + (A)[sizeof(A) - 1] = '\0'; \ + } \ + strncat(A, B, N); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf((A)[sizeof(A) - 1] == '\0'); \ + } \ +} while(0) +#define strcpybuff(A, B) do { \ + assertf( (A) != NULL ); \ + if ( ! (B) ) { assertf( 0 ); } \ + if (sizeof(A) != sizeof(char*)) { \ + (A)[sizeof(A) - 1] = '\0'; \ + } \ + strcpy(A, B); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf((A)[sizeof(A) - 1] == '\0'); \ + } \ +} while(0) +#define strncpybuff(A, B, N) do { \ + assertf( (A) != NULL ); \ + if ( ! (B) ) { assertf( 0 ); } \ + if (sizeof(A) != sizeof(char*)) { \ + (A)[sizeof(A) - 1] = '\0'; \ + } \ + strncpy(A, B, N); \ + if (sizeof(A) != sizeof(char*)) { \ + assertf((A)[sizeof(A) - 1] == '\0'); \ + } \ +} while(0) + #else -#define malloct(A) malloc(A) -#define calloct(A,B) calloc(A,B) -#define freet(A) free(A) -#define realloct(A,B) realloc(A,B) + +#define strcatbuff strcat +#define strncatbuff strncat +#define strcpybuff strcpy +#define strncpybuff strncpy + +#endif + #endif +#ifdef __cplusplus + }; #endif +#endif diff --git a/src/htsbasenet.h b/src/htsbasenet.h index d63a2e7..71ac9c9 100644 --- a/src/htsbasenet.h +++ b/src/htsbasenet.h @@ -70,9 +70,89 @@ Please visit our Website: http://www.httrack.com #ifdef __cplusplus extern "C" { #endif + +/* #include #include #include +*/ + +/* OpenSSL definitions */ +#define SSL_shutdown hts_ptrfunc_SSL_shutdown +#define SSL_free hts_ptrfunc_SSL_free +#define SSL_new hts_ptrfunc_SSL_new +#define SSL_clear hts_ptrfunc_SSL_clear +#define SSL_set_fd hts_ptrfunc_SSL_set_fd +#define SSL_set_connect_state hts_ptrfunc_SSL_set_connect_state +#define SSL_connect hts_ptrfunc_SSL_connect +#define SSL_get_error hts_ptrfunc_SSL_get_error +#define SSL_write hts_ptrfunc_SSL_write +#define SSL_read hts_ptrfunc_SSL_read +#define SSL_library_init hts_ptrfunc_SSL_library_init +#define ERR_load_crypto_strings hts_ptrfunc_ERR_load_crypto_strings +#define ERR_load_SSL_strings hts_ptrfunc_ERR_load_SSL_strings +#define SSLv23_client_method hts_ptrfunc_SSLv23_client_method +#define SSL_CTX_new hts_ptrfunc_SSL_CTX_new +#define ERR_error_string hts_ptrfunc_ERR_error_string +#define SSL_load_error_strings hts_ptrfunc_SSL_load_error_strings +#define SSL_CTX_ctrl hts_ptrfunc_SSL_CTX_ctrl +/* */ +typedef void SSL_CTX; +typedef void* SSL; +typedef void SSL_METHOD; +typedef int (*t_SSL_shutdown)(SSL *ssl); +typedef void (*t_SSL_free)(SSL *ssl); +typedef SSL (*t_SSL_new)(SSL_CTX *ctx); +typedef int (*t_SSL_clear)(SSL *ssl); +typedef int (*t_SSL_set_fd)(SSL *ssl, int fd); +typedef void (*t_SSL_set_connect_state)(SSL *ssl); +typedef int (*t_SSL_connect)(SSL *ssl); +typedef int (*t_SSL_get_error)(SSL *ssl, int ret); +typedef int (*t_SSL_write)(SSL *ssl, const void *buf, int num); +typedef int (*t_SSL_read)(SSL *ssl, void *buf, int num); +typedef int (*t_SSL_library_init)(void); +typedef void (*t_ERR_load_crypto_strings)(void); +typedef void (*t_ERR_load_SSL_strings)(void); +typedef SSL_METHOD * (*t_SSLv23_client_method)(void); +typedef SSL_CTX * (*t_SSL_CTX_new)(SSL_METHOD *method); +typedef char * (*t_ERR_error_string)(unsigned long e, char *buf); +typedef void (*t_SSL_load_error_strings)(void); +typedef long (*t_SSL_CTX_ctrl)(SSL_CTX *ctx, int cmd, long larg, char *parg); +extern int SSL_is_available; +extern t_SSL_shutdown SSL_shutdown; +extern t_SSL_free SSL_free; +extern t_SSL_new SSL_new; +extern t_SSL_clear SSL_clear; +extern t_SSL_set_fd SSL_set_fd; +extern t_SSL_set_connect_state SSL_set_connect_state; +extern t_SSL_connect SSL_connect; +extern t_SSL_get_error SSL_get_error; +extern t_SSL_write SSL_write; +extern t_SSL_read SSL_read; +extern t_SSL_library_init SSL_library_init; +extern t_ERR_load_crypto_strings ERR_load_crypto_strings; +extern t_ERR_load_SSL_strings ERR_load_SSL_strings; +extern t_SSLv23_client_method SSLv23_client_method; +extern t_SSL_CTX_new SSL_CTX_new; +extern t_ERR_error_string ERR_error_string; +extern t_SSL_load_error_strings SSL_load_error_strings; +extern t_SSL_CTX_ctrl SSL_CTX_ctrl; +/* +From /usr/include/openssl/ssl.h +*/ +#define SSL_ERROR_NONE 0 +#define SSL_ERROR_SSL 1 +#define SSL_ERROR_WANT_READ 2 +#define SSL_ERROR_WANT_WRITE 3 +#define SSL_ERROR_WANT_X509_LOOKUP 4 +#define SSL_ERROR_SYSCALL 5 /* look at error stack/return value/errno */ +#define SSL_ERROR_ZERO_RETURN 6 +#define SSL_ERROR_WANT_CONNECT 7 +#define SSL_OP_ALL 0x000FFFFFL +#define SSL_CTRL_OPTIONS 32 +#define SSL_CTX_set_options(ctx,op) \ + SSL_CTX_ctrl(ctx,SSL_CTRL_OPTIONS,op,NULL) + //#include #ifdef __cplusplus }; diff --git a/src/htsbauth.c b/src/htsbauth.c index a1506c1..23a22af 100644 --- a/src/htsbauth.c +++ b/src/htsbauth.c @@ -86,20 +86,20 @@ int cookie_add(t_cookie* cookie,char* cook_name,char* cook_value,char* domain,ch } } // construction du cookie - strcpy(cook,domain); - strcat(cook,"\t"); - strcat(cook,"TRUE"); - strcat(cook,"\t"); - strcat(cook,path); - strcat(cook,"\t"); - strcat(cook,"FALSE"); - strcat(cook,"\t"); - strcat(cook,"1999999999"); - strcat(cook,"\t"); - strcat(cook,cook_name); - strcat(cook,"\t"); - strcat(cook,cook_value); - strcat(cook,"\n"); + strcpybuff(cook,domain); + strcatbuff(cook,"\t"); + strcatbuff(cook,"TRUE"); + strcatbuff(cook,"\t"); + strcatbuff(cook,path); + strcatbuff(cook,"\t"); + strcatbuff(cook,"FALSE"); + strcatbuff(cook,"\t"); + strcatbuff(cook,"1999999999"); + strcatbuff(cook,"\t"); + strcatbuff(cook,cook_name); + strcatbuff(cook,"\t"); + strcatbuff(cook,cook_value); + strcatbuff(cook,"\n"); if (!( ((int) strlen(cookie->data) + (int) strlen(cook)) < cookie->max_len)) return -1; // impossible d'ajouter cookie_insert(insert,cook); #if DEBUG_COOK @@ -179,8 +179,8 @@ int cookie_load(t_cookie* cookie,char* fpath,char* name) { WIN32_FIND_DATA find; HANDLE h; char pth[MAX_PATH + 32]; - strcpy(pth,fpath); - strcat(pth,"*@*.txt"); + strcpybuff(pth,fpath); + strcatbuff(pth,"*@*.txt"); h = FindFirstFile(pth,&find); if (h != INVALID_HANDLE_VALUE) { do { @@ -233,10 +233,10 @@ int cookie_load(t_cookie* cookie,char* fpath,char* name) { char path[256]; // chemin (/) char cook_name[256]; // nom cookie (MYCOOK) char cook_value[8192]; // valeur (ID=toto,S=1234) - strcpy(domain,cookie_get(line,0)); // host - strcpy(path,cookie_get(line,2)); // path - strcpy(cook_name,cookie_get(line,5)); // name - strcpy(cook_value,cookie_get(line,6)); // value + strcpybuff(domain,cookie_get(line,0)); // host + strcpybuff(path,cookie_get(line,2)); // path + strcpybuff(cook_name,cookie_get(line,5)); // name + strcpybuff(cook_value,cookie_get(line,6)); // value #if DEBUG_COOK printf("%s\n",line); #endif @@ -277,14 +277,14 @@ int cookie_save(t_cookie* cookie,char* name) { void cookie_insert(char* s,char* ins) { char* buff; if (strnotempty(s)==0) { // rien à faire, juste concat - strcat(s,ins); + strcatbuff(s,ins); } else { - buff=(char*) malloc(strlen(s)+2); + buff=(char*) malloct(strlen(s)+2); if (buff) { - strcpy(buff,s); // copie temporaire - strcpy(s,ins); // insérer - strcat(s,buff); // copier - free(buff); + strcpybuff(buff,s); // copie temporaire + strcpybuff(s,ins); // insérer + strcatbuff(s,buff); // copier + freet(buff); } } } @@ -294,11 +294,11 @@ void cookie_delete(char* s,int pos) { if (strnotempty(s+pos)==0) { // rien à faire, effacer s[0]='\0'; } else { - buff=(char*) malloc(strlen(s+pos)+2); + buff=(char*) malloct(strlen(s+pos)+2); if (buff) { - strcpy(buff,s+pos); // copie temporaire - strcpy(s,buff); // copier - free(buff); + strcpybuff(buff,s+pos); // copie temporaire + strcpybuff(s,buff); // copier + freet(buff); } } } @@ -329,7 +329,7 @@ char* cookie_get(char* cookie_base,int param) { char* a = cookie_base; while( (*a) && (*a!='\t') && (*a!='\n')) a++; buffer[0]='\0'; - strncat(buffer,cookie_base,(int) (a - cookie_base)); + strncatbuff(buffer,cookie_base,(int) (a - cookie_base)); return buffer; } else return ""; @@ -357,8 +357,8 @@ int bauth_add(t_cookie* cookie,char* adr,char* fil,char* auth) { if (chain->next) { chain=chain->next; chain->next=NULL; - strcpy(chain->auth,auth); - strcpy(chain->prefix,prefix); + strcpybuff(chain->auth,auth); + strcpybuff(chain->prefix,prefix); return 1; } } @@ -388,8 +388,8 @@ char* bauth_prefix(char* adr,char* fil) { char* prefix; char* a; NOSTATIC_RESERVE(prefix, char, HTS_URLMAXSIZE*2); - strcpy(prefix,jump_identification(adr)); - strcat(prefix,fil); + strcpybuff(prefix,jump_identification(adr)); + strcatbuff(prefix,fil); a=strchr(prefix,'?'); if (a) *a='\0'; if (strchr(prefix,'/')) { diff --git a/src/htscache.c b/src/htscache.c index da8791e..b90fa67 100644 --- a/src/htscache.c +++ b/src/htscache.c @@ -91,8 +91,14 @@ with (size) (msg) (contenttype) + (charset) [version 3] (last-modified) (Etag) + location + Content-disposition [version 2] + hostname [version 4] + URI filename [version 4] + local filename [version 4] ["SD" (supplemental data)] ["SD" (supplemental data)] ... @@ -191,16 +197,22 @@ void cache_add(htsblk r,char* url_adr,char* url_fil,char* url_save,FILE* cache_n // Construction header ok=0; - if (cache_wint(cache_dat,r.statuscode)!=-1) // statuscode - if (cache_wLLint(cache_dat,r.size)!=-1) // size - if (cache_wstr(cache_dat,r.msg)!=-1) // msg - if (cache_wstr(cache_dat,r.contenttype)!=-1) // contenttype - if (cache_wstr(cache_dat,r.lastmodified)!=-1) // last-modified - if (cache_wstr(cache_dat,r.etag)!=-1) // Etag - if (cache_wstr(cache_dat,(r.location!=NULL)?r.location:"")!=-1) // 'location' pour moved - if (cache_wstr(cache_dat,r.cdispo)!=-1) // Content-disposition - if (cache_wstr(cache_dat,"HTS")!=-1) // end of header + if (cache_wint(cache_dat,r.statuscode) != -1 // statuscode + && cache_wLLint(cache_dat,r.size) != -1 // size + && cache_wstr(cache_dat,r.msg) != -1 // msg + && cache_wstr(cache_dat,r.contenttype) != -1 // contenttype + && cache_wstr(cache_dat,r.charset) != -1 // contenttype + && cache_wstr(cache_dat,r.lastmodified) != -1 // last-modified + && cache_wstr(cache_dat,r.etag) != -1 // Etag + && cache_wstr(cache_dat,(r.location!=NULL)?r.location:"") != -1 // 'location' pour moved + && cache_wstr(cache_dat,r.cdispo) != -1 // Content-disposition + && cache_wstr(cache_dat,url_adr) != -1 // Original address + && cache_wstr(cache_dat,url_fil) != -1 // Original URI filename + && cache_wstr(cache_dat,url_save) != -1 // Original save filename + && cache_wstr(cache_dat,"HTS") != -1 // end of header + ) { ok=1; /* ok */ + } // Fin construction header /*if ((int) fwrite((char*) &r,1,sizeof(htsblk),cache_dat) == sizeof(htsblk)) {*/ @@ -212,7 +224,7 @@ void cache_add(htsblk r,char* url_adr,char* url_fil,char* url_save,FILE* cache_n } else if (r.is_write==0) { // en mémoire, recopie directe if (cache_wLLint(cache_dat,r.size)!=-1) { if (r.size>0) { // taille>0 - if ((INTsys) fwrite(r.adr,1,(INTsys)r.size,cache_dat)!=r.size) + if (fwrite(r.adr,1,(INTsys)r.size,cache_dat)!=r.size) ok=0; } else // taille=0, ne rien écrire ok=0; @@ -227,11 +239,11 @@ void cache_add(htsblk r,char* url_adr,char* url_fil,char* url_save,FILE* cache_n fp=fopen(fconv(url_save),"rb"); if (fp!=NULL) { char buff[32768]; - int nl; + INTsys nl; do { nl=fread(buff,1,32768,fp); if (nl>0) { - if ((INTsys) fwrite(buff,1,(INTsys)nl,cache_dat)!=nl) { // erreur + if ((INTsys)fwrite(buff,1,(INTsys)nl,cache_dat)!=nl) { // erreur nl=-1; ok=0; } @@ -254,7 +266,7 @@ void cache_add(htsblk r,char* url_adr,char* url_fil,char* url_save,FILE* cache_n // index // adresse+cr+fichier+cr if (ok) { - buff[0]='\0'; strcat(buff,url_adr); strcat(buff,"\n"); strcat(buff,url_fil); strcat(buff,"\n"); + buff[0]='\0'; strcatbuff(buff,url_adr); strcatbuff(buff,"\n"); strcatbuff(buff,url_fil); strcatbuff(buff,"\n"); cache_wstr(cache_ndx,buff); fwrite(s,1,strlen(s),cache_ndx); } // si ok=0 on a peut être écrit des données pour rien mais on s'en tape @@ -264,9 +276,18 @@ void cache_add(htsblk r,char* url_adr,char* url_fil,char* url_save,FILE* cache_n } +htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* location) { + return cache_readex(opt,cache,adr,fil,save,location,NULL,0); +} + +htsblk cache_read_ro(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* location) { + return cache_readex(opt,cache,adr,fil,save,location,NULL,1); +} + // lecture d'un fichier dans le cache // si save==null alors test unqiquement -htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save) { +htsblk cache_readex(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* location, + char* return_save, int readonly) { #if HTS_FAST_CACHE long int hash_pos; int hash_pos_return; @@ -274,30 +295,46 @@ htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save char* a; #endif char buff[HTS_URLMAXSIZE*2]; - char location[HTS_URLMAXSIZE*2]; + char location_default[HTS_URLMAXSIZE*2]; + char previous_save[HTS_URLMAXSIZE*2]; htsblk r; int ok=0; int header_only=0; - memset(&r, 0, sizeof(htsblk)); r.soc=INVALID_SOCKET; strcpy(location,""); r.location=location; + memset(&r, 0, sizeof(htsblk)); r.soc=INVALID_SOCKET; + if (location) { + r.location = location; + } else { + r.location = location_default; + } + strcpybuff(r.location, ""); #if HTS_FAST_CACHE - strcpy(buff,adr); strcat(buff,fil); + strcpybuff(buff,adr); strcatbuff(buff,fil); hash_pos_return=inthash_read((inthash)cache->hashtable,buff,(long int*)&hash_pos); #else - buff[0]='\0'; strcat(buff,"\n"); strcat(buff,adr); strcat(buff,"\n"); strcat(buff,fil); strcat(buff,"\n"); + buff[0]='\0'; strcatbuff(buff,"\n"); strcatbuff(buff,adr); strcatbuff(buff,"\n"); strcatbuff(buff,fil); strcatbuff(buff,"\n"); if (cache->use) a=strstr(cache->use,buff); else a=NULL; // forcer erreur #endif + /* avoid errors on data entries */ + if (adr[0] == '/' && adr[1] == '/' && adr[2] == '[') { +#if HTS_FAST_CACHE + hash_pos_return = 0; +#else + a = NULL; +#endif + } + // en cas de succès #if HTS_FAST_CACHE if (hash_pos_return) { #else if (a!=NULL) { // OK existe en cache! #endif - int pos; + INTsys pos; #if DEBUGCA fprintf(stdout,"..cache: %s%s at ",adr,fil); #endif @@ -320,8 +357,8 @@ htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save if (fread((char*) &old_r,1,sizeof(old_r),cache->olddat)==sizeof(old_r)) { // lire tout (y compris statuscode etc) r.statuscode=old_r.statuscode; r.size=old_r.size; // taille fichier - strcpy(r.msg,old_r.msg); - strcpy(r.contenttype,old_r.contenttype); + strcpybuff(r.msg,old_r.msg); + strcpybuff(r.contenttype,old_r.contenttype); ok=1; /* import ok */ } /* */ @@ -335,11 +372,22 @@ htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save cache_rLLint(cache->olddat,&r.size); cache_rstr(cache->olddat,r.msg); cache_rstr(cache->olddat,r.contenttype); + if (cache->version >= 3) + cache_rstr(cache->olddat,r.charset); cache_rstr(cache->olddat,r.lastmodified); cache_rstr(cache->olddat,r.etag); cache_rstr(cache->olddat,r.location); if (cache->version >= 2) cache_rstr(cache->olddat,r.cdispo); + if (cache->version >= 4) { + cache_rstr(cache->olddat, previous_save); // adr + cache_rstr(cache->olddat, previous_save); // fil + previous_save[0] = '\0'; + cache_rstr(cache->olddat, previous_save); // save + if (return_save != NULL) { + strcpybuff(return_save, previous_save); + } + } // cache_rstr(cache->olddat,check); if (strcmp(check,"HTS")==0) { /* intégrité OK */ @@ -377,14 +425,15 @@ htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save #if HTS_DIRECTDISK // Court-circuit: // Peut-on stocker le fichier directement sur disque? - if ((r.statuscode==200) && (!is_hypertext_mime(r.contenttype)) && (strnotempty(save))) { // pas HTML, écrire sur disk directement + if (!readonly && r.statuscode==200 && !is_hypertext_mime(r.contenttype) && strnotempty(save)) { // pas HTML, écrire sur disk directement int ok=0; r.is_write=1; // écrire - if (fexist(antislash(save))) { // un fichier existe déja - //if (fsize(antislash(save))==r.size) { // même taille -- NON tant pis (taille mal declaree) + if (fexist(fconv(save))) { // un fichier existe déja + //if (fsize(fconv(save))==r.size) { // même taille -- NON tant pis (taille mal declaree) ok=1; // plus rien à faire filenote(save,NULL); // noter comme connu + //xxusercommand(opt,0,NULL,save,adr,fil); //} } @@ -393,11 +442,11 @@ htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save filecreateempty(save); // r.statuscode=-1; - strcpy(r.msg,"File deleted by user not recaught"); + strcpybuff(r.msg,"File deleted by user not recaught"); ok=1; // ne pas récupérer (et pas d'erreur) } else { r.statuscode=-1; - strcpy(r.msg,"Previous cache file not found"); + strcpybuff(r.msg,"Previous cache file not found"); ok=1; // ne pas récupérer } } @@ -409,29 +458,30 @@ htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save #endif if (r.out!=NULL) { char buff[32768+4]; - LLint nl; - LLint size; - size=r.size; - do { - nl=fread(buff,1,(INTsys) minimum(size,32768),cache->olddat); - if (nl>0) { - size-=nl; - if ((INTsys) fwrite(buff,1,(INTsys)nl,r.out)!=nl) { // erreur - r.statuscode=-1; - strcpy(r.msg,"Cache Read Error : Read To Disk"); + LLint size = r.size; + if (size > 0) { + INTsys nl; + do { + nl=fread(buff,1,(INTsys) minimum(size,32768),cache->olddat); + if (nl>0) { + size-=nl; + if ((INTsys)fwrite(buff,1,(INTsys)nl,r.out)!=nl) { // erreur + r.statuscode=-1; + strcpybuff(r.msg,"Cache Read Error : Read To Disk"); + } } - } - } while((nl>0) && (size>0) && (r.statuscode!=-1)); + } while((nl>0) && (size>0) && (r.statuscode!=-1)); + } fclose(r.out); r.out=NULL; #if HTS_WIN==0 chmod(save,HTS_ACCESS_FILE); #endif - usercommand(0,NULL,antislash(save)); + //xxusercommand(opt,0,NULL,fconv(save), adr, fil); } else { r.statuscode=-1; - strcpy(r.msg,"Cache Write Error : Unable to Create File"); + strcpybuff(r.msg,"Cache Write Error : Unable to Create File"); //printf("%s\n",save); } } @@ -440,24 +490,46 @@ htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save #endif { // lire en mémoire - if (pos<0) { // Pas de donnée en cache, bizarre car html!!! - r.statuscode=-1; - strcpy(r.msg,"Previous cache file not found (2)"); + if (pos<0) { + if (strnotempty(save)) { // Pas de donnée en cache, bizarre car html!!! + r.statuscode=-1; + strcpybuff(r.msg,"Previous cache file not found (2)"); + } else { /* Read in memory from cache */ + if (strnotempty(return_save) && fexist(return_save)) { + FILE* fp = fopen(fconv(return_save), "rb"); + if (fp != NULL) { + r.adr=(char*) malloct((INTsys)r.size + 4); + if (adr != NULL) { + if (r.size > 0 && fread(r.adr, 1, (INTsys) r.size, fp) != r.size) { + r.statuscode=-1; + strcpybuff(r.msg,"Read error in cache disk data"); + } + } else { + r.statuscode=-1; + strcpybuff(r.msg,"Read error (memory exhausted) from cache"); + } + fclose(fp); + } + } else { + r.statuscode=-1; + strcpybuff(r.msg,"Cache file not found on disk"); + } + } } else { // lire fichier (d'un coup) r.adr=(char*) malloct((INTsys)r.size+4); if (r.adr!=NULL) { - if ((INTsys) fread(r.adr,1,(INTsys)r.size,cache->olddat)!=r.size) { // erreur + if (fread(r.adr,1,(INTsys)r.size,cache->olddat)!=r.size) { // erreur freet(r.adr); r.adr=NULL; r.statuscode=-1; - strcpy(r.msg,"Cache Read Error : Read Data"); + strcpybuff(r.msg,"Cache Read Error : Read Data"); } else *(r.adr+r.size)='\0'; //printf(">%s status %d\n",back[p].r.contenttype,back[p].r.statuscode); } else { // erreur r.statuscode=-1; - strcpy(r.msg,"Cache Memory Error"); + strcpybuff(r.msg,"Cache Memory Error"); } } } @@ -467,28 +539,31 @@ htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save printf("Cache Read Error : Bad Data"); #endif r.statuscode=-1; - strcpy(r.msg,"Cache Read Error : Bad Data"); + strcpybuff(r.msg,"Cache Read Error : Bad Data"); } } else { // erreur #if DEBUGCA printf("Cache Read Error : Read Header"); #endif r.statuscode=-1; - strcpy(r.msg,"Cache Read Error : Read Header"); + strcpybuff(r.msg,"Cache Read Error : Read Header"); } } else { #if DEBUGCA printf("Cache Read Error : Seek Failed"); #endif r.statuscode=-1; - strcpy(r.msg,"Cache Read Error : Seek Failed"); + strcpybuff(r.msg,"Cache Read Error : Seek Failed"); } } else { #if DEBUGCA printf("File Cache Not Found"); #endif r.statuscode=-1; - strcpy(r.msg,"File Cache Not Found"); + strcpybuff(r.msg,"File Cache Entry Not Found"); + } + if (!location) { /* don't export internal buffer */ + r.location = NULL; } return r; } @@ -504,12 +579,12 @@ int cache_writedata(FILE* cache_ndx,FILE* cache_dat,char* str1,char* str2,char* pos=ftell(cache_dat); /* first write data */ if (cache_wint(cache_dat,len)!=-1) { // length - if ((INTsys) fwrite(outbuff,1,(INTsys)len,cache_dat) == (INTsys) len) { // data + if ((INTsys)fwrite(outbuff,1,(INTsys)len,cache_dat) == (INTsys) len) { // data /* then write index */ sprintf(s,"%d\n",pos); - buff[0]='\0'; strcat(buff,str1); strcat(buff,"\n"); strcat(buff,str2); strcat(buff,"\n"); + buff[0]='\0'; strcatbuff(buff,str1); strcatbuff(buff,"\n"); strcatbuff(buff,str2); strcatbuff(buff,"\n"); cache_wstr(cache_ndx,buff); - if (fwrite(s,1,strlen(s),cache_ndx) == strlen(s)) { + if (fwrite(s,1,(INTsys)strlen(s),cache_ndx) == strlen(s)) { fflush(cache_dat); fflush(cache_ndx); return 1; } @@ -526,15 +601,15 @@ int cache_readdata(cache_back* cache,char* str1,char* str2,char** inbuff,int* in if (cache->hashtable) { char buff[HTS_URLMAXSIZE*4]; long int pos; - strcpy(buff,str1); strcat(buff,str2); + strcpybuff(buff,str1); strcatbuff(buff,str2); if (inthash_read((inthash)cache->hashtable,buff,(long int*)&pos)) { if (fseek(cache->olddat,((pos>0)?pos:(-pos)),SEEK_SET) == 0) { - int len; + INTsys len; cache_rint(cache->olddat,&len); if (len>0) { char* mem_buff=(char*)malloct(len+4); /* Plus byte 0 */ if (mem_buff) { - if ((int)fread(mem_buff,1,len,cache->olddat)==len) { // lire tout (y compris statuscode etc)*/ + if ((INTsys)fread(mem_buff,1,len,cache->olddat)==len) { // lire tout (y compris statuscode etc)*/ *inbuff=mem_buff; *inlen=len; return 1; @@ -552,17 +627,16 @@ int cache_readdata(cache_back* cache,char* str1,char* str2,char** inbuff,int* in } // renvoyer uniquement en tête, ou NULL si erreur -htsblk* cache_header(httrackp* opt,cache_back* cache,char* adr,char* fil) { - htsblk* r; - NOSTATIC_RESERVE(r, htsblk, 1); - *r=cache_read(opt,cache,adr,fil,NULL); // test uniquement +// return NULL upon error, and set -1 to r.statuscode +htsblk* cache_header(httrackp* opt,cache_back* cache,char* adr,char* fil,htsblk* r) { + *r=cache_read(opt,cache,adr,fil,NULL,NULL); // test uniquement if (r->statuscode != -1) return r; else return NULL; } - + // Initialisation du cache: créer nouveau, renomer ancien, charger.. void cache_init(cache_back* cache,httrackp* opt) { // --- @@ -571,80 +645,91 @@ void cache_init(cache_back* cache,httrackp* opt) { #if DEBUGCA printf("cache init: "); #endif + if (!cache->ro) { #if HTS_WIN - mkdir(fconcat(opt->path_log,"hts-cache")); + mkdir(fconcat(opt->path_log,"hts-cache")); #else - mkdir(fconcat(opt->path_log,"hts-cache"),HTS_PROTECT_FOLDER); + mkdir(fconcat(opt->path_log,"hts-cache"),HTS_PROTECT_FOLDER); #endif - if ((fexist(fconcat(opt->path_log,"hts-cache/new.dat"))) && (fexist(fconcat(opt->path_log,"hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer + if ((fexist(fconcat(opt->path_log,"hts-cache/new.dat"))) && (fexist(fconcat(opt->path_log,"hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer #if DEBUGCA - printf("work with former cache\n"); + printf("work with former cache\n"); #endif - if (fexist(fconcat(opt->path_log,"hts-cache/old.dat"))) - remove(fconcat(opt->path_log,"hts-cache/old.dat")); - if (fexist(fconcat(opt->path_log,"hts-cache/old.ndx"))) - remove(fconcat(opt->path_log,"hts-cache/old.ndx")); - - rename(fconcat(opt->path_log,"hts-cache/new.dat"),fconcat(opt->path_log,"hts-cache/old.dat")); - rename(fconcat(opt->path_log,"hts-cache/new.ndx"),fconcat(opt->path_log,"hts-cache/old.ndx")); - } else { // un des deux (ou les deux) fichiers cache absents: effacer l'autre éventuel + if (fexist(fconcat(opt->path_log,"hts-cache/old.dat"))) + remove(fconcat(opt->path_log,"hts-cache/old.dat")); + if (fexist(fconcat(opt->path_log,"hts-cache/old.ndx"))) + remove(fconcat(opt->path_log,"hts-cache/old.ndx")); + + rename(fconcat(opt->path_log,"hts-cache/new.dat"),fconcat(opt->path_log,"hts-cache/old.dat")); + rename(fconcat(opt->path_log,"hts-cache/new.ndx"),fconcat(opt->path_log,"hts-cache/old.ndx")); + } else { // un des deux (ou les deux) fichiers cache absents: effacer l'autre éventuel #if DEBUGCA - printf("new cache\n"); + printf("new cache\n"); #endif - if (fexist(fconcat(opt->path_log,"hts-cache/new.dat"))) - remove(fconcat(opt->path_log,"hts-cache/new.dat")); - if (fexist(fconcat(opt->path_log,"hts-cache/new.ndx"))) - remove(fconcat(opt->path_log,"hts-cache/new.ndx")); + if (fexist(fconcat(opt->path_log,"hts-cache/new.dat"))) + remove(fconcat(opt->path_log,"hts-cache/new.dat")); + if (fexist(fconcat(opt->path_log,"hts-cache/new.ndx"))) + remove(fconcat(opt->path_log,"hts-cache/new.ndx")); + } } // charger index cache précédent - if ((fexist(fconcat(opt->path_log,"hts-cache/old.dat"))) && (fexist(fconcat(opt->path_log,"hts-cache/old.ndx")))) { // cache précédent - if ((fsize(fconcat(opt->path_log,"hts-cache/old.dat"))>=0) && (fsize(fconcat(opt->path_log,"hts-cache/old.ndx"))>0)) { - FILE* oldndx=NULL; + if ( + ( + !cache->ro && + fsize(fconcat(opt->path_log,"hts-cache/old.dat")) >=0 && fsize(fconcat(opt->path_log,"hts-cache/old.ndx")) >0 + ) + || + ( + cache->ro && + fsize(fconcat(opt->path_log,"hts-cache/new.dat")) >=0 && fsize(fconcat(opt->path_log,"hts-cache/new.ndx")) > 0 + ) + ) { + FILE* oldndx=NULL; #if DEBUGCA - printf("..load cache\n"); + printf("..load cache\n"); #endif + if (!cache->ro) { cache->olddat=fopen(fconcat(opt->path_log,"hts-cache/old.dat"),"rb"); oldndx=fopen(fconcat(opt->path_log,"hts-cache/old.ndx"),"rb"); - // les deux doivent être ouvrables - if ((cache->olddat==NULL) && (oldndx!=NULL)) { - fclose(oldndx); - oldndx=NULL; - } - if ((cache->olddat!=NULL) && (oldndx==NULL)) { - fclose(cache->olddat); - cache->olddat=NULL; - } - // lire index - if (oldndx!=NULL) { - int buffl; - fclose(oldndx); oldndx=NULL; - // lire ndx, et lastmodified + } else { + cache->olddat=fopen(fconcat(opt->path_log,"hts-cache/new.dat"),"rb"); + oldndx=fopen(fconcat(opt->path_log,"hts-cache/new.ndx"),"rb"); + } + // les deux doivent être ouvrables + if ((cache->olddat==NULL) && (oldndx!=NULL)) { + fclose(oldndx); + oldndx=NULL; + } + if ((cache->olddat!=NULL) && (oldndx==NULL)) { + fclose(cache->olddat); + cache->olddat=NULL; + } + // lire index + if (oldndx!=NULL) { + int buffl; + fclose(oldndx); oldndx=NULL; + // lire ndx, et lastmodified + if (!cache->ro) { buffl=fsize(fconcat(opt->path_log,"hts-cache/old.ndx")); cache->use=readfile(fconcat(opt->path_log,"hts-cache/old.ndx")); - if (cache->use!=NULL) { - char firstline[256]; - char* a=cache->use; - a+=cache_brstr(a,firstline); - if (strncmp(firstline,"CACHE-",6)==0) { // Nouvelle version du cache - if (strncmp(firstline,"CACHE-1.",8)==0) { // Version 1.1x - cache->version=(int)(firstline[8]-'0'); // cache 1.x - if (cache->version <= 2) { - a+=cache_brstr(a,firstline); - strcpy(cache->lastmodified,firstline); - } else { - if (opt->errlog) { - fspc(opt->errlog,"error"); fprintf(opt->errlog,"Cache: version 1.%d not supported, ignoring current cache"LF,cache->version); - fflush(opt->errlog); - } - fclose(cache->olddat); - cache->olddat=NULL; - freet(cache->use); - cache->use=NULL; - } - } else { // non supporté + } else { + buffl=fsize(fconcat(opt->path_log,"hts-cache/new.ndx")); + cache->use=readfile(fconcat(opt->path_log,"hts-cache/new.ndx")); + } + if (cache->use!=NULL) { + char firstline[256]; + char* a=cache->use; + a+=cache_brstr(a,firstline); + if (strncmp(firstline,"CACHE-",6)==0) { // Nouvelle version du cache + if (strncmp(firstline,"CACHE-1.",8)==0) { // Version 1.1x + cache->version=(int)(firstline[8]-'0'); // cache 1.x + if (cache->version <= 4) { + a+=cache_brstr(a,firstline); + strcpybuff(cache->lastmodified,firstline); + } else { if (opt->errlog) { - fspc(opt->errlog,"error"); fprintf(opt->errlog,"Cache: %s not supported, ignoring current cache"LF,firstline); + fspc(opt->errlog,"error"); fprintf(opt->errlog,"Cache: version 1.%d not supported, ignoring current cache"LF,cache->version); fflush(opt->errlog); } fclose(cache->olddat); @@ -652,126 +737,141 @@ void cache_init(cache_back* cache,httrackp* opt) { freet(cache->use); cache->use=NULL; } - /* */ - } else { // Vieille version du cache - /* */ - if (opt->log) { - fspc(opt->log,"warning"); fprintf(opt->log,"Cache: importing old cache format"LF); - fflush(opt->log); + } else { // non supporté + if (opt->errlog) { + fspc(opt->errlog,"error"); fprintf(opt->errlog,"Cache: %s not supported, ignoring current cache"LF,firstline); + fflush(opt->errlog); } - cache->version=0; // cache 1.0 - strcpy(cache->lastmodified,firstline); + fclose(cache->olddat); + cache->olddat=NULL; + freet(cache->use); + cache->use=NULL; } - opt->is_update=1; // signaler comme update - - /* Create hash table for the cache (MUCH FASTER!) */ + /* */ + } else { // Vieille version du cache + /* */ + if (opt->log) { + fspc(opt->log,"warning"); fprintf(opt->log,"Cache: importing old cache format"LF); + fflush(opt->log); + } + cache->version=0; // cache 1.0 + strcpybuff(cache->lastmodified,firstline); + } + opt->is_update=1; // signaler comme update + + /* Create hash table for the cache (MUCH FASTER!) */ #if HTS_FAST_CACHE - if (cache->use) { - char line[HTS_URLMAXSIZE*2]; - char linepos[256]; - int pos; - while ( (a!=NULL) && (a < (cache->use+buffl) ) ) { - a=strchr(a+1,'\n'); /* start of line */ - if (a) { - a++; - /* read "host/file" */ - a+=binput(a,line,HTS_URLMAXSIZE); - a+=binput(a,line+strlen(line),HTS_URLMAXSIZE); - /* read position */ - a+=binput(a,linepos,200); - sscanf(linepos,"%d",&pos); - inthash_add((inthash)cache->hashtable,line,pos); - } + if (cache->use) { + char line[HTS_URLMAXSIZE*2]; + char linepos[256]; + int pos; + while ( (a!=NULL) && (a < (cache->use+buffl) ) ) { + a=strchr(a+1,'\n'); /* start of line */ + if (a) { + a++; + /* read "host/file" */ + a+=binput(a,line,HTS_URLMAXSIZE); + a+=binput(a,line+strlen(line),HTS_URLMAXSIZE); + /* read position */ + a+=binput(a,linepos,200); + sscanf(linepos,"%d",&pos); + inthash_add((inthash)cache->hashtable,line,pos); } - /* Not needed anymore! */ - freet(cache->use); - cache->use=NULL; } -#endif + /* Not needed anymore! */ + freet(cache->use); + cache->use=NULL; } +#endif } + } } // taille cache>0 - } // cache precedent existe - + #if DEBUGCA - printf("..create cache\n"); + printf("..create cache\n"); #endif - // ouvrir caches actuels - cache->dat=fopen(fconcat(opt->path_log,"hts-cache/new.dat"),"wb"); - cache->ndx=fopen(fconcat(opt->path_log,"hts-cache/new.ndx"),"wb"); - // les deux doivent être ouvrables - if ((cache->dat==NULL) && (cache->ndx!=NULL)) { - fclose(cache->ndx); - cache->ndx=NULL; - } - if ((cache->dat!=NULL) && (cache->ndx==NULL)) { - fclose(cache->dat); - cache->dat=NULL; - } - - if (cache->ndx!=NULL) { - char s[256]; - - cache_wstr(cache->dat,"CACHE-1.2"); - fflush(cache->dat); - cache_wstr(cache->ndx,"CACHE-1.2"); - fflush(cache->ndx); - // - time_gmt_rfc822(s); // date et heure actuelle GMT pour If-Modified-Since.. - cache_wstr(cache->ndx,s); - fflush(cache->ndx); // un petit fflush au cas où - - // supprimer old.lst - if (fexist(fconcat(opt->path_log,"hts-cache/old.lst"))) - remove(fconcat(opt->path_log,"hts-cache/old.lst")); - // renommer - if (fexist(fconcat(opt->path_log,"hts-cache/new.lst"))) - rename(fconcat(opt->path_log,"hts-cache/new.lst"),fconcat(opt->path_log,"hts-cache/old.lst")); - // ouvrir - cache->lst=fopen(fconcat(opt->path_log,"hts-cache/new.lst"),"wb"); - { - filecreate_params tmp; - strcpy(tmp.path,opt->path_html); // chemin - tmp.lst=cache->lst; // fichier lst - filenote("",&tmp); // initialiser filecreate - } - - // supprimer old.txt - if (fexist(fconcat(opt->path_log,"hts-cache/old.txt"))) - remove(fconcat(opt->path_log,"hts-cache/old.txt")); - // renommer - if (fexist(fconcat(opt->path_log,"hts-cache/new.txt"))) - rename(fconcat(opt->path_log,"hts-cache/new.txt"),fconcat(opt->path_log,"hts-cache/old.txt")); - // ouvrir - cache->txt=fopen(fconcat(opt->path_log,"hts-cache/new.txt"),"wb"); - if (cache->txt) { - fprintf(cache->txt,"date\tsize'/'remotesize\tflags(request:Update,Range state:File response:Modified,Chunked,gZipped)\t"); - fprintf(cache->txt,"statuscode\tstatus ('servermsg')\tMIME\tEtag|Date\tURL\tlocalfile\t(from URL)"LF); + if (!cache->ro) { + // ouvrir caches actuels + structcheck(fconcat(opt->path_log, "hts-cache/")); + cache->dat=fopen(fconcat(opt->path_log,"hts-cache/new.dat"),"wb"); + cache->ndx=fopen(fconcat(opt->path_log,"hts-cache/new.ndx"),"wb"); + // les deux doivent être ouvrables + if ((cache->dat==NULL) && (cache->ndx!=NULL)) { + fclose(cache->ndx); + cache->ndx=NULL; + } + if ((cache->dat!=NULL) && (cache->ndx==NULL)) { + fclose(cache->dat); + cache->dat=NULL; + } + + if (cache->ndx!=NULL) { + char s[256]; + + cache_wstr(cache->dat,"CACHE-1.4"); + fflush(cache->dat); + cache_wstr(cache->ndx,"CACHE-1.4"); + fflush(cache->ndx); + // + time_gmt_rfc822(s); // date et heure actuelle GMT pour If-Modified-Since.. + cache_wstr(cache->ndx,s); + fflush(cache->ndx); // un petit fflush au cas où + + // supprimer old.lst + if (fexist(fconcat(opt->path_log,"hts-cache/old.lst"))) + remove(fconcat(opt->path_log,"hts-cache/old.lst")); + // renommer + if (fexist(fconcat(opt->path_log,"hts-cache/new.lst"))) + rename(fconcat(opt->path_log,"hts-cache/new.lst"),fconcat(opt->path_log,"hts-cache/old.lst")); + // ouvrir + cache->lst=fopen(fconcat(opt->path_log,"hts-cache/new.lst"),"wb"); + { + filecreate_params tmp; + strcpybuff(tmp.path,opt->path_html); // chemin + tmp.lst=cache->lst; // fichier lst + filenote("",&tmp); // initialiser filecreate + } + + // supprimer old.txt + if (fexist(fconcat(opt->path_log,"hts-cache/old.txt"))) + remove(fconcat(opt->path_log,"hts-cache/old.txt")); + // renommer + if (fexist(fconcat(opt->path_log,"hts-cache/new.txt"))) + rename(fconcat(opt->path_log,"hts-cache/new.txt"),fconcat(opt->path_log,"hts-cache/old.txt")); + // ouvrir + cache->txt=fopen(fconcat(opt->path_log,"hts-cache/new.txt"),"wb"); + if (cache->txt) { + fprintf(cache->txt,"date\tsize'/'remotesize\tflags(request:Update,Range state:File response:Modified,Chunked,gZipped)\t"); + fprintf(cache->txt,"statuscode\tstatus ('servermsg')\tMIME\tEtag|Date\tURL\tlocalfile\t(from URL)"LF); + } + + // test + // cache_writedata(cache->ndx,cache->dat,"//[TEST]//","test1","TEST PIPO",9); + } + + } else { + cache->lst = cache->dat = cache->ndx = NULL; } - - // test - // cache_writedata(cache->ndx,cache->dat,"//[TEST]//","test1","TEST PIPO",9); - } - + } } - - - + + + // lire un fichier.. (compatible \0) char* readfile(char* fil) { char* adr=NULL; - int len=0; + INTsys len=0; len=fsize(fil); - if (len>0) { // existe + if (len >= 0) { // exists FILE* fp; fp=fopen(fconv(fil),"rb"); if (fp!=NULL) { // n'existe pas (!) adr=(char*) malloct(len+1); if (adr!=NULL) { - if ((int) fread(adr,1,len,fp)!=len) { // fichier endommagé ? + if (len > 0 && (INTsys)fread(adr,1,len,fp) != len) { // fichier endommagé ? freet(adr); adr=NULL; } else @@ -794,7 +894,7 @@ char* readfile_or(char* fil,char* defaultdata) { else { char *adr=malloct(strlen(defaultdata)+2); if (adr) { - strcpy(adr,defaultdata); + strcpybuff(adr,defaultdata); return adr; } } @@ -804,22 +904,24 @@ char* readfile_or(char* fil,char* defaultdata) { // écriture/lecture d'une chaîne sur un fichier // -1 : erreur, sinon 0 int cache_wstr(FILE* fp,char* s) { - int i; + INTsys i; char buff[256+4]; i=strlen(s); - sprintf(buff,"%d\n",i); - if (fwrite(buff,1,strlen(buff),fp) != strlen(buff)) + sprintf(buff,INTsysP "\n",i); + if (fwrite(buff,1,(INTsys)strlen(buff),fp) != strlen(buff)) return -1; if (i>0) - if ((int) fwrite(s,1,i,fp) != i) + if ((INTsys)fwrite(s,1,i,fp) != i) return -1; return 0; } void cache_rstr(FILE* fp,char* s) { - int i; + INTsys i; char buff[256+4]; linput(fp,buff,256); - sscanf(buff,"%d",&i); + sscanf(buff,INTsysP,&i); + if (i < 0 || i > 32768) /* error, something nasty happened */ + i=0; if (i>0) fread(s,1,i,fp); *(s+i)='\0'; diff --git a/src/htscache.h b/src/htscache.h index 08069d1..ef897f1 100644 --- a/src/htscache.h +++ b/src/htscache.h @@ -45,8 +45,10 @@ Please visit our Website: http://www.httrack.com // cache void cache_mayadd(httrackp* opt,cache_back* cache,htsblk* r,char* url_adr,char* url_fil,char* url_save); void cache_add(htsblk r,char* url_adr,char* url_fil,char* url_save,FILE* cache_ndx,FILE* cache_dat,int all_in_cache); -htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save); -htsblk* cache_header(httrackp* opt,cache_back* cache,char* adr,char* fil); +htsblk cache_read(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* location); +htsblk cache_read_ro(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* location); +htsblk cache_readex(httrackp* opt,cache_back* cache,char* adr,char* fil,char* save,char* location,char* return_save,int readonly); +htsblk* cache_header(httrackp* opt,cache_back* cache,char* adr,char* fil,htsblk* r); void cache_init(cache_back* cache,httrackp* opt); int cache_writedata(FILE* cache_ndx,FILE* cache_dat,char* str1,char* str2,char* outbuff,int len); diff --git a/src/htscatchurl.c b/src/htscatchurl.c index c119677..8455ea0 100644 --- a/src/htscatchurl.c +++ b/src/htscatchurl.c @@ -67,7 +67,7 @@ Please visit our Website: http://www.httrack.com // 0- Init the URL catcher with standard port // catch_url_init(&port,&return_host); -T_SOC catch_url_init_std(int* port_prox,char* adr_prox) { +HTSEXT_API T_SOC catch_url_init_std(int* port_prox,char* adr_prox) { T_SOC soc; int try_to_listen_to[]={8080,3128,80,81,82,8081,3129,31337,0,-1}; int i=0; @@ -83,28 +83,10 @@ T_SOC catch_url_init_std(int* port_prox,char* adr_prox) { // 1- Init the URL catcher // catch_url_init(&port,&return_host); -T_SOC catch_url_init(int* port,char* adr) { +HTSEXT_API T_SOC catch_url_init(int* port,char* adr) { T_SOC soc = INVALID_SOCKET; char h_loc[256+2]; - /* -#ifdef _WIN32 - { - WORD wVersionRequested; - WSADATA wsadata; - int stat; - wVersionRequested = 0x0101; - stat = WSAStartup( wVersionRequested, &wsadata ); - if (stat != 0) { - return INVALID_SOCKET; - } else if (LOBYTE(wsadata.wVersion) != 1 && HIBYTE(wsadata.wVersion) != 1) { - WSACleanup(); - return INVALID_SOCKET; - } - } -#endif - */ - if (gethostname(h_loc,256)==0) { // host name SOCaddr server; int server_size=sizeof(server); @@ -132,7 +114,7 @@ T_SOC catch_url_init(int* port,char* adr) { if (listen(soc,10)>=0) { // au pif le 10 SOCaddr_inetntoa(adr, 128, server2, len); } else { -#if _WIN32 +#ifdef _WIN32 closesocket(soc); #else close(soc); @@ -142,7 +124,7 @@ T_SOC catch_url_init(int* port,char* adr) { } else { -#if _WIN32 +#ifdef _WIN32 closesocket(soc); #else close(soc); @@ -152,7 +134,7 @@ T_SOC catch_url_init(int* port,char* adr) { } else { -#if _WIN32 +#ifdef _WIN32 closesocket(soc); #else close(soc); @@ -171,7 +153,7 @@ T_SOC catch_url_init(int* port,char* adr) { // returns 0 if error // url: buffer where URL must be stored - or ip:port in case of failure // data: 32Kb -int catch_url(T_SOC soc,char* url,char* method,char* data) { +HTSEXT_API int catch_url(T_SOC soc,char* url,char* method,char* data) { int retour=0; // connexion (accept) @@ -234,11 +216,11 @@ int catch_url(T_SOC soc,char* url,char* method,char* data) { while(strnotempty(line)) { socinput(soc,line,1000); treathead(NULL,NULL,NULL,&blkretour,line); // traiter - strcat(data,line); - strcat(data,"\r\n"); + strcatbuff(data,line); + strcatbuff(data,"\r\n"); } // CR/LF final de l'en tête inutile car déja placé via la ligne vide juste au dessus - //strcat(data,"\r\n"); + //strcatbuff(data,"\r\n"); if (blkretour.totalsize>0) { int len=(int)min(blkretour.totalsize,32000); int pos=strlen(data); diff --git a/src/htscatchurl.h b/src/htscatchurl.h index 77036fd..a2514ef 100644 --- a/src/htscatchurl.h +++ b/src/htscatchurl.h @@ -43,9 +43,11 @@ Please visit our Website: http://www.httrack.com // Fonctions void socinput(T_SOC soc,char* s,int max); -T_SOC catch_url_init_std(int* port_prox,char* adr_prox); -T_SOC catch_url_init(int* port,char* adr); -int catch_url(T_SOC soc,char* url,char* method,char* data); +#ifndef HTTRACK_DEFLIB +HTSEXT_API T_SOC catch_url_init_std(int* port_prox,char* adr_prox); +HTSEXT_API T_SOC catch_url_init(int* port,char* adr); +HTSEXT_API int catch_url(T_SOC soc,char* url,char* method,char* data); +#endif #define CATCH_RESPONSE \ "HTTP/1.0 200 OK\r\n"\ diff --git a/src/htscore.c b/src/htscore.c index 1b9db7a..ba1e226 100644 --- a/src/htscore.c +++ b/src/htscore.c @@ -51,30 +51,40 @@ Please visit our Website: http://www.httrack.com #include "htsmd5.h" #include "htsindex.h" +/* external modules */ +#include "htsmodules.h" + // htswrap_add #include "htswrap.h" + +// parser +#include "htsparse.h" + /* END specific definitions */ /* HTML parsing */ #if HTS_ANALYSTE -t_hts_htmlcheck_init hts_htmlcheck_init; -t_hts_htmlcheck_uninit hts_htmlcheck_uninit; -t_hts_htmlcheck_start hts_htmlcheck_start; -t_hts_htmlcheck_end hts_htmlcheck_end; -t_hts_htmlcheck_chopt hts_htmlcheck_chopt; -t_hts_htmlcheck hts_htmlcheck; -t_hts_htmlcheck_query hts_htmlcheck_query; -t_hts_htmlcheck_query2 hts_htmlcheck_query2; -t_hts_htmlcheck_query3 hts_htmlcheck_query3; -t_hts_htmlcheck_loop hts_htmlcheck_loop; -t_hts_htmlcheck_check hts_htmlcheck_check; -t_hts_htmlcheck_pause hts_htmlcheck_pause; -t_hts_htmlcheck_filesave hts_htmlcheck_filesave; -t_hts_htmlcheck_linkdetected hts_htmlcheck_linkdetected; -t_hts_htmlcheck_xfrstatus hts_htmlcheck_xfrstatus; -t_hts_htmlcheck_savename hts_htmlcheck_savename; +t_hts_htmlcheck_init hts_htmlcheck_init = NULL; +t_hts_htmlcheck_uninit hts_htmlcheck_uninit = NULL; +t_hts_htmlcheck_start hts_htmlcheck_start = NULL; +t_hts_htmlcheck_end hts_htmlcheck_end = NULL; +t_hts_htmlcheck_chopt hts_htmlcheck_chopt = NULL; +t_hts_htmlcheck hts_htmlcheck = NULL; +t_hts_htmlcheck_query hts_htmlcheck_query = NULL; +t_hts_htmlcheck_query2 hts_htmlcheck_query2 = NULL; +t_hts_htmlcheck_query3 hts_htmlcheck_query3 = NULL; +t_hts_htmlcheck_loop hts_htmlcheck_loop = NULL; +t_hts_htmlcheck_check hts_htmlcheck_check = NULL; +t_hts_htmlcheck_pause hts_htmlcheck_pause = NULL; +t_hts_htmlcheck_filesave hts_htmlcheck_filesave = NULL; +t_hts_htmlcheck_linkdetected hts_htmlcheck_linkdetected = NULL; +t_hts_htmlcheck_xfrstatus hts_htmlcheck_xfrstatus = NULL; +t_hts_htmlcheck_savename hts_htmlcheck_savename = NULL; +t_hts_htmlcheck_sendhead hts_htmlcheck_sendhead = NULL; +t_hts_htmlcheck_receivehead hts_htmlcheck_receivehead = NULL; + char _hts_errmsg[1100]=""; int _hts_in_html_parsing=0; @@ -84,6 +94,10 @@ int _hts_setpause=0; //httrackp* _hts_setopt=NULL; char** _hts_addurl=NULL; +/* external modules */ +extern int hts_parse_externals(htsmoduleStruct* str); +extern void htspe_init(void); + // int _hts_cancel=0; #endif @@ -163,7 +177,7 @@ hts_htmlcheck_end(); \ #define HTMLCHECK_UNINIT #endif -#define XH_extuninit { \ +#define XH_extuninit do { \ int i; \ HTMLCHECK_UNINIT \ if (liens!=NULL) { \ @@ -187,7 +201,7 @@ hts_htmlcheck_end(); \ if (back) { \ int i; \ for(i=0;isav_len=strlen((A)->sav) #endif -#define liens_record(A,F,S,FA,FF) { \ +#define liens_record(A,F,S,FA,FF,NORM) { \ int notecode=0; \ int lienurl_len=((sizeof(lien_url)+HTS_ALIGN-1)/HTS_ALIGN)*HTS_ALIGN,\ adr_len=strlen(A),\ @@ -257,179 +270,21 @@ liens[lien_tot]->adr=lien_buffer; lien_buffer+=adr_len; lien_size-=adr_len; \ liens[lien_tot]->fil=lien_buffer; lien_buffer+=fil_len; lien_size-=fil_len; \ liens[lien_tot]->sav=lien_buffer; lien_buffer+=sav_len; lien_size-=sav_len; \ liens[lien_tot]->cod=NULL; \ -if (notecode) { liens[lien_tot]->cod=lien_buffer; lien_buffer+=cod_len; lien_size-=cod_len; strcpy(liens[lien_tot]->cod,codebase); } \ +if (notecode) { liens[lien_tot]->cod=lien_buffer; lien_buffer+=cod_len; lien_size-=cod_len; strcpybuff(liens[lien_tot]->cod,codebase); } \ if (former_adr_len>0) {\ liens[lien_tot]->former_adr=lien_buffer; lien_buffer+=former_adr_len; lien_size-=former_adr_len; \ liens[lien_tot]->former_fil=lien_buffer; lien_buffer+=former_fil_len; lien_size-=former_fil_len; \ -strcpy(liens[lien_tot]->former_adr,FA); \ -strcpy(liens[lien_tot]->former_fil,FF); \ +strcpybuff(liens[lien_tot]->former_adr,FA); \ +strcpybuff(liens[lien_tot]->former_fil,FF); \ }\ -strcpy(liens[lien_tot]->adr,A); \ -strcpy(liens[lien_tot]->fil,F); \ -strcpy(liens[lien_tot]->sav,S); \ +strcpybuff(liens[lien_tot]->adr,A); \ +strcpybuff(liens[lien_tot]->fil,F); \ +strcpybuff(liens[lien_tot]->sav,S); \ liens_record_sav_len(liens[lien_tot]); \ -hash_write(&hash,lien_tot); \ +hash_write(hashptr,lien_tot,NORM); \ } \ } -/* - abandonné (simplifie) - -// Ajouter à un lien EXISTANT deux champs former_adr et former_fil pour indiquer le nom d'un fichier avant un "move" -// NOTE: si un alloc est fait ici il n'y aura pas de freet() à la fin, tant pis (firstbloc) -#define liens_add_former(index,A,F) { \ -int adr_len=strlen(A),fil_len=strlen(F); \ -adr_len=(adr_len/HTS_ALIGN)*HTS_ALIGN+HTS_ALIGN+4; fil_len=(fil_len/HTS_ALIGN)*HTS_ALIGN+HTS_ALIGN+4; \ -if ((int) lien_size < (int) (adr_len+fil_len)) { \ -lien_buffer=(char*) calloct(add_tab_alloc,1); \ -lien_size=add_tab_alloc; \ -} \ -if (lien_buffer!=NULL) { \ -if (liens[lien_tot]!=NULL) { \ -liens[lien_tot]->former_adr=lien_buffer; lien_buffer+=adr_len; lien_size-=adr_len; \ -liens[lien_tot]->former_fil=lien_buffer; lien_buffer+=fil_len; lien_size-=fil_len; \ -strcpy(liens[lien_tot]->former_adr,A); \ -strcpy(liens[lien_tot]->former_fil,F); \ -} \ -} \ -} -*/ - -#if 0 -#define HT_ADD_ADR { \ - fwrite(lastsaved,1,((int) (adr - lastsaved)),fp); \ - lastsaved=adr; } -#define HT_ADD(A) fwrite(A,1,(int) strlen(A),fp); -#define HT_ADD_START -#define HT_ADD_END if (fp) { fclose(fp); fp=NULL; } -#define HT_ADD_FOP { \ - fp=filecreate(savename); \ - if (fp==NULL) { \ - if (opt.errlog) { \ - fspc(opt.errlog,"error"); fprintf(opt.errlog,"Unable to create %s for %s%s"LF,savename,urladr,urlfil); \ - test_flush; \ - } \ - freet(r.adr); r.adr=NULL; \ - error=1; \ - } \ - } -#else -// version optimisée, qui permet de ne pas toucher aux html non modifiés (update) -#define HT_ADD_CHK(A) if (((int) (A)+ht_len+1) >= ht_size) { \ - ht_size=(A)+ht_len+REALLOC_SIZE; \ - ht_buff=(char*) realloct(ht_buff,ht_size); \ - if (ht_buff==NULL) { \ - printf("PANIC! : Not enough memory [%d]\n",__LINE__); \ - XH_uninit; \ - exit(1); \ - } \ - } \ - ht_len+=A; -/* -(Optimized) -#define HT_ADD_ADR { int i,j=ht_len; HT_ADD_CHK(((int) adr)- ((int) lastsaved)) \ - for(i=0;i<((int) adr)- ((int) lastsaved);i++) \ - ht_buff[j+i]=lastsaved[i]; \ - ht_buff[j+((int) adr)- ((int) lastsaved)]='\0'; \ - lastsaved=adr; } -*/ -#define HT_ADD_ADR \ - if ((opt.getmode & 1) && (ptr>0)) { \ - int i=((int) (adr - lastsaved)),j=ht_len; HT_ADD_CHK(i) \ - memcpy(ht_buff+j, lastsaved, i); \ - ht_buff[j+i]='\0'; \ - lastsaved=adr; \ - } -/* -(Optimized) -#define HT_ADD(A) { HT_ADD_CHK(strlen(A)) strcat(ht_buff,A); } -*/ -#define HT_ADD(A) \ - if ((opt.getmode & 1) && (ptr>0)) { \ - int i=strlen(A),j=ht_len; \ - if (i) { \ - HT_ADD_CHK(i) \ - memcpy(ht_buff+j, A, i); \ - ht_buff[j+i]='\0'; \ - } } -#define HT_ADD_START \ - int ht_size=(int)(r.size*5)/4+REALLOC_SIZE; \ - int ht_len=0; \ - char* ht_buff=NULL; \ - if ((opt.getmode & 1) && (ptr>0)) { \ - ht_buff=(char*) malloct(ht_size); \ - if (ht_buff==NULL) { \ - printf("PANIC! : Not enough memory [%d]\n",__LINE__); \ - XH_uninit; \ - exit(1); \ - } \ - ht_buff[0]='\0'; \ - } -#define HT_ADD_END { \ - int ok=0;\ - if (ht_buff) { \ - int file_len=(int) strlen(ht_buff);\ - char digest[32+2];\ - digest[0]='\0';\ - domd5mem(ht_buff,file_len,digest,1);\ - if (fsize(antislash(savename))==file_len) { \ - int mlen;\ - char* mbuff;\ - cache_readdata(&cache,"//[HTML-MD5]//",savename,&mbuff,&mlen);\ - if (mlen) mbuff[mlen]='\0';\ - if ((mlen == 32) && (strcmp(((mbuff!=NULL)?mbuff:""),digest)==0)) {\ - ok=1;\ - if ( (opt.debug>1) && (opt.log!=NULL) ) {\ - fspc(opt.log,"debug"); fprintf(opt.log,"File not re-written (md5): %s"LF,savename);\ - test_flush;\ - }\ - } else {\ - ok=0;\ - } \ - }\ - if (!ok) { \ - fp=filecreate(savename); \ - if (fp) { \ - if (file_len>0) {\ - if ((int)fwrite(ht_buff,1,file_len,fp) != file_len) { \ - if (opt.errlog) { \ - fspc(opt.errlog,"error"); fprintf(opt.errlog,"Unable to write HTML file %s"LF,savename);\ - test_flush;\ - }\ - }\ - }\ - fclose(fp); fp=NULL; \ - if (strnotempty(r.lastmodified)) \ - set_filetime_rfc822(savename,r.lastmodified); \ - usercommand(0,NULL,antislash(savename)); \ - } else {\ - if (opt.errlog) { \ - fspc(opt.errlog,"error");\ - fprintf(opt.errlog,"Unable to save file %s"LF,savename);\ - test_flush;\ - }\ - }\ - } else {\ - filenote(savename,NULL); \ - }\ - if (cache.ndx)\ - cache_writedata(cache.ndx,cache.dat,"//[HTML-MD5]//",savename,digest,(int)strlen(digest));\ - } \ - freet(ht_buff); ht_buff=NULL; \ - } -#define HT_ADD_FOP -#endif - -// libérer filters[0] pour insérer un élément dans filters[0] -#define HT_INSERT_FILTERS0 {\ - int i;\ - if (filptr>0) {\ - for(i=filptr-1;i>=0;i--) {\ - strcpy(filters[i+1],filters[i]);\ - }\ - }\ - strcpy(filters[0],"");\ - filptr++;\ - filptr=minimum(filptr,filter_max);\ -} #define HT_INDEX_END do { \ if (!makeindex_done) { \ @@ -446,7 +301,7 @@ if (makeindex_fp) { \ fflush(makeindex_fp); \ fclose(makeindex_fp); /* à ne pas oublier sinon on passe une nuit blanche */ \ makeindex_fp=NULL; \ - usercommand(0,NULL,fconcat(opt.path_html,"index.html")); \ + usercommand(&opt,0,NULL,fconcat(opt.path_html,"index.html"),"",""); \ } \ } \ makeindex_done=1; /* ok c'est fait */ \ @@ -463,6 +318,7 @@ int httpmirror(char* url1,httrackp* ptropt) { int lien_tot=0; // nombre de liens pour le moment lien_url** liens=NULL; // les pointeurs sur les liens hash_struct hash; // système de hachage, accélère la recherche dans les liens + hash_struct* hashptr = &hash; t_cookie cookie; // gestion des cookies int lien_max=0; int lien_size=0; // octets restants dans buffer liens dispo @@ -522,8 +378,10 @@ int httpmirror(char* url1,httrackp* ptropt) { /* reset stats */ HTS_STAT.HTS_TOTAL_RECV=0; HTS_STAT.istat_bytes[0]=HTS_STAT.istat_bytes[1]=0; + /* if (opt.aff_progress) lastime=HTS_STAT.stat_timestart; + */ if (opt.shell) { last_info_shell=HTS_STAT.stat_timestart; } @@ -533,16 +391,17 @@ int httpmirror(char* url1,httrackp* ptropt) { // initialiser compteur erreurs fspc(NULL,NULL); + // init external modules + htspe_init(); + // initialiser cookie if (opt.accept_cookie) { opt.cookie=&cookie; cookie.max_len=30000; // max len - strcpy(cookie.data,""); + strcpybuff(cookie.data,""); // Charger cookies.txt par défaut ou cookies.txt du miroir - if (fexist(fconcat(opt.path_log,"cookies.txt"))) - cookie_load(opt.cookie,opt.path_log,"cookies.txt"); - else if (fexist("cookies.txt")) - cookie_load(opt.cookie,"","cookies.txt"); + cookie_load(opt.cookie,opt.path_log,"cookies.txt"); + cookie_load(opt.cookie,"","cookies.txt"); } else opt.cookie=NULL; @@ -550,16 +409,16 @@ int httpmirror(char* url1,httrackp* ptropt) { exit_xh=0; // sortir prématurément (var globale) // initialiser usercommand - usercommand(opt.sys_com_exec,opt.sys_com,""); + usercommand(&opt,opt.sys_com_exec,opt.sys_com,"","",""); // initialiser structcheck - structcheck_init(1); + // structcheck_init(1); // initialiser tableau options accessible par d'autres fonctions (signal) hts_declareoptbuffer(&opt); // initialiser verif_backblue - verif_backblue(NULL); + verif_backblue(&opt,NULL); verif_external(0,0); verif_external(1,0); @@ -597,7 +456,7 @@ int httpmirror(char* url1,httrackp* ptropt) { _hts_lockdns(-999); // robots.txt - strcpy(robots.adr,"!"); // dummy + strcpybuff(robots.adr,"!"); // dummy robots.token[0]='\0'; robots.next=NULL; // suivant opt.robotsptr = &robots; @@ -615,6 +474,9 @@ int httpmirror(char* url1,httrackp* ptropt) { opt.filters.filptr=&filptr; //opt.filters.filter_max=&filter_max; + // hash table + opt.hash = &hash; + // tableau de pointeurs sur les liens lien_max=maximum(opt.maxlink,32); liens=(lien_url**) malloct(lien_max*sizeof(lien_url*)); // tableau de pointeurs sur les liens @@ -674,12 +536,6 @@ int httpmirror(char* url1,httrackp* ptropt) { joker=1; else if (*a=='-') joker=1; - /* NON, certaines URL ont des * (!) - else { - int i=0; - while((a[i]!=0) && (a[i]!=' ')) if (a[i++]=='*') joker=1; - } - */ if (joker) { // joker ou filters //char* p; @@ -697,29 +553,29 @@ int httpmirror(char* url1,httrackp* ptropt) { // recopier prochaine chaine (+ ou -) i=0; - while((*a!=0) && (*a!=' ')) { tempo[i++]=*a; a++; } + while((*a!=0) && (!isspace((unsigned char)*a))) { tempo[i++]=*a; a++; } tempo[i++]='\0'; - while(*a==' ') { a++; } + while(isspace((unsigned char)*a)) { a++; } // sauter les + sans rien après.. if (strnotempty(tempo)) { if ((plus==0) && (type==1)) { // implicite: *www.edf.fr par exemple if (tempo[strlen(tempo)-1]!='*') { - strcat(tempo,"*"); // ajouter un * + strcatbuff(tempo,"*"); // ajouter un * } } if (type) - strcpy(filters[filptr],"+"); + strcpybuff(filters[filptr],"+"); else - strcpy(filters[filptr],"-"); + strcpybuff(filters[filptr],"-"); /* if (strfield(tempo,"http://")) - strcat(filters[filptr],tempo+7); // ignorer http:// + strcatbuff(filters[filptr],tempo+7); // ignorer http:// else if (strfield(tempo,"ftp://")) - strcat(filters[filptr],tempo+6); // ignorer ftp:// + strcatbuff(filters[filptr],tempo+6); // ignorer ftp:// else */ - strcat(filters[filptr],tempo); + strcatbuff(filters[filptr],tempo); filptr++; /* sanity check */ @@ -745,16 +601,16 @@ int httpmirror(char* url1,httrackp* ptropt) { char url[HTS_URLMAXSIZE*2]; // prochaine adresse i=0; - while((*a!=0) && (*a!=' ')) { url[i++]=*a; a++; } - while(*a==' ') { a++; } + while((*a!=0) && (!isspace((unsigned char)*a))) { url[i++]=*a; a++; } + while(isspace((unsigned char)*a)) { a++; } url[i++]='\0'; - //strcat(primary,""); - strcat(primary,"\n"); + strcatbuff(primary,"http://"); + strcatbuff(primary,url); + //strcatbuff(primary,"\">"); + strcatbuff(primary,"\n"); } } // while @@ -762,13 +618,13 @@ int httpmirror(char* url1,httrackp* ptropt) { /* OPTIMIZED for fast load */ if (strnotempty(opt.filelist)) { char* filelist_buff=NULL; - int filelist_sz=fsize(opt.filelist); + INTsys filelist_sz=fsize(opt.filelist); if (filelist_sz>0) { FILE* fp=fopen(opt.filelist,"rb"); if (fp) { filelist_buff=malloct(filelist_sz + 2); if (filelist_buff) { - if ((int)fread(filelist_buff,1,filelist_sz,fp) != filelist_sz) { + if ((INTsys)fread(filelist_buff,1,filelist_sz,fp) != filelist_sz) { freet(filelist_buff); filelist_buff=NULL; } else { @@ -790,12 +646,12 @@ int httpmirror(char* url1,httrackp* ptropt) { if (count && line[0]) { n++; if (strstr(line,":/")==NULL) { - strcpy(primary_ptr, "http://"); + strcpybuff(primary_ptr, "http://"); primary_ptr += strlen(primary_ptr); } - strcpy(primary_ptr, line); + strcpybuff(primary_ptr, line); primary_ptr += strlen(primary_ptr); - strcpy(primary_ptr, "\n"); + strcpybuff(primary_ptr, "\n"); primary_ptr += 1; } } @@ -815,7 +671,7 @@ int httpmirror(char* url1,httrackp* ptropt) { // lien primaire - liens_record("primary","/primary","primary.html","",""); + liens_record("primary","/primary",fslash(fconcat(opt.path_html,"index.html")),"","",opt.urlhack); if (liens[lien_tot]==NULL) { // erreur, pas de place réservée printf("PANIC! : Not enough memory [%d]\n",__LINE__); if (opt.errlog) { @@ -836,7 +692,22 @@ int httpmirror(char* url1,httrackp* ptropt) { lien_tot++; // Initialiser cache - cache_init(&cache,&opt); + { + int backupXFR = htsMemoryFastXfr; +#if HTS_ANALYSTE + _hts_in_html_parsing=4; +#endif + if (!hts_htmlcheck_loop(NULL,0,0,0,lien_tot,0,NULL)) { + exit_xh=1; // exit requested + } + htsMemoryFastXfr = 1; /* fast load */ + cache_init(&cache,&opt); + htsMemoryFastXfr = backupXFR; +#if HTS_ANALYSTE + _hts_in_html_parsing=0; +#endif + } + } #if BDEBUG==3 @@ -961,8 +832,10 @@ int httpmirror(char* url1,httrackp* ptropt) { // note: recopie de plus haut // noter heure actuelle de départ en secondes HTS_STAT.stat_timestart=time_local(); + /* if (opt.aff_progress) lastime=HTS_STAT.stat_timestart; + */ if (opt.shell) { last_info_shell=HTS_STAT.stat_timestart; } @@ -1003,7 +876,7 @@ int httpmirror(char* url1,httrackp* ptropt) { // recopier proxy memcpy(&(r.req.proxy), &opt.proxy, sizeof(opt.proxy)); // et user-agent - strcpy(r.req.user_agent,opt.user_agent); + strcpybuff(r.req.user_agent,opt.user_agent); r.req.user_agent_send=opt.user_agent_send; if (!error) { @@ -1041,502 +914,93 @@ int httpmirror(char* url1,httrackp* ptropt) { r.statuscode=200; r.size=strlen(r.adr); r.soc=INVALID_SOCKET; - strcpy(r.contenttype,"text/html"); + strcpybuff(r.contenttype,"text/html"); /*} else if (opt.maxsoc<=0) { // fichiers 1 à 1 en attente (pas de backing) // charger le fichier en mémoire tout bêtement r=xhttpget(urladr,urlfil); // */ } else { // backing, multiples sockets - // - int b; - int n; - -#if BDEBUG==1 - printf("\nBack test..\n"); -#endif - - // pause/lock files - { - int do_pause=0; - - // user pause lockfile : create hts-paused.lock --> HTTrack will be paused - if (fexist(fconcat(opt.path_log,"hts-stop.lock"))) { - // remove lockfile - remove(fconcat(opt.path_log,"hts-stop.lock")); - if (!fexist(fconcat(opt.path_log,"hts-stop.lock"))) { - do_pause=1; - } - } - - // after receving N bytes, pause - if (opt.fragment>0) { - if ((HTS_STAT.stat_bytes-stat_fragment) > opt.fragment) { - do_pause=1; - } - } - - // pause? - if (do_pause) { - if ( (opt.debug>0) && (opt.log!=NULL) ) { - fspc(opt.log,"info"); fprintf(opt.log,"engine: pause requested.."LF); - } - while (back_nsoc(back,back_max)>0) { // attendre fin des transferts - back_wait(back,back_max,&opt,&cache,HTS_STAT.stat_timestart); - Sleep(200); -#if HTS_ANALYSTE - { - back_wait(back,back_max,&opt,&cache,HTS_STAT.stat_timestart); - - // Transfer rate - engine_stats(); - - // Refresh various stats - HTS_STAT.stat_nsocket=back_nsoc(back,back_max); - HTS_STAT.stat_errors=fspc(NULL,"error"); - HTS_STAT.stat_warnings=fspc(NULL,"warning"); - HTS_STAT.stat_infos=fspc(NULL,"info"); - HTS_STAT.nbk=backlinks_done(liens,lien_tot,ptr); - HTS_STAT.nb=back_transfered(HTS_STAT.stat_bytes,back,back_max); - - b=0; - if (!hts_htmlcheck_loop(back,back_max,b,ptr,lien_tot,(int) (time_local()-HTS_STAT.stat_timestart),&HTS_STAT)) { - if (opt.errlog) { - fspc(opt.errlog,"info"); fprintf(opt.errlog,"Exit requested by shell or user"LF); - test_flush; - } - exit_xh=1; // exit requested - XH_uninit; - return 0; - } - } -#endif - } - // On désalloue le buffer d'enregistrement des chemins créée, au cas où pendant la pause - // l'utilisateur ferait un rm -r après avoir effectué un tar - structcheck_init(1); - { - FILE* fp = fopen(fconcat(opt.path_log,"hts-paused.lock"),"wb"); - if (fp) { - fspc(fp,"info"); // dater - fprintf(fp,"Pause"LF"HTTrack is paused after retreiving "LLintP" bytes"LF"Delete this file to continue the mirror..."LF""LF"",HTS_STAT.stat_bytes); - fclose(fp); - } - } - stat_fragment=HTS_STAT.stat_bytes; - /* Info for wrappers */ - if ( (opt.debug>0) && (opt.log!=NULL) ) { - fspc(opt.log,"info"); fprintf(opt.log,"engine: pause: %s"LF,fconcat(opt.path_log,"hts-paused.lock")); - } -#if HTS_ANALYSTE - hts_htmlcheck_pause(fconcat(opt.path_log,"hts-paused.lock")); -#else - while (fexist(fconcat(opt.path_log,"hts-paused.lock"))) { - //back_wait(back,back_max,&opt,&cache,HTS_STAT.stat_timestart); inutile!! (plus de sockets actives) - Sleep(1000); - } -#endif - } - // - } - // end of pause/lock files - -#if HTS_ANALYSTE - // changement dans les préférences -/* - if (_hts_setopt) { - copy_htsopt(_hts_setopt,&opt); // copier au besoin - _hts_setopt=NULL; // effacer callback - } -*/ - if (_hts_addurl) { - char add_adr[HTS_URLMAXSIZE*2]; - char add_fil[HTS_URLMAXSIZE*2]; - while(*_hts_addurl) { - char add_url[HTS_URLMAXSIZE*2]; - add_adr[0]=add_fil[0]=add_url[0]='\0'; - if (!link_has_authority(*_hts_addurl)) - strcpy(add_url,"http://"); // ajouter http:// - strcat(add_url,*_hts_addurl); - if (ident_url_absolute(add_url,add_adr,add_fil)>=0) { - // ----Ajout---- - // noter NOUVEAU lien - char add_sav[HTS_URLMAXSIZE*2]; - // calculer lien et éventuellement modifier addresse/fichier - if (url_savename(add_adr,add_fil,add_sav,NULL,NULL,NULL,NULL,&opt,liens,lien_tot,back,back_max,&cache,&hash,ptr,numero_passe)!=-1) { - if (hash_read(&hash,add_sav,"",0)<0) { // n'existe pas déja - // enregistrer lien (MACRO) - liens_record(add_adr,add_fil,add_sav,"",""); - if (liens[lien_tot]!=NULL) { // OK, pas d'erreur - liens[lien_tot]->testmode=0; // mode test? - liens[lien_tot]->link_import=0; // mode normal - liens[lien_tot]->depth=opt.depth; - liens[lien_tot]->pass2=max(0,numero_passe); - liens[lien_tot]->retry=opt.retry; - liens[lien_tot]->premier=lien_tot; - liens[lien_tot]->precedent=lien_tot; - lien_tot++; - // - if ((opt.debug>0) && (opt.log!=NULL)) { - fspc(opt.log,"info"); fprintf(opt.log,"Link added by user: %s%s"LF,add_adr,add_fil); test_flush; - } - // - } else { // oups erreur, plus de mémoire!! - printf("PANIC! : Not enough memory [%d]\n",__LINE__); - if (opt.errlog) { - fprintf(opt.errlog,"Not enough memory, can not re-allocate %d bytes"LF,(int)((add_tab_alloc+1)*sizeof(lien_url))); - test_flush; - } - //if (opt.getmode & 1) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers - return 0; - } - } else { - if ( (opt.debug>0) && (opt.errlog!=NULL) ) { - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"Existing link %s%s not added after user request"LF,add_adr,add_fil); - test_flush; - } - } - - } - } else { - if (opt.errlog) { - fspc(opt.errlog,"error"); - fprintf(opt.errlog,"Error during URL decoding for %s"LF,add_url); - test_flush; - } - } - // ----Fin Ajout---- - _hts_addurl++; // suivante - } - _hts_addurl=NULL; // libérer _hts_addurl - } - // si une pause a été demandée - if (_hts_setpause) { - // index du lien actuel - int b=back_index(back,back_max,urladr,urlfil,savename); - if (b<0) b=0; // forcer pour les stats - while(_hts_setpause) { // on fait la pause.. - back_wait(back,back_max,&opt,&cache,HTS_STAT.stat_timestart); - - // Transfer rate - engine_stats(); - - // Refresh various stats - HTS_STAT.stat_nsocket=back_nsoc(back,back_max); - HTS_STAT.stat_errors=fspc(NULL,"error"); - HTS_STAT.stat_warnings=fspc(NULL,"warning"); - HTS_STAT.stat_infos=fspc(NULL,"info"); - HTS_STAT.nbk=backlinks_done(liens,lien_tot,ptr); - HTS_STAT.nb=back_transfered(HTS_STAT.stat_bytes,back,back_max); - - if (!hts_htmlcheck_loop(back,back_max,b,ptr,lien_tot,(int) (time_local()-HTS_STAT.stat_timestart),&HTS_STAT)) { - if (opt.errlog) { - fspc(opt.errlog,"info"); fprintf(opt.errlog,"Exit requested by shell or user"LF); - test_flush; - } - exit_xh=1; // exit requested - XH_uninit; - return 0; - } - if (back_nsoc(back,back_max)==0) - Sleep(250); // tite pause - } - } -#endif - // si le fichier n'est pas en backing, le mettre.. - if (!back_exist(back,back_max,urladr,urlfil,savename)) { -#if BDEBUG==1 - printf("crash backing: %s%s\n",liens[ptr]->adr,liens[ptr]->fil); -#endif - if (back_add(back,back_max,&opt,&cache,urladr,urlfil,savename,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil,liens[ptr]->testmode,&liens[ptr]->pass2)==-1) { - printf("PANIC! : Crash adding error, unexpected error found.. [%d]\n",__LINE__); -#if BDEBUG==1 - printf("error while crash adding\n"); -#endif - if (opt.errlog) { - fspc(opt.errlog,"error"); fprintf(opt.errlog,"Unexpected backing error for %s%s"LF,urladr,urlfil); - test_flush; - } - - } - } -#if BDEBUG==1 - printf("test number of socks\n"); -#endif - - // ajouter autant de socket qu'on peut ajouter - n=opt.maxsoc-back_nsoc(back,back_max); -#if BDEBUG==1 - printf("%d sockets available for backing\n",n); -#endif - -#if HTS_ANALYSTE - if ((n>0) && (!_hts_setpause)) { // si sockets libre et pas en pause, ajouter -#else - if (n>0) { // si sockets libre -#endif - // remplir autant que l'on peut le cache (backing) - back_fillmax(back,back_max,&opt,&cache,liens,ptr,numero_passe,lien_tot); - } - - // index du lien actuel -/* - b=back_index(back,back_max,urladr,urlfil,savename); - - if (b>=0) -*/ + /* + ************************************** + Get the next link, waiting for other files, handling external callbacks + */ { - // ------------------------------------------------------------ - // attendre que le fichier actuel soit prêt - BOUCLE D'ATTENTE - do { - - // index du lien actuel - b=back_index(back,back_max,urladr,urlfil,savename); -#if BDEBUG==1 - printf("back index %d, waiting\n",b); -#endif - // Continue to the loop if link still present - if (b<0) - continue; - - // Receive data - if (back[b].status>0) - back_wait(back,back_max,&opt,&cache,HTS_STAT.stat_timestart); - - // Continue to the loop if link still present - b=back_index(back,back_max,urladr,urlfil,savename); - if (b<0) - continue; - - // And fill the backing stack - if (back[b].status>0) - back_fillmax(back,back_max,&opt,&cache,liens,ptr,numero_passe,lien_tot); - - // Continue to the loop if link still present - b=back_index(back,back_max,urladr,urlfil,savename); - if (b<0) - continue; - - // autres occupations de HTTrack: statistiques, boucle d'attente, etc. - if ((opt.makestat) || (opt.maketrack)) { - TStamp l=time_local(); - if ((int) (l-makestat_time) >= 60) { - if (makestat_fp != NULL) { - fspc(makestat_fp,"info"); - fprintf(makestat_fp,"Rate= %d (/"LLintP") \11NewLinks= %d (/%d)"LF,(int) ((HTS_STAT.HTS_TOTAL_RECV-makestat_total)/(l-makestat_time)), HTS_STAT.HTS_TOTAL_RECV,(int) lien_tot-makestat_lnk,(int) lien_tot); - fflush(makestat_fp); - makestat_total=HTS_STAT.HTS_TOTAL_RECV; - makestat_lnk=lien_tot; - } - if (maketrack_fp!=NULL) { - int i; - fspc(maketrack_fp,"info"); fprintf(maketrack_fp,LF); - for(i=0;i0)) { - if (strcmp(back[i].url_sav,s)==0) { // ok trouvé - if (back[i].status != 1000) { -#if HTS_DEBUG_CLOSESOCK - DEBUG_W("user cancel: deletehttp\n"); -#endif - if (back[i].r.soc!=INVALID_SOCKET) deletehttp(&back[i].r); - back[i].r.soc=INVALID_SOCKET; - back[i].r.statuscode=-1; - strcpy(back[i].r.msg,"Cancelled by User"); - back[i].status=0; // terminé - } else // cancel ftp.. flag à 1 - back[i].stop_ftp = 1; - } - } - } - s[0]='\0'; - } - } - - // Transfer rate - engine_stats(); - - // Refresh various stats - HTS_STAT.stat_nsocket=back_nsoc(back,back_max); - HTS_STAT.stat_errors=fspc(NULL,"error"); - HTS_STAT.stat_warnings=fspc(NULL,"warning"); - HTS_STAT.stat_infos=fspc(NULL,"info"); - HTS_STAT.nbk=backlinks_done(liens,lien_tot,ptr); - HTS_STAT.nb=back_transfered(HTS_STAT.stat_bytes,back,back_max); - - if (!hts_htmlcheck_loop(back,back_max,b,ptr,lien_tot,(int) (time_local()-HTS_STAT.stat_timestart),&HTS_STAT)) { - if (opt.errlog) { - fspc(opt.errlog,"info"); fprintf(opt.errlog,"Exit requested by shell or user"LF); - test_flush; - } - exit_xh=1; // exit requested - XH_uninit; - return 0; - } - } - -#endif -#if HTS_POLL - if ((opt.shell) || (opt.keyboard) || (opt.verbosedisplay) || (!opt.quiet)) { - TStamp tl; - info_shell=1; - - /* Toggle with ENTER */ - if (!opt.quiet) { - if (check_stdin()) { - char com[256]; - linput(stdin,com,200); - if (opt.verbosedisplay==2) - opt.verbosedisplay=1; - else - opt.verbosedisplay=2; - /* Info for wrappers */ - if ( (opt.debug>0) && (opt.log!=NULL) ) { - fspc(opt.log,"info"); fprintf(opt.log,"engine: change-options"LF); - } -#if HTS_ANALYSTE - hts_htmlcheck_chopt(&opt); -#endif - } - } - - /* - ..useless.. - while (check_stdin()) { // données disponibles - char com[256]; - com[0]='\0'; - - if (!rcvd) rcvd=1; - linput(stdin,com,256); - - if (strnotempty(com)) { - if (strlen(com)<=2) { - switch(*com) { - case '?': { // Status? - if (back[b].status>0) printf("WAIT\n"); - else printf("READY\n"); - } - break; - case 'f': { // Fichier en attente? - if (back[b].status>0) printf("WAIT %s\n",back[b].url_fil); - else printf("READY %s\n",back[b].url_fil); - } - break; - case 'A': case 'F': { // filters - int i; - for(i=0;i0) { // toute les 1 sec - FILE* fp=stdout; - int a=0; - last_info_shell=tl; - if (fexist(fconcat(opt.path_log,"hts-autopsy"))) { // débuggage: teste si le robot est vivant - // (oui je sais un robot vivant.. mais bon.. il a le droit de vivre lui aussi) - // (libérons les robots esclaves de l'internet!) - remove(fconcat(opt.path_log,"hts-autopsy")); - fp=fopen(fconcat(opt.path_log,"hts-isalive"),"wb"); - a=1; - } - if ((info_shell) || a) { - int i,j; - - fprintf(fp,"TIME %d"LF,(int) (tl-HTS_STAT.stat_timestart)); - fprintf(fp,"TOTAL %d"LF,(int) HTS_STAT.stat_bytes); - fprintf(fp,"RATE %d"LF,(int) (HTS_STAT.HTS_TOTAL_RECV/(tl-HTS_STAT.stat_timestart))); - fprintf(fp,"SOCKET %d"LF,back_nsoc(back,back_max)); - fprintf(fp,"LINK %d"LF,lien_tot); - { - LLint mem=0; - for(i=0;i=0) && (back[max(b,0)].status>0)); - - - // If link not found on the stack, it's because it has already been downloaded - // in background - // Then, skip it and go to the next one - if (b<0) { - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"link #%d is ready, no more on the stack, skipping: %s%s.."LF,ptr,urladr,urlfil); - test_flush; - } - - // prochain lien - // ptr++; - + char buff_err_msg[1024]; + htsmoduleStruct str; + htsmoduleStructExtended stre; + buff_err_msg[0] = '\0'; + memset(&str, 0, sizeof(str)); + memset(&stre, 0, sizeof(stre)); + /* */ + str.err_msg = buff_err_msg; + str.filename = savename; + str.mime = r.contenttype; + str.url_host = urladr; + str.url_file = urlfil; + str.size = (int) r.size; + /* */ + str.addLink = htsAddLink; + /* */ + str.liens = liens; + str.opt = &opt; + str.back = back; + str.back_max = back_max; + str.cache = &cache; + str.hashptr = hashptr; + str.numero_passe = numero_passe; + str.add_tab_alloc = add_tab_alloc; + /* */ + str.lien_tot_ = &lien_tot; + str.ptr_ = &ptr; + str.lien_size_ = &lien_size; + str.lien_buffer_ = &lien_buffer; + /* */ + /* */ + stre.r_ = &r; + /* */ + stre.error_ = &error; + stre.exit_xh_ = &exit_xh; + stre.store_errpage_ = &store_errpage; + /* */ + stre.base = base; + stre.codebase = codebase; + /* */ + stre.filters_ = &filters; + stre.filptr_ = &filptr; + stre.robots_ = &robots; + stre.hash_ = &hash; + stre.lien_max_ = &lien_max; + /* */ + stre.makeindex_done_ = &makeindex_done; + stre.makeindex_fp_ = &makeindex_fp; + stre.makeindex_links_ = &makeindex_links; + stre.makeindex_firstlink_ = makeindex_firstlink; + /* */ + stre.template_header_ = template_header; + stre.template_body_ = template_body; + stre.template_footer_ = template_footer; + /* */ + stre.stat_fragment_ = &stat_fragment; + stre.makestat_time = makestat_time; + stre.makestat_fp = makestat_fp; + stre.makestat_total_ = &makestat_total; + stre.makestat_lnk_ = &makestat_lnk; + stre.maketrack_fp = maketrack_fp; + /* FUNCTION DEPENDANT */ + stre.loc_ = loc; + stre.last_info_shell_ = &last_info_shell; + stre.info_shell_ = &info_shell; + + /* Parse */ + switch(hts_mirror_wait_for_next_file(&str, &stre)) { + case -1: + XH_uninit; + return -1; + break; + case 2: // Jump to 'continue' // This is one of the very very rare cases where goto // is acceptable @@ -1544,136 +1008,21 @@ int httpmirror(char* url1,httrackp* ptropt) { goto jump_if_done; } - -#if HTS_ANALYSTE==2 -#else - //if (!opt.quiet) { // petite animation - if (!opt.verbosedisplay) { - if (!opt.quiet) { - static int roll=0; /* static: ok */ - roll=(roll+1)%4; - printf("%c\x0d",("/-\\|")[roll]); - fflush(stdout); - } - } else if (opt.verbosedisplay==1) { - if (back[b].r.statuscode==200) - printf("%d/%d: %s%s ("LLintP" bytes) - OK\33[K\r",ptr,lien_tot,back[b].url_adr,back[b].url_fil,back[b].r.size); - else - printf("%d/%d: %s%s ("LLintP" bytes) - %d\33[K\r",ptr,lien_tot,back[b].url_adr,back[b].url_fil,back[b].r.size,back[b].r.statuscode); - fflush(stdout); - } - //} -#endif - // ------------------------------------------------------------ - // Vérificateur d'intégrité -#if DEBUG_CHECKINT - _CHECKINT(&back[b],"Retour de back_wait, après le while") - { - int i; - for(i=0;i0) { - char s[32]; - int i=0; - lastime=tl; - _CLRSCR; _GOTOXY("1","1"); - printf("Rate=%d B/sec\n",(int) (HTS_STAT.HTS_TOTAL_RECV/(tl-HTS_STAT.stat_timestart))); - while(i=0) { // loading.. - s[0]='\0'; - if (strlen(back[i].url_fil)>16) - strcat(s,back[i].url_fil+strlen(back[i].url_fil)-16); - else - strncat(s,back[i].url_fil,16); - printf("%s : ",s); - - printf("["); - if (back[i].r.totalsize>0) { - int p; - int j; - p=(int)((back[i].r.size*10)/back[i].r.totalsize); - p=minimum(10,p); - for(j=0;j0) { - sprintf(s,"%d",back[i].r.size); - } else if (back[i].status==0) { - strcpy(s,"ENDED"); - } else - strcpy(s," - "); - while(strlen(s)<8) strcat(s," "); - printf("%s",s); io_flush; - i++; - } - } -#endif - - -#if BDEBUG==1 - printf("statuscode=%d with %s / msg=%s\n",r.statuscode,r.contenttype,r.msg); -#endif - } - /*else { -#if BDEBUG==1 - printf("back index error\n"); -#endif - } - */ + } // FIN --RECUPERATION LIEN--- // ------------------------------------------------------------ - - - + + + } else { // lien vide.. if (opt.errlog) { fspc(opt.errlog,"warning"); fprintf(opt.errlog,"Warning, link #%d empty"LF,ptr); test_flush; - error=1; } + error=1; + goto jump_if_done; } // test si url existe (non vide!) @@ -1706,7 +1055,7 @@ int httpmirror(char* url1,httrackp* ptropt) { } // ---fin tester taille a posteriori--- - + // -------------------- // BOGUS MIME TYPE HACK // Check if we have a bogus MIME type @@ -1724,39 +1073,82 @@ int httpmirror(char* url1,httrackp* ptropt) { if (strnotempty(r.cdispo)) { // Content-disposition set! if (ishtml(savename) == 0) { // Non HTML!! // patch it! - strcpy(r.contenttype,"application/octet-stream"); + strcpybuff(r.contenttype,"application/octet-stream"); } } } } } - } - - // ------------------------------------ - // BOGUS MIME TYPE HACK II (the revenge) - // Check if we have a bogus MIME type - if ( (is_hypertext_mime(r.contenttype)) /* Is HTML or Js, .. */ - || (may_be_hypertext_mime(r.contenttype)) /* Is real media, .. */ - ) { - if ((r.adr) && (r.size)) { - unsigned int map[256]; - int i; - unsigned int nspec = 0; - map_characters((unsigned char*)r.adr, (unsigned int)r.size, (unsigned int*)map); - for(i = 1 ; i < 32 ; i++) { // null chars ignored.. - if (!is_realspace(i) - && i != 27 /* Damn you ISO2022-xx! */ + + // ------------------------------------ + // BOGUS MIME TYPE HACK II (the revenge) + // Check if we have a bogus MIME type + if ( (is_hypertext_mime(r.contenttype)) /* Is HTML or Js, .. */ + || (may_be_hypertext_mime(r.contenttype)) /* Is real media, .. */ + ) { + if ((r.adr) && (r.size)) { + unsigned int map[256]; + int i; + unsigned int nspec = 0; + map_characters((unsigned char*)r.adr, (unsigned int)r.size, (unsigned int*)map); + for(i = 1 ; i < 32 ; i++) { // null chars ignored.. + if (!is_realspace(i) + && i != 27 /* Damn you ISO2022-xx! */ + ) { + nspec += map[i]; + } + } + /* On-the-fly UCS2 to ISO-8859-1 conversion (note: UCS2 should never be used on the net) */ + if ( + map[0] > r.size/10 + && + r.size % 2 == 0 + && + ( + ( ((unsigned char) r.adr[0]) == 0xff && ((unsigned char) r.adr[1]) == 0xfe) + || + ( ((unsigned char) r.adr[0]) == 0xfe && ((unsigned char) r.adr[1]) == 0xff) + ) ) { - nspec += map[i]; + int lost=0; + int i; + int swap = (r.adr[0] == 0xff); + for(i = 0 ; i < r.size / 2 - 1 ; i++) { + unsigned int unic = 0; + if (swap) + unic = (r.adr[i*2 + 2] << 8) + r.adr[i*2 + 2 + 1]; + else + unic = r.adr[i*2 + 2] + (r.adr[i*2 + 2 + 1] << 8); + if (unic <= 255) + r.adr[i] = (char) unic; + else { + r.adr[i] = '?'; + lost++; + } + } + r.size = r.size / 2 - 1; + r.adr[r.size] = '\0'; + + if (opt.errlog) { + fspc(opt.errlog,"warning"); fprintf(opt.errlog,"File %s%s converted from UCS2 to 8-bit, %d characters lost during conversion (better to use UTF-8)"LF, urladr, urlfil, lost); + test_flush; + } + } else if ((nspec > r.size / 100) && (nspec > 10)) { // too many special characters + strcpybuff(r.contenttype,"application/octet-stream"); + if (opt.errlog) { + fspc(opt.errlog,"warning"); fprintf(opt.errlog,"File not parsed, looks like binary: %s%s"LF,urladr,urlfil); + test_flush; + } } - } - if ((nspec > r.size / 100) && (nspec > 10)) { // too many special characters - strcpy(r.contenttype,"application/octet-stream"); - if (opt.errlog) { - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"File not parsed, looks like binary: %s%s"LF,urladr,urlfil); - test_flush; + + /* This hack allows to avoid problems with parsing '\0' characters */ + for(i = 0 ; i < r.size ; i++) { + if (r.adr[i] == '\0') r.adr[i] = ' '; } + } + + } } @@ -1776,8 +1168,15 @@ int httpmirror(char* url1,httrackp* ptropt) { if (fp) { r.adr=malloct((int)sz + 2); if (r.adr) { - fread(r.adr,(int)sz,1,fp); - r.size=sz; + if (fread(r.adr,1,(INTsys)sz,fp) == sz) { + r.size=sz; + } else { + freet(r.adr); + r.size=0; + r.adr = NULL; + r.statuscode=-1; + strcpybuff(r.msg, ".RAM read error"); + } fclose(fp); fp=NULL; // remove (temporary) file! @@ -1801,400 +1200,99 @@ int httpmirror(char* url1,httrackp* ptropt) { if (!error) { if (ptr>0) { if (liens[ptr]) { - cache_mayadd(&opt,&cache,&r,urladr,urlfil,savename); + xxcache_mayadd(&opt,&cache,&r,urladr,urlfil,savename); } else error=1; } } - */ - // ---fin stockage en cache--- - - - - // DEBUT rattrapage des 301,302,307.. - // ------------------------------------------------------------ - if (!error) { - ////////{ - // on a chargé un fichier en plus - // if (!error) stat_loaded+=r.size; - - // ------------------------------------------------------------ - // Rattrapage des 301,302,307 (moved) et 412,416 - les 304 le sont dans le backing - // ------------------------------------------------------------ - if ( (r.statuscode==301) - || (r.statuscode==302) - || (r.statuscode==303) - || (r.statuscode==307) - ) { - //if (r.adr!=NULL) { // adr==null si fichier direct. [catch: davename normalement si cgi] - //int i=0; - char *rn=NULL; - // char* p; - - if ( (opt.debug>0) && (opt.errlog!=NULL) ) { - //if (opt.errlog) { - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"%s for %s%s"LF,r.msg,urladr,urlfil); - test_flush; - } - - - { - char mov_url[HTS_URLMAXSIZE*2],mov_adr[HTS_URLMAXSIZE*2],mov_fil[HTS_URLMAXSIZE*2]; - int get_it=0; // ne pas prendre le fichier à la même adresse par défaut - int reponse=0; - mov_url[0]='\0'; mov_adr[0]='\0'; mov_fil[0]='\0'; - // - - strcpy(mov_url,r.location); - - // url qque -> adresse+fichier - if ((reponse=ident_url_relatif(mov_url,urladr,urlfil,mov_adr,mov_fil))>=0) { - int set_prio_to=0; // pas de priotité fixéd par wizard - - //if (ident_url_absolute(mov_url,mov_adr,mov_fil)!=-1) { // ok URL reconnue - // c'est (en gros) la même URL.. - // si c'est un problème de casse dans le host c'est que le serveur est buggé - // ("RFC says.." : host name IS case insensitive) - if ((strfield2(mov_adr,urladr)!=0) && (strfield2(mov_fil,urlfil)!=0)) { // identique à casse près - // on tourne en rond - if (strcmp(mov_fil,urlfil)==0) { - error=1; - get_it=-1; // ne rien faire - if (opt.errlog) { - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"Can not bear crazy server (%s) for %s%s"LF,r.msg,urladr,urlfil); - test_flush; - } - } else { // mauvaise casse, effacer entrée dans la pile et rejouer une fois - get_it=1; - } - } else { // adresse différente - if (ishtml(mov_url)==0) { // pas même adresse MAIS c'est un fichier non html (pas de page moved possible) - // -> on prend à cette adresse, le lien sera enregistré avec lien_record() (hash) - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"wizard link test for moved file at %s%s.."LF,mov_adr,mov_fil); - test_flush; - } - // accepté? - if (hts_acceptlink(&opt,ptr,lien_tot,liens, - mov_adr,mov_fil, - &filters,&filptr,opt.maxfilter, - &robots, - &set_prio_to, - NULL) != 1) { /* nouvelle adresse non refusée ? */ - get_it=1; - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"moved link accepted: %s%s"LF,mov_adr,mov_fil); - test_flush; - } - } - } /* sinon traité normalement */ - } - - //if ((strfield2(mov_adr,urladr)!=0) && (strfield2(mov_fil,urlfil)!=0)) { // identique à casse près - if (get_it==1) { - // court-circuiter le reste du traitement - // et reculer pour mieux sauter - if (opt.errlog) { - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"Warning moved treated for %s%s (real one is %s%s)"LF,urladr,urlfil,mov_adr,mov_fil); - test_flush; - } - // canceller lien actuel - error=1; - strcpy(liens[ptr]->adr,"!"); // caractère bidon (invalide hash) -#if HTS_HASH -#else - liens[ptr]->sav_len=-1; // taille invalide -#endif - // noter NOUVEAU lien - { - char mov_sav[HTS_URLMAXSIZE*2]; - // calculer lien et éventuellement modifier addresse/fichier - if (url_savename(mov_adr,mov_fil,mov_sav,NULL,NULL,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil,&opt,liens,lien_tot,back,back_max,&cache,&hash,ptr,numero_passe)!=-1) { - if (hash_read(&hash,mov_sav,"",0)<0) { // n'existe pas déja - // enregistrer lien (MACRO) avec SAV IDENTIQUE - liens_record(mov_adr,mov_fil,liens[ptr]->sav,"",""); - //liens_record(mov_adr,mov_fil,mov_sav,"",""); - if (liens[lien_tot]!=NULL) { // OK, pas d'erreur - // mode test? - liens[lien_tot]->testmode=liens[ptr]->testmode; - liens[lien_tot]->link_import=0; // mode normal - if (!set_prio_to) - liens[lien_tot]->depth=liens[ptr]->depth; - else - liens[lien_tot]->depth=max(0,min(set_prio_to-1,liens[ptr]->depth)); // PRIORITE NULLE (catch page) - liens[lien_tot]->pass2=max(liens[ptr]->pass2,numero_passe); - liens[lien_tot]->retry=liens[ptr]->retry; - liens[lien_tot]->premier=liens[ptr]->premier; - liens[lien_tot]->precedent=liens[ptr]->precedent; - lien_tot++; - } else { // oups erreur, plus de mémoire!! - printf("PANIC! : Not enough memory [%d]\n",__LINE__); - if (opt.errlog) { - fprintf(opt.errlog,"Not enough memory, can not re-allocate %d bytes"LF,(int)((add_tab_alloc+1)*sizeof(lien_url))); - test_flush; - } - //if (opt.getmode & 1) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers - return 0; - } - } else { - if ( (opt.debug>0) && (opt.errlog!=NULL) ) { - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"moving %s to an existing file %s"LF,liens[ptr]->fil,urlfil); - test_flush; - } - } - - } - } - - //printf("-> %s %s %s\n",liens[lien_tot-1]->adr,liens[lien_tot-1]->fil,liens[lien_tot-1]->sav); - - // note métaphysique: il se peut qu'il y ait un index.html et un INDEX.HTML - // sous DOS ca marche pas très bien... mais comme je suis génial url_savename() - // est à même de régler ce problème - } - } // ident_url_xx - - if (get_it==0) { // adresse vraiment différente et potentiellement en html (pas de possibilité de bouger la page tel quel à cause des et cie) - rn=(char*) calloct(8192,1); - if (rn!=NULL) { - if (opt.errlog) { - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"File has moved from %s%s to %s"LF,urladr,urlfil,mov_url); - test_flush; - } - escape_uri(mov_url); - // On prépare une page qui sautera immédiatement sur la bonne URL - // Le scanner re-changera, ensuite, cette URL, pour la mirrorer! - strcpy(rn,""CRLF); - strcat(rn,""CRLF); - strcat(rn,""CRLF"Page has moved"CRLF""CRLF""CRLF); - strcat(rn,""CRLF); - strcat(rn,""); - strcat(rn,"Click here..."CRLF); - strcat(rn,""CRLF); - strcat(rn,""CRLF); - strcat(rn,""CRLF); - - // changer la page - if (r.adr) { freet(r.adr); r.adr=NULL; } - r.adr=rn; - r.size=strlen(r.adr); - strcpy(r.contenttype,"text/html"); - } - } // get_it==0 - - } // bloc - // erreur HTTP (ex: 404, not found) - } else if ( - (r.statuscode==412) - || (r.statuscode==416) - ) { // Precondition Failed, c'est à dire pour nous redemander TOUT le fichier - if (fexist(liens[ptr]->sav)) { - remove(liens[ptr]->sav); // Eliminer - if (!fexist(liens[ptr]->sav)) { // Bien éliminé? (sinon on boucle..) -#if HDEBUG - printf("Partial content NOT up-to-date, reget all file for %s\n",liens[ptr]->sav); -#endif - if ( (opt.debug>1) && (opt.errlog!=NULL) ) { - //if (opt.errlog) { - fspc(opt.errlog,"debug"); fprintf(opt.errlog,"Partial file reget (%s) for %s%s"LF,r.msg,urladr,urlfil); - test_flush; - } - // enregistrer le MEME lien (MACRO) - liens_record(liens[ptr]->adr,liens[ptr]->fil,liens[ptr]->sav,"",""); - if (liens[lien_tot]!=NULL) { // OK, pas d'erreur - liens[lien_tot]->testmode=liens[ptr]->testmode; // mode test? - liens[lien_tot]->link_import=0; // pas mode import - liens[lien_tot]->depth=liens[ptr]->depth; - liens[lien_tot]->pass2=max(liens[ptr]->pass2,numero_passe); - liens[lien_tot]->retry=liens[ptr]->retry; - liens[lien_tot]->premier=liens[ptr]->premier; - liens[lien_tot]->precedent=ptr; - lien_tot++; - // - // canceller lien actuel - error=1; - strcpy(liens[ptr]->adr,"!"); // caractère bidon (invalide hash) -#if HTS_HASH -#else - liens[ptr]->sav_len=-1; // taille invalide -#endif - // - } else { // oups erreur, plus de mémoire!! - printf("PANIC! : Not enough memory [%d]\n",__LINE__); - if (opt.errlog) { - fprintf(opt.errlog,"Not enough memory, can not re-allocate %d bytes"LF,(int)((add_tab_alloc+1)*sizeof(lien_url))); - test_flush; - } - //if (opt.getmode & 1) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers - return 0; - } - } else { - if (opt.errlog!=NULL) { - fspc(opt.errlog,"error"); fprintf(opt.errlog,"Can not remove old file %s"LF,urlfil); - test_flush; - } - } - } else { - if (opt.errlog!=NULL) { - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"Unexpected 412/416 error (%s) for %s%s"LF,r.msg,urladr,urlfil); - test_flush; - } - } - } else if (r.statuscode!=200) { - int can_retry=0; - - // cas où l'on peut reessayer - // -2=timeout -3=rateout (interne à httrack) - switch(r.statuscode) { - //case -1: can_retry=1; break; - case -2: if (opt.hostcontrol) { // timeout et retry épuisés - if ((opt.hostcontrol & 1) && (liens[ptr]->retry<=0)) { - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"Link banned: %s%s"LF,urladr,urlfil); test_flush; - } - host_ban(&opt,liens,ptr,lien_tot,back,back_max,filters,opt.maxfilter,&filptr,jump_identification(urladr)); - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"Info: previous log - link banned: %s%s"LF,urladr,urlfil); test_flush; - } - } else can_retry=1; - } else can_retry=1; - break; - case -3: if ((opt.hostcontrol) && (liens[ptr]->retry<=0)) { // too slow - if (opt.hostcontrol & 2) { - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"Link banned: %s%s"LF,urladr,urlfil); test_flush; - } - host_ban(&opt,liens,ptr,lien_tot,back,back_max,filters,opt.maxfilter,&filptr,jump_identification(urladr)); - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"Info: previous log - link banned: %s%s"LF,urladr,urlfil); test_flush; - } - } else can_retry=1; - } else can_retry=1; - break; - case -4: // connect closed - can_retry=1; - break; - case -5: // other (non fatal) error - can_retry=1; - break; - case -6: // bad SSL handskake - can_retry=1; - break; - case 408: case 409: case 500: case 502: case 504: can_retry=1; - break; - } - - if ( strcmp(liens[ptr]->fil,"/primary") != 0 ) { // no primary (internal page 0) - if ((liens[ptr]->retry<=0) || (!can_retry) ) { // retry épuisés (ou retry impossible) - if (opt.errlog) { - if ((opt.retry>0) && (can_retry)){ - fspc(opt.errlog,"error"); - fprintf(opt.errlog,"\"%s\" (%d) after %d retries at link %s%s (from %s%s)"LF,r.msg,r.statuscode,opt.retry,urladr,urlfil,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil); - } else { - if (r.statuscode==-10) { // test OK - if ((opt.debug>0) && (opt.errlog!=NULL)) { - fspc(opt.errlog,"info"); - fprintf(opt.errlog,"Test OK at link %s%s (from %s%s)"LF,urladr,urlfil,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil); - } - } else { - if (strcmp(urlfil,"/robots.txt")) { // ne pas afficher d'infos sur robots.txt par défaut - fspc(opt.errlog,"error"); - fprintf(opt.errlog,"\"%s\" (%d) at link %s%s (from %s%s)"LF,r.msg,r.statuscode,urladr,urlfil,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil); - } else { - if (opt.debug>1) { - fspc(opt.errlog,"info"); fprintf(opt.errlog,"No robots.txt rules at %s"LF,urladr); - test_flush; - } - } - } - } - test_flush; - } - - // NO error in trop level - // due to the "no connection -> previous restored" hack - // This prevent the engine from wiping all data if the website has been deleted (or moved) - // since last time (which is quite annoying) - if (liens[ptr]->precedent != 0) { - // ici on teste si on doit enregistrer la page tout de même - if (opt.errpage) { - store_errpage=1; - } - } else { - if (strcmp(urlfil,"/robots.txt") != 0) { - /* - This is an error caused by a link entered by the user - That is, link(s) entered by user are invalid (404, 500, connect error, proxy error..) - If all links entered are invalid, the session failed and we will attempt to restore - the previous one - Example: Try to update a website which has been deleted remotely: this may delete - the website locally, which is really not desired (especially if the website disappeared!) - With this hack, the engine won't wipe local files (how clever) - */ - HTS_STAT.stat_errors_front++; - } - } - - } else { // retry!! - if (opt.debug>0 && opt.errlog != NULL) { // on fera un alert si le retry échoue - fspc(opt.errlog,"warning"); fprintf(opt.errlog,"Retry after error %d (%s) at link %s%s (from %s%s)"LF,r.statuscode,r.msg,urladr,urlfil,liens[liens[ptr]->precedent]->adr,liens[liens[ptr]->precedent]->fil); - test_flush; - } - // redemander fichier - liens_record(urladr,urlfil,savename,"",""); - if (liens[lien_tot]!=NULL) { // OK, pas d'erreur - liens[lien_tot]->testmode=liens[ptr]->testmode; // mode test? - liens[lien_tot]->link_import=0; // pas mode import - liens[lien_tot]->depth=liens[ptr]->depth; - liens[lien_tot]->pass2=max(liens[ptr]->pass2,numero_passe); - liens[lien_tot]->retry=liens[ptr]->retry-1; // moins 1 retry! - liens[lien_tot]->premier=liens[ptr]->premier; - liens[lien_tot]->precedent=liens[ptr]->precedent; - lien_tot++; - } else { // oups erreur, plus de mémoire!! - printf("PANIC! : Not enough memory [%d]\n",__LINE__); - if (opt.errlog) { - fspc(opt.errlog,"panic"); - fprintf(opt.errlog,"Not enough memory, can not re-allocate %d bytes"LF,(int)((add_tab_alloc+1)*sizeof(lien_url))); - test_flush; - } - //if (opt.getmode & 1) { if (fp) { fclose(fp); fp=NULL; } } - XH_uninit; // désallocation mémoire & buffers - return 0; - } - } - } else { - if (opt.errlog) { - if (opt.debug>1) { - fspc(opt.errlog,"info"); - fprintf(opt.errlog,"Info: no robots.txt at %s%s"LF,urladr,urlfil); - } - } - } - if (!store_errpage) { - if (r.adr) { freet(r.adr); r.adr=NULL; } // désalloc - error=1; // erreur! - } - } - // FIN rattrapage des 301,302,307.. - // ------------------------------------------------------------ + */ + // ---fin stockage en cache--- + + + + /* + ************************************** + Check "Moved permanently" and other similar errors, retrying URLs if necessary and handling + redirect pages. + */ + if (!error) { + char buff_err_msg[1024]; + htsmoduleStruct str; + htsmoduleStructExtended stre; + buff_err_msg[0] = '\0'; + memset(&str, 0, sizeof(str)); + memset(&stre, 0, sizeof(stre)); + /* */ + str.err_msg = buff_err_msg; + str.filename = savename; + str.mime = r.contenttype; + str.url_host = urladr; + str.url_file = urlfil; + str.size = (int) r.size; + /* */ + str.addLink = htsAddLink; + /* */ + str.liens = liens; + str.opt = &opt; + str.back = back; + str.back_max = back_max; + str.cache = &cache; + str.hashptr = hashptr; + str.numero_passe = numero_passe; + str.add_tab_alloc = add_tab_alloc; + /* */ + str.lien_tot_ = &lien_tot; + str.ptr_ = &ptr; + str.lien_size_ = &lien_size; + str.lien_buffer_ = &lien_buffer; + /* */ + /* */ + stre.r_ = &r; + /* */ + stre.error_ = &error; + stre.exit_xh_ = &exit_xh; + stre.store_errpage_ = &store_errpage; + /* */ + stre.base = base; + stre.codebase = codebase; + /* */ + stre.filters_ = &filters; + stre.filptr_ = &filptr; + stre.robots_ = &robots; + stre.hash_ = &hash; + stre.lien_max_ = &lien_max; + /* */ + stre.makeindex_done_ = &makeindex_done; + stre.makeindex_fp_ = &makeindex_fp; + stre.makeindex_links_ = &makeindex_links; + stre.makeindex_firstlink_ = makeindex_firstlink; + /* */ + stre.template_header_ = template_header; + stre.template_body_ = template_body; + stre.template_footer_ = template_footer; + /* */ + stre.stat_fragment_ = &stat_fragment; + stre.makestat_time = makestat_time; + stre.makestat_fp = makestat_fp; + stre.makestat_total_ = &makestat_total; + stre.makestat_lnk_ = &makestat_lnk; + stre.maketrack_fp = maketrack_fp; + /* Parse */ + if (hts_mirror_check_moved(&str, &stre) != 0) { + XH_uninit; + return -1; + } + } - } // if !error } // if !error if (!error) { #if DEBUG_SHOWTYPES if (strstr(REG,r.contenttype)==NULL) { - strcat(REG,r.contenttype); - strcat(REG,"\n"); + strcatbuff(REG,r.contenttype); + strcatbuff(REG,"\n"); printf("%s\n",r.contenttype); io_flush; } @@ -2265,8 +1363,79 @@ int httpmirror(char* url1,httrackp* ptropt) { fspc(opt.log,"info"); fprintf(opt.log,"engine: check-html: %s%s"LF,urladr,urlfil); } { + char buff_err_msg[1024]; + htsmoduleStruct str; + htsmoduleStructExtended stre; + buff_err_msg[0] = '\0'; + memset(&str, 0, sizeof(str)); + memset(&stre, 0, sizeof(stre)); + /* */ + str.err_msg = buff_err_msg; + str.filename = savename; + str.mime = r.contenttype; + str.url_host = urladr; + str.url_file = urlfil; + str.size = (int) r.size; + /* */ + str.addLink = htsAddLink; + /* */ + str.liens = liens; + str.opt = &opt; + str.back = back; + str.back_max = back_max; + str.cache = &cache; + str.hashptr = hashptr; + str.numero_passe = numero_passe; + str.add_tab_alloc = add_tab_alloc; + /* */ + str.lien_tot_ = &lien_tot; + str.ptr_ = &ptr; + str.lien_size_ = &lien_size; + str.lien_buffer_ = &lien_buffer; + /* */ + /* */ + stre.r_ = &r; + /* */ + stre.error_ = &error; + stre.exit_xh_ = &exit_xh; + stre.store_errpage_ = &store_errpage; + /* */ + stre.base = base; + stre.codebase = codebase; + /* */ + stre.filters_ = &filters; + stre.filptr_ = &filptr; + stre.robots_ = &robots; + stre.hash_ = &hash; + stre.lien_max_ = &lien_max; + /* */ + stre.makeindex_done_ = &makeindex_done; + stre.makeindex_fp_ = &makeindex_fp; + stre.makeindex_links_ = &makeindex_links; + stre.makeindex_firstlink_ = makeindex_firstlink; + /* */ + stre.template_header_ = template_header; + stre.template_body_ = template_body; + stre.template_footer_ = template_footer; + /* */ + stre.stat_fragment_ = &stat_fragment; + stre.makestat_time = makestat_time; + stre.makestat_fp = makestat_fp; + stre.makestat_total_ = &makestat_total; + stre.makestat_lnk_ = &makestat_lnk; + stre.maketrack_fp = maketrack_fp; + + /* Parse */ + if (htsparse(&str, &stre) != 0) { + XH_uninit; + return -1; + } + + // I'll have to segment this part -#include "htsparse.c" +// #include "htsparse.c" + + } } // Fin parsing HTML @@ -2348,15 +1517,28 @@ int httpmirror(char* url1,httrackp* ptropt) { printf("robots.txt dump:\n%s\n",r.adr); #endif do { + char* comm; + int llen; bptr+=binput(r.adr+bptr, line, sizeof(line) - 2); + /* strip comment */ + comm=strchr(line, '#'); + if (comm != NULL) { + *comm = '\0'; + } + /* strip spaces */ + llen=strlen(line); + while(llen > 0 && is_realspace(line[llen - 1])) { + line[llen - 1] = '\0'; + llen--; + } if (strfield(line,"user-agent:")) { char* a; a=line+11; - while(*a==' ') a++; // sauter espace(s) - if (*a == '*') { + while(is_realspace(*a)) a++; // sauter espace(s) + if ( *a == '*') { if (record != 2) record=1; // c pour nous - } else if (strfield(a,"httrack")) { + } else if (strfield(a,"httrack") || strfield(a,"winhttrack") || strfield(a,"webhttrack")) { buff[0]='\0'; // re-enregistrer infobuff[0]='\0'; record=2; // locked @@ -2367,23 +1549,18 @@ int httpmirror(char* url1,httrackp* ptropt) { else record=0; } else if (record) { if (strfield(line,"disallow:")) { - char* a; - a=strchr(line,'#'); - if (a) *a='\0'; - while((line[strlen(line)-1]==' ') - || (line[strlen(line)-1]==10) - || (line[strlen(line)-1]==13)) - line[strlen(line)-1]='\0'; // supprimer espaces - a=line+9; - while((*a==' ') || (*a==10) || (*a==13)) + char* a=line+9; + while(is_realspace(*a)) a++; // sauter espace(s) if (strnotempty(a)) { if (strcmp(a,"/") != 0) { /* ignoring disallow: / */ if ( (strlen(buff) + strlen(a) + 8) < sizeof(buff)) { - strcat(buff,a); - strcat(buff,"\n"); - if (strnotempty(infobuff)) strcat(infobuff,", "); - strcat(infobuff,a); + strcatbuff(buff,a); + strcatbuff(buff,"\n"); + if ( (strlen(infobuff) + strlen(a) + 8) < sizeof(infobuff)) { + if (strnotempty(infobuff)) strcatbuff(infobuff,", "); + strcatbuff(infobuff,a); + } } } else { if (opt.errlog!=NULL) { @@ -2428,8 +1605,8 @@ int httpmirror(char* url1,httrackp* ptropt) { char tempo[HTS_URLMAXSIZE*2]; FILE* fp; tempo[0]='\0'; - strcpy(tempo,savename); - strcat(tempo,".readme"); + strcpybuff(tempo,savename); + strcatbuff(tempo,".readme"); #if HTS_DOSNAME // remplacer / par des slash arrière @@ -2445,7 +1622,7 @@ int httpmirror(char* url1,httrackp* ptropt) { #endif if ((fp=fopen(tempo,"wb"))!=NULL) { - fprintf(fp,"Info-file generated by HTTrack Website Copier "HTTRACK_VERSION""CRLF""CRLF); + fprintf(fp,"Info-file generated by HTTrack Website Copier "HTTRACK_VERSION"%s"CRLF""CRLF, WHAT_is_available); fprintf(fp,"The file %s has not been scanned by HTS"CRLF,savename); fprintf(fp,"Some links contained in it may be unreachable locally."CRLF); fprintf(fp,"If you want to get these files, you have to set an upper recurse level, "); @@ -2454,7 +1631,7 @@ int httpmirror(char* url1,httrackp* ptropt) { #if HTS_WIN==0 chmod(tempo,HTS_ACCESS_FILE); #endif - usercommand(0,NULL,antislash(tempo)); + usercommand(&opt,0,NULL,fconv(tempo),"",""); } @@ -2473,7 +1650,9 @@ int httpmirror(char* url1,httrackp* ptropt) { fspc(opt.log,"debug"); fprintf(opt.log,"non-html file ignored after upload at %s : %s"LF,urladr,urlfil); test_flush; } - freet(r.adr); r.adr=NULL; + if (r.adr) { + freet(r.adr); r.adr=NULL; + } } } @@ -2481,9 +1660,17 @@ int httpmirror(char* url1,httrackp* ptropt) { // ATTENTION C'EST ICI QU'ON SAUVE LE FICHIER!! if (r.adr) { - if (filesave(r.adr,(int)r.size,savename)!=0) { + if (filesave(&opt,r.adr,(int)r.size,savename,urladr,urlfil)!=0) { + int fcheck; + if ((fcheck=check_fatal_io_errno())) { + exit_xh=-1; /* fatal error */ + } if (opt.errlog) { - fspc(opt.errlog,"error"); fprintf(opt.errlog,"Unable to save file %s"LF,savename); + fspc(opt.errlog,"error"); fprintf(opt.errlog,"Unable to save file %s : %s"LF, savename, strerror(errno)); + if (fcheck) { + fspc(opt.errlog,"error"); + fprintf(opt.errlog,"* * Fatal write error, giving up"LF); + } test_flush; } } else { @@ -2520,284 +1707,71 @@ int httpmirror(char* url1,httrackp* ptropt) { } } } else */ - if (opt.parsejava) { - if (strlen(savename)>6) { // fichier.class - if (strfield(savename+strlen(savename)-6,".class")) { // ok c'est une classe - if (fexist(savename)) { // ok, existe bien! - char err_msg[1100]; - int r; - err_msg[0]='\0'; - - //##char* buffer; - // JavaParsing f34R! - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): parsing %s"LF,savename); test_flush; - } - - //##buffer=(char*) malloct(32768); - //##if (buffer) { - // - //##strcpy(buffer,"$BUFFER$"); - //##hts_add_file(buffer); // déclarer buffer - while(hts_add_file(NULL,-1) >= 0); // clear chain - - r=hts_parse_java(savename,(char*) &err_msg); // parsing - if (!r) { // error - if (opt.errlog) { - fspc(opt.errlog,"error"); fprintf(opt.errlog,"Unable to parse java file %s : %s"LF,savename,err_msg); - test_flush; - } - } else { // ok - char adr[HTS_URLMAXSIZE*2],fil[HTS_URLMAXSIZE*2],save[HTS_URLMAXSIZE*2]; // nom du fichier à sauver dans la boucle - char codebase[HTS_URLMAXSIZE*2]; // codebase classe java - char lien[HTS_URLMAXSIZE*2]; - //##char* a; - int file_position; - int pass_fix,prio_fix; - codebase[0]='\0'; - // - - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): parsing finished, now copying links.."LF); test_flush; - } - // recopie de "creer le lien" - // - - // adr = c'est la même - // fil et save: save2 et fil2 - prio_fix=maximum(liens[ptr]->depth-1,0); - pass_fix=max(liens[ptr]->pass2,numero_passe); - if (liens[ptr]->cod) strcpy(codebase,liens[ptr]->cod); // codebase valable pour tt les classes descendantes - if (strnotempty(codebase)==0) { // pas de codebase, construire - char* a; - strcpy(codebase,liens[ptr]->fil); - a=codebase+strlen(codebase)-1; - while((*a) && (*a!='/') && ( a > codebase)) a--; - if (*a=='/') - *(a+1)='\0'; // couper - } else { // couper http:// éventuel - if (strfield(codebase,"http://")) { - char tempo[HTS_URLMAXSIZE*2]; - char* a=codebase+7; - a=strchr(a,'/'); // après host - if (a) { // ** msg erreur et vérifier? - strcpy(tempo,a); - strcpy(codebase,tempo); // couper host - } else { - if (opt.errlog) { - fprintf(opt.errlog,"Unexpected strstr error in base %s"LF,codebase); - test_flush; - } - } - } - } - //##a=buffer; - //##strcat(buffer,"&"); // fin du buffer - if (!((int) strlen(codebase)= 0); // clear chain - } - while ( (file_position=hts_add_file(lien,-1)) >= 0 ) { - int dejafait=0; - /* //## - char* b; - - // prochain fichier à noter! - lien[0]='\0'; - b=strchr(a,'&'); // marqueur de fin de chaine (voir hts_add_file) - if (b) { - if ( ( ((int) b-(int) a) + strlen(codebase)) < HTS_URLMAXSIZE) - strncat(lien,a,(int) b-(int) a); // nom du fichier - else { - if (opt.errlog) { - fprintf(opt.errlog,"Error: Java-Parser generated link that exceeds %d bytes"LF,HTS_URLMAXSIZE); - test_flush; - } - } - } else a=NULL; - - if (strnotempty(lien)==0) a=NULL; // fin - if (a) - a=b+1; - */ - - if (strnotempty(lien)) { - - // calculer les chemins et noms de sauvegarde - if (ident_url_relatif(lien,urladr,codebase,adr,fil)>=0) { // reformage selon chemin - int r; - - // patcher opt pour garder structure originale!! (on ne patche pas les noms dans la classe java!) - //##if (!strstr(lien,"://")) { // PAS tester les http://.. inutile (on ne va pas patcher le binaire :-( ) - if (1) { - char tempo[HTS_URLMAXSIZE*2]; - int a,b; - tempo[0]='\0'; - a=opt.savename_type; - b=opt.savename_83; - opt.savename_type=0; - opt.savename_83=0; - // note: adr,fil peuvent être patchés - r=url_savename(adr,fil,save,NULL,NULL,NULL,NULL,&opt,liens,lien_tot,back,back_max,&cache,&hash,ptr,numero_passe); - opt.savename_type=a; - opt.savename_83=b; - if (r != -1) { - if (savename) { - if (lienrelatif(tempo,save,savename)==0) { - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): relative link at %s build with %s and %s: %s"LF,adr,save,savename,tempo); - test_flush; - } - // - // xxc xxc xxc xxc TODO java: - // rebuild the java class with patched strings... - // - if (strlen(tempo)<=strlen(lien)) { - FILE* fp=fopen(savename,"r+b"); - if (fp) { - if (!fseek(fp,file_position,SEEK_SET)) { - //unsigned short int string_length=strlen(tempo); - //fwrite(&valint,sizeof(string_length),1,fp); - // xxc xxc ARGH! SI la taille est <, décaler le code ?! - } else { - if (opt.log!=NULL) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): unable to patch: %s"LF,savename); - test_flush; - } - } - fclose(fp); - } else { - if (opt.log!=NULL) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): unable to open: %s"LF,savename); - test_flush; - } - } - } else { - if (opt.log!=NULL) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): link too long, unable to write it: %s"LF,tempo); - test_flush; - } - } - } - } - } - } else { - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): file not caught: %s"LF,lien); test_flush; - } - r=-1; - } - // - if (r != -1) { - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): %s%s -> %s (base %s)"LF,adr,fil,save,codebase); test_flush; - } - - // modifié par rapport à l'autre version (cf prio_fix notamment et save2) - - // vérifier que le lien n'a pas déja été noté - // si c'est le cas, alors il faut s'assurer que la priorité associée - // au fichier est la plus grande des deux priorités - // - // On part de la fin et on essaye de se presser (économise temps machine) -#if HTS_HASH - { - int i=hash_read(&hash,save,"",0); // lecture type 0 (sav) - if (i>=0) { - liens[i]->depth=maximum(liens[i]->depth,prio_fix); - dejafait=1; - } - } -#else - { - int l; - int i; - l=strlen(save); - for(i=lien_tot-1;(i>=0) && (dejafait==0);i--) { - if (liens[i]->sav_len==l) { // même taille de chaîne - if (strcmp(liens[i]->sav,save)==0) { // existe déja - liens[i]->depth=maximum(liens[i]->depth,prio_fix); - dejafait=1; - } - } - } - } -#endif - - - if (!dejafait) { - // - // >>>> CREER LE LIEN JAVA <<<< - - // enregistrer fichier de java (MACRO) - liens_record(adr,fil,save,"",""); - if (liens[lien_tot]==NULL) { // erreur, pas de place réservée - printf("PANIC! : Not enough memory [%d]\n",__LINE__); - if (opt.errlog) { - fprintf(opt.errlog,"Not enough memory, can not re-allocate %d bytes"LF,(int)((add_tab_alloc+1)*sizeof(lien_url))); - test_flush; - } - // if ((opt.getmode & 1) && (ptr>0)) { if (fp) { fclose(fp); fp=NULL; } } - XH_extuninit; // désallocation mémoire & buffers - return 0; - } - - // mode test? - liens[lien_tot]->testmode=0; // pas mode test - - liens[lien_tot]->link_import=0; // pas mode import - - // écrire autres paramètres de la structure-lien - //if (meme_adresse) - liens[lien_tot]->premier=liens[ptr]->premier; - //else // sinon l'objet père est le précédent lui même - // liens[lien_tot]->premier=ptr; - - liens[lien_tot]->precedent=ptr; - // noter la priorité - liens[lien_tot]->depth=prio_fix; - liens[lien_tot]->pass2=max(pass_fix,numero_passe); - liens[lien_tot]->retry=opt.retry; - - //strcpy(liens[lien_tot]->adr,adr); - //strcpy(liens[lien_tot]->fil,fil); - //strcpy(liens[lien_tot]->sav,save); - if ((opt.debug>1) && (opt.log!=NULL)) { - fspc(opt.log,"debug"); fprintf(opt.log,"(JavaClass catch file): OK, NOTE: %s%s -> %s"LF,liens[lien_tot]->adr,liens[lien_tot]->fil,liens[lien_tot]->sav); - test_flush; - } - - lien_tot++; // UN LIEN DE PLUS - } - } - } - - } - } - - } - //##// effacer buffer temporaire - //##if (buffer) freet(buffer); buffer=NULL; - //##} // if buffer - } // if exist - } // if .class - } // if strlen-savename - } // if opt.parsejava - - + + + /* External modules */ + if (opt.parsejava && fexist(savename)) { + char buff_err_msg[1024]; + htsmoduleStruct str; + buff_err_msg[0] = '\0'; + memset(&str, 0, sizeof(str)); + /* */ + str.err_msg = buff_err_msg; + str.filename = savename; + str.mime = r.contenttype; + str.url_host = urladr; + str.url_file = urlfil; + str.size = (int) r.size; + /* */ + str.addLink = htsAddLink; + /* */ + str.liens = liens; + str.opt = &opt; + str.back = back; + str.back_max = back_max; + str.cache = &cache; + str.hashptr = hashptr; + str.numero_passe = numero_passe; + str.add_tab_alloc = add_tab_alloc; + /* */ + str.lien_tot_ = &lien_tot; + str.ptr_ = &ptr; + str.lien_size_ = &lien_size; + str.lien_buffer_ = &lien_buffer; + /* Parse if recognized */ + switch(hts_parse_externals(&str)) { + case 1: + if ((opt.debug>1) && (opt.log!=NULL)) { + fspc(opt.log,"debug"); fprintf(opt.log,"(External module): parsed successfully %s"LF,savename); test_flush; + } + break; + case 0: + if ((opt.debug>1) && (opt.log!=NULL)) { + fspc(opt.log,"debug"); fprintf(opt.log,"(External module): couldn't parse successfully %s : %s"LF,savename, str.err_msg); test_flush; + } + break; + } + } + } // text/html ou autre + + /* Post-processing */ + if (fexist(savename)) { + usercommand(&opt, 0, NULL, savename, urladr, urlfil); + } + + } // if !error jump_if_done: // libérer les liens - if (r.adr) { freet(r.adr); r.adr=NULL; } // libérer la mémoire! + if (r.adr) { + freet(r.adr); + r.adr=NULL; + } // libérer la mémoire! // prochain lien ptr++; @@ -2826,23 +1800,22 @@ jump_if_done: } } } - + + // copy abort state if necessary from outside + if (!exit_xh && opt.state.exit_xh) { + exit_xh=opt.state.exit_xh; + } // a-t-on dépassé le quota? - if ((opt.maxsite>0) && (HTS_STAT.stat_bytes>=opt.maxsite)) { - if (opt.errlog) { - fprintf(opt.errlog,"More than "LLintP" bytes have been transfered.. giving up"LF,opt.maxsite); - test_flush; - } - ptr=lien_tot; - } else if ((opt.maxtime>0) && ((time_local()-HTS_STAT.stat_timestart)>opt.maxtime)) { - if (opt.errlog) { - fprintf(opt.errlog,"More than %d seconds passed.. giving up"LF,opt.maxtime); - test_flush; - } + if (!back_checkmirror(&opt)) { ptr=lien_tot; } else if (exit_xh) { // sortir if (opt.errlog) { - fspc(opt.errlog,"info"); fprintf(opt.errlog,"Exit requested by shell or user"LF); + fspc(opt.errlog,"info"); + if (exit_xh==1) { + fprintf(opt.errlog,"Exit requested by shell or user"LF); + } else { + fprintf(opt.errlog,"Exit requested by engine"LF); + } test_flush; } ptr=lien_tot; @@ -2910,15 +1883,15 @@ jump_if_done: if ((new_lst) && (sz>0)) { char* adr=(char*) malloct((INTsys)sz); if (adr) { - if ((int) fread(adr,1,(INTsys)sz,new_lst) == sz) { + if (fread(adr,1,(INTsys)sz,new_lst) == sz) { char line[1100]; int purge=0; while(!feof(old_lst)) { linput(old_lst,line,1000); if (!strstr(adr,line)) { // fichier non trouvé dans le nouveau? char file[HTS_URLMAXSIZE*2]; - strcpy(file,opt.path_html); - strcat(file,line+1); + strcpybuff(file,opt.path_html); + strcatbuff(file,line+1); file[strlen(file)-1]='\0'; if (fexist(file)) { // toujours sur disque: virer if (opt.log) { @@ -2940,8 +1913,8 @@ jump_if_done: if (strnotempty(line)) if (!strstr(adr,line)) { // non trouvé? char file[HTS_URLMAXSIZE*2]; - strcpy(file,opt.path_html); - strcat(file,line+1); + strcpybuff(file,opt.path_html); + strcatbuff(file,line+1); while ((strnotempty(file)) && (rmdir(file)==0)) { // ok, éliminé (existait) purge=1; if (opt.log) { @@ -2987,15 +1960,39 @@ jump_if_done: int warning = fspc(NULL,"warning"); int info = fspc(NULL,"info"); char htstime[256]; + char infoupdated[256]; // int n=(int) (stat_loaded/(time_local()-HTS_STAT.stat_timestart)); - int n=(int) (HTS_STAT.HTS_TOTAL_RECV/(max(1,time_local()-HTS_STAT.stat_timestart))); + LLint n=(LLint) (HTS_STAT.HTS_TOTAL_RECV/(max(1,time_local()-HTS_STAT.stat_timestart))); sec2str(htstime,time_local()-HTS_STAT.stat_timestart); //fprintf(opt.log,LF"HTS-mirror complete in %s : %d links scanned, %d files written (%d bytes overall) [%d bytes received at %d bytes/sec]"LF,htstime,lien_tot-1,HTS_STAT.stat_files,stat_bytes,stat_loaded,n); - fprintf(opt.log,LF"HTTrack mirror complete in %s : %d links scanned, %d files written (%d bytes overall) [%d bytes received at %d bytes/sec]",htstime,(int)lien_tot-1,(int)HTS_STAT.stat_files,(int)HTS_STAT.stat_bytes,(int)HTS_STAT.HTS_TOTAL_RECV,(int)n); - if (HTS_STAT.total_packed) { + infoupdated[0] = '\0'; + if (opt.is_update) { + if (HTS_STAT.stat_updated_files < 0) { + sprintf(infoupdated, ", %d files updated", (int)HTS_STAT.stat_updated_files); + } else { + sprintf(infoupdated, ", no files updated"); + } + } + fprintf(opt.log,LF + "HTTrack mirror complete in %s : " + "%d links scanned, %d files written ("LLintP" bytes overall)%s " + "["LLintP" bytes received at "LLintP" bytes/sec]", + htstime, + (int)lien_tot-1, + (int)HTS_STAT.stat_files, + (LLint)HTS_STAT.stat_bytes, + infoupdated, + (LLint)HTS_STAT.HTS_TOTAL_RECV, + (LLint)n + ); + if (HTS_STAT.total_packed > 0 && HTS_STAT.total_unpacked > 0) { int packed_ratio=(int)((LLint)(HTS_STAT.total_packed*100)/HTS_STAT.total_unpacked); - fprintf(opt.log,", "LLintP" bytes transfered using HTTP compression in %d files, ratio %d%%",HTS_STAT.total_unpacked,HTS_STAT.total_packedfiles,packed_ratio); + fprintf(opt.log,", "LLintP" bytes transfered using HTTP compression in %d files, ratio %d%%",(LLint)HTS_STAT.total_unpacked,HTS_STAT.total_packedfiles,(int)packed_ratio); + } + if (!opt.nokeepalive && HTS_STAT.stat_sockid > 0 && HTS_STAT.stat_nrequests > HTS_STAT.stat_sockid) { + int rq = (HTS_STAT.stat_nrequests * 10) / HTS_STAT.stat_sockid; + fprintf(opt.log,", %d.%d requests per connection", rq/10, rq%10); } fprintf(opt.log,LF); if (error) @@ -3029,10 +2026,12 @@ jump_if_done: } #endif // fin afficher résumé dans log - - // désallocation mémoire & buffers - XH_uninit + // ending + usercommand(&opt,0,NULL,NULL,NULL,NULL); + + // désallocation mémoire & buffers + XH_uninit; return 1; // OK } @@ -3108,8 +2107,12 @@ fprintf(debug_fp,"resync timer 1\n"); fflush(debug_fp); } +#define _FILTERS (*opt->filters.filters) +#define _FILTERS_PTR (opt->filters.filptr) +#define _ROBOTS ((robots_wizard*)opt->robotsptr) + // bannir host (trop lent etc) -void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* back,int back_max,char** filters,int filter_max,int* filptr,char* host) { +void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* back,int back_max,char* host) { //int l; int i; @@ -3117,26 +2120,26 @@ void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* bac return; // erreur.. déja cancellé.. bizarre.. devrait pas arriver /* sanity check */ - if (*filptr + 1 >= opt->maxfilter) { + if (*_FILTERS_PTR + 1 >= opt->maxfilter) { opt->maxfilter += HTS_FILTERSINC; - if (filters_init(&filters, opt->maxfilter, HTS_FILTERSINC) == 0) { - printf("PANIC! : Too many filters : >%d [%d]\n",*filptr,__LINE__); + if (filters_init(&_FILTERS, opt->maxfilter, HTS_FILTERSINC) == 0) { + printf("PANIC! : Too many filters : >%d [%d]\n",*_FILTERS_PTR,__LINE__); if (opt->errlog) { - fprintf(opt->errlog,LF"Too many filters, giving up..(>%d)"LF,*filptr); + fprintf(opt->errlog,LF"Too many filters, giving up..(>%d)"LF,*_FILTERS_PTR); fprintf(opt->errlog,"To avoid that: use #F option for more filters (example: -#F5000)"LF); fflush(opt->errlog); } - abort(); + assertf("too many filters - giving up" == NULL); } - //opt->filters.filters=&filters; } // interdire host - if (*filptr < filter_max) { - strcpy(filters[*filptr],"-"); - strcat(filters[*filptr],host); - strcat(filters[*filptr],"/*"); // host/ * interdit - (*filptr)++; *filptr=minimum(*filptr,filter_max); + assertf((*_FILTERS_PTR) < opt->maxfilter); + if (*_FILTERS_PTR < opt->maxfilter) { + strcpybuff(_FILTERS[*_FILTERS_PTR],"-"); + strcatbuff(_FILTERS[*_FILTERS_PTR],host); + strcatbuff(_FILTERS[*_FILTERS_PTR],"/*"); // host/ * interdit + (*_FILTERS_PTR)++; } // oups @@ -3161,7 +2164,7 @@ void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* bac if (back[i].r.soc!=INVALID_SOCKET) deletehttp(&back[i].r); back[i].r.soc=INVALID_SOCKET; back[i].r.statuscode=-2; // timeout (peu importe si c'est un traffic jam) - strcpy(back[i].r.msg,"Link Cancelled by host control"); + strcpybuff(back[i].r.msg,"Link Cancelled by host control"); if ((opt->debug>1) && (opt->log!=NULL)) { fprintf(opt->log,"Shutdown: %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush; @@ -3183,7 +2186,7 @@ void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* bac if ((opt->debug>1) && (opt->log!=NULL)) { fprintf(opt->log,"Cancel: %s%s"LF,liens[i]->adr,liens[i]->fil); test_flush; } - strcpy(liens[i]->adr,"!"); // cancel (invalide hash) + strcpybuff(liens[i]->adr,"!"); // cancel (invalide hash) #if HTS_HASH #else liens[i]->sav_len=-1; // taille invalide @@ -3194,7 +2197,7 @@ void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* bac if (opt->log!=NULL) { char dmp[1040]; dmp[0]='\0'; - strncat(dmp,liens[i]->adr,1024); + strncatbuff(dmp,liens[i]->adr,1024); fprintf(opt->log,"WARNING! HostCancel detected memory leaks [len %d at %d]"LF,l,i); test_flush; fprintf(opt->log,"dump 1024 bytes (address %p): "LF"%s"LF,liens[i]->adr,dmp); test_flush; } @@ -3214,42 +2217,46 @@ void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* bac } +#if 0 /* Init structure */ /* 1 : init */ /* -1 : off */ -char* structcheck_init(int init) { - char** structcheck_buff; - int* structcheck_buff_size; - NOSTATIC_RESERVE(structcheck_buff, char*, 1); - NOSTATIC_RESERVE(structcheck_buff_size, int, 1); - if (init < 2) { +/* 0 : query */ +/* 2 : LOCK */ +/* -2 : UNLOCK */ +void* structcheck_init(int init) { + int structcheck_size = 1024; + inthash structcheck_hash=NULL; + /* */ + static PTHREAD_LOCK_TYPE structcheck_init_mutex; + static int structcheck_init_mutex_init=0; + + if (init == 1 || init == -1) { if (init) { - if (*structcheck_buff) - freet(*structcheck_buff); - *structcheck_buff=NULL; + if (structcheck_hash) + inthash_delete(&structcheck_hash); + structcheck_hash=NULL; } if (init != -1) { - if (*structcheck_buff==NULL) { - *structcheck_buff_size = 65536; - *structcheck_buff=(char*) malloct(*structcheck_buff_size); // désalloué xh_xx - if (*structcheck_buff) - strcpy(*structcheck_buff,"#"); + if (structcheck_init_mutex_init == 0) { + htsSetLock(&structcheck_init_mutex, -999); + structcheck_init_mutex_init=1; } - } - } else { /* Ensure enough room */ - if (*structcheck_buff_size < init) { - *structcheck_buff_size = init + 65536; - *structcheck_buff=(char*) realloct(*structcheck_buff, *structcheck_buff_size); - if (*structcheck_buff == NULL) { /* Reset :( */ - *structcheck_buff_size = 65536; - *structcheck_buff=(char*) malloct(*structcheck_buff_size); // désalloué xh_xx - if (*structcheck_buff) - strcpy(*structcheck_buff,"#"); + if (structcheck_hash==NULL) { + structcheck_hash=inthash_new(structcheck_size); // désalloué xh_xx } } } - return *structcheck_buff; + + /* Lock / Unlock */ + if (init == 2) { // Lock + htsSetLock(&structcheck_init_mutex, 1); + } else if (init == -2) { // Unlock + htsSetLock(&structcheck_init_mutex, 0); + } + return structcheck_hash; } +#endif int filters_init(char*** ptrfilters, int maxfilter, int filterinc) { char** filters = *ptrfilters; @@ -3291,94 +2298,78 @@ int filters_init(char*** ptrfilters, int maxfilter, int filterinc) { } // vérifier présence de l'arbo -int structcheck(char* s) { +HTSEXT_API int structcheck(char* s) { // vérifier la présence des dossier(s) char *a=s; char nom[HTS_URLMAXSIZE*2]; char *b; - char* structcheck_buff=NULL; + //inthash structcheck_hash=NULL; if (strnotempty(s)==0) return 0; if (strlen(s)>HTS_URLMAXSIZE) return 0; // Get buffer address - structcheck_buff=structcheck_init(0); - if (!structcheck_buff) + /* + structcheck_hash = (inthash)structcheck_init(0); + if (structcheck_hash == NULL) { return -1; - - if (strlen(structcheck_buff) > 65000) { - strcpy(structcheck_buff,"#"); // réinit.. c'est idiot ** ** } - - if (structcheck_buff) { - b=nom; - do { - if (*a) *b++=*a++; - while((*a!='/') && (*a!='\0')) *b++=*a++; - *b='\0'; // pas de ++ pour boucler - if (*a=='/') { // toujours dossier - if (strnotempty(nom)) { - char tempo[HTS_URLMAXSIZE*2]; - - strcpy(tempo,"#"); strcat(tempo,nom); strcat(tempo,"#"); - if (strstr(structcheck_buff,tempo)==NULL) { // non encore créé - - /* Check room */ - structcheck_init(strlen(structcheck_buff) + strlen(nom) + 8192); - if (!structcheck_buff) - return -1; + */ - strcat(structcheck_buff,"#"); strcat(structcheck_buff,nom); strcat(structcheck_buff,"#"); // ajouter à la liste - + b=nom; + do { + if (*a) *b++=*a++; + while((*a!='/') && (*a!='\0')) *b++=*a++; + *b='\0'; // pas de ++ pour boucler + if (*a=='/') { // toujours dossier + if (strnotempty(nom)) { + //if (inthash_write(structcheck_hash, nom, 1)) { // non encore créé #if HTS_WIN - if (mkdir(fconv(nom))!=0) + if (mkdir(fconv(nom))!=0) #else - if (mkdir(fconv(nom),HTS_ACCESS_FOLDER)!=0) + if (mkdir(fconv(nom),HTS_ACCESS_FOLDER)!=0) #endif - { + { #if HTS_REMOVE_ANNOYING_INDEX - // might be a filename with same name than this folder - // then, remove it to allow folder creation - // it happends when servers gives a folder index while - // requesting / page - // -> if the file can be opened (not a folder) then rename it - FILE* fp=fopen(fconv(nom),"ab"); - if (fp) { - fclose(fp); - rename(fconv(nom),fconcat(fconv(nom),".txt")); - } - // if it fails, that's too bad + // might be a filename with same name than this folder + // then, remove it to allow folder creation + // it happends when servers gives a folder index while + // requesting / page + // -> if the file can be opened (not a folder) then rename it + if (fexist(fconv(nom))) { + rename(fconv(nom),fconcat(fconv(nom),".txt")); + } + // if it fails, that's too bad #if HTS_WIN - mkdir(fconv(nom)); + mkdir(fconv(nom)); #else - mkdir(fconv(nom),HTS_ACCESS_FOLDER); + mkdir(fconv(nom),HTS_ACCESS_FOLDER); #endif #endif - // Si existe déja renvoie une erreur.. tant pis - } + // Si existe déja renvoie une erreur.. tant pis + } #if HTS_WIN==0 - chmod(fconv(nom),HTS_ACCESS_FOLDER); + /*chmod(fconv(nom),HTS_ACCESS_FOLDER);*/ #endif - } - } - *b++=*a++; // slash - } - } while(*a); - } + //} + } + *b++=*a++; // slash + } + } while(*a); return 0; } // sauver un fichier -int filesave(char* adr,int len,char* s) { +int filesave(httrackp* opt,char* adr,int len,char* s,char* url_adr,char* url_fil) { FILE* fp; // écrire le fichier if ((fp=filecreate(s))!=NULL) { int nl=0; if (len>0) { - nl=(int) fwrite(adr,1,len,fp); + nl=(int) fwrite(adr,1,(INTsys)len,fp); } fclose(fp); - usercommand(0,NULL,antislash(s)); + //xxusercommand(opt,0,NULL,fconv(s),url_adr,url_fil); if (nl!=len) // erreur return -1; } else @@ -3387,6 +2378,24 @@ int filesave(char* adr,int len,char* s) { return 0; } +/* We should stop */ +int check_fatal_io_errno(void) { + switch(errno) { +#ifdef EMFILE + case EMFILE: /* Too many open files */ +#endif +#ifdef ENOSPC + case ENOSPC: /* No space left on device */ +#endif +#ifdef EROFS + case EROFS: /* Read-only file system */ +#endif + return 1; + break; + } + return 0; +} + // ouvrir un fichier (avec chemin Un*x) FILE* filecreate(char* s) { @@ -3397,8 +2406,8 @@ FILE* filecreate(char* s) { // noter lst filenote(s,NULL); - // if (*s=='/') strcpy(fname,s+1); else strcpy(fname,s); // pas de / (root!!) // ** SIIIIIII!!! à cause de -O - strcpy(fname,s); + // if (*s=='/') strcpybuff(fname,s+1); else strcpybuff(fname,s); // pas de / (root!!) // ** SIIIIIII!!! à cause de -O + strcpybuff(fname,s); #if HTS_DOSNAME // remplacer / par des slash arrière @@ -3413,13 +2422,14 @@ FILE* filecreate(char* s) { // a partir d'ici le slash devient antislash #endif - // construite le chemin si besoin est - if (structcheck(s)!=0) { - return NULL; - } - // ouvrir fp=fopen(fname,"wb"); + if (fp == NULL) { + // construire le chemin si besoin est + (void)structcheck(s); + fp=fopen(fname,"wb"); + } + #if HTS_WIN==0 if (fp!=NULL) chmod(fname,HTS_ACCESS_FILE); #endif @@ -3450,16 +2460,16 @@ int filenote(char* s,filecreate_params* params) { // gestion du fichier liste liste if (params) { //filecreate_params* p = (filecreate_params*) params; - strcpy(strc->path,params->path); + strcpybuff(strc->path,params->path); strc->lst=params->lst; return 0; } else if (strc->lst) { char savelst[HTS_URLMAXSIZE*2]; - strcpy(savelst,fslash(s)); + strcpybuff(savelst,fslash(s)); // couper chemin? if (strnotempty(strc->path)) { if (strncmp(fslash(strc->path),savelst,strlen(strc->path))==0) { // couper - strcpy(savelst,s+strlen(strc->path)); + strcpybuff(savelst,s+strlen(strc->path)); } } fprintf(strc->lst,"[%s]"LF,savelst); @@ -3469,30 +2479,35 @@ int filenote(char* s,filecreate_params* params) { } // executer commande utilisateur +static void postprocess_file(httrackp* opt,char* save, char* adr, char* fil); typedef struct { int exe; char cmd[2048]; } usercommand_strc; -HTS_INLINE void usercommand(int _exe,char* _cmd,char* file) { +HTS_INLINE void usercommand(httrackp* opt,int _exe,char* _cmd,char* file,char* adr,char* fil) { usercommand_strc* strc; NOSTATIC_RESERVE(strc, usercommand_strc, 1); - + + /* Callback */ if (_exe) { - strcpy(strc->cmd,_cmd); + strcpybuff(strc->cmd,_cmd); if (strnotempty(strc->cmd)) strc->exe=_exe; else strc->exe=0; } + /* post-processing */ + postprocess_file(opt, file, adr, fil); + #if HTS_ANALYSTE - if (hts_htmlcheck_filesave) - if (strnotempty(file)) + if (hts_htmlcheck_filesave != NULL) + if (file != NULL && strnotempty(file)) hts_htmlcheck_filesave(file); #endif if (strc->exe) { - if (strnotempty(file)) { + if (file != NULL && strnotempty(file)) { if (strnotempty(strc->cmd)) { usercommand_exe(strc->cmd,file); } @@ -3507,16 +2522,119 @@ void usercommand_exe(char* cmd,char* file) { // for(i=0;i<(int) strlen(cmd);i++) { if ((cmd[i]=='$') && (cmd[i+1]=='0')) { - strcat(temp,file); + strcatbuff(temp,file); i++; } else { c[0]=cmd[i]; c[1]='\0'; - strcat(temp,c); + strcatbuff(temp,c); } } system(temp); } + +static void postprocess_file(httrackp* opt,char* save, char* adr, char* fil) { + int first = 0; + /* MIME-html archive to build */ + if (opt != NULL && opt->mimehtml) { + if (adr != NULL && strcmp(adr, "primary") == 0) { + adr = NULL; + } + if (save != NULL && opt != NULL && adr != NULL && adr[0] && strnotempty(save) && fexist(save)) { + char* rsc_save = save; + char* rsc_fil = strrchr(fil, '/'); + int n; + if (rsc_fil == NULL) + rsc_fil = fil; + if (strncmp(fslash(save), fslash(opt->path_html), (n = (int)strlen(opt->path_html))) == 0) { + rsc_save += n; + } + + if (!opt->state.mimehtml_created) { + first = 1; + opt->state.mimefp = fopen(fconcat(opt->path_html,"index.mht"), "wb"); + if (opt->state.mimefp != NULL) { + char rndtmp[1024], currtime[256]; + srand(time(NULL)); + time_gmt_rfc822(currtime); + sprintf(rndtmp, "%d_%d", (int)time(NULL), (int) rand()); + sprintf(opt->state.mimemid, "----=_MIMEPart_%s_=----", rndtmp); + fprintf(opt->state.mimefp, "From: HTTrack Website Copier \r\n" + "Subject: Local mirror\r\n" + "Date: %s\r\n" + "Message-ID: \r\n" + "Content-Type: multipart/related;\r\n" + "\tboundary=\"%s\";\r\n" + "\ttype=\"text/html\"\r\n" + "MIME-Version: 1.0\r\n" + "\r\nThis message is a RFC MIME-compliant multipart message.\r\n" + "\r\n" + , currtime, rndtmp, opt->state.mimemid); + opt->state.mimehtml_created = 1; + } else { + opt->state.mimehtml_created = -1; + if ( opt->errlog != NULL ) { + fspc(opt->errlog,"error"); fprintf(opt->log,"unable to create index.mht"LF); + } + } + } + if (opt->state.mimehtml_created == 1 && opt->state.mimefp != NULL) { + FILE* fp = fopen(save, "rb"); + if (fp != NULL) { + char buff[60*100 + 2]; + char mimebuff[256]; + char cid[HTS_URLMAXSIZE*3]; + int len; + int isHtml = ( ishtml(save) == 1 ); + mimebuff[0] = '\0'; + + /* CID */ + strcpybuff(cid, adr); + strcatbuff(cid, fil); + escape_in_url(cid); + { char* a = cid; while((a = strchr(a, '%'))) { *a = 'X'; a++; } } + + guess_httptype(mimebuff, save); + fprintf(opt->state.mimefp, "--%s\r\n", opt->state.mimemid); + /*if (first) + fprintf(opt->state.mimefp, "Content-disposition: inline\r\n"); + else*/ + fprintf(opt->state.mimefp, "Content-disposition: attachment; filename=\"%s\"\r\n", rsc_save); + fprintf(opt->state.mimefp, + "Content-Type: %s\r\n" + "Content-Transfer-Encoding: %s\r\n" + /*"Content-Location: http://localhost/%s\r\n"*/ + "Content-ID: <%s>\r\n" + "\r\n" + , mimebuff + , isHtml ? "8bit" : "base64" + /*, rsc_save*/ + , cid); + while((len = fread(buff, 1, sizeof(buff) - 2, fp)) > 0) { + buff[len] = '\0'; + if (!isHtml) { + char base64buff[60*100*2]; + code64((unsigned char*)buff, len, (unsigned char*)base64buff, 1); + fprintf(opt->state.mimefp, "%s", base64buff); + } else { + fprintf(opt->state.mimefp, "%s", buff); + } + } + fclose(fp); + fprintf(opt->state.mimefp, "\r\n\r\n"); + } + } + } else if (save == NULL) { + if (opt->state.mimehtml_created == 1 && opt->state.mimefp != NULL) { + fprintf(opt->state.mimefp, + "--%s--\r\n", opt->state.mimemid); + fclose(opt->state.mimefp); + opt->state.mimefp = NULL; + } + } + } +} + // écrire n espaces dans fp typedef struct { int error; @@ -3534,6 +2652,10 @@ HTS_INLINE int fspc(FILE* fp,char* type) { struct tm* A; tt=time(NULL); A=localtime(&tt); + if (A == NULL) { + int localtime_returned_null=0; + assert(localtime_returned_null); + } strftime(s,250,"%H:%M:%S",A); if (strnotempty(type)) fprintf(fp,"%s\t%c%s: \t",s,hichar(*type),type+1); @@ -3611,9 +2733,10 @@ HTS_INLINE int back_fillmax(lien_back* back,int back_max,httrackp* opt,cache_bac // remplir backing int back_fill(lien_back* back,int back_max,httrackp* opt,cache_back* cache,lien_url** liens,int ptr,int numero_passe,int lien_tot) { int n; + int oneLess = ( (_hts_in_html_parsing == 2 && opt->maxsoc >= 2) || (_hts_in_html_parsing == 1 && opt->maxsoc >= 4) ) ? 1 : 0; // testing links // ajouter autant de socket qu'on peut ajouter - n=opt->maxsoc-back_nsoc(back,back_max); + n=opt->maxsoc-back_nsoc(back,back_max) - oneLess; // vérifier qu'il restera assez de place pour les tests ensuite (en théorie, 1 entrée libre restante suffirait) n=min( n, back_available(back,back_max) - 8 ); @@ -3633,7 +2756,7 @@ int back_fill(lien_back* back,int back_max,httrackp* opt,cache_back* cache,lien_ /* on a déja parcouru */ if (pptr_ant) p=cache->ptr_ant; - while( (p0) ) { + while( (p0) && back_checkmirror(opt)) { //while((p0) && (p < ptr+opt->maxcache_anticipate)) { int ok=1; @@ -3750,6 +2873,7 @@ void sig_ask( int code ) { // demander httrackp* opt=hts_declareoptbuffer(NULL); if (opt) { // ask for stop + printf("finishing pending transfers.. please wait\n"); opt->state.stop=1; } signal(code,sig_ask); // remettre signal @@ -3762,14 +2886,16 @@ void sig_ask( int code ) { // demander void sig_ignore( int code ) { // ignorer signal } void sig_brpipe( int code ) { // treat if necessary + /* if (!sig_ignore_flag(-1)) { sig_term(code); } + */ } void sig_doback(int blind) { // mettre en backing int out=-1; // - printf("\nMoving to background to complete the mirror...\n"); fflush(stdout); + printf("\nMoving into background to complete the mirror...\n"); fflush(stdout); { httrackp* opt=hts_declareoptbuffer(NULL); @@ -3839,6 +2965,29 @@ HTS_INLINE int check_stdin(void) { #endif #endif +HTS_INLINE int check_sockerror(T_SOC s) { + fd_set fds; + struct timeval tv; + FD_ZERO(&fds); + FD_SET((T_SOC) s,&fds); + tv.tv_sec=0; + tv.tv_usec=0; + select(s+1,NULL,NULL,&fds,&tv); + return FD_ISSET(s,&fds); +} + +/* check incoming data */ +HTS_INLINE int check_sockdata(T_SOC s) { + fd_set fds; + struct timeval tv; + FD_ZERO(&fds); + FD_SET((T_SOC) s,&fds); + tv.tv_sec=0; + tv.tv_usec=0; + select(s+1,&fds,NULL,NULL,&tv); + return FD_ISSET(s,&fds); +} + // Attente de touche #if HTS_ANALYSTE int ask_continue(void) { @@ -3896,12 +3045,18 @@ char* next_token(char* p,int flag) { if (c) { char tempo[8192]; tempo[0]=c; tempo[1]='\0'; - strcat(tempo,p+2); - strcpy(p,tempo); + strcatbuff(tempo,p+2); + strcpybuff(p,tempo); } } } else if (*p==34) { // guillemets (de fin) + char tempo[8192]; + tempo[0]='\0'; + strcatbuff(tempo,p+1); + strcpybuff(p,tempo); /* wipe "" */ + p--; + /* */ quote=!quote; } else if (*p==32) { @@ -3920,18 +3075,18 @@ char* next_token(char* p,int flag) { #if HTS_ANALYSTE // canceller un fichier (noter comme cancellable) // !!NOT THREAD SAFE!! -char* hts_cancel_file(char * s) { +HTSEXT_API char* hts_cancel_file(char * s) { static char sav[HTS_URLMAXSIZE*2]=""; if (s[0]!='\0') if (sav[0]=='\0') - strcpy(sav,s); + strcpybuff(sav,s); return sav; } -void hts_cancel_test(void) { +HTSEXT_API void hts_cancel_test(void) { if (_hts_in_html_parsing==2) _hts_cancel=2; } -void hts_cancel_parsing(void) { +HTSEXT_API void hts_cancel_parsing(void) { if (_hts_in_html_parsing) _hts_cancel=1; } @@ -3940,7 +3095,7 @@ void hts_cancel_parsing(void) { // i=(back_index+_i)%back_max; // commencer par le "premier" (l'actuel) // if (back[i].status>=0) { // signifie "lien actif" - +#if 0 /* hts_add_file, add/get elements in the add chain for java parsing if file_position >= 0 @@ -3958,7 +3113,7 @@ typedef struct addfile_chain { struct addfile_chain* next; } addfile_chain; typedef addfile_chain* addfile_chain_ptr; -int hts_add_file(char* file,int file_position) { +int opt->(char* file,int file_position) { addfile_chain** chain; NOSTATIC_RESERVE(chain, addfile_chain_ptr, 1); @@ -3977,7 +3132,7 @@ int hts_add_file(char* file,int file_position) { (*current)->name[0]='\0'; } if (*current) { - strcpy((*current)->name,file); + strcpybuff((*current)->name,file); (*current)->pos=file_position; return 1; } else { @@ -3995,7 +3150,7 @@ int hts_add_file(char* file,int file_position) { current=&( (*current)->next ); /* 'next' address */ } if (file) - strcpy(file,(*current)->name); + strcpybuff(file,(*current)->name); pos=(*current)->pos; freet(*current); *current=NULL; @@ -4006,11 +3161,12 @@ int hts_add_file(char* file,int file_position) { return 0; } +#endif #if HTS_ANALYSTE // en train de parser un fichier html? réponse: % effectués // flag>0 : refresh demandé -int hts_is_parsing(int flag) { +HTSEXT_API int hts_is_parsing(int flag) { if (_hts_in_html_parsing) { // parsing? if (flag>=0) _hts_in_html_poll=1; // faudrait un tit refresh return max(_hts_in_html_done,1); // % effectués @@ -4018,24 +3174,29 @@ int hts_is_parsing(int flag) { return 0; // non } } -int hts_is_testing(void) { // 0 non 1 test 2 purge +HTSEXT_API int hts_is_testing(void) { // 0 non 1 test 2 purge if (_hts_in_html_parsing==2) return 1; else if (_hts_in_html_parsing==3) return 2; + else if (_hts_in_html_parsing==4) + return 3; return 0; } +HTSEXT_API int hts_is_exiting(void) { + return exit_xh; +} // message d'erreur? char* hts_errmsg(void) { return _hts_errmsg; } // mode pause transfer -int hts_setpause(int p) { +HTSEXT_API int hts_setpause(int p) { if (p>=0) _hts_setpause=p; return _hts_setpause; } // ask for termination -int hts_request_stop(int force) { +HTSEXT_API int hts_request_stop(int force) { httrackp* opt=hts_declareoptbuffer(NULL); if (opt) { opt->state.stop=1; @@ -4044,7 +3205,7 @@ int hts_request_stop(int force) { } // régler en cours de route les paramètres réglables.. // -1 : erreur -int hts_setopt(httrackp* set_opt) { +HTSEXT_API int hts_setopt(httrackp* set_opt) { if (set_opt) { httrackp* engine_opt=hts_declareoptbuffer(NULL); if (engine_opt) { @@ -4056,16 +3217,16 @@ int hts_setopt(httrackp* set_opt) { } // ajout d'URL // -1 : erreur -int hts_addurl(char** url) { +HTSEXT_API int hts_addurl(char** url) { if (url) _hts_addurl=url; return (_hts_addurl!=NULL); } -int hts_resetaddurl(void) { +HTSEXT_API int hts_resetaddurl(void) { _hts_addurl=NULL; return (_hts_addurl!=NULL); } // copier nouveaux paramètres si besoin -int copy_htsopt(httrackp* from,httrackp* to) { +HTSEXT_API int copy_htsopt(httrackp* from,httrackp* to) { if (from->maxsite > -1) to->maxsite = from->maxsite; @@ -4094,7 +3255,7 @@ int copy_htsopt(httrackp* from,httrackp* to) { to->maxrate = from->maxrate; if (strnotempty(from->user_agent)) - strcpy(to->user_agent , from->user_agent); + strcpybuff(to->user_agent , from->user_agent); if (from->retry > -1) to->retry = from->retry; @@ -4124,6 +3285,248 @@ int copy_htsopt(httrackp* from,httrackp* to) { #endif // +/* External modules callback */ +int htsAddLink(htsmoduleStruct* str, char* link) { + if (link != NULL && str != NULL && link[0] != '\0') { + lien_url** liens = (lien_url**) str->liens; + httrackp* opt = (httrackp*) str->opt; + lien_back* back = (lien_back*) str->back; + cache_back* cache = (cache_back*) str->cache; + hash_struct* hashptr = (hash_struct*) str->hashptr; + int back_max = str->back_max; + int numero_passe = str->numero_passe; + int add_tab_alloc = str->add_tab_alloc; + /* */ + int lien_tot = * ( (int*) (str->lien_tot_) ); + int ptr = * ( (int*) (str->ptr_) ); + int lien_size = * ( (int*) (str->lien_size_) ); + char* lien_buffer = * ( (char**) (str->lien_buffer_) ); + /* */ + /* */ + char adr[HTS_URLMAXSIZE*2], + fil[HTS_URLMAXSIZE*2], + save[HTS_URLMAXSIZE*2]; + char codebase[HTS_URLMAXSIZE*2]; + /* */ + int pass_fix, prio_fix; + /* */ + int forbidden_url = 1; + + codebase[0]='\0'; + + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(module): adding link : '%s'"LF, link); test_flush; + } + // recopie de "creer le lien" + // + +#if HTS_ANALYSTE + if (!hts_htmlcheck_linkdetected(link)) { + if (opt->errlog) { + fspc(opt->errlog,"error"); fprintf(opt->errlog,"Link %s refused by external wrapper"LF, link); + test_flush; + } + return 0; + } +#endif + + // adr = c'est la même + // fil et save: save2 et fil2 + prio_fix=maximum(liens[ptr]->depth-1,0); + pass_fix=max(liens[ptr]->pass2,numero_passe); + if (liens[ptr]->cod) strcpybuff(codebase,liens[ptr]->cod); // codebase valable pour tt les classes descendantes + if (strnotempty(codebase)==0) { // pas de codebase, construire + char* a; + if (str->relativeToHtmlLink == 0) + strcpybuff(codebase,liens[ptr]->fil); + else + strcpybuff(codebase,liens[liens[ptr]->precedent]->fil); + a=codebase+strlen(codebase)-1; + while((*a) && (*a!='/') && ( a > codebase)) a--; + if (*a=='/') + *(a+1)='\0'; // couper + } else { // couper http:// éventuel + if (strfield(codebase,"http://")) { + char tempo[HTS_URLMAXSIZE*2]; + char* a=codebase+7; + a=strchr(a,'/'); // après host + if (a) { // ** msg erreur et vérifier? + strcpybuff(tempo,a); + strcpybuff(codebase,tempo); // couper host + } else { + if (opt->errlog) { + fprintf(opt->errlog,"Unexpected strstr error in base %s"LF,codebase); + test_flush; + } + } + } + } + + if (!((int) strlen(codebase)errlog) { + fprintf(opt->errlog,"Codebase too long, parsing skipped (%s)"LF,codebase); + test_flush; + } + } + + { + char* lien = link; + int dejafait=0; + + if (strnotempty(lien) && strlen(lien) < HTS_URLMAXSIZE) { + + // calculer les chemins et noms de sauvegarde + if (ident_url_relatif(lien,urladr,codebase,adr,fil)>=0) { // reformage selon chemin + int r; + int set_prio_to = 0; + int just_test_it = 0; + forbidden_url = hts_acceptlink(opt, ptr, lien_tot, liens, + adr,fil, + &set_prio_to, + &just_test_it); + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"result for wizard external module link: %d"LF,forbidden_url); + test_flush; + } + + /* Link accepted */ + if (!forbidden_url) { + char tempo[HTS_URLMAXSIZE*2]; + int a,b; + tempo[0]='\0'; + a=opt->savename_type; + b=opt->savename_83; + opt->savename_type=0; + opt->savename_83=0; + // note: adr,fil peuvent être patchés + r=url_savename(adr,fil,save,NULL,NULL,NULL,NULL,opt,liens,lien_tot,back,back_max,cache,hashptr,ptr,numero_passe); + opt->savename_type=a; + opt->savename_83=b; + if (r != -1) { + if (savename) { + if (lienrelatif(tempo,save,savename)==0) { + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(module): relative link at %s build with %s and %s: %s"LF,adr,save,savename,tempo); + test_flush; + if (str->localLink && str->localLinkSize > (int) strlen(tempo) + 1) { + strcpybuff(str->localLink, tempo); + } + } + } + } + } + } else { + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(module): file not caught: %s"LF,lien); test_flush; + } + if (str->localLink && str->localLinkSize > (int) ( strlen(adr) + strlen(fil) + 8 ) ) { + str->localLink[0] = '\0'; + if (!link_has_authority(adr)) + strcpybuff(str->localLink,"http://"); + strcatbuff(str->localLink, adr); + strcatbuff(str->localLink, fil); + } + r=-1; + } + // + if (r != -1) { + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(module): %s%s -> %s (base %s)"LF,adr,fil,save,codebase); test_flush; + } + + // modifié par rapport à l'autre version (cf prio_fix notamment et save2) + + // vérifier que le lien n'a pas déja été noté + // si c'est le cas, alors il faut s'assurer que la priorité associée + // au fichier est la plus grande des deux priorités + // + // On part de la fin et on essaye de se presser (économise temps machine) +#if HTS_HASH + { + int i=hash_read(hashptr,save,"",0,opt->urlhack); // lecture type 0 (sav) + if (i>=0) { + liens[i]->depth=maximum(liens[i]->depth,prio_fix); + dejafait=1; + } + } +#else + { + int l; + int i; + l=strlen(save); + for(i=lien_tot-1;(i>=0) && (dejafait==0);i--) { + if (liens[i]->sav_len==l) { // même taille de chaîne + if (strcmp(liens[i]->sav,save)==0) { // existe déja + liens[i]->depth=maximum(liens[i]->depth,prio_fix); + dejafait=1; + } + } + } + } +#endif + + + if (!dejafait) { + // + // >>>> CREER LE LIEN JAVA <<<< + + // enregistrer fichier (MACRO) + liens_record(adr,fil,save,"","",opt->urlhack); + if (liens[lien_tot]==NULL) { // erreur, pas de place réservée + printf("PANIC! : Not enough memory [%d]\n",__LINE__); + if (opt->errlog) { + fprintf(opt->errlog,"Not enough memory, can not re-allocate %d bytes"LF,(int)((add_tab_alloc+1)*sizeof(lien_url))); + test_flush; + } + exit_xh=-1; /* fatal error -> exit */ + return 0; + } + + // mode test? + liens[lien_tot]->testmode=0; // pas mode test + + liens[lien_tot]->link_import=0; // pas mode import + + // écrire autres paramètres de la structure-lien + //if (meme_adresse) + liens[lien_tot]->premier=liens[ptr]->premier; + //else // sinon l'objet père est le précédent lui même + // liens[lien_tot]->premier=ptr; + + liens[lien_tot]->precedent=ptr; + // noter la priorité + if (!set_prio_to) + liens[lien_tot]->depth=prio_fix; + else + liens[lien_tot]->depth=max(0,min(liens[ptr]->depth-1,set_prio_to-1)); // PRIORITE NULLE (catch page) + liens[lien_tot]->pass2=max(pass_fix,numero_passe); + liens[lien_tot]->retry=opt->retry; + + //strcpybuff(liens[lien_tot]->adr,adr); + //strcpybuff(liens[lien_tot]->fil,fil); + //strcpybuff(liens[lien_tot]->sav,save); + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(module): OK, NOTE: %s%s -> %s"LF,liens[lien_tot]->adr,liens[lien_tot]->fil,liens[lien_tot]->sav); + test_flush; + } + + lien_tot++; // UN LIEN DE PLUS + } + } + } + } + } + + /* Apply changes */ + * ( (int*) (str->lien_tot_) ) = lien_tot; + * ( (int*) (str->ptr_) ) = ptr; + * ( (int*) (str->lien_size_) ) = lien_size; + * ( (char**) (str->lien_buffer_) ) = lien_buffer; + return (forbidden_url == 0); + } + return 0; +} + diff --git a/src/htscore.h b/src/htscore.h index a50aac8..d9e5d0a 100644 --- a/src/htscore.h +++ b/src/htscore.h @@ -55,8 +55,10 @@ Please visit our Website: http://www.httrack.com #include #else #include +#ifdef HAVE_UNISTD_H #include #endif +#endif /* END specific definitions */ @@ -69,13 +71,13 @@ Please visit our Website: http://www.httrack.com typedef struct { char firstblock; // flag 1=premier malloc char link_import; // lien importé à la suite d'un moved - ne pas appliquer les règles classiques up/down - short int depth; // profondeur autorisée lien ; >0 forte 0=faible - short int pass2; // traiter après les autres, seconde passe. si == -1, lien traité en background + int depth; // profondeur autorisée lien ; >0 forte 0=faible + int pass2; // traiter après les autres, seconde passe. si == -1, lien traité en background int premier; // pointeur sur le premier lien qui a donné lieu aux autres liens du domaine int precedent; // pointeur sur le lien qui a donné lieu à ce lien précis - //int moved; // pointeur sur moved - short int retry; // nombre de retry restants - short int testmode; // mode test uniquement, envoyer juste un head! + //int moved; // pointeur sur moved + int retry; // nombre de retry restants + int testmode; // mode test uniquement, envoyer juste un head! char* adr; // adresse char* fil; // nom du fichier distant char* sav; // nom à sauver sur disque (avec chemin éventuel) @@ -101,10 +103,11 @@ typedef struct { char referer_adr[HTS_URLMAXSIZE*2]; // adresse host page referer char referer_fil[HTS_URLMAXSIZE*2]; // fichier page referer char location_buffer[HTS_URLMAXSIZE*2]; // "location" en cas de "moved" (302,..) - char tmpfile[HTS_URLMAXSIZE*2]; // nom à sauver temporairement (compressé) + char* tmpfile; // nom à sauver temporairement (compressé) + char tmpfile_buffer[HTS_URLMAXSIZE*2]; // buffer pour le nom à sauver temporairement char send_too[1024]; // données à envoyer en même temps que le header - int status; // status (-1=non utilisé, 0: prêt, >0: opération en cours) - int testmode; // mode de test + int status; // status (-1=non utilisé, 0: prêt, >0: opération en cours) + int testmode; // mode de test int timeout; // gérer des timeouts? (!=0 : nombre de secondes) TStamp timeout_refresh; // si oui, time refresh int rateout; // timeout refresh? (!=0 : taux minimum toléré en octets/s) @@ -112,20 +115,23 @@ typedef struct { LLint maxfile_nonhtml; // taille max d'un fichier non html LLint maxfile_html; // idem pour un ficheir html htsblk r; // structure htsblk de chaque objet en background - short int is_update; // mode update + int is_update; // mode update int head_request; // requète HEAD? LLint range_req_size; // range utilisé + TStamp ka_time_start; // refresh time for KA // int http11; // L'en tête doit être signé HTTP/1.1 et non HTTP/1.0 int is_chunk; // chunk? char* chunk_adr; // adresse chunk en cours de chargement LLint chunk_size; // taille chunk en cours de chargement + LLint chunk_blocksize; // taille data declaree par le chunk LLint compressed_size; // taille compressés (stats uniquement) // - short int* pass2_ptr; // pointeur sur liens[ptr]->pass2 + int* pass2_ptr; // pointeur sur liens[ptr]->pass2 // - char info[256]; // éventuel status pour le ftp - int stop_ftp; // flag stop pour ftp + char info[256]; // éventuel status pour le ftp + int stop_ftp; // flag stop pour ftp + int finalized; // finalized (optim memory) #if DEBUG_CHECKINT char magic2; #endif @@ -136,6 +142,7 @@ typedef struct { int version; // 0 ou 1 /* */ int type; + int ro; FILE *dat,*ndx,*olddat; char *use; // liste des adr+fil FILE *lst; // liste des fichiers pour la "purge" @@ -209,6 +216,7 @@ typedef struct { // gestion hashage #include "htshash.h" +#include "htsinthash.h" // gestion réentrance #include "htsnostatic.h" @@ -236,42 +244,57 @@ typedef int (* t_hts_htmlcheck)(char* html,int len,char* url_adresse,char* url typedef char* (* t_hts_htmlcheck_query)(char* question); typedef char* (* t_hts_htmlcheck_query2)(char* question); typedef char* (* t_hts_htmlcheck_query3)(char* question); -typedef int (* t_hts_htmlcheck_loop)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,LLint stat_bytes,LLint stat_bytes_recv,int stat_time,int stat_nsocket, LLint stat_written, int stat_updated, int stat_errors, int irate, int nbk ); +typedef int (* t_hts_htmlcheck_loop)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,hts_stat_struct* stats); typedef int (* t_hts_htmlcheck_check)(char* adr,char* fil,int status); typedef void (* t_hts_htmlcheck_pause)(char* lockfile); +typedef void (* t_hts_htmlcheck_filesave)(char* file); +typedef int (* t_hts_htmlcheck_linkdetected)(char* link); +typedef int (* t_hts_htmlcheck_xfrstatus)(lien_back* back); +typedef int (* t_hts_htmlcheck_savename)(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save); +typedef int (* t_hts_htmlcheck_sendhead)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* outgoing); +typedef int (* t_hts_htmlcheck_receivehead)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* incoming); */ // demande d'interaction avec le shell #if HTS_ANALYSTE //char HTbuff[1024]; /* -extern t_hts_htmlcheck_init hts_htmlcheck_init; -extern t_hts_htmlcheck_uninit hts_htmlcheck_uninit; -extern t_hts_htmlcheck_start hts_htmlcheck_start; -extern t_hts_htmlcheck_end hts_htmlcheck_end; -extern t_hts_htmlcheck_chopt hts_htmlcheck_chopt; -extern t_hts_htmlcheck hts_htmlcheck; -extern t_hts_htmlcheck_query hts_htmlcheck_query; -extern t_hts_htmlcheck_query2 hts_htmlcheck_query2; -extern t_hts_htmlcheck_query3 hts_htmlcheck_query3; -extern t_hts_htmlcheck_loop hts_htmlcheck_loop; -extern t_hts_htmlcheck_check hts_htmlcheck_check; -extern t_hts_htmlcheck_pause hts_htmlcheck_pause; +extern t_hts_htmlcheck_init hts_htmlcheck_init; +extern t_hts_htmlcheck_uninit hts_htmlcheck_uninit; +extern t_hts_htmlcheck_start hts_htmlcheck_start; +extern t_hts_htmlcheck_end hts_htmlcheck_end; +extern t_hts_htmlcheck_chopt hts_htmlcheck_chopt; +extern t_hts_htmlcheck hts_htmlcheck; +extern t_hts_htmlcheck_query hts_htmlcheck_query; +extern t_hts_htmlcheck_query2 hts_htmlcheck_query2; +extern t_hts_htmlcheck_query3 hts_htmlcheck_query3; +extern t_hts_htmlcheck_loop hts_htmlcheck_loop; +extern t_hts_htmlcheck_check hts_htmlcheck_check; +extern t_hts_htmlcheck_pause hts_htmlcheck_pause; +extern t_hts_htmlcheck_filesave hts_htmlcheck_filesave; +extern t_hts_htmlcheck_linkdetected hts_htmlcheck_linkdetected; +extern t_hts_htmlcheck_xfrstatus hts_htmlcheck_xfrstatus; +extern t_hts_htmlcheck_savename hts_htmlcheck_savename; +extern t_hts_htmlcheck_sendhead hts_htmlcheck_sendhead; +extern t_hts_htmlcheck_receivehead hts_htmlcheck_receivehead; */ // -int hts_is_parsing(int flag); -int hts_is_testing(void); -int hts_setopt(httrackp* opt); -int hts_addurl(char** url); -int hts_resetaddurl(void); -int copy_htsopt(httrackp* from,httrackp* to); -char* hts_errmsg(void); -int hts_setpause(int); // pause transfer -int hts_request_stop(int force); +#ifndef HTTRACK_DEFLIB +HTSEXT_API int hts_is_parsing(int flag); +HTSEXT_API int hts_is_testing(void); +HTSEXT_API int hts_is_exiting(void); +HTSEXT_API int hts_setopt(httrackp* opt); +HTSEXT_API int hts_addurl(char** url); +HTSEXT_API int hts_resetaddurl(void); +HTSEXT_API int copy_htsopt(httrackp* from,httrackp* to); +HTSEXT_API char* hts_errmsg(void); +HTSEXT_API int hts_setpause(int); // pause transfer +HTSEXT_API int hts_request_stop(int force); // -char* hts_cancel_file(char * s); -void hts_cancel_test(void); -void hts_cancel_parsing(void); +HTSEXT_API char* hts_cancel_file(char * s); +HTSEXT_API void hts_cancel_test(void); +HTSEXT_API void hts_cancel_parsing(void); +#endif // // Variables globales extern int _hts_in_html_parsing; @@ -291,17 +314,20 @@ extern int _hts_cancel; //int httpmirror(char* url,int level,httrackp opt); int httpmirror(char* url1,httrackp* opt); -int filesave(char* adr,int len,char* s); +int filesave(httrackp* opt,char* adr,int len,char* s,char* url_adr /* = NULL */,char* url_fil /* = NULL */); +int check_fatal_io_errno(void); int engine_stats(void); -void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* back,int back_max,char** filters,int filter_max,int* filptr,char* host); +void host_ban(httrackp* opt,lien_url** liens,int ptr,int lien_tot,lien_back* back,int back_max,char* host); FILE* filecreate(char* s); int filecreateempty(char* filename); int filenote(char* s,filecreate_params* params); -HTS_INLINE void usercommand(int exe,char* cmd,char* file); +HTS_INLINE void usercommand(httrackp* opt,int exe,char* cmd,char* file,char* adr,char* fil); void usercommand_exe(char* cmd,char* file); -char* structcheck_init(int init); +//void* structcheck_init(int init); int filters_init(char*** ptrfilters, int maxfilter, int filterinc); -int structcheck(char* s); +#ifndef HTTRACK_DEFLIB +HTSEXT_API int structcheck(char* s); +#endif HTS_INLINE int fspc(FILE* fp,char* type); char* next_token(char* p,int flag); // @@ -322,16 +348,20 @@ int back_fillmax(lien_back* back,int back_max,httrackp* opt,cache_back* cache,li // cancel file #if HTS_ANALYSTE -char* hts_cancel_file(char * s); -void hts_cancel_test(void); -void hts_cancel_parsing(void); +#ifndef HTTRACK_DEFLIB +HTSEXT_API char* hts_cancel_file(char * s); +HTSEXT_API void hts_cancel_test(void); +HTSEXT_API void hts_cancel_parsing(void); +#endif #endif int ask_continue(void); int nombre_digit(int n); // Java +#if 0 int hts_add_file(char* file,int file_position); +#endif // Polling #if HTS_POLL @@ -339,6 +369,8 @@ HTS_INLINE int check_flot(T_SOC s); HTS_INLINE int check_stdin(void); int read_stdin(char* s,int max); #endif +HTS_INLINE int check_sockerror(T_SOC s); +HTS_INLINE int check_sockdata(T_SOC s); httrackp* hts_declareoptbuffer(httrackp* optdecl); void sig_finish( int code ); // finir et quitter @@ -353,6 +385,9 @@ void sig_brpipe( int code ); // treat if necessary void sig_doback(int); // mettre en arrière plan #endif +/* external modules */ +int htsAddLink(htsmoduleStruct* str, char* link); + // Void void voidf(void); diff --git a/src/htscoremain.c b/src/htscoremain.c index a03635f..1162c18 100644 --- a/src/htscoremain.c +++ b/src/htscoremain.c @@ -42,15 +42,19 @@ Please visit our Website: http://www.httrack.com #include "htsdefines.h" #include "htsalias.h" #include "htswrap.h" +#include "htsmodules.h" + #include #if HTS_WIN #else #ifndef HTS_DO_NOT_USE_UID /* setuid */ #include +#ifdef HAVE_UNISTD_H #include #endif #endif +#endif extern int exit_xh; // sortir prématurément @@ -61,7 +65,7 @@ extern int IPV6_resolver; // Add a command in the argc/argv #define cmdl_add(token,argc,argv,buff,ptr) \ argv[argc]=(buff+ptr); \ - strcpy(argv[argc],token); \ + strcpybuff(argv[argc],token); \ ptr += (strlen(argv[argc])+2); \ argc++ @@ -73,15 +77,56 @@ extern int IPV6_resolver; argv[i]=argv[i-1];\ } \ argv[0]=(buff+ptr); \ - strcpy(argv[0],token); \ + strcpybuff(argv[0],token); \ ptr += (strlen(argv[0])+2); \ argc++ #define htsmain_free() do { if (url != NULL) { free(url); } } while(0) +#define ensureUrlCapacity(url, urlsize, size) do { \ + if (urlsize < size || url == NULL) { \ + urlsize = size; \ + if (url == NULL) { \ + url = (char*) malloct(urlsize); \ + if (url != NULL) url[0]='\0'; \ + } else { \ + url = (char*) realloct(url, urlsize); \ + } \ + if (url == NULL) { \ + HTS_PANIC_PRINTF("* memory exhausted"); \ + htsmain_free(); \ + return -1; \ + } \ + } \ +} while(0) + +static void set_wrappers(void) { +#if HTS_ANALYSTE + // custom wrappers + hts_htmlcheck_init = (t_hts_htmlcheck_init) htswrap_read("init"); + hts_htmlcheck_uninit = (t_hts_htmlcheck_uninit) htswrap_read("free"); + hts_htmlcheck_start = (t_hts_htmlcheck_start) htswrap_read("start"); + hts_htmlcheck_end = (t_hts_htmlcheck_end) htswrap_read("end"); + hts_htmlcheck_chopt = (t_hts_htmlcheck_chopt) htswrap_read("change-options"); + hts_htmlcheck = (t_hts_htmlcheck) htswrap_read("check-html"); + hts_htmlcheck_query = (t_hts_htmlcheck_query) htswrap_read("query"); + hts_htmlcheck_query2 = (t_hts_htmlcheck_query2) htswrap_read("query2"); + hts_htmlcheck_query3 = (t_hts_htmlcheck_query3) htswrap_read("query3"); + hts_htmlcheck_loop = (t_hts_htmlcheck_loop) htswrap_read("loop"); + hts_htmlcheck_check = (t_hts_htmlcheck_check) htswrap_read("check-link"); + hts_htmlcheck_pause = (t_hts_htmlcheck_pause) htswrap_read("pause"); + hts_htmlcheck_filesave = (t_hts_htmlcheck_filesave) htswrap_read("save-file"); + hts_htmlcheck_linkdetected = (t_hts_htmlcheck_linkdetected) htswrap_read("link-detected"); + hts_htmlcheck_xfrstatus = (t_hts_htmlcheck_xfrstatus) htswrap_read("transfer-status"); + hts_htmlcheck_savename = (t_hts_htmlcheck_savename) htswrap_read("save-name"); + hts_htmlcheck_sendhead = (t_hts_htmlcheck_sendhead) htswrap_read("send-header"); + hts_htmlcheck_receivehead = (t_hts_htmlcheck_receivehead) htswrap_read("receive-header"); +#endif +} + // Main, récupère les paramètres et appelle le robot #if HTS_ANALYSTE -int hts_main(int argc, char **argv) { +HTSEXT_API int hts_main(int argc, char **argv) { #else int main(int argc, char **argv) { #endif @@ -96,6 +141,7 @@ int main(int argc, char **argv) { int argv_url=-1; // ==0 : utiliser cache et doit.log char* argv_firsturl=NULL; // utilisé pour nommage par défaut char* url = NULL; // URLS séparées par un espace + int url_sz = 65535; //char url[65536]; // URLS séparées par un espace // the parametres httrackp httrack; @@ -113,33 +159,12 @@ int main(int argc, char **argv) { int switch_chroot=0; /* chroot ? */ #endif // - url = malloc(65536); - if (url == NULL) { - HTS_PANIC_PRINTF("* memory exhausted"); - htsmain_free(); - return -1; - } - url[0]='\0'; + ensureUrlCapacity(url, url_sz, 65536); // #if HTS_ANALYSTE // custom wrappers - hts_htmlcheck_init = (t_hts_htmlcheck_init) htswrap_read("init"); - hts_htmlcheck_uninit = (t_hts_htmlcheck_uninit) htswrap_read("free"); - hts_htmlcheck_start = (t_hts_htmlcheck_start) htswrap_read("start"); - hts_htmlcheck_end = (t_hts_htmlcheck_end) htswrap_read("end"); - hts_htmlcheck_chopt = (t_hts_htmlcheck_chopt) htswrap_read("change-options"); - hts_htmlcheck = (t_hts_htmlcheck) htswrap_read("check-html"); - hts_htmlcheck_query = (t_hts_htmlcheck_query) htswrap_read("query"); - hts_htmlcheck_query2 = (t_hts_htmlcheck_query2) htswrap_read("query2"); - hts_htmlcheck_query3 = (t_hts_htmlcheck_query3) htswrap_read("query3"); - hts_htmlcheck_loop = (t_hts_htmlcheck_loop) htswrap_read("loop"); - hts_htmlcheck_check = (t_hts_htmlcheck_check) htswrap_read("check-link"); - hts_htmlcheck_pause = (t_hts_htmlcheck_pause) htswrap_read("pause"); - hts_htmlcheck_filesave = (t_hts_htmlcheck_filesave) htswrap_read("save-file"); - hts_htmlcheck_linkdetected = (t_hts_htmlcheck_linkdetected) htswrap_read("link-detected"); - hts_htmlcheck_xfrstatus = (t_hts_htmlcheck_xfrstatus) htswrap_read("transfer-status"); - hts_htmlcheck_savename = (t_hts_htmlcheck_savename) htswrap_read("save-name"); + set_wrappers(); #endif // options par défaut @@ -157,7 +182,7 @@ int main(int argc, char **argv) { httrack.maxsite=-1; // taille max site (aucune) httrack.maxfile_nonhtml=-1; // taille max fichier non html httrack.maxfile_html=-1; // idem pour html - httrack.maxsoc=8; // nbre socket max + httrack.maxsoc=4; // nbre socket max httrack.fragment=-1; // pas de fragmentation httrack.nearlink=0; // ne pas prendre les liens non-html "adjacents" httrack.makeindex=1; // faire un index @@ -169,10 +194,12 @@ int main(int argc, char **argv) { httrack.cache=1; // cache prioritaire httrack.shell=0; // pas de shell par defaut httrack.proxy.active=0; // pas de proxy + strcpybuff(httrack.proxy.bindhost, ""); // bind default host httrack.user_agent_send=1; // envoyer un user-agent - strcpy(httrack.user_agent,"Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)"); + strcpybuff(httrack.user_agent,"Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)"); httrack.savename_83=0; // noms longs par défaut httrack.savename_type=0; // avec structure originale + httrack.mimehtml=0; // pas MIME-html httrack.parsejava=1; // parser classes httrack.hostcontrol=0; // PAS de control host pour timeout et traffic jammer httrack.retry=2; // 2 retry par défaut @@ -187,26 +214,29 @@ int main(int argc, char **argv) { httrack.accept_cookie=1; // gérer les cookies httrack.cookie=NULL; httrack.http10=0; // laisser http/1.1 + httrack.nokeepalive = 0; // pas keep-alive httrack.nocompression=0; // pas de compression httrack.tolerant=0; // ne pas accepter content-length incorrect httrack.parseall=1; // tout parser (tags inconnus, par exemple) httrack.norecatch=0; // ne pas reprendre les fichiers effacés par l'utilisateur httrack.verbosedisplay=0; // pas d'animation texte - strcpy(httrack.footer,HTS_DEFAULT_FOOTER); + httrack.sizehack=0; // size hack + httrack.urlhack=1; // url hack (normalizer) + strcpybuff(httrack.footer,HTS_DEFAULT_FOOTER); httrack.ftp_proxy=1; // proxy http pour ftp - strcpy(httrack.filelist,""); - strcpy(httrack.lang_iso,"en, *"); - strcpy(httrack.mimedefs,"\n"); // aucun filtre mime (\n IMPORTANT) + strcpybuff(httrack.filelist,""); + strcpybuff(httrack.lang_iso,"en, *"); + strcpybuff(httrack.mimedefs,"\n"); // aucun filtre mime (\n IMPORTANT) // httrack.log=stdout; httrack.errlog=stderr; httrack.flush=1; // flush sur les fichiers log - httrack.aff_progress=0; + //httrack.aff_progress=0; httrack.keyboard=0; // - strcpy(httrack.path_html,""); - strcpy(httrack.path_log,""); - strcpy(httrack.path_bin,""); + strcpybuff(httrack.path_html,""); + strcpybuff(httrack.path_log,""); + strcpybuff(httrack.path_bin,""); // httrack.maxlink=100000; // 100,000 liens max par défaut (400Kb) httrack.maxfilter=200; // 200 filtres max par défaut @@ -222,8 +252,10 @@ int main(int argc, char **argv) { httrack.dir_topindex=0; // do not built top index (yet) // httrack.state.stop=0; // stopper + httrack.state.exit_xh=0; // abort // _DEBUG_HEAD=0; // pas de debuggage en têtes + #if HTS_WIN #if HTS_ANALYSTE!=2 @@ -269,9 +301,9 @@ int main(int argc, char **argv) { lien_back r; char* path; FILE* fp; - strcpy(r.url_adr,argv[2]); - strcpy(r.url_fil,argv[3]); - strcpy(r.url_sav,argv[4]); + strcpybuff(r.url_adr,argv[2]); + strcpybuff(r.url_fil,argv[3]); + strcpybuff(r.url_sav,argv[4]); path=argv[5]; r.status=1000; run_launch_ftp(&r); @@ -298,11 +330,11 @@ int main(int argc, char **argv) { char* a; if ((a=strrchr(path,'/'))) { httrack.path_bin[0]='\0'; - strncat(httrack.path_bin,argv[0],(int) a - (int) path); + strncatbuff(httrack.path_bin,argv[0],(int) a - (int) path); } } #else - strcpy(httrack.path_bin,HTS_HTTRACKDIR); + strcpybuff(httrack.path_bin, HTS_HTTRACKDIR); #endif @@ -316,7 +348,7 @@ int main(int argc, char **argv) { while( (a=strchr(argv[na],9)) ) *a=' '; /* equivalent to "empty parameter" */ if ((strcmp(argv[na],HTS_NOPARAM)==0) || (strcmp(argv[na],HTS_NOPARAM2)==0)) // (none) - strcpy(argv[na],"\"\""); + strcpybuff(argv[na],"\"\""); if (strncmp(argv[na],"-&",2)==0) argv[na][1]='%'; } @@ -402,6 +434,11 @@ int main(int argc, char **argv) { argv_url=-1; /* forcer */ httrack.quiet=1; } + } else if (strcmp(tmp_argv[0] + 2,"quiet") == 0) { + httrack.quiet=1; // ne pas poser de questions! (nohup par exemple) + } else if (strcmp(tmp_argv[0] + 2,"continue") == 0) { + argv_url=-1; /* forcer */ + httrack.quiet=1; } } } @@ -436,7 +473,7 @@ int main(int argc, char **argv) { FILE* fp; int x_argc2; - //strcpy(x_argvblk2,"httrack "); + //strcpybuff(x_argvblk2,"httrack "); fp=fopen("config","rb"); if (fp) { linput(fp,x_argvblk2+strlen(x_argvblk2),32000); @@ -482,7 +519,7 @@ int main(int argc, char **argv) { if (argv[na][0]=='"') { char tempo[HTS_CDLMAXSIZE]; - strcpy(tempo,argv[na]+1); + strcpybuff(tempo,argv[na]+1); if (tempo[strlen(tempo)-1]!='"') { char s[HTS_CDLMAXSIZE]; sprintf(s,"Missing quote in %s",argv[na]); @@ -491,7 +528,7 @@ int main(int argc, char **argv) { return -1; } tempo[strlen(tempo)-1]='\0'; - strcpy(argv[na],tempo); + strcpybuff(argv[na],tempo); } if (cmdl_opt(argv[na])) { // option @@ -509,34 +546,34 @@ int main(int argc, char **argv) { } else { char* a; na++; - strcpy(httrack.path_html,""); - strcpy(httrack.path_log,""); + strcpybuff(httrack.path_html,""); + strcpybuff(httrack.path_log,""); a=strstr(argv[na],"\",\""); // rechercher en premier, au cas ou -O "c:\pipo,test","c:\test" if (!a) a=strchr(argv[na],','); // 2 path else a++; // position , if (a) { - strncat(httrack.path_html,argv[na],(int) (a-argv[na])); - strcat(httrack.path_log,a+1); + strncatbuff(httrack.path_html,argv[na],(int) (a-argv[na])); + strcatbuff(httrack.path_log,a+1); } else { - strcpy(httrack.path_log,argv[na]); - strcpy(httrack.path_html,argv[na]); + strcpybuff(httrack.path_log,argv[na]); + strcpybuff(httrack.path_html,argv[na]); } // Eliminer les cas comme -O "C:\mirror\" if (httrack.path_log[0]=='"') { // Guillemets char tmp[256]; - strcpy(tmp,httrack.path_log+1); + strcpybuff(tmp,httrack.path_log+1); if (tmp[strlen(tmp)-1]=='"') tmp[strlen(tmp)-1]='\0'; - strcpy(httrack.path_log,tmp); + strcpybuff(httrack.path_log,tmp); } if (httrack.path_html[0]=='"') { char tmp[256]; - strcpy(tmp,httrack.path_html+1); + strcpybuff(tmp,httrack.path_html+1); if (tmp[strlen(tmp)-1]=='"') tmp[strlen(tmp)-1]='\0'; - strcpy(httrack.path_html,tmp); + strcpybuff(httrack.path_html,tmp); } check_path(httrack.path_log,argv_firsturl); if (check_path(httrack.path_html,argv_firsturl)) { @@ -583,8 +620,6 @@ int main(int argc, char **argv) { } // traiter -O - - /* load doit.log and insert in current command line */ if ( fexist(fconcat(httrack.path_log,"hts-cache/doit.log")) && (argv_url<=0) ) { FILE* fp=fopen(fconcat(httrack.path_log,"hts-cache/doit.log"),"rb"); @@ -611,8 +646,21 @@ int main(int argc, char **argv) { /* Insert parameters BUT so that they can be in the same order */ if (lastp) { if (strnotempty(lastp)) { + //char* argv0; + //int len; insert_after_argc=argc-insert_after; + //argv0 = (argv+insert_after)[0]; cmdl_ins(lastp,insert_after_argc,(argv+insert_after),x_argvblk,x_ptr); + /* + DONE IN 'next_token' + len = strlen(argv0); + if (len >= 2 && argv0[0]=='\"' && argv0[len-1]=='\"') { // "foo" + char tempo[1024]; + tempo[0] = '\0'; + strncatbuff(tempo, argv0+1, len-2); + strcpybuff(argv0, tempo); + } + */ argc=insert_after_argc+insert_after; insert_after++; } @@ -668,7 +716,7 @@ int main(int argc, char **argv) { if (argv[i][0]=='-') { if (argv[i][1]=='-') { // --xxx if ((strfield2(argv[i]+2,"clean")) || (strfield2(argv[i]+2,"tide"))) { // nettoyer - strcpy(argv[i]+1,""); + strcpybuff(argv[i]+1,""); if (fexist(fconcat(httrack.path_log,"hts-log.txt"))) remove(fconcat(httrack.path_log,"hts-log.txt")); if (fexist(fconcat(httrack.path_log,"hts-err.txt"))) @@ -699,7 +747,7 @@ int main(int argc, char **argv) { // } else if (strfield2(argv[i]+2,"catchurl")) { // capture d'URL via proxy temporaire! argv_url=1; // forcer a passer les parametres - strcpy(argv[i]+1,"#P"); + strcpybuff(argv[i]+1,"#P"); // } else if (strfield2(argv[i]+2,"updatehttrack")) { #ifdef _WIN32 @@ -714,10 +762,10 @@ int main(int argc, char **argv) { char *args[8]; printf("Cheking for updates...\n"); - strcpy(_args[0],argv[0]); - strcpy(_args[1],"--get"); + strcpybuff(_args[0],argv[0]); + strcpybuff(_args[1],"--get"); sprintf(_args[2],HTS_UPDATE_WEBSITE,HTS_PLATFORM,""); - strcpy(_args[3],"--quickinfo"); + strcpybuff(_args[3],"--quickinfo"); args[0]=_args[0]; args[1]=_args[1]; args[2]=_args[2]; @@ -781,7 +829,7 @@ int main(int argc, char **argv) { FILE* fp; int x_argc; - //strcpy(x_argvblk,"httrack "); + //strcpybuff(x_argvblk,"httrack "); fp=fopen(fconcat(httrack.path_log,"hts-cache/doit.log"),"rb"); if (fp) { linput(fp,x_argvblk+strlen(x_argvblk),8192); @@ -892,6 +940,10 @@ int main(int argc, char **argv) { } } else { // aucune URL définie et pas de cache + if (argc > 1 && strcmp(argv[0], "-#h") == 0) { + printf("HTTrack version "HTTRACK_VERSION"%s\n", WHAT_is_available); + exit(0); + } #if HTS_ANALYSTE!=2 if (httrack.quiet) { #endif @@ -976,7 +1028,7 @@ int main(int argc, char **argv) { if (argv[na][0]=='"') { char tempo[HTS_CDLMAXSIZE]; - strcpy(tempo,argv[na]+1); + strcpybuff(tempo,argv[na]+1); if (tempo[strlen(tempo)-1]!='"') { char s[HTS_CDLMAXSIZE]; sprintf(s,"Missing quote in %s",argv[na]); @@ -985,7 +1037,7 @@ int main(int argc, char **argv) { return -1; } tempo[strlen(tempo)-1]='\0'; - strcpy(argv[na],tempo); + strcpybuff(argv[na],tempo); } if (cmdl_opt(argv[na])) { // option @@ -1009,6 +1061,7 @@ int main(int argc, char **argv) { httrack.savename_type=1003; // mettre dans le répertoire courant httrack.depth=0; // ne pas explorer la page httrack.accept_cookie=0; // pas de cookies + httrack.robots=0; // pas de robots break; case 'w': httrack.wizard=2; // wizard 'soft' (ne pose pas de questions) httrack.travel=0; @@ -1078,7 +1131,7 @@ int main(int argc, char **argv) { sscanf(com+1,"%d",&httrack.maxsoc); while(isdigit((unsigned char)*(com+1))) com++; httrack.maxsoc=max(httrack.maxsoc,1); // FORCER A 1 - } else httrack.maxsoc=8; + } else httrack.maxsoc=4; break; // @@ -1122,7 +1175,7 @@ int main(int argc, char **argv) { htsmain_free(); return -1; } - strcpy(httrack.savename_userdef,argv[na]); + strcpybuff(httrack.savename_userdef,argv[na]); if (strnotempty(httrack.savename_userdef)) httrack.savename_type = -1; // userdef! else @@ -1175,6 +1228,8 @@ int main(int argc, char **argv) { case '&': case '%': { // deuxième jeu d'options com++; switch(*com) { + case 'M': httrack.mimehtml = 1; if (*(com+1)=='0') { httrack.mimehtml=0; com++; } break; + case 'k': httrack.nokeepalive = 0; if (*(com+1)=='0') { httrack.nokeepalive = 1; com++; } break; case 'x': httrack.passprivacy=1; if (*(com+1)=='0') { httrack.passprivacy=0; com++; } break; // No passwords in html files case 'q': httrack.includequery=1; if (*(com+1)=='0') { httrack.includequery=0; com++; } break; // No passwords in html files case 'I': httrack.kindex=1; if (isdigit((unsigned char)*(com+1))) { sscanf(com+1,"%d",&httrack.kindex); while(isdigit((unsigned char)*(com+1))) com++; } @@ -1188,7 +1243,9 @@ int main(int argc, char **argv) { case 'P': httrack.parseall=1; if (*(com+1)=='0') { httrack.parseall=0; com++; } break; // tout parser case 'n': httrack.norecatch=1; if (*(com+1)=='0') { httrack.norecatch=0; com++; } break; // ne pas reprendre fichiers effacés localement case 's': httrack.sizehack=1; if (*(com+1)=='0') { httrack.sizehack=0; com++; } break; // hack sur content-length + case 'u': httrack.urlhack=1; if (*(com+1)=='0') { httrack.urlhack=0; com++; } break; // url hack case 'v': httrack.verbosedisplay=2; if (isdigit((unsigned char)*(com+1))) { sscanf(com+1,"%d",&httrack.verbosedisplay); while(isdigit((unsigned char)*(com+1))) com++; } break; + case 'i': httrack.dir_topindex = 1; if (*(com+1)=='0') { httrack.dir_topindex=0; com++; } break; // preserve: no footer, original links case 'p': @@ -1208,7 +1265,53 @@ int main(int argc, char **argv) { htsmain_free(); return -1; } - strcpy(httrack.filelist,argv[na]); + strcpybuff(httrack.filelist,argv[na]); + } + break; + case 'b': // bind + if ((na+1>=argc) || (argv[na+1][0]=='-')) { + HTS_PANIC_PRINTF("Option %b needs to be followed by a blank space, and a local hostname"); + printf("Example: -%%b \"ip4.localhost\"\n"); + htsmain_free(); + return -1; + } else{ + na++; + if (strlen(argv[na])>=254) { + HTS_PANIC_PRINTF("Hostname string too long"); + htsmain_free(); + return -1; + } + strcpybuff(httrack.proxy.bindhost,argv[na]); + } + break; + case 'S': // Scan Rules list + if ((na+1>=argc) || (argv[na+1][0]=='-')) { + HTS_PANIC_PRINTF("Option %S needs to be followed by a blank space, and a text filename"); + printf("Example: -%%S \"myfilterlist.txt\"\n"); + htsmain_free(); + return -1; + } else{ + INTsys fz; + na++; + fz = fsize(argv[na]); + if (fz < 0) { + HTS_PANIC_PRINTF("File url list could not be opened"); + htsmain_free(); + return -1; + } else { + FILE* fp = fopen(argv[na], "rb"); + if (fp != NULL) { + int cl = (int) strlen(url); + ensureUrlCapacity(url, url_sz, cl + fz + 8192); + if ((INTsys)fread(url + cl, 1, fz, fp) != fz) { + HTS_PANIC_PRINTF("File url list could not be read"); + htsmain_free(); + return -1; + } + fclose(fp); + *(url + cl + fz) = '\0'; + } + } } break; case 'A': // assume @@ -1227,12 +1330,12 @@ int main(int argc, char **argv) { } // --assume standard if (strcmp(argv[na],"standard") == 0) { - strcpy(httrack.mimedefs,"\n"); - strcat(httrack.mimedefs,HTS_ASSUME_STANDARD); - strcat(httrack.mimedefs,"\n"); + strcpybuff(httrack.mimedefs,"\n"); + strcatbuff(httrack.mimedefs,HTS_ASSUME_STANDARD); + strcatbuff(httrack.mimedefs,"\n"); } else { - strcat(httrack.mimedefs,argv[na]); - strcat(httrack.mimedefs,"\n"); + strcatbuff(httrack.mimedefs,argv[na]); + strcatbuff(httrack.mimedefs,"\n"); } a=httrack.mimedefs; while(*a) { @@ -1259,7 +1362,7 @@ int main(int argc, char **argv) { htsmain_free(); return -1; } - strcpy(httrack.lang_iso,argv[na]); + strcpybuff(httrack.lang_iso,argv[na]); } break; // @@ -1276,7 +1379,7 @@ int main(int argc, char **argv) { htsmain_free(); return -1; } - strcpy(httrack.footer,argv[na]); + strcpybuff(httrack.footer,argv[na]); } break; case 'H': // debug headers @@ -1316,6 +1419,81 @@ int main(int argc, char **argv) { } break; + case 'W': // Wrapper callback + // --wrapper check-link=obj.so:check_link + if ((na+1>=argc) || (argv[na+1][0]=='-')) { + HTS_PANIC_PRINTF("Option %W needs to be followed by a blank space, and a =: field"); + printf("Example: -%%W check-link=checklink.so:check\n"); + htsmain_free(); + return -1; + } else { + char callbackname[128]; + char* a = argv[na + 1]; + char* pos = strchr(a, '='); + na++; + if (pos != NULL && (pos - a) > 0 && (pos - a + 2) < sizeof(callbackname)) { + char* posf = strchr(pos + 1, ':'); + char filename[1024]; + callbackname[0] = '\0'; + strncatbuff(callbackname, a, pos - a); + pos++; + if (posf != NULL && (posf - pos) > 0 && (posf - pos + 2) < sizeof(filename)) { + void* userfunction; + filename[0] = '\0'; + strncatbuff(filename, pos, posf - pos); + posf++; + userfunction = getFunctionPtr(filename, posf); + if (userfunction != NULL) { + if ((void*)htswrap_read(callbackname) != NULL) { + if (htswrap_add(callbackname, userfunction)) { + if (!httrack.quiet) { + set_wrappers(); + if ((void*)htswrap_read(callbackname) == userfunction) { + printf("successfully plugged [%s -> %s:%s]\n", callbackname, posf, filename); + } else { + char tmp[1024 * 2]; + sprintf(tmp, "option %%W : unable to (re)plug the function %s from the file %s for the callback %s", posf, filename, callbackname); + HTS_PANIC_PRINTF(tmp); + htsmain_free(); + return -1; + } + } + } else { + char tmp[1024 * 2]; + sprintf(tmp, "option %%W : unable to plug the function %s from the file %s for the callback %s", posf, filename, callbackname); + HTS_PANIC_PRINTF(tmp); + htsmain_free(); + return -1; + } + } else { + char tmp[1024 * 2]; + sprintf(tmp, "option %%W : unknown or undefined callback %s", callbackname); + HTS_PANIC_PRINTF(tmp); + htsmain_free(); + return -1; + } + } else { + char tmp[1024 * 2]; + sprintf(tmp, "option %%W : unable to load the function %s in the file %s for the callback %s", posf, filename, callbackname); + HTS_PANIC_PRINTF(tmp); + htsmain_free(); + return -1; + } + } else { + HTS_PANIC_PRINTF("Syntax error in option %W : filename error : this function needs to be followed by a blank space, and a =: field"); + printf("Example: -%%W check-link=checklink.so:check\n"); + htsmain_free(); + return -1; + } + } else { + HTS_PANIC_PRINTF("Syntax error in option %W : this function needs to be followed by a blank space, and a =: field"); + printf("Example: -%%W check-link=checklink.so:check\n"); + htsmain_free(); + return -1; + } + } + break; + default: { char s[HTS_CDLMAXSIZE]; sprintf(s,"invalid option %%%c\n",*com); @@ -1376,17 +1554,185 @@ int main(int argc, char **argv) { } } break; - + // - case '#': { // non documenté (appel de l'interface) + case '#': { // non documenté com++; switch(*com) { + case 'C': // list cache files : httrack -#C '*spid*.gif' will attempt to find the matching file + { + int hasFilter = 0; + int found = 0; + char* filter=NULL; + cache_back cache; + inthash cache_hashtable=inthash_new(HTS_HASH_SIZE); + int backupXFR = htsMemoryFastXfr; + int sendb = 0; + if (isdigit((unsigned char)*(com+1))) { + sscanf(com+1,"%d",&sendb); + while(isdigit((unsigned char)*(com+1))) com++; + } else sendb=0; + if (!((na+1>=argc) || (argv[na+1][0]=='-'))) { + na++; + hasFilter = 1; + filter=argv[na]; + } + htsMemoryFastXfr = 1; /* fast load */ + + memset(&cache, 0, sizeof(cache_back)); + cache.type=1; // cache? + cache.log=stdout; // log? + cache.errlog=stderr; // err log? + cache.ptr_ant=cache.ptr_last=0; // pointeur pour anticiper + cache.hashtable=(void*)cache_hashtable; /* copy backcache hash */ + cache.ro = 1; /* read only */ + if (cache.hashtable) { + char adr[HTS_URLMAXSIZE*2]; + char fil[HTS_URLMAXSIZE*2]; + char url[HTS_URLMAXSIZE*2]; + char linepos[256]; + int pos; + char* cacheNdx = readfile(fconcat(httrack.path_log,"hts-cache/new.ndx")); + cache_init(&cache,&httrack); /* load cache */ + if (cacheNdx != NULL) { + char firstline[256]; + char* a = cacheNdx; + a+=cache_brstr(a, firstline); + a+=cache_brstr(a, firstline); + while ( a != NULL ) { + a=strchr(a+1,'\n'); /* start of line */ + if (a) { + htsblk r; + /* */ + a++; + /* read "host/file" */ + a+=binput(a,adr,HTS_URLMAXSIZE); + a+=binput(a,fil,HTS_URLMAXSIZE); + url[0]='\0'; + if (!link_has_authority(adr)) + strcatbuff(url, "http://"); + strcatbuff(url, adr); + strcatbuff(url, fil); + /* read position */ + a+=binput(a,linepos,200); + sscanf(linepos,"%d",&pos); + if (!hasFilter + || + (strjoker(url, filter, NULL, NULL) != NULL) + ) { + r = cache_read(&httrack, &cache, adr, fil, "", NULL); // lire entrée cache + data + if (r.statuscode != -1) { // No errors + found++; + if (!hasFilter) { + fprintf(stdout, "%s%s%s\r\n", + (link_has_authority(adr)) ? "" : "http://", + adr, fil); + } else { + char msg[256], cdate[256]; + char sav[HTS_URLMAXSIZE*2]; + infostatuscode(msg, r.statuscode); + time_gmt_rfc822(cdate); + + fprintf(stdout, "HTTP/1.1 %d %s\r\n", + r.statuscode, + r.msg[0] ? r.msg : msg + ); + fprintf(stdout, "X-Host: %s\r\n", adr); + fprintf(stdout, "X-File: %s\r\n", fil); + fprintf(stdout, "X-URL: %s%s%s\r\n", + (link_has_authority(adr)) ? "" : "http://", + adr, fil); + if (url_savename(adr, fil, sav, NULL, NULL, NULL, NULL, + &httrack, NULL, 0, NULL, 0, &cache, NULL, 0, 0)!=-1) { + if (fexist(sav)) { + fprintf(stdout, "Content-location: %s\r\n", sav); + } + } + fprintf(stdout, "Date: %s\r\n", cdate); + fprintf(stdout, "Server: HTTrack Website Copier/"HTTRACK_VERSION"\r\n"); + if (r.lastmodified[0]) { + fprintf(stdout, "Last-Modified: %s\r\n", r.lastmodified); + } + if (r.etag[0]) { + fprintf(stdout, "Etag: %s\r\n", r.etag); + } + if (r.totalsize >= 0) { + fprintf(stdout, "Content-Length: "LLintP"\r\n", r.totalsize); + } + fprintf(stdout, "X-Content-Length: "LLintP"\r\n", (r.size >= 0) ? r.size : (-r.size) ); + if (r.contenttype >= 0) { + fprintf(stdout, "Content-Type: %s\r\n", r.contenttype); + } + if (r.cdispo[0]) { + fprintf(stdout, "Content-Disposition: %s\r\n", r.cdispo); + } + if (r.contentencoding[0]) { + fprintf(stdout, "Content-Encoding: %s\r\n", r.contentencoding); + } + if (r.is_chunk) { + fprintf(stdout, "Transfer-Encoding: chunked\r\n"); + } +#if HTS_USEOPENSSL + if (r.ssl) { + fprintf(stdout, "X-SSL: yes\r\n"); + } +#endif + if (r.is_write) { + fprintf(stdout, "X-Direct-To-Disk: yes\r\n"); + } + if (r.compressed) { + fprintf(stdout, "X-Compressed: yes\r\n"); + } + if (r.notmodified) { + fprintf(stdout, "X-Not-Modified: yes\r\n"); + } + if (r.is_chunk) { + fprintf(stdout, "X-Chunked: yes\r\n"); + } + fprintf(stdout, "\r\n"); + /* Send the body */ + if (sendb && r.adr) { + fprintf(stdout, "%s\r\n", r.adr); + } + } + } + } + } + } + freet(cacheNdx); + } + } + if (!found) { + fprintf(stderr, "No cache entry found%s%s%s\r\n", + (hasFilter)?" for '":"", + (hasFilter)?filter:"", + (hasFilter)?"'":"" + ); + } + htsMemoryFastXfr = backupXFR; + return 0; + } + break; + case 'X': +#ifndef STRDEBUG + fprintf(stderr, "warning: no string debugging support built, option has no effect\n"); +#endif + htsMemoryFastXfr=1; + if (*(com+1)=='0') { htsMemoryFastXfr=0; com++; } + break; + case '~': /* internal lib test */ + { + char thisIsATestYouShouldSeeAnError[12]; + strcpybuff(thisIsATestYouShouldSeeAnError, "0123456789012345678901234567890123456789"); + return 0; + } + break; case 'f': httrack.flush=1; break; case 'h': - printf("HTTrack version "HTTRACK_VERSION"\n"); - exit(1); + printf("HTTrack version "HTTRACK_VERSION"%s\n", WHAT_is_available); + return 0; break; - case 'p': httrack.aff_progress=1; break; + case 'p': /* httrack.aff_progress=1; deprecated */ break; case 'S': httrack.shell=1; break; // stdin sur un shell case 'K': httrack.keyboard=1; break; // vérifier stdin // @@ -1458,10 +1804,10 @@ int main(int argc, char **argv) { if (*a == ':') { // un port est présent, :port sscanf(a+1,"%d",&httrack.proxy.port); httrack.proxy.name[0]='\0'; - strncat(httrack.proxy.name,argv[na],(int) (a - argv[na])); + strncatbuff(httrack.proxy.name,argv[na],(int) (a - argv[na])); } else { // httrack.proxy.port=8080; - strcpy(httrack.proxy.name,argv[na]); + strcpybuff(httrack.proxy.name,argv[na]); } } break; @@ -1478,7 +1824,7 @@ int main(int argc, char **argv) { htsmain_free(); return -1; } - strcpy(httrack.user_agent,argv[na]); + strcpybuff(httrack.user_agent,argv[na]); if (strnotempty(httrack.user_agent)) httrack.user_agent_send=1; else @@ -1499,7 +1845,7 @@ int main(int argc, char **argv) { htsmain_free(); return -1; } - strcpy(httrack.sys_com,argv[na]); + strcpybuff(httrack.sys_com,argv[na]); if (strnotempty(httrack.sys_com)) httrack.sys_com_exec=1; else @@ -1521,10 +1867,10 @@ int main(int argc, char **argv) { } else { // URL/filters char tempo[1024]; - if (strnotempty(url)) strcat(url," "); // espace de séparation - strcpy(tempo,unescape_http_unharm(argv[na],1)); + if (strnotempty(url)) strcatbuff(url," "); // espace de séparation + strcpybuff(tempo,unescape_http_unharm(argv[na],1)); escape_spc_url(tempo); - strcat(url,tempo); + strcatbuff(url,tempo); } // if argv=- etc. } // for @@ -1563,28 +1909,28 @@ int main(int argc, char **argv) { rpath[0]='\0'; if (c != httrack.path_html) { if (httrack.path_html[0]!='/') - strcat(rpath,"./"); - strncat(rpath,httrack.path_html,(int) (c - httrack.path_html)); + strcatbuff(rpath,"./"); + strncatbuff(rpath,httrack.path_html,(int) (c - httrack.path_html)); } { char tmp[1024]; - strcpy(tmp,c); strcpy(httrack.path_html,tmp); - strcpy(tmp,d); strcpy(httrack.path_log,tmp); + strcpybuff(tmp,c); strcpybuff(httrack.path_html,tmp); + strcpybuff(tmp,d); strcpybuff(httrack.path_log,tmp); } } else { - strcpy(rpath,"./"); - strcpy(httrack.path_html,"/"); - strcpy(httrack.path_log,"/"); + strcpybuff(rpath,"./"); + strcpybuff(httrack.path_html,"/"); + strcpybuff(httrack.path_log,"/"); } if (rpath[0]) { printf("[changing root path to %s (path_data=%s,path_log=%s)]\n",rpath,httrack.path_html,httrack.path_log); if (chroot(rpath)) { printf("ERROR! Can not chroot to %s!\n",rpath); - exit(0); + return -1; } if (chdir("/")) { /* new root */ printf("ERROR! Can not chdir to %s!\n",rpath); - exit(0); + return -1; } } else printf("WARNING: chroot not possible with these paths\n"); @@ -1668,6 +2014,9 @@ int main(int argc, char **argv) { if (fexist(fconcat(httrack.path_log,"hts-err.txt"))) remove(fconcat(httrack.path_log,"hts-err.txt")); + /* Check FS directory structure created */ + structcheck(httrack.path_log); + httrack.log=fopen(fconcat(httrack.path_log,"hts-log.txt"),"w"); if (httrack_logmode==2) httrack.errlog=fopen(fconcat(httrack.path_log,"hts-err.txt"),"w"); @@ -1705,7 +2054,7 @@ int main(int argc, char **argv) { if (fp) { fprintf(fp,"What's in this folder?"LF); fprintf(fp,""LF); - fprintf(fp,"This folder (hts-cache) has been generated by WinHTTrack "HTTRACK_VERSION""LF); + fprintf(fp,"This folder (hts-cache) has been generated by WinHTTrack "HTTRACK_VERSION"%s"LF, WHAT_is_available); fprintf(fp,"and is used for updating this website."LF); fprintf(fp,"(The HTML website structure is stored here to allow fast updates)"LF""LF); fprintf(fp,"DO NOT delete this folder unless you do not want to update the mirror in the future!!"LF); @@ -1732,8 +2081,8 @@ int main(int argc, char **argv) { }*/ // vérifier existence de la structure - structcheck(httrack.path_html); - structcheck(httrack.path_log); + structcheck(fconcat(httrack.path_html, "/")); + structcheck(fconcat(httrack.path_log, "/")); // reprise/update if (httrack.cache) { @@ -1799,7 +2148,9 @@ int main(int argc, char **argv) { // fichier log if (httrack.log) { int i; - fprintf(httrack.log,"HTTrack"HTTRACK_VERSION" launched on %s at %s"LF,t,url); + fprintf(httrack.log,"HTTrack"HTTRACK_VERSION"%s launched on %s at %s"LF, + WHAT_is_available, + t, url); fprintf(httrack.log,"("); for(i=0;iurl_adr); - strcpy(_args[3],back->url_fil); - strcpy(_args[4],back->url_sav); - strcpy(_args[5],path); - //strcpy(_args[6],""); + strcpybuff(_args[0],exec); + strcpybuff(_args[1],"-#R"); + strcpybuff(_args[2],back->url_adr); + strcpybuff(_args[3],back->url_fil); + strcpybuff(_args[4],back->url_sav); + strcpybuff(_args[5],path); + //strcpybuff(_args[6],""); args[0]=_args[0]; args[1]=_args[1]; args[2]=_args[2]; @@ -234,7 +234,7 @@ int run_launch_ftp(lien_back* back) { timeout=300; // effacer - strcpy(back->r.msg,""); + strcpybuff(back->r.msg,""); back->r.statuscode=0; back->r.size=0; @@ -265,10 +265,19 @@ int run_launch_ftp(lien_back* back) { // Calculer RETR { char* a; +#if 0 a=back->url_fil + strlen(back->url_fil)-1; while( (a > back->url_fil) && (*a!='/')) a--; - if (*a == '/') { // ok repéré + if (*a != '/') { + a = NULL; + } +#else + a = back->url_fil; +#endif + if (a != NULL && *a != '\0') { +#if 0 a++; // sauter / +#endif ftp_filename=a; if (strnotempty(a)) { char* ua=unescape_http(a); @@ -288,7 +297,7 @@ int run_launch_ftp(lien_back* back) { sprintf(line_retr,"LIST -A"); } } else { - strcpy(back->r.msg,"Unexpected PORT error"); + strcpybuff(back->r.msg,"Unexpected PORT error"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } @@ -314,15 +323,15 @@ int run_launch_ftp(lien_back* back) { a=strchr(adr,':'); // port if (a) { sscanf(a+1,"%d",&port); - strncat(_adr,adr,(int) (a - adr)); + strncatbuff(_adr,adr,(int) (a - adr)); } else - strcpy(_adr,adr); + strcpybuff(_adr,adr); // récupérer adresse résolue - strcpy(back->info,"host name"); + strcpybuff(back->info,"host name"); hp = hts_gethostbyname(_adr, &fullhostent_buffer); if (hp == NULL) { - strcpy(back->r.msg,"Unable to get server's address"); + strcpybuff(back->r.msg,"Unable to get server's address"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-5; _HALT_FTP @@ -339,7 +348,7 @@ int run_launch_ftp(lien_back* back) { // créer ("attachement") une socket (point d'accès) internet,en flot soc_ctl=socket(SOCaddr_sinfamily(server), SOCK_STREAM, 0); if (soc_ctl==INVALID_SOCKET) { - strcpy(back->r.msg,"Unable to create a socket"); + strcpybuff(back->r.msg,"Unable to create a socket"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; _HALT_FTP @@ -350,14 +359,14 @@ int run_launch_ftp(lien_back* back) { // server.sin_port = htons((unsigned short int) port); // connexion (bloquante, on est en thread) - strcpy(back->info,"connect"); + strcpybuff(back->info,"connect"); #if HTS_WIN if (connect(soc_ctl, (const struct sockaddr FAR *)&server, server_size) != 0) { #else if (connect(soc_ctl, (struct sockaddr *)&server, server_size) == -1) { #endif - strcpy(back->r.msg,"Unable to connect to the server"); + strcpybuff(back->r.msg,"Unable to connect to the server"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; _HALT_FTP @@ -378,19 +387,20 @@ int run_launch_ftp(lien_back* back) { _CHECK_HALT_FTP; if (line[0]=='2') { // ok, connecté - strcpy(back->info,"login: user"); + strcpybuff(back->info,"login: user"); sprintf(line,"USER %s",user); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); _CHECK_HALT_FTP; if ((line[0]=='3') || (line[0]=='2')) { // --PASS-- - strcpy(back->info,"login: pass"); + strcpybuff(back->info,"login: pass"); sprintf(line,"PASS %s",pass); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); _CHECK_HALT_FTP; if (line[0]=='2') { // ok +#if 0 // --CWD-- char* a; a=back->url_fil + strlen(back->url_fil)-1; @@ -398,10 +408,10 @@ int run_launch_ftp(lien_back* back) { if (*a == '/') { // ok repéré char target[1024]; target[0]='\0'; - strncat(target,back->url_fil,(int) (a - back->url_fil)); + strncatbuff(target,back->url_fil,(int) (a - back->url_fil)); if (strnotempty(target)==0) - strcat(target,"/"); - strcpy(back->info,"cwd"); + strcatbuff(target,"/"); + strcpybuff(back->info,"cwd"); sprintf(line,"CWD %s",target); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); @@ -413,7 +423,7 @@ int run_launch_ftp(lien_back* back) { if (line[0]=='2') { // ok.. } else { - strcpy(back->r.msg,"TYPE I error"); + strcpybuff(back->r.msg,"TYPE I error"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } @@ -423,10 +433,11 @@ int run_launch_ftp(lien_back* back) { back->r.statuscode=-1; } // sinon on est prêts } else { - strcpy(back->r.msg,"Unexpected ftp error"); + strcpybuff(back->r.msg,"Unexpected ftp error"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } +#endif } else { sprintf(back->r.msg,"Bad password: %s",linejmp(line)); @@ -453,7 +464,7 @@ int run_launch_ftp(lien_back* back) { // #if FTP_PASV if (SOCaddr_getproto(server, server_size) == '1') { - strcpy(back->info,"pasv"); + strcpybuff(back->info,"pasv"); sprintf(line,"PASV"); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); @@ -475,7 +486,7 @@ int run_launch_ftp(lien_back* back) { c=a; while( (c=strchr(c,',')) ) *c='.'; // remplacer , par . if (b) *b='\0'; // - strcpy(adr_ip,a); // copier adresse ip + strcpybuff(adr_ip,a); // copier adresse ip // if (b) { a=b+1; // début du port @@ -506,7 +517,7 @@ int run_launch_ftp(lien_back* back) { /* * try epsv (ipv6) * */ - strcpy(back->info,"pasv"); + strcpybuff(back->info,"pasv"); sprintf(line,"EPSV"); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); @@ -564,14 +575,23 @@ int run_launch_ftp(lien_back* back) { } // SIZE? - strcpy(back->info,"size"); + strcpybuff(back->info,"size"); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); _CHECK_HALT_FTP; if (line[0]=='2') { // SIZE compris, ALORS tester REST (sinon pas tester: cf probleme des txt.gz decompresses a la volee) + char* szstr = strchr(line, ' '); + if (szstr) { + LLint size = 0; + szstr++; + if (sscanf(szstr, LLintP, &size) == 1) { + back->r.totalsize = size; + } + } + // REST? if (fexist(back->url_sav) && (transfer_list==0)) { - strcpy(back->info,"rest"); + strcpybuff(back->info,"rest"); sprintf(line,"REST "LLintP,(LLint)fsize(back->url_sav)); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); @@ -600,7 +620,7 @@ int run_launch_ftp(lien_back* back) { memset(&server, 0, sizeof(server)); // infos - strcpy(back->info,"resolv"); + strcpybuff(back->info,"resolv"); // résoudre if (adr_ip[0]) { @@ -616,7 +636,7 @@ int run_launch_ftp(lien_back* back) { } // infos - strcpy(back->info,"cnxdata"); + strcpybuff(back->info,"cnxdata"); #if FTP_DEBUG printf("Data: Connecting to %s:%d...\n", adr_ip, port_pasv); #endif @@ -632,8 +652,8 @@ int run_launch_ftp(lien_back* back) { #else if (connect(soc_dat, (struct sockaddr *)&server, server_size) != -1) { #endif - strcpy(back->info,"retr"); - strcpy(line,line_retr); + strcpybuff(back->info,"retr"); + strcpybuff(line,line_retr); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); _CHECK_HALT_FTP; @@ -652,12 +672,12 @@ int run_launch_ftp(lien_back* back) { #endif deletesoc(soc_dat); soc_dat=INVALID_SOCKET; // - strcpy(back->r.msg,"Unable to connect"); + strcpybuff(back->r.msg,"Unable to connect"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } // sinon on est prêts } else { - strcpy(back->r.msg,"Unable to create a socket"); + strcpybuff(back->r.msg,"Unable to create a socket"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } // sinon on est prêts @@ -673,15 +693,15 @@ int run_launch_ftp(lien_back* back) { } // sinon on est prêts #else //T_SOC soc_servdat; - strcpy(back->info,"listening"); + strcpybuff(back->info,"listening"); if ( (soc_servdat = get_datasocket(line)) != INVALID_SOCKET) { _CHECK_HALT_FTP; send_line(soc_ctl,line); // envoi du RETR get_ftp_line(soc_ctl,line,timeout); _CHECK_HALT_FTP; if (line[0]=='2') { // ok - strcpy(back->info,"retr"); - strcpy(line,line_retr); + strcpybuff(back->info,"retr"); + strcpybuff(line,line_retr); send_line(soc_ctl,line); get_ftp_line(soc_ctl,line,timeout); _CHECK_HALT_FTP; @@ -690,7 +710,7 @@ int run_launch_ftp(lien_back* back) { struct sockaddr dummyaddr; int dummylen = sizeof(struct sockaddr); if ( (soc_dat=accept(soc_servdat,&dummyaddr,&dummylen)) == INVALID_SOCKET) { - strcpy(back->r.msg,"Unable to accept connection"); + strcpybuff(back->r.msg,"Unable to accept connection"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } @@ -710,7 +730,7 @@ int run_launch_ftp(lien_back* back) { close(soc_servdat); #endif } else { - strcpy(back->r.msg,"Unable to listen to a port"); + strcpybuff(back->r.msg,"Unable to listen to a port"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } @@ -725,7 +745,7 @@ int run_launch_ftp(lien_back* back) { back->r.fp = fopen(fconv(back->url_sav),"ab"); } else back->r.fp = filecreate(back->url_sav); - strcpy(back->info,"receiving"); + strcpybuff(back->info,"receiving"); if (back->r.fp != NULL) { char buff[1024]; int len=1; @@ -737,7 +757,7 @@ int run_launch_ftp(lien_back* back) { len=1; // pas d'erreur pour le moment switch(wait_socket_receive(soc_dat,timeout)) { case -1: - strcpy(back->r.msg,"Read error"); + strcpybuff(back->r.msg,"FTP read error"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; len=0; // fin @@ -757,21 +777,30 @@ int run_launch_ftp(lien_back* back) { back->r.size+=len; HTS_STAT.HTS_TOTAL_RECV+=len; if (back->r.fp) { - if ((int) fwrite(buff,1,len,back->r.fp) != len) { - strcpy(back->r.msg,"Write error"); + if ((INTsys)fwrite(buff,1,(INTsys)len,back->r.fp) != len) { + /* + int fcheck; + if ((fcheck=check_fatal_io_errno())) { + opt->state.exit_xh=-1; + } + */ + strcpybuff(back->r.msg,"Write error"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; len=0; // error } } else { - strcpy(back->r.msg,"Unexpected write error"); + strcpybuff(back->r.msg,"Unexpected write error"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } } else { // Erreur ou terminé - //strcpy(back->r.msg,"Read error"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=0; + if (back->r.totalsize > 0 && back->r.size != back->r.totalsize) { + back->r.statuscode=-1; + strcpybuff(back->r.msg,"FTP file incomplete"); + } } read_len=1024; //HTS_TOTAL_RECV_CHECK(read_len); // Diminuer au besoin si trop de données reçues @@ -782,7 +811,7 @@ int run_launch_ftp(lien_back* back) { back->r.fp=NULL; } } else { - strcpy(back->r.msg,"Unable to write file"); + strcpybuff(back->r.msg,"Unable to write file"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } @@ -798,7 +827,7 @@ int run_launch_ftp(lien_back* back) { // récupérer 226 transfer complete get_ftp_line(soc_ctl,line,timeout); if (line[0]=='2') { // OK - strcpy(back->r.msg,"OK"); + strcpybuff(back->r.msg,"OK"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=200; } else { @@ -807,7 +836,7 @@ int run_launch_ftp(lien_back* back) { back->r.statuscode=-1; } } else { - strcpy(back->r.msg,"Read error"); + strcpybuff(back->r.msg,"FTP read error"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; } @@ -823,7 +852,7 @@ int run_launch_ftp(lien_back* back) { } _CHECK_HALT_FTP; - strcpy(back->info,"quit"); + strcpybuff(back->info,"quit"); send_line(soc_ctl,"QUIT"); // bye bye get_ftp_line(soc_ctl,NULL,timeout); #if HTS_WIN @@ -835,7 +864,7 @@ int run_launch_ftp(lien_back* back) { if (back->r.statuscode!=-1) { back->r.statuscode=200; - strcpy(back->r.msg,"OK"); + strcpybuff(back->r.msg,"OK"); } back->status=FTP_STATUS_READY; // fini return 0; @@ -887,7 +916,7 @@ T_SOC get_datasocket(char* to_send) { SOCaddr_inetntoa(dot, 256, server2, sizeof(server2)); // dots[0]='\0'; - strncat(dots, dot, 128); + strncatbuff(dots, dot, 128); while( (a=strchr(dots,'.')) ) *a=','; // virgules! while( (a=strchr(dots,':')) ) *a=','; // virgules! sprintf(to_send,"PORT %s,%d,%d",dots,n1,n2); @@ -992,7 +1021,7 @@ int get_ftp_line(T_SOC soc,char* line,int timeout) { // vérifier données switch(wait_socket_receive(soc,timeout)) { case -1: // erreur de lecture - if (line) strcpy(line,"500 *read error"); + if (line) strcpybuff(line,"500 *read error"); return 0; break; case 0: @@ -1010,7 +1039,7 @@ int get_ftp_line(T_SOC soc,char* line,int timeout) { data[i++]=b; break; default: - if (line) strcpy(line,"500 *read error"); + if (line) strcpybuff(line,"500 *read error"); return 0; // error break; } @@ -1041,7 +1070,7 @@ int get_ftp_line(T_SOC soc,char* line,int timeout) { fprintf(dd,"<--- %s\n",data); fflush(dd); printf("<--- %s\n",data); #endif - if (line) strcpy(line,data); + if (line) strcpybuff(line,data); return (strnotempty(data)); } @@ -1122,7 +1151,7 @@ int wait_socket_receive(T_SOC soc,int timeout) { // cancel reçu? int stop_ftp(lien_back* back) { if (back->stop_ftp) { - strcpy(back->r.msg,"Cancelled by User"); + strcpybuff(back->r.msg,"Cancelled by User"); back->status=FTP_STATUS_READY; // fini back->r.statuscode=-1; return 1; diff --git a/src/htsglobal.h b/src/htsglobal.h index ce54d3d..38faebc 100644 --- a/src/htsglobal.h +++ b/src/htsglobal.h @@ -40,10 +40,10 @@ Please visit our Website: http://www.httrack.com #define HTTRACK_GLOBAL_DEFH // Version -#define HTTRACK_VERSION "3.20-2" -#define HTTRACK_VERSIONID "3.20.02" +#define HTTRACK_VERSION "3.30" +#define HTTRACK_VERSIONID "3.30.01" #define HTTRACK_AFF_VERSION "3.x" -//#define HTTRACK_AFF_WARNING "This is a RELEASE CANDIDATE version of WinHTTrack Website Copier 3.0\nPlease report us any bug or problem" +//#define HTTRACK_AFF_WARNING "This is a BETA release of WinHTTrack Website Copier ("HTTRACK_VERSION")\nPlease report any crashes, bugs or problems" @@ -51,11 +51,79 @@ Please visit our Website: http://www.httrack.com #include "htssystem.h" #include "htsconfig.h" +// config.h +#ifdef _WIN32 + +#define HAVE_SYS_STAT_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#ifndef DLLIB +#define DLLIB 1 +#endif +#ifndef HTS_INET6 +#define HTS_INET6 1 +#endif +#ifndef S_ISREG +#define S_ISREG(m) ((m) & _S_IFREG) +#endif + +#else + +#include "config.h" + +#ifndef FTIME +#define HTS_DO_NOT_USE_FTIME +#endif + +#ifndef SETUID +#define HTS_DO_NOT_USE_UID +#endif + +#ifndef HTS_LONGLONG +#ifdef SIZEOF_LONG_LONG +#if SIZEOF_LONG_LONG==8 +#define HTS_LONGLONG 1 +#endif +#endif + +#ifndef HTS_LONGLONG +#ifdef __sun +#define HTS_LONGLONG 0 +#endif +#ifdef __osf__ +#define HTS_LONGLONG 0 +#endif +#ifdef __linux +#define HTS_LONGLONG 1 +#endif +#ifdef _WIN32 +#define HTS_LONGLONG 1 +#endif +#endif +#endif + +#ifdef DLLIB +#define HTS_DLOPEN 1 +#else +#define HTS_DLOPEN 0 +#endif + +#endif + + // Socket windows ou socket unix -#if HTS_PLATFORM==1 +#ifdef _WIN32 +#undef HTS_PLATFORM +#define HTS_PLATFORM 1 #define HTS_WIN 1 + #else + #define HTS_WIN 0 +#ifdef __linux +#undef HTS_PLATFORM +#define HTS_PLATFORM 3 +#endif #endif // compatibilité DOS @@ -66,12 +134,10 @@ Please visit our Website: http://www.httrack.com #endif // utiliser zlib? -#if HTS_USEZLIB -#else -#ifdef _WINDOWS +#ifndef HTS_USEZLIB +// autoload #define HTS_USEZLIB 1 #endif -#endif #ifndef HTS_INET6 #define HTS_INET6 0 @@ -79,28 +145,27 @@ Please visit our Website: http://www.httrack.com // utiliser openssl? #ifndef HTS_USEOPENSSL +// autoload #define HTS_USEOPENSSL 1 #endif -#if HTS_WIN -#else -#define __cdecl +#ifndef HTS_DLOPEN +#define HTS_DLOPEN 1 #endif -/* -#if HTS_XGETHOST -#if HTS_PLATFORM==1 -#ifndef __cplusplus -#undef HTS_XGMETHOD -#undef HTS_XGETHOST -#endif +#ifndef HTS_USESWF +#define HTS_USESWF 1 #endif + +#if HTS_WIN #else -#undef HTS_XGMETHOD -#undef HTS_XGETHOST +#define __cdecl #endif -*/ +#ifdef HTS_ANALYSTE_CONSOLE +#undef HTS_ANALYSTE_CONSOLE +#define HTS_ANALYSTE_CONSOLE 1 +#endif #if HTS_ANALYSTE #else @@ -134,19 +199,25 @@ Please visit our Website: http://www.httrack.com #define HTS_HTTRACKRC ".httrackrc" #define HTS_HTTRACKCNF HTS_ETCPATH"/httrack.conf" -#define HTS_HTTRACKDIR HTS_PREFIX"/doc/httrack/" + +#ifdef DATADIR +#define HTS_HTTRACKDIR DATADIR"/httrack/" +#else +#define HTS_HTTRACKDIR HTS_PREFIX"/share/httrack/" +#endif #endif /* Gestion des tables de hashage */ #define HTS_HASH_SIZE 20147 /* Taille max d'une URL */ -#define HTS_URLMAXSIZE 512 +#define HTS_URLMAXSIZE 1024 /* Taille max ligne de commande (>=HTS_URLMAXSIZE*2) */ #define HTS_CDLMAXSIZE 1024 /* Copyright (C) Xavier Roche and other contributors */ -#define HTTRACK_AFF_AUTHORS "[XR&CO'2002]" +#define HTTRACK_AFF_AUTHORS "[XR&CO'2003]" #define HTS_DEFAULT_FOOTER "" +#define HTTRACK_WEB "http://www.httrack.com" #define HTS_UPDATE_WEBSITE "http://www.httrack.com/update.php3?Product=HTTrack&Version="HTTRACK_VERSIONID"&VersionStr="HTTRACK_VERSION"&Platform=%d&Language=%s" #define H_CRLF "\x0d\x0a" @@ -175,43 +246,69 @@ Please visit our Website: http://www.httrack.com #define HTS_INLINE #endif +#ifdef _WIN32 +#ifdef LIBHTTRACK_EXPORTS +#define HTSEXT_API __declspec(dllexport) +#else +#define HTSEXT_API __declspec(dllimport) +#endif +#else +#define HTSEXT_API +#endif + +#ifndef HTS_LONGLONG #ifdef HTS_NO_64_BIT #define HTS_LONGLONG 0 #else #define HTS_LONGLONG 1 #endif +#endif // long long int? (or int) // (and int cast for system functions like malloc() ) + #if HTS_LONGLONG +#ifdef LLINT_FORMAT + typedef LLINT_TYPE LLint; + typedef LLINT_TYPE TStamp; + #define LLintP LLINT_FORMAT +#else #if HTS_WIN typedef __int64 LLint; typedef __int64 TStamp; - typedef int INTsys; #define LLintP "%I64d" #else #if HTS_PLATFORM==0 typedef long long int LLint; typedef long long int TStamp; - typedef int INTsys; #define LLintP "%lld" #else typedef long long int LLint; typedef long long int TStamp; - typedef int INTsys; #define LLintP "%Ld" #endif #endif +#endif #else typedef int LLint; - typedef int INTsys; - typedef double TStamp; #define LLintP "%d" + typedef double TStamp; +#endif + +#ifdef LFS_FLAG +typedef LLint INTsys; +#define INTsysP LLintP +#ifdef __linux +#define HTS_FSEEKO +#endif +#else +typedef int INTsys; +#define INTsysP "%d" #endif -/* Alignement */ +/* Default alignement */ #ifndef HTS_ALIGN -#define HTS_ALIGN 4 +#define HTS_ALIGN (sizeof(void*)) #endif /* IPV4, IPV6 and various unified structures */ @@ -265,6 +362,11 @@ Please visit our Website: http://www.httrack.com #if HTS_WIN #else // use pthreads.h + +#ifndef THREADS +#define HTS_DO_NOT_USE_PTHREAD +#endif + #ifdef HTS_DO_NOT_USE_PTHREAD #define USE_PTHREAD 0 #else @@ -283,6 +385,27 @@ Please visit our Website: http://www.httrack.com #endif #endif +#ifdef _DEBUG +// trace mallocs +//#define HTS_TRACE_MALLOC +#ifdef HTS_TRACE_MALLOC +typedef unsigned long int t_htsboundary; +typedef struct _mlink { + char* adr; + int len; + int id; + struct _mlink* next; +} mlink; +static const t_htsboundary htsboundary = 0xDEADBEEF; +#endif +#endif + +/* strxxx debugging */ +#ifndef NOSTRDEBUG +#define STRDEBUG 1 +#endif + + /* ------------------------------------------------------------ */ /* Debugging */ /* ------------------------------------------------------------ */ @@ -309,8 +432,6 @@ Please visit our Website: http://www.httrack.com #define DEBUG_CHECKINT 0 // nbr sockets debug #define NSDEBUG 0 -// tracer mallocs -#define HTS_TRACE_MALLOC 0 // débuggage HTSLib #define HDEBUG 0 diff --git a/src/htshash.c b/src/htshash.c index b02f2ba..3cbdb5f 100644 --- a/src/htshash.c +++ b/src/htshash.c @@ -39,12 +39,21 @@ Please visit our Website: http://www.httrack.com /* specific definitions */ #include "htsbase.h" +#include "htsglobal.h" #include "htsmd5.h" #include #include #include /* END specific definitions */ +/* Specific macros */ +#ifndef malloct +#define malloct malloc +#define freet free +#define calloct calloc +#define strcpybuff strcpy +#endif + // GESTION DES TABLES DE HACHAGE // Méthode à 2 clés (adr+fil), 2e cle facultative // hash[no_enregistrement][pos]->hash est un index dans le tableau général liens @@ -53,7 +62,10 @@ Please visit our Website: http://www.httrack.com #if HTS_HASH // recherche dans la table selon nom1,nom2 et le no d'enregistrement // retour: position ou -1 si non trouvé -int hash_read(hash_struct* hash,char* nom1,char* nom2,int type) { +int hash_read(hash_struct* hash,char* nom1,char* nom2,int type,int normalized) { + char normfil_[HTS_URLMAXSIZE*2]; + char* normfil; + char* normadr; unsigned int cle; int pos; // calculer la clé de recherche, non modulée @@ -64,7 +76,7 @@ int hash_read(hash_struct* hash,char* nom1,char* nom2,int type) { // la position se calcule en modulant pos = (int) (cle%HTS_HASH_SIZE); // entrée trouvée? - if (hash->hash[type][pos] >= 0) { // un enregistrement avec une telle clé existe.. + if (hash->hash[type][pos] >= 0) { // un ou plusieurs enregistrement(s) avec une telle clé existe.. // tester table de raccourcis (hash) // pos est maintenant la position recherchée dans liens pos = hash->hash[type][pos]; @@ -79,20 +91,42 @@ int hash_read(hash_struct* hash,char* nom1,char* nom2,int type) { } break; case 1: // adr+fil - if ((strcmp(nom1,jump_identification(hash->liens[pos]->adr))==0) && (strcmp(nom2,hash->liens[pos]->fil)==0)) { + { + if (!normalized) + normfil=hash->liens[pos]->fil; + else + normfil=fil_normalized(hash->liens[pos]->fil,normfil_); + if (!normalized) + normadr = jump_identification(hash->liens[pos]->adr); + else + normadr = jump_normalized(hash->liens[pos]->adr); + if ((strfield2(nom1,normadr)!=0) && (strcmp(nom2,normfil)==0)) { #if DEBUG_HASH==2 - printf("hash: found shortcut at %d\n",pos); + printf("hash: found shortcut at %d\n",pos); #endif - return pos; + return pos; + } } break; case 2: // former_adr+former_fil - if (hash->liens[pos]->former_adr) - if ((strcmp(nom1,jump_identification(hash->liens[pos]->former_adr))==0) && (strcmp(nom2,hash->liens[pos]->former_fil)==0)) { + { + if (hash->liens[pos]->former_adr) { + if (!normalized) + normfil=hash->liens[pos]->former_fil; + else + normfil=fil_normalized(hash->liens[pos]->former_fil,normfil_); + if (!normalized) + normadr = jump_identification(hash->liens[pos]->former_adr); + else + normadr = jump_normalized(hash->liens[pos]->former_adr); + + if ((strfield2(nom1,normadr)!=0) && (strcmp(nom2,normfil)==0)) { #if DEBUG_HASH==2 - printf("hash: found shortcut at %d\n",pos); + printf("hash: found shortcut at %d\n",pos); #endif - return pos; + return pos; + } + } } break; } @@ -164,7 +198,9 @@ int hash_read(hash_struct* hash,char* nom1,char* nom2,int type) { } // enregistrement lien lpos dans les 3 tables hash1..3 -void hash_write(hash_struct* hash,int lpos) { +void hash_write(hash_struct* hash,int lpos,int normalized) { + char normfil_[HTS_URLMAXSIZE*2]; + char* normfil; unsigned int cle; int pos; int* ptr; @@ -185,7 +221,14 @@ void hash_write(hash_struct* hash,int lpos) { printf("[%d",pos); #endif // - cle = hash_cle(jump_identification(hash->liens[lpos]->adr),hash->liens[lpos]->fil); + if (!normalized) + normfil=hash->liens[lpos]->fil; + else + normfil=fil_normalized(hash->liens[lpos]->fil,normfil_); + if (!normalized) + cle = hash_cle(jump_identification(hash->liens[lpos]->adr),normfil); + else + cle = hash_cle(jump_normalized(hash->liens[lpos]->adr),normfil); pos = (int) (cle%HTS_HASH_SIZE); ptr = hash_calc_chaine(hash,1,pos); // calculer adresse chaine *ptr = lpos; // noter dernier enregistré @@ -194,7 +237,14 @@ void hash_write(hash_struct* hash,int lpos) { #endif // if (hash->liens[lpos]->former_adr) { // former_adr existe? - cle = hash_cle(jump_identification(hash->liens[lpos]->former_adr),hash->liens[lpos]->former_fil); + if (!normalized) + normfil=hash->liens[lpos]->former_fil; + else + normfil=fil_normalized(hash->liens[lpos]->former_fil,normfil_); + if (!normalized) + cle = hash_cle(jump_identification(hash->liens[lpos]->former_adr),normfil); + else + cle = hash_cle(jump_normalized(hash->liens[lpos]->former_adr),normfil); pos = (int) (cle%HTS_HASH_SIZE); ptr = hash_calc_chaine(hash,2,pos); // calculer adresse chaine *ptr = lpos; // noter dernier enregistré @@ -209,6 +259,7 @@ void hash_write(hash_struct* hash,int lpos) { #if DEBUT_HASH else { printf("* hash_write=0!!\n"); + abortLogFmt("unexpected error in hash_write (pos=%d)" _ pos); exit(1); } #endif @@ -263,191 +314,3 @@ int* hash_calc_chaine(hash_struct* hash,int type,int pos) { #endif // FIN GESTION DES TABLES DE HACHAGE - - - - - - - - - - - -// inthash -- simple hash table, using a key (char[]) and a value (ulong int) - -unsigned long int inthash_key(char* value) { - return md5sum32(value); -} - -// Check for duplicate entry (==1 : added) -int inthash_write(inthash hashtable,char* name,long int value) { - int pos = (inthash_key(name) % hashtable->hash_size); - inthash_chain* h=hashtable->hash[pos]; - while (h) { - if (strcmp(h->name,name)==0) { - h->value.intg=value; - return 0; - } - h=h->next; - } - // Not found, add it! - inthash_add(hashtable,name,value); - return 1; -} - -// Increment pos value, create one if necessary (=0) -// (==1 : created) -int inthash_inc(inthash hashtable,char* name) { - long int value=0; - int r=0; - if (inthash_read(hashtable,name,&value)) { - value++; - } - else { /* create new value */ - value=0; - r=1; - } - inthash_write(hashtable,name,value); - return (r); -} - - -// Does not check for duplicate entry -void inthash_add(inthash hashtable,char* name,long int value) { - int pos = (inthash_key(name) % hashtable->hash_size); - inthash_chain** h=&hashtable->hash[pos]; - - while (*h) - h=&((*h)->next); - *h=(inthash_chain*)calloc(1, - sizeof(inthash_chain) - + - strlen(name)+2 - ); - if (*h) { - (*h)->name=((char*)(*h)) + sizeof(inthash_chain); - (*h)->next=NULL; - strcpy((*h)->name,name); - (*h)->value.intg=value; - } -} - -void* inthash_addblk(inthash hashtable,char* name,int blksize) { - int pos = (inthash_key(name) % hashtable->hash_size); - inthash_chain** h=&hashtable->hash[pos]; - - while (*h) - h=&((*h)->next); - *h=(inthash_chain*)calloc(1, - sizeof(inthash_chain) - + - strlen(name)+2 - + - blksize - ); - if (*h) { - (*h)->name = ((char*)(*h)) + sizeof(inthash_chain); - (*h)->next=NULL; - strcpy((*h)->name,name); - (*h)->value.intg = (unsigned long) (char*) ((char*)(*h)) + sizeof(inthash_chain) + strlen(name) + 2; - return (void*)(*h)->value.intg; - } - return NULL; -} - -int inthash_read(inthash hashtable,char* name,long int* value) { - int pos = (inthash_key(name) % hashtable->hash_size); - inthash_chain* h=hashtable->hash[pos]; - while (h) { - if (strcmp(h->name,name)==0) { - *value=h->value.intg; - return 1; - } - h=h->next; - } - return 0; -} - -void inthash_init(inthash hashtable) { - unsigned int i; - for(i=0;ihash_size;i++) { - hashtable->hash[i]=NULL; - } -} - -void inthash_delchain(inthash_chain* hash,t_inthash_freehandler free_handler) { - if (hash) { - inthash_delchain(hash->next,free_handler); - if (free_handler) { // pos is a malloc() block, delete it! - if (hash->value.intg) { - if (free_handler) - free_handler((void*)hash->value.intg); - else - free((void*)hash->value.intg); - } - hash->value.intg=0; - } - free(hash); - } -} - -void inthash_default_free_handler(void* value) { - if (value) - free(value); -} - -// -- - -inthash inthash_new(int size) { - inthash hashtable=(inthash)calloc(1,sizeof(struct_inthash)); - if (hashtable) { - hashtable->hash_size=0; - hashtable->flag_valueismalloc=0; - if ((hashtable->hash=(inthash_chain**)calloc(size,sizeof(inthash_chain*)))) { - hashtable->hash_size=size; - inthash_init(hashtable); - } - } - return hashtable; -} - -int inthash_created(inthash hashtable) { - if (hashtable) - if (hashtable->hash) - return 1; - return 0; -} - -void inthash_value_is_malloc(inthash hashtable,int flag) { - hashtable->flag_valueismalloc=flag; -} - -void inthash_value_set_free_handler(inthash hashtable, t_inthash_freehandler free_handler) { - hashtable->free_handler = free_handler; -} - -void inthash_delete(inthash* hashtable) { - if (hashtable) { - if (*hashtable) { - if ((*hashtable)->hash) { - unsigned int i; - t_inthash_freehandler free_handler=NULL; - if ( (*hashtable)->flag_valueismalloc ) { - if ( (*hashtable)->free_handler ) - free_handler=(*hashtable)->free_handler; - else - free_handler=inthash_default_free_handler; - } - for(i=0;i<(*hashtable)->hash_size;i++) { - inthash_delchain((*hashtable)->hash[i],(*hashtable)->free_handler); - (*hashtable)->hash[i]=NULL; - } - } - free(*hashtable); - *hashtable=NULL; - } - } -} - - diff --git a/src/htshash.h b/src/htshash.h index 9a54710..c4acff1 100644 --- a/src/htshash.h +++ b/src/htshash.h @@ -43,62 +43,9 @@ Please visit our Website: http://www.httrack.com #include "htscore.h" // tables de hashage -int hash_read(hash_struct* hash,char* nom1,char* nom2,int type); -void hash_write(hash_struct* hash,int lpos); +int hash_read(hash_struct* hash,char* nom1,char* nom2,int type,int normalized); +void hash_write(hash_struct* hash,int lpos,int normalized); int* hash_calc_chaine(hash_struct* hash,int type,int pos); unsigned long int hash_cle(char* nom1,char* nom2); - - - -// inthash -- simple hash table, using a key (char[]) and a value (ulong int) - -// simple hash table for other routines -typedef struct inthash_chain { - char* name; /* key (name) */ - union { - unsigned long int intg; /* integer value */ - void* ptr; /* ptr value */ - } value; - struct inthash_chain* next; /* next element */ -} inthash_chain; - -// structure behind inthash -typedef void (* t_inthash_freehandler)(void* value); -typedef struct { - inthash_chain** hash; - t_inthash_freehandler free_handler; - unsigned int hash_size; - unsigned short flag_valueismalloc; -} struct_inthash; - -// main inthash type -typedef struct_inthash* inthash; - -// subfunctions -unsigned long int inthash_key(char* value); -void inthash_init(inthash hashtable); -void inthash_delchain(inthash_chain* hash,t_inthash_freehandler free_handler); -void inthash_default_free_handler(void* value); - -// main functions: - - -/* Hash functions: */ -inthash inthash_new(int size); /* Create a new hash table */ -int inthash_created(inthash hashtable); /* Test if the hash table was successfully created */ -void inthash_delete(inthash* hashtable); /* Delete an hash table */ -void inthash_value_is_malloc(inthash hashtable,int flag); /* Is the 'value' member a value that needs to be free()'ed ? */ -void inthash_value_set_free_handler(inthash hashtable, /* value free() handler (default one is 'free') */ - t_inthash_freehandler free_handler); -/* */ -int inthash_read(inthash hashtable,char* name,long int* value); /* Read entry from the hash table */ -/* */ -void inthash_add(inthash hashtable,char* name,long int value); /* Add entry in the hash table */ -void* inthash_addblk(inthash hashtable,char* name,int blksize); /* Add entry in the hash table and set value to a new memory block */ -int inthash_write(inthash hashtable,char* name,long int value); /* Overwrite/add entry in the hash table */ -int inthash_inc(inthash hashtable,char* name); /* Increment entry in the hash table */ -/* End of hash functions: */ - - #endif diff --git a/src/htshelp.c b/src/htshelp.c index 3d743fe..7046929 100644 --- a/src/htshelp.c +++ b/src/htshelp.c @@ -48,8 +48,10 @@ Please visit our Website: http://www.httrack.com #include #if HTS_WIN #else +#ifdef HAVE_UNISTD_H #include #endif +#endif /* END specific definitions */ #define waitkey if (more) { char s[4]; printf("\nMORE.. q to quit\n"); linput(stdin,s,4); if (strcmp(s,"q")==0) quit=1; else printf("Page %d\n\n",++m); } @@ -115,15 +117,15 @@ void infomsg(char* msg) { } } void help_wizard(httrackp* opt) { - char* urls = (char*) malloc(HTS_URLMAXSIZE*2); - char* mainpath = (char*) malloc(256); - char* projname = (char*) malloc(256); - char* stropt = (char*) malloc(2048); // options - char* stropt2 = (char*) malloc(2048); // options longues - char* strwild = (char*) malloc(2048); // wildcards - char* cmd = (char*) malloc(4096); - char* str = (char*) malloc(256); - char** argv = (char**) malloc(256 * sizeof(char*)); + char* urls = (char*) malloct(HTS_URLMAXSIZE*2); + char* mainpath = (char*) malloct(256); + char* projname = (char*) malloct(256); + char* stropt = (char*) malloct(2048); // options + char* stropt2 = (char*) malloct(2048); // options longues + char* strwild = (char*) malloct(2048); // wildcards + char* cmd = (char*) malloct(4096); + char* str = (char*) malloct(256); + char** argv = (char**) malloct(256 * sizeof(char*)); // char* a; // @@ -134,12 +136,12 @@ void help_wizard(httrackp* opt) { } urls[0] = mainpath[0] = projname[0] = stropt[0] = stropt2[0] = strwild[0] = cmd[0] = str[0] = '\0'; // - strcpy(stropt,"-"); + strcpybuff(stropt,"-"); mainpath[0]=projname[0]=stropt2[0]=strwild[0]='\0'; // printf("\n"); - printf("Welcome to HTTrack Website Copier (Offline Browser) "HTTRACK_VERSION"\n"); + printf("Welcome to HTTrack Website Copier (Offline Browser) "HTTRACK_VERSION"%s\n", WHAT_is_available); printf("Copyright (C) Xavier Roche and other contributors\n"); #ifdef _WIN32 printf("Note: You are running the commandline version,\n"); @@ -174,13 +176,13 @@ void help_wizard(httrackp* opt) { printf("\nBase path (return=current directory) :"); linput(stdin,str,250); if (!strnotempty(str)) { - strcat(str,hts_gethome()); - strcat(str,"/websites/"); + strcatbuff(str,hts_gethome()); + strcatbuff(str,"/websites/"); } if (strnotempty(str)) if ((str[strlen(str)-1]!='/') && (str[strlen(str)-1]!='\\')) - strcat(str,"/"); - strcat(stropt2,"-O \""); strcat(stropt2,str); strcat(stropt2,projname); strcat(stropt2,"\" "); + strcatbuff(str,"/"); + strcatbuff(stropt2,"-O \""); strcatbuff(stropt2,str); strcatbuff(stropt2,projname); strcatbuff(stropt2,"\" "); // Créer si ce n'est fait un index.html 1er niveau make_empty_index(str); // @@ -196,11 +198,11 @@ void help_wizard(httrackp* opt) { printf("\nAction:\n"); switch(help_query("Mirror Web Site(s)|Mirror Web Site(s) with Wizard|Just Get Files Indicated|Mirror ALL links in URLs (Multiple Mirror)|Test Links In URLs (Bookmark Test)|Update/Continue a Mirror",1)) { case 1: break; - case 2: strcat(stropt,"W"); break; - case 3: strcat(stropt2,"--get "); break; - case 4: strcat(stropt2,"--mirrorlinks "); break; - case 5: strcat(stropt2,"--testlinks "); break; - case 6: strcat(stropt2,"--update "); break; + case 2: strcatbuff(stropt,"W"); break; + case 3: strcatbuff(stropt2,"--get "); break; + case 4: strcatbuff(stropt2,"--mirrorlinks "); break; + case 5: strcatbuff(stropt2,"--testlinks "); break; + case 6: strcatbuff(stropt2,"--update "); break; case 0: return; break; } @@ -213,17 +215,17 @@ void help_wizard(httrackp* opt) { char str2[256]; printf("\nProxy port (return=8080) :"); linput(stdin,str2,250); - strcat(str,":"); + strcatbuff(str,":"); if (strnotempty(str2)==0) - strcat(str,"8080"); + strcatbuff(str,"8080"); else - strcat(str,str2); + strcatbuff(str,str2); } - strcat(stropt2,"-P "); strcat(stropt2,str); strcat(stropt2," "); + strcatbuff(stropt2,"-P "); strcatbuff(stropt2,str); strcatbuff(stropt2," "); } // Display - strcat(stropt2," -%v "); + strcatbuff(stropt2," -%v "); // Wildcards printf("\nYou can define wildcards, like: -*.gif +www.*.com/*.zip -*img_*.zip\n"); @@ -239,8 +241,8 @@ void help_wizard(httrackp* opt) { if (strfield2(str,"help")) { help("httrack",2); } else if (strnotempty(str)) { - strcat(stropt2,str); - strcat(stropt2," "); + strcatbuff(stropt2,str); + strcatbuff(stropt2," "); } } while(strfield2(str,"help")); @@ -288,14 +290,14 @@ void help_wizard(httrackp* opt) { } /* Free buffers */ - free(urls); - free(mainpath); - free(projname); - free(stropt); - free(stropt2); - free(strwild); - free(cmd); - free(str); + freet(urls); + freet(mainpath); + freet(projname); + freet(stropt); + freet(stropt2); + freet(strwild); + freet(cmd); + freet(str); } int help_query(char* list,int def) { char s[256]; @@ -309,7 +311,7 @@ int help_query(char* list,int def) { char str[256]; str[0]='\0'; // - strncat(str,a,(int) (b - a)); + strncatbuff(str,a,(int) (b - a)); if (n==def) printf("(enter)\t%d\t%s\n",n++,str); else @@ -394,12 +396,13 @@ void make_empty_index(char* str) { // mini-aide (h: help) // y void help(char* app,int more) { + char info[2048]; infomsg(""); if (more) infomsg("1"); if (more != 2) { - char info[2048]; - infomsg("HTTrack version "HTTRACK_VERSION" (compiled "__DATE__")"); + sprintf(info, "HTTrack version "HTTRACK_VERSION"%s (compiled "__DATE__")", WHAT_is_available); + infomsg(info); #ifdef HTTRACK_AFF_WARNING infomsg("NOTE: "HTTRACK_AFF_WARNING); #endif @@ -424,6 +427,7 @@ void help(char* app,int more) { infomsg("Proxy options:"); infomsg(" P proxy use (-P proxy:port or -P user:pass@proxy:port)"); infomsg(" %f *use proxy for ftp (f0 don't use)"); + infomsg(" %b use this local hostname to make/send requests (-%b hostname)"); infomsg(""); infomsg("Limits options:"); infomsg(" rN set the mirror depth to N (* r9999)"); @@ -448,10 +452,12 @@ void help(char* app,int more) { infomsg(" n get non-html files 'near' an html file (ex: an image located outside)"); infomsg(" t test all URLs (even forbidden ones)"); infomsg(" %L add all URL located in this text file (one URL per line)"); + infomsg(" %S add all scan rules located in this text file (one scan rule per line)"); infomsg(""); infomsg("Build options:"); infomsg(" NN structure type (0 *original structure, 1+: see below)"); infomsg(" or user defined structure (-N \"%h%p/%n%q.%t\")"); + infomsg(" %M generate a RFC MIME-encapsulated full-archive (.mht)"); infomsg(" LN long names (L1 *long names / L0 8-3 conversion / L2 ISO9660 compatible)"); infomsg(" KN keep original links (e.g. http://www.adr/link) (K0 *relative link, K absolute links, K4 original links, K3 absolute URI links)"); infomsg(" x replace external html links by error pages"); @@ -467,8 +473,10 @@ void help(char* app,int more) { infomsg(" j *parse Java Classes (j0 don't parse)"); infomsg(" sN follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always)"); infomsg(" %h force HTTP/1.0 requests (reduce update features, only for old servers or proxies)"); + infomsg(" %k use keep-alive if possible, greately reducing latency for small files and test requests (%k0 don't use)"); infomsg(" %B tolerant requests (accept bogus responses on some servers, but not standard!)"); infomsg(" %s update hacks: various hacks to limit re-transfers when updating (identical size, bogus response..)"); + infomsg(" %u url hacks: various hacks to limit duplicate URLs (strip //, www.foo.com==foo.com..)"); infomsg(" %A assume that a type (cgi,asp..) is always linked with a mime type (-%A php3,cgi=text/html;dat,bin=application/x-zip)"); infomsg(" shortcut: '--assume standard' is equivalent to -%A "HTS_ASSUME_STANDARD); infomsg(" @iN internet protocol (0=both ipv6+ipv4, 4=ipv4 only, 6=ipv6 only)"); @@ -491,6 +499,7 @@ void help(char* app,int more) { infomsg(" f *log in files"); infomsg(" f2 one single log file"); infomsg(" I *make an index (I0 don't make)"); + infomsg(" %i make a top index for a project folder (* %i0 don't make)"); infomsg(" %I make an searchable index for this mirror (* %I0 don't make)"); infomsg(""); infomsg("Expert options:"); @@ -511,23 +520,26 @@ void help(char* app,int more) { infomsg(" %H debug HTTP headers in logfile"); infomsg(""); infomsg("Guru options: (do NOT use if possible)"); - infomsg(" #0 Filter test (-#0 '*.gif' 'www.bar.com/foo.gif')"); - infomsg(" #f Always flush log files"); - infomsg(" #FN Maximum number of filters"); - infomsg(" #h Version info"); - infomsg(" #K Scan stdin (debug)"); - infomsg(" #L Maximum number of links (-#L1000000)"); - infomsg(" #p Display ugly progress information"); - infomsg(" #P Catch URL"); - infomsg(" #R Old FTP routines (debug)"); - infomsg(" #T Generate transfer ops. log every minutes"); - infomsg(" #u Wait time"); - infomsg(" #Z Generate transfer rate statictics every minutes"); - infomsg(" #! Execute a shell command (-#! \"echo hello\")"); + infomsg(" #X *use optimized engine (limited memory boundary checks)"); + infomsg(" #0 filter test (-#0 '*.gif' 'www.bar.com/foo.gif')"); + infomsg(" #C cache list (-#C '*.com/spider*.gif'"); + infomsg(" #f always flush log files"); + infomsg(" #FN maximum number of filters"); + infomsg(" #h version info"); + infomsg(" #K scan stdin (debug)"); + infomsg(" #L maximum number of links (-#L1000000)"); + infomsg(" #p display ugly progress information"); + infomsg(" #P catch URL"); + infomsg(" #R old FTP routines (debug)"); + infomsg(" #T generate transfer ops. log every minutes"); + infomsg(" #u wait time"); + infomsg(" #Z generate transfer rate statictics every minutes"); + infomsg(" #! execute a shell command (-#! \"echo hello\")"); infomsg(""); infomsg("Command-line specific options:"); infomsg(" V execute system command after each files ($0 is the filename: -V \"rm \\$0\")"); infomsg(" %U run the engine with another id when called as root (-%U smith)"); + infomsg(" %W use an external library function as a wrapper (-%W link-detected=foo.so:myfunction)"); /* infomsg(" %O do a chroot before setuid"); */ infomsg(""); infomsg("Details: Option N"); @@ -562,6 +574,15 @@ void help(char* app,int more) { infomsg(" '%q' small query string MD5 (16 bits, 4 ascii bytes)"); infomsg(" '%s?' Short name version (ex: %sN)"); infomsg(" '%[param]' param variable in query string"); + infomsg(" '%[param:before:after:notfound:empty]' advanced variable extraction"); + infomsg("Details: User-defined option N and advanced variable extraction"); + infomsg(" %[param:before:after:notfound:empty]"); + infomsg(" param : parameter name"); + infomsg(" before : string to prepend if the parameter was found"); + infomsg(" after : string to append if the parameter was found"); + infomsg(" notfound : string replacement if the parameter could not be found"); + infomsg(" empty : string replacement if the parameter was empty"); + infomsg(" all fields, except the first one (the parameter name), can be empty"); infomsg(""); infomsg("Details: Option K"); infomsg(" K0 foo.cgi?q=45 -> foo4B54.html?q=45 (relative URI, default)"); @@ -586,6 +607,24 @@ void help(char* app,int more) { infomsg(""); infomsg("--http10 force http/1.0 requests (-%h)"); infomsg(""); + infomsg("Details: Option %W: External callbacks prototypes"); + infomsg("'init' : void (* myfunction)(void);"); + infomsg("'free' : void (* myfunction)(void);"); + infomsg("'start' : int (* myfunction)(httrackp* opt);"); + infomsg("'end' : int (* myfunction)(void);"); + infomsg("'change-options' : int (* myfunction)(httrackp* opt);"); + infomsg("'check-html' : int (* myfunction)(char* html,int len,char* url_adresse,char* url_fichier);"); + infomsg("'query' : char* (* myfunction)(char* question);"); + infomsg("'query2' : char* (* myfunction)(char* question);"); + infomsg("'query3' : char* (* myfunction)(char* question);"); + infomsg("'loop' : int (* myfunction)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,hts_stat_struct* stats);"); + infomsg("'check-link' : int (* myfunction)(char* adr,char* fil,int status);"); + infomsg("'pause' : void (* myfunction)(char* lockfile);"); + infomsg("'save-file' : void (* myfunction)(char* file);"); + infomsg("'link-detected' : int (* myfunction)(char* link);"); + infomsg("'transfer-status' : int (* myfunction)(lien_back* back);"); + infomsg("'save-name' : int (* myfunction)(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save);"); + infomsg(""); infomsg(""); infomsg("example: httrack www.someweb.com/bob/"); infomsg("means: mirror site www.someweb.com/bob/ and only this site"); @@ -608,7 +647,8 @@ void help(char* app,int more) { infomsg("example: httrack --continue"); infomsg("continues a mirror in the current folder"); infomsg(""); - infomsg("HTTrack version "HTTRACK_VERSION" (compiled "__DATE__")"); + sprintf(info, "HTTrack version "HTTRACK_VERSION"%s (compiled "__DATE__")", WHAT_is_available); + infomsg(info); infomsg("Copyright (C) Xavier Roche and other contributors"); #ifdef HTS_PLATFORM_NAME infomsg("[compiled: "HTS_PLATFORM_NAME"]"); diff --git a/src/htsindex.c b/src/htsindex.c index 5a66724..1a75103 100644 --- a/src/htsindex.c +++ b/src/htsindex.c @@ -44,6 +44,7 @@ Please visit our Website: http://www.httrack.com #if HTS_MAKE_KEYWORD_INDEX #include "htshash.h" +#include "htsinthash.h" /* Keyword Indexer Parameters */ @@ -92,7 +93,7 @@ Please visit our Website: http://www.httrack.com // Words begining with these (accepted) characters will be ignored #define KEYW_NOT_BEG "0123456789" // Treat these characters as space characters - MUST NOT BE EMPTY!!! -#define KEYW_SPACE " ',;:!?\"\x0d\x0a\x09\x0c" +#define KEYW_SPACE " ',;:!?\"\x0d\x0a\x09\x0b\x0c" // Common words (the,for..) detector // If a word represents more than KEYW_USELESS1K (%1000) of total words, then ignore it // 5 (0.5%) @@ -184,6 +185,8 @@ int index_keyword(const char* html_data,LLint size,const char* mime,const char* || (strfield2(mime,"text/css")) ) { inscript=1; + //} else if (strfield2(mime, "text/vnd.wap.wml")) { // humm won't work in many cases + // inscript=0; } else return 0; @@ -299,9 +302,9 @@ int index_keyword(const char* html_data,LLint size,const char* mime,const char* e++; /* 0 means "once" */ if (strncmp((const char*)fslash((char*)indexpath),filename,strlen(indexpath))==0) // couper - strcpy(savelst,filename+strlen(indexpath)); + strcpybuff(savelst,filename+strlen(indexpath)); else - strcpy(savelst,filename); + strcpybuff(savelst,filename); // Add entry for this file and word fprintf(fp_tmpproject,"%s %d %s\n",line,(int) (KEYW_SORT_MAXCOUNT - e),savelst); @@ -331,7 +334,7 @@ void index_finish(const char* indexpath,int mode) { #if HTS_MAKE_KEYWORD_INDEX char** tab; char* blk; - int size; + INTsys size; size=fpsize(fp_tmpproject); if (size>0) { @@ -342,7 +345,7 @@ void index_finish(const char* indexpath,int mode) { blk = malloct(size+4); if (blk) { fseek(fp_tmpproject,0,SEEK_SET); - if ((int)fread(blk,1,size,fp_tmpproject) == size) { + if ((INTsys)fread(blk,1,size,fp_tmpproject) == size) { char *a=blk,*b; int index=0; int i; @@ -430,7 +433,7 @@ void index_finish(const char* indexpath,int mode) { fprintf(fp,"\r\n%s\r\n\r\n",word); } fflush(fp); last_pos=ftell(fp); - strcpy(current_word,word); + strcpybuff(current_word,word); total_hit=total_line=0; } total_hit+=hit; diff --git a/src/htsinthash.c b/src/htsinthash.c new file mode 100644 index 0000000..95b8711 --- /dev/null +++ b/src/htsinthash.c @@ -0,0 +1,252 @@ +/* ------------------------------------------------------------ */ +/* +HTTrack Website Copier, Offline Browser for Windows and Unix +Copyright (C) Xavier Roche and other contributors + +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 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. + + +Important notes: + +- We hereby ask people using this source NOT to use it in purpose of grabbing +emails addresses, or collecting any other private information on persons. +This would disgrace our work, and spoil the many hours we spent on it. + + +Please visit our Website: http://www.httrack.com +*/ + + +/* ------------------------------------------------------------ */ +/* File: httrack.c subroutines: */ +/* hash table system (fast index) */ +/* Author: Xavier Roche */ +/* ------------------------------------------------------------ */ + +#include "htsinthash.h" + +/* specific definitions */ +#include "htsbase.h" +#include "htsglobal.h" +#include "htsmd5.h" +#include +#include +#include +/* END specific definitions */ + +/* Specific macros */ +#ifndef malloct +#define malloct malloc +#define freet free +#define calloct calloc +#define strcpybuff strcpy +#endif + +// inthash -- simple hash table, using a key (char[]) and a value (ulong int) + +unsigned long int inthash_key(char* value) { + return md5sum32(value); +} + +// Check for duplicate entry (==1 : added) +int inthash_write(inthash hashtable,char* name,long int value) { + int pos = (inthash_key(name) % hashtable->hash_size); + inthash_chain* h=hashtable->hash[pos]; + while (h) { + if (strcmp(h->name,name)==0) { + /* Delete element */ + if (hashtable->flag_valueismalloc) { + if (h->value.intg) { + if (hashtable->free_handler) + hashtable->free_handler((void*)h->value.intg); + else + freet((void*)h->value.intg); + } + } + /* Insert */ + h->value.intg=value; + return 0; + } + h=h->next; + } + // Not found, add it! + inthash_add(hashtable,name,value); + return 1; +} + +// Increment pos value, create one if necessary (=0) +// (==1 : created) +int inthash_inc(inthash hashtable,char* name) { + long int value=0; + int r=0; + if (inthash_read(hashtable,name,&value)) { + value++; + } + else { /* create new value */ + value=0; + r=1; + } + inthash_write(hashtable,name,value); + return (r); +} + + +// Does not check for duplicate entry +void inthash_add(inthash hashtable,char* name,long int value) { + int pos = (inthash_key(name) % hashtable->hash_size); + inthash_chain** h=&hashtable->hash[pos]; + + while (*h) + h=&((*h)->next); + *h=(inthash_chain*)calloct(1, + sizeof(inthash_chain) + + + strlen(name)+2 + ); + if (*h) { + (*h)->name=((char*)(*h)) + sizeof(inthash_chain); + (*h)->next=NULL; + strcpybuff((*h)->name,name); + (*h)->value.intg=value; + } +} + +void* inthash_addblk(inthash hashtable,char* name,int blksize) { + int pos = (inthash_key(name) % hashtable->hash_size); + inthash_chain** h=&hashtable->hash[pos]; + + while (*h) + h=&((*h)->next); + *h=(inthash_chain*)calloct(1, + sizeof(inthash_chain) + + + strlen(name)+2 + + + blksize + ); + if (*h) { + (*h)->name = ((char*)(*h)) + sizeof(inthash_chain); + (*h)->next=NULL; + strcpybuff((*h)->name,name); + (*h)->value.intg = (unsigned long) (char*) ((char*)(*h)) + sizeof(inthash_chain) + strlen(name) + 2; + return (void*)(*h)->value.intg; + } + return NULL; +} + +int inthash_read(inthash hashtable,char* name,long int* value) { + int pos = (inthash_key(name) % hashtable->hash_size); + inthash_chain* h=hashtable->hash[pos]; + while (h) { + if (strcmp(h->name,name)==0) { + *value=h->value.intg; + return 1; + } + h=h->next; + } + return 0; +} + +int inthash_readptr(inthash hashtable,char* name,long int* value) { + int ret; + *value = 0; + ret = inthash_read(hashtable, name, value); + if (*value == 0) + ret = 0; + return ret; +} + +void inthash_init(inthash hashtable) { + unsigned int i; + for(i=0;ihash_size;i++) { + hashtable->hash[i]=NULL; + } +} + +void inthash_delchain(inthash_chain* hash,t_inthash_freehandler free_handler) { + if (hash) { + inthash_delchain(hash->next,free_handler); + if (free_handler) { // pos is a malloc() block, delete it! + if (hash->value.intg) { + if (free_handler) + free_handler((void*)hash->value.intg); + else + freet((void*)hash->value.intg); + } + hash->value.intg=0; + } + freet(hash); + } +} + +void inthash_default_free_handler(void* value) { + if (value) + freet(value); +} + +// -- + +inthash inthash_new(int size) { + inthash hashtable=(inthash)calloct(1,sizeof(struct_inthash)); + if (hashtable) { + hashtable->hash_size=0; + hashtable->flag_valueismalloc=0; + if ((hashtable->hash=(inthash_chain**)calloct(size,sizeof(inthash_chain*)))) { + hashtable->hash_size=size; + inthash_init(hashtable); + } + } + return hashtable; +} + +int inthash_created(inthash hashtable) { + if (hashtable) + if (hashtable->hash) + return 1; + return 0; +} + +void inthash_value_is_malloc(inthash hashtable,int flag) { + hashtable->flag_valueismalloc=flag; +} + +void inthash_value_set_free_handler(inthash hashtable, t_inthash_freehandler free_handler) { + hashtable->free_handler = free_handler; +} + +void inthash_delete(inthash* hashtable) { + if (hashtable) { + if (*hashtable) { + if ((*hashtable)->hash) { + unsigned int i; + t_inthash_freehandler free_handler=NULL; + if ( (*hashtable)->flag_valueismalloc ) { + if ( (*hashtable)->free_handler ) + free_handler=(*hashtable)->free_handler; + else + free_handler=inthash_default_free_handler; + } + for(i=0;i<(*hashtable)->hash_size;i++) { + inthash_delchain((*hashtable)->hash[i],(*hashtable)->free_handler); + (*hashtable)->hash[i]=NULL; + } + freet((*hashtable)->hash); + (*hashtable)->hash = NULL; + } + freet(*hashtable); + *hashtable=NULL; + } + } +} diff --git a/src/htsinthash.h b/src/htsinthash.h new file mode 100644 index 0000000..c667cd4 --- /dev/null +++ b/src/htsinthash.h @@ -0,0 +1,94 @@ +/* ------------------------------------------------------------ */ +/* +HTTrack Website Copier, Offline Browser for Windows and Unix +Copyright (C) Xavier Roche and other contributors + +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 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. + + +Important notes: + +- We hereby ask people using this source NOT to use it in purpose of grabbing +emails addresses, or collecting any other private information on persons. +This would disgrace our work, and spoil the many hours we spent on it. + + +Please visit our Website: http://www.httrack.com +*/ + + +/* ------------------------------------------------------------ */ +/* File: httrack.c subroutines: */ +/* hash table system (fast index) */ +/* Author: Xavier Roche */ +/* ------------------------------------------------------------ */ + + + +#ifndef HTSINTHASH_DEFH +#define HTSINTHASH_DEFH + +// inthash -- simple hash table, using a key (char[]) and a value (ulong int) + +// simple hash table for other routines +typedef struct inthash_chain { + char* name; /* key (name) */ + union { + unsigned long int intg; /* integer value */ + void* ptr; /* ptr value */ + } value; + struct inthash_chain* next; /* next element */ +} inthash_chain; + +// structure behind inthash +typedef void (* t_inthash_freehandler)(void* value); +typedef struct { + inthash_chain** hash; + t_inthash_freehandler free_handler; + unsigned int hash_size; + unsigned short flag_valueismalloc; +} struct_inthash; + +// main inthash type +typedef struct_inthash* inthash; + +// subfunctions +unsigned long int inthash_key(char* value); +void inthash_init(inthash hashtable); +void inthash_delchain(inthash_chain* hash,t_inthash_freehandler free_handler); +void inthash_default_free_handler(void* value); + +// main functions: + + +/* Hash functions: */ +inthash inthash_new(int size); /* Create a new hash table */ +int inthash_created(inthash hashtable); /* Test if the hash table was successfully created */ +void inthash_delete(inthash* hashtable); /* Delete an hash table */ +void inthash_value_is_malloc(inthash hashtable,int flag); /* Is the 'value' member a value that needs to be free()'ed ? */ +void inthash_value_set_free_handler(inthash hashtable, /* value free() handler (default one is 'free') */ + t_inthash_freehandler free_handler); +/* */ +int inthash_read(inthash hashtable,char* name,long int* value); /* Read entry from the hash table */ +int inthash_readptr(inthash hashtable,char* name,long int* value); /* Same function, but returns 0 upon null ptr */ +/* */ +void inthash_add(inthash hashtable,char* name,long int value); /* Add entry in the hash table */ +void* inthash_addblk(inthash hashtable,char* name,int blksize); /* Add entry in the hash table and set value to a new memory block */ +int inthash_write(inthash hashtable,char* name,long int value); /* Overwrite/add entry in the hash table */ +int inthash_inc(inthash hashtable,char* name); /* Increment entry in the hash table */ +/* End of hash functions: */ + + +#endif diff --git a/src/htsjava.c b/src/htsjava.c index bb29692..afb166b 100644 --- a/src/htsjava.c +++ b/src/htsjava.c @@ -41,8 +41,9 @@ Please visit our Website: http://www.httrack.com // htsjava.c - Parseur de classes java #include "stdio.h" -#include "htssystem.h" +#include "htsglobal.h" #include "htscore.h" + #include "htsjava.h" #include @@ -53,11 +54,10 @@ Please visit our Website: http://www.httrack.com //#include -#ifndef HTS_LITTLE_ENDIAN -#define REVERSE_ENDIAN 1 -#else -#define REVERSE_ENDIAN 0 -#endif +static int reverse_endian(void) { + int endian = 1; + return ( * ( (char*) &endian) == 1); +} /* big/little endian swap */ #define hts_swap16(A) ( (((A) & 0xFF)<<8) | (((A) & 0xFF00)>>8) ) @@ -80,19 +80,33 @@ Please visit our Website: http://www.httrack.com #define JAVADEBUG 0 -int hts_parse_java(char *file,char* err_msg) +int hts_detect_java(htsmoduleStruct* str) { + char* savename = str->filename; + if (savename) { + int len = (int) strlen(savename); + if (len > 6 && strfield(savename + len - 6,".class")) { + return 1; + } + } + return 0; +} + +int hts_parse_java(htsmoduleStruct* str) { FILE *fpout; JAVA_HEADER header; RESP_STRUCT *tab; + char* file = str->filename; + str->relativeToHtmlLink = 1; + #if JAVADEBUG printf("fopen\n"); #endif if ((fpout = fopen(fconv(file), "r+b")) == NULL) { //fprintf(stderr, "Cannot open input file.\n"); - sprintf(err_msg,"Unable to open file %s",file); + sprintf(str->err_msg,"Unable to open file %s",file); return 0; // une erreur.. } @@ -102,7 +116,7 @@ int hts_parse_java(char *file,char* err_msg) //if (fread(&header,1,sizeof(JAVA_HEADER),fpout) != sizeof(JAVA_HEADER)) { // pas complet.. if (fread(&header,1,10,fpout) != 10) { // pas complet.. fclose(fpout); - sprintf(err_msg,"File header too small (file len = "LLintP")",(LLint)fsize(file)); + sprintf(str->err_msg,"File header too small (file len = "LLintP")",(LLint)fsize(file)); return 0; } @@ -110,19 +124,19 @@ int hts_parse_java(char *file,char* err_msg) printf("header\n"); #endif // tester en tête -#if REVERSE_ENDIAN - header.magic = hts_swap32(header.magic); - header.count = hts_swap16(header.count); -#endif + if (reverse_endian()) { + header.magic = hts_swap32(header.magic); + header.count = hts_swap16(header.count); + } if(header.magic!=0xCAFEBABE) { - sprintf(err_msg,"non java file"); + sprintf(str->err_msg,"non java file"); if (fpout) { fclose(fpout); fpout=NULL; } return 0; } tab =(RESP_STRUCT*)calloct(header.count,sizeof(RESP_STRUCT)); if (!tab) { - sprintf(err_msg,"Unable to alloc %d bytes",(int)sizeof(RESP_STRUCT)); + sprintf(str->err_msg,"Unable to alloc %d bytes",(int)sizeof(RESP_STRUCT)); if (fpout) { fclose(fpout); fpout=NULL; } return 0; // erreur.. } @@ -135,12 +149,12 @@ int hts_parse_java(char *file,char* err_msg) for (i = 1; i < header.count; i++) { int err=0; // ++ - tab[i]=readtable(fpout,tab[i],&err,err_msg); + tab[i]=readtable(str,fpout,tab[i],&err); if (!err) { if ((tab[i].type == HTS_LONG) ||(tab[i].type == HTS_DOUBLE)) i++; //2 element si double ou float } else { // ++ une erreur est survenue! - if (strnotempty(err_msg)==0) - strcpy(err_msg,"Internal readtable error"); + if (strnotempty(str->err_msg)==0) + strcpybuff(str->err_msg,"Internal readtable error"); freet(tab); if (fpout) { fclose(fpout); fpout=NULL; } return 0; @@ -180,7 +194,7 @@ int hts_parse_java(char *file,char* err_msg) printf("add %s\n",tempo); #endif if (tab[tab[i].index1].file_position >= 0) - hts_add_file(tempo,tab[tab[i].index1].file_position); + str->addLink(str,tempo); /* tab[tab[i].index1].file_position */ } } @@ -205,7 +219,8 @@ int hts_parse_java(char *file,char* err_msg) // error: !=0 si erreur fatale -RESP_STRUCT readtable(FILE *fp,RESP_STRUCT trans,int* error,char* err_msg) +RESP_STRUCT readtable(htsmoduleStruct* str, + FILE *fp, RESP_STRUCT trans, int* error) { unsigned short int length; int j; @@ -214,54 +229,54 @@ RESP_STRUCT readtable(FILE *fp,RESP_STRUCT trans,int* error,char* err_msg) trans.type = (int)(unsigned char)fgetc(fp); switch (trans.type) { case HTS_CLASS: - strcpy(trans.name,"Class"); + strcpybuff(trans.name,"Class"); trans.index1 = readshort(fp); break; case HTS_FIELDREF: - strcpy(trans.name,"Field Reference"); + strcpybuff(trans.name,"Field Reference"); trans.index1 = readshort(fp); readshort(fp); break; case HTS_METHODREF: - strcpy(trans.name,"Method Reference"); + strcpybuff(trans.name,"Method Reference"); trans.index1 = readshort(fp); readshort(fp); break; case HTS_INTERFACE: - strcpy(trans.name,"Interface Method Reference"); + strcpybuff(trans.name,"Interface Method Reference"); trans.index1 =readshort(fp); readshort(fp); break; case HTS_NAMEANDTYPE: - strcpy(trans.name,"Name and Type"); + strcpybuff(trans.name,"Name and Type"); trans.index1 = readshort(fp); readshort(fp); break; case HTS_STRING: // CONSTANT_String - strcpy(trans.name,"String"); + strcpybuff(trans.name,"String"); trans.index1 = readshort(fp); break; case HTS_INTEGER: - strcpy(trans.name,"Integer"); + strcpybuff(trans.name,"Integer"); for(j=0;j<4;j++) fgetc(fp); break; case HTS_FLOAT: - strcpy(trans.name,"Float"); + strcpybuff(trans.name,"Float"); for(j=0;j<4;j++) fgetc(fp); break; case HTS_LONG: - strcpy(trans.name,"Long"); + strcpybuff(trans.name,"Long"); for(j=0;j<8;j++) fgetc(fp); break; case HTS_DOUBLE: - strcpy(trans.name,"Double"); + strcpybuff(trans.name,"Double"); for(j=0;j<8;j++) fgetc(fp); break; @@ -269,9 +284,9 @@ RESP_STRUCT readtable(FILE *fp,RESP_STRUCT trans,int* error,char* err_msg) case HTS_UNICODE: if (trans.type == HTS_ASCIZ) - strcpy(trans.name,"HTS_ASCIZ"); + strcpybuff(trans.name,"HTS_ASCIZ"); else - strcpy(trans.name,"HTS_UNICODE"); + strcpybuff(trans.name,"HTS_UNICODE"); { char buffer[1024]; @@ -295,10 +310,10 @@ RESP_STRUCT readtable(FILE *fp,RESP_STRUCT trans,int* error,char* err_msg) // if(tris(buffer)==1) printf("%s\n ",buffer); // if(tris(buffer)==2) printf("%s\n ",printname(buffer)); //#endif - if(tris(buffer)==1) hts_add_file(buffer,trans.file_position); - else if(tris(buffer)==2) hts_add_file(printname(buffer),trans.file_position); + if(tris(buffer)==1) str->addLink(str, buffer); /* trans.file_position */ + else if(tris(buffer)==2) str->addLink(str, printname(buffer)); - strcpy(trans.name,buffer); + strcpybuff(trans.name,buffer); } else { // gros pb while ( (length > 0) && (!feof(fp))) { fgetc(fp); @@ -307,7 +322,7 @@ RESP_STRUCT readtable(FILE *fp,RESP_STRUCT trans,int* error,char* err_msg) if (!feof(fp)) { trans.type=-1; } else { - sprintf(err_msg,"Internal stucture error (ASCII)"); + sprintf(str->err_msg,"Internal stucture error (ASCII)"); *error = 1; } return(trans); @@ -317,7 +332,7 @@ RESP_STRUCT readtable(FILE *fp,RESP_STRUCT trans,int* error,char* err_msg) default: // printf("Type inconnue\n"); // on arrête tout - sprintf(err_msg,"Internal structure unknown (type %d)",trans.type); + sprintf(str->err_msg,"Internal structure unknown (type %d)",trans.type); *error = 1; return(trans); break; @@ -331,11 +346,10 @@ unsigned short int readshort(FILE *fp) unsigned short int valint; fread(&valint,sizeof(valint),1,fp); -#if REVERSE_ENDIAN - return hts_swap16(valint); -#else - return valint; -#endif + if (reverse_endian()) + return hts_swap16(valint); + else + return valint; } @@ -383,7 +397,7 @@ char * printname(char name[1024]) for (j = 0; j < (int) strlen(name); j++,p++) { if (*p == '/') *p1='.'; if (*p==';'){*p1='\0'; - strcat(rname,".class"); + strcatbuff(rname,".class"); return (rname);} else *p1=*p; p1++; diff --git a/src/htsjava.h b/src/htsjava.h index 66a75a5..b3d17d4 100644 --- a/src/htsjava.h +++ b/src/htsjava.h @@ -38,8 +38,8 @@ Please visit our Website: http://www.httrack.com #ifndef HTSJAVA_DEFH #define HTSJAVA_DEFH -/* LLint fsize(char* s); */ -int fsize(char* s); +#include +#include "htsmodules.h" typedef struct { unsigned long int magic; @@ -57,10 +57,11 @@ typedef struct { } RESP_STRUCT; -int hts_parse_java(char *file,char* err_msg); +int hts_detect_java(htsmoduleStruct* str); +int hts_parse_java(htsmoduleStruct* str); RESP_STRUCT affecte(int i1,int i2,RESP_STRUCT *i3,RESP_STRUCT *i4,int i5); //unsigned int swap(long int nomber,int digit); -RESP_STRUCT readtable(FILE *fp,RESP_STRUCT,int*,char*); +RESP_STRUCT readtable(htsmoduleStruct* str,FILE *fp,RESP_STRUCT,int*); unsigned short int readshort(FILE *fp); int tris(char*); char * printname(char [1024]); diff --git a/src/htslib.c b/src/htslib.c index e4e6006..3954f9c 100644 --- a/src/htslib.c +++ b/src/htslib.c @@ -50,8 +50,16 @@ Please visit our Website: http://www.httrack.com #if HTS_WIN #include #else +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_STAT_H +#include +#endif +#ifdef HAVE_UNISTD_H #include #endif +#endif #include #include #include @@ -61,11 +69,7 @@ Please visit our Website: http://www.httrack.com #if HTS_WIN #include #else -#if HTS_PLATFORM!=3 #include -#else -#include -#endif #endif /* END specific definitions */ @@ -95,7 +99,7 @@ int IPV6_resolver = 0; /* détection complémentaire */ -const char hts_detect[][32] = { +const char* hts_detect[] = { "archive", "background", "data", // OBJECT @@ -112,13 +116,13 @@ const char hts_detect[][32] = { }; /* détecter début */ -const char hts_detectbeg[][32] = { +const char* hts_detectbeg[] = { "hotspot", /* hotspot1=..,hotspot2=.. */ "" }; /* ne pas détcter de liens dedans */ -const char hts_nodetect[][32] = { +const char* hts_nodetect[] = { "accept-charset", "accesskey", "action", @@ -160,7 +164,7 @@ const char hts_nodetect[][32] = { /* détection de mini-code javascript */ /* ALSO USED: detection based on the name: onXXX="" where XXX starts with upper case letter */ -const char hts_detect_js[][32] = { +const char* hts_detect_js[] = { "onAbort", "onBlur", "onChange", @@ -184,30 +188,42 @@ const char hts_detect_js[][32] = { "onSelect", "onSubmit", "onUnload", + "style", /* hack for CSS code data */ + "" +}; + +const char* hts_main_mime[] = { + "application", + "audio", + "image", + "message", + "multipart", + "text", + "video", "" }; /* détection "...URL=" */ -const char hts_detectURL[][32] = { +const char* hts_detectURL[] = { "content", "" }; /* tags où l'URL doit être réécrite mais non capturée */ -const char hts_detectandleave[][32] = { +const char* hts_detectandleave[] = { "action", "" }; -/* ne pas renommer les types renvoyés (couvent types inconnus) */ -const char hts_mime_keep[][32] = { +/* ne pas renommer les types renvoyés (souvent types inconnus) */ +const char* hts_mime_keep[] = { "application/octet-stream", "text/plain", "" }; /* pas de type mime connu, mais extension connue */ -const char hts_ext_dynamic[][32] = { +const char* hts_ext_dynamic[] = { "php3", "php", "php4", @@ -218,11 +234,14 @@ const char hts_ext_dynamic[][32] = { "pl", /*"exe",*/ "cfm", + "nsf", /* lotus */ "" }; -/* types MIME */ -const char hts_mime[][2][32] = { +/* types MIME + note: application/octet-stream should not be used here +*/ +const char* hts_mime[][2] = { {"application/acad","dwg"}, {"application/arj","arj"}, {"application/clariscad","ccad"}, @@ -386,24 +405,167 @@ const char hts_mime[][2][32] = { {"x-conference/x-cooltalk","ice"}, /*{"application/x-httpd-cgi","cgi"},*/ {"x-world/x-vrml","wrl"}, - + + /* More from w3schools.com */ + { "application/envoy", "evy" }, + { "application/fractals", "fif" }, + { "application/futuresplash", "spl" }, + { "application/hta", "hta" }, + { "application/internet-property-stream", "acx" }, + { "application/msword", "dot" }, + { "application/olescript", "axs" }, + { "application/pics-rules", "prf" }, + { "application/pkcs10", "p10" }, + { "application/pkix-crl", "crl" }, + { "application/set-payment-initiation", "setpay" }, + { "application/set-registration-initiation", "setreg" }, + { "application/vnd.ms-excel", "xla" }, + { "application/vnd.ms-excel", "xlc" }, + { "application/vnd.ms-excel", "xlm" }, + { "application/vnd.ms-excel", "xls" }, + { "application/vnd.ms-excel", "xlt" }, + { "application/vnd.ms-excel", "xlw" }, + { "application/vnd.ms-pkicertstore", "sst" }, + { "application/vnd.ms-pkiseccat", "cat" }, + { "application/vnd.ms-powerpoint", "pot" }, + { "application/vnd.ms-powerpoint", "pps" }, + { "application/vnd.ms-powerpoint", "ppt" }, + { "application/vnd.ms-project", "mpp" }, + { "application/vnd.ms-works", "wcm" }, + { "application/vnd.ms-works", "wdb" }, + { "application/vnd.ms-works", "wks" }, + { "application/vnd.ms-works", "wps" }, + { "application/x-compress", "z" }, + { "application/x-compressed", "tgz" }, + { "application/x-internet-signup", "ins" }, + { "application/x-internet-signup", "isp" }, + { "application/x-iphone", "iii" }, + { "application/x-javascript", "js" }, + { "application/x-msaccess", "mdb" }, + { "application/x-mscardfile", "crd" }, + { "application/x-msclip", "clp" }, + { "application/x-msmediaview", "m13" }, + { "application/x-msmediaview", "m14" }, + { "application/x-msmediaview", "mvb" }, + { "application/x-msmetafile", "wmf" }, + { "application/x-msmoney", "mny" }, + { "application/x-mspublisher", "pub" }, + { "application/x-msschedule", "scd" }, + { "application/x-msterminal", "trm" }, + { "application/x-perfmon", "pma" }, + { "application/x-perfmon", "pmc" }, + { "application/x-perfmon", "pml" }, + { "application/x-perfmon", "pmr" }, + { "application/x-perfmon", "pmw" }, + { "application/x-pkcs12", "p12" }, + { "application/x-pkcs12", "pfx" }, + { "application/x-pkcs7-certificates", "p7b" }, + { "application/x-pkcs7-certificates", "spc" }, + { "application/x-pkcs7-certreqresp", "p7r" }, + { "application/x-pkcs7-mime", "p7c" }, + { "application/x-pkcs7-mime", "p7m" }, + { "application/x-pkcs7-signature", "p7s" }, + { "application/x-troff-me", "me" }, + { "application/x-x509-ca-cert", "cer" }, + { "application/x-x509-ca-cert", "crt" }, + { "application/x-x509-ca-cert", "der" }, + { "application/ynd.ms-pkipko", "pko" }, + { "audio/mid", "mid" }, + { "audio/mid", "rmi" }, + { "audio/mpeg", "mp3" }, + { "audio/x-mpegurl", "m3u" }, + { "image/bmp", "bmp" }, + { "image/cis-cod", "cod" }, + { "image/pipeg", "jfif" }, + { "image/x-cmx", "cmx" }, + { "image/x-icon", "ico" }, + { "image/x-portable-bitmap", "pbm" }, + { "message/rfc822", "mht" }, + { "message/rfc822", "mhtml" }, + { "message/rfc822", "nws" }, + { "text/css", "css" }, + { "text/h323", "323" }, + { "text/html", "stm" }, + { "text/iuls", "uls" }, + { "text/plain", "bas" }, + { "text/scriptlet", "sct" }, + { "text/webviewhtml", "htt" }, + { "text/x-component", "htc" }, + { "text/x-vcard", "vcf" }, + { "video/mpeg", "mp2" }, + { "video/mpeg", "mpa" }, + { "video/mpeg", "mpv2" }, + { "video/x-la-asf", "lsf" }, + { "video/x-la-asf", "lsx" }, + { "video/x-ms-asf", "asf" }, + { "video/x-ms-asf", "asr" }, + { "video/x-ms-asf", "asx" }, + { "x-world/x-vrml", "flr" }, + { "x-world/x-vrml", "vrml" }, + { "x-world/x-vrml", "wrz" }, + { "x-world/x-vrml", "xaf" }, + { "x-world/x-vrml", "xof" }, + + /* Various */ + { "application/ogg", "ogg" }, + {"*","class"}, {"",""}}; // Reserved (RFC2396) -#define CHAR_RESERVED(c) ( strchr(";/?:@&=+$,",(unsigned char)(c)) != 0 ) +#define CIS(c,ch) ( ((unsigned char)(c)) == (ch) ) +#define CHAR_RESERVED(c) ( CIS(c,';') \ + || CIS(c,'/') \ + || CIS(c,'?') \ + || CIS(c,':') \ + || CIS(c,'@') \ + || CIS(c,'&') \ + || CIS(c,'=') \ + || CIS(c,'+') \ + || CIS(c,'$') \ + || CIS(c,',') ) +//#define CHAR_RESERVED(c) ( strchr(";/?:@&=+$,",(unsigned char)(c)) != 0 ) // Delimiters (RFC2396) -#define CHAR_DELIM(c) ( strchr("<>#%\"",(unsigned char)(c)) != 0 ) +#define CHAR_DELIM(c) ( CIS(c,'<') \ + || CIS(c,'>') \ + || CIS(c,'#') \ + || CIS(c,'%') \ + || CIS(c,'\"') ) +//#define CHAR_DELIM(c) ( strchr("<>#%\"",(unsigned char)(c)) != 0 ) // Unwise (RFC2396) -#define CHAR_UNWISE(c) ( strchr("{}|\\^[]`",(unsigned char)(c)) != 0 ) +#define CHAR_UNWISE(c) ( CIS(c,'{') \ + || CIS(c,'}') \ + || CIS(c,'|') \ + || CIS(c,'\\') \ + || CIS(c,'^') \ + || CIS(c,'[') \ + || CIS(c,']') \ + || CIS(c,'`') ) +//#define CHAR_UNWISE(c) ( strchr("{}|\\^[]`",(unsigned char)(c)) != 0 ) // Special (escape chars) (RFC2396 + >127 ) #define CHAR_LOW(c) ( ((unsigned char)(c) <= 31) ) #define CHAR_HIG(c) ( ((unsigned char)(c) >= 127) ) #define CHAR_SPECIAL(c) ( CHAR_LOW(c) || CHAR_HIG(c) ) // We try to avoid them and encode them instead -#define CHAR_XXAVOID(c) ( strchr(" *'\"!",(unsigned char)(c)) != 0 ) +#define CHAR_XXAVOID(c) ( CIS(c,' ') \ + || CIS(c,'*') \ + || CIS(c,'\'') \ + || CIS(c,'\"') \ + || CIS(c,'!') ) +//#define CHAR_XXAVOID(c) ( strchr(" *'\"!",(unsigned char)(c)) != 0 ) +#define CHAR_MARK(c) ( CIS(c,'-') \ + || CIS(c,'_') \ + || CIS(c,'.') \ + || CIS(c,'!') \ + || CIS(c,'~') \ + || CIS(c,'*') \ + || CIS(c,'\'') \ + || CIS(c,'(') \ + || CIS(c,')') ) +//#define CHAR_MARK(c) ( strchr("-_.!~*'()",(unsigned char)(c)) != 0 ) + // conversion éventuelle / vers antislash @@ -413,7 +575,7 @@ char* antislash(char* s) { char* a; NOSTATIC_RESERVE(buff, char, HTS_URLMAXSIZE*2); - strcpy(buff,s); + strcpybuff(buff,s); while(a=strchr(buff,'/')) *a='\\'; return buff; } @@ -442,7 +604,7 @@ htsblk httpget(char* url) { retour.size=0; retour.msg[0]='\0'; retour.statuscode=-1; - strcpy(retour.msg,"Error invalid URL"); + strcpybuff(retour.msg,"Error invalid URL"); return retour; } @@ -514,7 +676,7 @@ int http_xfopen(int mode,int treat,int waitconnect,char* xsend,char* adr,char* f if (retour) { if (retour->msg) { if (!strnotempty(retour->msg)) { - strcpy(retour->msg,"Connect error"); + strcpybuff(retour->msg,"Connect error"); } } } @@ -531,8 +693,8 @@ int http_xfopen(int mode,int treat,int waitconnect,char* xsend,char* adr,char* f if (!fexist(fconv(unescape_http(fil)))) if (fexist(fconv(unescape_http(fil+1)))) { char tempo[HTS_URLMAXSIZE*2]; - strcpy(tempo,fil+1); - strcpy(fil,tempo); + strcpybuff(tempo,fil+1); + strcpybuff(fil,tempo); } // Ouvrir @@ -540,9 +702,9 @@ int http_xfopen(int mode,int treat,int waitconnect,char* xsend,char* adr,char* f retour->msg[0]='\0'; soc=INVALID_SOCKET; if (retour->totalsize<0) - strcpy(retour->msg,"Unable to open file"); + strcpybuff(retour->msg,"Unable to open local file"); else if (retour->totalsize==0) - strcpy(retour->msg,"File empty"); + strcpybuff(retour->msg,"File empty"); else { // Note: On passe par un FILE* (plus propre) //soc=open(fil,O_RDONLY,0); // en lecture seule! @@ -555,13 +717,13 @@ int http_xfopen(int mode,int treat,int waitconnect,char* xsend,char* adr,char* f retour->soc=soc; if (soc!=INVALID_SOCKET) { retour->statuscode=200; // OK - strcpy(retour->msg,"OK"); + strcpybuff(retour->msg,"OK"); guess_httptype(retour->contenttype,fil); } else if (strnotempty(retour->msg)==0) - strcpy(retour->msg,"Unable to open file"); + strcpybuff(retour->msg,"Unable to open local file"); return soc; // renvoyer } else { // HEAD ou POST : interdit sur un local!!!! (c'est idiot!) - strcpy(retour->msg,"Unexpected Head/Post local request"); + strcpybuff(retour->msg,"Unexpected Head/Post local request"); soc=INVALID_SOCKET; // erreur retour->soc=soc; return soc; @@ -647,10 +809,10 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char buff[0]='\0'; // header Date - //strcat(buff,"Date: "); + //strcatbuff(buff,"Date: "); //time_gmt_rfc822(buff); // obtenir l'heure au format rfc822 //sendc("\n"); - //strcat(buff,buff); + //strcatbuff(buff,buff); // possibilité non documentée: >post: et >postfile: // si présence d'un tag >post: alors executer un POST @@ -686,58 +848,58 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char if (strnotempty(buff)==0) { // PAS POSTFILE // Type de requète? if ((search_tag) && (mode==0)) { - strcat(buff,"POST "); + strcatbuff(buff,"POST "); } else if (mode==0) { // GET - strcat(buff,"GET "); + strcatbuff(buff,"GET "); } else { // if (mode==1) { if (!retour->req.http11) // forcer HTTP/1.0 - strcat(buff,"GET "); // certains serveurs (cgi) buggent avec HEAD + strcatbuff(buff,"GET "); // certains serveurs (cgi) buggent avec HEAD else - strcat(buff,"HEAD "); + strcatbuff(buff,"HEAD "); } // si on gère un proxy, il faut une Absolute URI: on ajoute avant http://www.adr.dom - if (retour->req.proxy.active) { + if ( retour->req.proxy.active && (strncmp(adr,"https://", 8) != 0) ) { if (!link_has_authority(adr)) { // default http #if HDEBUG printf("Proxy Use: for %s%s proxy %d port %d\n",adr,fil,retour->req.proxy.name,retour->req.proxy.port); #endif - strcat(buff,"http://"); - strcat(buff,jump_identification(adr)); + strcatbuff(buff,"http://"); + strcatbuff(buff,jump_identification(adr)); } else { // ftp:// en proxy http #if HDEBUG printf("Proxy Use for ftp: for %s%s proxy %d port %d\n",adr,fil,retour->req.proxy.name,retour->req.proxy.port); #endif direct_url=1; // ne pas analyser user/pass - strcat(buff,adr); + strcatbuff(buff,adr); } } // NOM DU FICHIER // on slash doit être présent en début, sinon attention aux bad request! (400) - if (*fil!='/') strcat(buff,"/"); + if (*fil!='/') strcatbuff(buff,"/"); { char tempo[HTS_URLMAXSIZE*2]; tempo[0]='\0'; if (search_tag) - strncat(tempo,fil,(int) (search_tag - fil)); + strncatbuff(tempo,fil,(int) (search_tag - fil)); else - strcpy(tempo,fil); + strcpybuff(tempo,fil); escape_check_url(tempo); - strcat(buff,tempo); // avec échappement + strcatbuff(buff,tempo); // avec échappement } // protocole if (!retour->req.http11) { // forcer HTTP/1.0 //use_11=0; - strcat(buff," HTTP/1.0\x0d\x0a"); + strcatbuff(buff," HTTP/1.0\x0d\x0a"); } else { // Requète 1.1 //use_11=1; - strcat(buff," HTTP/1.1\x0d\x0a"); + strcatbuff(buff," HTTP/1.1\x0d\x0a"); } /* supplemental data */ - if (xsend) strcat(buff,xsend); // éventuelles autres lignes + if (xsend) strcatbuff(buff,xsend); // éventuelles autres lignes // tester proxy authentication if (retour->req.proxy.active) { @@ -748,12 +910,12 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char char user_pass[256]; autorisation[0]=user_pass[0]='\0'; // - strncat(user_pass,astart,(int) (a - astart) - 1); - strcpy(user_pass,unescape_http(user_pass)); - code64(user_pass,autorisation); - strcat(buff,"Proxy-Authorization: Basic "); - strcat(buff,autorisation); - strcat(buff,H_CRLF); + strncatbuff(user_pass,astart,(int) (a - astart) - 1); + strcpybuff(user_pass,unescape_http(user_pass)); + code64((unsigned char*)user_pass,(int)strlen(user_pass),(unsigned char*)autorisation,0); + strcatbuff(buff,"Proxy-Authorization: Basic "); + strcatbuff(buff,autorisation); + strcatbuff(buff,H_CRLF); #if HDEBUG printf("Proxy-Authenticate, %s (code: %s)\n",user_pass,autorisation); #endif @@ -772,11 +934,11 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char (strncmp(adr, "https://", 8) == 0) /* or referer AND addresses are https */ ) ) { // PAS file:// - strcat(buff,"Referer: "); - strcat(buff,"http://"); - strcat(buff,jump_identification(referer_adr)); - strcat(buff,referer_fil); - strcat(buff,H_CRLF); + strcatbuff(buff,"Referer: "); + strcatbuff(buff,"http://"); + strcatbuff(buff,jump_identification(referer_adr)); + strcatbuff(buff,referer_fil); + strcatbuff(buff,H_CRLF); } } } @@ -786,7 +948,7 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char if (search_tag) { char clen[256]; sprintf(clen,"Content-length: %d"H_CRLF,(int)(strlen(unescape_http(search_tag+strlen(POSTTOK)+1)))); - strcat(buff,clen); + strcatbuff(buff,clen); } } @@ -802,40 +964,40 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char if (b) { max_cookies--; if (!cook) { - strcat(buff,"Cookie: "); - strcat(buff,"$Version=1; "); + strcatbuff(buff,"Cookie: "); + strcatbuff(buff,"$Version=1; "); cook=1; } else - strcat(buff,"; "); - strcat(buff,cookie_get(b,5)); - strcat(buff,"="); - strcat(buff,cookie_get(b,6)); - strcat(buff,"; $Path="); - strcat(buff,cookie_get(b,2)); + strcatbuff(buff,"; "); + strcatbuff(buff,cookie_get(b,5)); + strcatbuff(buff,"="); + strcatbuff(buff,cookie_get(b,6)); + strcatbuff(buff,"; $Path="); + strcatbuff(buff,cookie_get(b,2)); b=cookie_nextfield(b); } } while( (b) && (max_cookies>0) && ((int)strlen(buff)req.http11 && !retour->req.nokeepalive) { + strcatbuff(buff,"Connection: Keep-Alive"H_CRLF); + } else { + strcatbuff(buff,"Connection: close"H_CRLF); + } { char* real_adr=jump_identification(adr); //if ((use_11) || (retour->user_agent_send)) { // Pour le 1.1 on utilise un Host: if (!direct_url) { // pas ftp:// par exemple //if (!retour->req.proxy.active) { - strcat(buff,"Host: "); strcat(buff,real_adr); strcat(buff,H_CRLF); + strcatbuff(buff,"Host: "); strcatbuff(buff,real_adr); strcatbuff(buff,H_CRLF); //} } //} @@ -845,26 +1007,45 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char char s[256]; // HyperTextSeeker/"HTSVERSION sprintf(s,"User-Agent: %s"H_CRLF,retour->req.user_agent); - strcat(buff,s); + strcatbuff(buff,s); // pour les serveurs difficiles - strcat(buff,"Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/svg+xml, */*"H_CRLF); + strcatbuff(buff,"Accept: " + "image/png, image/jpeg, image/pjpeg, image/x-xbitmap, image/svg+xml" /* Accepted */ + ", " + "image/gif;q=0.9" /* also accepted but with lower preference */ + ", " + "*/*;q=0.1" /* also accepted but with even lower preference */ + H_CRLF); if (strnotempty(retour->req.lang_iso)) { - strcat(buff,"Accept-Language: "); strcat(buff,retour->req.lang_iso); strcat(buff,H_CRLF); + strcatbuff(buff,"Accept-Language: "); strcatbuff(buff,retour->req.lang_iso); strcatbuff(buff,H_CRLF); } - strcat(buff,"Accept-Charset: iso-8859-1, *"H_CRLF); + strcatbuff(buff,"Accept-Charset: " + "iso-8859-1" /* we prefer ISO-8859-1 */ + ", " + "iso-8859-*;q=0.9" /* or ISO-8859-* */ + ", " + "utf-8;q=0.66" /* UTF8 is also accepted */ + ", " + "*;q=0.33" /* and any other charset */ + H_CRLF); if (retour->req.http11) { #if HTS_USEZLIB - if ((!retour->req.range_used) && (!retour->req.nocompression)) - strcat(buff,"Accept-Encoding: gzip, deflate, compress, identity"H_CRLF); + //strcatbuff(buff,"Accept-Encoding: gzip, deflate, compress, identity"H_CRLF); + if (gz_is_available && (!retour->req.range_used) && (!retour->req.nocompression)) + strcatbuff(buff,"Accept-Encoding: " + "gzip" /* gzip if the preffered encoding */ + ", " + "identity;q=0.9" + H_CRLF); else - strcat(buff,"Accept-Encoding: identity"H_CRLF); /* no compression */ + strcatbuff(buff,"Accept-Encoding: identity"H_CRLF); /* no compression */ #else - strcat(buff,"Accept-Encoding: identity"H_CRLF); /* no compression */ + strcatbuff(buff,"Accept-Encoding: identity"H_CRLF); /* no compression */ #endif } } else { - strcat(buff,"Accept: */*"H_CRLF); // le minimum + strcatbuff(buff,"Accept: */*"H_CRLF); // le minimum } /* Authentification */ @@ -878,40 +1059,40 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char if (!direct_url) { // pas ftp:// par exemple char user_pass[256]; user_pass[0]='\0'; - strncat(user_pass,astart,(int) (a - astart) - 1); - strcpy(user_pass,unescape_http(user_pass)); - code64(user_pass,autorisation); + strncatbuff(user_pass,astart,(int) (a - astart) - 1); + strcpybuff(user_pass,unescape_http(user_pass)); + code64((unsigned char*)user_pass,(int)strlen(user_pass),(unsigned char*)autorisation,0); if (strcmp(fil,"/robots.txt")) /* pas robots.txt */ bauth_add(cookie,astart,fil,autorisation); } } else if ( (a=bauth_check(cookie,real_adr,fil)) ) - strcpy(autorisation,a); + strcpybuff(autorisation,a); /* On a une autorisation a donner? */ if (strnotempty(autorisation)) { - strcat(buff,"Authorization: Basic "); - strcat(buff,autorisation); - strcat(buff,H_CRLF); + strcatbuff(buff,"Authorization: Basic "); + strcatbuff(buff,autorisation); + strcatbuff(buff,H_CRLF); } } } - //strcat(buff,"Accept-Language: en\n"); - //strcat(buff,"Accept-Charset: iso-8859-1,*,utf-8\n"); + //strcatbuff(buff,"Accept-Language: en\n"); + //strcatbuff(buff,"Accept-Charset: iso-8859-1,*,utf-8\n"); // CRLF de fin d'en tête - strcat(buff,H_CRLF); + strcatbuff(buff,H_CRLF); // données complémentaires? if (search_tag) if (mode==0) // GET! - strcat(buff,unescape_http(search_tag+strlen(POSTTOK)+1)); + strcatbuff(buff,unescape_http(search_tag+strlen(POSTTOK)+1)); } #if HDEBUG #endif if (_DEBUG_HEAD) { if (ioinfo) { - fprintf(ioinfo,"request for %s%s:\r\n",jump_identification(adr),fil); + fprintf(ioinfo,"[%d] request for %s%s:\r\n",retour->debugid,jump_identification(adr),fil); fprintfio(ioinfo,buff,"<<< "); fprintf(ioinfo,"\r\n"); fflush(ioinfo); @@ -919,13 +1100,25 @@ int http_sendhead(t_cookie* cookie,int mode,char* xsend,char* adr,char* fil,char } // Fin test pas postfile // + // Callback +#if HTS_ANALYSTE + if (hts_htmlcheck_sendhead != NULL) { + int test_head=hts_htmlcheck_sendhead(buff, adr, fil, referer_adr, referer_fil, retour); + if (test_head!=1) { + deletesoc_r(retour); + strcpybuff(retour->msg,"Header refused by external wrapper"); + retour->soc=INVALID_SOCKET; + } + } +#endif + // Envoi if (sendc(retour, buff)<0) { // ERREUR, socket rompue?... //if (sendc(retour->soc,buff) != strlen(buff)) { // ERREUR, socket rompue?... deletesoc_r(retour); // fermer tout de même // et tenter de reconnecter - strcpy(retour->msg,"Broken pipe"); + strcpybuff(retour->msg,"Write error"); retour->soc=INVALID_SOCKET; } @@ -955,44 +1148,46 @@ void treatfirstline(htsblk* retour,char* rcvd) { while ((*a!=' ') && (*a!='\0') && (*a!=10) && (*a!=13) && (*a!=9)) a++; while ((*a==' ') || (*a==10) || (*a==13) || (*a==9)) a++; // épurer espaces if ((strlen(a) > 1) && (strlen(a) < 64) ) // message retour - strcpy(retour->msg,a); + strcpybuff(retour->msg,a); else infostatuscode(retour->msg,retour->statuscode); // type MIME par défaut2 - strcpy(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); + strcpybuff(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); } else { // pas de code! retour->statuscode=-1; - strcpy(retour->msg,"Unknown response structure"); + strcpybuff(retour->msg,"Unknown response structure"); } } else { // euhh?? retour->statuscode=-1; - strcpy(retour->msg,"Unknown response structure"); + strcpybuff(retour->msg,"Unknown response structure"); } } else { if (*a == '<') { /* This is dirty .. */ retour->statuscode=200; - strcpy(retour->msg, "Unknown, assuming junky server"); - strcpy(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); + retour->keep_alive=0; + strcpybuff(retour->msg, "Unknown, assuming junky server"); + strcpybuff(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); } else if (strnotempty(a)) { retour->statuscode=-1; - strcpy(retour->msg,"Unknown response structure, no HTTP/ response given"); + strcpybuff(retour->msg,"Unknown (not HTTP/xx) response structure"); } else { /* This is dirty .. */ retour->statuscode=200; - strcpy(retour->msg, "Unknown, assuming junky server"); - strcpy(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); + retour->keep_alive=0; + strcpybuff(retour->msg, "Unknown, assuming junky server"); + strcpybuff(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); } } } else { // vide! /* retour->statuscode=-1; - strcpy(retour->msg,"Empty reponse or internal error"); + strcpybuff(retour->msg,"Empty reponse or internal error"); */ /* This is dirty .. */ retour->statuscode=200; - strcpy(retour->msg, "Unknown, assuming junky server"); - strcpy(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); + strcpybuff(retour->msg, "Unknown, assuming junky server"); + strcpybuff(retour->contenttype,HTS_HYPERTEXT_DEFAULT_MIME); } } @@ -1005,13 +1200,16 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { printf("ok, Content-length: détecté\n"); #endif sscanf(rcvd+p,LLintP,&(retour->totalsize)); + if (retour->totalsize == 0) { + retour->empty = 1; + } } else if ((p=strfield(rcvd,"Content-Disposition:"))!=0) { - while(*(rcvd+p)==' ') p++; // sauter espaces + while(is_realspace(*(rcvd+p))) p++; // sauter espaces if ((int) strlen(rcvd+p)<250) { // pas trop long? char tmp[256]; char *a=NULL,*b=NULL; - strcpy(tmp,rcvd+p); + strcpybuff(tmp,rcvd+p); a=strstr(tmp,"filename="); if (a) { a+=strlen("filename="); @@ -1029,7 +1227,7 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { if (b) { *b='\0'; if ((int) strlen(a) < 200) { // pas trop long? - strcpy(retour->cdispo,a); + strcpybuff(retour->cdispo,a); } } } @@ -1037,36 +1235,40 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { } } else if ((p=strfield(rcvd,"Last-Modified:"))!=0) { - while(*(rcvd+p)==' ') p++; // sauter espaces + while(is_realspace(*(rcvd+p))) p++; // sauter espaces if ((int) strlen(rcvd+p)<64) { // pas trop long? //struct tm* tm_time=convert_time_rfc822(rcvd+p); - strcpy(retour->lastmodified,rcvd+p); + strcpybuff(retour->lastmodified,rcvd+p); } } else if ((p=strfield(rcvd,"Date:"))!=0) { if (strnotempty(retour->lastmodified)==0) { /* pas encore de last-modified */ - while(*(rcvd+p)==' ') p++; // sauter espaces + while(is_realspace(*(rcvd+p))) p++; // sauter espaces if ((int) strlen(rcvd+p)<64) { // pas trop long? //struct tm* tm_time=convert_time_rfc822(rcvd+p); - strcpy(retour->lastmodified,rcvd+p); + strcpybuff(retour->lastmodified,rcvd+p); } } } else if ((p=strfield(rcvd,"Etag:"))!=0) { /* Etag */ if (retour) { - while(*(rcvd+p)==' ') p++; // sauter espaces + while(is_realspace(*(rcvd+p))) p++; // sauter espaces if ((int) strlen(rcvd+p)<64) // pas trop long? - strcpy(retour->etag,rcvd+p); + strcpybuff(retour->etag,rcvd+p); else // erreur.. ignorer retour->etag[0]='\0'; } } - else if ((p=strfield(rcvd,"Transfer-Encoding: chunked"))!=0) { // chunk! - retour->is_chunk=1; // chunked - //retour->http11=2; // chunked + // else if ((p=strfield(rcvd,"Transfer-Encoding: chunked"))!=0) { // chunk! + else if ((p=strfield(rcvd,"Transfer-Encoding:"))!=0) { // chunk! + while(is_realspace(*(rcvd+p))) p++; // sauter espaces + if (strfield(rcvd+p,"chunked")) { + retour->is_chunk=1; // chunked + //retour->http11=2; // chunked #if HDEBUG - printf("ok, Transfer-Encoding: détecté\n"); + printf("ok, Transfer-Encoding: détecté\n"); #endif + } } else if ((p=strfield(rcvd,"Content-type:"))!=0) { if (retour) { @@ -1074,13 +1276,37 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { // éviter les text/html; charset=foo { char* a=strchr(rcvd+p,';'); - if (a) *a='\0'; + if (a) { // extended information + *a='\0'; + a++; + while(is_space(*a)) a++; + if (strfield(a, "charset")) { + a += 7; + while(is_space(*a)) a++; + if (*a == '=') { + a++; + while(is_space(*a)) a++; + if (*a == '\"') a++; + while(is_space(*a)) a++; + if (*a) { + char* chs = a; + while(*a && !is_space(*a) && *a != '\"' && *a != ';') a++; + *a = '\0'; + if (*chs) { + if (strlen(chs) < sizeof(retour->charset) - 2) { + strcpybuff(retour->charset, chs); + } + } + } + } + } + } } sscanf(rcvd+p,"%s",tempo); - if (strlen(tempo)<64) // pas trop long!! - strcpy(retour->contenttype,tempo); + if (strlen(tempo) < sizeof(retour->contenttype) - 2) // pas trop long!! + strcpybuff(retour->contenttype,tempo); else - strcpy(retour->contenttype,"application/octet-stream-unknown"); // erreur + strcpybuff(retour->contenttype,"application/octet-stream-unknown"); // erreur } } else if ((p=strfield(rcvd,"Content-Range:"))!=0) { @@ -1091,16 +1317,63 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { } } } - else if ((p=strfield(rcvd,"Content-Encoding:"))!=0) { - if (retour) { - char tempo[1100]; - { - char* a=strchr(rcvd+p,';'); - if (a) *a='\0'; + else if ((p=strfield(rcvd,"Connection:"))!=0) { + char* a = rcvd + p; + while(is_space(*a)) a++; + if (*a) { + if (strfield(a, "Keep-Alive")) { + if (!retour->keep_alive) { + retour->keep_alive_max = 10; + retour->keep_alive_t = 15; + } + retour->keep_alive = 1; + } else { + retour->keep_alive = 0; } - sscanf(rcvd+p,"%s",tempo); + } + } + else if ((p=strfield(rcvd,"Keep-Alive:"))!=0) { + char* a = rcvd + p; + while(is_space(*a)) a++; + if (*a) { + char* p; + retour->keep_alive = 1; + retour->keep_alive_max = 10; + retour->keep_alive_t = 15; + if ((p=strstr(a, "timeout="))) { + p+=strlen("timeout="); + sscanf(p, "%d", &retour->keep_alive_t); + } + if ((p=strstr(a, "max="))) { + p+=strlen("max="); + sscanf(p, "%d", &retour->keep_alive_max); + } + if (retour->keep_alive_max <= 1 || retour->keep_alive_t < 3) { + retour->keep_alive = 0; + } + } + } + else if ((p=strfield(rcvd,"TE:"))!=0) { + char* a = rcvd + p; + while(is_space(*a)) a++; + if (*a) { + if (strfield(a, "trailers")) { + retour->keep_alive_trailers=1; + } + } + } + else if ((p=strfield(rcvd,"Content-Encoding:"))!=0) { + if (retour) { + char tempo[1100]; + char* a = rcvd + p; + while(is_space(*a)) a++; + { + char* a=strchr(rcvd+p,';'); + if (a) *a='\0'; + } + sscanf(a,"%s",tempo); if (strlen(tempo)<64) // pas trop long!! - strcpy(retour->contentencoding,tempo); + strcpybuff(retour->contentencoding,tempo); else retour->contentencoding[0]='\0'; // erreur #if HTS_USEZLIB @@ -1125,20 +1398,14 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { else if ((p=strfield(rcvd,"Location:"))!=0) { if (retour) { if (retour->location) { - while(*(rcvd+p)==' ') p++; // sauter espaces + while(is_realspace(*(rcvd+p))) p++; // sauter espaces if ((int) strlen(rcvd+p)location,rcvd+p); + strcpybuff(retour->location,rcvd+p); else // erreur.. ignorer retour->location[0]='\0'; } } } - else if ((p=strfield(rcvd,"Connection: Keep-Alive"))!=0) { - // non, pas de keep-alive! on déconnectera.. - } - else if ((p=strfield(rcvd,"Keep-Alive:"))!=0) { // params keep-alive - // rien à faire - } else if ( ((p=strfield(rcvd,"Set-Cookie:"))!=0) && (cookie) ) { // ohh un cookie char* a = rcvd+p; // pointeur char domain[256]; // domaine cookie (.netscape.com) @@ -1159,10 +1426,10 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { // initialiser cookie lu actuellement if (adr) - strcpy(domain,jump_identification(adr)); // domaine - strcpy(path,"/"); // chemin (/) - strcpy(cook_name,""); // nom cookie (MYCOOK) - strcpy(cook_value,""); // valeur (ID=toto,S=1234) + strcpybuff(domain,jump_identification(adr)); // domaine + strcpybuff(path,"/"); // chemin (/) + strcpybuff(cook_name,""); // nom cookie (MYCOOK) + strcpybuff(cook_value,""); // valeur (ID=toto,S=1234) // boucler jusqu'au prochain cookie ou la fin do { char* start_loop=a; @@ -1184,16 +1451,16 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { && (((int) (token_end - token_st))>0) && (((int) (value_end - value_st))>0) ) { name[0]='\0'; value[0]='\0'; - strncat(name,token_st,(int) (token_end - token_st)); - strncat(value,value_st,(int) (value_end - value_st)); + strncatbuff(name,token_st,(int) (token_end - token_st)); + strncatbuff(value,value_st,(int) (value_end - value_st)); #if DEBUG_COOK printf("detected cookie-av: name=\"%s\" value=\"%s\"\n",name,value); #endif if (strfield2(name,"domain")) { - strcpy(domain,value); + strcpybuff(domain,value); } else if (strfield2(name,"path")) { - strcpy(path,value); + strcpybuff(path,value); } else if (strfield2(name,"max-age")) { // ignoré.. @@ -1212,8 +1479,8 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { } else { if (strnotempty(cook_name)==0) { // noter premier: nom et valeur cookie - strcpy(cook_name,name); - strcpy(cook_value,value); + strcpybuff(cook_name,name); + strcpybuff(cook_value,value); } else { // prochain cookie a=start_loop; // on devra recommencer à cette position next=1; // enregistrer @@ -1238,52 +1505,52 @@ void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd) { // transforme le message statuscode en chaîne -void infostatuscode(char* msg,int statuscode) { +HTSEXT_API void infostatuscode(char* msg,int statuscode) { switch( statuscode) { // Erreurs HTTP, selon RFC - case 100: strcpy( msg,"Continue"); break; - case 101: strcpy( msg,"Switching Protocols"); break; - case 200: strcpy( msg,"OK"); break; - case 201: strcpy( msg,"Created"); break; - case 202: strcpy( msg,"Accepted"); break; - case 203: strcpy( msg,"Non-Authoritative Information"); break; - case 204: strcpy( msg,"No Content"); break; - case 205: strcpy( msg,"Reset Content"); break; - case 206: strcpy( msg,"Partial Content"); break; - case 300: strcpy( msg,"Multiple Choices"); break; - case 301: strcpy( msg,"Moved Permanently"); break; - case 302: strcpy( msg,"Moved Temporarily"); break; - case 303: strcpy( msg,"See Other"); break; - case 304: strcpy( msg,"Not Modified"); break; - case 305: strcpy( msg,"Use Proxy"); break; - case 306: strcpy( msg,"Undefined 306 error"); break; - case 307: strcpy( msg,"Temporary Redirect"); break; - case 400: strcpy( msg,"Bad Request"); break; - case 401: strcpy( msg,"Unauthorized"); break; - case 402: strcpy( msg,"Payment Required"); break; - case 403: strcpy( msg,"Forbidden"); break; - case 404: strcpy( msg,"Not Found"); break; - case 405: strcpy( msg,"Method Not Allowed"); break; - case 406: strcpy( msg,"Not Acceptable"); break; - case 407: strcpy( msg,"Proxy Authentication Required"); break; - case 408: strcpy( msg,"Request Time-out"); break; - case 409: strcpy( msg,"Conflict"); break; - case 410: strcpy( msg,"Gone"); break; - case 411: strcpy( msg,"Length Required"); break; - case 412: strcpy( msg,"Precondition Failed"); break; - case 413: strcpy( msg,"Request Entity Too Large"); break; - case 414: strcpy( msg,"Request-URI Too Large"); break; - case 415: strcpy( msg,"Unsupported Media Type"); break; - case 416: strcpy( msg,"Requested Range Not Satisfiable"); break; - case 417: strcpy( msg,"Expectation Failed"); break; - case 500: strcpy( msg,"Internal Server Error"); break; - case 501: strcpy( msg,"Not Implemented"); break; - case 502: strcpy( msg,"Bad Gateway"); break; - case 503: strcpy( msg,"Service Unavailable"); break; - case 504: strcpy( msg,"Gateway Time-out"); break; - case 505: strcpy( msg,"HTTP Version Not Supported"); break; + case 100: strcpybuff( msg,"Continue"); break; + case 101: strcpybuff( msg,"Switching Protocols"); break; + case 200: strcpybuff( msg,"OK"); break; + case 201: strcpybuff( msg,"Created"); break; + case 202: strcpybuff( msg,"Accepted"); break; + case 203: strcpybuff( msg,"Non-Authoritative Information"); break; + case 204: strcpybuff( msg,"No Content"); break; + case 205: strcpybuff( msg,"Reset Content"); break; + case 206: strcpybuff( msg,"Partial Content"); break; + case 300: strcpybuff( msg,"Multiple Choices"); break; + case 301: strcpybuff( msg,"Moved Permanently"); break; + case 302: strcpybuff( msg,"Moved Temporarily"); break; + case 303: strcpybuff( msg,"See Other"); break; + case 304: strcpybuff( msg,"Not Modified"); break; + case 305: strcpybuff( msg,"Use Proxy"); break; + case 306: strcpybuff( msg,"Undefined 306 error"); break; + case 307: strcpybuff( msg,"Temporary Redirect"); break; + case 400: strcpybuff( msg,"Bad Request"); break; + case 401: strcpybuff( msg,"Unauthorized"); break; + case 402: strcpybuff( msg,"Payment Required"); break; + case 403: strcpybuff( msg,"Forbidden"); break; + case 404: strcpybuff( msg,"Not Found"); break; + case 405: strcpybuff( msg,"Method Not Allowed"); break; + case 406: strcpybuff( msg,"Not Acceptable"); break; + case 407: strcpybuff( msg,"Proxy Authentication Required"); break; + case 408: strcpybuff( msg,"Request Time-out"); break; + case 409: strcpybuff( msg,"Conflict"); break; + case 410: strcpybuff( msg,"Gone"); break; + case 411: strcpybuff( msg,"Length Required"); break; + case 412: strcpybuff( msg,"Precondition Failed"); break; + case 413: strcpybuff( msg,"Request Entity Too Large"); break; + case 414: strcpybuff( msg,"Request-URI Too Large"); break; + case 415: strcpybuff( msg,"Unsupported Media Type"); break; + case 416: strcpybuff( msg,"Requested Range Not Satisfiable"); break; + case 417: strcpybuff( msg,"Expectation Failed"); break; + case 500: strcpybuff( msg,"Internal Server Error"); break; + case 501: strcpybuff( msg,"Not Implemented"); break; + case 502: strcpybuff( msg,"Bad Gateway"); break; + case 503: strcpybuff( msg,"Service Unavailable"); break; + case 504: strcpybuff( msg,"Gateway Time-out"); break; + case 505: strcpybuff( msg,"HTTP Version Not Supported"); break; // - default: if (strnotempty(msg)==0) strcpy( msg,"Unknown error"); break; + default: if (strnotempty(msg)==0) strcpybuff( msg,"Unknown error"); break; } } @@ -1376,6 +1643,25 @@ int check_readinput(htsblk* r) { return 0; } +// check if data is available +int check_readinput_t(T_SOC soc, int timeout) { + if (soc != INVALID_SOCKET) { + fd_set fds; // poll structures + struct timeval tv; // structure for select + FD_ZERO(&fds); + FD_SET(soc,&fds); + tv.tv_sec=timeout; + tv.tv_usec=0; + select(soc + 1,&fds,NULL,NULL,&tv); + if (FD_ISSET(soc,&fds)) + return 1; + else + return 0; + } else + return 0; +} + + // lecture d'un bloc sur une socket (ou un fichier!) // >=0 : nombre d'octets lus // <0 : fin ou erreur @@ -1462,9 +1748,9 @@ LLint http_xfread1(htsblk* r,int bufl) { // nouvelle taille if (nl > 0) { r->size+=nl; - if ((int) fwrite(buff,1,nl,r->out)!=nl) { + if ((INTsys)fwrite(buff,1,nl,r->out)!=nl) { r->statuscode=-1; - strcpy(r->msg,"Write error on disk"); + strcpybuff(r->msg,"Write error on disk"); nl=-1; } } @@ -1669,7 +1955,7 @@ htsblk http_test(char* adr,char* fil,char* loc) { } } else { retour.statuscode=-2; - strcpy(retour.msg,"Timeout While Testing"); + strcpybuff(retour.msg,"Timeout While Testing"); } @@ -1730,7 +2016,7 @@ int newhttp(char* _iadr,htsblk* retour,int port,int waitconnect) { } // adresse véritable (sans :xx) - strncat(iadr2,iadr,(int) (a - iadr)); + strncatbuff(iadr2,iadr,(int) (a - iadr)); // adresse sans le :xx hp = hts_gethostbyname(iadr2, &fullhostent_buffer); @@ -1755,7 +2041,7 @@ int newhttp(char* _iadr,htsblk* retour,int port,int waitconnect) { #endif if (retour) if (retour->msg) - strcpy(retour->msg,"Unable to get server's address"); + strcpybuff(retour->msg,"Unable to get server's address"); return INVALID_SOCKET; } // copie adresse @@ -1770,15 +2056,33 @@ int newhttp(char* _iadr,htsblk* retour,int port,int waitconnect) { DEBUG_W("socket\n"); #endif soc=socket(SOCaddr_sinfamily(server), SOCK_STREAM, 0); + if (retour != NULL) { + retour->debugid = HTS_STAT.stat_sockid++; + } #if HTS_WIDE_DEBUG DEBUG_W("socket done\n"); #endif if (soc==INVALID_SOCKET) { if (retour) if (retour->msg) - strcpy(retour->msg,"Unable to create a socket"); + strcpybuff(retour->msg,"Unable to create a socket"); return INVALID_SOCKET; // erreur création socket impossible } + + // bind this address + if (retour != NULL && retour->req.proxy.bindhost[0] != '\0') { + t_fullhostent bind_buffer; + hp = hts_gethostbyname(retour->req.proxy.bindhost, &bind_buffer); + if (hp == NULL || + bind(soc, (struct sockaddr *)hp->h_addr_list[0], hp->h_length) != 0) { + if (retour) + if (retour->msg) + strcpybuff(retour->msg,"Unable to bind the specificied server address"); + deletesoc(soc); + return INVALID_SOCKET; + } + } + // structure: connexion au domaine internet, port 80 (ou autre) SOCaddr_initport(server, port); #if HDEBUG @@ -1820,7 +2124,7 @@ int newhttp(char* _iadr,htsblk* retour,int port,int waitconnect) { #endif if (retour) if (retour->msg) - strcpy(retour->msg,"Unable to connect to the server"); + strcpybuff(retour->msg,"Unable to connect to the server"); /* Close the socket and notify the error!!! */ deletesoc(soc); return INVALID_SOCKET; @@ -1877,15 +2181,15 @@ int ident_url_absolute(char* url,char* adr,char* fil) { // 1. optional scheme ":" if ((pos=strfield(url,"file:"))) { // fichier local!! (pour les tests) //!! p+=3; - strcpy(adr,"file://"); + strcpybuff(adr,"file://"); } else if ((pos=strfield(url,"http:"))) { // HTTP //!!p+=3; } else if ((pos=strfield(url,"ftp:"))) { // FTP - strcpy(adr,"ftp://"); // FTP!! + strcpybuff(adr,"ftp://"); // FTP!! //!!p+=3; #if HTS_USEOPENSSL - } else if ((pos=strfield(url,"https:"))) { // HTTPS - strcpy(adr,"https://"); + } else if (SSL_is_available && (pos=strfield(url,"https:"))) { // HTTPS + strcpybuff(adr,"https://"); #endif } else if (scheme) { return -1; // erreur non reconnu @@ -1911,17 +2215,17 @@ int ident_url_absolute(char* url,char* adr,char* fil) { // chemin www... trop long!! if ( ( ((int) (q - p)) ) > HTS_URLMAXSIZE) { - //strcpy(retour.msg,"Path too long"); + //strcpybuff(retour.msg,"Path too long"); return -1; // erreur } // recopier adresse www.. - strncat(adr,p, ((int) (q - p)) ); + strncatbuff(adr,p, ((int) (q - p)) ); // *( adr+( ((int) q) - ((int) p) ) )=0; // faut arrêter la fumette! // recopier chemin /pub/.. if (q[0] != '/') // page par défaut (/) - strcat(fil,"/"); - strcat(fil,q); + strcatbuff(fil,"/"); + strcatbuff(fil,q); // SECURITE: // simplifier url pour les ../ fil_simplifie(fil); @@ -1931,8 +2235,13 @@ int ident_url_absolute(char* url,char* adr,char* fil) { char* a; p=url+pos; - - strcat(fil,p); // fichier local ; adr="#" + if (*p == '/' || *p == '\\') { /* file:///.. */ + strcatbuff(fil,p); // fichier local ; adr="#" + } else { + strcatbuff(fil,"//"); /* file://server/foo */ + strcatbuff(fil,p); + } + a=strchr(fil,'?'); if (a) *a='\0'; /* couper query (inutile pour file:// lors de la requête) */ @@ -1948,7 +2257,7 @@ int ident_url_absolute(char* url,char* adr,char* fil) { // nommer au besoin.. (non utilisé normalement) if (!strnotempty(fil)) - strcpy(fil,"default-index.html"); + strcpybuff(fil,"default-index.html"); // case insensitive pour adresse { @@ -1981,12 +2290,12 @@ void fil_simplifie(char* f) { tempo[0]='\0'; // if (!last) /* can't go upper.. */ - strcpy(tempo,"/"); + strcpybuff(tempo,"/"); else strncpy(tempo,f,last+1); tempo[last+1]='\0'; - strcat(tempo,f+i+4); - strcpy(f,tempo); // remplacer + strcatbuff(tempo,f+i+4); + strcpybuff(f,tempo); // remplacer i=-1; // recommencer last=0; } @@ -2004,20 +2313,19 @@ void fil_simplifie(char* f) { while ( (a=strstr(f,"./")) ) { char tempo[HTS_URLMAXSIZE*2]; tempo[0]='\0'; - strcpy(tempo,a+2); - strcpy(a,tempo); + strcpybuff(tempo,a+2); + strcpybuff(a,tempo); } // delete all remaining ../ (potential threat) while ( (a=strstr(f,"../")) ) { char tempo[HTS_URLMAXSIZE*2]; tempo[0]='\0'; - strcpy(tempo,a+3); - strcpy(a,tempo); + strcpybuff(tempo,a+3); + strcpybuff(a,tempo); } } - // fermer liaison fichier ou socket HTS_INLINE void deletehttp(htsblk* r) { #if HTS_DEBUG_CLOSESOCK @@ -2025,6 +2333,14 @@ HTS_INLINE void deletehttp(htsblk* r) { sprintf(info,"deletehttp: (htsblk*) %d\n",r); DEBUG_W2(info); #endif +#if HTS_USEOPENSSL + /* Free OpenSSL structures */ + if (SSL_is_available && r->ssl_con) { + SSL_shutdown(r->ssl_con); + SSL_free(r->ssl_con); + r->ssl_con=NULL; + } +#endif if (r->soc!=INVALID_SOCKET) { if (r->is_file) { if (r->fp) @@ -2038,6 +2354,16 @@ HTS_INLINE void deletehttp(htsblk* r) { } } +// free the addr buffer +// always returns 1 +HTS_INLINE int deleteaddr(htsblk* r) { + if (r->adr) { + freet(r->adr); + r->adr = NULL; + } + return 1; +} + // fermer une socket HTS_INLINE void deletesoc(T_SOC soc) { if (soc!=INVALID_SOCKET) { @@ -2067,7 +2393,7 @@ HTS_INLINE void deletesoc(T_SOC soc) { /* Will also clean other things */ HTS_INLINE void deletesoc_r(htsblk* r) { #if HTS_USEOPENSSL - if (r->ssl_con) { + if (SSL_is_available && r->ssl_con) { SSL_shutdown(r->ssl_con); // SSL_CTX_set_quiet_shutdown(r->ssl_con->ctx, 1); SSL_free(r->ssl_con); @@ -2084,7 +2410,7 @@ HTS_INLINE TStamp time_local(void) { } // number of millisec since 1970 -HTS_INLINE TStamp mtime_local(void) { +HTSEXT_API HTS_INLINE TStamp mtime_local(void) { #ifndef HTS_DO_NOT_USE_FTIME struct timeb B; ftime( &B ); @@ -2120,7 +2446,7 @@ void sec2str(char *st,TStamp t) { } // idem, plus court (chaine) -void qsec2str(char *st,TStamp t) { +HTSEXT_API void qsec2str(char *st,TStamp t) { int j,h,m,s; j=(int) (t/(3600*24)); @@ -2181,7 +2507,7 @@ struct tm* convert_time_rfc822(char* s) { if ((int) strlen(s) > 200) return NULL; - strcpy(str,s); + strcpybuff(str,s); hts_lowcase(str); /* éliminer :,- */ while( (a=strchr(str,'-')) ) *a=' '; @@ -2200,7 +2526,7 @@ struct tm* convert_time_rfc822(char* s) { tok[0]='\0'; if (first!=last) { char* pos; - strncat(tok,first,(int) (last - first)); + strncatbuff(tok,first,(int) (last - first)); /* analyser */ if ( (pos=strstr(months,tok)) ) { /* month always in letters */ result_mm=((int) (pos - months))/4; @@ -2274,36 +2600,44 @@ int set_filetime_rfc822(char* file,char* date) { // heure au format rfc (taille buffer 256o) HTS_INLINE void time_rfc822(char* s,struct tm * A) { + if (A == NULL) { + int localtime_returned_null=0; + assert(localtime_returned_null); + } strftime(s,256,"%a, %d %b %Y %H:%M:%S GMT",A); } // heure locale au format rfc (taille buffer 256o) HTS_INLINE void time_rfc822_local(char* s,struct tm * A) { + if (A == NULL) { + int localtime_returned_null=0; + assert(localtime_returned_null); + } strftime(s,256,"%a, %d %b %Y %H:%M:%S",A); } // conversion en b,Kb,Mb -char* int2bytes(LLint n) { +HTSEXT_API char* int2bytes(LLint n) { char** a=int2bytes2(n); char* buff; NOSTATIC_RESERVE(buff, char, 256); - strcpy(buff,a[0]); - strcat(buff,a[1]); + strcpybuff(buff,a[0]); + strcatbuff(buff,a[1]); return concat(buff,""); } // conversion en b/s,Kb/s,Mb/s -char* int2bytessec(long int n) { +HTSEXT_API char* int2bytessec(long int n) { char* buff; char** a=int2bytes2(n); NOSTATIC_RESERVE(buff, char, 256); - strcpy(buff,a[0]); - strcat(buff,a[1]); + strcpybuff(buff,a[0]); + strcatbuff(buff,a[1]); return concat(buff,"/s"); } -char* int2char(int n) { +HTSEXT_API char* int2char(int n) { char* buffer; NOSTATIC_RESERVE(buffer, char, 32); sprintf(buffer,"%d",n); @@ -2327,35 +2661,35 @@ typedef struct { char buff2[32]; char* buffadr[2]; } strc_int2bytes2; -char** int2bytes2(LLint n) { +HTSEXT_API char** int2bytes2(LLint n) { strc_int2bytes2* strc; NOSTATIC_RESERVE(strc, strc_int2bytes2, 1); if (n < ToLLintKiB) { sprintf(strc->buff1,"%d",(int)(LLint)n); - strcpy(strc->buff2,"B"); + strcpybuff(strc->buff2,"B"); } else if (n < ToLLintMiB) { sprintf(strc->buff1,"%d,%02d",(int)((LLint)(n/ToLLintKiB)),(int)((LLint)((n%ToLLintKiB)*100)/ToLLintKiB)); - strcpy(strc->buff2,"KiB"); + strcpybuff(strc->buff2,"KiB"); } #ifdef HTS_LONGLONG else if (n < ToLLintGiB) { sprintf(strc->buff1,"%d,%02d",(int)((LLint)(n/(ToLLintMiB))),(int)((LLint)(((n%(ToLLintMiB))*100)/(ToLLintMiB)))); - strcpy(strc->buff2,"MiB"); + strcpybuff(strc->buff2,"MiB"); } else if (n < ToLLintTiB) { sprintf(strc->buff1,"%d,%02d",(int)((LLint)(n/(ToLLintGiB))),(int)((LLint)(((n%(ToLLintGiB))*100)/(ToLLintGiB)))); - strcpy(strc->buff2,"GiB"); + strcpybuff(strc->buff2,"GiB"); } else if (n < ToLLintPiB) { sprintf(strc->buff1,"%d,%02d",(int)((LLint)(n/(ToLLintTiB))),(int)((LLint)(((n%(ToLLintTiB))*100)/(ToLLintTiB)))); - strcpy(strc->buff2,"TiB"); + strcpybuff(strc->buff2,"TiB"); } else { sprintf(strc->buff1,"%d,%02d",(int)((LLint)(n/(ToLLintPiB))),(int)((LLint)(((n%(ToLLintPiB))*100)/(ToLLintPiB)))); - strcpy(strc->buff2,"PiB"); + strcpybuff(strc->buff2,"PiB"); } #else else { sprintf(strc->buff1,"%d,%02d",(int)((LLint)(n/(ToLLintMiB))),(int)((LLint)(((n%(ToLLintMiB))*100)/(ToLLintMiB)))); - strcpy(strc->buff2,"MiB"); + strcpybuff(strc->buff2,"MiB"); } #endif strc->buffadr[0]=strc->buff1; @@ -2376,34 +2710,34 @@ int sig_ignore_flag( int setflag ) { // flag ignore // envoi de texte (en têtes généralement) sur la socket soc HTS_INLINE int sendc(htsblk* r, char* s) { - int n; + int n, ssz = (int)strlen(s); #if HTS_WIN #else sig_ignore_flag(1); #endif #if HDEBUG - write(0,s,strlen(s)); + write(0,s,ssz); #endif #if HTS_USEOPENSSL - if (r->ssl) { - n = SSL_write(r->ssl_con, s, strlen(s)); + if (SSL_is_available && r->ssl) { + n = SSL_write(r->ssl_con, s, ssz); } else #endif - n = send(r->soc,s,strlen(s),0); + n = send(r->soc,s,ssz,0); #if HTS_WIN #else sig_ignore_flag(0); #endif - return n; + return ( n == ssz ) ? n : -1; } // Remplace read -void finput(int fd,char* s,int max) { +int finput(int fd,char* s,int max) { char c; int j=0; do { @@ -2419,7 +2753,8 @@ void finput(int fd,char* s,int max) { } } } while((c!=0) && (j 0) { - strncat(s, buff, count); + strncatbuff(s, buff, count); } // and terminate with a null char s[count]='\0'; @@ -2470,6 +2805,34 @@ int linput(FILE* fp,char* s,int max) { s[j]='\0'; return j; } +int linputsoc(T_SOC soc, char* s, int max) { + int c; + int j=0; + do { + unsigned char ch; + if (recv(soc, &ch, 1, 0) == 1) { + c = ch; + } else { + c = EOF; + } + if (c!=EOF) { + switch(c) { + case 13: break; // sauter CR + case 10: c=-1; break; + case 9: case 12: break; // sauter ces caractères + default: s[j++]=(char) c; break; + } + } + } while((c!=-1) && (c!=EOF) && (j<(max-1))); + s[j]='\0'; + return j; +} +int linputsoc_t(T_SOC soc, char* s, int max, int timeout) { + if (check_readinput_t(soc, timeout)) { + return linputsoc(soc, s, max); + } + return -1; +} int linput_trim(FILE* fp,char* s,int max) { int rlen=0; char* ls=(char*) malloct(max+2); @@ -2660,7 +3023,7 @@ int ishtml(char* fil) { char fil_noquery[HTS_URLMAXSIZE*2]; fil_noquery[0]='\0'; a++; // pointer sur extension - strncat(fil_noquery,a,HTS_URLMAXSIZE); + strncatbuff(fil_noquery,a,HTS_URLMAXSIZE); a=strchr(fil_noquery,'?'); if (a) *a='\0'; @@ -2710,7 +3073,7 @@ HTS_INLINE int ishttperror(int err) { // retourne le pointeur ou le pointeur + offset si il existe dans la chaine un @ signifiant // une identification -char* jump_identification(char* source) { +HTSEXT_API char* jump_identification(char* source) { char *a,*trytofind; // rechercher dernier @ (car parfois email transmise dans adresse!) // mais sauter ftp:// éventuel @@ -2719,9 +3082,55 @@ char* jump_identification(char* source) { return (trytofind != NULL)?trytofind:a; } +HTSEXT_API char* jump_normalized(char* source) { + source = jump_identification(source); + if (strfield(source, "www") && source[3] != '\0') { + if (source[3] == '.') { // www.foo.com -> foo.com + source += 4; + } else { // www-4.foo.com -> foo.com + char* a = source + 3; + while(*a && ( isdigit(*a) || *a == '-') ) a++; + if (*a == '.') { + source = a + 1; + } + } + } + return source; +} + +HTSEXT_API char* fil_normalized(char* source, char* dest_) { + char* dest=dest_; + char lastc = 0; + int gotquery=0; + while(*source) { + if (*source == '?') + gotquery=1; + if ( + (!gotquery && lastc == '/' && *source == '/') // foo//bar -> foo/bar + ) { + } + else { + *dest++ = *source; + } + lastc = *source; + source++; + } + *dest++ = '\0'; + return dest_; +} + +#define endwith(a) ( (len >= (sizeof(a)-1)) ? ( strncmp(dest, a+len-(sizeof(a)-1), sizeof(a)-1) == 0 ) : 0 ); +HTSEXT_API char* adr_normalized(char* source, char* dest) { + /* not yet too aggressive (no com<->net<->org checkings) */ + strcpybuff(dest, jump_normalized(source)); + return dest; +} +#undef endwith + + // find port (:80) or NULL if not found // can handle IPV6 addresses -char* jump_toport(char* source) { +HTSEXT_API char* jump_toport(char* source) { char *a,*trytofind; a = jump_identification(source); trytofind = strrchr_limit(a, ']', strchr(source, '/')); // find last ] (http://[3ffe:b80:1234::1]:80/foo.html) @@ -2732,7 +3141,7 @@ char* jump_toport(char* source) { // strrchr, but not too far char* strrchr_limit(char* s, char c, char* limit) { if (limit == NULL) { - char* p = strchr(s, c); + char* p = strrchr(s, c); return p?(p+1):NULL; } else { char *a=NULL, *p; @@ -2765,17 +3174,18 @@ HTS_INLINE char* jump_protocol(char* source) { } // codage base 64 a vers b -void code64(char* a,char* b) { +void code64(unsigned char* a,int size_a,unsigned char* b,int crlf) { int i1=0,i2=0,i3=0,i4=0; - unsigned long store; + int loop=0; + unsigned long int store; int n; const char _hts_base64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - b[0]='\0'; - while(*a) { + while(size_a-- > 0) { // 24 bits - n=1; store=0; store |= ((*a++) & 0xff); - if (*a) { n=2; store <<= 8; store |= ((*a++) & 0xff); } - if (*a) { n=3; store <<= 8; store |= ((*a++) & 0xff); } + n=1; + store = *a++; + if (size_a-- > 0) { n=2; store <<= 8; store |= *a++; } + if (size_a-- > 0) { n=3; store <<= 8; store |= *a++; } if (n==3) { i4=store & 63; i3=(store>>6) & 63; @@ -2802,6 +3212,11 @@ void code64(char* a,char* b) { *b++ = _hts_base64[i4]; else *b++ = '='; + + if (crlf && ( ( loop += 3 ) % 60) == 0 ) { + *b++ = '\r'; + *b++ = '\n'; + } } *b++='\0'; } @@ -2809,7 +3224,7 @@ void code64(char* a,char* b) { // remplacer " par " etc.. // buffer MAX 1Ko #define strcmpbeg(a, b) strncmp(a, b, strlen(b)) -void unescape_amp(char* s) { +HTSEXT_API void unescape_amp(char* s) { while(*s) { if (*s=='&') { char* end=strchr(s,';'); @@ -3043,8 +3458,8 @@ void unescape_amp(char* s) { if (c) { char buff[HTS_URLMAXSIZE*2]; buff[0]=(char) c; - strcpy(buff+1,end+1); - strcpy(s,buff); + strcpybuff(buff+1,end+1); + strcpybuff(s,buff); } } } @@ -3054,7 +3469,7 @@ void unescape_amp(char* s) { // remplacer %20 par ' ', | par : etc.. // buffer MAX 1Ko -char* unescape_http(char* s) { +HTSEXT_API char* unescape_http(char* s) { char* tempo; int i,j=0; NOSTATIC_RESERVE(tempo, char, HTS_URLMAXSIZE*2); @@ -3078,7 +3493,7 @@ char* unescape_http(char* s) { } // unescape in URL/URI ONLY what has to be escaped, to form a standard URL/URI -char* unescape_http_unharm(char* s, int no_high) { +HTSEXT_API char* unescape_http_unharm(char* s, int no_high) { char* tempo; int i,j=0; NOSTATIC_RESERVE(tempo, char, HTS_URLMAXSIZE*2); @@ -3120,32 +3535,46 @@ char* unescape_http_unharm(char* s, int no_high) { // remplacer " par %xx etc.. // buffer MAX 1Ko -void escape_spc_url(char* s) { +HTSEXT_API void escape_spc_url(char* s) { x_escape_http(s,2); } // smith / john -> smith%20%2f%20john -void escape_in_url(char* s) { +HTSEXT_API void escape_in_url(char* s) { x_escape_http(s,1); } // smith / john -> smith%20/%20john -void escape_uri(char* s) { +HTSEXT_API void escape_uri(char* s) { x_escape_http(s,3); } -void escape_uri_utf(char* s) { +HTSEXT_API void escape_uri_utf(char* s) { x_escape_http(s,30); } -void escape_check_url(char* s) { +HTSEXT_API void escape_check_url(char* s) { x_escape_http(s,0); } // same as escape_check_url, but returns char* -char* escape_check_url_addr(char* s) { +HTSEXT_API char* escape_check_url_addr(char* s) { char* adr; escape_check_url(adr = concat(s,"")); return adr; } +// strip all control characters +HTSEXT_API void escape_remove_control(char* s) { + unsigned char* ss = (unsigned char*) s; + while(*ss) { + if (*ss < 32) { /* CONTROL characters go away! */ + char tmp[HTS_URLMAXSIZE*2]; + strcpybuff(tmp, ss+1); + strcpybuff(ss, tmp); + } else { + ss++; + } + } +} + -void x_escape_http(char* s,int mode) { +HTSEXT_API void x_escape_http(char* s,int mode) { while(*s) { int test=0; if (mode == 0) @@ -3155,7 +3584,8 @@ void x_escape_http(char* s,int mode) { || CHAR_DELIM(*s) || CHAR_UNWISE(*s) || CHAR_SPECIAL(*s) - || CHAR_XXAVOID(*s) ); + || CHAR_XXAVOID(*s) + || CHAR_MARK(*s)); } else if (mode==2) test=(strchr(" ",*s)!=0); // n'escaper que espace @@ -3171,12 +3601,12 @@ void x_escape_http(char* s,int mode) { } if (test) { - char buffer[HTS_URLMAXSIZE*2]; + char buffer[HTS_URLMAXSIZE*3]; int n; n=(int)(unsigned char) *s; - strcpy(buffer,s+1); + strcpybuff(buffer,s+1); sprintf(s,"%%%02x",n); - strcat(s,buffer); + strcatbuff(s,buffer); } s++; } @@ -3206,8 +3636,8 @@ char* concat(const char* a,const char* b) { concat_strc* strc; NOSTATIC_RESERVE(strc, concat_strc, 1); strc->rol=((strc->rol+1)%16); // roving pointer - strcpy(strc->buff[strc->rol],a); - if (b) strcat(strc->buff[strc->rol],b); + strcpybuff(strc->buff[strc->rol],a); + if (b) strcatbuff(strc->buff[strc->rol],b); return strc->buff[strc->rol]; } // conversion fichier / -> antislash @@ -3244,7 +3674,7 @@ char* convtolower(char* a) { concat_strc* strc; NOSTATIC_RESERVE(strc, concat_strc, 1); strc->rol=((strc->rol+1)%16); // roving pointer - strcpy(strc->buff[strc->rol],a); + strcpybuff(strc->buff[strc->rol],a); hts_lowcase(strc->buff[strc->rol]); // lower case return strc->buff[strc->rol]; } @@ -3308,7 +3738,7 @@ void guess_httptype(char *s,char *fil) { // flag: 1 si toujours renvoyer un type void get_httptype(char *s,char *fil,int flag) { if (ishtml(fil)==1) - strcpy(s,"text/html"); + strcpybuff(s,"text/html"); else { char *a=fil+strlen(fil)-1; while ( (*a!='.') && (*a!='/') && (a>fil)) a--; @@ -3319,7 +3749,7 @@ void get_httptype(char *s,char *fil,int flag) { while( (!ok) && (strnotempty(hts_mime[j][1])) ) { if (strfield2(hts_mime[j][1],a)) { if (hts_mime[j][0][0]!='*') { // Une correspondance existe - strcpy(s,hts_mime[j][0]); + strcpybuff(s,hts_mime[j][0]); ok=1; } } @@ -3328,7 +3758,7 @@ void get_httptype(char *s,char *fil,int flag) { if (!ok) if (flag) sprintf(s,"application/%s",a); } else { - if (flag) strcpy(s,"application/octet-stream"); + if (flag) strcpybuff(s,"application/octet-stream"); } } } @@ -3364,7 +3794,7 @@ int get_userhttptype(int setdefs,char *s,char *ext) { char* a; a=strchr(detect,'\n'); if (a) { - strncat(s,detect,(int) (a - detect)); + strncatbuff(s,detect,(int) (a - detect)); } } return 1; @@ -3383,7 +3813,7 @@ void give_mimext(char *s,char *st) { while( (!ok) && (strnotempty(hts_mime[j][1])) ) { if (strfield2(hts_mime[j][0],st)) { if (hts_mime[j][1][0]!='*') { // Une correspondance existe - strcpy(s,hts_mime[j][1]); + strcpybuff(s,hts_mime[j][1]); ok=1; } } @@ -3403,7 +3833,7 @@ void give_mimext(char *s,char *st) { if (a) { if ((int)strlen(a) >= 1) { if ((int)strlen(a) <= 4) { - strcpy(s,a); + strcpybuff(s,a); ok=1; } } @@ -3441,7 +3871,7 @@ char* get_ext(char *fil) { if (*a=='.') { fil_noquery[0]='\0'; a++; // pointer sur extension - strncat(fil_noquery,a,HTS_URLMAXSIZE); + strncatbuff(fil_noquery,a,HTS_URLMAXSIZE); a=strchr(fil_noquery,'?'); if (a) *a='\0'; @@ -3531,60 +3961,54 @@ void fprintfio(FILE* fp,char* buff,char* prefix) { /* Le fichier existe-t-il? (ou est-il accessible?) */ int fexist(char* s) { - FILE* fp; - if (strnotempty(s)==0) // nom vide: non trouvé - return 0; - fp=fopen(fconv(s),"rb"); - if (fp!=NULL) fclose(fp); - return (fp!=NULL); + struct stat st; + memset(&st, 0, sizeof(st)); + if (stat(s, &st) == 0) { + if (S_ISREG(st.st_mode)) { + return 1; + } + } + return 0; } /* Taille d'un fichier, -1 si n'existe pas */ /* fp->_cnt ne fonctionne pas sur toute les plate-formes :-(( */ /* Note: NOT YET READY FOR 64-bit */ -//LLint fsize(char* s) { -int fsize(char* s) { - /* -#if HTS_WIN - HANDLE hFile; - DWORD dwSizeHigh = 0; - DWORD dwSizeLow = 0; - hFile = CreateFile(s,0,0,NULL,OPEN_EXISTING,0,NULL); - if (hFile) { - dwSizeLow = GetFileSize (hFile, & dwSizeHigh) ; - CloseHandle(hFile); - if (dwSizeLow != 0xFFFFFFFF) - return (dwSizeLow & (dwSizeHigh<<32)); - else - return -1; - } else - return -1; -#else - */ +INTsys fsize(char* s) { FILE* fp; if (strnotempty(s)==0) // nom vide: erreur return -1; fp=fopen(fconv(s),"rb"); if (fp!=NULL) { - int i; + INTsys i; fseek(fp,0,SEEK_END); +#ifdef HTS_FSEEKO + i=ftello(fp); +#else i=ftell(fp); +#endif fclose(fp); return i; } else return -1; - /* -#endif - */ } -int fpsize(FILE* fp) { - int oldpos,size; +INTsys fpsize(FILE* fp) { + INTsys oldpos,size; if (!fp) return -1; +#ifdef HTS_FSEEKO + oldpos=ftello(fp); +#else oldpos=ftell(fp); +#endif fseek(fp,0,SEEK_END); +#ifdef HTS_FSEEKO + size=ftello(fp); + fseeko(fp,oldpos,SEEK_SET); +#else size=ftell(fp); fseek(fp,oldpos,SEEK_SET); +#endif return size; } @@ -3593,7 +4017,7 @@ typedef struct { char path[1024+4]; int init; } hts_rootdir_strc; -char* hts_rootdir(char* file) { +HTSEXT_API char* hts_rootdir(char* file) { static hts_rootdir_strc strc = {"", 0}; //NOSTATIC_RESERVE(strc, hts_rootdir_strc, 1); if (file) { @@ -3602,7 +4026,7 @@ char* hts_rootdir(char* file) { strc.init=1; if (strnotempty(file)) { char* a; - strcpy(strc.path,file); + strcpybuff(strc.path,file); while((a=strrchr(strc.path,'\\'))) *a='/'; if ((a=strrchr(strc.path,'/'))) { *(a+1)='\0'; @@ -3613,7 +4037,7 @@ char* hts_rootdir(char* file) { if( getcwd( strc.path, 1024 ) == NULL ) strc.path[0]='\0'; else - strcat(strc.path,"/"); + strcatbuff(strc.path,"/"); } } return NULL; @@ -3625,7 +4049,7 @@ char* hts_rootdir(char* file) { -hts_stat_struct HTS_STAT; +HTSEXT_API hts_stat_struct HTS_STAT; // // return number of downloadable bytes, depending on rate limiter // see engine_stats() routine, too @@ -3693,7 +4117,7 @@ HTS_INLINE int hts_read(htsblk* r,char* buff,int size) { DEBUG_W("read\n"); #endif if (r->fp) - retour=fread(buff,1,size,r->fp); + retour=(int)fread(buff,1,size,r->fp); else retour=-1; } else { @@ -3704,7 +4128,7 @@ HTS_INLINE int hts_read(htsblk* r,char* buff,int size) { #endif //HTS_TOTAL_RECV_CHECK(size); // Diminuer au besoin si trop de données reçues #if HTS_USEOPENSSL - if (r->ssl) { + if (SSL_is_available && r->ssl) { retour = SSL_read(r->ssl_con, buff, size); if (retour <= 0) { int err_code = SSL_get_error(r->ssl_con, retour); @@ -3745,6 +4169,21 @@ t_dnscache* _hts_cache(void) { NOSTATIC_RESERVE(cache, t_dnscache, 1); return cache; } +// free the cache +static void hts_cache_free_(t_dnscache* cache) { + if (cache != NULL) { + if (cache->n != NULL) { + hts_cache_free_(cache->n); + } + freet(cache); + } +} +void hts_cache_free(t_dnscache* cache) { + if (cache != NULL) { + hts_cache_free_(cache->n); + cache->n = NULL; + } +} // lock le cache dns pour tout opération d'ajout // plus prudent quand plusieurs threads peuvent écrire dedans.. @@ -3819,7 +4258,7 @@ int hts_dnstest(char* _iadr) { NOSTATIC_RESERVE(iadr, char, HTS_URLMAXSIZE*2); // sauter user:pass@ éventuel - strcpy(iadr,jump_identification(_iadr)); + strcpybuff(iadr,jump_identification(_iadr)); // couper éventuel : { char *a; @@ -3852,7 +4291,7 @@ int hts_dnstest(char* _iadr) { } -t_hostent* vxgethostbyname(char* hostname, void* v_buffer) { +HTSEXT_API t_hostent* vxgethostbyname(char* hostname, void* v_buffer) { t_fullhostent* buffer = (t_fullhostent*) v_buffer; /* Clear */ fullhostent_init(buffer); @@ -3869,8 +4308,8 @@ t_hostent* vxgethostbyname(char* hostname, void* v_buffer) { if ((hostname[0] == '[') && (hostname[strlen(hostname)-1] == ']')) { char tempo[HTS_URLMAXSIZE*2]; tempo[0]='\0'; - strncat(tempo, hostname+1, strlen(hostname)-2); - strcpy(hostname, tempo); + strncatbuff(tempo, hostname+1, strlen(hostname)-2); + strcpybuff(hostname, tempo); } { @@ -3935,7 +4374,7 @@ t_hostent* hts_gethostbyname(char* _iadr, void* v_buffer) { /* Clear */ fullhostent_init(buffer); - strcpy(iadr,jump_identification(_iadr)); + strcpybuff(iadr,jump_identification(_iadr)); // couper éventuel : { char *a; @@ -3993,7 +4432,7 @@ t_hostent* hts_gethostbyname(char* _iadr, void* v_buffer) { #endif cache->n=(t_dnscache*) calloct(1,sizeof(t_dnscache)); if (cache->n!=NULL) { - strcpy(cache->n->iadr,iadr); + strcpybuff(cache->n->iadr,iadr); if (hp!=NULL) { memcpy(cache->n->host_addr, hp->h_addr_list[0], hp->h_length); cache->n->host_length=hp->h_length; @@ -4028,102 +4467,161 @@ HTS_INLINE t_hostent* hts_gethostbyname(char* iadr, t_fullhostent* buffer) { // --- Tracage des mallocs() --- -#if HTS_TRACE_MALLOC -typedef struct _mlink { +#ifdef HTS_TRACE_MALLOC +//#define htsLocker(A, N) htsLocker(A, N) +#define htsLocker(A, N) do {} while(0) +static mlink trmalloc = {NULL,0,0,NULL}; +static int trmalloc_id=0; +static PTHREAD_LOCK_TYPE* mallocMutex = NULL; +static void hts_meminit(void) { + //if (mallocMutex == NULL) { + // mallocMutex = calloc(sizeof(*mallocMutex), 1); + // htsLocker(mallocMutex, -999); + //} +} +void* hts_malloc(size_t len) { void* adr; - int len; - int id; - struct _mlink* next; -} mlink; -mlink trmalloc = {NULL,0,0,NULL}; -int trmalloc_id=0; - -HTS_INLINE void* hts_malloc(size_t len,size_t len2) { + hts_meminit(); + htsLocker(mallocMutex, 1); + fassert(len > 0); + adr = hts_xmalloc(len, 0); + htsLocker(mallocMutex, 0); + return adr; +} +void* hts_calloc(size_t len,size_t len2) { + void* adr; + hts_meminit(); + fassert(len > 0); + fassert(len2 > 0); + htsLocker(mallocMutex, 1); + adr = hts_xmalloc(len, len2); + htsLocker(mallocMutex, 0); + memset(adr, 0, len * len2); + return adr; +} +void* hts_xmalloc(size_t len,size_t len2) { mlink* lnk = (mlink*) calloc(1,sizeof(mlink)); - void* r = NULL; + fassert(lnk != NULL); + fassert(len > 0); + fassert(len2 >= 0); if (lnk) { + void* r = NULL; + int size, bsize = sizeof(t_htsboundary); if (len2) - r = calloc(len,len2); + size = len * len2; else - r = malloc(len); + size = len; + size += ((bsize - (size % bsize)) % bsize); /* check alignement */ + r = malloc(size + bsize*2); + fassert(r != NULL); if (r) { - lnk->adr=r; - if (len2) - lnk->len=len*len2; - else - lnk->len=len; - lnk->id=trmalloc_id++; - lnk->next=trmalloc.next; - trmalloc.next=lnk; -#if MEMDEBUG - //printf("malloc: %d\n",r); -#endif - } else free(lnk); + * ( (t_htsboundary*) ((char*) r ) ) + = * ( (t_htsboundary*) ( (char*) r + size + bsize ) ) + = htsboundary; + ((char*) r) += bsize; /* boundary */ + lnk->adr = r; + lnk->len = size; + lnk->id = trmalloc_id++; + lnk->next = trmalloc.next; + trmalloc.next = lnk; + return r; + } else { + free(lnk); + } } - return r; + return NULL; } -HTS_INLINE void hts_free(void* adr) { +void hts_free(void* adr) { mlink* lnk = &trmalloc; + int bsize = sizeof(t_htsboundary); + fassert(adr != NULL); if (!adr) { -#if MEMDEBUG - printf("* unexpected free() error at %d\n",adr); -#endif return; } - do { - if (lnk->next->adr==adr) { + htsLocker(mallocMutex, 1); + while(lnk->next != NULL) { + if (lnk->next->adr == adr) { mlink* blk_free=lnk->next; -#if 1 + fassert(blk_free->id != -1); + fassert( * ( (t_htsboundary*) ( (char*) adr - bsize ) ) == htsboundary ); + fassert( * ( (t_htsboundary*) ( (char*) adr + blk_free->len ) ) == htsboundary ); lnk->next=lnk->next->next; free((void*) blk_free); -#else -#if MEMDEBUG - if (blk_free->id==-1) { - printf("* memory has already been freed: %d (id=%d)\n",blk_free->adr,blk_free->id); - } -#endif - blk_free->id=-1; -#endif - free(adr); -#if MEMDEBUG - //printf("free: %d (id=%d)\n",blk_free->adr,blk_free->id); -#endif + //blk_free->id=-1; + free((char*) adr - bsize); + htsLocker(mallocMutex, 0); return; } - lnk=lnk->next; - } while(lnk->next != NULL); -#if MEMDEBUG - printf("* unexpected free() error at %d\n",adr); -#endif + lnk = lnk->next; + fassert(lnk->next != NULL); + } free(adr); + htsLocker(mallocMutex, 0); } -HTS_INLINE void* hts_realloc(void* adr,size_t len) { +void* hts_realloc(void* adr,size_t len) { + int bsize = sizeof(t_htsboundary); + len += ((bsize - (len % bsize)) % bsize); /* check alignement */ + if (adr != NULL) { + mlink* lnk = &trmalloc; + htsLocker(mallocMutex, 1); + while(lnk->next != NULL) { + if (lnk->next->adr==adr) { + { + mlink* blk_free=lnk->next; + fassert(blk_free->id != -1); + fassert( * ( (t_htsboundary*) ( (char*) adr - bsize ) ) == htsboundary ); + fassert( * ( (t_htsboundary*) ( (char*) adr + blk_free->len ) ) == htsboundary ); + } + adr = realloc((char*) adr - bsize, len + bsize * 2); + fassert(adr != NULL); + lnk->next->adr = (char*) adr + bsize; + lnk->next->len = len; + * ( (t_htsboundary*) ( (char*) adr ) ) + = * ( (t_htsboundary*) ( (char*) adr + len + bsize) ) + = htsboundary; + htsLocker(mallocMutex, 0); + return (char*) adr + bsize; + } + lnk = lnk->next; + fassert(lnk->next != NULL); + } + htsLocker(mallocMutex, 0); + } + return hts_malloc(len); +} +mlink* hts_find(char* adr) { + char* stkframe = (char*) &stkframe; mlink* lnk = &trmalloc; - do { - if (lnk->next->adr==adr) { - adr = realloc(adr,len); - lnk->next->adr = adr; - lnk->next->len = len; -#if MEMDEBUG - //printf("realloc: %d (id=%d)\n",lnk->next->adr,lnk->next->id); -#endif - return adr; + int bsize = sizeof(t_htsboundary); + fassert(adr != NULL); + if (!adr) { + return NULL; + } + htsLocker(mallocMutex, 1); + while(lnk->next != NULL) { + if (adr >= lnk->next->adr && adr <= lnk->next->adr + lnk->next->len) { /* found */ + htsLocker(mallocMutex, 0); + return lnk->next; } - lnk=lnk->next; - } while(lnk->next != NULL); -#if MEMDEBUG - printf("* unexpected realloc() error at %d\n",adr); -#endif - return realloc(adr,len); + lnk = lnk->next; + } + htsLocker(mallocMutex, 0); + { + int depl = (int) (adr - stkframe); + if (depl < 0) depl = -depl; + //fassert(depl < 512000); /* near the stack frame.. doesn't look like malloc but stack variable */ + return NULL; + } } // check the malloct() and calloct() trace stack void hts_freeall(void) { + int bsize = sizeof(t_htsboundary); while(trmalloc.next) { #if MEMDEBUG printf("* block %d\t not released: at %d\t (%d\t bytes)\n",trmalloc.next->id,trmalloc.next->adr,trmalloc.next->len); #endif if (trmalloc.next->id != -1) { - freet(trmalloc.next->adr); + free((char*) trmalloc.next->adr - bsize); } } } @@ -4145,8 +4643,8 @@ void cut_path(char* fullpath,char* path,char* pname) { a=fullpath+strlen(fullpath)-2; while( (*a!='/') && ( a > fullpath)) a--; if (*a=='/') a++; - strcpy(pname,a); - strncat(path,fullpath,(int) (a - fullpath)); + strcpybuff(pname,a); + strncatbuff(path,fullpath,(int) (a - fullpath)); } } } @@ -4168,8 +4666,12 @@ int ftp_available(void) { -int hts_init(void) { +HTSEXT_API int hts_init(void) { static int hts_init_ok = 0; + + /* Ensure external modules are loaded */ + htspe_init(); + if (!hts_init_ok) { hts_init_ok = 1; // default wrappers @@ -4196,17 +4698,18 @@ int hts_init(void) { /* Initialize the OpensSSL library */ - if (!openssl_ctx) { + if (!openssl_ctx && SSL_is_available) { + if (SSL_load_error_strings) SSL_load_error_strings(); SSL_library_init(); - SSL_load_error_strings(); - ERR_load_crypto_strings(); - ERR_load_SSL_strings(); - SSLeay_add_ssl_algorithms(); + ///if (SSL_load_error_strings) SSL_load_error_strings(); + //if (ERR_load_crypto_strings) ERR_load_crypto_strings(); + // if (ERR_load_SSL_strings) ERR_load_SSL_strings(); ???!!! // OpenSSL_add_all_algorithms(); openssl_ctx = SSL_CTX_new(SSLv23_client_method()); if (!openssl_ctx) { fprintf(stderr, "fatal: unable to initialize TLS: SSL_CTX_new(SSLv23_client_method)\n"); - abort(); + abortLog("unable to initialize TLS: SSL_CTX_new(SSLv23_client_method)"); + assertf("unable to initialize TLS" == NULL); } } #endif @@ -4214,9 +4717,13 @@ int hts_init(void) { /* Init vars and thread-specific values */ hts_initvar(); + /* initialiser structcheck */ + // structcheck_init(1); + return 1; } -int hts_uninit(void) { +HTSEXT_API int hts_uninit(void) { + hts_cache_free(_hts_cache()); hts_freevar(); /* htswrap_free(); */ return 1; diff --git a/src/htslib.h b/src/htslib.h index 9b2aca3..d3881d3 100644 --- a/src/htslib.h +++ b/src/htslib.h @@ -60,9 +60,11 @@ Please visit our Website: http://www.httrack.com typedef struct { short int user_agent_send; // user agent (ex: httrack/1.0 [sun]) short int http11; // l'en tête peut (doit) être signé HTTP/1.1 et non HTTP/1.0 + short int nokeepalive; // pas de keep-alive short int range_used; // Range utilisé short int nocompression; // Pas de compression - char user_agent[64]; + short int flush_garbage; // recycled + char user_agent[128]; char lang_iso[64]; t_proxy proxy; // proxy } htsrequest; @@ -75,11 +77,17 @@ typedef struct { short int is_write; // sortie sur disque (out) ou en mémoire (adr) short int is_chunk; // mode chunk short int compressed; // compressé? + short int empty; // vide? + short int keep_alive; // Keep-Alive? + short int keep_alive_trailers; // ..with trailers extension + int keep_alive_t; // KA timeout + int keep_alive_max; // KA number of requests char* adr; // adresse du bloc de mémoire, NULL=vide FILE* out; // écriture directe sur disque (si is_write=1) LLint size; // taille fichier char msg[80]; // message éventuel si échec ("\0"=non précisé) char contenttype[64]; // content-type ("text/html" par exemple) + char charset[64]; // charset ("iso-8859-1" par exemple) char contentencoding[64]; // content-encoding ("gzip" par exemple) char* location; // on copie dedans éventuellement la véritable 'location' LLint totalsize; // taille totale à télécharger (-1=inconnue) @@ -95,6 +103,7 @@ typedef struct { char etag[64]; // Etag char cdispo[256]; // Content-Disposition coupé LLint crange; // Content-Range + int debugid; // debug connection /* */ htsrequest req; // paramètres pour la requête /*char digest[32+2]; // digest md5 généré par le moteur ("" si non généré)*/ @@ -147,9 +156,10 @@ int hts_read(htsblk* r,char* buff,int size); //int HTS_TOTAL_RECV_CHECK(int var); LLint check_downloadable_bytes(int rate); -int hts_init(void); -int hts_uninit(void); - +#ifndef HTTRACK_DEFLIB +HTSEXT_API int hts_init(void); +HTSEXT_API int hts_uninit(void); +#endif // fonctions principales int http_fopen(char* adr,char* fil,htsblk* retour); @@ -159,26 +169,33 @@ htsblk httpget(char* url); //int newhttp(char* iadr,char* err=NULL); int newhttp(char* iadr,htsblk* retour,int port,int waitconnect); HTS_INLINE void deletehttp(htsblk* r); +HTS_INLINE int deleteaddr(htsblk* r); HTS_INLINE void deletesoc(T_SOC soc); HTS_INLINE void deletesoc_r(htsblk* r); htsblk http_location(char* adr,char* fil,char* loc); htsblk http_test(char* adr,char* fil,char* loc); int check_readinput(htsblk* r); +int check_readinput_t(T_SOC soc, int timeout); void http_fread(T_SOC soc,htsblk* retour); LLint http_fread1(htsblk* r); void treathead(t_cookie* cookie,char* adr,char* fil,htsblk* retour,char* rcvd); void treatfirstline(htsblk* retour,char* rcvd); -void infostatuscode(char* msg,int statuscode); +#ifndef HTTRACK_DEFLIB +HTSEXT_API void infostatuscode(char* msg,int statuscode); +#endif // sous-fonctions htsblk xhttpget(char* adr,char* fil); htsblk http_gethead(char* adr,char* fil); LLint http_xfread1(htsblk* r,int bufl); HTS_INLINE t_hostent* hts_gethostbyname(char* iadr, void* v_buffer); -t_hostent* vxgethostbyname(char* hostname, void* v_buffer); +#ifndef HTTRACK_DEFLIB +HTSEXT_API t_hostent* vxgethostbyname(char* hostname, void* v_buffer); +#endif t_hostent* _hts_ghbn(t_dnscache* cache,char* iadr,t_hostent* retour); int ftp_available(void); #if HTS_DNSCACHE +void hts_cache_free(t_dnscache* cache); int hts_dnstest(char* _iadr); t_dnscache* _hts_cache(void); int _hts_lockdns(int i); @@ -186,9 +203,13 @@ int _hts_lockdns(int i); // outils divers HTS_INLINE TStamp time_local(void); -HTS_INLINE TStamp mtime_local(void); +#ifndef HTTRACK_DEFLIB +HTSEXT_API HTS_INLINE TStamp mtime_local(void); +#endif void sec2str(char *s,TStamp t); -void qsec2str(char *st,TStamp t); +#ifndef HTTRACK_DEFLIB +HTSEXT_API void qsec2str(char *st,TStamp t); +#endif void time_gmt_rfc822(char* s); void time_local_rfc822(char* s); struct tm* convert_time_rfc822(char* s); @@ -196,14 +217,18 @@ int set_filetime(char* file,struct tm* tm_time); int set_filetime_rfc822(char* file,char* date); HTS_INLINE void time_rfc822(char* s,struct tm * A); HTS_INLINE void time_rfc822_local(char* s,struct tm * A); -char* int2char(int n); -char* int2bytes(LLint n); -char* int2bytessec(long int n); -char** int2bytes2(LLint n); +#ifndef HTTRACK_DEFLIB +HTSEXT_API char* int2char(int n); +HTSEXT_API char* int2bytes(LLint n); +HTSEXT_API char* int2bytessec(long int n); +HTSEXT_API char** int2bytes2(LLint n); +#endif HTS_INLINE int sendc(htsblk* r, char* s); -void finput(int fd,char* s,int max); +int finput(int fd,char* s,int max); int binput(char* buff,char* s,int max); int linput(FILE* fp,char* s,int max); +int linputsoc(T_SOC soc, char* s, int max); +int linputsoc_t(T_SOC soc, char* s, int max, int timeout); int linput_trim(FILE* fp,char* s,int max); int linput_cpp(FILE* fp,char* s,int max); void rawlinput(FILE* fp,char* s,int max); @@ -226,23 +251,33 @@ int is_userknowntype(char *fil); int is_dyntype(char *fil); char* get_ext(char *fil); int may_unknown(char* st); -char* jump_identification(char*); -char* jump_toport(char*); +#ifndef HTTRACK_DEFLIB +HTSEXT_API char* jump_identification(char*); +HTSEXT_API char* jump_normalized(char*); +HTSEXT_API char* jump_toport(char*); +HTSEXT_API char* fil_normalized(char* source, char* dest); +HTSEXT_API char* adr_normalized(char* source, char* dest); +#endif char* strrchr_limit(char* s, char c, char* limit); HTS_INLINE char* jump_protocol(char* source); -void code64(char* a,char* b); -void unescape_amp(char* s); -void escape_spc_url(char* s); -void escape_in_url(char* s); -void escape_uri(char* s); -void escape_uri_utf(char* s); -void escape_check_url(char* s); -char* escape_check_url_addr(char* s); -void x_escape_http(char* s,int mode); -HTS_INLINE int ehexh(char c); -char* unescape_http(char* s); -char* unescape_http_unharm(char* s, int no_high); -char* antislash_unescaped(char* s); +void code64(unsigned char* a,int size_a,unsigned char* b,int crlf); +#ifndef HTTRACK_DEFLIB +HTSEXT_API void unescape_amp(char* s); +HTSEXT_API void escape_spc_url(char* s); +HTSEXT_API void escape_in_url(char* s); +HTSEXT_API void escape_uri(char* s); +HTSEXT_API void escape_uri_utf(char* s); +HTSEXT_API void escape_check_url(char* s); +HTSEXT_API char* escape_check_url_addr(char* s); +HTSEXT_API void x_escape_http(char* s,int mode); +HTSEXT_API void escape_remove_control(char* s); +#endif +int ehexh(char c); +#ifndef HTTRACK_DEFLIB +HTSEXT_API char* unescape_http(char* s); +HTSEXT_API char* unescape_http_unharm(char* s, int no_high); +HTSEXT_API char* antislash_unescaped(char* s); +#endif int ehex(char* s); char* concat(const char* a,const char* b); #define copychar(a) concat((a),NULL) @@ -262,10 +297,11 @@ void hts_lowcase(char* s); void hts_replace(char *s,char from,char to); /* Spaces: CR,LF,TAB,FF */ -#define is_space(c) ( ((c)==' ') || ((c)=='\"') || ((c)==10) || ((c)==13) || ((c)==9) || ((c)==12) || ((c)=='\'') ) -#define is_realspace(c) ( ((c)==' ') || ((c)==10) || ((c)==13) || ((c)==9) || ((c)==12) ) +#define is_space(c) ( ((c)==' ') || ((c)=='\"') || ((c)==10) || ((c)==13) || ((c)==9) || ((c)==12) || ((c)==11) || ((c)=='\'') ) +#define is_realspace(c) ( ((c)==' ') || ((c)==10) || ((c)==13) || ((c)==9) || ((c)==12) || ((c)==11) ) #define is_taborspace(c) ( ((c)==' ') || ((c)==9) ) #define is_quote(c) ( ((c)=='\"') || ((c)=='\'') ) +#define is_retorsep(c) ( ((c)==10) || ((c)==13) || ((c)==9) ) //HTS_INLINE int is_space(char); //HTS_INLINE int is_realspace(char); @@ -279,10 +315,12 @@ int sig_ignore_flag( int setflag ); // flag ignore void cut_path(char* fullpath,char* path,char* pname); int fexist(char* s); /*LLint fsize(char* s); */ -int fpsize(FILE* fp); -int fsize(char* s); +INTsys fpsize(FILE* fp); +INTsys fsize(char* s); /* root dir */ -char* hts_rootdir(char* file); +#ifndef HTTRACK_DEFLIB +HTSEXT_API char* hts_rootdir(char* file); +#endif // Threads #if USE_PTHREAD @@ -301,19 +339,20 @@ unsigned long _beginthread( beginthread_type start_address, unsigned stack_size, /* variables globales */ //extern LLint HTS_TOTAL_RECV; // flux entrant reçu //extern int HTS_TOTAL_RECV_STATE; // status: 0 tout va bien 1: ralentir un peu 2: ralentir 3: beaucoup -extern hts_stat_struct HTS_STAT; +extern HTSEXT_API hts_stat_struct HTS_STAT; extern int _DEBUG_HEAD; extern FILE* ioinfo; /* constantes */ -extern const char hts_mime_keep[][32]; -extern const char hts_mime[][2][32]; -extern const char hts_detect[][32]; -extern const char hts_detectbeg[][32]; -extern const char hts_nodetect[][32]; -extern const char hts_detectURL[][32]; -extern const char hts_detectandleave[][32]; -extern const char hts_detect_js[][32]; +extern const char* hts_mime_keep[]; +extern const char* hts_mime[][2]; +extern const char* hts_main_mime[]; +extern const char* hts_detect[]; +extern const char* hts_detectbeg[]; +extern const char* hts_nodetect[]; +extern const char* hts_detectURL[]; +extern const char* hts_detectandleave[]; +extern const char* hts_detect_js[]; // defaut wrappers void __cdecl htsdefault_init(void); diff --git a/src/htsmodules.c b/src/htsmodules.c new file mode 100644 index 0000000..27ab855 --- /dev/null +++ b/src/htsmodules.c @@ -0,0 +1,305 @@ +/* ------------------------------------------------------------ */ +/* +HTTrack Website Copier, Offline Browser for Windows and Unix +Copyright (C) Xavier Roche and other contributors + +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 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. + + +Important notes: + +- We hereby ask people using this source NOT to use it in purpose of grabbing +emails addresses, or collecting any other private information on persons. +This would disgrace our work, and spoil the many hours we spent on it. + + +Please visit our Website: http://www.httrack.com +*/ + + +/* ------------------------------------------------------------ */ +/* File: htsmodules.c subroutines: */ +/* external modules (parsers) */ +/* Author: Xavier Roche */ +/* ------------------------------------------------------------ */ + +#ifndef _WIN32 +#if HTS_DLOPEN +#include +#endif +#endif + +#include +#include +#include + +#include "htsglobal.h" +#include "htsmodules.h" +#include "htsopt.h" +extern int fspc(FILE* fp,char* type); + +/* >>> Put all modules definitions here */ +#include "htszlib.h" +#include "htsbase.h" + +typedef int (*t_hts_detect_swf)(htsmoduleStruct* str); +typedef int (*t_hts_parse_swf)(htsmoduleStruct* str); +/* <<< */ + +/* >>> Put all modules includes here */ +#include "htsjava.h" +#if HTS_USESWF +#endif +/* <<< */ + +/* >>> Put all modules variables here */ + +int swf_is_available = 0; +t_hts_detect_swf hts_detect_swf = NULL; +t_hts_parse_swf hts_parse_swf = NULL; + +int gz_is_available = 0; +t_gzopen gzopen = NULL; +t_gzread gzread = NULL; +t_gzclose gzclose = NULL; + +int SSL_is_available = 0; +t_SSL_shutdown SSL_shutdown = NULL; +t_SSL_free SSL_free = NULL; +t_SSL_CTX_ctrl SSL_CTX_ctrl = NULL; +t_SSL_new SSL_new = NULL; +t_SSL_clear SSL_clear = NULL; +t_SSL_set_fd SSL_set_fd = NULL; +t_SSL_set_connect_state SSL_set_connect_state = NULL; +t_SSL_connect SSL_connect = NULL; +t_SSL_get_error SSL_get_error = NULL; +t_SSL_write SSL_write = NULL; +t_SSL_read SSL_read = NULL; +t_SSL_library_init SSL_library_init = NULL; +t_ERR_load_crypto_strings ERR_load_crypto_strings = NULL; +t_ERR_load_SSL_strings ERR_load_SSL_strings = NULL; +t_SSLv23_client_method SSLv23_client_method = NULL; +t_SSL_CTX_new SSL_CTX_new = NULL; +t_ERR_error_string ERR_error_string = NULL; +t_SSL_load_error_strings SSL_load_error_strings = NULL; + +int V6_is_available = HTS_INET6; + +char WHAT_is_available[64]=""; +/* <<< */ + +/* memory checks */ +HTSEXT_API htsErrorCallback htsCallbackErr = NULL; +HTSEXT_API int htsMemoryFastXfr = 1; /* fast xfr by default */ +void abortLog__fnc(char* msg, char* file, int line); +void abortLog__fnc(char* msg, char* file, int line) { + FILE* fp = fopen("CRASH.TXT", "wb"); + if (!fp) fp = fopen("/tmp/CRASH.TXT", "wb"); + if (!fp) fp = fopen("C:\\CRASH.TXT", "wb"); + if (fp) { + fprintf(fp, "HTTrack " HTTRACK_VERSIONID " closed at '%s', line %d\r\n", file, line); + fprintf(fp, "Reason:\r\n%s\r\n", msg); + fflush(fp); + fclose(fp); + } +} +HTSEXT_API t_abortLog abortLog__ = abortLog__fnc; /* avoid VC++ inlining */ + +static void htspe_log(htsmoduleStruct* str, char* msg); + +int hts_parse_externals(htsmoduleStruct* str) { + /* >>> Put all module calls here */ + + /* JAVA */ + if (hts_detect_java(str)) { + htspe_log(str, "java-lib"); + return hts_parse_java(str); + } + +#if HTS_USESWF + /* FLASH + (external module derivated from Macromedia(tm)'s classes) + */ + else if (swf_is_available && hts_detect_swf(str)) { + htspe_log(str, "swf-lib"); + return hts_parse_swf(str); + } +#endif + + /* <<< */ + + /* Not detected */ + return -1; +} + +/* NOTE: handled NOT closed */ +void* getFunctionPtr(char* file_, char* fncname) { + char file[1024]; + void* handle; + void* userfunction = NULL; + strcpybuff(file, file_); +#ifdef _WIN32 + handle = LoadLibrary(file); + if (handle == NULL) { + strcatbuff(file, ".dll"); + handle = LoadLibrary(file); + } +#else + handle = dlopen(file, RTLD_LAZY); + if (handle == NULL) { + strcatbuff(file, ".so"); + handle = dlopen(file, RTLD_LAZY); + } +#endif + if (handle) { + userfunction = (void*) DynamicGet(handle, fncname); + if (userfunction == NULL) { +#ifdef _WIN32 + FreeLibrary(handle); +#else + dlclose(handle); +#endif + } + } + return userfunction; +} + +void htspe_init() { + static int initOk = 0; + if (!initOk) { + initOk = 1; + + /* >>> Put all module initializations here */ + + /* Zlib */ +#if HTS_DLOPEN + { + void* handle; +#ifdef _WIN32 + handle = LoadLibrary("zlib"); +#else + handle = dlopen("libz.so.1", RTLD_LAZY); +#endif + if (handle) { + gzopen = (t_gzopen) DynamicGet(handle, "gzopen"); + gzread = (t_gzread) DynamicGet(handle, "gzread"); + gzclose = (t_gzclose) DynamicGet(handle, "gzclose"); + if (gzopen && gzread && gzclose) { + gz_is_available = 1; + } + } + } +#endif + + /* OpenSSL */ +#if HTS_DLOPEN + { + void* handle; +#ifdef _WIN32 + handle = LoadLibrary("ssleay32"); +#else + /* We are compatible with 0.9.6/7 and potentially above */ + handle = dlopen("libssl.so.0.9.7", RTLD_LAZY); + if (handle == NULL) { + handle = dlopen("libssl.so.0.9.6", RTLD_LAZY); + } + if (handle == NULL) { + /* Try harder */ + handle = dlopen("libssl.so.0", RTLD_LAZY); + } +#endif + if (handle) { + SSL_shutdown = (t_SSL_shutdown) DynamicGet(handle, "SSL_shutdown"); + SSL_free = (t_SSL_free) DynamicGet(handle, "SSL_free"); + SSL_new = (t_SSL_new) DynamicGet(handle, "SSL_new"); + SSL_clear = (t_SSL_clear) DynamicGet(handle, "SSL_clear"); + SSL_set_fd = (t_SSL_set_fd) DynamicGet(handle, "SSL_set_fd"); + SSL_set_connect_state = (t_SSL_set_connect_state) DynamicGet(handle, "SSL_set_connect_state"); + SSL_connect = (t_SSL_connect) DynamicGet(handle, "SSL_connect"); + SSL_get_error = (t_SSL_get_error) DynamicGet(handle, "SSL_get_error"); + SSL_write = (t_SSL_write) DynamicGet(handle, "SSL_write"); + SSL_read = (t_SSL_read) DynamicGet(handle, "SSL_read"); + SSL_library_init = (t_SSL_library_init) DynamicGet(handle, "SSL_library_init"); + ERR_load_SSL_strings = (t_ERR_load_SSL_strings) DynamicGet(handle, "ERR_load_SSL_strings"); + SSLv23_client_method = (t_SSLv23_client_method) DynamicGet(handle, "SSLv23_client_method"); + SSL_CTX_new = (t_SSL_CTX_new) DynamicGet(handle, "SSL_CTX_new"); + SSL_load_error_strings = (t_SSL_load_error_strings) DynamicGet(handle, "SSL_load_error_strings"); + SSL_CTX_ctrl = (t_SSL_CTX_ctrl) DynamicGet(handle, "SSL_CTX_ctrl"); +#ifdef _WIN32 + handle = LoadLibrary("libeay32"); +#endif + ERR_load_crypto_strings = (t_ERR_load_crypto_strings) DynamicGet(handle, "ERR_load_crypto_strings"); + ERR_error_string = (t_ERR_error_string) DynamicGet(handle, "ERR_error_string"); + + if (SSL_shutdown && SSL_free && SSL_CTX_ctrl && SSL_new && SSL_clear && + SSL_set_fd && SSL_set_connect_state && SSL_connect && SSL_get_error && SSL_write + && SSL_read && SSL_library_init && SSLv23_client_method && SSL_CTX_new + && SSL_load_error_strings && ERR_error_string) { + SSL_is_available = 1; + } + } + } +#endif + /* */ + + /* + FLASH + Load the library on-the-fly, if available + If not, that's not a problem + */ +#if HTS_DLOPEN + { +#ifdef _WIN32 + void* handle = LoadLibrary("htsswf"); +#else + void* handle = dlopen("libhtsswf.so.1", RTLD_LAZY); +#endif + if (handle) { + hts_detect_swf = (t_hts_detect_swf) DynamicGet(handle, "hts_detect_swf"); + hts_parse_swf = (t_hts_parse_swf) DynamicGet(handle, "hts_parse_swf"); + if (hts_detect_swf && hts_parse_swf) { + swf_is_available = 1; + } + } + // FreeLibrary(handle); + // dlclose(handle); + } +#endif + + /* <<< */ + + /* Options availability */ + sprintf(WHAT_is_available, "%s%s%s%s", + V6_is_available ? "" : "-noV6", + gz_is_available ? "" : "-nozip", + SSL_is_available ? "" : "-nossl", + swf_is_available ? "+swf" : ""); + + + } +} + +static void htspe_log(htsmoduleStruct* str, char* msg) { + char* savename = str->filename; + httrackp* opt = (httrackp*) str->opt; + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(External module): parsing %s using module %s"LF, + savename, msg); + } +} + +HTSEXT_API const char* hts_is_available(void) { + return WHAT_is_available; +} diff --git a/src/htsmodules.h b/src/htsmodules.h new file mode 100644 index 0000000..7d1154b --- /dev/null +++ b/src/htsmodules.h @@ -0,0 +1,111 @@ +/* ------------------------------------------------------------ */ +/* +HTTrack Website Copier, Offline Browser for Windows and Unix +Copyright (C) Xavier Roche and other contributors + +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 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. + + +Important notes: + +- We hereby ask people using this source NOT to use it in purpose of grabbing +emails addresses, or collecting any other private information on persons. +This would disgrace our work, and spoil the many hours we spent on it. + + +Please visit our Website: http://www.httrack.com +*/ + + +/* ------------------------------------------------------------ */ +/* File: htsmodules.h subroutines: */ +/* external modules (parsers) */ +/* Author: Xavier Roche */ +/* ------------------------------------------------------------ */ + +#ifndef HTS_MODULES +#define HTS_MODULES + +/* Function type to add links inside the module + link : link to add (absolute or relative) + str : structure defined below + Returns 1 if the link was added, 0 if not +*/ +typedef struct htsmoduleStruct htsmoduleStruct; +typedef int (* t_htsAddLink)(htsmoduleStruct* str, char* link); + +/* Structure passed to the module */ +struct htsmoduleStruct { + /* Read-only elements */ + char* filename; /* filename (C:\My Web Sites\...) */ + int size; /* size of filename (should be > 0) */ + char* mime; /* MIME type of the object */ + char* url_host; /* incoming hostname (www.foo.com) */ + char* url_file; /* incoming filename (/bar/bar.gny) */ + + /* Write-only */ + char* err_msg; /* if an error occured, the error message (max. 1KB) */ + + /* Read/Write */ + int relativeToHtmlLink; /* set this to 1 if all urls you pass to addLink + are in fact relative to the html file where your + module was originally */ + + /* Callbacks */ + t_htsAddLink addLink; /* call this function when links are + being detected. it if not your responsability to decide + if the engine will keep them, or not. */ + + /* Optional */ + char* localLink; /* if non null, the engine will write there the local + relative filename of the link added by addLink(), or + the absolute path if the link was refused by the wizard */ + int localLinkSize; /* size of the optionnal buffer */ + + /* User-defined */ + void* userdef; /* can be used by callback routines + */ + + /* ---- ---- ---- */ + + /* Internal use - please don't touch */ + void* liens; + void* opt; + void* back; + int back_max; + void* cache; + void* hashptr; + int numero_passe; + int add_tab_alloc; + /* */ + int* lien_tot_; + int* ptr_; + int* lien_size_; + char** lien_buffer_; + /* Internal use - please don't touch */ + +}; + +extern void htspe_init(void); +extern int hts_parse_externals(htsmoduleStruct* str); +extern void* getFunctionPtr(char* file, char* fncname); + +extern int gz_is_available; +extern int swf_is_available; +extern int SSL_is_available; +extern int V6_is_available; +extern char WHAT_is_available[64]; + +#endif diff --git a/src/htsname.c b/src/htsname.c index 2df0c98..56fa6a6 100644 --- a/src/htsname.c +++ b/src/htsname.c @@ -53,7 +53,7 @@ Please visit our Website: http://www.httrack.com { /* ajout nom */\ char buff[HTS_URLMAXSIZE*2];\ buff[0]='\0';\ - strncat(buff,start_pos,(int) (nom_pos - start_pos));\ + strncatbuff(buff,start_pos,(int) (nom_pos - start_pos));\ url_savename_addstr(save,buff);\ } @@ -83,6 +83,10 @@ static const char *hts_tbdev[] = // système intelligent, qui renomme en cas de besoin (exemple: deux INDEX.HTML et index.html) int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_adr,char* former_fil,char* referer_adr,char* referer_fil,httrackp* opt,lien_url** liens,int lien_tot,lien_back* back,int back_max,cache_back* cache,hash_struct* hash,int ptr,int numero_passe) { char newfil[HTS_URLMAXSIZE*2]; /* ="" */ + /*char normadr_[HTS_URLMAXSIZE*2];*/ + char normfil_[HTS_URLMAXSIZE*2]; + char* normadr; + char* normfil; char* fil; char* adr; char* print_adr; @@ -111,11 +115,25 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a save[0]='\0'; // fil fil = fil_complete; + // copy of fil, used for lookups (see urlhack) + normfil = fil; // et adr (sauter user/pass) // on prend le parti de mettre les fichiers avec login/pass au même endroit que si ils // étaient capturés sans ces paramètres // c'est pour cette raison qu'on ignore totalement adr_complete (même pour la recherche en table de hachage) - adr=jump_identification(adr_complete); + adr = jump_identification(adr_complete); + // copy of adr, used for lookups (see urlhack) + normadr = adr; + + // normalize the URL: + // www.foo.com -> foo.com + // www-42.foo.com -> foo.com + // foo.com/bar//foobar -> foo.com/bar/foobar + if (opt->urlhack) { + // copy of adr (withiotu protocol), used for lookups (see urlhack) + normadr=jump_normalized(adr); + normfil=fil_normalized(fil,normfil_); + } // à afficher sans ftp:// print_adr=jump_protocol(adr); @@ -123,7 +141,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // court-circuit pour lien primaire if (strnotempty(adr)==0) { if (strcmp(fil,"primary")==0) { - strcat(save,"primary.html"); + strcatbuff(save,"primary.html"); return 0; } } @@ -136,43 +154,43 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a int i; #if HTS_HASH - i=hash_read(hash,adr,fil_complete,1); // recherche table 1 (adr+fil) + i=hash_read(hash,normadr,normfil,1,opt->urlhack); // recherche table 1 (adr+fil) if (i>=0) { // ok, trouvé - strcpy(save,liens[i]->sav); + strcpybuff(save,liens[i]->sav); return 0; } - i=hash_read(hash,adr,fil_complete,2); // recherche table 2 (former_adr+former_fil) + i=hash_read(hash,normadr,normfil,2,opt->urlhack); // recherche table 2 (former_adr+former_fil) if (i>=0) { // ok, trouvé // copier location moved! - strcpy(adr_complete,liens[i]->adr); - strcpy(fil_complete,liens[i]->fil); + strcpybuff(adr_complete,liens[i]->adr); + strcpybuff(fil_complete,liens[i]->fil); // et save - strcpy(save,liens[i]->sav); // copier (formé à partir du nouveau lien!) + strcpybuff(save,liens[i]->sav); // copier (formé à partir du nouveau lien!) return 0; } #else for(i=lien_tot-1;i>=0;i--) { #if HTS_CASSE - if ((strcmp(liens[i]->adr,adr)==0) && (strcmp(liens[i]->fil,fil_complete)==0)) + if ((strcmp(liens[i]->adr,normadr)==0) && (strcmp(liens[i]->fil,normfil)==0)) #else - if ((strfield2(liens[i]->adr,adr)) && (strfield2(liens[i]->fil,fil_complete))) + if ((strfield2(liens[i]->adr,normadr)) && (strfield2(liens[i]->fil,normfil))) #endif { // ok c'est le même lien, adresse déja définie - strcpy(save,liens[i]->sav); + strcpybuff(save,liens[i]->sav); return 0; } if (liens[i]->former_adr) { // tester ancienne loc? #if HTS_CASSE - if ((strcmp(liens[i]->former_adr,adr)==0) && (strcmp(liens[i]->former_fil,fil_complete)==0)) + if ((strcmp(liens[i]->former_adr,normadr)==0) && (strcmp(liens[i]->former_fil,normfil)==0)) #else - if ((strfield2(liens[i]->former_adr,adr)) && (strfield2(liens[i]->former_fil,fil_complete))) + if ((strfield2(liens[i]->former_adr,normadr)) && (strfield2(liens[i]->former_fil,normfil))) #endif { // copier location moved! - strcpy(adr_complete,liens[i]->adr); - strcpy(fil_complete,liens[i]->fil); + strcpybuff(adr_complete,liens[i]->adr); + strcpybuff(fil_complete,liens[i]->fil); // et save - strcpy(save,liens[i]->sav); // copier (formé à partir du nouveau lien!) + strcpybuff(save,liens[i]->sav); // copier (formé à partir du nouveau lien!) return 0; } } @@ -182,20 +200,20 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // chercher sans / ou avec / dans former { char fil_complete_patche[HTS_URLMAXSIZE*2]; - strcpy(fil_complete_patche,fil_complete); + strcpybuff(fil_complete_patche,normfil); // Version avec ou sans / if (fil_complete_patche[strlen(fil_complete_patche)-1]=='/') fil_complete_patche[strlen(fil_complete_patche)-1]='\0'; else - strcat(fil_complete_patche,"/"); + strcatbuff(fil_complete_patche,"/"); #if HTS_HASH - i=hash_read(hash,adr,fil_complete_patche,2); // recherche table 2 (former_adr+former_fil) + i=hash_read(hash,normadr,fil_complete_patche,2,opt->urlhack); // recherche table 2 (former_adr+former_fil) if (i>=0) { // écraser fil et adr (pas former_fil?????) - strcpy(adr_complete,liens[i]->adr); - strcpy(fil_complete,liens[i]->fil); + strcpybuff(adr_complete,liens[i]->adr); + strcpybuff(fil_complete,liens[i]->fil); // écrire save - strcpy(save,liens[i]->sav); + strcpybuff(save,liens[i]->sav); return 0; } #else @@ -203,16 +221,16 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a for(i=lien_tot-1;i>=0;i--) { if (liens[i]->former_adr) { // former-adr? #if HTS_CASSE - if ((strcmp(liens[i]->former_adr,adr)==0) && (strcmp(liens[i]->former_fil,fil_complete_patche)==0)) + if ((strcmp(liens[i]->former_adr,normadr)==0) && (strcmp(liens[i]->former_fil,fil_complete_patche)==0)) #else - if ((strfield2(liens[i]->former_adr,adr)) && (strfield2(liens[i]->former_fil,fil_complete_patche))) + if ((strfield2(liens[i]->former_adr,normadr)) && (strfield2(liens[i]->former_fil,fil_complete_patche))) #endif { // ok c'est le même lien, adresse déja définie // écraser fil et adr (pas former_fil?????) - strcpy(adr_complete,liens[i]->adr); - strcpy(fil_complete,liens[i]->fil); + strcpybuff(adr_complete,liens[i]->adr); + strcpybuff(fil_complete,liens[i]->fil); // écrire save - strcpy(save,liens[i]->sav); + strcpybuff(save,liens[i]->sav); return 0; } } @@ -228,14 +246,14 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a char* a; a=strchr(fil,'?'); if (a!=NULL) { - strncat(newfil,fil,(int) (a - fil)); + strncatbuff(newfil,fil,(int) (a - fil)); } else { - strcpy(newfil,fil); + strcpybuff(newfil,fil); } fil=newfil; } // décoder % - strcpy(fil,unescape_http(fil)); + strcpybuff(fil,unescape_http(fil)); /* { char tempo[HTS_URLMAXSIZE*2]; @@ -249,7 +267,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a tempo[j++]=fil[i]; } tempo[j++]='\0'; - strcpy(fil,tempo); + strcpybuff(fil,tempo); } */ @@ -261,7 +279,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a (strcmp(get_ext(fil),"html") != 0) && (strcmp(get_ext(fil),"htm") != 0) ) { - strcpy(ext,"html"); + strcpybuff(ext,"html"); ext_chg=1; } break; @@ -285,14 +303,15 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // si option check_type activée if ((opt->check_type) && (!ext_chg)) { + int ishtest; if ( (!strfield(adr_complete,"file://")) && (!strfield(adr_complete,"ftp://")) ) { // tester type avec requète HEAD si on ne connait pas le type du fichier if (!( (opt->check_type==1) && (fil[strlen(fil)-1]=='/') )) // slash doit être html? - if (ishtml(fil)<0) { // on ne sait pas si c'est un html ou un fichier.. + if ((ishtest=ishtml(fil)) < 0) { // on ne sait pas si c'est un html ou un fichier.. // lire dans le cache - htsblk r = cache_read(opt,cache,adr,fil,NULL); // test uniquement + htsblk r = cache_read(opt,cache,adr,fil,NULL,NULL); // test uniquement if (r.statuscode != -1) { // pas d'erreur de lecture cache char s[16]; s[0]='\0'; if ( (opt->debug>1) && (opt->log!=NULL) ) { @@ -301,13 +320,13 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a } if (strnotempty(r.cdispo)) { /* filename given */ ext_chg=2; /* change filename */ - strcpy(ext,r.cdispo); + strcpybuff(ext,r.cdispo); } - else if (!may_unknown(r.contenttype)) { // on peut patcher à priori? + else if (!may_unknown(r.contenttype) || ishtest == -2) { // on peut patcher à priori? give_mimext(s,r.contenttype); // obtenir extension if (strnotempty(s)>0) { // on a reconnu l'extension ext_chg=1; - strcpy(ext,s); + strcpybuff(ext,s); } } // @@ -326,21 +345,25 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a fspc(opt->log,"debug"); fprintf(opt->log,"Testing link type %s%s"LF,adr_complete,fil_complete); test_flush; } - strcpy(curr_adr,adr_complete); - strcpy(curr_fil,fil_complete); + strcpybuff(curr_adr,adr_complete); + strcpybuff(curr_fil,fil_complete); // ajouter dans le backing le fichier en mode test // savename: rien car en mode test if (back_add(back,back_max,opt,cache,curr_adr,curr_fil,BACK_ADD_TEST,referer_adr,referer_fil,1,NULL)!=-1) { int b; b=back_index(back,back_max,curr_adr,curr_fil,BACK_ADD_TEST); if (b>=0) { + int stop_looping=0; int petits_tours=0; int get_test_request=0; // en cas de bouclage sur soi même avec HEAD, tester avec GET.. parfois c'est la cause des problèmes do { // temps à attendre, et remplir autant que l'on peut le cache (backing) - if (back[b].status>0) back_wait(back,back_max,opt,cache,0); - if (ptr>=0) + if (back[b].status>0) { + back_wait(back,back_max,opt,cache,0); + } + if (ptr>=0) { back_fillmax(back,back_max,opt,cache,liens,ptr,numero_passe,lien_tot); + } // on est obligé d'appeler le shell pour le refresh.. #if HTS_ANALYSTE @@ -359,8 +382,9 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a if (!hts_htmlcheck_loop(back,back_max,b,ptr,lien_tot,(int) (time_local()-HTS_STAT.stat_timestart),&HTS_STAT)) { return -1; - } else if (_hts_cancel) { // cancel 2 ou 1 (cancel parsing) - back_delete(back,b); // cancel test + } else if (_hts_cancel || !back_checkmirror(opt)) { // cancel 2 ou 1 (cancel parsing) + back_delete(opt,back,b); // cancel test + stop_looping = 1; } } #endif @@ -378,7 +402,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a char mov_url[HTS_URLMAXSIZE*2],mov_adr[HTS_URLMAXSIZE*2],mov_fil[HTS_URLMAXSIZE*2]; mov_url[0]=mov_adr[0]=mov_fil[0]='\0'; // - strcpy(mov_url,back[b].r.location); // copier URL + strcpybuff(mov_url,back[b].r.location); // copier URL if (ident_url_relatif(mov_url,curr_adr,curr_fil,mov_adr,mov_fil)>=0) { // si non bouclage sur soi même, ou si test avec GET non testé if ((strcmp(mov_adr,curr_adr)) || (strcmp(mov_fil,curr_fil)) || (get_test_request==0)) { @@ -389,8 +413,8 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // recopier former_adr/fil? if ((former_adr) && (former_fil)) { if (strnotempty(former_adr)==0) { // Pas déja noté - strcpy(former_adr,curr_adr); - strcpy(former_fil,curr_fil); + strcpybuff(former_adr,curr_adr); + strcpybuff(former_fil,curr_fil); } } @@ -400,25 +424,25 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a robots_wizard* robots = (robots_wizard*) opt->robotsptr; if (hts_acceptlink(opt,ptr,lien_tot,liens, mov_adr,mov_fil, - opt->filters.filters,opt->filters.filptr,opt->maxfilter, - robots, &set_prio_to, NULL) == 1) { /* forbidden */ has_been_moved = 1; - back_delete(back,b); // ok - strcpy(curr_adr,mov_adr); - strcpy(curr_fil,mov_fil); + back_maydelete(opt,back,b); // ok + strcpybuff(curr_adr,mov_adr); + strcpybuff(curr_fil,mov_fil); mov_url[0]='\0'; + stop_looping = 1; } } // ftp: stop! if (strfield(mov_url,"ftp://")) { // ftp, ok on arrête has_been_moved = 1; - back_delete(back,b); // ok - strcpy(curr_adr,mov_adr); - strcpy(curr_fil,mov_fil); + back_maydelete(opt,back,b); // ok + strcpybuff(curr_adr,mov_adr); + strcpybuff(curr_fil,mov_fil); + stop_looping = 1; } else if (*mov_url) { char* methode; if (!get_test_request) @@ -438,9 +462,9 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a } // libérer emplacement backing actuel et attendre le prochain - back_delete(back,b); - strcpy(curr_adr,mov_adr); - strcpy(curr_fil,mov_fil); + back_maydelete(opt,back,b); + strcpybuff(curr_adr,mov_adr); + strcpybuff(curr_fil,mov_fil); b=back_index(back,back_max,curr_adr,curr_fil,methode); if (!get_test_request) has_been_moved = 1; // sinon ne pas forcer has_been_moved car non déplacé @@ -470,21 +494,20 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a } } // ok, leaving } - - } while(back[b].status>0); + } while(!stop_looping && back[b].status > 0 && back[b].status < 1000); // Si non déplacé, forcer type? if (!has_been_moved) { if (back[b].r.statuscode!=-10) { // erreur if (strnotempty(back[b].r.contenttype)==0) - strcpy(back[b].r.contenttype,"text/html"); // message d'erreur en html + strcpybuff(back[b].r.contenttype,"text/html"); // message d'erreur en html // Finalement on, renvoie un erreur, pour ne toucher à rien dans le code // libérer emplacement backing /*if (opt->errlog!=NULL) { fspc(opt->errlog,0); fprintf(opt->errlog,"Error: (during prefetch) %s (%d) to link %s at %s%s"LF,back[b].r.msg,back[b].r.statuscode,back[b].r.location,curr_adr,curr_fil); test_flush; } - back_delete(back,b); + back_delete(opt,back,b); return -1; // ERREUR (404 par exemple) */ } @@ -494,13 +517,13 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a s[0]='\0'; if (strnotempty(back[b].r.cdispo)) { /* filename given */ ext_chg=2; /* change filename */ - strcpy(ext,back[b].r.cdispo); + strcpybuff(ext,back[b].r.cdispo); } - else if ((!may_unknown(back[b].r.contenttype)) || (!get_ext(back[b].url_fil)) ) { // on peut patcher à priori? (pas interdit ou pas de type) + else if (!may_unknown(back[b].r.contenttype) || ishtest == -2 ) { // on peut patcher à priori? (pas interdit ou pas de type) give_mimext(s,back[b].r.contenttype); // obtenir extension if (strnotempty(s)>0) { // on a reconnu l'extension ext_chg=1; - strcpy(ext,s); + strcpybuff(ext,s); } } } @@ -508,14 +531,14 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // FIN Si non déplacé, forcer type? // libérer emplacement backing - back_delete(back,b); + back_maydelete(opt,back,b); // --- --- --- // oops, a été déplacé.. on recalcule en récursif (osons!) if (has_been_moved) { // copier adr, fil (optionnel, mais sinon marche pas pour le rip) - strcpy(adr_complete,curr_adr); - strcpy(fil_complete,curr_fil); + strcpybuff(adr_complete,curr_adr); + strcpybuff(fil_complete,curr_fil); // copier adr, fil return url_savename(curr_adr,curr_fil,save,NULL,NULL,referer_adr,referer_fil,opt,liens,lien_tot,back,back_max,cache,hash,ptr,numero_passe); @@ -551,12 +574,12 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // Donner nom par défaut? if (fil[strlen(fil)-1]=='/') { if (!strfield(adr_complete,"ftp://")) - strcat(fil,DEFAULT_HTML); // nommer page par défaut!! + strcatbuff(fil,DEFAULT_HTML); // nommer page par défaut!! else { if (!opt->proxy.active) - strcat(fil,DEFAULT_FTP); // nommer page par défaut (texte) + strcatbuff(fil,DEFAULT_FTP); // nommer page par défaut (texte) else - strcat(fil,DEFAULT_HTML); // nommer page par défaut (à priori ici html depuis un proxy http) + strcatbuff(fil,DEFAULT_HTML); // nommer page par défaut (à priori ici html depuis un proxy http) } } // Changer extension? @@ -574,13 +597,13 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a if (ext_chg==1) { while((a > fil) && (*a!='.') && (*a!='/')) a--; if (*a=='.') *a='\0'; // couper - strcat(fil,"."); // recopier point + strcatbuff(fil,"."); // recopier point } else { while(( a > fil) && (*a!='/')) a--; if (*a=='/') a++; *a='\0'; } - strcat(fil,ext); // copier ext/nom + strcatbuff(fil,ext); // copier ext/nom } // Rechercher premier / et dernier . @@ -636,24 +659,63 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a } *b='\0'; switch(tok=*a++) { - case '[': // %[param] + case '[': // %[param:prefix_if_not_empty:suffix_if_not_empty:empty_replacement:notfound_replacement] if (strchr(a,']')) { - char name[256]; - char* c=name; + int pos=0; + char name[5][256]; + char* c=name[0]; + for(pos = 0 ; pos < 5 ; pos++) { + name[pos][0]='\0'; + } + pos=0; while(*a!=']') { - *c++=*a++; + if (pos < 5) { + if (*a == ':') { // next token + c=name[++pos]; + a++; + } else { + *c++=*a++; + *c='\0'; + } + } } a++; - *c++='\0'; - strcat(name,"="); /* param=.. */ + strcatbuff(name[0],"="); /* param=.. */ c=strchr(fil_complete,'?'); /* parameters exists */ if (c) { - c=strstr(c,name); /* finds param= */ - if (c) { - c+=strlen(name); /* jumps "param=" */ - while( (*c) && (*c!='&')) - *b++=*c++; + char* cp; + while((cp = strstr(c+1, name[0])) && *(cp-1) != '?' && *(cp-1) != '&') { /* finds [?&]param= */ + c = cp; + } + if (cp) { + c = cp + strlen(name[0]); /* jumps "param=" */ + strcpybuff(b, name[1]); /* prefix */ + b += strlen(b); + if (*c != '\0' && *c != '&') { + char* d = name[0]; + /* */ + while(*c != '\0' && *c != '&') { + *d++ = *c++; + } + *d = '\0'; + d = unescape_http(name[0]); + if (d && *d) { + strcpybuff(b, d); /* value */ + b += strlen(b); + } else { + strcpybuff(b, name[3]); /* empty replacement if any */ + b += strlen(b); + } + } else { + strcpybuff(b, name[3]); /* empty replacement if any */ + b += strlen(b); + } + strcpybuff(b, name[2]); /* suffix */ + b += strlen(b); + } else { + strcpybuff(b, name[4]); /* not found replacement if any */ + b += strlen(b); } } } @@ -662,14 +724,14 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a case 'n': // nom sans ext if (dot_pos) { if (!short_ver) // Noms longs - strncat(b,nom_pos,(int) (dot_pos - nom_pos)); + strncatbuff(b,nom_pos,(int) (dot_pos - nom_pos)); else - strncat(b,nom_pos,min((int) (dot_pos - nom_pos),8)); + strncatbuff(b,nom_pos,min((int) (dot_pos - nom_pos),8)); } else { if (!short_ver) // Noms longs - strcpy(b,nom_pos); + strcpybuff(b,nom_pos); else - strncat(b,nom_pos,8); + strncatbuff(b,nom_pos,8); } b+=strlen(b); // pointer à la fin break; @@ -678,28 +740,28 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a *b='\0'; if (dot_pos) { if (!short_ver) // Noms longs - strncat(b,nom_pos,(int) (dot_pos - nom_pos)); + strncatbuff(b,nom_pos,(int) (dot_pos - nom_pos)); else - strncat(b,nom_pos,min((int) (dot_pos - nom_pos),8)); + strncatbuff(b,nom_pos,min((int) (dot_pos - nom_pos),8)); } else { if (!short_ver) // Noms longs - strcpy(b,nom_pos); + strcpybuff(b,nom_pos); else - strncat(b,nom_pos,8); + strncatbuff(b,nom_pos,8); } b+=strlen(b); // pointer à la fin // RECOPIE NOM + EXT *b='\0'; if (dot_pos) { if (!short_ver) // Noms longs - strcpy(b,dot_pos+1); + strcpybuff(b,dot_pos+1); else - strncat(b,dot_pos+1,3); + strncatbuff(b,dot_pos+1,3); } else { if (!short_ver) // Noms longs - strcpy(b,DEFAULT_EXT); // pas de.. + strcpybuff(b,DEFAULT_EXT); // pas de.. else - strcpy(b,DEFAULT_EXT_SHORT); // pas de.. + strcpybuff(b,DEFAULT_EXT_SHORT); // pas de.. } b+=strlen(b); // pointer à la fin // @@ -708,14 +770,14 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a *b='\0'; if (dot_pos) { if (!short_ver) // Noms longs - strcpy(b,dot_pos+1); + strcpybuff(b,dot_pos+1); else - strncat(b,dot_pos+1,3); + strncatbuff(b,dot_pos+1,3); } else { if (!short_ver) // Noms longs - strcpy(b,DEFAULT_EXT); // pas de.. + strcpybuff(b,DEFAULT_EXT); // pas de.. else - strcpy(b,DEFAULT_EXT_SHORT); // pas de.. + strcpybuff(b,DEFAULT_EXT_SHORT); // pas de.. } b+=strlen(b); // pointer à la fin break; @@ -723,14 +785,14 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a *b='\0'; if (nom_pos != fil + 1) { // pas: /index.html (chemin nul) if (!short_ver) { // Noms longs - strncat(b,fil,(int) (nom_pos - fil) - 1); + strncatbuff(b,fil,(int) (nom_pos - fil) - 1); } else { char pth[HTS_URLMAXSIZE*2],n83[HTS_URLMAXSIZE*2]; pth[0]=n83[0]='\0'; // - strncat(pth,fil,(int) (nom_pos - fil) - 1); + strncatbuff(pth,fil,(int) (nom_pos - fil) - 1); long_to_83(opt->savename_83,n83,pth); - strcpy(b,n83); + strcpybuff(b,n83); } } b+=strlen(b); // pointer à la fin @@ -739,14 +801,14 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a *b='\0'; if (strcmp(adr_complete,"file://")==0) { if (!short_ver) // Noms longs - strcpy(b,"localhost"); + strcpybuff(b,"localhost"); else - strcpy(b,"local"); + strcpybuff(b,"local"); } else { if (!short_ver) // Noms longs - strcpy(b,print_adr); + strcpybuff(b,print_adr); else - strncat(b,print_adr,8); + strncatbuff(b,print_adr,8); } b+=strlen(b); // pointer à la fin break; @@ -756,17 +818,17 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a char digest[32+2]; char buff[HTS_URLMAXSIZE*2]; digest[0]=buff[0]='\0'; - strcpy(buff,adr); - strcat(buff,fil_complete); + strcpybuff(buff,adr); + strcatbuff(buff,fil_complete); domd5mem(buff,strlen(buff),digest,1); - strcpy(b,digest); + strcpybuff(b,digest); } b+=strlen(b); // pointer à la fin break; case 'Q': case 'q': /* query MD5 (128-bits/16-bits) GENERATED ONLY IF query string exists! */ *b='\0'; - strncat(b,url_md5(fil_complete),(tok == 'Q')?32:4); + strncatbuff(b,url_md5(fil_complete),(tok == 'Q')?32:4); b+=strlen(b); // pointer à la fin break; } @@ -788,23 +850,23 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a if (strcmp(adr_complete,"file://")==0) { //## if (*adr==lOCAL_CHAR) { if (opt->savename_83 != 1) // noms longs - strcat(save,"localhost"); + strcatbuff(save,"localhost"); else - strcat(save,"local"); + strcatbuff(save,"local"); } else { // adresse url if (!opt->savename_83) { // noms longs (et pas de .) - strcat(save,print_adr); + strcatbuff(save,print_adr); } else { // noms 8-3 if (strlen(print_adr)>4) { if (strfield(print_adr,"www.")) - strncat(save,print_adr+4,max_char); + strncatbuff(save,print_adr+4,max_char); else - strncat(save,print_adr,8); - } else strncat(save,print_adr,max_char); + strncatbuff(save,print_adr,8); + } else strncatbuff(save,print_adr,max_char); } } - if (*fil!='/') strcat(save,"/"); + if (*fil!='/') strcatbuff(save,"/"); } } @@ -819,7 +881,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a else // index.html ou /index.html url_savename_addstr(save,fil); if (save[strlen(save)-1]=='/') - strcat(save,DEFAULT_HTML); // nommer page par défaut!! + strcatbuff(save,DEFAULT_HTML); // nommer page par défaut!! */ /* add name */ @@ -836,38 +898,38 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a if (strcmp(adr_complete,"file://")==0) { //## if (*adr==lOCAL_CHAR) { if (opt->savename_83 != 1) // noms longs - strcat(save,"localhost/"); + strcatbuff(save,"localhost/"); else - strcat(save,"local/"); + strcatbuff(save,"local/"); } else { // adresse url if (!opt->savename_83) { // noms longs - strcat(save,print_adr); strcat(save,"/"); + strcatbuff(save,print_adr); strcatbuff(save,"/"); } else { // noms 8-3 if (strlen(print_adr)>4) { if (strfield(print_adr,"www.")) - strncat(save,print_adr+4,max_char); + strncatbuff(save,print_adr+4,max_char); else - strncat(save,print_adr,max_char); - strcat(save,"/"); + strncatbuff(save,print_adr,max_char); + strcatbuff(save,"/"); } else { - strncat(save,print_adr,max_char); strcat(save,"/"); + strncatbuff(save,print_adr,max_char); strcatbuff(save,"/"); } } } } else { - strcat(save,"web/"); // répertoire général + strcatbuff(save,"web/"); // répertoire général } } // si un html à coup sûr if ( (ext_chg!=0) ? (ishtml_ext(ext)==1) : (ishtml(fil)==1) ) { if (opt->savename_type%100==2) { // html/ - strcat(save,"html/"); + strcatbuff(save,"html/"); } } else { if ((opt->savename_type%100==1) || (opt->savename_type%100==2)) { // html & images - strcat(save,"images/"); + strcatbuff(save,"images/"); } } @@ -881,17 +943,17 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // html? if ( (ext_chg!=0) ? (ishtml_ext(ext)==1) : (ishtml(fil)==1) ) { if (opt->savename_type%100==5) - strcat(save,"html/"); + strcatbuff(save,"html/"); } else { char* a=fil+strlen(fil)-1; while(( a> fil) && (*a != '/') && (*a != '.')) a--; if (*a!='.') - strcat(save,"other"); + strcatbuff(save,"other"); else - strcat(save,a+1); - strcat(save,"/"); + strcatbuff(save,a+1); + strcatbuff(save,"/"); } - /*strcat(save,a);*/ + /*strcatbuff(save,a);*/ /* add name */ ADD_STANDARD_NAME(0); } @@ -923,7 +985,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a a=fil+strlen(fil)-1; while(( a > fil) && (*a != '/') && (*a != '.')) a--; if (*a=='.') { - strcat(save,a); // ajouter + strcatbuff(save,a); // ajouter } } break; @@ -933,7 +995,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a char* a=fil+strlen(fil)-1; while(((int) a>(int) fil) && (*a != '/') && (*a != '\\')) a--; if ((*a=='/') || (*a=='\\')) a++; - strcat(save,a); + strcatbuff(save,a); */ /* add name */ @@ -947,7 +1009,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a #endif if (save[strlen(save)-1]=='/') - strcat(save,DEFAULT_HTML); // nommer page par défaut!! + strcatbuff(save,DEFAULT_HTML); // nommer page par défaut!! } @@ -958,8 +1020,8 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a while(((int) a>(int) save) && (*a!='.') && (*a!='/')) a--; if (*a=='.') *a='\0'; // couper // recopier extension - strcat(save,"."); - strcat(save,ext); // copier ext + strcatbuff(save,"."); + strcatbuff(save,ext); // copier ext }*/ // de même en cas de manque d'extension on en place une de manière forcée.. // cela évite les /chez/toto et les /chez/toto/index.html incompatibles @@ -967,8 +1029,8 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a char* a=save+strlen(save)-1; while(( a > save) && (*a!='.') && (*a!='/')) a--; if (*a!='.') { // agh pas de point - //strcat(save,".none"); // a éviter - strcat(save,".html"); // préférable! + //strcatbuff(save,".none"); // a éviter + strcatbuff(save,".html"); // préférable! if ( (opt->debug>1) && (opt->errlog!=NULL) ) { fspc(opt->errlog,"warning"); fprintf(opt->errlog,"Default HTML type set for %s%s"LF,adr_complete,fil_complete); test_flush; @@ -985,14 +1047,14 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a char tempo[HTS_URLMAXSIZE*2]; char *b; tempo[0]='\0'; - strcpy(tempo,"["); + strcpybuff(tempo,"["); b=strchr(save,':'); if (!b) b=strchr(save,'@'); if (b) - strncat(tempo,save,(int) b-(int) a); - strcat(tempo,"]"); - strcat(tempo,a); - strcpy(save,a); + strncatbuff(tempo,save,(int) b-(int) a); + strcatbuff(tempo,"]"); + strcatbuff(tempo,a); + strcpybuff(save,a); } } */ @@ -1000,8 +1062,8 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // éviter les / au début (cause: N100) if (save[0]=='/') { char tempo[HTS_URLMAXSIZE*2]; - strcpy(tempo,save+1); - strcpy(save,tempo); + strcpybuff(tempo,save+1); + strcpybuff(save,tempo); } // changer les ~,:,",*,? en _ pour sauver sur disque @@ -1017,6 +1079,12 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a hts_replace(save,'|','_'); // interdit sous windows // hts_replace(save,'@','_'); + if (opt->savename_83 == 2) { // CDROM + // maybe other ones? + hts_replace(save,'-','_'); + hts_replace(save,'=','_'); + hts_replace(save,'+','_'); + } // { // éliminer les // (comme ftp://) char* a; @@ -1031,20 +1099,22 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a #if HTS_OVERRIDE_DOS_FOLDERS - /* Replace /foo/nul/bar by /foo/nul-/bar */ + /* Replace /foo/nul/bar by /foo/nul_/bar */ { int i=0; while(hts_tbdev[i][0]) { char* a=save; - while((a=strstr(a,hts_tbdev[i]))) { + while((a=strstrcase(a,(char*)hts_tbdev[i]))) { switch ( (int) a[strlen(hts_tbdev[i])] ) { case '\0': - case '/': { + case '/': + case '.': + { char tempo[HTS_URLMAXSIZE*2]; tempo[0]='\0'; - strncat(tempo,save,(int) (a - save) + strlen(hts_tbdev[i])); - strcat(tempo,"-"); - strcat(tempo,a+strlen(hts_tbdev[i])); - strcpy(save,tempo); + strncatbuff(tempo,save,(int) (a - save) + strlen(hts_tbdev[i])); + strcatbuff(tempo,"_"); + strcatbuff(tempo,a+strlen(hts_tbdev[i])); + strcpybuff(save,tempo); } break; } @@ -1059,7 +1129,7 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a if (opt->savename_83) { char n83[HTS_URLMAXSIZE*2]; long_to_83(opt->savename_83,n83,save); - strcpy(save,n83); + strcpybuff(save,n83); } @@ -1079,9 +1149,9 @@ int url_savename(char* adr_complete,char* fil_complete,char* save,char* former_a // chemin primaire éventuel A METTRE AVANT if (strnotempty(opt->path_html)) { char tempo[HTS_URLMAXSIZE*2]; - strcpy(tempo,opt->path_html); - strcat(tempo,save); - strcpy(save,tempo); + strcpybuff(tempo,opt->path_html); + strcatbuff(tempo,save); + strcpybuff(save,tempo); } @@ -1100,7 +1170,7 @@ printf("\nStart search\n"); #endif #if HTS_HASH - i=hash_read(hash,save,"",0); // lecture type 0 (sav) + i=hash_read(hash,save,"",0,0); // lecture type 0 (sav) if (i>=0) #else for(i=lien_tot-1;i>=0;i--) { @@ -1143,9 +1213,9 @@ printf("\nWRONG CASE UNMATCH : \n%s\n%s, REDEFINE\n",liens[i]->fil,fil_complete) while(( a > save) && (*a!='.') && (*a!='\\') && (*a!='/')) a--; if (*a=='.') - strncat(tempo,save,(int) (a - save)); + strncatbuff(tempo,save,(int) (a - save)); else - strcat(tempo,save); + strcatbuff(tempo,save); // tester la présence d'un -xx (ex: index-2.html -> index-3.html) b=tempo+strlen(tempo)-1; @@ -1172,9 +1242,9 @@ printf("\nWRONG CASE UNMATCH : \n%s\n%s, REDEFINE\n",liens[i]->fil,fil_complete) // ajouter extension if (*a=='.') - strcat(tempo,a); + strcatbuff(tempo,a); - strcpy(save,tempo); + strcpybuff(save,tempo); //printf("switched: %s\n",save); @@ -1204,29 +1274,29 @@ void standard_name(char* b,char* dot_pos,char* nom_pos,char* fil_complete,int sh /* Nom */ if (dot_pos) { if (!short_ver) // Noms longs - strncat(b,nom_pos,(int) (dot_pos - nom_pos)); + strncatbuff(b,nom_pos,(int) (dot_pos - nom_pos)); else - strncat(b,nom_pos,min((int) (dot_pos - nom_pos),8)); + strncatbuff(b,nom_pos,min((int) (dot_pos - nom_pos),8)); } else { if (!short_ver) // Noms longs - strcat(b,nom_pos); + strcatbuff(b,nom_pos); else - strncat(b,nom_pos,8); + strncatbuff(b,nom_pos,8); } /* MD5 - 16 bits */ - strncat(b,url_md5(fil_complete),4); + strncatbuff(b,url_md5(fil_complete),4); /* Ext */ if (dot_pos) { - strcat(b,"."); + strcatbuff(b,"."); if (!short_ver) // Noms longs - strcat(b,dot_pos+1); + strcatbuff(b,dot_pos+1); else - strncat(b,dot_pos+1,3); + strncatbuff(b,dot_pos+1,3); } else { if (!short_ver) // Noms longs - strcat(b,DEFAULT_EXT); // pas de.. + strcatbuff(b,DEFAULT_EXT); // pas de.. else - strcat(b,DEFAULT_EXT_SHORT); // pas de.. + strcatbuff(b,DEFAULT_EXT_SHORT); // pas de.. } } @@ -1243,7 +1313,7 @@ char* url_md5(char* fil_complete) { char buff[HTS_URLMAXSIZE*2]; a++; digest[0]=buff[0]='\0'; - strcat(buff,a); /* query string MD5 */ + strcatbuff(buff,a); /* query string MD5 */ domd5mem(buff,strlen(buff),digest,1); } } diff --git a/src/htsnet.h b/src/htsnet.h index d12b1e4..dbdbcc6 100644 --- a/src/htsnet.h +++ b/src/htsnet.h @@ -56,23 +56,26 @@ Please visit our Website: http://www.httrack.com #include #include #include + /* Force for sun env. */ + #ifndef BSD_COMP + #define BSD_COMP + #endif #include /* gethostname & co */ +#ifdef HAVE_UNISTD_H #include +#endif /* inet_addr */ #include // pas la peine normalement.. -#if HTS_PLATFORM!=3 - #include -#else #ifndef HTS_DO_NOT_REDEFINE_in_addr_t typedef unsigned long in_addr_t; #endif -#endif -#ifndef min - #define min(a,b) ((a)>(b)?(b):(a)) - #define max(a,b) ((a)>(b)?(a):(b)) -#endif +#undef min +#undef max +#undef Sleep +#define min(a,b) ((a)>(b)?(b):(a)) +#define max(a,b) ((a)>(b)?(a):(b)) #define Sleep(a) { if (((a)*1000)%1000000) usleep(((a)*1000)%1000000); if (((a)*1000)/1000000) sleep(((a)*1000)/1000000); } #endif @@ -104,9 +107,16 @@ typedef struct { /* Set port to sockaddr structure */ #define SOCaddr_initport(server, port) do { \ - SOCaddr_sinport(server) = htons((unsigned short int) (port)); \ + SOCaddr_sinport(server) = htons((unsigned short int) (port)); \ +} while(0) + +#define SOCaddr_initany(server, server_len) do { \ + SOCaddr_sinfamily(server) = AF_INET; \ + memset(&SOCaddr_sinaddr(server), 0, sizeof(struct sockaddr_in)); \ + server_len=sizeof(struct sockaddr_in); \ } while(0) + /* Copy sockaddr to another one */ #define SOCaddr_copyaddr(server, server_len, hpaddr, hpsize) do { \ if (hpsize == sizeof(struct sockaddr_in)) { \ @@ -171,6 +181,12 @@ typedef struct { SOCaddr_sinport(server) = htons((unsigned short int) (port)); \ } while(0) +#define SOCaddr_initany(server, server_len) do { \ + SOCaddr_sinfamily(server) = AF_INET; \ + memset(&SOCaddr_sinaddr(server), 0, sizeof(struct sockaddr_in)); \ + server_len=sizeof(struct sockaddr_in); \ +} while(0) + /* Copy sockaddr to SOCaddr diff --git a/src/htsnostatic.c b/src/htsnostatic.c index 5971d5d..eff6184 100644 --- a/src/htsnostatic.c +++ b/src/htsnostatic.c @@ -39,6 +39,7 @@ Please visit our Website: http://www.httrack.com #include "htsbase.h" #include "htshash.h" +#include "htsinthash.h" typedef struct { /* @@ -156,7 +157,7 @@ int hts_freevar() { return 1; } -int hts_resetvar() { +HTSEXT_API int hts_resetvar() { int r; hts_lockvar(); { diff --git a/src/htsnostatic.h b/src/htsnostatic.h index 6dbb072..f24f0ad 100644 --- a/src/htsnostatic.h +++ b/src/htsnostatic.h @@ -88,7 +88,9 @@ Please visit our Website: http://www.httrack.com */ int hts_initvar(void); int hts_freevar(void); -int hts_resetvar(void); +#ifndef HTTRACK_DEFLIB +HTSEXT_API int hts_resetvar(void); +#endif int hts_maylockvar(void); int hts_lockvar(void); int hts_unlockvar(void); @@ -183,6 +185,7 @@ if ( cKey.localInit ) { \ } \ if ( ( ! cKey.localInit ) || ( name == NULL ) ) { \ if (!hts_maylockvar()) { \ + abortLog("unable to lock mutex (not initialized?!)"); \ abort(); \ } \ hts_lockvar(); \ @@ -190,6 +193,7 @@ if ( ( ! cKey.localInit ) || ( name == NULL ) ) { \ { \ name = (type *) calloc((nelt), sizeof(type)); \ if (name == NULL) { \ + abortLog("unable to allocate memory for variable!"); \ abort(); \ } \ { \ @@ -202,6 +206,7 @@ if ( ( ! cKey.localInit ) || ( name == NULL ) ) { \ name = NULL; \ PTHREAD_KEY_GET(cKey.localKey, &name, type*); \ if (name == NULL) { \ + abortLog("unable to load thread key!"); \ abort(); \ } \ if ( ! cKey.localInit ) { \ @@ -214,6 +219,7 @@ if ( ( ! cKey.localInit ) || ( name == NULL ) ) { \ else { \ PTHREAD_KEY_GET(cKey.localKey, &name, type*); \ if (name == NULL) { \ + abortLog("unable to load thread key! (2)"); \ abort(); \ } \ } \ diff --git a/src/htsopt.h b/src/htsopt.h index 13bc962..77910b6 100644 --- a/src/htsopt.h +++ b/src/htsopt.h @@ -48,6 +48,7 @@ typedef struct { int active; char name[1024]; int port; + char bindhost[256]; // bind this host } t_proxy; /* Structure utile pour copier en bloc les paramètres */ @@ -60,6 +61,12 @@ typedef struct { /* Structure état du miroir */ typedef struct { int stop; + int exit_xh; + int back_add_stats; + /* */ + int mimehtml_created; + char mimemid[256]; + FILE* mimefp; } htsoptstate; @@ -92,12 +99,13 @@ typedef struct { int maxconn; // nombre max de connexions/s int waittime; // démarrage programmé int cache; // génération d'un cache - int aff_progress; // barre de progression + //int aff_progress; // barre de progression int shell; // gestion d'un shell par pipe stdin/stdout t_proxy proxy; // configuration du proxy int savename_83; // conversion 8-3 pour les noms de fichiers int savename_type; // type de noms: structure originale/html-images en un seul niveau char savename_userdef[256]; // structure userdef (ex: %h%p/%n%q.%t) + int mimehtml; // MIME-html int user_agent_send; // user agent (ex: httrack/1.0 [sun]) char user_agent[128]; char path_log[1024]; // chemin pour cache et log @@ -121,8 +129,10 @@ typedef struct { int accept_cookie; // gestion des cookies t_cookie* cookie; int http10; // forcer http 1.0 + int nokeepalive; // pas de keep-alive int nocompression; // pas de compression int sizehack; // forcer réponse "mis à jour" si taille identique + int urlhack; // force "url normalization" to avoid loops int tolerant; // accepter content-length incorrect int parseall; // essayer de tout parser (tags inconnus contenant des liens, par exemple) int norecatch; // ne pas reprendre les fichiers effacés localement par l'utilisateur @@ -132,7 +142,9 @@ typedef struct { //int maxcache_anticipate; // maximum de liens à anticiper (majorant) int ftp_proxy; // proxy http pour ftp char filelist[1024]; // fichier liste URL à inclure + char urllist[1024]; // fichier liste de filtres à inclure htsfilters filters; // contient les pointeurs pour les filtres + void* hash; // hash structure void* robotsptr; // robots ptr char lang_iso[64]; // en, fr .. char mimedefs[2048]; // ext1=mimetype1\next2=mimetype2.. @@ -170,6 +182,8 @@ typedef struct { int stat_files; // nombre de fichiers écrits int stat_updated_files; // nombre de fichiers mis à jour // + int stat_nrequests; // nombre de requêtes sur socket + int stat_sockid; // nombre de sockets allouées au total int stat_nsocket; // nombre de sockets int stat_errors; // nombre d'erreurs int stat_errors_front; // idem, mais au tout premier niveau diff --git a/src/htsparse.c b/src/htsparse.c index b012a8d..3d35252 100644 --- a/src/htsparse.c +++ b/src/htsparse.c @@ -30,641 +30,1040 @@ Please visit our Website: http://www.httrack.com /* ------------------------------------------------------------ */ -/* File: Main source */ -/* DIRECT INCLUDE TO httrack.c */ +/* File: htsparse.c parser */ +/* html/javascript/css parser */ +/* and other parser routines */ /* Author: Xavier Roche */ /* ------------------------------------------------------------ */ -#if HTS_ANALYSTE -if (hts_htmlcheck(r.adr,(int)r.size,urladr,urlfil)) { -#endif - FILE* fp=NULL; // fichier écrit localement - char* adr=r.adr; // pointeur (on parcourt) - char* lastsaved; // adresse du dernier octet sauvé + 1 - if ( (opt.debug>1) && (opt.log!=NULL) ) { - fspc(opt.log,"debug"); fprintf(opt.log,"scan file.."LF); test_flush; - } +#include +#include +#include +#include +#include +#include - // Indexing! -#if HTS_MAKE_KEYWORD_INDEX - if (opt.kindex) { - if (index_keyword(r.adr,r.size,r.contenttype,savename,opt.path_html)) { - if ( (opt.debug>1) && (opt.log!=NULL) ) { - fspc(opt.log,"debug"); fprintf(opt.log,"indexing file..done"LF); test_flush; - } - } else { - if ( (opt.debug>1) && (opt.log!=NULL) ) { - fspc(opt.log,"debug"); fprintf(opt.log,"indexing file..error!"LF); test_flush; - } - } +/* File defs */ +#include "htscore.h" + +/* specific definitions */ +#include "htsbase.h" +#include "htsnet.h" +#include "htsbauth.h" +#include "htsmd5.h" +#include "htsindex.h" + +/* external modules */ +#include "htsmodules.h" + +// htswrap_add +#include "htswrap.h" + +// parser +#include "htsparse.h" + + +// specific defines +#define urladr (liens[ptr]->adr) +#define urlfil (liens[ptr]->fil) +#define savename (liens[ptr]->sav) +#define parenturladr (liens[liens[ptr]->precedent]->adr) +#define parenturlfil (liens[liens[ptr]->precedent]->fil) +#define parentsavename (liens[liens[ptr]->precedent]->sav) +#define relativeurladr ((!parent_relative)?urladr:parenturladr) +#define relativeurlfil ((!parent_relative)?urlfil:parenturlfil) +#define relativesavename ((!parent_relative)?savename:parentsavename) + +#define test_flush if (opt->flush) { if (opt->log) { fflush(opt->log); } if (opt->errlog) { fflush(opt->errlog); } } + +// does nothing +#define XH_uninit do {} while(0) + +// version optimisée, qui permet de ne pas toucher aux html non modifiés (update) +#define REALLOC_SIZE 8192 +#define HT_ADD_CHK(A) if (((int) (A)+ht_len+1) >= ht_size) { \ + ht_size=(A)+ht_len+REALLOC_SIZE; \ + ht_buff=(char*) realloct(ht_buff,ht_size); \ + if (ht_buff==NULL) { \ + printf("PANIC! : Not enough memory [%d]\n",__LINE__); \ + XH_uninit; \ + abortLogFmt("not enough memory for current html document in HT_ADD_CHK : realloct(%d) failed" _ ht_size); \ + exit(1); \ + } \ + } \ + ht_len+=A; +#define HT_ADD_ADR \ + if ((opt->getmode & 1) && (ptr>0)) { \ + int i=((int) (adr - lastsaved)),j=ht_len; HT_ADD_CHK(i) \ + memcpy(ht_buff+j, lastsaved, i); \ + ht_buff[j+i]='\0'; \ + lastsaved=adr; \ } +#define HT_ADD(A) \ + if ((opt->getmode & 1) && (ptr>0)) { \ + int i=strlen(A),j=ht_len; \ + if (i) { \ + HT_ADD_CHK(i) \ + memcpy(ht_buff+j, A, i); \ + ht_buff[j+i]='\0'; \ + } } +#define HT_ADD_START \ + int ht_size=(int)(r->size*5)/4+REALLOC_SIZE; \ + int ht_len=0; \ + char* ht_buff=NULL; \ + if ((opt->getmode & 1) && (ptr>0)) { \ + ht_buff=(char*) malloct(ht_size); \ + if (ht_buff==NULL) { \ + printf("PANIC! : Not enough memory [%d]\n",__LINE__); \ + XH_uninit; \ + abortLogFmt("not enough memory for current html document in HT_ADD_START : malloct(%d) failed" _ ht_size); \ + exit(1); \ + } \ + ht_buff[0]='\0'; \ + } +#define HT_ADD_END { \ + int ok=0;\ + if (ht_buff) { \ + INTsys file_len=(INTsys) strlen(ht_buff);\ + char digest[32+2];\ + digest[0]='\0';\ + domd5mem(ht_buff,file_len,digest,1);\ + if (fsize(fconv(savename))==file_len) { \ + int mlen;\ + char* mbuff;\ + cache_readdata(cache,"//[HTML-MD5]//",savename,&mbuff,&mlen);\ + if (mlen) mbuff[mlen]='\0';\ + if ((mlen == 32) && (strcmp(((mbuff!=NULL)?mbuff:""),digest)==0)) {\ + ok=1;\ + if ( (opt->debug>1) && (opt->log!=NULL) ) {\ + fspc(opt->log,"debug"); fprintf(opt->log,"File not re-written (md5): %s"LF,savename);\ + test_flush;\ + }\ + } else {\ + ok=0;\ + } \ + }\ + if (!ok) { \ + fp=filecreate(savename); \ + if (fp) { \ + if (file_len>0) {\ + if ((INTsys)fwrite(ht_buff,1,file_len,fp) != file_len) { \ + int fcheck;\ + if ((fcheck=check_fatal_io_errno())) {\ + opt->state.exit_xh=-1;\ + }\ + if (opt->errlog) { \ + fspc(opt->errlog,"error"); fprintf(opt->errlog,"Unable to write HTML file %s: %s"LF, savename, strerror(errno));\ + if (fcheck) {\ + fspc(opt->errlog,"error");\ + fprintf(opt->errlog,"* * Fatal write error, giving up"LF);\ + }\ + test_flush;\ + }\ + }\ + }\ + fclose(fp); fp=NULL; \ + if (strnotempty(r->lastmodified)) \ + set_filetime_rfc822(savename,r->lastmodified); \ + } else {\ + int fcheck;\ + if ((fcheck=check_fatal_io_errno())) {\ + opt->state.exit_xh=-1;\ + }\ + if (opt->errlog) { \ + fspc(opt->errlog,"error");\ + fprintf(opt->errlog,"Unable to save file %s : %s"LF, savename, strerror(errno));\ + if (fcheck) {\ + fspc(opt->errlog,"error");\ + fprintf(opt->errlog,"* * Fatal write error, giving up"LF);\ + }\ + test_flush;\ + }\ + }\ + } else {\ + filenote(savename,NULL); \ + }\ + if (cache->ndx)\ + cache_writedata(cache->ndx,cache->dat,"//[HTML-MD5]//",savename,digest,(int)strlen(digest));\ + } \ + freet(ht_buff); ht_buff=NULL; \ + } +#define HT_ADD_FOP + +// COPY IN HTSCORE.C +#define HT_INDEX_END do { \ +if (!makeindex_done) { \ +if (makeindex_fp) { \ + char tempo[1024]; \ + if (makeindex_links == 1) { \ + sprintf(tempo,""CRLF,makeindex_firstlink); \ + } else \ + tempo[0]='\0'; \ + fprintf(makeindex_fp,template_footer, \ + "", \ + tempo \ + ); \ + fflush(makeindex_fp); \ + fclose(makeindex_fp); /* à ne pas oublier sinon on passe une nuit blanche */ \ + makeindex_fp=NULL; \ + usercommand(opt,0,NULL,fconcat(opt->path_html,"index.html"),"primary","primary"); \ +} \ +} \ +makeindex_done=1; /* ok c'est fait */ \ +} while(0) + +// Enregistrement d'un lien: +// on calcule la taille nécessaire: taille des 3 chaînes à stocker (taille forcée paire, plus 2 octets de sécurité) +// puis on vérifie qu'on a assez de marge dans le buffer - sinon on en réalloue un autre +// enfin on écrit à l'adresse courante du buffer, qu'on incrémente. on décrémente la taille dispo d'autant ensuite +// codebase: si non nul et si .class stockee on le note pour chemin primaire pour classes +// FA,FS: former_adr et former_fil, lien original +#if HTS_HASH +#define liens_record_sav_len(A) +#else +#define liens_record_sav_len(A) (A)->sav_len=strlen((A)->sav) #endif - // Now, parsing - if ((opt.getmode & 1) && (ptr>0)) { // récupérer les html sur disque - // créer le fichier html local - HT_ADD_FOP; // écrire peu à peu le fichier - } - - if (!error) { - int detect_title=0; // détection du title - // - char* in_media=NULL; // in other media type (real media and so..) - int intag=0; // on est dans un tag - int incomment=0; // dans un " - ); - - } else makeindex_done=-1; // fait, erreur - } + base[0]='\0'; // effacer base-href + lastsaved=adr; + do { + int p=0; + int valid_p=0; // force to take p even if == 0 + int ending_p='\0'; // ending quote? + int archivetag_p=0; // avoid multiple-archives with commas + INSCRIPT inscript_state_pos_prev=inscript_state_pos; + error=0; + + /* Hack to avoid NULL char problems with C syntax */ + /* Yes, some bogus HTML pages can embed null chars + and therefore can not be properly handled if this hack is not done + */ + if ( ! (*adr) ) { + if ( ((int) (adr - r->adr)) < r->size) + *adr=' '; + } + + + + /* + index.html built here + */ + // Construction index.html (sommaire) + // Avant de tester les a href, + // Ici on teste si l'on doit construire l'index vers le(s) site(s) miroir(s) + if (!makeindex_done) { // autoriation d'écrire un index + if (!detect_title) { + if (opt->depth == liens[ptr]->depth) { // on note toujours les premiers liens + if (!in_media) { + if (opt->makeindex && (ptr>0)) { + if (opt->getmode & 1) { // autorisation d'écrire + p=strfield(adr,"title"); + if (p) { + if (*(adr-1)=='/') p=0; // /title + } else { + if (strfield(adr,"/html")) + p=-1; // noter, mais sans titre + else if (strfield(adr,"body")) + p=-1; // noter, mais sans titre + else if ( ((int) (adr - r->adr) ) >= (r->size-1) ) + p=-1; // noter, mais sans titre + else if ( (int) (adr - r->adr) >= r->size - 2) // we got to hurry + p=-1; // xxc xxc xxc + } + } else + p=0; - if (makeindex_fp!=NULL) { - char tempo[HTS_URLMAXSIZE*2]; - char s[HTS_URLMAXSIZE*2]; - char* a=NULL; - char* b=NULL; - s[0]='\0'; - if (p>0) { - a=strchr(adr,'>'); - if (a!=NULL) { - a++; - while(is_space(*a)) a++; // sauter espaces & co - b=strchr(a,'<'); // prochain tag - } + if (p) { // ok center + if (makeindex_fp==NULL) { + verif_backblue(opt,opt->path_html); // générer gif + makeindex_fp=filecreate(fconcat(opt->path_html,"index.html")); + if (makeindex_fp!=NULL) { + + // Header + fprintf(makeindex_fp,template_header, + "" + ); + + } else makeindex_done=-1; // fait, erreur } - if (lienrelatif(tempo,liens[ptr]->sav,concat(opt.path_html,"index.html"))==0) { - detect_title=1; // ok détecté pour cette page! - makeindex_links++; // un de plus - strcpy(makeindex_firstlink,tempo); - // - if ((b==a) || (a==NULL) || (b==NULL)) { // pas de titre - strcpy(s,tempo); - } else if ((b-a)<256) { - b--; - while(is_space(*b)) b--; - strncpy(s,a,b-a+1); - *(s+(b-a)+1)='\0'; + + if (makeindex_fp!=NULL) { + char tempo[HTS_URLMAXSIZE*2]; + char s[HTS_URLMAXSIZE*2]; + char* a=NULL; + char* b=NULL; + s[0]='\0'; + if (p>0) { + a=strchr(adr,'>'); + if (a!=NULL) { + a++; + while(is_space(*a)) a++; // sauter espaces & co + b=strchr(a,'<'); // prochain tag + } } + if (lienrelatif(tempo,liens[ptr]->sav,concat(opt->path_html,"index.html"))==0) { + detect_title=1; // ok détecté pour cette page! + makeindex_links++; // un de plus + strcpybuff(makeindex_firstlink,tempo); + // - // Body - fprintf(makeindex_fp,template_body, - tempo, - s - ); + /* Hack */ + if (opt->mimehtml) { + strcpybuff(makeindex_firstlink, "cid:primary/primary"); + } + if ((b==a) || (a==NULL) || (b==NULL)) { // pas de titre + strcpybuff(s,tempo); + } else if ((b-a)<256) { + b--; + while(is_space(*b)) b--; + strncpy(s,a,b-a+1); + *(s+(b-a)+1)='\0'; + } + + // Body + fprintf(makeindex_fp,template_body, + tempo, + s + ); + + } } } } } + + } else if (liens[ptr]->depthdepth) { // on a sauté level1+1 et level1 + HT_INDEX_END; } - - } else if (liens[ptr]->depthmakeindex) + } + // FIN Construction index.html (sommaire) + /* + end -- index.html built here + */ - if (opt.getmode & 1) { // sauver html - p=strfield(adr,""); - // if (p==0) p=strfield(adr,"getmode & 1) { // sauver html + p=strfield(adr,""); + // if (p==0) p=strfield(adr,"adr,'\r')) eol="\r\n"; - time_gmt_rfc822(gmttime); - strcat(tempo,eol); - sprintf(tempo+strlen(tempo),opt.footer,jump_identification(urladr),urlfil,gmttime,"","","","","","","",""); - strcat(tempo,eol); - //fwrite(tempo,1,strlen(tempo),fp); - HT_ADD(tempo); - } - } - } - - // éliminer les is used somewhere else.. darn those browsers are dirty - */ - if (!strstr(adr,"-->")) { + } else if (!incomment) { + intag=0; //inquote=0; + + // entrée dans du javascript? + // on parse ICI car il se peut qu'on ait eu a parser les src=.. dedans + //if (!inscript) { // sinon on est dans un obj.write(".. + if ((intag_start_valid) && + ( + check_tag(intag_start,"script") + || + check_tag(intag_start,"style") + ) + ) { + char* a=intag_start; // < + // ** while(is_realspace(*(--a))); + if (*a=='<') { // sûr que c'est un tag? + if (check_tag(intag_start,"script")) + inscript_name="script"; + else + inscript_name="style"; + inscript=1; + inscript_state_pos=INSCRIPT_START; + intag=1; // because après \r\n"\ + "\r\n"\ + "\r\n"\ + "

Link captured into HTTrack Website Copier, you can now restore your proxy preferences!

\r\n"\ + "

\r\n"\ + "

Clic here to go back

\r\n"\ + ""\ + "\r\n"\ + "\r\n"\ + + +/* String */ + +typedef struct { + char* buff; + int len; + int capa; +} String; + +#define STRING_EMPTY {NULL, 0, 0} +#define BLK_SIZE 8192 +#define StringBuff(blk) ((blk)->buff) +#define StringLength(blk) ((blk)->len) +#define StringCapacity(blk) ((blk)->capa) +#define StringClear(blk) do { \ + if ((blk)->capa > 0) { \ + (blk)->buff[0] = '\0'; \ + }\ + (blk)->len = 0; \ +} while(0) +#define StringFree(blk) do { if ((blk)->buff != NULL) { freet((blk)->buff); (blk)->buff = NULL; } } while(0) +#define StringMemcat(blk, str, size) do { \ + if ((blk)->len + (int)(size) + 1 > (blk)->capa) { \ + (blk)->capa = (blk)->len + (size) + BLK_SIZE; \ + (blk)->buff = (char*) realloct((blk)->buff, (blk)->capa); \ + assertf((blk)->buff != NULL); \ + } \ + if ((int)(size) > 0) { \ + memcpy((blk)->buff + (blk)->len, (str), (size)); \ + (blk)->len += (size); \ + } \ + *((blk)->buff + (blk)->len) = '\0'; \ +} while(0) +#define StringAddchar(blk, c) do { \ + char __c = (c); \ + StringMemcat(blk, &__c, 1); \ +} while(0) +static void* StringAcquire(String* blk) { + void* buff = blk->buff; + blk->buff = NULL; + blk->capa = 0; + blk->len = 0; + return buff; +} + +static void StringStrcat(String* blk, char* str) { + StringMemcat(blk, str, strlen(str)); +} + + +/* Language files */ +int htslang_load(char* limit_to, char* apppath); +void conv_printf(char* from,char* to); +void LANG_DELETE(void); +void LANG_INIT(char* path); +int LANG_T(char* path, int l); +int QLANG_T(int l); +char* LANGSEL(char* name); +char* LANGINTKEY(char* name); +int LANG_SEARCH(char* path, char* iso); +int LANG_LIST(char* path, char* buffer); + +int htslang_init(void); +int htslang_uninit(void); + +int linput_cpp(FILE* fp,char* s,int max); +void unescapehttp(char* s, String* tempo); +void unescapeini(char* s, String* tempo); + +int smallserver_setkey(char* key, char* value); +int smallserver_setkeyint(char* key, LLint value); +int smallserver_setkeyarr(char* key, int id, char* key2, char* value); + +#endif + + + diff --git a/src/htssystem.h b/src/htssystem.h index 989607d..6c4d216 100644 --- a/src/htssystem.h +++ b/src/htssystem.h @@ -1,15 +1 @@ -// Définition de la plate-forme utilisée - -// Sun Solaris .......... 0 -// Windows/95 ........... 1 -// Ibm 580 .............. 2 - -#define HTS_PLATFORM 1 - -// SHELL -#define HTS_ANALYSTE 2 - - -// Fin de la définition - - +/* (empty file) */ diff --git a/src/htssystem.h.windows9x b/src/htssystem.h.windows9x deleted file mode 100644 index 0689e0c..0000000 --- a/src/htssystem.h.windows9x +++ /dev/null @@ -1,11 +0,0 @@ -/* HTTrack, Offline Browser for Windows and Unix */ - -/* HTTrack system definition for Windows */ -/* This should be the only file you have to change */ - -/* Solaris: 0 / Windows: 1 / AIX: 2 / Linux: 3 */ - - -/* Fix plateform number to 1 (Windows) */ -/* If it doesn't compile, try another one */ -#define HTS_PLATEFORM 1 diff --git a/src/htsthread.c b/src/htsthread.c index 0a3bee6..d403730 100644 --- a/src/htsthread.c +++ b/src/htsthread.c @@ -68,7 +68,7 @@ unsigned long _beginthread( void* ( *start_address )( void * ), unsigned stack_s [-1 check if locked (always return 0 with mutex)] -999 initialize */ -int htsSetLock(PTHREAD_LOCK_TYPE* hMutex,int lock) { +HTSEXT_API int htsSetLock(PTHREAD_LOCK_TYPE* hMutex,int lock) { #if HTS_WIN /* lock */ if (lock==1) diff --git a/src/htsthread.h b/src/htsthread.h index cb3a139..326c8cb 100644 --- a/src/htsthread.h +++ b/src/htsthread.h @@ -85,7 +85,7 @@ Please visit our Website: http://www.httrack.com #endif -int htsSetLock(PTHREAD_LOCK_TYPE * hMutex,int lock); +HTSEXT_API int htsSetLock(PTHREAD_LOCK_TYPE * hMutex,int lock); #if USE_PTHREAD unsigned long _beginthread( void* ( *start_address )( void * ), unsigned stack_size, void *arglist ); diff --git a/src/htstools.c b/src/htstools.c index 1eeafbf..44e5137 100644 --- a/src/htstools.c +++ b/src/htstools.c @@ -90,7 +90,7 @@ int ident_url_relatif(char *lien,char* origin_adr,char* origin_fil,char* adr,cha ok=-2; // non supporté } #if HTS_USEOPENSSL - } else if (strfield(lien,"https://")) { + } else if (SSL_is_available && strfield(lien,"https://")) { // Note: ftp:foobar.gif is not valid if (ident_url_absolute(lien,adr,fil)==-1) { ok=-1; // erreur URL @@ -114,45 +114,56 @@ int ident_url_relatif(char *lien,char* origin_adr,char* origin_fil,char* adr,cha /* patch scheme if necessary */ if (strfield(lien,"http:")) { lien+=5; - strcpy(adr, jump_protocol(origin_adr)); // même adresse ; protocole vide (http) + strcpybuff(adr, jump_protocol(origin_adr)); // même adresse ; protocole vide (http) } else if (strfield(lien,"https:")) { lien+=6; - strcpy(adr, "https://"); // même adresse forcée en https - strcat(adr, jump_protocol(origin_adr)); + strcpybuff(adr, "https://"); // même adresse forcée en https + strcatbuff(adr, jump_protocol(origin_adr)); } else if (strfield(lien,"ftp:")) { lien+=4; - strcpy(adr, "ftp://"); // même adresse forcée en ftp - strcat(adr, jump_protocol(origin_adr)); + strcpybuff(adr, "ftp://"); // même adresse forcée en ftp + strcatbuff(adr, jump_protocol(origin_adr)); } else { - strcpy(adr,origin_adr); // même adresse ; et même éventuel protocole + strcpybuff(adr,origin_adr); // même adresse ; et même éventuel protocole } - + if (*lien!='/') { // sinon c'est un lien absolu - a=strchr(origin_fil,'?'); - if (!a) a=origin_fil+strlen(origin_fil); - while((*a!='/') && ( a > origin_fil) ) a--; - if (*a=='/') { // ok on a un '/' - if ( (((int) (a - origin_fil))+1+strlen(lien)) < HTS_URLMAXSIZE) { - // copier chemin - strncpy(fil,origin_fil,((int) (a - origin_fil))+1); - *(fil + ((int) (a - origin_fil))+1)='\0'; - - // copier chemin relatif - if (((int) strlen(fil)+(int) strlen(lien)) < HTS_URLMAXSIZE) { - strcat(fil,lien + ((*lien=='/')?1:0) ); - // simplifier url pour les ../ - fil_simplifie(fil); - } else - ok=-1; // erreur + if (*lien == '\0') { + strcpybuff(fil,origin_fil); + } else if (*lien == '?') { // example: a href="?page=2" + char* a; + strcpybuff(fil,origin_fil); + a=strchr(fil,'?'); + if (a) *a='\0'; + strcatbuff(fil,lien); + } else { + a=strchr(origin_fil,'?'); + if (a == NULL) a=origin_fil+strlen(origin_fil); + while((*a!='/') && ( a > origin_fil) ) a--; + if (*a=='/') { // ok on a un '/' + if ( (((int) (a - origin_fil))+1+strlen(lien)) < HTS_URLMAXSIZE) { + // copier chemin + strncpy(fil,origin_fil,((int) (a - origin_fil))+1); + *(fil + ((int) (a - origin_fil))+1)='\0'; + + // copier chemin relatif + if (((int) strlen(fil)+(int) strlen(lien)) < HTS_URLMAXSIZE) { + strcatbuff(fil,lien + ((*lien=='/')?1:0) ); + // simplifier url pour les ../ + fil_simplifie(fil); + } else + ok=-1; // erreur + } else { // erreur + ok=-1; // erreur URL + } } else { // erreur ok=-1; // erreur URL } - } else { // erreur - ok=-1; // erreur URL } } else { // chemin absolu // copier chemin directement - strcat(fil,lien); + strcatbuff(fil,lien); + fil_simplifie(fil); } // *lien!='/' } else ok=-1; @@ -191,17 +202,17 @@ int lienrelatif(char* s,char* link,char* curr_fil) { // patch: éliminer les ? (paramètres) sinon bug if ( (a=strchr(curr_fil,'?')) ) { - strncat(newcurr_fil,curr_fil,(int) (a - curr_fil)); + strncatbuff(newcurr_fil,curr_fil,(int) (a - curr_fil)); curr_fil = newcurr_fil; } if ( (a=strchr(link,'?')) ) { - strncat(newlink,link,(int) (a - link)); + strncatbuff(newlink,link,(int) (a - link)); link = newlink; } // recopier uniquement le chemin courant curr=_curr; - strcpy(curr,curr_fil); + strcpybuff(curr,curr_fil); if ((a=strchr(curr,'?'))==NULL) // couper au ? (params) a=curr+strlen(curr)-1; // pas de params: aller à la fin while((*a!='/') && ( a> curr)) a--; // chercher dernier / du chemin courant @@ -234,13 +245,13 @@ int lienrelatif(char* s,char* link,char* curr_fil) { // LES ../ ONT ETE SIMPLIFIES a=curr; if (*a=='/') a++; - while(*a) if (*(a++)=='/') strcat(s,"../"); - //if (strlen(s)==0) strcat(s,"/"); + while(*a) if (*(a++)=='/') strcatbuff(s,"../"); + //if (strlen(s)==0) strcatbuff(s,"/"); - if (slash) strcat(s,"/"); // garder absolu!! + if (slash) strcatbuff(s,"/"); // garder absolu!! // on est dans le répertoire de départ, copier - strcat(s,link + ((*link=='/')?1:0) ); + strcatbuff(s,link + ((*link=='/')?1:0) ); /* Security check */ if (strlen(s) >= HTS_URLMAXSIZE) @@ -294,10 +305,10 @@ void long_to_83(int mode,char* n83,char* save) { fnl[i]='\0'; // conversion longfile_to_83(mode,fn83,fnl); - strcat(n83,fn83); + strcatbuff(n83,fn83); save+=i; - if (*save=='/') { strcat(n83,"/"); save++; } + if (*save=='/') { strcatbuff(n83,"/"); save++; } } } @@ -375,15 +386,15 @@ void longfile_to_83(int mode,char* n83,char* save) { } // corriger vers 8-3 n83[0]='\0'; - strncat(n83,nom,8); + strncatbuff(n83,nom,8); if (strnotempty(ext)) { - strcat(n83,"."); - strncat(n83,ext,3); + strcatbuff(n83,"."); + strncatbuff(n83,ext,3); } } // écrire backblue.gif -int verif_backblue(char* base) { +int verif_backblue(httrackp* opt,char* base) { int* done; int ret=0; NOSTATIC_RESERVE(done, int, 1); @@ -400,7 +411,7 @@ int verif_backblue(char* base) { if (fwrite(HTS_DATA_BACK_GIF,HTS_DATA_BACK_GIF_LEN,1,fp) != HTS_DATA_BACK_GIF_LEN) ret=1; fclose(fp); - usercommand(0,NULL,fconcat(base,"backblue.gif")); + usercommand(opt,0,NULL,fconcat(base,"backblue.gif"),"",""); } else ret=1; // @@ -409,7 +420,7 @@ int verif_backblue(char* base) { if (fwrite(HTS_DATA_FADE_GIF,HTS_DATA_FADE_GIF_LEN,1,fp) != HTS_DATA_FADE_GIF_LEN) ret=1; fclose(fp); - usercommand(0,NULL,fconcat(base,"fade.gif")); + usercommand(opt,0,NULL,fconcat(base,"fade.gif"),"",""); } else ret=1; } @@ -524,7 +535,7 @@ int istoobig(LLint size,LLint maxhtml,LLint maxnhtml,char* type) { } -int hts_buildtopindex(char* path,char* binpath) { +HTSEXT_API int hts_buildtopindex(httrackp* opt,char* path,char* binpath) { FILE* fpo; int retval=0; char rpath[1024*2]; @@ -537,7 +548,7 @@ int hts_buildtopindex(char* path,char* binpath) { if (toptemplate_header && toptemplate_body && toptemplate_footer) { - strcpy(rpath,path); + strcpybuff(rpath,path); if (rpath[0]) { if (rpath[strlen(rpath)-1]=='/') rpath[strlen(rpath)-1]='\0'; @@ -546,7 +557,7 @@ int hts_buildtopindex(char* path,char* binpath) { fpo=fopen(fconcat(rpath,"/index.html"),"wb"); if (fpo) { find_handle h; - verif_backblue(concat(rpath,"/")); // générer gif + verif_backblue(opt,concat(rpath,"/")); // générer gif // Header fprintf(fpo,toptemplate_header, "" @@ -560,10 +571,10 @@ int hts_buildtopindex(char* path,char* binpath) { do { if (hts_findisdir(h)) { char iname[HTS_URLMAXSIZE*2]; - strcpy(iname,rpath); - strcat(iname,"/"); - strcat(iname,hts_findgetname(h)); - strcat(iname,"/index.html"); + strcpybuff(iname,rpath); + strcatbuff(iname,"/"); + strcatbuff(iname,hts_findgetname(h)); + strcatbuff(iname,"/index.html"); if (fexist(iname)) { struct topindex_chain * oldchain=chain; chain=calloc(sizeof(struct topindex_chain), 1); @@ -575,7 +586,7 @@ int hts_buildtopindex(char* path,char* binpath) { oldchain->next=chain; } chain->next=NULL; - strcpy(chain->name, hts_findgetname(h)); + strcpybuff(chain->name, hts_findgetname(h)); } } @@ -587,7 +598,7 @@ int hts_buildtopindex(char* path,char* binpath) { chain=startchain; while(chain) { char hname[HTS_URLMAXSIZE*2]; - strcpy(hname,chain->name); + strcpybuff(hname,chain->name); escape_check_url(hname); fprintf(fpo,toptemplate_body, hname, @@ -639,7 +650,7 @@ if (h) { hts_findclose(h); } */ -find_handle hts_findfirst(char* path) { +HTSEXT_API find_handle hts_findfirst(char* path) { if (path) { if (strnotempty(path)) { find_handle_struct* find = (find_handle_struct*) calloc(1,sizeof(find_handle_struct)); @@ -648,22 +659,22 @@ find_handle hts_findfirst(char* path) { #if HTS_WIN { char rpath[1024*2]; - strcpy(rpath,path); + strcpybuff(rpath,path); if (rpath[0]) { if (rpath[strlen(rpath)-1]!='\\') - strcat(rpath,"\\"); + strcatbuff(rpath,"\\"); } - strcat(rpath,"*.*"); + strcatbuff(rpath,"*.*"); find->handle = FindFirstFile(rpath,&find->hdata); if (find->handle != INVALID_HANDLE_VALUE) return find; } #else - strcpy(find->path,path); + strcpybuff(find->path,path); { if (find->path[0]) { if (find->path[strlen(find->path)-1]!='/') - strcat(find->path,"/"); + strcatbuff(find->path,"/"); } } find->hdir=opendir(path); @@ -678,7 +689,8 @@ find_handle hts_findfirst(char* path) { } return NULL; } -int hts_findnext(find_handle find) { + +HTSEXT_API int hts_findnext(find_handle find) { if (find) { #if HTS_WIN if ( (FindNextFile(find->handle,&find->hdata))) @@ -693,7 +705,8 @@ int hts_findnext(find_handle find) { } return 0; } -int hts_findclose(find_handle find) { + +HTSEXT_API int hts_findclose(find_handle find) { if (find) { #if HTS_WIN if (find->handle) { @@ -710,7 +723,8 @@ int hts_findclose(find_handle find) { } return 0; } -char* hts_findgetname(find_handle find) { + +HTSEXT_API char* hts_findgetname(find_handle find) { if (find) { #if HTS_WIN return find->hdata.cFileName; @@ -721,7 +735,8 @@ char* hts_findgetname(find_handle find) { } return NULL; } -int hts_findgetsize(find_handle find) { + +HTSEXT_API int hts_findgetsize(find_handle find) { if (find) { #if HTS_WIN return find->hdata.nFileSizeLow; @@ -731,7 +746,8 @@ int hts_findgetsize(find_handle find) { } return -1; } -int hts_findisdir(find_handle find) { + +HTSEXT_API int hts_findisdir(find_handle find) { if (find) { if (!hts_findissystem(find)) { #if HTS_WIN @@ -745,7 +761,7 @@ int hts_findisdir(find_handle find) { } return 0; } -int hts_findisfile(find_handle find) { +HTSEXT_API int hts_findisfile(find_handle find) { if (find) { if (!hts_findissystem(find)) { #if HTS_WIN @@ -759,7 +775,7 @@ int hts_findisfile(find_handle find) { } return 0; } -int hts_findissystem(find_handle find) { +HTSEXT_API int hts_findissystem(find_handle find) { if (find) { #if HTS_WIN if (find->hdata.dwFileAttributes & (FILE_ATTRIBUTE_SYSTEM|FILE_ATTRIBUTE_HIDDEN|FILE_ATTRIBUTE_TEMPORARY)) diff --git a/src/htstools.h b/src/htstools.h index b3e2c7e..e3f7dd7 100644 --- a/src/htstools.h +++ b/src/htstools.h @@ -45,10 +45,12 @@ Please visit our Website: http://www.httrack.com #include "htsbase.h" #include "htscore.h" -#if HTS_WIN +#ifdef _WIN32 #else #include +#ifdef HAVE_UNISTD_H #include +#endif #include #endif @@ -83,56 +85,47 @@ HTS_INLINE int __rech_tageqbegdigits(const char* adr,const char* s); //HTS_INLINE int rech_tageq(const char* adr,const char* s); HTS_INLINE int rech_sampletag(const char* adr,const char* s); HTS_INLINE int check_tag(char* from,const char* tag); -int verif_backblue(char* base); +int verif_backblue(httrackp* opt,char* base); int verif_external(int nb,int test); int istoobig(LLint size,LLint maxhtml,LLint maxnhtml,char* type); -int hts_buildtopindex(char* path,char* binpath); - +#ifndef HTTRACK_DEFLIB +HTSEXT_API int hts_buildtopindex(httrackp* opt,char* path,char* binpath); +#endif // Portable directory find functions -#if HTS_WIN - +#ifndef HTTRACK_DEFLIB +#ifdef _WIN32 typedef struct { WIN32_FIND_DATA hdata; HANDLE handle; } find_handle_struct; - - #else - typedef struct { DIR * hdir; struct dirent* dirp; struct stat filestat; char path[2048]; } find_handle_struct; - #endif - typedef find_handle_struct* find_handle; - typedef struct topindex_chain { char name[2048]; /* path */ struct topindex_chain* next; /* next element */ } topindex_chain ; - - // Directory find functions -find_handle hts_findfirst(char* path); -int hts_findnext(find_handle find); -int hts_findclose(find_handle find); +HTSEXT_API find_handle hts_findfirst(char* path); +HTSEXT_API int hts_findnext(find_handle find); +HTSEXT_API int hts_findclose(find_handle find); // -char* hts_findgetname(find_handle find); -int hts_findgetsize(find_handle find); -int hts_findisdir(find_handle find); -int hts_findisfile(find_handle find); -int hts_findissystem(find_handle find); - - - +HTSEXT_API char* hts_findgetname(find_handle find); +HTSEXT_API int hts_findgetsize(find_handle find); +HTSEXT_API int hts_findisdir(find_handle find); +HTSEXT_API int hts_findisfile(find_handle find); +HTSEXT_API int hts_findissystem(find_handle find); +#endif #endif diff --git a/src/htsweb.c b/src/htsweb.c new file mode 100644 index 0000000..a5e1902 --- /dev/null +++ b/src/htsweb.c @@ -0,0 +1,653 @@ +/* ------------------------------------------------------------ */ +/* +HTTrack Website Copier, Offline Browser for Windows and Unix +Copyright (C) Xavier Roche and other contributors + +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 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. + + +Important notes: + +- We hereby ask people using this source NOT to use it in purpose of grabbing +emails addresses, or collecting any other private information on persons. +This would disgrace our work, and spoil the many hours we spent on it. + + +Please visit our Website: http://www.httrack.com +*/ + + +/* ------------------------------------------------------------ */ +/* File: webhttrack.c routines */ +/* Author: Xavier Roche */ +/* ------------------------------------------------------------ */ + +#include +#include +#include +#include +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_STAT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#ifndef _WIN32 +#include +#endif +// htswrap_add +#include "htsglobal.h" +#include "htswrap.h" +#include "httrack-library.h" + +/* Threads */ +#include "htsthread.h" + +/* External modules */ +#include "htsinthash.c" +#include "htsmd5.c" +#include "md5.c" + +#include "htsserver.h" +#include "htsweb.h" + +#if USE_BEGINTHREAD==0 +#error fatal: no threads support +#endif + +#if HTS_WIN +#ifndef __cplusplus +// DOS +#include /* _beginthread, _endthread */ +#endif +#else +#endif + +static PTHREAD_LOCK_TYPE refreshMutex; + +static int help_server(char* dest_path); +extern int commandRunning; +extern int commandEnd; +extern int commandReturn; +extern int commandEndRequested; +extern char* commandReturnMsg; +extern char* commandReturnCmdl; + +static void htsweb_sig_brpipe( int code ) { + /* ignore */ +} + +int main(int argc, char* argv[]) +{ + int i; + int ret = 0; + printf("Initialzing the server..\n"); + +#ifdef _WIN32 + { + WORD wVersionRequested; // requested version WinSock API + WSADATA wsadata; // Windows Sockets API data + int stat; + wVersionRequested = 0x0101; + stat = WSAStartup( wVersionRequested, &wsadata ); + if (stat != 0) { + fprintf(stderr, "Winsock not found!\n"); + return -1; + } else if (LOBYTE(wsadata.wVersion) != 1 && HIBYTE(wsadata.wVersion) != 1) { + fprintf(stderr, "WINSOCK.DLL does not support version 1.1\n"); + WSACleanup(); + return -1; + } + } +#endif + + if (argc < 2 || (argc % 2) != 0) { + fprintf(stderr, "** Warning: use the webhttrack frontend if available\n"); + fprintf(stderr, "usage: %s [key value [key value]..]\n", argv[0]); + fprintf(stderr, "example: %s /usr/share/httrack\n", argv[0]); + return 1; + } + + /* init and launch */ + hts_init(); + htslang_init(); + webhttrack_lock(-999); + + /* set general keys */ +#ifdef HTS_ETCPATH + smallserver_setkey("ETCPATH", HTS_ETCPATH); +#endif +#ifdef HTS_BINPATH + smallserver_setkey("BINPATH", HTS_BINPATH); +#endif +#ifdef HTS_LIBPATH + smallserver_setkey("LIBPATH", HTS_LIBPATH); +#endif +#ifdef HTS_PREFIX + smallserver_setkey("PREFIX", HTS_PREFIX); +#endif +#ifdef HTS_HTTRACKCNF + smallserver_setkey("HTTRACKCNF", HTS_HTTRACKCNF); +#endif +#ifdef HTS_HTTRACKDIR + smallserver_setkey("HTTRACKDIR", HTS_HTTRACKDIR); +#endif +#ifdef HTS_INET6 + smallserver_setkey("INET6", "1"); +#endif +#ifdef HTS_USEOPENSSL + smallserver_setkey("USEOPENSSL", "1"); +#endif +#ifdef HTS_DLOPEN + smallserver_setkey("DLOPEN", "1"); +#endif +#ifdef HTS_USESWF + smallserver_setkey("USESWF", "1"); +#endif +#ifdef HTS_USEZLIB + smallserver_setkey("USEZLIB", "1"); +#endif +#ifdef _WIN32 + smallserver_setkey("WIN32", "1"); +#endif + smallserver_setkey("HTTRACK_VERSION", HTTRACK_VERSION); + smallserver_setkey("HTTRACK_VERSIONID", HTTRACK_VERSIONID); + smallserver_setkey("HTTRACK_AFF_VERSION", HTTRACK_AFF_VERSION); + { + char tmp[32]; + sprintf(tmp, "%d", HTS_PLATFORM); + smallserver_setkey("HTS_PLATFORM", tmp); + } + smallserver_setkey("HTTRACK_WEB", HTTRACK_WEB); + + /* protected session-id */ + { + char buff[1024]; + char digest[32 + 2]; + srand(time(NULL)); + sprintf(buff, "%d-%d", (int)time(NULL), (int)rand()); + domd5mem(buff,strlen(buff),digest,1); + smallserver_setkey("sid", digest); + smallserver_setkey("_sid", digest); + } + + /* set commandline keys */ + for(i = 2 ; i < argc ; i += 2) { + smallserver_setkey(argv[i], argv[i + 1]); + } + + /* sigpipe */ +#ifndef _WIN32 + signal( SIGPIPE , htsweb_sig_brpipe ); // broken pipe (write into non-opened socket) +#endif + + /* launch */ + ret = help_server(argv[1]); + + hts_uninit(); + +#ifdef _WIN32 + WSACleanup(); +#endif + + return ret; +} + +static int webhttrack_runmain(int argc, char** argv); +static PTHREAD_TYPE back_launch_cmd( void* pP ) { + char* cmd = (char*) pP; + char** argv = (char**) malloct(1024 * sizeof(char*)); + int argc = 0; + int i = 0; + int g = 0; + + /* copy commandline */ + if (commandReturnCmdl) + free(commandReturnCmdl); + commandReturnCmdl = strdup(cmd); + + /* split */ + argv[0]="webhttrack"; + argv[1]=cmd; + argc++; + i = 0; + while(cmd[i]) { + if (cmd[i] == '\t' || cmd[i] == '\r' || cmd[i] == '\n') { + cmd[i] = ' '; + } + i++; + } + i = 0; + while(cmd[i]) { + if(cmd[i]=='\"') g=!g; + if(cmd[i]==' ') { + if(!g){ + cmd[i]='\0'; + argv[argc++]=cmd+i+1; + } + } + i++; + } + + /* run */ + commandReturn = webhttrack_runmain(argc, argv); + if (commandReturn) { + if (commandReturnMsg) + free(commandReturnMsg); + commandReturnMsg = strdup(hts_errmsg()); + } + + /* okay */ + commandRunning = 0; + + /* finished */ + commandEnd = 1; + + /* free */ + free(cmd); + freet(argv); + return PTHREAD_RETURN; +} + +void webhttrack_main(char* cmd) { + commandRunning = 1; + _beginthread(back_launch_cmd, 0, (void*) strdup(cmd)); +} + +void webhttrack_lock(int lock) { + htsSetLock(&refreshMutex, lock); +} + +static int webhttrack_runmain(int argc, char** argv) { + hts_init(); + htswrap_add("init",htsshow_init); + htswrap_add("free",htsshow_uninit); + htswrap_add("start",htsshow_start); + htswrap_add("change-options",htsshow_chopt); + htswrap_add("end",htsshow_end); + htswrap_add("check-html",htsshow_checkhtml); + htswrap_add("loop",htsshow_loop); + htswrap_add("query",htsshow_query); + htswrap_add("query2",htsshow_query2); + htswrap_add("query3",htsshow_query3); + htswrap_add("check-link",htsshow_check); + htswrap_add("pause",htsshow_pause); + htswrap_add("save-file",htsshow_filesave); + htswrap_add("link-detected",htsshow_linkdetected); + htswrap_add("transfer-status",htsshow_xfrstatus); + htswrap_add("save-name",htsshow_savename); + hts_uninit(); + return hts_main(argc,argv); + +} + +static int help_server(char* dest_path) { + int returncode = 0; + char adr_prox[HTS_URLMAXSIZE*2]; + int port_prox; + T_SOC soc=smallserver_init_std(&port_prox,adr_prox); + if (soc!=INVALID_SOCKET) { + char url[HTS_URLMAXSIZE*2]; + char method[32]; + char data[32768]; + url[0]=method[0]=data[0]='\0'; + // + printf("Okay, temporary server installed.\nThe URL is:\n"); + printf("URL=http://%s:%d/\n", adr_prox, port_prox); +#ifndef _WIN32 + { + pid_t pid = getpid(); + printf("PID=%d\n", (int)pid); + } +#endif + fflush(stdout); + fflush(stderr); + // + if (!smallserver(soc,url,method,data,dest_path)) { + fprintf(stderr, "Unable to create the server\n"); +#ifdef _WIN32 + closesocket(soc); +#else + close(soc); +#endif + printf("Done\n"); + returncode = 1; + } else { + returncode = 0; + } + } else { + fprintf(stderr, "Unable to initialize a temporary server (no remaining port)\n"); + returncode = 1; + } + printf("EXITED\n"); + fflush(stdout); + fflush(stderr); + return returncode; +} + + +/* CALLBACK FUNCTIONS */ + +/* Initialize the Winsock */ +void __cdecl htsshow_init(void) { +} +void __cdecl htsshow_uninit(void) { +} +int __cdecl htsshow_start(httrackp* opt) { + return 1; +} +int __cdecl htsshow_chopt(httrackp* opt) { + return htsshow_start(opt); +} +int __cdecl htsshow_end(void) { + return 1; +} +int __cdecl htsshow_checkhtml(char* html,int len,char* url_adresse,char* url_fichier) { + return 1; +} +int __cdecl htsshow_loop(lien_back* back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time, hts_stat_struct* stats) { // appelé à chaque boucle de HTTrack + static TStamp prev_mytime=0; /* ok */ + static t_InpInfo SInfo; /* ok */ + // + TStamp mytime; + long int rate=0; + // + int stat_written=-1; + int stat_updated=-1; + int stat_errors=-1; + int stat_warnings=-1; + int stat_infos=-1; + int nbk=-1; + LLint nb=-1; + int stat_nsocket=-1; + LLint stat_bytes=-1; + LLint stat_bytes_recv=-1; + int irate=-1; + // + char st[256]; + + /* Exit now */ + if (commandEndRequested == 2) + return 0; + + /* Lock */ + webhttrack_lock(1); + + if (stats) { + stat_written=stats->stat_files; + stat_updated=stats->stat_updated_files; + stat_errors=stats->stat_errors; + stat_warnings=stats->stat_warnings; + stat_infos=stats->stat_infos; + nbk=stats->nbk; + stat_nsocket=stats->stat_nsocket; + irate=(int)stats->rate; + nb=stats->nb; + stat_bytes=stats->nb; + stat_bytes_recv=stats->HTS_TOTAL_RECV; + } + + mytime=mtime_local(); + if ((stat_time>0) && (stat_bytes_recv>0)) + rate=(int)(stat_bytes_recv/stat_time); + else + rate=0; // pas d'infos + + /* Infos */ + if (stat_bytes>=0) SInfo.stat_bytes=stat_bytes; // bytes + if (stat_time>=0) SInfo.stat_time=stat_time; // time + if (lien_tot>=0) SInfo.lien_tot=lien_tot; // nb liens + if (lien_n>=0) SInfo.lien_n=lien_n; // scanned + SInfo.stat_nsocket=stat_nsocket; // socks + if (rate>0) SInfo.rate=rate; // rate + if (irate>=0) SInfo.irate=irate; // irate + if (SInfo.irate<0) SInfo.irate=SInfo.rate; + if (nbk>=0) SInfo.stat_back=nbk; + if (stat_written>=0) SInfo.stat_written=stat_written; + if (stat_updated>=0) SInfo.stat_updated=stat_updated; + if (stat_errors>=0) SInfo.stat_errors=stat_errors; + if (stat_warnings>=0) SInfo.stat_warnings=stat_warnings; + if (stat_infos>=0) SInfo.stat_infos=stat_infos; + + + st[0]='\0'; + qsec2str(st,stat_time); + + /* Set keys */ + smallserver_setkeyint("info.stat_bytes", SInfo.stat_bytes); + smallserver_setkeyint("info.stat_time", SInfo.stat_time); + smallserver_setkeyint("info.lien_tot", SInfo.lien_tot); + smallserver_setkeyint("info.lien_n", SInfo.lien_n); + smallserver_setkeyint("info.stat_nsocket", SInfo.stat_nsocket); + smallserver_setkeyint("info.rate", SInfo.rate); + smallserver_setkeyint("info.irate", SInfo.irate); + smallserver_setkeyint("info.stat_back", SInfo.stat_back); + smallserver_setkeyint("info.stat_written", SInfo.stat_written); + smallserver_setkeyint("info.stat_updated", SInfo.stat_updated); + smallserver_setkeyint("info.stat_errors", SInfo.stat_errors); + smallserver_setkeyint("info.stat_warnings", SInfo.stat_warnings); + smallserver_setkeyint("info.stat_infos", SInfo.stat_infos); + /* */ + smallserver_setkey("info.stat_time_str", st); + + if ( ((mytime - prev_mytime)>100) || ((mytime - prev_mytime)<0) ) { + prev_mytime=mytime; + + + // parcourir registre des liens + if (back_index>=0 && back_max > 0) { // seulement si index passé + int j,k; + int index=0; + int ok=0; // idem + int l; // idem + // + t_StatsBuffer StatsBuffer[NStatsBuffer]; + + { + int i; + for(i=0;i=0) { // signifie "lien actif" + // int ok=0; // OPTI + ok=0; + switch(j) { + case 0: // prioritaire + if ((back[i].status>0) && (back[i].status<99)) { + strcpybuff(StatsBuffer[index].state,"receive"); ok=1; + } + break; + case 1: + if (back[i].status==99) { + strcpybuff(StatsBuffer[index].state,"request"); ok=1; + } + else if (back[i].status==100) { + strcpybuff(StatsBuffer[index].state,"connect"); ok=1; + } + else if (back[i].status==101) { + strcpybuff(StatsBuffer[index].state,"search"); ok=1; + } + else if (back[i].status==1000) { // ohh le beau ftp + sprintf(StatsBuffer[index].state,"ftp: %s",back[i].info); ok=1; + } + break; + default: + if (back[i].status==0) { // prêt + if ((back[i].r.statuscode==200)) { + strcpybuff(StatsBuffer[index].state,"ready"); ok=1; + } + else if ((back[i].r.statuscode>=100) && (back[i].r.statuscode<=599)) { + char tempo[256]; tempo[0]='\0'; + infostatuscode(tempo,back[i].r.statuscode); + strcpybuff(StatsBuffer[index].state,tempo); ok=1; + } + else { + strcpybuff(StatsBuffer[index].state,"error"); ok=1; + } + } + break; + } + + if (ok) { + char s[HTS_URLMAXSIZE*2]; + // + StatsBuffer[index].back=i; // index pour + d'infos + // + s[0]='\0'; + strcpybuff(StatsBuffer[index].url_sav,back[i].url_sav); // pour cancel + if (strcmp(back[i].url_adr,"file://")) + strcatbuff(s,back[i].url_adr); + else + strcatbuff(s,"localhost"); + if (back[i].url_fil[0]!='/') + strcatbuff(s,"/"); + strcatbuff(s,back[i].url_fil); + + StatsBuffer[index].file[0]='\0'; + { + char* a=strrchr(s,'/'); + if (a) { + strncatbuff(StatsBuffer[index].file,a,200); + *a='\0'; + } + } + + if ((l=strlen(s))0) { // taille prédéfinie + StatsBuffer[index].sizetot=back[i].r.totalsize; + StatsBuffer[index].size=back[i].r.size; + } else { // pas de taille prédéfinie + if (back[i].status==0) { // prêt + StatsBuffer[index].sizetot=back[i].r.size; + StatsBuffer[index].size=back[i].r.size; + } else { + StatsBuffer[index].sizetot=8192; + StatsBuffer[index].size=(back[i].r.size % 8192); + } + } + index++; + } + } + } + } + } + + /* Display current job */ + { + int parsing=0; + if (commandEndRequested) + smallserver_setkey("info.currentjob", "finishing pending transfers - Select [Cancel] to stop now!"); + else if (!(parsing=hts_is_parsing(-1))) + smallserver_setkey("info.currentjob", "receiving files"); + else { + char tmp[1024]; + tmp[0] = '\0'; + switch(hts_is_testing()) { + case 0: + sprintf(tmp, "parsing HTML file (%d%%)",parsing); + break; + case 1: + sprintf(tmp, "parsing HTML file: testing links (%d%%)",parsing); + break; + case 2: + sprintf(tmp, "purging files"); + break; + } + smallserver_setkey("info.currentjob", tmp); + } + } + + /* Display background jobs */ + { + int i; + for(i=0;ifil) // libérer filters[0] pour insérer un élément dans filters[0] -#define HT_INSERT_FILTERS0 {\ +#define HT_INSERT_FILTERS0 do {\ int i;\ - if (*filptr > 0) {\ - for(i = (*filptr)-1 ; i>=0 ; i--) {\ - strcpy(filters[i+1],filters[i]);\ + if (*opt->filters.filptr > 0) {\ + for(i = (*opt->filters.filptr)-1 ; i>=0 ; i--) {\ + strcpybuff((*opt->filters.filters)[i+1],(*opt->filters.filters)[i]);\ }\ }\ - strcpy(filters[0],"");\ - (*filptr)++;\ - (*filptr)=minimum((*filptr),filter_max);\ -} + (*opt->filters.filters)[0][0]='\0';\ + (*opt->filters.filptr)++;\ + assertf((*opt->filters.filptr) < opt->maxfilter); \ +} while(0) @@ -91,22 +91,34 @@ retour: int hts_acceptlink(httrackp* opt, int ptr,int lien_tot,lien_url** liens, char* adr,char* fil, - char*** ptrfilters,int* filptr,int filter_max, - robots_wizard* robots, int* set_prio_to, int* just_test_it) { int forbidden_url=-1; int meme_adresse; - char** filters = *ptrfilters; +#define _FILTERS (*opt->filters.filters) +#define _FILTERS_PTR (opt->filters.filptr) +#define _ROBOTS ((robots_wizard*)opt->robotsptr) + int may_set_prio_to=0; - // -------------------- PHASE 1 -------------------- + // -------------------- PHASE 0 -------------------- /* Infos */ if ((opt->debug>1) && (opt->log!=NULL)) { fspc(opt->log,"debug"); fprintf(opt->log,"wizard test begins: %s%s"LF,adr,fil); test_flush; } + + /* Already exists? Then, we know that we knew that this link had to be known */ + if (adr[0] != '\0' + && fil[0] != '\0' + && opt->hash != NULL + && hash_read((hash_struct*)opt->hash, adr, fil, 1, opt->urlhack) >= 0 + ) { + return 0; /* Yokai */ + } + + // -------------------- PHASE 1 -------------------- /* Doit-on traiter les non html? */ if ((opt->getmode & 2)==0) { // non on ne doit pas @@ -156,6 +168,7 @@ int hts_acceptlink(httrackp* opt, // problème: si un fichier est virtuellement accessible via une page mais dont le lien est sur une autre *uniquement*.. char tempo[HTS_URLMAXSIZE*2]; char tempo2[HTS_URLMAXSIZE*2]; + tempo[0] = tempo2[0] = '\0'; // note (up/down): on calcule à partir du lien primaire, ET du lien précédent. // ex: si on descend 2 fois on peut remonter 1 fois @@ -177,12 +190,14 @@ int hts_acceptlink(httrackp* opt, // (test même niveau (NOUVEAU à cause de certains problèmes de filtres non intégrés)) // NEW - if ( (!strchr(tempo+1,'/')) || (!strchr(tempo2+1,'/')) ) { - if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' - forbidden_url=0; - if ((opt->debug>1) && (opt->log!=NULL)) { - fspc(opt->log,"debug"); fprintf(opt->log,"same level link authorized: %s%s"LF,adr,fil); - test_flush; + if (tempo[0] != '\0' && tempo[1] != '\0') { + if ( (!strchr(tempo+1,'/')) || (!strchr(tempo2+1,'/')) ) { + if (!liens[ptr]->link_import) { // ne résulte pas d'un 'moved' + forbidden_url=0; + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"same level link authorized: %s%s"LF,adr,fil); + test_flush; + } } } } @@ -380,6 +395,7 @@ int hts_acceptlink(httrackp* opt, if (!ishtml(fil)) { // non html //printf("ok %s%s\n",ad,fil); forbidden_url=0; // autoriser + may_set_prio_to=1+1; // set prio to 1 (parse but skip urls) if near is the winner if ((opt->debug>1) && (opt->log!=NULL)) { fspc(opt->log,"debug"); fprintf(opt->log,"near link authorized: %s%s"LF,adr,fil); test_flush; @@ -404,17 +420,17 @@ int hts_acceptlink(httrackp* opt, if (forbidden_url!=-1) question=0; // pas de question, résolu // former URL complète du lien actuel - strcpy(l,jump_identification(adr)); - if (*fil!='/') strcat(l,"/"); - strcat(l,fil); + strcpybuff(l,jump_identification(adr)); + if (*fil!='/') strcatbuff(l,"/"); + strcatbuff(l,fil); // full version (http://foo:bar@www.foo.com/bar.html) if (!link_has_authority(adr)) - strcpy(lfull,"http://"); + strcpybuff(lfull,"http://"); else lfull[0]='\0'; - strcat(lfull,adr); - if (*fil!='/') strcat(lfull,"/"); - strcat(lfull,fil); + strcatbuff(lfull,adr); + if (*fil!='/') strcatbuff(lfull,"/"); + strcatbuff(lfull,fil); // tester filters (URLs autorisées ou interdites explicitement) @@ -422,41 +438,80 @@ int hts_acceptlink(httrackp* opt, if (ptr==0) { // lien primaire, autoriser question=1; // la question sera résolue automatiquement forbidden_url=0; + may_set_prio_to=0; // clear may-set flag } else { - int jok; - // filters, 0=sait pas 1=ok -1=interdit - { - int jokDepth1=0,jokDepth2=0; - int jok1=0,jok2=0; - jok1 = fa_strjoker(filters,*filptr,lfull,NULL,NULL,&jokDepth1); - jok2 = fa_strjoker(filters,*filptr,l, NULL,NULL,&jokDepth2); - if (jok2 == 0) // #2 doesn't know - jok = jok1; // then, use #1 - else if (jok1 == 0) // #1 doesn't know - jok = jok2; // then, use #2 - else if (jokDepth1 >= jokDepth2) // #1 matching rule is "after" #2, then it is prioritary - jok = jok1; - else // #2 matching rule is "after" #1, then it is prioritary - jok = jok2; - } - - if (jok == 1) { // autorisé - filters_answer=1; // décision prise par les filtres - question=0; // ne pas poser de question, autorisé - forbidden_url=0; // URL autorisée - if ((opt->debug>1) && (opt->log!=NULL)) { - fspc(opt->log,"debug"); fprintf(opt->log,"(wizard) explicit authorized link: link %s at %s%s"LF,l,urladr,urlfil); - test_flush; + // eternal depth first + // vérifier récursivité extérieure + if (opt->extdepth>0) { + if ( /*question && */ (ptr>0) && (!force_mirror)) { + // well, this is kinda a hak + // we don't want to mirror EVERYTHING, and we have to decide where to stop + // there is no way yet to tag "external" links, and therefore links that are + // "weak" (authorized depth < external depth) are just not considered for external + // hack + if (liens[ptr]->depth > opt->extdepth) { + // *set_prio_to = opt->extdepth + 1; + *set_prio_to = 1 + (opt->extdepth); + may_set_prio_to=0; // clear may-set flag + forbidden_url=0; // autorisé + question=0; // résolution auto + if ((opt->debug>1) && (opt->log!=NULL)) { + if (question) { + fspc(opt->log,"debug"); fprintf(opt->log,"(wizard) ambiguous link accepted (external depth): link %s at %s%s"LF,l,urladr,urlfil); + } else { + fspc(opt->log,"debug"); fprintf(opt->log,"(wizard) forced to accept link (external depth): link %s at %s%s"LF,l,urladr,urlfil); + } + test_flush; + } + + } } - } else if (jok == -1) { - filters_answer=1; // décision prise par les filtres - question=0; // ne pas poser de question: - forbidden_url=1; // URL interdite - if ((opt->debug>1) && (opt->log!=NULL)) { - fspc(opt->log,"debug"); fprintf(opt->log,"(wizard) explicit forbidden link: link %s at %s%s"LF,l,urladr,urlfil); - test_flush; + } + + // filters + { + int jok; + char* mdepth=""; + // filters, 0=sait pas 1=ok -1=interdit + { + int jokDepth1=0,jokDepth2=0; + int jok1=0,jok2=0; + jok1 = fa_strjoker(_FILTERS,*_FILTERS_PTR,lfull,NULL,NULL,&jokDepth1); + jok2 = fa_strjoker(_FILTERS,*_FILTERS_PTR,l, NULL,NULL,&jokDepth2); + if (jok2 == 0) { // #2 doesn't know + jok = jok1; // then, use #1 + mdepth = _FILTERS[jokDepth1]; + } else if (jok1 == 0) { // #1 doesn't know + jok = jok2; // then, use #2 + mdepth = _FILTERS[jokDepth2]; + } else if (jokDepth1 >= jokDepth2) { // #1 matching rule is "after" #2, then it is prioritary + jok = jok1; + mdepth = _FILTERS[jokDepth1]; + } else { // #2 matching rule is "after" #1, then it is prioritary + jok = jok2; + mdepth = _FILTERS[jokDepth2]; + } } - } // sinon on touche à rien + + if (jok == 1) { // autorisé + filters_answer=1; // décision prise par les filtres + question=0; // ne pas poser de question, autorisé + forbidden_url=0; // URL autorisée + may_set_prio_to=0; // clear may-set flag + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(wizard) explicit authorized (%s) link: link %s at %s%s"LF,mdepth,l,urladr,urlfil); + test_flush; + } + } else if (jok == -1) { // forbidden + filters_answer=1; // décision prise par les filtres + question=0; // ne pas poser de question: + forbidden_url=1; // URL interdite + if ((opt->debug>1) && (opt->log!=NULL)) { + fspc(opt->log,"debug"); fprintf(opt->log,"(wizard) explicit forbidden (%s) link: link %s at %s%s"LF,mdepth,l,urladr,urlfil); + test_flush; + } + } // sinon on touche à rien + } } // vérifier mode mirror links @@ -464,6 +519,7 @@ int hts_acceptlink(httrackp* opt, if (opt->mirror_first_page) { // mode mirror links if (liens[ptr]->precedent==0) { // parent=primary! forbidden_url=0; // autorisé + may_set_prio_to=0; // clear may-set flag question=1; // résolution auto force_mirror=5; // mirror (5) if ((opt->debug>1) && (opt->log!=NULL)) { @@ -473,20 +529,6 @@ int hts_acceptlink(httrackp* opt, } } } - - // vérifier récursivité extérieure - if ((question) && (ptr>0) && (!force_mirror)) { - if (opt->extdepth>0) { - // *set_prio_to = opt->extdepth + 1; - *set_prio_to = opt->extdepth + 1; - forbidden_url=0; // autorisé - question=0; // résolution auto - if ((opt->debug>1) && (opt->log!=NULL)) { - fspc(opt->log,"debug"); fprintf(opt->log,"(wizard) ambiguous link accepted (external depth): link %s at %s%s"LF,l,urladr,urlfil); - test_flush; - } - } - } // on doit poser la question.. peut on la poser? // (oui je sais quel preuve de délicatesse, merci merci) @@ -503,7 +545,7 @@ int hts_acceptlink(httrackp* opt, // vérifier robots.txt if (opt->robots) { - int r = checkrobots(robots,adr,fil); + int r = checkrobots(_ROBOTS,adr,fil); if (r == -1) { // interdiction #if DEBUG_ROBOTS printf("robots.txt forbidden: %s%s\n",adr,fil); @@ -578,9 +620,9 @@ int hts_acceptlink(httrackp* opt, { char tempo[HTS_URLMAXSIZE*2]; tempo[0]='\0'; - strcat(tempo,adr); - strcat(tempo,"/"); - strcat(tempo,fil); + strcatbuff(tempo,adr); + strcatbuff(tempo,"/"); + strcatbuff(tempo,fil); s=hts_htmlcheck_query3(tempo); } #else @@ -616,25 +658,7 @@ int hts_acceptlink(httrackp* opt, } while(n==-999); #endif io_flush; - } else { // lien primaire: autoriser répertoire entier - - /* sanity check */ - if ((*filptr) + 1 >= opt->maxfilter) { - opt->maxfilter += HTS_FILTERSINC; - if (filters_init(&filters, opt->maxfilter, HTS_FILTERSINC) == 0) { - printf("PANIC! : Too many filters : >%d [%d]\n", (*filptr),__LINE__); - fflush(stdout); - if (opt->errlog) { - fprintf(opt->errlog,LF"Too many filters, giving up..(>%d)"LF, (*filptr) ); - fprintf(opt->errlog,"To avoid that: use #F option for more filters (example: -#F5000)"LF); - test_flush; - } - abort(); // wild.. - } - //opt->filters.filters=filters; - //*ptrfilters = filters; - } - + } else { // lien primaire: autoriser répertoire entier if (!force_mirror) { if ((opt->seeker & 1)==0) { // interdiction de descendre n=7; @@ -645,6 +669,22 @@ int hts_acceptlink(httrackp* opt, n=force_mirror; } + /* sanity check - reallocate filters HERE */ + if ((*_FILTERS_PTR) + 1 >= opt->maxfilter) { + opt->maxfilter += HTS_FILTERSINC; + if (filters_init(&_FILTERS, opt->maxfilter, HTS_FILTERSINC) == 0) { + printf("PANIC! : Too many filters : >%d [%d]\n", (*_FILTERS_PTR),__LINE__); + fflush(stdout); + if (opt->errlog) { + fprintf(opt->errlog,LF"Too many filters, giving up..(>%d)"LF, (*_FILTERS_PTR) ); + fprintf(opt->errlog,"To avoid that: use #F option for more filters (example: -#F5000)"LF); + test_flush; + } + assertf("too many filters - giving up" == NULL); // wild.. + } + } + + // here we have enough room for a new filter if necessary switch(n) { case -1: // sauter tout le reste forbidden_url=1; @@ -653,10 +693,10 @@ int hts_acceptlink(httrackp* opt, case 0: // interdire les mêmes liens: adr/fil forbidden_url=1; HT_INSERT_FILTERS0; // insérer en 0 - strcpy(filters[0],"-"); - strcat(filters[0],jump_identification(adr)); - if (*fil!='/') strcat(filters[0],"/"); - strcat(filters[0],fil); + strcpybuff(_FILTERS[0],"-"); + strcatbuff(_FILTERS[0],jump_identification(adr)); + if (*fil!='/') strcatbuff(_FILTERS[0],"/"); + strcatbuff(_FILTERS[0],fil); break; case 1: // éliminer répertoire entier et sous rép: adr/path/ * @@ -666,12 +706,13 @@ int hts_acceptlink(httrackp* opt, while((fil[i]!='/') && (i>0)) i--; if (fil[i]=='/') { HT_INSERT_FILTERS0; // insérer en 0 - strcpy(filters[0],"-"); - strcat(filters[0],jump_identification(adr)); - if (*fil!='/') strcat(filters[0],"/"); - strncat(filters[0],fil,i); - if (filters[0][strlen(filters[0])-1]!='/') strcat(filters[0],"/"); - strcat(filters[0],"*"); + strcpybuff(_FILTERS[0],"-"); + strcatbuff(_FILTERS[0],jump_identification(adr)); + if (*fil!='/') strcatbuff(_FILTERS[0],"/"); + strncatbuff(_FILTERS[0] ,fil,i); + if (_FILTERS[0][strlen(_FILTERS[0])-1]!='/') + strcatbuff(_FILTERS[0],"/"); + strcatbuff(_FILTERS[0],"*"); } } @@ -681,9 +722,9 @@ int hts_acceptlink(httrackp* opt, case 2: // adresse adr* forbidden_url=1; HT_INSERT_FILTERS0; // insérer en 0 - strcpy(filters[0],"-"); - strcat(filters[0],jump_identification(adr)); - strcat(filters[0],"*"); + strcpybuff(_FILTERS[0],"-"); + strcatbuff(_FILTERS[0],jump_identification(adr)); + strcatbuff(_FILTERS[0],"*"); break; case 3: // ** A FAIRE @@ -703,10 +744,10 @@ int hts_acceptlink(httrackp* opt, case 4: // same link // PAS BESOIN!! /*HT_INSERT_FILTERS0; // insérer en 0 - strcpy(filters[0],"+"); - strcat(filters[0],adr); - if (*fil!='/') strcat(filters[0],"/"); - strcat(filters[0],fil);*/ + strcpybuff(_FILTERS[0],"+"); + strcatbuff(_FILTERS[0],adr); + if (*fil!='/') strcatbuff(_FILTERS[0],"/"); + strcatbuff(_FILTERS[0],fil);*/ // étant donné le renversement wizard/primary filter (les primary autorisent up/down ET interdisent) @@ -722,25 +763,25 @@ int hts_acceptlink(httrackp* opt, while((fil[i]!='/') && (i>0)) i--; if (fil[i]=='/') { HT_INSERT_FILTERS0; // insérer en 0 - strcpy(filters[0],"+"); - strcat(filters[0],jump_identification(adr)); - if (*fil!='/') strcat(filters[0],"/"); - strncat(filters[0],fil,i+1); - strcat(filters[0],"*"); + strcpybuff(_FILTERS[0],"+"); + strcatbuff(_FILTERS[0],jump_identification(adr)); + if (*fil!='/') strcatbuff(_FILTERS[0],"/"); + strncatbuff(_FILTERS[0],fil,i+1); + strcatbuff(_FILTERS[0],"*"); } } else { // autoriser domaine alors!! - HT_INSERT_FILTERS0; // insérer en 0 strcpy(filters[filptr],"+"); - strcpy(filters[0],"+"); - strcat(filters[0],jump_identification(adr)); - strcat(filters[0],"*"); + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(filters[filptr],"+"); + strcpybuff(_FILTERS[0],"+"); + strcatbuff(_FILTERS[0],jump_identification(adr)); + strcatbuff(_FILTERS[0],"*"); } break; case 6: // same domain - HT_INSERT_FILTERS0; // insérer en 0 strcpy(filters[filptr],"+"); - strcpy(filters[0],"+"); - strcat(filters[0],jump_identification(adr)); - strcat(filters[0],"*"); + HT_INSERT_FILTERS0; // insérer en 0 strcpybuff(filters[filptr],"+"); + strcpybuff(_FILTERS[0],"+"); + strcatbuff(_FILTERS[0],jump_identification(adr)); + strcatbuff(_FILTERS[0],"*"); break; // case 7: // autoriser ce répertoire @@ -749,11 +790,11 @@ int hts_acceptlink(httrackp* opt, while((fil[i]!='/') && (i>0)) i--; if (fil[i]=='/') { HT_INSERT_FILTERS0; // insérer en 0 - strcpy(filters[0],"+"); - strcat(filters[0],jump_identification(adr)); - if (*fil!='/') strcat(filters[0],"/"); - strncat(filters[0],fil,i+1); - strcat(filters[0],"*[file]"); + strcpybuff(_FILTERS[0],"+"); + strcatbuff(_FILTERS[0],jump_identification(adr)); + if (*fil!='/') strcatbuff(_FILTERS[0],"/"); + strncatbuff(_FILTERS[0],fil,i+1); + strcatbuff(_FILTERS[0],"*[file]"); } } @@ -788,10 +829,19 @@ int hts_acceptlink(httrackp* opt, #if HTS_ANALYSTE { int test_url=hts_htmlcheck_check(adr,fil,forbidden_url); - if (test_url!=-1) + if (test_url!=-1) { forbidden_url=test_url; + may_set_prio_to=0; // clear may-set flag + } } -#endif +#endif + + // -------------------- FINAL PHASE -------------------- + // Test if the "Near" test won + if (may_set_prio_to && forbidden_url == 0) { + *set_prio_to = may_set_prio_to; + } + return forbidden_url; } @@ -808,17 +858,17 @@ int hts_testlinksize(httrackp* opt, int size_flag=0; // former URL complète du lien actuel - strcpy(l,jump_identification(adr)); - if (*fil!='/') strcat(l,"/"); - strcat(l,fil); + strcpybuff(l,jump_identification(adr)); + if (*fil!='/') strcatbuff(l,"/"); + strcatbuff(l,fil); // if (!link_has_authority(adr)) - strcpy(lfull,"http://"); + strcpybuff(lfull,"http://"); else lfull[0]='\0'; - strcat(lfull,adr); - if (*fil!='/') strcat(l,"/"); - strcat(lfull,fil); + strcatbuff(lfull,adr); + if (*fil!='/') strcatbuff(l,"/"); + strcatbuff(lfull,fil); // tester filtres (taille) // jok = fa_strjoker(opt->filters.filters,*opt->filters.filptr,l,&sz,&size_flag,NULL); diff --git a/src/htswizard.h b/src/htswizard.h index 28c5d2f..147c7b7 100644 --- a/src/htswizard.h +++ b/src/htswizard.h @@ -43,8 +43,6 @@ Please visit our Website: http://www.httrack.com int hts_acceptlink(httrackp* opt, int ptr,int lien_tot,lien_url** liens, char* adr,char* fil, - char*** filters,int* filptr,int filter_max, - robots_wizard* robots, int* set_prio_to_0, int* just_test_it); int hts_testlinksize(httrackp* opt, diff --git a/src/htswrap.c b/src/htswrap.c index 824af7e..28c4c71 100644 --- a/src/htswrap.c +++ b/src/htswrap.c @@ -37,30 +37,31 @@ Please visit our Website: http://www.httrack.com #include "htswrap.h" #include "htshash.h" +#include "htsinthash.h" // typedef long (__stdcall * XSHBFF_WndProc_type)(HWND ,UINT ,WPARAM ,LPARAM); inthash wrappers=NULL; -int htswrap_init(void) { +HTSEXT_API int htswrap_init(void) { if (!wrappers) wrappers=inthash_new(42); return inthash_created(wrappers); } -int htswrap_free(void) { +HTSEXT_API int htswrap_free(void) { inthash_delete(&wrappers); return 1; } -int htswrap_add(char* name,void* fct) { +HTSEXT_API int htswrap_add(char* name,void* fct) { if (!wrappers) htswrap_init(); inthash_write(wrappers,name,(unsigned long int)fct); return 1; } -unsigned long int htswrap_read(char* name) { +HTSEXT_API unsigned long int htswrap_read(char* name) { unsigned long int fct=0; if (!wrappers) htswrap_init(); diff --git a/src/htswrap.h b/src/htswrap.h index 03bf73f..b87bf11 100644 --- a/src/htswrap.h +++ b/src/htswrap.h @@ -35,14 +35,16 @@ Please visit our Website: http://www.httrack.com /* Author: Xavier Roche */ /* ------------------------------------------------------------ */ - - #ifndef HTSWRAP_DEFH #define HTSWRAP_DEFH -int htswrap_init(void); -int htswrap_add(char* name,void* fct); -int htswrap_free(void); -unsigned long int htswrap_read(char* name); +#include "htsglobal.h" + +#ifndef HTTRACK_DEFLIB +HTSEXT_API int htswrap_init(void); +HTSEXT_API int htswrap_add(char* name,void* fct); +HTSEXT_API int htswrap_free(void); +HTSEXT_API unsigned long int htswrap_read(char* name); +#endif #endif diff --git a/src/htszlib.c b/src/htszlib.c index d138a1c..faf4e88 100644 --- a/src/htszlib.c +++ b/src/htszlib.c @@ -42,23 +42,26 @@ Please visit our Website: http://www.httrack.com #include "htsbase.h" #include "htscore.h" -#if HTS_USEZLIB +#include "htszlib.h" +#if HTS_USEZLIB /* zlib */ +/* #include #include "htszlib.h" +*/ /* Unpack file into a new file Return value: size of the new file, or -1 if an error occured */ int hts_zunpack(char* filename,char* newfile) { - if (filename && newfile) { + if (gz_is_available && filename && newfile) { if (filename[0] && newfile[0]) { gzFile gz = gzopen (filename, "rb"); if (gz) { FILE* fpout=fopen(fconv(newfile),"wb"); - int size=0; + INTsys size=0; if (fpout) { int nr; do { @@ -66,7 +69,7 @@ int hts_zunpack(char* filename,char* newfile) { nr=gzread (gz, buff, 1024); if (nr>0) { size+=nr; - if ((int)fwrite(buff,1,nr,fpout) != nr) + if ((INTsys)fwrite(buff,1,nr,fpout) != nr) nr=size=-1; } } while(nr>0); diff --git a/src/htszlib.h b/src/htszlib.h index 63310b8..173d966 100644 --- a/src/htszlib.h +++ b/src/htszlib.h @@ -43,6 +43,27 @@ Please visit our Website: http://www.httrack.com int hts_zunpack(char* filename,char* newfile); +#define gzopen hts_ptrfunc_gzopen +#define gzread hts_ptrfunc_gzread +#define gzclose hts_ptrfunc_gzclose + +#ifdef _WIN32 +#define ZEXPORT WINAPI +#else +#define ZEXPORT +#endif + +typedef void* voidp; +typedef voidp gzFile; +typedef gzFile (ZEXPORT *t_gzopen)(const char *path, const char *mode); +typedef int (ZEXPORT *t_gzread)(gzFile file, voidp buf, unsigned len); +typedef int (ZEXPORT *t_gzclose)(gzFile file); + +extern int gz_is_available; +extern t_gzopen gzopen; +extern t_gzread gzread; +extern t_gzclose gzclose; + #endif #endif diff --git a/src/httrack-library.h b/src/httrack-library.h index 13ecb46..aeea70f 100644 --- a/src/httrack-library.h +++ b/src/httrack-library.h @@ -42,9 +42,157 @@ Please visit our Website: http://www.httrack.com #include "htsopt.h" #include "htswrap.h" -int hts_init(void); -int hts_main(int argc, char **argv); +/* Main functions */ +HTSEXT_API int hts_init(void); +HTSEXT_API int hts_uninit(void); +HTSEXT_API int hts_main(int argc, char **argv); + +/* Wrapper functions */ +HTSEXT_API int htswrap_init(void); +HTSEXT_API int htswrap_add(char* name,void* fct); +HTSEXT_API int htswrap_free(void); +HTSEXT_API unsigned long int htswrap_read(char* name); +HTSEXT_API const char* hts_is_available(void); + +/* Other functions */ +HTSEXT_API int hts_resetvar(void); +HTSEXT_API int hts_buildtopindex(httrackp* opt,char* path,char* binpath); + +/* Catch-URL */ +HTSEXT_API T_SOC catch_url_init_std(int* port_prox,char* adr_prox); +HTSEXT_API T_SOC catch_url_init(int* port,char* adr); +HTSEXT_API int catch_url(T_SOC soc,char* url,char* method,char* data); + +/* State */ +HTSEXT_API int hts_is_parsing(int flag); +HTSEXT_API int hts_is_testing(void); +HTSEXT_API int hts_is_exiting(void); +HTSEXT_API int hts_setopt(httrackp* opt); +HTSEXT_API int hts_addurl(char** url); +HTSEXT_API int hts_resetaddurl(void); +HTSEXT_API int copy_htsopt(httrackp* from, httrackp* to); +HTSEXT_API char* hts_errmsg(void); +HTSEXT_API int hts_setpause(int); // pause transfer +HTSEXT_API int hts_request_stop(int force); +HTSEXT_API char* hts_cancel_file(char * s); +HTSEXT_API void hts_cancel_test(void); +HTSEXT_API void hts_cancel_parsing(void); +HTSEXT_API char* hts_cancel_file(char * s); +HTSEXT_API void hts_cancel_test(void); +HTSEXT_API void hts_cancel_parsing(void); + +/* Tools */ +HTSEXT_API int structcheck(char* s); +HTSEXT_API void infostatuscode(char* msg,int statuscode); +HTSEXT_API HTS_INLINE TStamp mtime_local(void); +HTSEXT_API void qsec2str(char *st,TStamp t); +HTSEXT_API char* int2char(int n); +HTSEXT_API char* int2bytes(LLint n); +HTSEXT_API char* int2bytessec(long int n); +HTSEXT_API char** int2bytes2(LLint n); +HTSEXT_API char* jump_identification(char*); +HTSEXT_API char* jump_normalized(char*); +HTSEXT_API char* jump_toport(char*); +HTSEXT_API char* fil_normalized(char* source, char* dest); +HTSEXT_API char* adr_normalized(char* source, char* dest); +HTSEXT_API char* hts_rootdir(char* file); + +/* Escaping URLs */ +HTSEXT_API void unescape_amp(char* s); +HTSEXT_API void escape_spc_url(char* s); +HTSEXT_API void escape_in_url(char* s); +HTSEXT_API void escape_uri(char* s); +HTSEXT_API void escape_uri_utf(char* s); +HTSEXT_API void escape_check_url(char* s); +HTSEXT_API char* escape_check_url_addr(char* s); +HTSEXT_API void x_escape_http(char* s,int mode); +HTSEXT_API char* unescape_http(char* s); +HTSEXT_API char* unescape_http_unharm(char* s, int no_high); +HTSEXT_API char* antislash_unescaped(char* s); +HTSEXT_API void escape_remove_control(char* s); + +/* Portable directory API */ + +typedef struct find_handle_struct find_handle_struct; +typedef find_handle_struct* find_handle; +typedef struct topindex_chain { + char name[2048]; /* path */ + struct topindex_chain* next; /* next element */ +} topindex_chain ; +HTSEXT_API find_handle hts_findfirst(char* path); +HTSEXT_API int hts_findnext(find_handle find); +HTSEXT_API int hts_findclose(find_handle find); +HTSEXT_API char* hts_findgetname(find_handle find); +HTSEXT_API int hts_findgetsize(find_handle find); +HTSEXT_API int hts_findisdir(find_handle find); +HTSEXT_API int hts_findisfile(find_handle find); +HTSEXT_API int hts_findissystem(find_handle find); + +/* Wrapper functions types (commented) : */ +/* +typedef void (* t_hts_htmlcheck_init)(void); +typedef void (* t_hts_htmlcheck_uninit)(void); +typedef int (* t_hts_htmlcheck_start)(httrackp* opt); +typedef int (* t_hts_htmlcheck_end)(void); +typedef int (* t_hts_htmlcheck_chopt)(httrackp* opt); +typedef int (* t_hts_htmlcheck)(char* html,int len,char* url_adresse,char* url_fichier); +typedef char* (* t_hts_htmlcheck_query)(char* question); +typedef char* (* t_hts_htmlcheck_query2)(char* question); +typedef char* (* t_hts_htmlcheck_query3)(char* question); +typedef int (* t_hts_htmlcheck_loop)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,hts_stat_struct* stats); +typedef int (* t_hts_htmlcheck_check)(char* adr,char* fil,int status); +typedef void (* t_hts_htmlcheck_pause)(char* lockfile); +typedef void (* t_hts_htmlcheck_filesave)(char* file); +typedef int (* t_hts_htmlcheck_linkdetected)(char* link); +typedef int (* t_hts_htmlcheck_xfrstatus)(lien_back* back); +typedef int (* t_hts_htmlcheck_savename)(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save); +typedef int (* t_hts_htmlcheck_sendhead)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* outgoing); +typedef int (* t_hts_htmlcheck_receivehead)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* incoming); +*/ +/* Wrapper functions names : */ +/* + hts_htmlcheck_init = (t_hts_htmlcheck_init) htswrap_read("init"); +Log: "engine: init" + + hts_htmlcheck_uninit = (t_hts_htmlcheck_uninit) htswrap_read("free"); +Log: "engine: free" + + hts_htmlcheck_start = (t_hts_htmlcheck_start) htswrap_read("start"); +Log: "engine: start" + + hts_htmlcheck_end = (t_hts_htmlcheck_end) htswrap_read("end"); +Log: "engine: end" + + hts_htmlcheck_chopt = (t_hts_htmlcheck_chopt) htswrap_read("change-options"); +Log: "engine: change-options" + + hts_htmlcheck = (t_hts_htmlcheck) htswrap_read("check-html"); +Log: "check-html: " + + hts_htmlcheck_query = (t_hts_htmlcheck_query) htswrap_read("query"); + hts_htmlcheck_query2 = (t_hts_htmlcheck_query2) htswrap_read("query2"); + hts_htmlcheck_query3 = (t_hts_htmlcheck_query3) htswrap_read("query3"); + hts_htmlcheck_loop = (t_hts_htmlcheck_loop) htswrap_read("loop"); + hts_htmlcheck_check = (t_hts_htmlcheck_check) htswrap_read("check-link"); +Log: none + + hts_htmlcheck_pause = (t_hts_htmlcheck_pause) htswrap_read("pause"); +Log: "pause: " + + hts_htmlcheck_filesave = (t_hts_htmlcheck_filesave) htswrap_read("save-file"); + hts_htmlcheck_linkdetected = (t_hts_htmlcheck_linkdetected) htswrap_read("link-detected"); +Log: none + + hts_htmlcheck_xfrstatus = (t_hts_htmlcheck_xfrstatus) htswrap_read("transfer-status"); +Log: + "engine: transfer-status: link updated: -> " + | "engine: transfer-status: link added: -> " + | "engine: transfer-status: link recorded: -> " + | "engine: transfer-status: link link error (, ''): " + hts_htmlcheck_savename = (t_hts_htmlcheck_savename ) htswrap_read("save-name"); +Log: + "engine: save-name: local name: -> " +*/ #endif - diff --git a/src/httrack.c b/src/httrack.c index 0289fca..c69a600 100644 --- a/src/httrack.c +++ b/src/httrack.c @@ -35,8 +35,7 @@ Please visit our Website: http://www.httrack.com /* Author: Xavier Roche */ /* ------------------------------------------------------------ */ -#if HTS_WIN -#else +#ifndef _WIN32 #ifndef Sleep #define Sleep(a) { if (((a)*1000)%1000000) usleep(((a)*1000)%1000000); if (((a)*1000)/1000000) sleep(((a)*1000)/1000000); } #endif @@ -51,13 +50,22 @@ Please visit our Website: http://www.httrack.com #if HTS_ANALYSTE_CONSOLE /* specific definitions */ -#include "htsbase.h" +//#include "htsbase.h" #include #include #include +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_SYS_STAT_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif #include #ifdef _WIN32 -#include "Winsock.h" +//#include "Winsock.h" #endif /* END specific definitions */ @@ -118,8 +126,8 @@ void vt_home(void) { static int use_show; - int main(int argc, char **argv) { + int ret = 0; hts_init(); /* @@ -183,7 +191,11 @@ Log: htswrap_add("transfer-status",htsshow_xfrstatus); htswrap_add("save-name",htsshow_savename); - return hts_main(argc,argv); + ret = hts_main(argc,argv); + if (ret) { + fprintf(stderr, "* %s\n", hts_errmsg()); + } + return ret; } @@ -224,7 +236,7 @@ int __cdecl htsshow_start(httrackp* opt) { return 1; } int __cdecl htsshow_chopt(httrackp* opt) { - return __cdecl htsshow_start(opt); + return htsshow_start(opt); } int __cdecl htsshow_end(void) { return 1; @@ -283,7 +295,7 @@ int __cdecl htsshow_loop(lien_back* back,int back_max,int back_index,int lien_n, if (rate>0) SInfo.rate=rate; // rate if (irate>=0) SInfo.irate=irate; // irate if (SInfo.irate<0) SInfo.irate=SInfo.rate; - if (SInfo.stat_back>=0) SInfo.stat_back=nbk; + if (nbk>=0) SInfo.stat_back=nbk; if (stat_written>=0) SInfo.stat_written=stat_written; if (stat_updated>=0) SInfo.stat_updated=stat_updated; if (stat_errors>=0) SInfo.stat_errors=stat_errors; @@ -369,10 +381,10 @@ int __cdecl htsshow_loop(lien_back* back,int back_max,int back_index,int lien_n, { int i; for(i=0;i0) && (back[i].status<99)) { - strcpy(StatsBuffer[index].state,"receive"); ok=1; + strcpybuff(StatsBuffer[index].state,"receive"); ok=1; } break; case 1: if (back[i].status==99) { - strcpy(StatsBuffer[index].state,"request"); ok=1; + strcpybuff(StatsBuffer[index].state,"request"); ok=1; } else if (back[i].status==100) { - strcpy(StatsBuffer[index].state,"connect"); ok=1; + strcpybuff(StatsBuffer[index].state,"connect"); ok=1; } else if (back[i].status==101) { - strcpy(StatsBuffer[index].state,"search"); ok=1; + strcpybuff(StatsBuffer[index].state,"search"); ok=1; } else if (back[i].status==1000) { // ohh le beau ftp sprintf(StatsBuffer[index].state,"ftp: %s",back[i].info); ok=1; @@ -409,15 +421,15 @@ int __cdecl htsshow_loop(lien_back* back,int back_max,int back_index,int lien_n, default: if (back[i].status==0) { // prêt if ((back[i].r.statuscode==200)) { - strcpy(StatsBuffer[index].state,"ready"); ok=1; + strcpybuff(StatsBuffer[index].state,"ready"); ok=1; } else if ((back[i].r.statuscode>=100) && (back[i].r.statuscode<=599)) { char tempo[256]; tempo[0]='\0'; infostatuscode(tempo,back[i].r.statuscode); - strcpy(StatsBuffer[index].state,tempo); ok=1; + strcpybuff(StatsBuffer[index].state,tempo); ok=1; } else { - strcpy(StatsBuffer[index].state,"error"); ok=1; + strcpybuff(StatsBuffer[index].state,"error"); ok=1; } } break; @@ -429,32 +441,32 @@ int __cdecl htsshow_loop(lien_back* back,int back_max,int back_index,int lien_n, StatsBuffer[index].back=i; // index pour + d'infos // s[0]='\0'; - strcpy(StatsBuffer[index].url_sav,back[i].url_sav); // pour cancel + strcpybuff(StatsBuffer[index].url_sav,back[i].url_sav); // pour cancel if (strcmp(back[i].url_adr,"file://")) - strcat(s,back[i].url_adr); + strcatbuff(s,back[i].url_adr); else - strcat(s,"localhost"); + strcatbuff(s,"localhost"); if (back[i].url_fil[0]!='/') - strcat(s,"/"); - strcat(s,back[i].url_fil); + strcatbuff(s,"/"); + strcatbuff(s,back[i].url_fil); StatsBuffer[index].file[0]='\0'; { char* a=strrchr(s,'/'); if (a) { - strncat(StatsBuffer[index].file,a,200); + strncatbuff(StatsBuffer[index].file,a,200); *a='\0'; } } if ((l=strlen(s))0) { // taille prédéfinie @@ -568,4 +580,36 @@ int __cdecl htsshow_savename(char* adr_complete,char* fil_complete,char* referer } +/* *** Various functions *** */ + + +int fexist(char* s) { + struct stat st; + memset(&st, 0, sizeof(st)); + if (stat(s, &st) == 0) { + if (S_ISREG(st.st_mode)) { + return 1; + } + } + return 0; +} + +int linput(FILE* fp,char* s,int max) { + int c; + int j=0; + do { + c=fgetc(fp); + if (c!=EOF) { + switch(c) { + case 13: break; // sauter CR + case 10: c=-1; break; + case 9: case 12: break; // sauter ces caractères + default: s[j++]=(char) c; break; + } + } + } while((c!=-1) && (c!=EOF) && (j<(max-1))); + s[j]='\0'; + return j; +} + #endif diff --git a/src/httrack.dsp b/src/httrack.dsp index 7fc08da..590f025 100644 --- a/src/httrack.dsp +++ b/src/httrack.dsp @@ -43,8 +43,8 @@ RSC=rc.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /GX /Ot /Oi /Oy /Ob2 /I "C:\Dev\IPv6Kit\inc\\" /I "C:\Dev\zlib\\" /I "C:\Dev\openssl\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /c -# SUBTRACT CPP /Ox /Oa /Ow /Og /Os +# ADD CPP /nologo /MD /W3 /Gi /O2 /Op /Ob2 /I "C:\Dev\IPv6Kit\inc\\" /I "C:\Dev\zlib\\" /I "C:\Dev\openssl\include" /I "C:\Dev\Winhttrack" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HTS_ANALYSTE_CONSOLE" /YX /FD /Zm200 /c +# SUBTRACT CPP /Fr # ADD BASE RSC /l 0x40c /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -52,7 +52,7 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 -# ADD LINK32 wsock32.lib zlib.lib ssleay32.lib libeay32.lib /nologo /subsystem:console /machine:I386 /out:"c:\temp\httrack.exe" /libpath:"C:\Dev\openssl\lib" /libpath:"C:\Dev\zlib\dll32" /libpath:"C:\Dev\openssl\lib\out32dll" +# ADD LINK32 wsock32.lib libhttrack.lib /nologo /subsystem:console /machine:I386 /out:"L:\HTTrack\httrack\httrack.exe" /libpath:"C:\Dev\openssl\lib" /libpath:"C:\Dev\zlib\dll32" /libpath:"C:\Dev\openssl\lib\out32dll" /libpath:"C:\temp\Releaselib" # SUBTRACT LINK32 /verbose !ELSEIF "$(CFG)" == "httrack - Win32 Debug" @@ -69,7 +69,7 @@ LINK32=link.exe # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" # ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c -# ADD CPP /nologo /MT /W3 /Gm /GR /GX /ZI /Od /I "C:\Dev\IPv6Kit\inc\\" /I "C:\Dev\zlib\\" /I "C:\Dev\openssl\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FAcs /Fr /YX /FD /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /ZI /Od /I "C:\Dev\IPv6Kit\inc\\" /I "C:\Dev\zlib\\" /I "C:\Dev\openssl\include" /I "C:\Dev\Winhttrack" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HTS_ANALYSTE_CONSOLE" /FAcs /Fr /FD /Zm200 /c # ADD BASE RSC /l 0x40c /d "_DEBUG" # ADD RSC /l 0x409 /d "_DEBUG" BSC32=bscmake.exe @@ -77,8 +77,8 @@ BSC32=bscmake.exe # ADD BSC32 /nologo LINK32=link.exe # ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept -# ADD LINK32 wsock32.lib zlib.lib ssleay32.lib libeay32.lib /nologo /subsystem:console /map /debug /debugtype:both /machine:I386 /out:"c:\temp\test\httrack.exe" /pdbtype:sept /libpath:"C:\Dev\openssl\lib" /libpath:"C:\Dev\zlib\dll32" /libpath:"C:\Dev\openssl\lib\out32dll" -# SUBTRACT LINK32 /profile +# ADD LINK32 wsock32.lib libhttrack.lib /nologo /subsystem:console /debug /debugtype:both /machine:I386 /out:"C:\temp\httrack.exe" /pdbtype:sept /libpath:"C:\Dev\openssl\lib" /libpath:"C:\Dev\zlib\dll32" /libpath:"C:\Dev\openssl\lib\out32dll" /libpath:"C:\temp\Debuglib" +# SUBTRACT LINK32 /profile /map !ELSEIF "$(CFG)" == "httrack - Win32 Release avec debug" @@ -96,8 +96,7 @@ LINK32=link.exe # PROP Target_Dir "" # ADD BASE CPP /nologo /MT /W3 /GX /Ot /Oi /Oy /Ob2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c # SUBTRACT BASE CPP /Ox /Oa /Ow /Og /Os -# ADD CPP /nologo /MT /W3 /GX /Zi /Ot /Oi /Oy /Ob2 /I "C:\Dev\IPv6Kit\inc\\" /I "C:\Dev\zlib\\" /I "C:\Dev\openssl\include" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /FAcs /FR /YX /FD /c -# SUBTRACT CPP /Ox /Oa /Ow /Og /Os +# ADD CPP /nologo /MD /W3 /GX /Zi /Ot /Oi /Oy /Ob2 /I "C:\Dev\IPv6Kit\inc\\" /I "C:\Dev\zlib\\" /I "C:\Dev\openssl\include" /I "C:\Dev\Winhttrack" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "HTS_ANALYSTE_CONSOLE" /FAcs /FR /YX /FD /Zm200 /c # ADD BASE RSC /l 0x409 /d "NDEBUG" # ADD RSC /l 0x409 /d "NDEBUG" BSC32=bscmake.exe @@ -106,7 +105,7 @@ BSC32=bscmake.exe LINK32=link.exe # ADD BASE LINK32 wsock32.lib /nologo /subsystem:console /machine:I386 /out:"c:\temp\httrack.exe" # SUBTRACT BASE LINK32 /verbose -# ADD LINK32 wsock32.lib zlib.lib ssleay32.lib libeay32.lib /nologo /subsystem:console /debug /machine:I386 /out:"c:\temp\httrack.exe" /libpath:"C:\Dev\openssl\lib" /libpath:"C:\Dev\zlib\dll32" /libpath:"C:\Dev\openssl\lib\out32dll" +# ADD LINK32 wsock32.lib libhttrack.lib /nologo /subsystem:console /debug /machine:I386 /out:"L:\HTTrack\httrack\httrack.exe" /libpath:"C:\Dev\openssl\lib" /libpath:"C:\Dev\zlib\dll32" /libpath:"C:\Dev\openssl\lib\out32dll" # SUBTRACT LINK32 /verbose !ENDIF @@ -118,207 +117,11 @@ LINK32=link.exe # Name "httrack - Win32 Release avec debug" # Begin Source File -SOURCE=.\htsalias.c -# End Source File -# Begin Source File - -SOURCE=.\htsalias.h -# End Source File -# Begin Source File - -SOURCE=.\htsback.c -# End Source File -# Begin Source File - -SOURCE=.\htsback.h -# End Source File -# Begin Source File - -SOURCE=.\htsbauth.c -# End Source File -# Begin Source File - -SOURCE=.\htsbauth.h -# End Source File -# Begin Source File - -SOURCE=.\htscache.c -# End Source File -# Begin Source File - -SOURCE=.\htscache.h -# End Source File -# Begin Source File - -SOURCE=.\htscatchurl.c -# End Source File -# Begin Source File - -SOURCE=.\htscatchurl.h -# End Source File -# Begin Source File - -SOURCE=.\htsconfig.h -# End Source File -# Begin Source File - -SOURCE=.\htscore.c -# End Source File -# Begin Source File - -SOURCE=.\htscore.h -# End Source File -# Begin Source File - -SOURCE=.\htscoremain.c -# End Source File -# Begin Source File - -SOURCE=.\htscoremain.h -# End Source File -# Begin Source File - -SOURCE=.\htsdefines.h -# End Source File -# Begin Source File - -SOURCE=.\htsfilters.c -# End Source File -# Begin Source File - -SOURCE=.\htsfilters.h -# End Source File -# Begin Source File - -SOURCE=.\htsftp.c -# End Source File -# Begin Source File - -SOURCE=.\htsftp.h -# End Source File -# Begin Source File - -SOURCE=.\htsglobal.h -# End Source File -# Begin Source File - -SOURCE=.\htshash.c -# End Source File -# Begin Source File - -SOURCE=.\htshash.h -# End Source File -# Begin Source File - -SOURCE=.\htshelp.c -# End Source File -# Begin Source File - -SOURCE=.\htshelp.h -# End Source File -# Begin Source File - -SOURCE=.\htsindex.c -# End Source File -# Begin Source File - -SOURCE=.\htsindex.h -# End Source File -# Begin Source File - -SOURCE=.\htsjava.c -# End Source File -# Begin Source File - -SOURCE=.\htsjava.h -# End Source File -# Begin Source File - -SOURCE=.\htslib.c -# End Source File -# Begin Source File - -SOURCE=.\htslib.h -# End Source File -# Begin Source File - -SOURCE=.\htsmd5.c -# End Source File -# Begin Source File - -SOURCE=.\htsmd5.h -# End Source File -# Begin Source File - -SOURCE=.\htsname.c -# End Source File -# Begin Source File - -SOURCE=.\htsname.h -# End Source File -# Begin Source File - -SOURCE=.\htsnostatic.c -# End Source File -# Begin Source File - -SOURCE=.\htsnostatic.h -# End Source File -# Begin Source File - -SOURCE=.\htsrobots.c -# End Source File -# Begin Source File - -SOURCE=.\htsrobots.h -# End Source File -# Begin Source File - -SOURCE=.\htsthread.c -# End Source File -# Begin Source File - -SOURCE=.\htsthread.h -# End Source File -# Begin Source File - -SOURCE=.\htstools.c -# End Source File -# Begin Source File - -SOURCE=.\htstools.h -# End Source File -# Begin Source File - -SOURCE=.\htswizard.c -# End Source File -# Begin Source File - -SOURCE=.\htswizard.h -# End Source File -# Begin Source File - -SOURCE=.\htswrap.c -# End Source File -# Begin Source File - -SOURCE=.\htswrap.h -# End Source File -# Begin Source File - SOURCE=.\httrack.c # End Source File # Begin Source File SOURCE=.\httrack.h # End Source File -# Begin Source File - -SOURCE=.\md5.c -# End Source File -# Begin Source File - -SOURCE=.\md5.h -# End Source File # End Target # End Project diff --git a/src/httrack.dsw b/src/httrack.dsw index 9aa199f..3cbb30f 100644 --- a/src/httrack.dsw +++ b/src/httrack.dsw @@ -9,6 +9,21 @@ Package=<5> {{{ }}} +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libhttrack + End Project Dependency +}}} + +############################################################################### + +Project: "libhttrack"=.\libhttrack\libhttrack.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + Package=<4> {{{ }}} diff --git a/src/httrack.h b/src/httrack.h index a8633de..f297e00 100644 --- a/src/httrack.h +++ b/src/httrack.h @@ -43,9 +43,9 @@ Please visit our Website: http://www.httrack.com #include "htscore.h" typedef struct { - char name[1000]; - char file[256]; - char state[20]; + char name[1024]; + char file[1024]; + char state[256]; char url_sav[HTS_URLMAXSIZE*2]; // pour cancel char url_adr[HTS_URLMAXSIZE*2]; char url_fil[HTS_URLMAXSIZE*2]; diff --git a/src/postinst-config.in b/src/postinst-config.in deleted file mode 100755 index f0edc72..0000000 --- a/src/postinst-config.in +++ /dev/null @@ -1,55 +0,0 @@ -#!/bin/sh - -# Config file location -cnfdir="__ETCPATH__" -cnf="__ETCPATH__/httrack.conf" - -if test "`id -u`" -eq 0; then - mkdir -p "$cnfdir" - if ! test -f "$cnf"; then - echo "creating $cnf (please modify it) .." - cat>"$cnf" << EOF -# HTTrack Website Copier Settings -# See httrack --help for more information - -# Examples: (to uncomment) - -# set proxy proxy.myisp.com:8080 -# retries=2 -# set max-size 10000000 -# set max-time 36000 -# set user-agent Mouzilla/17.0 (compatible; HTTrack; I) -# -# There are MUCH more options.. try 'httrack --quiet --help | more' - -# Deny and allow for links -# this will be used by default for all mirrors -allow *.gif -allow *.png -deny ad.doubleclick.net/* - -# Path and other options -# '~' in the *begining* means 'home dir' -# '#' at the *end* means "projectname" (that is, the first URL given) -# Example: '~/websites/#' will create /home/smith/websites/www.foo.com -# folder when launching 'httrack www.foo.com' -set path ~/websites/# - -EOF - fi - - if ! grep "set path" "$cnf" >/dev/null; then - echo "default path set to /websites/" - fi - - chown root:__ROOTGROUP__ "$cnf" - chmod 744 "$cnf" -else - cat << EOF - -You are not root, therefore $cnf configuration file hasn't been created -Re-run this sript ($0) as root if you want to do that - -EOF -fi - diff --git a/src/strip_cr.in b/src/strip_cr.in deleted file mode 100755 index 03af084..0000000 --- a/src/strip_cr.in +++ /dev/null @@ -1,32 +0,0 @@ -__PERL__ -# A simple script to convert DOS text files to -# Unix one. Useful to strip all CR on .c and .h -# sourcefiles. -# Usage: strip_cr -foreach $fname (@ARGV) { - $ad=1; - if (open(FL,$fname)) { - if (open(FO,">".$fname.".tmp")) { - while() { - s/\r\n$/\n/g; - print FO "$_"; - } - close(FL); - close(FO); - if ((-s $fname) != (-s $fname.".tmp")) { - print("Stripping ".$fname."..\n"); - rename($fname.".tmp",$fname); - } else { - unlink($fname.".tmp"); - } - } else { - print "Unable to open ".$fname.".tmp\n"; - } - } else { - print "Unable to open $fname\n"; - } -} -if (!$ad) { - print "Ensure that a text file has no lines ended with CR (DOS)\n"; - print "Usage: strip_cr \n"; -} diff --git a/src/webhttrack b/src/webhttrack new file mode 100755 index 0000000..3b433bb --- /dev/null +++ b/src/webhttrack @@ -0,0 +1,101 @@ +#!/bin/bash +# +# WebHTTrack launcher script +# Initializes the htsserver GUI frontend and launch the default browser +BROWSEREXE= +SRCHBROWSEREXE="x-www-browser www-browser mozilla galeon konqueror opera netscape" +if test -n "${BROWSER}"; then +# sensible-browser will f up if BROWSER is not set +SRCHBROWSEREXE="sensible-browser ${SRCHBROWSEREXE}" +fi +SRCHPATH="/usr/local/bin /usr/share/bin /usr/bin /usr/lib/httrack /usr/local/lib/httrack /usr/local/share/httrack ${HOME}/usr/bin ${HOME}/bin" +SRCHDISTPATH="/usr/share /usr/local /usr /local /usr/local/share ${HOME}/usr ${HOME}/usr/share ${HOME}/usr/local ${HOME}/usr/share" + +### +# And now some famous cuisine + +function log { +echo "$0($$): $@" >&2 +return 0 +} + +# First ensure that we can launch the server +BINPATH= +for i in ${SRCHPATH}; do + ! test -n "${BINPATH}" && test -x ${i}/htsserver && BINPATH=${i} +done +for i in ${SRCHDISTPATH}; do + ! test -n "${DISTPATH}" && test -f "${i}/httrack/lang.def" && DISTPATH="${i}/httrack" +done +test -n "${BINPATH}" || ! log "could not find htsserver" || exit 1 +test -n "${DISTPATH}" || ! log "could not find httrack directory" || exit 1 +test -f ${DISTPATH}/lang.def || ! log "could not find ${DISTPATH}/lang.def" || exit 1 +test -f ${DISTPATH}/lang.indexes || ! log "could not find ${DISTPATH}/lang.indexes" || exit 1 +test -d ${DISTPATH}/lang || ! log "could not find ${DISTPATH}/lang" || exit 1 +test -d ${DISTPATH}/html || ! log "could not find ${DISTPATH}/html" || exit 1 + +# Locale +HTSLANG="${LC_MESSAGES}" +! test -n "${HTSLANG}" && HTSLANG="${LC_ALL}" +! test -n "${HTSLANG}" && HTSLANG="${LANG}" +test -n "${HTSLANG}" && HTSLANG="`echo ${HTSLANG} | cut -c1-2` | tr 'A-Z' 'a-z'" +LANGN=`grep "${HTSLANG}:" ${DISTPATH}/lang.indexes | cut -f2 -d':'` +! test -n "${LANGN}" && LANGN=1 + +# Find the browser +# note: not all systems have sensible-browser or www-browser alternative +# thefeore, we have to find a bit more if sensible-browser could not be found +for i in ${SRCHBROWSEREXE}; do +for j in ${SRCHPATH}; do +if test -x ${j}/${i}; then +BROWSEREXE=${j}/${i} +fi +test -n "$BROWSEREXE" && break +done +test -n "$BROWSEREXE" && break +done +test -n "$BROWSEREXE" || ! log "cound not find any suitable browser" || exit 1 + +# "browse" command +if test "$1" = "browse"; then +${BROWSEREXE} "file://${HOME}/websites/index.html" +exit $? +fi + +# Create a temporary filename +TMPSRVFILE="/tmp/.webhttrack.$$.`/usr/bin/head -c16 /dev/random | /usr/bin/md5sum | /usr/bin/cut -f1 -d' '`" +>${TMPSRVFILE} || ! log "cound not create the temporary file ${TMPSRVFILE}" || exit 1 +# Launch htsserver binary and setup the server +(${BINPATH}/htsserver "${DISTPATH}/" path "${HOME}/websites" lang "${LANGN}" $@; echo SRVURL=error) > ${TMPSRVFILE}& +# Find the generated SRVURL +SRVURL= +MAXCOUNT=60 +while ! test -n "$SRVURL"; do +MAXCOUNT=$[$MAXCOUNT - 1] +test $MAXCOUNT -gt 0 || exit 1 +test $MAXCOUNT -lt 50 && echo "waiting for server to reply.." +SRVURL=`/bin/grep -E URL= ${TMPSRVFILE} | /usr/bin/cut -f2- -d=` +test ! "$SRVURL" = "error" || ! log "could not spawn htsserver" || exit 1 +test -n "$SRVURL" || /bin/sleep 1 +done + +# Cleanup function +function cleanup { +test -n "$1" && log "nasty signal caught, cleaning up.." +test -f ${TMPSRVFILE} && SRVPID=`/bin/grep -E PID= ${TMPSRVFILE} | /usr/bin/cut -f2- -d=` +test -n "${SRVPID}" && kill -9 ${SRVPID} +test -f ${TMPSRVFILE} && rm ${TMPSRVFILE} +test -n "$1" && log "..done" +return 0 +} + +# Cleanup in case of emergency +trap "cleanup now; exit" 1 2 3 4 5 6 7 8 9 11 13 14 15 16 19 24 25 + +# Got SRVURL, launch browser +${BROWSEREXE} "${SRVURL}" + +# That's all, folks! +trap "" 1 2 3 4 5 6 7 8 9 11 13 14 15 16 19 24 25 +cleanup +exit 0 diff --git a/src/webhttrack.dsp b/src/webhttrack.dsp new file mode 100755 index 0000000..a5940e8 --- /dev/null +++ b/src/webhttrack.dsp @@ -0,0 +1,120 @@ +# Microsoft Developer Studio Project File - Name="webhttrack" - Package Owner=<4> +# Microsoft Developer Studio Generated Build File, Format Version 6.00 +# ** DO NOT EDIT ** + +# TARGTYPE "Win32 (x86) Console Application" 0x0103 + +CFG=webhttrack - Win32 Debug +!MESSAGE This is not a valid makefile. To build this project using NMAKE, +!MESSAGE use the Export Makefile command and run +!MESSAGE +!MESSAGE NMAKE /f "webhttrack.mak". +!MESSAGE +!MESSAGE You can specify a configuration when running NMAKE +!MESSAGE by defining the macro CFG on the command line. For example: +!MESSAGE +!MESSAGE NMAKE /f "webhttrack.mak" CFG="webhttrack - Win32 Debug" +!MESSAGE +!MESSAGE Possible choices for configuration are: +!MESSAGE +!MESSAGE "webhttrack - Win32 Release" (based on "Win32 (x86) Console Application") +!MESSAGE "webhttrack - Win32 Debug" (based on "Win32 (x86) Console Application") +!MESSAGE + +# Begin Project +# PROP AllowPerConfigDependencies 0 +# PROP Scc_ProjName "" +# PROP Scc_LocalPath "" +CPP=cl.exe +RSC=rc.exe + +!IF "$(CFG)" == "webhttrack - Win32 Release" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 0 +# PROP BASE Output_Dir "Release" +# PROP BASE Intermediate_Dir "Release" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 0 +# PROP Output_Dir "Release" +# PROP Intermediate_Dir "Release" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /c +# ADD CPP /nologo /MD /W3 /GX /O2 /I "C:\Dev\\" /I "C:\Dev\IPv6Kit\inc\\" /I "C:\Dev\zlib\\" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "NDEBUG" +# ADD RSC /l 0x40c /d "NDEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 +# ADD LINK32 wsock32.lib libhttrack.lib /nologo /subsystem:console /pdb:none /machine:I386 /force /out:"L:\HTTrack\httrack\webhttrack.exe" /libpath:"C:\Dev\openssl\lib" /libpath:"C:\Dev\zlib\dll32" /libpath:"C:\Dev\openssl\lib\out32dll" /libpath:"C:\temp\Releaselib" + +!ELSEIF "$(CFG)" == "webhttrack - Win32 Debug" + +# PROP BASE Use_MFC 0 +# PROP BASE Use_Debug_Libraries 1 +# PROP BASE Output_Dir "Debug" +# PROP BASE Intermediate_Dir "Debug" +# PROP BASE Target_Dir "" +# PROP Use_MFC 0 +# PROP Use_Debug_Libraries 1 +# PROP Output_Dir "Debug" +# PROP Intermediate_Dir "Debug" +# PROP Ignore_Export_Lib 0 +# PROP Target_Dir "" +# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Yu"stdafx.h" /FD /GZ /c +# ADD CPP /nologo /MDd /W3 /Gm /GR /GX /ZI /Od /I "C:\Dev\\" /I "C:\Dev\IPv6Kit\inc\\" /I "C:\Dev\zlib\\" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FAcs /FR /FD /GZ /c +# SUBTRACT CPP /YX /Yc /Yu +# ADD BASE RSC /l 0x40c /d "_DEBUG" +# ADD RSC /l 0x40c /d "_DEBUG" +BSC32=bscmake.exe +# ADD BASE BSC32 /nologo +# ADD BSC32 /nologo +LINK32=link.exe +# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept +# ADD LINK32 wsock32.lib libhttrack.lib /nologo /subsystem:console /debug /machine:I386 /out:"C:\temp\webhttrack.exe" /pdbtype:sept /libpath:"C:\Dev\openssl\lib" /libpath:"C:\Dev\zlib\dll32" /libpath:"C:\Dev\openssl\lib\out32dll" /libpath:"C:\temp\Releaselib" + +!ENDIF + +# Begin Target + +# Name "webhttrack - Win32 Release" +# Name "webhttrack - Win32 Debug" +# Begin Group "Source Files" + +# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat" +# Begin Source File + +SOURCE=.\htsserver.c +# End Source File +# Begin Source File + +SOURCE=.\htsweb.c +# End Source File +# End Group +# Begin Group "Header Files" + +# PROP Default_Filter "h;hpp;hxx;hm;inl" +# Begin Source File + +SOURCE=.\htsserver.h +# End Source File +# Begin Source File + +SOURCE=.\htsweb.h +# End Source File +# End Group +# Begin Group "Resource Files" + +# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe" +# End Group +# Begin Source File + +SOURCE=.\ReadMe.txt +# End Source File +# End Target +# End Project diff --git a/src/webhttrack.dsw b/src/webhttrack.dsw new file mode 100755 index 0000000..ea9ea0b --- /dev/null +++ b/src/webhttrack.dsw @@ -0,0 +1,44 @@ +Microsoft Developer Studio Workspace File, Format Version 6.00 +# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE! + +############################################################################### + +Project: "libhttrack"=..\libhttrack\libhttrack.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ +}}} + +############################################################################### + +Project: "webhttrack"=.\webhttrack.dsp - Package Owner=<4> + +Package=<5> +{{{ +}}} + +Package=<4> +{{{ + Begin Project Dependency + Project_Dep_Name libhttrack + End Project Dependency +}}} + +############################################################################### + +Global: + +Package=<5> +{{{ +}}} + +Package=<3> +{{{ +}}} + +############################################################################### + diff --git a/templates/Makefile.am b/templates/Makefile.am new file mode 100644 index 0000000..39ded72 --- /dev/null +++ b/templates/Makefile.am @@ -0,0 +1,6 @@ + +templatesdir = $(datadir)/httrack/templates +templates_DATA = index-body.html index-header.html topindex-footer.html \ + index-footer.html topindex-body.html topindex-header.html + +EXTRA_DIST = $(templates_DATA) diff --git a/templates/Makefile.in b/templates/Makefile.in new file mode 100644 index 0000000..f800722 --- /dev/null +++ b/templates/Makefile.in @@ -0,0 +1,309 @@ +# Makefile.in generated by automake 1.7 from Makefile.am. +# @configure_input@ + +# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 +# 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@ + +srcdir = @srcdir@ +top_srcdir = @top_srcdir@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +top_builddir = .. + +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +INSTALL = @INSTALL@ +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 = : +host_triplet = @host@ +ACLOCAL = @ACLOCAL@ +AMDEP_FALSE = @AMDEP_FALSE@ +AMDEP_TRUE = @AMDEP_TRUE@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFAULT_CFLAGS = @DEFAULT_CFLAGS@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DL_LIBS = @DL_LIBS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LFS_FLAG = @LFS_FLAG@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ +MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ +MAKEINFO = @MAKEINFO@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +SOCKET_LIBS = @SOCKET_LIBS@ +STRIP = @STRIP@ +THREADS_CFLAGS = @THREADS_CFLAGS@ +THREADS_LIBS = @THREADS_LIBS@ +V6_FLAG = @V6_FLAG@ +VERSION = @VERSION@ +VERSION_INFO = @VERSION_INFO@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_RANLIB = @ac_ct_RANLIB@ +ac_ct_STRIP = @ac_ct_STRIP@ +am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ +am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ +am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ +am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ +am__include = @am__include@ +am__quote = @am__quote@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +datadir = @datadir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +oldincludedir = @oldincludedir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ + +templatesdir = $(datadir)/httrack/templates +templates_DATA = index-body.html index-header.html topindex-footer.html \ + index-footer.html topindex-body.html topindex-header.html + + +EXTRA_DIST = $(templates_DATA) +subdir = templates +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +DIST_SOURCES = +DATA = $(templates_DATA) + +DIST_COMMON = Makefile.am Makefile.in +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu templates/Makefile +Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +uninstall-info-am: +templatesDATA_INSTALL = $(INSTALL_DATA) +install-templatesDATA: $(templates_DATA) + @$(NORMAL_INSTALL) + $(mkinstalldirs) $(DESTDIR)$(templatesdir) + @list='$(templates_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " $(templatesDATA_INSTALL) $$d$$p $(DESTDIR)$(templatesdir)/$$f"; \ + $(templatesDATA_INSTALL) $$d$$p $(DESTDIR)$(templatesdir)/$$f; \ + done + +uninstall-templatesDATA: + @$(NORMAL_UNINSTALL) + @list='$(templates_DATA)'; for p in $$list; do \ + f="`echo $$p | sed -e 's|^.*/||'`"; \ + echo " rm -f $(DESTDIR)$(templatesdir)/$$f"; \ + rm -f $(DESTDIR)$(templatesdir)/$$f; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) + +top_distdir = .. +distdir = $(top_distdir)/$(PACKAGE)-$(VERSION) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(DISTFILES)'; for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test "$$dir" != "$$file" && test "$$dir" != "."; then \ + dir="/$$dir"; \ + $(mkinstalldirs) "$(distdir)$$dir"; \ + else \ + dir=''; \ + fi; \ + if test -d $$d/$$file; then \ + 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: + $(mkinstalldirs) $(DESTDIR)$(templatesdir) + +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_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -rm -f Makefile $(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 + +distclean-am: clean-am distclean-generic distclean-libtool + +dvi: dvi-am + +dvi-am: + +info: info-am + +info-am: + +install-data-am: install-templatesDATA + +install-exec-am: + +install-info: install-info-am + +install-man: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + +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-info-am uninstall-templatesDATA + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + distclean distclean-generic distclean-libtool distdir dvi \ + dvi-am info info-am install install-am install-data \ + install-data-am install-exec install-exec-am install-info \ + install-info-am install-man install-strip install-templatesDATA \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \ + uninstall-info-am uninstall-templatesDATA + +# 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: -- cgit v1.2.3