diff options
Diffstat (limited to 'html')
61 files changed, 626 insertions, 534 deletions
diff --git a/html/Makefile.am b/html/Makefile.am index 416dbf5..2bd25bc 100755 --- a/html/Makefile.am +++ b/html/Makefile.am @@ -34,7 +34,7 @@ EXTRA_DIST = $(HelpHtml_DATA) $(HelpHtmlimg_DATA) $(HelpHtmlimages_DATA) \ httrack.css install-data-hook: - if test ! -f $(DESTDIR)$(prefix)/share/httrack/html ; then \ + if test ! -L $(DESTDIR)$(prefix)/share/httrack/html ; then \ ( cd $(DESTDIR)$(prefix)/share/httrack \ && mv -f ../doc/httrack/html html \ && cd ../doc/httrack/ \ diff --git a/html/Makefile.in b/html/Makefile.in index fd5387c..8855606 100644 --- a/html/Makefile.in +++ b/html/Makefile.in @@ -570,7 +570,7 @@ uninstall-am: uninstall-HelpHtmlDATA uninstall-HelpHtmlTxtDATA \ install-data-hook: - if test ! -f $(DESTDIR)$(prefix)/share/httrack/html ; then \ + if test ! -L $(DESTDIR)$(prefix)/share/httrack/html ; then \ ( cd $(DESTDIR)$(prefix)/share/httrack \ && mv -f ../doc/httrack/html html \ && cd ../doc/httrack/ \ diff --git a/html/abuse.html b/html/abuse.html index 1d98f95..92c46fa 100644 --- a/html/abuse.html +++ b/html/abuse.html @@ -579,7 +579,7 @@ And then, put the email address in your pages through: <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/addurl.html b/html/addurl.html index 46a163a..59f5a66 100644 --- a/html/addurl.html +++ b/html/addurl.html @@ -144,7 +144,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/cache.html b/html/cache.html index df28dc3..a17cb70 100755 --- a/html/cache.html +++ b/html/cache.html @@ -282,7 +282,7 @@ Libraries should generally handle this peculiar format, however. <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/cmddoc.html b/html/cmddoc.html index 7879071..4260b09 100644 --- a/html/cmddoc.html +++ b/html/cmddoc.html @@ -145,7 +145,7 @@ The command-line version <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/contact.html b/html/contact.html index 0706f6e..2a2e81d 100644 --- a/html/contact.html +++ b/html/contact.html @@ -243,7 +243,7 @@ roche at httrack dot com (Xavier ROCHE)<br> <br><hr><br> <br> This program is covered by the GNU General Public License.<br> - HTTrack/HTTrack Website Copier is Copyright (C) 1998-2003 Xavier Roche and other contributors + HTTrack/HTTrack Website Copier is Copyright (C) 1998-2007 Xavier Roche and other contributors <br> <!-- ==================== Start epilogue ==================== --> @@ -259,7 +259,7 @@ roche at httrack dot com (Xavier ROCHE)<br> <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/dev.html b/html/dev.html index 66ae8a1..01fbdf0 100644 --- a/html/dev.html +++ b/html/dev.html @@ -116,7 +116,8 @@ You can use tens of options (see <tt>httrack --help</tt>) to control precisely t <br><br>
<li><a href="plug.html">More complex use: plugging external C functions to the httrack library</a></li><br>
For advanced functions, you may have to use external C wrappers ; for example when adding advanced crawl features, such as "tuned" filestructure type
-<br><i>Important note: please read the license information of httrack before developing add-ons</i>
+<br><i>Important note: please read the license information of httrack before developing add-ons</i><br />
+See also the page <a href="plug_330.html">for versions prior to 3.41</a>
<br><br>
<li><a href="library.html">Advanced use: using the library</a></li><br>
The library can be used to write graphical GUIs for httrack, or to run mirrors from a program.
@@ -146,7 +147,7 @@ This page describes the HTTrack cache format. <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/faq.html b/html/faq.html index 9225147..3b4a051 100644 --- a/html/faq.html +++ b/html/faq.html @@ -934,7 +934,7 @@ A: <em>Feel free to <a href="contact.html">contact us</a>! <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/fcguide.html b/html/fcguide.html index e2f03d4..f86702f 100644 --- a/html/fcguide.html +++ b/html/fcguide.html @@ -2708,7 +2708,7 @@ for only 2 simultaneous sesions. <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/filters.html b/html/filters.html index dac8545..fa79ca9 100644 --- a/html/filters.html +++ b/html/filters.html @@ -466,7 +466,7 @@ See also: The <a href="faq.html#VF1">FAQ</a><br> <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/httrack.man.html b/html/httrack.man.html index 116cbb5..13ee1a0 100644 --- a/html/httrack.man.html +++ b/html/httrack.man.html @@ -1,5 +1,5 @@ <!-- Creator : groff version 1.18.1 --> -<!-- CreationDate: Sun Apr 16 11:34:04 2006 --> +<!-- CreationDate: Sat Feb 3 14:35:31 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> @@ -46,14 +46,15 @@ local directory</p> <td width="10%"></td> <td width="89%"> <p><b>httrack [ url ]... [ -filter ]... [ +filter ]... [</b> -] [ <b>-w, --mirror</b> ] [ <b>-W, --mirror-wizard</b> ] [ -<b>-g, --get-files</b> ] [ <b>-i, --continue</b> ] [ <b>-Y, ---mirrorlinks</b> ] [ <b>-P, --proxy</b> ] [ <b>-%f, ---httpproxy-ftp[=N]</b> ] [ <b>-%b, --bind</b> ] [ <b>-rN, ---depth[=N]</b> ] [ <b>-%eN, --ext-depth[=N]</b> ] [ <b>-mN, ---max-files[=N]</b> ] [ <b>-MN, --max-size[=N]</b> ] [ -<b>-EN, --max-time[=N]</b> ] [ <b>-AN, --max-rate[=N]</b> ] -[ <b>-%cN, --connection-per-second[=N]</b> ] [ <b>-GN, +] [ <b>-%O, --chroot</b> ] [ <b>-w, --mirror</b> ] [ <b>-W, +--mirror-wizard</b> ] [ <b>-g, --get-files</b> ] [ <b>-i, +--continue</b> ] [ <b>-Y, --mirrorlinks</b> ] [ <b>-P, +--proxy</b> ] [ <b>-%f, --httpproxy-ftp[=N]</b> ] [ <b>-%b, +--bind</b> ] [ <b>-rN, --depth[=N]</b> ] [ <b>-%eN, +--ext-depth[=N]</b> ] [ <b>-mN, --max-files[=N]</b> ] [ +<b>-MN, --max-size[=N]</b> ] [ <b>-EN, --max-time[=N]</b> ] +[ <b>-AN, --max-rate[=N]</b> ] [ <b>-%cN, +--connection-per-second[=N]</b> ] [ <b>-GN, --max-pause[=N]</b> ] [ <b>-%mN, --max-mms-time[=N]</b> ] [ <b>-cN, --sockets[=N]</b> ] [ <b>-TN, --timeout</b> ] [ <b>-RN, --retries[=N]</b> ] [ <b>-JN, --min-rate[=N]</b> ] [ @@ -72,20 +73,20 @@ local directory</p> ] [ <b>-%h, --http-10</b> ] [ <b>-%k, --keep-alive</b> ] [ <b>-%B, --tolerant</b> ] [ <b>-%s, --updatehack</b> ] [ <b>-%u, --urlhack</b> ] [ <b>-%A, --assume</b> ] [ <b>-@iN, ---protocol[=N]</b> ] [ <b>-F, --user-agent</b> ] [ <b>-%R, ---referer</b> ] [ <b>-%E, --from</b> ] [ <b>-%F, ---footer</b> ] [ <b>-%l, --language</b> ] [ <b>-C, ---cache[=N]</b> ] [ <b>-k, --store-all-in-cache</b> ] [ -<b>-%n, --do-not-recatch</b> ] [ <b>-%v, --display</b> ] [ -<b>-Q, --do-not-log</b> ] [ <b>-q, --quiet</b> ] [ <b>-z, ---extra-log</b> ] [ <b>-Z, --debug-log</b> ] [ <b>-v, ---verbose</b> ] [ <b>-f, --file-log</b> ] [ <b>-f2, ---single-log</b> ] [ <b>-I, --index</b> ] [ <b>-%i, ---build-top-index</b> ] [ <b>-%I, --search-index</b> ] [ -<b>-pN, --priority[=N]</b> ] [ <b>-S, --stay-on-same-dir</b> -] [ <b>-D, --can-go-down</b> ] [ <b>-U, --can-go-up</b> ] [ -<b>-B, --can-go-up-and-down</b> ] [ <b>-a, ---stay-on-same-address</b> ] [ <b>-d, +--protocol[=N]</b> ] [ <b>-%w, --disable-module</b> ] [ +<b>-F, --user-agent</b> ] [ <b>-%R, --referer</b> ] [ +<b>-%E, --from</b> ] [ <b>-%F, --footer</b> ] [ <b>-%l, +--language</b> ] [ <b>-C, --cache[=N]</b> ] [ <b>-k, +--store-all-in-cache</b> ] [ <b>-%n, --do-not-recatch</b> ] +[ <b>-%v, --display</b> ] [ <b>-Q, --do-not-log</b> ] [ +<b>-q, --quiet</b> ] [ <b>-z, --extra-log</b> ] [ <b>-Z, +--debug-log</b> ] [ <b>-v, --verbose</b> ] [ <b>-f, +--file-log</b> ] [ <b>-f2, --single-log</b> ] [ <b>-I, +--index</b> ] [ <b>-%i, --build-top-index</b> ] [ <b>-%I, +--search-index</b> ] [ <b>-pN, --priority[=N]</b> ] [ <b>-S, +--stay-on-same-dir</b> ] [ <b>-D, --can-go-down</b> ] [ +<b>-U, --can-go-up</b> ] [ <b>-B, --can-go-up-and-down</b> ] +[ <b>-a, --stay-on-same-address</b> ] [ <b>-d, --stay-on-same-domain</b> ] [ <b>-l, --stay-on-same-tld</b> ] [ <b>-e, --go-everywhere</b> ] [ <b>-%H, --debug-headers</b> ] [ <b>-%!, @@ -255,8 +256,8 @@ proxy</p> <table width="100%" border=0 rules="none" frame="void" cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> -<td width="13%"></td> -<td width="2%"> +<td width="11%"></td> +<td width="4%"> <p>-O</p> </td> @@ -266,6 +267,18 @@ proxy</p> <p>path for mirror/logfiles+cache (-O path mirror[,path cache and logfiles]) (--path <param>)</p> </td> +<tr valign="top" align="left"> +<td width="11%"></td> +<td width="4%"> + +<p>-%O</p> +</td> +<td width="5%"></td> +<td width="77%"> + +<p>chroot path to, must be r00t (-%O root path) (--chroot +<param>)</p> +</td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" @@ -351,11 +364,11 @@ cache and logfiles]) (--path <param>)</p> cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> -<td width="5%"> +<td width="4%"> <p>-P</p> </td> -<td width="4%"></td> +<td width="5%"></td> <td width="77%"> <p>proxy use (-P proxy:port or -P user:pass@proxy:port) @@ -363,11 +376,11 @@ cache and logfiles]) (--path <param>)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="5%"> +<td width="4%"> <p>-%f</p> </td> -<td width="4%"></td> +<td width="5%"></td> <td width="77%"> <p>*use proxy for ftp (f0 don t use) @@ -375,11 +388,11 @@ cache and logfiles]) (--path <param>)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="5%"> +<td width="4%"> <p>-%b</p> </td> -<td width="4%"></td> +<td width="5%"></td> <td width="77%"> <p>use this local hostname to make/send requests (-%b @@ -529,22 +542,22 @@ minute, 3600=1 hour) (--max-mms-time[=N])</p> cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="7%"> <p>-cN</p> </td> -<td width="1%"></td> +<td width="2%"></td> <td width="77%"> <p>number of multiple connections (*c8) (--sockets[=N])</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="7%"> <p>-TN</p> </td> -<td width="1%"></td> +<td width="2%"></td> <td width="77%"> <p>timeout, number of seconds after a non-responding link @@ -552,11 +565,11 @@ is shutdown (--timeout)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="7%"> <p>-RN</p> </td> -<td width="1%"></td> +<td width="2%"></td> <td width="77%"> <p>number of retries, in case of timeout or non-fatal @@ -564,11 +577,11 @@ errors (*R1) (--retries[=N])</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="7%"> <p>-JN</p> </td> -<td width="1%"></td> +<td width="2%"></td> <td width="77%"> <p>traffic jam control, minimum transfert rate @@ -576,11 +589,11 @@ errors (*R1) (--retries[=N])</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="7%"> <p>-HN</p> </td> -<td width="1%"></td> +<td width="2%"></td> <td width="77%"> <p>host is abandonned if: 0=never, 1=timeout, 2=slow, @@ -672,11 +685,11 @@ file (one scan rule per line) (--urllist <param>)</p> cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-NN</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>structure type (0 *original structure, 1+: see below) @@ -684,22 +697,22 @@ file (one scan rule per line) (--urllist <param>)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-or</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>user defined structure (-N "%h%p/%n%q.%t")</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-%N</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>delayed type check, don t make any link test but wait @@ -708,11 +721,11 @@ t use, %N1 use for unknown extensions, * %N2 always use)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-%D</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>cached delayed type check, don t wait for remote type @@ -721,11 +734,11 @@ during updates, to speedup them (%D0 wait, * %D1 don t wait) </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-%M</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>generate a RFC MIME-encapsulated full-archive (.mht) @@ -733,11 +746,11 @@ during updates, to speedup them (%D0 wait, * %D1 don t wait) </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-LN</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>long names (L1 *long names / L0 8-3 conversion / L2 @@ -745,11 +758,11 @@ ISO9660 compatible) (--long-names[=N])</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-KN</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>keep original links (e.g. http://www.adr/link) (K0 @@ -758,11 +771,11 @@ absolute URI links) (--keep-links[=N])</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-x</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>replace external html links by error pages @@ -770,11 +783,11 @@ absolute URI links) (--keep-links[=N])</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-%x</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>do not include any password for external password @@ -782,11 +795,11 @@ protected websites (%x0 include) (--disable-passwords)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-%q</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>*include query string for local files (useless, for @@ -795,11 +808,11 @@ information purpose only) (%q0 don t include) </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-o</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>*generate output html file in case of error (404..) (o0 @@ -807,11 +820,11 @@ don t generate) (--generate-errors)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-X</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>*purge old files after update (X0 keep delete) @@ -819,11 +832,11 @@ don t generate) (--generate-errors)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-%p</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>preserve html files as is (identical to -K4 -%F @@ -843,11 +856,11 @@ don t generate) (--generate-errors)</p> cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-bN</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>accept cookies in cookies.txt (0=do not accept,* @@ -855,11 +868,11 @@ don t generate) (--generate-errors)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-u</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>check document type if unknown (cgi,asp..) (u0 don t @@ -868,23 +881,24 @@ check, * u1 check but /, u2 check always) </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-j</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> -<p>*parse Java Classes (j0 don t parse) -(--parse-java[=N])</p> +<p>*parse Java Classes (j0 don t parse, bitmask: |1 parse +default, |2 don t parse .class |4 don t parse .js |8 don t +be aggressive) (--parse-java[=N])</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-sN</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>follow robots.txt and meta robots tags @@ -893,11 +907,11 @@ rules)) (--robots[=N])</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-%h</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>force HTTP/1.0 requests (reduce update features, only @@ -905,11 +919,11 @@ for old servers or proxies) (--http-10)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-%k</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>use keep-alive if possible, greately reducing latency @@ -918,11 +932,11 @@ for small files and test requests (%k0 don t use) </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-%B</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>tolerant requests (accept bogus responses on some @@ -930,11 +944,11 @@ servers, but not standard!) (--tolerant)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-%s</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>update hacks: various hacks to limit re-transfers when @@ -943,11 +957,11 @@ updating (identical size, bogus response..) </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-%u</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>url hacks: various hacks to limit duplicate URLs (strip @@ -955,11 +969,11 @@ updating (identical size, bogus response..) </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-%A</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>assume that a type (cgi,asp..) is always linked with a @@ -968,11 +982,11 @@ mime type (-%A php3,cgi=text/html;dat,bin=application/x-zip) </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-can</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>also be used to force a specific file type: --assume @@ -980,16 +994,28 @@ foo.cgi=text/html</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="8%"> <p>-@iN</p> </td> -<td width="2%"></td> +<td width="1%"></td> <td width="77%"> <p>internet protocol (0=both ipv6+ipv4, 4=ipv4 only, 6=ipv6 only) (--protocol[=N])</p> </td> +<tr valign="top" align="left"> +<td width="11%"></td> +<td width="8%"> + +<p>-%w</p> +</td> +<td width="1%"></td> +<td width="77%"> + +<p>disable a specific external mime module (-%w htsswf -%w +htsjava) (--disable-module <param>)</p> +</td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" @@ -1495,7 +1521,7 @@ make) (--search-index)</p> <td width="2%"></td> <td width="77%"> -<p>cache repair (damaged cache) (--debug-oldftp)</p> +<p>cache repair (damaged cache) (--repair-cache)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> @@ -1612,7 +1638,7 @@ make) (--search-index)</p> <td width="1%"></td> <td width="77%"> -<p>old FTP routines (debug) (--debug-oldftp)</p> +<p>old FTP routines (debug) (--repair-cache)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> @@ -1768,8 +1794,7 @@ smith) (--user <param>)</p> <td width="77%"> <p>use an external library function as a wrapper (-%W -link-detected=foo.so:myfunction[,myparameters]) (--callback -<param>)</p> +myfoo.so[,myparameters]) (--callback <param>)</p> </td> </table> <!-- INDENTATION --> @@ -1782,58 +1807,53 @@ link-detected=foo.so:myfunction[,myparameters]) (--callback </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" - cols="4" cellspacing="0" cellpadding="0"> + cols="3" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N0</p> </td> -<td width="1%"></td> <td width="77%"> <p>Site-structure (default)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N1</p> </td> -<td width="1%"></td> <td width="77%"> <p>HTML in web/, images/other files in web/images/</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N2</p> </td> -<td width="1%"></td> <td width="77%"> <p>HTML in web/HTML, images/other in web/images</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N3</p> </td> -<td width="1%"></td> <td width="77%"> <p>HTML in web/, images/other in web/</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N4</p> </td> -<td width="1%"></td> <td width="77%"> <p>HTML in web/, images/other in web/xxx, where xxx is the @@ -1842,44 +1862,40 @@ example)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N5</p> </td> -<td width="1%"></td> <td width="77%"> <p>Images/other in web/xxx and HTML in web/HTML</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N99</p> </td> -<td width="1%"></td> <td width="77%"> <p>All files in web/, with random names (gadget !)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N100</p> </td> -<td width="1%"></td> <td width="77%"> <p>Site-structure, without www.domain.xxx/</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N101</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N1 exept that "web" is replaced @@ -1887,11 +1903,10 @@ by the site s name</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N102</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N2 exept that "web" is replaced @@ -1899,11 +1914,10 @@ by the site s name</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N103</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N3 exept that "web" is replaced @@ -1911,11 +1925,10 @@ by the site s name</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N104</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N4 exept that "web" is replaced @@ -1923,11 +1936,10 @@ by the site s name</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N105</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N5 exept that "web" is replaced @@ -1935,11 +1947,10 @@ by the site s name</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N199</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N99 exept that "web" is replaced @@ -1947,11 +1958,10 @@ by the site s name</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N1001</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N1 exept that there is no "web" @@ -1959,11 +1969,10 @@ directory</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N1002</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N2 exept that there is no "web" @@ -1971,11 +1980,10 @@ directory</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N1003</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N3 exept that there is no "web" @@ -1983,11 +1991,10 @@ directory (option set for g option)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N1004</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N4 exept that there is no "web" @@ -1995,11 +2002,10 @@ directory</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N1005</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N5 exept that there is no "web" @@ -2007,11 +2013,10 @@ directory</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>-N1099</p> </td> -<td width="1%"></td> <td width="77%"> <p>Identical to N99 exept that there is no "web" @@ -2171,11 +2176,11 @@ be empty</p> cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-K0</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>foo.cgi?q=45 -> foo4B54.html?q=45 (relative URI, @@ -2183,11 +2188,11 @@ default)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-K</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>-> http://www.foobar.com/folder/foo.cgi?q=45 @@ -2195,22 +2200,22 @@ default)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-K4</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>-> foo.cgi?q=45 (original URL)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="7%"> +<td width="5%"> <p>-K3</p> </td> -<td width="2%"></td> +<td width="4%"></td> <td width="77%"> <p>-> /folder/foo.cgi?q=45 (absolute URI)</p> @@ -2243,14 +2248,13 @@ default)</p> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" - cols="4" cellspacing="0" cellpadding="0"> + cols="3" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>--get</p> </td> -<td width="1%"></td> <td width="77%"> <p><URLs> get the files indicated, do not seek other @@ -2258,11 +2262,10 @@ URLs (-qg)</p> </td> <tr valign="top" align="left"> <td width="11%"></td> -<td width="8%"> +<td width="10%"> <p>--list</p> </td> -<td width="1%"></td> <td width="77%"> <p><text file> add all URL located in this text file @@ -2457,264 +2460,7 @@ prototypes</b></p></td> <tr valign="top" align="left"> <td width="4%"></td> <td width="95%"> -<p><b>init : void (* myfunction)(void);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>free : void (* myfunction)(void);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>start : int (* myfunction)(httrackp* -opt);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>end : int (* myfunction)(void);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>change-options : int (* myfunction)(httrackp* -opt);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>preprocess-html : int (* myfunction)(char** html,int* -len,char* url</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>adresse,char* url fichier);</p> -</td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>postprocess-html : int (* myfunction)(char** html,int* -len,char* url</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>adresse,char* url fichier);</p> -</td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>check-html : int (* myfunction)(char* html,int -len,char* url</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>adresse,char* url fichier);</p> -</td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>query : char* (* myfunction)(char* -question);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>query2 : char* (* myfunction)(char* -question);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>query3 : char* (* myfunction)(char* -question);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>loop : int (* myfunction)(lien</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>back* back,int back max,int back index,int lien tot,int -lien ntot,int stat time,hts stat struct* stats);</p> -</td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>check-link : int (* myfunction)(char* adr,char* -fil,int status);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>pause : void (* myfunction)(char* -lockfile);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>save-file : void (* myfunction)(char* -file);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>save-file2 : void (* myfunction)(char* hostname,char* -filename,char* localfile,int is</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>new,int is modified);</p> -</td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>link-detected : int (* myfunction)(char* -link);</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>link-detected2 : int (* myfunction)(char* link, char* -start</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>tag);</p> -</td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>transfer-status : int (* myfunction)(lien</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>back* back);</p> -</td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>save-name : int (* myfunction)(char* adr</b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>complete,char* fil complete,char* referer adr,char* -referer fil,char* save);</p> -</td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="4%"></td> -<td width="95%"> -<p><b>And <wrappername></b></p></td> -</table> -<!-- INDENTATION --> -<table width="100%" border=0 rules="none" frame="void" - cols="2" cellspacing="0" cellpadding="0"> -<tr valign="top" align="left"> -<td width="10%"></td> -<td width="89%"> -<p>init() functions if defined, called upon plug</p> -</td> +<p><b>see htsdefines.h</b></p></td> </table> <a name="FILES"></a> <h2>FILES</h2> diff --git a/html/index.html b/html/index.html index 993e9fc..a393563 100644 --- a/html/index.html +++ b/html/index.html @@ -142,7 +142,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/library.html b/html/library.html index 2b61131..4d555bc 100755 --- a/html/library.html +++ b/html/library.html @@ -125,7 +125,7 @@ You may also want to check the <tt>httrack.c</tt> and <tt>httrack.h<tt> files to <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/options.html b/html/options.html index 4f552a9..f59b941 100644 --- a/html/options.html +++ b/html/options.html @@ -352,7 +352,7 @@ Add debug informations on log files <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/overview.html b/html/overview.html index 934d992..7cd28c8 100644 --- a/html/overview.html +++ b/html/overview.html @@ -145,7 +145,7 @@ downloads. HTTrack is fully configurable, and has an integrated help system. <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/plug.html b/html/plug.html index 42b0895..1b82c46 100755 --- a/html/plug.html +++ b/html/plug.html @@ -108,85 +108,215 @@ We'll see there some examples. <br><br> -The <tt>httrack</tt> commandline tool allows (since the 3.30 release) to plug external functions to various callbacks defined in httrack.<br>
-See also: the <tt>httrack-library.h</tt> prototype file, and the <tt>callbacks-example.c</tt> given in the httrack archive.<br>
+The <tt>httrack</tt> commandline tool allows (since the 3.30 release) to plug external functions to various callbacks defined in httrack.
+The 3.41 release introduces a cleaned up verion of callbacks, with two major changes:
+<ul>
+<li>Cleaned up function prototypes, with two arguments always passed (the caller carg structure, and the httrackp* object), convenient to pass an user-defined pointer (see <tt>CALLBACKARG_USERDEF(carg)</tt>)</li>
+<li>The httrackp* option structure can be directly accessed to plug callbacks (no need to give the callback name and function name in the commandline!)</li>
+<li>The callback plug is made through the CHAIN_FUNCTION() helper, allowing to chain multiple callbacks of the same type (the callbacks MUST preserve the chain by calling ancestors)</li>
+</ul>
<br>
+References:
+<ul>
+<li>the <tt>httrack-library.h</tt> prototype file
+<br />
+Note: the <i>Initialization</i>, <i>Main functions</i>, <i>Options handling</i> and <i>Wrapper functions</i> sections are generally the only ones to be considered. +</li> +<li>the <tt>htsdefines.h</tt> prototype file, which describes callback function prototypes</li>
+<li>the <tt>htsopt.h</tt> prototype file, which describes the full httrackp* structure</li>
+<li>the <tt>callbacks-example*.c</tt> files given in the httrack archive</li>
+<li>the <tt>htsjava.c</tt> source file (the java class plugin ; overrides 'detect' and 'parse')</li>
+<li>the example given at the end of this document</li>
+</ul>
+
+<br />
+Below the list of functions to be defined in the module (plugin).<br />
+<br />
+
+<table width="100%">
+<tr><td><b><i>module function name</i></b></td><td><b>function description</b></td><td><b>function signature</b></td></tr>
+<tr><td background="img/fade.gif"><i>hts_plug</i></td><td background="img/fade.gif">
+The module entry point. The opt structure can be used to plug callbacks, using the CHAIN_FUNCTION() macro helper. The argv optional argument is the one passed in the commandline as --wrapper parameter.<br>return value: 1 upon success, 0 upon error (the mirror will then be aborted)<br />
+
+<br />
+Wrappers can be plugged inside hts_plug() using:<br />
+<tt>
+CHAIN_FUNCTION(opt, <callback name>, <our callback function name>, <our callback function optional custom pointer argument>);
+</tt>
+<br />
+
+<br />
Example:
+<br />
<tt>
-httrack --wrapper check-html=callback:process_file ..
+CHAIN_FUNCTION(opt, check_html, process, userdef);
</tt>
-<br>
-With the callback.so (or callback.dll) module defined as below:
+<br />
-<pre>
-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 */
-}
-</pre>
+</td><td background="img/fade.gif"><tt>extern int hts_plug(httrackp *opt, const char* argv);</tt></td></tr>
+
+<!-- -->
+
+<tr><td background="img/fade.gif"><i>hts_unplug</i></td><td background="img/fade.gif">
+The module exit point. To free allocated resources without using global variables, use the uninit callback (see below)</td><td background="img/fade.gif"><tt>extern int hts_unplug(httrackp *opt);</tt></td></tr>
+
+</table>
-Below the list of callbacks, and associated external wrappers:<br>
+
+<br />
+Note that all callbacks (except init and uninit) take as first two argument:
+<ul>
+<li>the t_hts_callbackarg structure<br />
+this structure holds the callback chain (parent callbacks defined before the current callback) pointers, and the user-defined pointer ; see <tt>CALLBACKARG_USERDEF(carg)</tt>)
+</li>
+<li>the httrackp structure<br />
+this structure, holding all current httrack options and mirror state, can be read or mofidied
+</li>
+</ul>
+
+<br />
+Below the list of callbacks, and associated external wrappers.
<table width="100%">
-<tr><td><b>"<i>callback name</i>"</b></td><td><b>callback description</b></td><td><b>callback function signature</b></td></tr>
-
-<tr><td background="img/fade.gif">"<i>init</i>"</td><td background="img/fade.gif"><font color="red">Note: deprecated, should not be used anymore (unsafe callback) - see "start" callback or wrapper_init() module function below this table.</font>Called during initialization ; use of htswrap_add (see <tt>httrack-library.h</tt>) is permitted inside this function to setup other callbacks.<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(void);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>free</i>"</td><td background="img/fade.gif"><font color="red">Note: deprecated, should not be used anymore (unsafe callback) - see "end" callback or wrapper_exit() module function below this table.</font><br />Called during un-initialization<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(void);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>start</i>"</td><td background="img/fade.gif">Called when the mirror starts. The <tt>opt</tt> structure passed lists all options defined for this mirror. You may modify the <tt>opt</tt> structure to fit your needs. Besides, use of htswrap_add (see <tt>httrack-library.h</tt>) is permitted inside this function to setup other callbacks.<br>return value: 1 upon success, 0 upon error (the mirror will then be aborted)</td><td background="img/fade.gif"><tt>int (* myfunction)(httrackp* opt);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>end</i>"</td><td background="img/fade.gif">Called when the mirror ends<br>return value: 1 upon success, 0 upon error (the mirror will then be considered aborted)</td><td background="img/fade.gif"><tt>int (* myfunction)(void);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>change-options</i>"</td><td background="img/fade.gif">Called when options are to be changed. The <tt>opt</tt> structure passed lists all options, updated to take account of recent changes<br>return value: 1 upon success, 0 upon error (the mirror will then be aborted)</td><td background="img/fade.gif"><tt>int (* myfunction)(httrackp* opt);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>check-html</i>"</td><td background="img/fade.gif">Called when a document (which may not be an html document) is to be parsed. The <tt>html</tt> address points to the document data, of lenth <tt>len</tt>. The <tt>url_adresse</tt> and <tt>url_fichier</tt> are the address and URI of the file being processed<br>return value: 1 if the parsing can be processed, 0 if the file must be skipped without being parsed</td><td background="img/fade.gif"><tt>int (* myfunction)(char* html,int len,char* url_adresse,char* url_fichier);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>preprocess-html</i>"</td><td background="img/fade.gif">Called when a document (which is an html document) is to be parsed (original, not yet modified document). The <tt>html</tt> address points to the document data address (char**), and the <tt>length</tt> address points to the lenth of this document. Both pointer values (address and size) can be modified to change the document. It is up to the callback function to reallocate the given pointer (using standard C library realloc()/free() functions), which will be free()'ed by the engine. Hence, return of static buffers is strictly forbidden, and the use of strdup() in such cases is advised. The <tt>url_adresse</tt> and <tt>url_fichier</tt> are the address and URI of the file being processed<br>return value: 1 if the new pointers can be applied (default value)</td><td background="img/fade.gif"><tt>int (* myfunction)(char** html,int* len,char* url_adresse,char* url_fichier);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>postprocess-html</i>"</td><td background="img/fade.gif">Called when a document (which is an html document) is parsed and transformed (links rewritten). The <tt>html</tt> address points to the document data address (char**), and the <tt>length</tt> address points to the lenth of this document. Both pointer values (address and size) can be modified to change the document. It is up to the callback function to reallocate the given pointer (using standard C library realloc()/free() functions), which will be free()'ed by the engine. Hence, return of static buffers is strictly forbidden, and the use of strdup() in such cases is advised. The <tt>url_adresse</tt> and <tt>url_fichier</tt> are the address and URI of the file being processed<br>return value: 1 if the new pointers can be applied (default value)</td><td background="img/fade.gif"><tt>int (* myfunction)(char** html,int* len,char* url_adresse,char* url_fichier);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>query</i>"</td><td background="img/fade.gif">Called when the wizard needs to ask a question. The <tt>question</tt> string contains the question for the (human) user<br>return value: the string answer ("" for default reply)</td><td background="img/fade.gif"><tt>char* (* myfunction)(char* question);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>query2</i>"</td><td background="img/fade.gif">Called when the wizard needs to ask a question</td><td background="img/fade.gif"><tt>char* (* myfunction)(char* question);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>query3</i>"</td><td background="img/fade.gif">Called when the wizard needs to ask a question</td><td background="img/fade.gif"><tt>char* (* myfunction)(char* question);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>loop</i>"</td><td background="img/fade.gif">Called periodically (informational, to display statistics)<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int (* myfunction)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,hts_stat_struct* stats);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>check-link</i>"</td><td background="img/fade.gif">Called when a link has to be tested. The <tt>adr</tt> and <tt>fil</tt> are the address and URI of the link being tested. The passed <tt>status</tt> 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<br>return value: same meaning as the passed <tt>status</tt> value ; you may generally return -1 to let the engine take the decision by itself</td><td background="img/fade.gif"><tt>int (* myfunction)(char* adr,char* fil,int status);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>check-mime</i>"</td><td background="img/fade.gif">Called when a link download has begun, and needs to be tested against its MIME type. The <tt>adr</tt> and <tt>fil</tt> are the address and URI of the link being tested, and the <tt>mime</tt> string contains the link type being processed. The passed <tt>status</tt> 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<br>return value: same meaning as the passed <tt>status</tt> value ; you may generally return -1 to let the engine take the decision by itself</td><td background="img/fade.gif"><tt>int (* myfunction)(char* adr,char* fil,char* mime,int status);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>pause</i>"</td><td background="img/fade.gif">Called when the engine must pause. When the <tt>lockfile</tt> passed is deleted, the function can return<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(char* lockfile);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>save-file</i>"</td><td background="img/fade.gif">Called when a file is to be saved on disk<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(char* file);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>save-file2</i>"</td><td background="img/fade.gif">Called when a file is to be saved or checked on disk<br>The hostname, filename and local filename are given. Two additional flags tells if the file is new (is_new) and is the file is to be modified (is_modified).<br>(!is_new && !is_modified): the file is up-to-date, and will not be modified<br>(is_new && is_modified): a new file will be written (or an updated file is being written)<br>(!is_new && is_modified): a file is being updated (append)<br>(is_new && !is_modified): an empty file will be written ("do not recatch locally erased files")<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(char* hostname,char* filename,char* localfile,int is_new,int is_modified);</tt></td></tr>
-
-typedef void (* t_hts_htmlcheck_filesave2)(); -
-
-<tr><td background="img/fade.gif">"<i>link-detected</i>"</td><td background="img/fade.gif">Called when a link has been detected<br>return value: 1 if the link can be analyzed, 0 if the link must not even be considered</td><td background="img/fade.gif"><tt>int (* myfunction)(char* link);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>transfer-status</i>"</td><td background="img/fade.gif">Called when a file has been processed (downloaded, updated, or error)<br>return value: must return 1</td><td background="img/fade.gif"><tt>int (* myfunction)(lien_back* back);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>save-name</i>"</td><td background="img/fade.gif">Called when a local filename has to be processed. The <tt>adr_complete</tt> and <tt>fil_complete</tt> are the address and URI of the file being saved ; the <tt>referer_adr</tt> and <tt>referer_fil</tt> are the address and URI of the referer link. The <tt>save</tt> string contains the local filename being used. You may modifiy the <tt>save</tt> 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 ..).<br>return value: must return 1</td><td background="img/fade.gif"><tt>int (* myfunction)(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>send-header</i>"</td><td background="img/fade.gif">Called when HTTP headers are to be sent to the remote server. The <tt>buff</tt> buffer contains text headers, <tt>adr</tt> and <tt>fil</tt> the URL, and <tt>referer_adr</tt> and <tt>referer_fil</tt> the referer URL. The <tt>outgoing</tt> structure contains all information related to the current slot.<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int (* myfunction)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* outgoing);</tt></td></tr>
-<tr><td background="img/fade.gif">"<i>receive-header</i>"</td><td background="img/fade.gif">Called when HTTP headers are recevived from the remote server. The <tt>buff</tt> buffer contains text headers, <tt>adr</tt> and <tt>fil</tt> the URL, and <tt>referer_adr</tt> and <tt>referer_fil</tt> the referer URL. The <tt>incoming</tt> structure contains all information related to the current slot.<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int (* myfunction)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* incoming);</tt></td></tr>
+<tr><td><b><i>callback name</i></b></td><td><b>callback description</b></td><td><b>callback function signature</b></td></tr>
+
+<tr><td background="img/fade.gif"><i>init</i></td><td background="img/fade.gif">Note: the use the "start" callback is advised. Called during initialization.<br>return value: none</td><td background="img/fade.gif"><tt>void mycallback(t_hts_callbackarg *carg);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>uninit</i></td><td background="img/fade.gif">Note: the use os the "end" callback is advised.<br />Called during un-initialization<br>return value: none</td><td background="img/fade.gif"><tt>void mycallback(t_hts_callbackarg *carg);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>start</i></td><td background="img/fade.gif">Called when the mirror starts. The <tt>opt</tt> structure passed lists all options defined for this mirror. You may modify the <tt>opt</tt> structure to fit your needs.<br>return value: 1 upon success, 0 upon error (the mirror will then be aborted)</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>end</i></td><td background="img/fade.gif">Called when the mirror ends<br>return value: 1 upon success, 0 upon error (the mirror will then be considered aborted)</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>chopt</i></td><td background="img/fade.gif">Called when options are to be changed. The <tt>opt</tt> structure passed lists all options, updated to take account of recent changes<br>return value: 1 upon success, 0 upon error (the mirror will then be aborted)</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>preprocess</i></td><td background="img/fade.gif">Called when a document (which is an html document) is to be parsed (original, not yet modified document). The <tt>html</tt> address points to the document data address (char**), and the <tt>length</tt> address points to the lenth of this document. Both pointer values (address and size) can be modified to change the document. It is up to the callback function to reallocate the given pointer (using the hts_realloc()/hts_free() library functions), which will be free()'ed by the engine. Hence, return of static buffers is strictly forbidden, and the use of hts_strdup() in such cases is advised. The <tt>url_address</tt> and <tt>url_file</tt> are the address and URI of the file being processed<br>return value: 1 if the new pointers can be applied (default value)</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, char** html, int* len, const char* url_address, const char* url_file);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>postprocess</i></td><td background="img/fade.gif">Called when a document (which is an html document) is parsed and transformed (links rewritten). The <tt>html</tt> address points to the document data address (char**), and the <tt>length</tt> address points to the lenth of this document. Both pointer values (address and size) can be modified to change the document. It is up to the callback function to reallocate the given pointer (using the hts_realloc()/hts_free() library functions), which will be free()'ed by the engine. Hence, return of static buffers is strictly forbidden, and the use of hts_strdup() in such cases is advised. The <tt>url_address</tt> and <tt>url_file</tt> are the address and URI of the file being processed<br>return value: 1 if the new pointers can be applied (default value)</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, char** html, int* len, const char* url_address, const char* url_file);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>check_html</i></td><td background="img/fade.gif">Called when a document (which may not be an html document) is to be parsed. The <tt>html</tt> address points to the document data, of lenth <tt>len</tt>. The <tt>url_address</tt> and <tt>url_file</tt> are the address and URI of the file being processed<br>return value: 1 if the parsing can be processed, 0 if the file must be skipped without being parsed</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, char* html, int len, const char* url_address, const char* url_file);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>query</i></td><td background="img/fade.gif">Called when the wizard needs to ask a question. The <tt>question</tt> string contains the question for the (human) user<br>return value: the string answer ("" for default reply)</td><td background="img/fade.gif"><tt>const char* mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* question);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>query2</i></td><td background="img/fade.gif">Called when the wizard needs to ask a question</td><td background="img/fade.gif"><tt>const char* mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* question);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>query3</i></td><td background="img/fade.gif">Called when the wizard needs to ask a question</td><td background="img/fade.gif"><tt>const char* mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* question);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>loop</i></td><td background="img/fade.gif">Called periodically (informational, to display statistics)<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, lien_back* back, int back_max, int back_index, int lien_tot, int lien_ntot, int stat_time, hts_stat_struct* stats);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>check_link</i></td><td background="img/fade.gif">Called when a link has to be tested. The <tt>adr</tt> and <tt>fil</tt> are the address and URI of the link being tested. The passed <tt>status</tt> 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<br>return value: same meaning as the passed <tt>status</tt> value ; you may generally return -1 to let the engine take the decision by itself</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* adr, const char* fil, int status);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>check_mime</i></td><td background="img/fade.gif">Called when a link download has begun, and needs to be tested against its MIME type. The <tt>adr</tt> and <tt>fil</tt> are the address and URI of the link being tested, and the <tt>mime</tt> string contains the link type being processed. The passed <tt>status</tt> 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<br>return value: same meaning as the passed <tt>status</tt> value ; you may generally return -1 to let the engine take the decision by itself</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* adr, const char* fil, const char* mime, int status);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>pause</i></td><td background="img/fade.gif">Called when the engine must pause. When the <tt>lockfile</tt> passed is deleted, the function can return<br>return value: none</td><td background="img/fade.gif"><tt>void mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* lockfile);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>filesave</i></td><td background="img/fade.gif">Called when a file is to be saved on disk<br>return value: none</td><td background="img/fade.gif"><tt>void mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* file);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>filesave2</i></td><td background="img/fade.gif">Called when a file is to be saved or checked on disk<br>The hostname, filename and local filename are given. Two additional flags tells if the local file is new (is_new), if the local file is to be modified (is_modified), and if the file was not updated remotely (not_updated).<br>(!is_new && !is_modified): the file is up-to-date, and will not be modified<br>(is_new && is_modified): a new file will be written (or an updated file is being written)<br>(!is_new && is_modified): a file is being updated (append)<br>(is_new && !is_modified): an empty file will be written ("do not recatch locally erased files")<br>not_updated: the file was not re-downloaded because it was up-to-date (no data transfered again)<br><br>return value: none</td><td background="img/fade.gif"><tt>void mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* hostname, const char* filename, const char* localfile, int is_new, int is_modified, int not_updated);</tt></td></tr>
+
+<tr><td background="img/fade.gif"><i>linkdetected</i></td><td background="img/fade.gif">Called when a link has been detected<br>return value: 1 if the link can be analyzed, 0 if the link must not even be considered</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, char* link);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>linkdetected2</i></td><td background="img/fade.gif">Called when a link has been detected<br>return value: 1 if the link can be analyzed, 0 if the link must not even be considered</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, char* link, const const char* tag_start);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>xfrstatus</i></td><td background="img/fade.gif">Called when a file has been processed (downloaded, updated, or error)<br>return value: must return 1</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, lien_back* back);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>savename</i></td><td background="img/fade.gif">Called when a local filename has to be processed. The <tt>adr_complete</tt> and <tt>fil_complete</tt> are the address and URI of the file being saved ; the <tt>referer_adr</tt> and <tt>referer_fil</tt> are the address and URI of the referer link. The <tt>save</tt> string contains the local filename being used. You may modifiy the <tt>save</tt> 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 ..).<br>return value: must return 1</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>sendhead</i></td><td background="img/fade.gif">Called when HTTP headers are to be sent to the remote server. The <tt>buff</tt> buffer contains text headers, <tt>adr</tt> and <tt>fil</tt> the URL, and <tt>referer_adr</tt> and <tt>referer_fil</tt> the referer URL. The <tt>outgoing</tt> structure contains all information related to the current slot.<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* outgoing);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>receivehead</i></td><td background="img/fade.gif">Called when HTTP headers are recevived from the remote server. The <tt>buff</tt> buffer contains text headers, <tt>adr</tt> and <tt>fil</tt> the URL, and <tt>referer_adr</tt> and <tt>referer_fil</tt> the referer URL. The <tt>incoming</tt> structure contains all information related to the current slot.<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* incoming);</tt></td></tr>
+
+<tr><td background="img/fade.gif"><i>detect</i></td><td background="img/fade.gif">Called when an unknown document is to be parsed. The <tt>str</tt> structure contains all information related to the document.<br>return value: 1 if the type is known and can be parsed, 0 if the document type is unknown</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, htsmoduleStruct* str);</tt></td></tr>
+<tr><td background="img/fade.gif"><i>parse</i></td><td background="img/fade.gif">The <tt>str</tt> structure contains all information related to the document.<br>return value: 1 if the document was successfully parsed, 0 if an error occured</td><td background="img/fade.gif"><tt>int mycallback(t_hts_callbackarg *carg, httrackp* opt, htsmoduleStruct* str);</tt></td></tr>
+
</table>
<br><br> -Below additional function names that can be defined inside the module (DLL/.so):<br>
- -<table width="100%" ID="Table1">
-<tr><td><b>"<i>module function name</i>"</b></td><td><b>function description</b></td></tr>
+Note: the optional libhttrack-plugin module (libhttrack-plugin.dll or libhttrack-plugin.so), if found in the library environment, is loaded automatically, and its <tt>hts_plug()</tt> function being called.<br />
-<tr><td background="img/fade.gif"><i>int <b>function-name</b>_init(char *args);</i></td><td background="img/fade.gif">Called when a function named <b>function-name</b> is extracted from the current module (same as wrapper_init). The optional <tt>args</tt> provides additional commandline parameters. Returns 1 upon success, 0 if the function should not be extracted.</td></tr>
-<tr><td background="img/fade.gif"><i>int wrapper_init(char *fname, char *args);</i></td><td background="img/fade.gif">Called when a function named <tt>fname</tt> is extracted from the current module. The optional <tt>args</tt> provides additional commandline parameters. Besides, use of htswrap_add (see <tt>httrack-library.h</tt>) is permitted inside this function to setup other callbacks. Returns 1 upon success, 0 if the function should not be extracted.</td></tr>
-<tr><td background="img/fade.gif"><i>int wrapper_exit(void);</i></td><td background="img/fade.gif">Called when the module is unloaded. The function should return 1 (but the result is ignored).</td></tr>
-</table> - -<br><br> -Below additional function names that can be defined inside the optional libhttrack-plugin module (libhttrack-plugin.dll or libhttrack-plugin.so) searched inside common library path:<br>
- -<table width="100%" ID="Table2">
-<tr><td><b>"<i>module function name</i>"</b></td><td><b>function description</b></td></tr>
+<br />
+An example is generally more efficient than anything else, so let's write our first module, aimed to stupidely print all parsed html files:
+<table width="100%" border="2">
+<tr><td>
+<pre>
+/* system includes */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* standard httrack module includes */
+#include "httrack-library.h"
+#include "htsopt.h"
+#include "htsdefines.h"
+
+/* local function called as "check_html" callback */
+static int process_file(t_hts_callbackarg /*the carg structure, holding various information*/*carg, /*the option settings*/httrackp *opt,
+ /*other parameters are callback-specific*/
+ char* html, int len, const char* url_address, const char* url_file) {
+ void *ourDummyArg = (void*) CALLBACKARG_USERDEF(carg); /*optional user-defined arg*/
+
+ /* call parent functions if multiple callbacks are chained. you can skip this part, if you don't want previous callbacks to be called. */
+ if (CALLBACKARG_PREV_FUN(carg, check_html) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, check_html)(CALLBACKARG_PREV_CARG(carg), opt,
+ html, len, url_address, url_file)) {
+ return 0; /* abort */
+ }
+ }
+
+ printf("file %s%s content: %s\n", url_address, url_file, html);
+ return 1; /* success */
+}
+
+/* local function called as "end" callback */
+static int end_of_mirror(t_hts_callbackarg /*the carg structure, holding various information*/*carg, /*the option settings*/httrackp *opt) {
+ void *ourDummyArg = (void*) CALLBACKARG_USERDEF(carg); /*optional user-defined arg*/
+
+ /* processing */
+ fprintf(stderr, "That's all, folks!\n");
+
+ /* call parent functions if multiple callbacks are chained. you can skip this part, if you don't want previous callbacks to be called. */
+ if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
+ /* status is ok on our side, return other callabck's status */
+ return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
+ }
+
+ return 1; /* success */
+}
+
+/*
+module entry point
+the function name and prototype MUST match this prototype
+*/
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
+ /* optional argument passed in the commandline we won't be using here */
+ const char *arg = strchr(argv, ',');
+ if (arg != NULL)
+ arg++;
+
+ /* plug callback functions */
+ CHAIN_FUNCTION(opt, check_html, process_file, /*optional user-defined arg*/NULL);
+ CHAIN_FUNCTION(opt, end, end_of_mirror, /*optional user-defined arg*/NULL);
+
+ return 1; /* success */
+}
+
+/*
+module exit point
+the function name and prototype MUST match this prototype
+*/
+EXTERNAL_FUNCTION int hts_unplug(httrackp *opt) {
+ fprintf(stder, "Module unplugged");
+
+ return 1; /* success */
+}
+</pre>
+</td></tr></table>
+
+<br />
+Compile this file ; for example:
+<br />
+<tt>
+gcc -O -g3 -shared -o mylibrary.so myexample.c
+</tt>
+<br />
+and plug the module using the commandline ; for example:
+<br />
+<tt>
+httrack --wrapper mylibrary http://www.example.com
+</tt>
+<br />
+or, if some parameters are desired:
+<br />
+<tt>
+httrack --wrapper mylibrary,myparameter-string http://www.example.com
+</tt>
+<br />
+(the "myparameter-string" string will be available in the 'arg' parameter passed to the hts_plug entry point)
+<br />
-<tr><td background="img/fade.gif"><i>void plugin_init(void);</i></td><td background="img/fade.gif">Called if the module (named libhttrack-plugin.(so|dll)) is found in the library path. Use of htswrap_add (see <tt>httrack-library.h</tt>) is permitted inside this function to setup other callbacks.</td></tr>
- -</table> - -<br><br> - <br><br> <!-- ==================== Start epilogue ==================== --> @@ -202,7 +332,7 @@ Below additional function names that can be defined inside the optional libhttra <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/plug_330.html b/html/plug_330.html new file mode 100644 index 0000000..d2b7ffb --- /dev/null +++ b/html/plug_330.html @@ -0,0 +1,215 @@ +<html xmlns="http://www.w3.org/1999/xhtml" lang="en"> + +<head> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> + <meta name="description" content="HTTrack is an easy-to-use website mirror utility. It allows you to download a World Wide website from the Internet to a local directory,building recursively all structures, getting html, images, and other files from the server to your computer. Links are rebuiltrelatively so that you can freely browse to the local site (works with any browser). You can mirror several sites together so that you can jump from one toanother. You can, also, update an existing mirror site, or resume an interrupted download. The robot is fully configurable, with an integrated help" /> + <meta name="keywords" content="httrack, HTTRACK, HTTrack, winhttrack, WINHTTRACK, WinHTTrack, offline browser, web mirror utility, aspirateur web, surf offline, web capture, www mirror utility, browse offline, local site builder, website mirroring, aspirateur www, internet grabber, capture de site web, internet tool, hors connexion, unix, dos, windows 95, windows 98, solaris, ibm580, AIX 4.0, HTS, HTGet, web aspirator, web aspirateur, libre, GPL, GNU, free software" /> + <title>HTTrack Website Copier - Offline Browser</title> + + <style type="text/css"> + <!-- + +body { + margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px; + background: #77b; +} +body, td { + font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif; + } + +#subTitle { + background: #000; color: #fff; padding: 4px; font-weight: bold; + } + +#siteNavigation a, #siteNavigation .current { + font-weight: bold; color: #448; + } +#siteNavigation a:link { text-decoration: none; } +#siteNavigation a:visited { text-decoration: none; } + +#siteNavigation .current { background-color: #ccd; } + +#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, #siteNavigation { + background-color: #ccd; + } + + +.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; } +h4 { margin: 0; font-weight: bold; font-size: 1.18em; } + +.blak { background-color: #000; } +.hide { display: none; } +.tableWidth { min-width: 400px; } + +.tblRegular { border-collapse: collapse; } +.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; } +.tblHeaderColor, .tblHeaderColor td { background: #99c; } +.tblNoBorder td { border: 0; } + + +// --> +</style> + +</head> + +<table width="76%" border="0" align="center" cellspacing="0" cellpadding="0" class="tableWidth"> + <tr> + <td><img src="images/header_title_4.gif" width="400" height="34" alt="HTTrack Website Copier" title="" border="0" id="title" /></td> + </tr> +</table> +<table width="76%" border="0" align="center" cellspacing="0" cellpadding="3" class="tableWidth"> + <tr> + <td id="subTitle">Open Source offline browser</td> + </tr> +</table> +<table width="76%" border="0" align="center" cellspacing="0" cellpadding="0" class="tableWidth"> +<tr class="blak"> +<td> + <table width="100%" border="0" align="center" cellspacing="1" cellpadding="0"> + <tr> + <td colspan="6"> + <table width="100%" border="0" align="center" cellspacing="0" cellpadding="10"> + <tr> + <td id="pageContent"> +<!-- ==================== End prologue ==================== --> + +<h2 align="center"><em>HTTrack Programming page - plugging functions<br > +releases 3.30 to 3.40 (not beyond) +</em></h2> + +<br> + +You can write external functions to be plugged in the httrack library very easily.
+We'll see there some examples.
+ +<br><br> +
+The <tt>httrack</tt> commandline tool allows (since the 3.30 release) to plug external functions to various callbacks defined in httrack.<br>
+See also: the <tt>httrack-library.h</tt> prototype file, and the <tt>callbacks-example.c</tt> given in the httrack archive.<br>
+
+<br>
+Example:
+<tt>
+httrack --wrapper check-html=callback:process_file ..
+</tt>
+<br>
+With the callback.so (or callback.dll) module defined as below:
+
+<pre>
+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 */
+}
+</pre>
+
+Below the list of callbacks, and associated external wrappers:<br>
+
+<table width="100%">
+<tr><td><b>"<i>callback name</i>"</b></td><td><b>callback description</b></td><td><b>callback function signature</b></td></tr>
+
+<tr><td background="img/fade.gif">"<i>init</i>"</td><td background="img/fade.gif"><font color="red">Note: deprecated, should not be used anymore (unsafe callback) - see "start" callback or wrapper_init() module function below this table.</font>Called during initialization ; use of htswrap_add (see <tt>httrack-library.h</tt>) is permitted inside this function to setup other callbacks.<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(void);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>free</i>"</td><td background="img/fade.gif"><font color="red">Note: deprecated, should not be used anymore (unsafe callback) - see "end" callback or wrapper_exit() module function below this table.</font><br />Called during un-initialization<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(void);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>start</i>"</td><td background="img/fade.gif">Called when the mirror starts. The <tt>opt</tt> structure passed lists all options defined for this mirror. You may modify the <tt>opt</tt> structure to fit your needs. Besides, use of htswrap_add (see <tt>httrack-library.h</tt>) is permitted inside this function to setup other callbacks.<br>return value: 1 upon success, 0 upon error (the mirror will then be aborted)</td><td background="img/fade.gif"><tt>int (* myfunction)(httrackp* opt);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>end</i>"</td><td background="img/fade.gif">Called when the mirror ends<br>return value: 1 upon success, 0 upon error (the mirror will then be considered aborted)</td><td background="img/fade.gif"><tt>int (* myfunction)(void);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>change-options</i>"</td><td background="img/fade.gif">Called when options are to be changed. The <tt>opt</tt> structure passed lists all options, updated to take account of recent changes<br>return value: 1 upon success, 0 upon error (the mirror will then be aborted)</td><td background="img/fade.gif"><tt>int (* myfunction)(httrackp* opt);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>check-html</i>"</td><td background="img/fade.gif">Called when a document (which may not be an html document) is to be parsed. The <tt>html</tt> address points to the document data, of lenth <tt>len</tt>. The <tt>url_adresse</tt> and <tt>url_fichier</tt> are the address and URI of the file being processed<br>return value: 1 if the parsing can be processed, 0 if the file must be skipped without being parsed</td><td background="img/fade.gif"><tt>int (* myfunction)(char* html,int len,char* url_adresse,char* url_fichier);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>preprocess-html</i>"</td><td background="img/fade.gif">Called when a document (which is an html document) is to be parsed (original, not yet modified document). The <tt>html</tt> address points to the document data address (char**), and the <tt>length</tt> address points to the lenth of this document. Both pointer values (address and size) can be modified to change the document. It is up to the callback function to reallocate the given pointer (using standard C library realloc()/free() functions), which will be free()'ed by the engine. Hence, return of static buffers is strictly forbidden, and the use of strdup() in such cases is advised. The <tt>url_adresse</tt> and <tt>url_fichier</tt> are the address and URI of the file being processed<br>return value: 1 if the new pointers can be applied (default value)</td><td background="img/fade.gif"><tt>int (* myfunction)(char** html,int* len,char* url_adresse,char* url_fichier);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>postprocess-html</i>"</td><td background="img/fade.gif">Called when a document (which is an html document) is parsed and transformed (links rewritten). The <tt>html</tt> address points to the document data address (char**), and the <tt>length</tt> address points to the lenth of this document. Both pointer values (address and size) can be modified to change the document. It is up to the callback function to reallocate the given pointer (using standard C library realloc()/free() functions), which will be free()'ed by the engine. Hence, return of static buffers is strictly forbidden, and the use of strdup() in such cases is advised. The <tt>url_adresse</tt> and <tt>url_fichier</tt> are the address and URI of the file being processed<br>return value: 1 if the new pointers can be applied (default value)</td><td background="img/fade.gif"><tt>int (* myfunction)(char** html,int* len,char* url_adresse,char* url_fichier);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>query</i>"</td><td background="img/fade.gif">Called when the wizard needs to ask a question. The <tt>question</tt> string contains the question for the (human) user<br>return value: the string answer ("" for default reply)</td><td background="img/fade.gif"><tt>char* (* myfunction)(char* question);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>query2</i>"</td><td background="img/fade.gif">Called when the wizard needs to ask a question</td><td background="img/fade.gif"><tt>char* (* myfunction)(char* question);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>query3</i>"</td><td background="img/fade.gif">Called when the wizard needs to ask a question</td><td background="img/fade.gif"><tt>char* (* myfunction)(char* question);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>loop</i>"</td><td background="img/fade.gif">Called periodically (informational, to display statistics)<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int (* myfunction)(lien_back* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,hts_stat_struct* stats);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>check-link</i>"</td><td background="img/fade.gif">Called when a link has to be tested. The <tt>adr</tt> and <tt>fil</tt> are the address and URI of the link being tested. The passed <tt>status</tt> 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<br>return value: same meaning as the passed <tt>status</tt> value ; you may generally return -1 to let the engine take the decision by itself</td><td background="img/fade.gif"><tt>int (* myfunction)(char* adr,char* fil,int status);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>check-mime</i>"</td><td background="img/fade.gif">Called when a link download has begun, and needs to be tested against its MIME type. The <tt>adr</tt> and <tt>fil</tt> are the address and URI of the link being tested, and the <tt>mime</tt> string contains the link type being processed. The passed <tt>status</tt> 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<br>return value: same meaning as the passed <tt>status</tt> value ; you may generally return -1 to let the engine take the decision by itself</td><td background="img/fade.gif"><tt>int (* myfunction)(char* adr,char* fil,char* mime,int status);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>pause</i>"</td><td background="img/fade.gif">Called when the engine must pause. When the <tt>lockfile</tt> passed is deleted, the function can return<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(char* lockfile);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>save-file</i>"</td><td background="img/fade.gif">Called when a file is to be saved on disk<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(char* file);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>save-file2</i>"</td><td background="img/fade.gif">Called when a file is to be saved or checked on disk<br>The hostname, filename and local filename are given. Two additional flags tells if the file is new (is_new) and is the file is to be modified (is_modified).<br>(!is_new && !is_modified): the file is up-to-date, and will not be modified<br>(is_new && is_modified): a new file will be written (or an updated file is being written)<br>(!is_new && is_modified): a file is being updated (append)<br>(is_new && !is_modified): an empty file will be written ("do not recatch locally erased files")<br>return value: none</td><td background="img/fade.gif"><tt>void (* myfunction)(char* hostname,char* filename,char* localfile,int is_new,int is_modified);</tt></td></tr>
+
+typedef void (* t_hts_htmlcheck_filesave2)(); +
+
+<tr><td background="img/fade.gif">"<i>link-detected</i>"</td><td background="img/fade.gif">Called when a link has been detected<br>return value: 1 if the link can be analyzed, 0 if the link must not even be considered</td><td background="img/fade.gif"><tt>int (* myfunction)(char* link);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>transfer-status</i>"</td><td background="img/fade.gif">Called when a file has been processed (downloaded, updated, or error)<br>return value: must return 1</td><td background="img/fade.gif"><tt>int (* myfunction)(lien_back* back);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>save-name</i>"</td><td background="img/fade.gif">Called when a local filename has to be processed. The <tt>adr_complete</tt> and <tt>fil_complete</tt> are the address and URI of the file being saved ; the <tt>referer_adr</tt> and <tt>referer_fil</tt> are the address and URI of the referer link. The <tt>save</tt> string contains the local filename being used. You may modifiy the <tt>save</tt> 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 ..).<br>return value: must return 1</td><td background="img/fade.gif"><tt>int (* myfunction)(char* adr_complete,char* fil_complete,char* referer_adr,char* referer_fil,char* save);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>send-header</i>"</td><td background="img/fade.gif">Called when HTTP headers are to be sent to the remote server. The <tt>buff</tt> buffer contains text headers, <tt>adr</tt> and <tt>fil</tt> the URL, and <tt>referer_adr</tt> and <tt>referer_fil</tt> the referer URL. The <tt>outgoing</tt> structure contains all information related to the current slot.<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int (* myfunction)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* outgoing);</tt></td></tr>
+<tr><td background="img/fade.gif">"<i>receive-header</i>"</td><td background="img/fade.gif">Called when HTTP headers are recevived from the remote server. The <tt>buff</tt> buffer contains text headers, <tt>adr</tt> and <tt>fil</tt> the URL, and <tt>referer_adr</tt> and <tt>referer_fil</tt> the referer URL. The <tt>incoming</tt> structure contains all information related to the current slot.<br>return value: 1 if the mirror can continue, 0 if the mirror must be aborted</td><td background="img/fade.gif"><tt>int (* myfunction)(char* buff, char* adr, char* fil, char* referer_adr, char* referer_fil, htsblk* incoming);</tt></td></tr>
+
+</table>
+ +<br><br> +Below additional function names that can be defined inside the module (DLL/.so):<br>
+ +<table width="100%" ID="Table1">
+<tr><td><b>"<i>module function name</i>"</b></td><td><b>function description</b></td></tr>
+
+<tr><td background="img/fade.gif"><i>int <b>function-name</b>_init(char *args);</i></td><td background="img/fade.gif">Called when a function named <b>function-name</b> is extracted from the current module (same as wrapper_init). The optional <tt>args</tt> provides additional commandline parameters. Returns 1 upon success, 0 if the function should not be extracted.</td></tr>
+<tr><td background="img/fade.gif"><i>int wrapper_init(char *fname, char *args);</i></td><td background="img/fade.gif">Called when a function named <tt>fname</tt> is extracted from the current module. The optional <tt>args</tt> provides additional commandline parameters. Besides, use of htswrap_add (see <tt>httrack-library.h</tt>) is permitted inside this function to setup other callbacks. Returns 1 upon success, 0 if the function should not be extracted.</td></tr>
+<tr><td background="img/fade.gif"><i>int wrapper_exit(void);</i></td><td background="img/fade.gif">Called when the module is unloaded. The function should return 1 (but the result is ignored).</td></tr>
+ +</table> + +<br><br> +Below additional function names that can be defined inside the optional libhttrack-plugin module (libhttrack-plugin.dll or libhttrack-plugin.so) searched inside common library path:<br>
+ +<table width="100%" ID="Table2">
+<tr><td><b>"<i>module function name</i>"</b></td><td><b>function description</b></td></tr>
+
+<tr><td background="img/fade.gif"><i>void plugin_init(void);</i></td><td background="img/fade.gif">Called if the module (named libhttrack-plugin.(so|dll)) is found in the library path. Use of htswrap_add (see <tt>httrack-library.h</tt>) is permitted inside this function to setup other callbacks.</td></tr>
+ +</table> + +<br><br> +
+ +<br><br> + +<!-- ==================== Start epilogue ==================== --> + </td> + </tr> + </table> + </td> + </tr> + </table> +</td> +</tr> +</table> + +<table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> + <tr> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + </tr> +</table> + +</body> + +</html> + + diff --git a/html/scripting.html b/html/scripting.html index 2752a0d..02abb93 100755 --- a/html/scripting.html +++ b/html/scripting.html @@ -250,7 +250,7 @@ Script example: <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/server/about.html b/html/server/about.html index 087f68e..82af482 100755 --- a/html/server/about.html +++ b/html/server/about.html @@ -162,7 +162,7 @@ ${LANG_K3} : ${HTTRACK_WEB} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/addurl.html b/html/server/addurl.html index ee1f5a7..21a0953 100755 --- a/html/server/addurl.html +++ b/html/server/addurl.html @@ -218,7 +218,7 @@ ${do:end-if} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/error.html b/html/server/error.html index d8ea4d2..c600805 100755 --- a/html/server/error.html +++ b/html/server/error.html @@ -139,7 +139,7 @@ ${error} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/file.html b/html/server/file.html index 2dd3df6..4108afd 100755 --- a/html/server/file.html +++ b/html/server/file.html @@ -167,7 +167,7 @@ ${do:loadhash} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/finished.html b/html/server/finished.html index 5777a27..27130de 100755 --- a/html/server/finished.html +++ b/html/server/finished.html @@ -213,7 +213,7 @@ ${path}/${projname} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/help.html b/html/server/help.html index ef7f830..19decdb 100755 --- a/html/server/help.html +++ b/html/server/help.html @@ -174,7 +174,7 @@ ${do:end-if} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/index.html b/html/server/index.html index 6d48219..6998976 100755 --- a/html/server/index.html +++ b/html/server/index.html @@ -200,7 +200,7 @@ ${LANG_THANKYOU}! <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option1.html b/html/server/option1.html index 7e75e9e..9ba1d5b 100755 --- a/html/server/option1.html +++ b/html/server/option1.html @@ -229,7 +229,7 @@ ${do:end-if} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option10.html b/html/server/option10.html index 0ebe51f..99d0a4d 100755 --- a/html/server/option10.html +++ b/html/server/option10.html @@ -221,7 +221,7 @@ ${LANG_IOPT10}: <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option11.html b/html/server/option11.html index 7aea791..4b688e8 100755 --- a/html/server/option11.html +++ b/html/server/option11.html @@ -321,7 +321,7 @@ ${LANG_W3} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option2.html b/html/server/option2.html index fd3ab8c..6df78f3 100755 --- a/html/server/option2.html +++ b/html/server/option2.html @@ -247,7 +247,7 @@ ${listid:build:LISTDEF_3} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option2b.html b/html/server/option2b.html index d227c30..ef6d0b2 100755 --- a/html/server/option2b.html +++ b/html/server/option2b.html @@ -211,7 +211,7 @@ ${do:output-mode:} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option3.html b/html/server/option3.html index 743dc81..9c6149e 100755 --- a/html/server/option3.html +++ b/html/server/option3.html @@ -262,7 +262,7 @@ ${listid:travel3:LISTDEF_11} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option4.html b/html/server/option4.html index d686ec1..c2176c3 100755 --- a/html/server/option4.html +++ b/html/server/option4.html @@ -255,7 +255,7 @@ ${LANG_I46} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option5.html b/html/server/option5.html index 64ce3c5..0da4e32 100755 --- a/html/server/option5.html +++ b/html/server/option5.html @@ -291,7 +291,7 @@ ${LANG_I64b} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option6.html b/html/server/option6.html index 4e4a0ac..c0a18c5 100755 --- a/html/server/option6.html +++ b/html/server/option6.html @@ -227,7 +227,7 @@ ${LANG_I43b} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option7.html b/html/server/option7.html index d689de2..676c11b 100755 --- a/html/server/option7.html +++ b/html/server/option7.html @@ -219,7 +219,7 @@ ${LANG_B13} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option8.html b/html/server/option8.html index 397e33c..5f32e0e 100755 --- a/html/server/option8.html +++ b/html/server/option8.html @@ -256,7 +256,7 @@ ${listid:robots:LISTDEF_8} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/option9.html b/html/server/option9.html index b77cccb..2185f9f 100755 --- a/html/server/option9.html +++ b/html/server/option9.html @@ -237,7 +237,7 @@ ${listid:logtype:LISTDEF_9} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/refresh.html b/html/server/refresh.html index 35d3ecf..ca840a6 100755 --- a/html/server/refresh.html +++ b/html/server/refresh.html @@ -271,7 +271,7 @@ ${LANG_H20} ${info.currentjob} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/step2.html b/html/server/step2.html index 246a264..e2d74db 100755 --- a/html/server/step2.html +++ b/html/server/step2.html @@ -343,7 +343,7 @@ ${do:end-if:} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/step3.html b/html/server/step3.html index 54cc9da..a1b035f 100755 --- a/html/server/step3.html +++ b/html/server/step3.html @@ -276,7 +276,7 @@ ${do:output-mode:} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/server/step4.html b/html/server/step4.html index a65cf22..452edac 100755 --- a/html/server/step4.html +++ b/html/server/step4.html @@ -378,7 +378,7 @@ ${do:output-mode:} <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> + <td id="footer"><small><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></small></td> </tr> </table> diff --git a/html/shelldoc.html b/html/shelldoc.html index 05e0c80..737794b 100644 --- a/html/shelldoc.html +++ b/html/shelldoc.html @@ -141,7 +141,7 @@ You may encounter minor differences (in the display, or in various options) betw <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step.html b/html/step.html index fff295f..26193cd 100644 --- a/html/step.html +++ b/html/step.html @@ -128,7 +128,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step1.html b/html/step1.html index 645bf32..e61a02a 100644 --- a/html/step1.html +++ b/html/step1.html @@ -143,7 +143,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step2.html b/html/step2.html index c861e03..44cea6c 100644 --- a/html/step2.html +++ b/html/step2.html @@ -157,7 +157,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step3.html b/html/step3.html index 00b6b66..add093b 100644 --- a/html/step3.html +++ b/html/step3.html @@ -151,7 +151,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0">
<tr>
- <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td>
+ <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td>
</tr>
</table>
diff --git a/html/step4.html b/html/step4.html index 0de1c54..ab05d2f 100644 --- a/html/step4.html +++ b/html/step4.html @@ -128,7 +128,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step5.html b/html/step5.html index cae81bd..eee809a 100644 --- a/html/step5.html +++ b/html/step5.html @@ -127,7 +127,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9.html b/html/step9.html index 0400822..af565cd 100644 --- a/html/step9.html +++ b/html/step9.html @@ -144,7 +144,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt1.html b/html/step9_opt1.html index cf79c85..e263076 100644 --- a/html/step9_opt1.html +++ b/html/step9_opt1.html @@ -145,7 +145,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt10.html b/html/step9_opt10.html index 658b82f..c1d2b1f 100644 --- a/html/step9_opt10.html +++ b/html/step9_opt10.html @@ -150,7 +150,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt11.html b/html/step9_opt11.html index e4c0395..12caeee 100644 --- a/html/step9_opt11.html +++ b/html/step9_opt11.html @@ -182,7 +182,7 @@ In this case, HTTrack won't check the type, because it has learned that "foo" is <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt2.html b/html/step9_opt2.html index 3fd774d..3b7b8ff 100644 --- a/html/step9_opt2.html +++ b/html/step9_opt2.html @@ -181,7 +181,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt3.html b/html/step9_opt3.html index 98511f2..df96322 100644 --- a/html/step9_opt3.html +++ b/html/step9_opt3.html @@ -145,7 +145,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt4.html b/html/step9_opt4.html index 3a3a9d5..54b4713 100644 --- a/html/step9_opt4.html +++ b/html/step9_opt4.html @@ -112,11 +112,11 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <br><br> <!-- --> <li>Exclude link(s)</li> - <br><small>This button lets you add a filter to authorize either a directory, a domain, a certain file type... + <br><small>This button lets you add a filter to exclude either a directory, a domain, a certain file type... <br>See <a href="#add">below</a> to find out how to add a filter rule... </small><br><br> <!-- --> - <li>Exclude link(s)</li> + <li>Include link(s)</li> <br><small>This button lets you add a filter to authorize either a directory, a domain, a certain file type... <br>See <a href="#add">below</a> to find out how to add a filter rule... </small><br><br> @@ -176,7 +176,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt5.html b/html/step9_opt5.html index c13666c..c9fbf60 100644 --- a/html/step9_opt5.html +++ b/html/step9_opt5.html @@ -165,7 +165,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt6.html b/html/step9_opt6.html index 110b27f..41f4d5e 100644 --- a/html/step9_opt6.html +++ b/html/step9_opt6.html @@ -162,7 +162,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt7.html b/html/step9_opt7.html index 876fb3e..3be0a9e 100644 --- a/html/step9_opt7.html +++ b/html/step9_opt7.html @@ -151,7 +151,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt8.html b/html/step9_opt8.html index 97d424f..2f74b00 100644 --- a/html/step9_opt8.html +++ b/html/step9_opt8.html @@ -141,7 +141,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> diff --git a/html/step9_opt9.html b/html/step9_opt9.html index b706121..0568554 100644 --- a/html/step9_opt9.html +++ b/html/step9_opt9.html @@ -156,7 +156,7 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; } <table width="76%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0"> <tr> - <td id="footer"><small>© 2003 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> + <td id="footer"><small>© 2007 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td> </tr> </table> |