summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Roche <xroche@users.noreply.github.com>2012-03-19 13:00:51 +0000
committerXavier Roche <xroche@users.noreply.github.com>2012-03-19 13:00:51 +0000
commit1ecdfbe3b855b1f13bcddccc20135f7e35f171a6 (patch)
tree253b431bc06ce806ee47aa7b7c4285da8c5503d6
parent4aec03f2cbabc19cf31e7d6f9fdcd6c84cfa861e (diff)
httrack 3.43.12
-rwxr-xr-xAUTHORS2
-rw-r--r--Makefile.in3
-rw-r--r--README116
-rw-r--r--aclocal.m4711
-rwxr-xr-xconfig.guess60
-rwxr-xr-xconfig.sub66
-rwxr-xr-xconfigure1664
-rw-r--r--configure.in4
-rw-r--r--gpl-fr.txt394
-rw-r--r--gpl.txt574
-rw-r--r--greetings.txt211
-rw-r--r--history.txt1381
-rw-r--r--html/Makefile.in3
-rw-r--r--html/faq.html79
-rw-r--r--html/httrack.man.html842
-rwxr-xr-xhtml/server/addurl.html10
-rw-r--r--html/server/div/WebHTTrack-Websites.desktop6
-rw-r--r--html/server/div/WebHTTrack.desktop6
-rwxr-xr-xhtml/server/step3.html29
-rw-r--r--lang/Makefile.in3
-rwxr-xr-xlang/Portugues-Brasil.txt64
-rw-r--r--libtest/Makefile.in3
-rwxr-xr-xlibtest/callbacks-example-baselinks.c236
-rwxr-xr-xlibtest/callbacks-example-changecontent.c118
-rwxr-xr-xlibtest/callbacks-example-contentfilter.c300
-rwxr-xr-xlibtest/callbacks-example-displayheader.c132
-rwxr-xr-xlibtest/callbacks-example-filename.c172
-rwxr-xr-xlibtest/callbacks-example-filename2.c260
-rwxr-xr-xlibtest/callbacks-example-filenameiisbug.c138
-rwxr-xr-xlibtest/callbacks-example-listlinks.c266
-rwxr-xr-xlibtest/callbacks-example-log.c228
-rwxr-xr-xlibtest/callbacks-example-simple.c178
-rw-r--r--libtest/example.c402
-rw-r--r--libtest/example.h68
-rw-r--r--libtest/readme.txt112
-rw-r--r--license.txt78
-rw-r--r--ltmain.sh277
-rw-r--r--m4/Makefile.in3
-rw-r--r--man/Makefile.in3
-rw-r--r--man/httrack.1777
-rw-r--r--src/Makefile.am2
-rw-r--r--src/Makefile.in5
-rw-r--r--src/hts-indextmpl.h12
-rw-r--r--src/htsback.c356
-rw-r--r--src/htsback.h2
-rw-r--r--src/htsbase.h9
-rw-r--r--src/htsbasenet.h10
-rw-r--r--src/htscache.c29
-rw-r--r--src/htscache.h1
-rw-r--r--src/htscatchurl.c4
-rw-r--r--src/htscore.c79
-rw-r--r--src/htscore.h6
-rw-r--r--src/htscoremain.c81
-rw-r--r--src/htsftp.c4
-rw-r--r--src/htsglobal.h14
-rw-r--r--src/htsindex.c2
-rw-r--r--src/htslib.c143
-rw-r--r--src/htslib.h38
-rw-r--r--src/htsmd5.c14
-rw-r--r--src/htsmodules.c47
-rw-r--r--src/htsname.c43
-rw-r--r--src/htsname.h4
-rw-r--r--src/htsnet.h4
-rw-r--r--src/htsopt.h2
-rw-r--r--src/htsparse.c351
-rw-r--r--src/htsparse.h26
-rw-r--r--src/htsserver.c7
-rw-r--r--src/htswizard.c30
-rw-r--r--src/httrack.c28
-rwxr-xr-xsrc/httrack.vcproj612
-rw-r--r--src/minizip/mztools.c572
-rw-r--r--src/proxy/proxytrack.c5
-rwxr-xr-xsrc/webhttrack21
-rw-r--r--templates/Makefile.in3
-rw-r--r--templates/index-footer.html4
-rw-r--r--templates/topindex-footer.html4
76 files changed, 7332 insertions, 5221 deletions
diff --git a/AUTHORS b/AUTHORS
index 66da09f..8a2c6b0 100755
--- a/AUTHORS
+++ b/AUTHORS
@@ -1 +1 @@
-Xavier Roche <roche@httrack.com>
+Xavier Roche <roche@httrack.com>
diff --git a/Makefile.in b/Makefile.in
index 423227d..2aa4c2a 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -59,6 +59,7 @@ DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -83,6 +84,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -92,6 +94,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
diff --git a/README b/README
index c8f121f..5dfb2bd 100644
--- a/README
+++ b/README
@@ -1,58 +1,58 @@
-HTTrack Website Copier, Offline Browser for Windows and Unix
-Copyright (C) Xavier Roche and other contributors
-
-Welcome to HTTrack Website Copier!
-
-
-Information:
-
-The folder html/ contains the documentation
-You might want to read these files, especially for installing HTTrack:
- - See INSTALL file for installation information (NO WARRANTY)
- - See license.txt file for license information
-
-
-Contacting us:
-
-If you want to ask any question, feel free to contact us!
-email: httrack@httrack.com
-
-
-Donations:
-
-HTTrack Website Copier is free software, but if you can, please donate to the Free Software Foundation (FSF) to support free software!
-
-(Europe)
-http://www.fsfeurope.org/help/donate.html
-
-(World)
-http://www.fsf.org/help/donate.html
-
-
-Engine limits:
-
-These are the principals limits of HTTrack for that moment. Note that we did not heard about any other utility
-that would have solved them.
-
-- Several scripts generating complex filenames may not find them (ex: img.src='image'+a+Mobj.dst+'.gif')
-- Some java classes may not find some files on them (class included)
-- Cgi-bin links may not work properly in some cases (parameters needed). To avoid them: use filters like -*cgi-bin*
-
-
-Advanced options:
-
-These options may not be necessary for a normal usage. But they can solve several problems.
-
-- If you need more than 100,000 links: -#L1000000 (1,000,000 links)
-- If you need more than 500 filters: -#F1000 (1,000 filters)
-- If you need transfer rate statictics every minutes: -#Z
-- If you need transfer operations statistics every minutes: -#T
-- If you want log files to be refreshed after every line: -#f
-
-
-Thank you!
-
-
-Have fun with HTTrack Website Copier!
-The authors
-
+HTTrack Website Copier, Offline Browser for Windows and Unix
+Copyright (C) Xavier Roche and other contributors
+
+Welcome to HTTrack Website Copier!
+
+
+Information:
+
+The folder html/ contains the documentation
+You might want to read these files, especially for installing HTTrack:
+ - See INSTALL file for installation information (NO WARRANTY)
+ - See license.txt file for license information
+
+
+Contacting us:
+
+If you want to ask any question, feel free to contact us!
+email: httrack@httrack.com
+
+
+Donations:
+
+HTTrack Website Copier is free software, but if you can, please donate to the Free Software Foundation (FSF) to support free software!
+
+(Europe)
+http://www.fsfeurope.org/help/donate.html
+
+(World)
+http://www.fsf.org/help/donate.html
+
+
+Engine limits:
+
+These are the principals limits of HTTrack for that moment. Note that we did not heard about any other utility
+that would have solved them.
+
+- Several scripts generating complex filenames may not find them (ex: img.src='image'+a+Mobj.dst+'.gif')
+- Some java classes may not find some files on them (class included)
+- Cgi-bin links may not work properly in some cases (parameters needed). To avoid them: use filters like -*cgi-bin*
+
+
+Advanced options:
+
+These options may not be necessary for a normal usage. But they can solve several problems.
+
+- If you need more than 100,000 links: -#L1000000 (1,000,000 links)
+- If you need more than 500 filters: -#F1000 (1,000 filters)
+- If you need transfer rate statictics every minutes: -#Z
+- If you need transfer operations statistics every minutes: -#T
+- If you want log files to be refreshed after every line: -#f
+
+
+Thank you!
+
+
+Have fun with HTTrack Website Copier!
+The authors
+
diff --git a/aclocal.m4 b/aclocal.m4
index 1ca391b..958c52c 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -900,7 +900,7 @@ AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE])
# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
-# serial 48 Debian 1.5.22-4 AC_PROG_LIBTOOL
+# serial 52 Debian 1.5.26-4+lenny1 AC_PROG_LIBTOOL
# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
@@ -988,7 +988,6 @@ AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
AC_REQUIRE([AC_OBJEXT])dnl
AC_REQUIRE([AC_EXEEXT])dnl
dnl
-
AC_LIBTOOL_SYS_MAX_CMD_LEN
AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
AC_LIBTOOL_OBJDIR
@@ -1063,7 +1062,7 @@ test -z "$STRIP" && STRIP=:
test -z "$ac_objext" && ac_objext=o
# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
old_postinstall_cmds='chmod 644 $oldlib'
old_postuninstall_cmds=
@@ -1090,6 +1089,8 @@ file_magic*)
;;
esac
+_LT_REQUIRED_DARWIN_CHECKS
+
AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
enable_win32_dll=yes, enable_win32_dll=no)
@@ -1150,8 +1151,9 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
# Check for compiler boilerplate output or warnings with
# the simple compiler test code.
AC_DEFUN([_LT_COMPILER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
@@ -1163,13 +1165,85 @@ $rm conftest*
# Check for linker boilerplate output or warnings with
# the simple link test code.
AC_DEFUN([_LT_LINKER_BOILERPLATE],
-[ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+ac_outfile=conftest.$ac_objext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
])# _LT_LINKER_BOILERPLATE
+# _LT_REQUIRED_DARWIN_CHECKS
+# --------------------------
+# Check for some things on darwin
+AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[
+ case $host_os in
+ rhapsody* | darwin*)
+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:])
+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:])
+
+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod],
+ [lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ echo "int foo(void){return 1;}" > conftest.c
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib ${wl}-single_module conftest.c
+ if test -f libconftest.dylib; then
+ lt_cv_apple_cc_single_mod=yes
+ rm -rf libconftest.dylib*
+ fi
+ rm conftest.c
+ fi])
+ AC_CACHE_CHECK([for -exported_symbols_list linker flag],
+ [lt_cv_ld_exported_symbols_list],
+ [lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],
+ [lt_cv_ld_exported_symbols_list=yes],
+ [lt_cv_ld_exported_symbols_list=no])
+ LDFLAGS="$save_LDFLAGS"
+ ])
+ case $host_os in
+ rhapsody* | darwin1.[[0123]])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*)
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[[012]]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
+ fi
+ if test "$DSYMUTIL" != ":"; then
+ _lt_dsymutil="~$DSYMUTIL \$lib || :"
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+])
# _LT_AC_SYS_LIBPATH_AIX
# ----------------------
@@ -1180,12 +1254,20 @@ $rm conftest*
# If we don't find anything, use the default library path according
# to the aix ld manual.
AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
-[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi],[])
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi],[])
if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
])# _LT_AC_SYS_LIBPATH_AIX
@@ -1416,13 +1498,17 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile); then
case `/usr/bin/file conftest.o` in
*32-bit*)
case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
@@ -1439,6 +1525,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
;;
*64-bit*)
case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
@@ -1479,7 +1568,11 @@ sparc*-*solaris*)
*64-bit*)
case $lt_cv_prog_gnu_ld in
yes*) LD="${LD-ld} -m elf64_sparc" ;;
- *) LD="${LD-ld} -64" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
esac
;;
esac
@@ -1510,7 +1603,7 @@ AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
AC_CACHE_CHECK([$1], [$2],
[$2=no
ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="$3"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
@@ -1551,11 +1644,12 @@ fi
# ------------------------------------------------------------
# Check whether the given compiler option works
AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
-[AC_CACHE_CHECK([$1], [$2],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_CACHE_CHECK([$1], [$2],
[$2=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $3"
- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
# The linker can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -1571,7 +1665,7 @@ AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
$2=yes
fi
fi
- $rm conftest*
+ $rm -r conftest*
LDFLAGS="$save_LDFLAGS"
])
@@ -1669,24 +1763,27 @@ AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl
fi
;;
*)
- # If test is not a shell built-in, we'll probably end up computing a
- # maximum length that is only half of the actual maximum length, but
- # we can't tell.
- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
- while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
= "XX$teststring") >/dev/null 2>&1 &&
- new_result=`expr "X$teststring" : ".*" 2>&1` &&
- lt_cv_sys_max_cmd_len=$new_result &&
- test $i != 17 # 1/2 MB should be enough
- do
- i=`expr $i + 1`
- teststring=$teststring$teststring
- done
- teststring=
- # Add a significant safety factor because C++ compilers can tack on massive
- # amounts of additional arguments before passing them to the linker.
- # It appears as though 1/2 is a usable value.
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
;;
esac
])
@@ -1839,7 +1936,7 @@ else
AC_CHECK_FUNC([shl_load],
[lt_cv_dlopen="shl_load"],
[AC_CHECK_LIB([dld], [shl_load],
- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"],
+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"],
[AC_CHECK_FUNC([dlopen],
[lt_cv_dlopen="dlopen"],
[AC_CHECK_LIB([dl], [dlopen],
@@ -1847,7 +1944,7 @@ else
[AC_CHECK_LIB([svld], [dlopen],
[lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"],
[AC_CHECK_LIB([dld], [dld_link],
- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"])
+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"])
])
])
])
@@ -1913,7 +2010,8 @@ fi
# ---------------------------------
# Check to see if options -c and -o are simultaneously supported by compiler
AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
-[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
[_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
[_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
@@ -1921,7 +2019,7 @@ AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
mkdir conftest
cd conftest
mkdir out
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-o out/conftest2.$ac_objext"
# Insert the option either (1) after the last *FLAGS variable, or
@@ -2061,6 +2159,7 @@ else
darwin*)
if test -n "$STRIP" ; then
striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
AC_MSG_RESULT([yes])
else
AC_MSG_RESULT([no])
@@ -2078,7 +2177,8 @@ fi
# -----------------------------
# PORTME Fill in your ld.so characteristics
AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
-[AC_MSG_CHECKING([dynamic linker characteristics])
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_MSG_CHECKING([dynamic linker characteristics])
library_names_spec=
libname_spec='lib$name'
soname_spec=
@@ -2092,20 +2192,58 @@ shlibpath_overrides_runpath=unknown
version_type=none
dynamic_linker="$host_os ld.so"
sys_lib_dlsearch_path_spec="/lib /usr/lib"
+m4_if($1,[],[
if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
# if the path contains ";" then we assume it to be the separator
# otherwise default to the standard path separator (i.e. ":") - it is
# assumed that no part of a normal pathname contains ";" but that should
# okay in the real world where ";" in dirpaths is itself problematic.
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
else
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[[lt_foo]]++; }
+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`echo $lt_search_path_spec`
else
sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+fi])
need_lib_prefix=unknown
hardcode_into_libs=no
@@ -2123,7 +2261,7 @@ aix3*)
soname_spec='${libname}${release}${shared_ext}$major'
;;
-aix4* | aix5*)
+aix[[4-9]]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -2262,12 +2400,8 @@ darwin* | rhapsody*)
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
- if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
- else
- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
- fi
+ m4_if([$1], [],[
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"])
sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
;;
@@ -2321,7 +2455,7 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
- freebsd*) # from 4.6 on
+ *) # from 4.6 on, and DragonFly
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
@@ -2384,7 +2518,7 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
-interix3*)
+interix[[3-9]]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -2455,7 +2589,7 @@ linux* | k*bsd*-gnu)
# Append ld.so.conf contents to the search path
if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
@@ -2561,6 +2695,10 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
+rdos*)
+ dynamic_linker=no
+ ;;
+
solaris*)
version_type=linux
need_lib_prefix=no
@@ -2656,6 +2794,13 @@ esac
AC_MSG_RESULT([$dynamic_linker])
test "$dynamic_linker" = no && can_build_shared=no
+AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec],
+[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"])
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec],
+[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"])
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
if test "$GCC" = yes; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -2666,7 +2811,8 @@ fi
# _LT_AC_TAGCONFIG
# ----------------
AC_DEFUN([_LT_AC_TAGCONFIG],
-[AC_ARG_WITH([tags],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_ARG_WITH([tags],
[AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
[include additional configurations @<:@automatic@:>@])],
[tagnames="$withval"])
@@ -2927,7 +3073,7 @@ m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
# AC_PATH_TOOL_PREFIX
# -------------------
-# find a file program which can recognise shared library
+# find a file program which can recognize shared library
AC_DEFUN([AC_PATH_TOOL_PREFIX],
[AC_REQUIRE([AC_PROG_EGREP])dnl
AC_MSG_CHECKING([for $1])
@@ -2990,7 +3136,7 @@ fi
# AC_PATH_MAGIC
# -------------
-# find a file program which can recognise a shared library
+# find a file program which can recognize a shared library
AC_DEFUN([AC_PATH_MAGIC],
[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH)
if test -z "$lt_cv_path_MAGIC_CMD"; then
@@ -3137,7 +3283,7 @@ esac
# how to check for library dependencies
# -- PORTME fill in with the dynamic library characteristics
AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
-[AC_CACHE_CHECK([how to recognise dependent libraries],
+[AC_CACHE_CHECK([how to recognize dependent libraries],
lt_cv_deplibs_check_method,
[lt_cv_file_magic_cmd='$MAGIC_CMD'
lt_cv_file_magic_test_file=
@@ -3154,7 +3300,7 @@ lt_cv_deplibs_check_method='unknown'
# whether `pass_all' will *always* work, you probably want this one.
case $host_os in
-aix4* | aix5*)
+aix[[4-9]]*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3176,9 +3322,15 @@ cygwin*)
mingw* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
- # func_win32_libid shell function, so use a weaker test based on 'objdump'.
- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
;;
darwin* | rhapsody*)
@@ -3223,7 +3375,7 @@ hpux10.20* | hpux11*)
esac
;;
-interix3*)
+interix[[3-9]]*)
# PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$'
;;
@@ -3273,6 +3425,10 @@ osf3* | osf4* | osf5*)
lt_cv_deplibs_check_method=pass_all
;;
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
solaris*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -3325,7 +3481,7 @@ AC_DEFUN([AC_PROG_NM],
lt_cv_path_NM="$NM"
else
lt_nm_to_check="${ac_tool_prefix}nm"
- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then
lt_nm_to_check="$lt_nm_to_check nm"
fi
for lt_tmp_nm in $lt_nm_to_check; do
@@ -3541,10 +3697,10 @@ objext=o
_LT_AC_TAGVAR(objext, $1)=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}\n'
+lt_simple_link_test_code='int main(){return(0);}'
_LT_AC_SYS_COMPILER
@@ -3580,7 +3736,7 @@ aix3*)
fi
;;
-aix4* | aix5*)
+aix[[4-9]]*)
if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
test "$enable_shared" = yes && enable_static=no
fi
@@ -3637,6 +3793,7 @@ _LT_AC_TAGVAR(postdep_objects, $1)=
_LT_AC_TAGVAR(predeps, $1)=
_LT_AC_TAGVAR(postdeps, $1)=
_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
# Source file extension for C++ test sources.
ac_ext=cpp
@@ -3646,10 +3803,10 @@ objext=o
_LT_AC_TAGVAR(objext, $1)=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
# Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }'
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
_LT_AC_SYS_COMPILER
@@ -3746,7 +3903,7 @@ case $host_os in
# FIXME: insert proper C++ library support
_LT_AC_TAGVAR(ld_shlibs, $1)=no
;;
- aix4* | aix5*)
+ aix[[4-9]]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
@@ -3759,7 +3916,7 @@ case $host_os in
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
for ld_flag in $LDFLAGS; do
case $ld_flag in
*-brtl*)
@@ -3795,7 +3952,7 @@ case $host_os in
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ :
else
# We have old collect2
_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
@@ -3905,59 +4062,31 @@ case $host_os in
fi
;;
darwin* | rhapsody*)
- case $host_os in
- rhapsody* | darwin1.[[012]])
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
- ;;
- *) # Darwin 1.3 on
- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
- else
- case ${MACOSX_DEPLOYMENT_TARGET} in
- 10.[[012]])
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
- ;;
- 10.*)
- _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
- ;;
- esac
- fi
- ;;
- esac
_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_AC_TAGVAR(hardcode_direct, $1)=no
_LT_AC_TAGVAR(hardcode_automatic, $1)=yes
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
-
- if test "$GXX" = yes ; then
- lt_int_apple_cc_single_mod=no
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined"
+ if test "$GXX" = yes ; then
output_verbose_link_cmd='echo'
- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
- lt_int_apple_cc_single_mod=yes
+ _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
fi
- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- else
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- fi
- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- else
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else
case $cc_basename in
xlc*)
output_verbose_link_cmd='echo'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
_LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
_LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
*)
@@ -4040,9 +4169,7 @@ case $host_os in
_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
case $host_cpu in
- hppa*64*|ia64*)
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
- ;;
+ hppa*64*|ia64*) ;;
*)
_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
;;
@@ -4110,7 +4237,7 @@ case $host_os in
;;
esac
;;
- interix3*)
+ interix[[3-9]]*)
_LT_AC_TAGVAR(hardcode_direct, $1)=no
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
@@ -4202,7 +4329,7 @@ case $host_os in
_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
_LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
;;
- pgCC*)
+ pgCC* | pgcpp*)
# Portland Group C++ compiler
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
@@ -4230,6 +4357,29 @@ case $host_os in
# dependencies.
output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
esac
;;
lynxos*)
@@ -4268,16 +4418,20 @@ case $host_os in
_LT_AC_TAGVAR(ld_shlibs, $1)=no
;;
openbsd*)
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ if test -f /usr/libexec/ld.so; then
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
fi
- output_verbose_link_cmd='echo'
;;
osf3*)
case $cc_basename in
@@ -4439,15 +4593,10 @@ case $host_os in
case $host_os in
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
- # The C++ compiler is used as linker so we must use $wl
- # flag to pass the commands to the underlying system
- # linker. We must also pass each convience library through
- # to the system linker between allextract/defaultextract.
- # The C++ compiler will combine linker options so we
- # cannot just pass the convience library names through
- # without $wl.
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
;;
esac
_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
@@ -4494,6 +4643,12 @@ case $host_os in
fi
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
fi
;;
esac
@@ -4609,7 +4764,8 @@ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld
# compiler output when linking a shared library.
# Parse the compiler output and extract the necessary
# objects, libraries and library flags.
-AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
dnl we can't use the lt_simple_compile_test_code here,
dnl because it contains code intended for an executable,
dnl not a library. It's possible we should let each
@@ -4734,10 +4890,15 @@ fi
$rm -f confest.$objext
+_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=
+if test -n "$_LT_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_AC_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
# PORTME: override above test on systems where it is broken
ifelse([$1],[CXX],
[case $host_os in
-interix3*)
+interix[[3-9]]*)
# Interix 3.5 installs completely hosed .la files for C++, so rather than
# hack all around it, let's just trust "g++" to DTRT.
_LT_AC_TAGVAR(predep_objects,$1)=
@@ -4745,19 +4906,51 @@ interix3*)
_LT_AC_TAGVAR(postdeps,$1)=
;;
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ #
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
solaris*)
case $cc_basename in
CC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
# Adding this requires a known-good setup of shared libraries for
# Sun compiler versions before 5.6, else PIC objects from an old
# archive will be linked into the output, leading to subtle bugs.
- _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+ if test "$solaris_use_stlport4" != yes; then
+ _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun'
+ fi
;;
esac
;;
esac
])
-
case " $_LT_AC_TAGVAR(postdeps, $1) " in
*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
esac
@@ -4800,10 +4993,17 @@ objext=o
_LT_AC_TAGVAR(objext, $1)=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
# Code to be used in simple link tests
-lt_simple_link_test_code=" program t\n end\n"
+lt_simple_link_test_code="\
+ program t
+ end
+"
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
_LT_AC_SYS_COMPILER
@@ -4835,7 +5035,7 @@ aix3*)
postinstall_cmds='$RANLIB $lib'
fi
;;
-aix4* | aix5*)
+aix[[4-9]]*)
if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
test "$enable_shared" = yes && enable_static=no
fi
@@ -4882,10 +5082,10 @@ objext=o
_LT_AC_TAGVAR(objext, $1)=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}\n"
+lt_simple_compile_test_code="class foo {}"
# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }'
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
_LT_AC_SYS_COMPILER
@@ -4938,7 +5138,7 @@ objext=o
_LT_AC_TAGVAR(objext, $1)=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
# Code to be used in simple link tests
lt_simple_link_test_code="$lt_simple_compile_test_code"
@@ -5012,6 +5212,7 @@ if test -f "$ltmain"; then
_LT_AC_TAGVAR(predeps, $1) \
_LT_AC_TAGVAR(postdeps, $1) \
_LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \
_LT_AC_TAGVAR(archive_cmds, $1) \
_LT_AC_TAGVAR(archive_expsym_cmds, $1) \
_LT_AC_TAGVAR(postinstall_cmds, $1) \
@@ -5027,6 +5228,7 @@ if test -f "$ltmain"; then
_LT_AC_TAGVAR(module_cmds, $1) \
_LT_AC_TAGVAR(module_expsym_cmds, $1) \
_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(fix_srcfile_path, $1) \
_LT_AC_TAGVAR(exclude_expsyms, $1) \
_LT_AC_TAGVAR(include_expsyms, $1); do
@@ -5073,7 +5275,7 @@ ifelse([$1], [],
# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
# Free Software Foundation, Inc.
#
# This file is part of GNU Libtool:
@@ -5310,6 +5512,10 @@ predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
# shared library.
postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)
+
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
@@ -5398,7 +5604,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+fix_srcfile_path=$lt_fix_srcfile_path
# Set to yes if exported symbols are required.
always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
@@ -5481,6 +5687,7 @@ fi
# ---------------------------------
AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([LT_AC_PROG_SED])
AC_REQUIRE([AC_PROG_NM])
AC_REQUIRE([AC_OBJEXT])
# Check for command to grab the raw symbol name followed by C symbol from nm.
@@ -5658,7 +5865,7 @@ EOF
echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD
cat conftest.$ac_ext >&5
fi
- rm -f conftest* conftst*
+ rm -rf conftest* conftst*
# Do not use the global_symbol_pipe unless it works.
if test "$pipe_works" = yes; then
@@ -5707,13 +5914,16 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
# like `-m68040'.
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
;;
- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
- mingw* | os2* | pw32*)
+ mingw* | cygwin* | os2* | pw32*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
;;
darwin* | rhapsody*)
# PIC is the default on this platform
@@ -5724,7 +5934,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
# DJGPP does not support shared libraries at all
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
;;
- interix3*)
+ interix[[3-9]]*)
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
# Instead, we relocate shared libraries at runtime.
;;
@@ -5750,7 +5960,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
esac
else
case $host_os in
- aix4* | aix5*)
+ aix[[4-9]]*)
# All AIX code is PIC.
if test "$host_cpu" = ia64; then
# AIX 5 now supports IA64 processor
@@ -5846,7 +6056,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
;;
- pgCC*)
+ pgCC* | pgcpp*)
# Portland Group C++ compiler.
_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
@@ -5860,6 +6070,14 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ esac
;;
esac
;;
@@ -5980,14 +6198,17 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
;;
- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+ m4_if([$1], [GCJ], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
;;
darwin* | rhapsody*)
@@ -5996,7 +6217,7 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
;;
- interix3*)
+ interix[[3-9]]*)
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
# Instead, we relocate shared libraries at runtime.
;;
@@ -6054,10 +6275,11 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
esac
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
- _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ m4_if([$1], [GCJ], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'])
;;
hpux9* | hpux10* | hpux11*)
@@ -6106,6 +6328,22 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
# All Alpha code is PIC.
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=''
+ ;;
+ esac
+ ;;
esac
;;
@@ -6115,6 +6353,10 @@ AC_MSG_CHECKING([for $compiler option to produce PIC])
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
;;
+ rdos*)
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
solaris*)
_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
_LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
@@ -6174,7 +6416,7 @@ AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
#
if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
- _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1),
[$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
[case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
"" | " "*) ;;
@@ -6198,7 +6440,7 @@ esac
#
wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
- _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1),
$lt_tmp_static_flag,
[],
[_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
@@ -6209,11 +6451,12 @@ AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
# ------------------------------------
# See if the linker supports building shared libraries.
AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
-[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+[AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
ifelse([$1],[CXX],[
_LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
case $host_os in
- aix4* | aix5*)
+ aix[[4-9]]*)
# If we're using GNU nm, then we don't want the "-C" option.
# -C means demangle to AIX nm, but means don't demangle with GNU nm
if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
@@ -6226,7 +6469,7 @@ ifelse([$1],[CXX],[
_LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
;;
cygwin* | mingw*)
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
;;
linux* | k*bsd*-gnu)
_LT_AC_TAGVAR(link_all_deplibs, $1)=no
@@ -6235,6 +6478,7 @@ ifelse([$1],[CXX],[
_LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
;;
esac
+ _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
],[
runpath_var=
_LT_AC_TAGVAR(allow_undefined_flag, $1)=
@@ -6265,12 +6509,14 @@ ifelse([$1],[CXX],[
# it will be wrapped by ` (' and `)$', so one must not match beginning or
# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
# as well as any symbol that contains `d'.
- _LT_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*']
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
# platforms (ab)use it in PIC code, but their linkers get confused if
# the symbol is explicitly referenced. Since portable code cannot
# rely on this symbol name, it's probably fine to never include it in
# preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
+dnl Note also adjust exclude_expsyms for C++ above.
extract_expsyms_cmds=
# Just being paranoid about ensuring that cc_basename is set.
_LT_CC_BASENAME([$compiler])
@@ -6320,7 +6566,7 @@ ifelse([$1],[CXX],[
# See if GNU ld supports shared libraries.
case $host_os in
- aix3* | aix4* | aix5*)
+ aix[[3-9]]*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
_LT_AC_TAGVAR(ld_shlibs, $1)=no
@@ -6368,7 +6614,7 @@ EOF
_LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
_LT_AC_TAGVAR(always_export_symbols, $1)=no
_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
- _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
_LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -6386,7 +6632,7 @@ EOF
fi
;;
- interix3*)
+ interix[[3-9]]*)
_LT_AC_TAGVAR(hardcode_direct, $1)=no
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
@@ -6401,7 +6647,7 @@ EOF
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- linux* | k*bsd*-gnu)
+ gnu* | linux* | k*bsd*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
tmp_addflag=
case $cc_basename,$host_cpu in
@@ -6419,13 +6665,22 @@ EOF
ifc* | ifort*) # Intel Fortran compiler
tmp_addflag=' -nofor_main' ;;
esac
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ *)
+ tmp_sharedflag='-shared' ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
if test $supports_anon_versioning = yes; then
_LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~
cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
$echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
fi
_LT_AC_TAGVAR(link_all_deplibs, $1)=no
else
@@ -6466,7 +6721,7 @@ EOF
sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
case `$LD -v 2>&1` in
- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*)
_LT_AC_TAGVAR(ld_shlibs, $1)=no
cat <<_LT_EOF 1>&2
@@ -6531,7 +6786,7 @@ _LT_EOF
fi
;;
- aix4* | aix5*)
+ aix[[4-9]]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
@@ -6551,7 +6806,7 @@ _LT_EOF
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix5*)
+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
@@ -6585,7 +6840,7 @@ _LT_EOF
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ :
else
# We have old collect2
_LT_AC_TAGVAR(hardcode_direct, $1)=unsupported
@@ -6678,7 +6933,7 @@ _LT_EOF
# The linker will automatically build a .lib file if we build a DLL.
_LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
# FIXME: Should let the user specify the lib program.
- _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs'
_LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
;;
@@ -6711,19 +6966,18 @@ _LT_EOF
_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
if test "$GCC" = yes ; then
output_verbose_link_cmd='echo'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
else
case $cc_basename in
xlc*)
output_verbose_link_cmd='echo'
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
_LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
_LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
*)
@@ -6885,24 +7139,28 @@ _LT_EOF
;;
openbsd*)
- _LT_AC_TAGVAR(hardcode_direct, $1)=yes
- _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ if test -f /usr/libexec/ld.so; then
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
else
- case $host_os in
- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
- _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
- ;;
- *)
- _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
- ;;
- esac
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
fi
;;
@@ -6961,17 +7219,16 @@ _LT_EOF
case $host_os in
solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
*)
- # The compiler driver will combine linker options so we
- # cannot just pass the convience library names through
- # without $wl, iff we do not link with $LD.
- # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- case $wlarc in
- '')
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
- *)
- _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
- esac ;;
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
esac
_LT_AC_TAGVAR(link_all_deplibs, $1)=yes
;;
@@ -7028,7 +7285,7 @@ _LT_EOF
fi
;;
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
_LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
@@ -7103,7 +7360,7 @@ x|xyes)
# to ld, don't add -lc before -lgcc.
AC_MSG_CHECKING([whether -lc should be explicitly linked in])
$rm conftest*
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if AC_TRY_EVAL(ac_compile) 2>conftest.err; then
soname=conftest
@@ -7206,6 +7463,30 @@ AC_DEFUN([LT_AC_PROG_RC],
[AC_CHECK_TOOL(RC, windres, no)
])
+
+# Cheap backport of AS_EXECUTABLE_P and required macros
+# from Autoconf 2.59; we should not use $as_executable_p directly.
+
+# _AS_TEST_PREPARE
+# ----------------
+m4_ifndef([_AS_TEST_PREPARE],
+[m4_defun([_AS_TEST_PREPARE],
+[if test -x / >/dev/null 2>&1; then
+ as_executable_p='test -x'
+else
+ as_executable_p='test -f'
+fi
+])])# _AS_TEST_PREPARE
+
+# AS_EXECUTABLE_P
+# ---------------
+# Check whether a file is executable.
+m4_ifndef([AS_EXECUTABLE_P],
+[m4_defun([AS_EXECUTABLE_P],
+[AS_REQUIRE([_AS_TEST_PREPARE])dnl
+$as_executable_p $1[]dnl
+])])# AS_EXECUTABLE_P
+
# NOTE: This macro has been submitted for inclusion into #
# GNU Autoconf as AC_PROG_SED. When it is available in #
# a released version of Autoconf we should remove this #
@@ -7226,12 +7507,13 @@ do
test -z "$as_dir" && as_dir=.
for lt_ac_prog in sed gsed; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then
lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
fi
done
done
done
+IFS=$as_save_IFS
lt_ac_max=0
lt_ac_count=0
# Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -7264,6 +7546,7 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
done
])
SED=$lt_cv_path_SED
+AC_SUBST([SED])
AC_MSG_RESULT([$SED])
])
diff --git a/config.guess b/config.guess
index 396482d..f32079a 100755
--- a/config.guess
+++ b/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-# Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
-timestamp='2006-07-02'
+timestamp='2008-01-23'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -56,8 +56,8 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -161,6 +161,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*) machine=arm-unknown ;;
sh3el) machine=shl-unknown ;;
sh3eb) machine=sh-unknown ;;
+ sh5el) machine=sh5le-unknown ;;
*) machine=${UNAME_MACHINE_ARCH}-unknown ;;
esac
# The Operating System including object format, if it has switched
@@ -329,7 +330,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
- i86pc:SunOS:5.*:*)
+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4*:SunOS:6*:*)
@@ -531,7 +532,7 @@ EOF
echo rs6000-ibm-aix3.2
fi
exit ;;
- *:AIX:*:[45])
+ *:AIX:*:[456])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000
@@ -780,7 +781,7 @@ EOF
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
- i*:MINGW*:*)
+ *:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
i*:windows32*:*)
@@ -790,12 +791,18 @@ EOF
i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32
exit ;;
- x86:Interix*:[3456]*)
- echo i586-pc-interix${UNAME_RELEASE}
- exit ;;
- EM64T:Interix*:[3456]*)
- echo x86_64-unknown-interix${UNAME_RELEASE}
- exit ;;
+ *:Interix*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd)
+ echo x86_64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ IA64)
+ echo ia64-unknown-interix${UNAME_RELEASE}
+ exit ;;
+ esac ;;
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
echo i${UNAME_MACHINE}-pc-mks
exit ;;
@@ -829,7 +836,14 @@ EOF
echo ${UNAME_MACHINE}-pc-minix
exit ;;
arm*:Linux:*:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ eval $set_cc_for_build
+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
+ | grep -q __ARM_EABI__
+ then
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ else
+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi
+ fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -950,6 +964,9 @@ EOF
x86_64:Linux:*:*)
echo x86_64-unknown-linux-gnu
exit ;;
+ xtensa*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
@@ -1208,6 +1225,15 @@ EOF
SX-6:SUPER-UX:*:*)
echo sx6-nec-superux${UNAME_RELEASE}
exit ;;
+ SX-7:SUPER-UX:*:*)
+ echo sx7-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8:SUPER-UX:*:*)
+ echo sx8-nec-superux${UNAME_RELEASE}
+ exit ;;
+ SX-8R:SUPER-UX:*:*)
+ echo sx8r-nec-superux${UNAME_RELEASE}
+ exit ;;
Power*:Rhapsody:*:*)
echo powerpc-apple-rhapsody${UNAME_RELEASE}
exit ;;
@@ -1458,9 +1484,9 @@ This script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you
download the most up to date version of the config scripts from
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
and
- http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+ http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
If the version you run ($0) is already up to date, please
send the following data and any information you think might be
diff --git a/config.sub b/config.sub
index fab0aa3..6759825 100755
--- a/config.sub
+++ b/config.sub
@@ -1,10 +1,10 @@
#! /bin/sh
# Configuration validation subroutine script.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
-# Inc.
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+# Free Software Foundation, Inc.
-timestamp='2006-09-20'
+timestamp='2008-01-16'
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
@@ -72,8 +72,8 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\
GNU config.sub ($timestamp)
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
-Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -245,12 +245,12 @@ case $basic_machine in
| bfin \
| c4x | clipper \
| d10v | d30v | dlx | dsp16xx \
- | fr30 | frv \
+ | fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \
- | maxq | mb | microblaze | mcore \
+ | maxq | mb | microblaze | mcore | mep \
| mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \
| mips64 | mips64el \
@@ -324,7 +324,7 @@ case $basic_machine in
| clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \
| elxsi-* \
- | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \
+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| i*86-* | i860-* | i960-* | ia64-* \
@@ -369,10 +369,14 @@ case $basic_machine in
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
- | xstormy16-* | xtensa-* \
+ | xstormy16-* | xtensa*-* \
| ymp-* \
| z8k-*)
;;
+ # Recognize the basic CPU types without company name, with glob match.
+ xtensa*)
+ basic_machine=$basic_machine-unknown
+ ;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
386bsd)
@@ -443,6 +447,14 @@ case $basic_machine in
basic_machine=ns32k-sequent
os=-dynix
;;
+ blackfin)
+ basic_machine=bfin-unknown
+ os=-linux
+ ;;
+ blackfin-*)
+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
c90)
basic_machine=c90-cray
os=-unicos
@@ -475,8 +487,8 @@ case $basic_machine in
basic_machine=craynv-cray
os=-unicosmp
;;
- cr16c)
- basic_machine=cr16c-unknown
+ cr16)
+ basic_machine=cr16-unknown
os=-elf
;;
crds | unos)
@@ -668,6 +680,14 @@ case $basic_machine in
basic_machine=m68k-isi
os=-sysv
;;
+ m68knommu)
+ basic_machine=m68k-unknown
+ os=-linux
+ ;;
+ m68knommu-*)
+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
m88k-omron*)
basic_machine=m88k-omron
;;
@@ -683,6 +703,10 @@ case $basic_machine in
basic_machine=i386-pc
os=-mingw32
;;
+ mingw32ce)
+ basic_machine=arm-unknown
+ os=-mingw32ce
+ ;;
miniframe)
basic_machine=m68000-convergent
;;
@@ -809,6 +833,14 @@ case $basic_machine in
basic_machine=i860-intel
os=-osf
;;
+ parisc)
+ basic_machine=hppa-unknown
+ os=-linux
+ ;;
+ parisc-*)
+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
+ os=-linux
+ ;;
pbd)
basic_machine=sparc-tti
;;
@@ -925,6 +957,9 @@ case $basic_machine in
basic_machine=sh-hitachi
os=-hms
;;
+ sh5el)
+ basic_machine=sh5le-unknown
+ ;;
sh64)
basic_machine=sh64-unknown
;;
@@ -1014,6 +1049,10 @@ case $basic_machine in
basic_machine=tic6x-unknown
os=-coff
;;
+ tile*)
+ basic_machine=tile-unknown
+ os=-linux-gnu
+ ;;
tx39)
basic_machine=mipstx39-unknown
;;
@@ -1219,7 +1258,7 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
- | -skyos* | -haiku* | -rdos* | -toppers*)
+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-qnx*)
@@ -1414,6 +1453,9 @@ case $basic_machine in
m68*-cisco)
os=-aout
;;
+ mep-*)
+ os=-elf
+ ;;
mips*-cisco)
os=-elf
;;
diff --git a/configure b/configure
index 9244e70..3d41c45 100755
--- a/configure
+++ b/configure
@@ -858,10 +858,13 @@ host
host_cpu
host_vendor
host_os
+SED
LN_S
ECHO
AR
RANLIB
+DSYMUTIL
+NMEDIT
CXXCPP
F77
FFLAGS
@@ -2215,7 +2218,7 @@ fi
# Define the identity of the package.
PACKAGE=httrack
- VERSION=3.42.3
+ VERSION=3.43.12
cat >>confdefs.h <<_ACEOF
@@ -2357,7 +2360,7 @@ INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s"
-VERSION_INFO="2:42:0"
+VERSION_INFO="2:43:0"
{ echo "$as_me:$LINENO: checking whether to enable maintainer-specific portions of Makefiles" >&5
echo $ECHO_N "checking whether to enable maintainer-specific portions of Makefiles... $ECHO_C" >&6; }
# Check whether --enable-maintainer-mode was given.
@@ -4674,12 +4677,13 @@ do
test -z "$as_dir" && as_dir=.
for lt_ac_prog in sed gsed; do
for ac_exec_ext in '' $ac_executable_extensions; do
- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then
+ if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then
lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext"
fi
done
done
done
+IFS=$as_save_IFS
lt_ac_max=0
lt_ac_count=0
# Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -4714,6 +4718,7 @@ done
fi
SED=$lt_cv_path_SED
+
{ echo "$as_me:$LINENO: result: $SED" >&5
echo "${ECHO_T}$SED" >&6; }
@@ -4913,8 +4918,8 @@ else
echo "${ECHO_T}no, using $LN_S" >&6; }
fi
-{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
-echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5
+echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6; }
if test "${lt_cv_deplibs_check_method+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
@@ -4933,7 +4938,7 @@ lt_cv_deplibs_check_method='unknown'
# whether `pass_all' will *always* work, you probably want this one.
case $host_os in
-aix4* | aix5*)
+aix[4-9]*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -4955,9 +4960,15 @@ cygwin*)
mingw* | pw32*)
# Base MSYS/MinGW do not provide the 'file' command needed by
- # func_win32_libid shell function, so use a weaker test based on 'objdump'.
- lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
- lt_cv_file_magic_cmd='$OBJDUMP -f'
+ # func_win32_libid shell function, so use a weaker test based on 'objdump',
+ # unless we find 'file', for example because we are cross-compiling.
+ if ( file / ) >/dev/null 2>&1; then
+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL'
+ lt_cv_file_magic_cmd='func_win32_libid'
+ else
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ fi
;;
darwin* | rhapsody*)
@@ -5002,7 +5013,7 @@ hpux10.20* | hpux11*)
esac
;;
-interix3*)
+interix[3-9]*)
# PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here
lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$'
;;
@@ -5052,6 +5063,10 @@ osf3* | osf4* | osf5*)
lt_cv_deplibs_check_method=pass_all
;;
+rdos*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
solaris*)
lt_cv_deplibs_check_method=pass_all
;;
@@ -5138,7 +5153,7 @@ ia64-*-hpux*)
;;
*-*-irix6*)
# Find out which ABI we are using.
- echo '#line 5141 "configure"' > conftest.$ac_ext
+ echo '#line 5156 "configure"' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
ac_status=$?
@@ -5173,7 +5188,8 @@ ia64-*-hpux*)
rm -rf conftest*
;;
-x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \
+s390*-*linux*|sparc*-*linux*)
# Find out which ABI we are using.
echo 'int i;' > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
@@ -5184,6 +5200,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
case `/usr/bin/file conftest.o` in
*32-bit*)
case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_i386_fbsd"
+ ;;
x86_64-*linux*)
LD="${LD-ld} -m elf_i386"
;;
@@ -5200,6 +5219,9 @@ x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
;;
*64-bit*)
case $host in
+ x86_64-*kfreebsd*-gnu)
+ LD="${LD-ld} -m elf_x86_64_fbsd"
+ ;;
x86_64-*linux*)
LD="${LD-ld} -m elf_x86_64"
;;
@@ -5303,7 +5325,11 @@ sparc*-*solaris*)
*64-bit*)
case $lt_cv_prog_gnu_ld in
yes*) LD="${LD-ld} -m elf64_sparc" ;;
- *) LD="${LD-ld} -64" ;;
+ *)
+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ LD="${LD-ld} -64"
+ fi
+ ;;
esac
;;
esac
@@ -6023,7 +6049,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
-
# find the maximum length of command line arguments
{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
@@ -6110,24 +6135,27 @@ else
fi
;;
*)
- # If test is not a shell built-in, we'll probably end up computing a
- # maximum length that is only half of the actual maximum length, but
- # we can't tell.
- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
- while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null`
+ if test -n "$lt_cv_sys_max_cmd_len"; then
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4`
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3`
+ else
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
= "XX$teststring") >/dev/null 2>&1 &&
- new_result=`expr "X$teststring" : ".*" 2>&1` &&
- lt_cv_sys_max_cmd_len=$new_result &&
- test $i != 17 # 1/2 MB should be enough
- do
- i=`expr $i + 1`
- teststring=$teststring$teststring
- done
- teststring=
- # Add a significant safety factor because C++ compilers can tack on massive
- # amounts of additional arguments before passing them to the linker.
- # It appears as though 1/2 is a usable value.
- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ teststring=
+ # Add a significant safety factor because C++ compilers can tack on massive
+ # amounts of additional arguments before passing them to the linker.
+ # It appears as though 1/2 is a usable value.
+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2`
+ fi
;;
esac
@@ -6144,6 +6172,7 @@ fi
+
# Check for command to grab the raw symbol name followed by C symbol from nm.
{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
@@ -6334,7 +6363,7 @@ EOF
echo "$progname: failed program was:" >&5
cat conftest.$ac_ext >&5
fi
- rm -f conftest* conftst*
+ rm -rf conftest* conftst*
# Do not use the global_symbol_pipe unless it works.
if test "$pipe_works" = yes; then
@@ -6732,7 +6761,7 @@ test -z "$STRIP" && STRIP=:
test -z "$ac_objext" && ac_objext=o
# Determine commands to create old-style static archives.
-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs'
old_postinstall_cmds='chmod 644 $oldlib'
old_postuninstall_cmds=
@@ -6894,6 +6923,318 @@ fi
;;
esac
+
+ case $host_os in
+ rhapsody* | darwin*)
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args.
+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_DSYMUTIL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$DSYMUTIL"; then
+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+DSYMUTIL=$ac_cv_prog_DSYMUTIL
+if test -n "$DSYMUTIL"; then
+ { echo "$as_me:$LINENO: result: $DSYMUTIL" >&5
+echo "${ECHO_T}$DSYMUTIL" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_DSYMUTIL"; then
+ ac_ct_DSYMUTIL=$DSYMUTIL
+ # Extract the first word of "dsymutil", so it can be a program name with args.
+set dummy dsymutil; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_DSYMUTIL"; then
+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL
+if test -n "$ac_ct_DSYMUTIL"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5
+echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_DSYMUTIL" = x; then
+ DSYMUTIL=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ DSYMUTIL=$ac_ct_DSYMUTIL
+ fi
+else
+ DSYMUTIL="$ac_cv_prog_DSYMUTIL"
+fi
+
+ if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args.
+set dummy ${ac_tool_prefix}nmedit; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_NMEDIT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$NMEDIT"; then
+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+NMEDIT=$ac_cv_prog_NMEDIT
+if test -n "$NMEDIT"; then
+ { echo "$as_me:$LINENO: result: $NMEDIT" >&5
+echo "${ECHO_T}$NMEDIT" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_NMEDIT"; then
+ ac_ct_NMEDIT=$NMEDIT
+ # Extract the first word of "nmedit", so it can be a program name with args.
+set dummy nmedit; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_NMEDIT"; then
+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_NMEDIT="nmedit"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT
+if test -n "$ac_ct_NMEDIT"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5
+echo "${ECHO_T}$ac_ct_NMEDIT" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_NMEDIT" = x; then
+ NMEDIT=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ NMEDIT=$ac_ct_NMEDIT
+ fi
+else
+ NMEDIT="$ac_cv_prog_NMEDIT"
+fi
+
+
+ { echo "$as_me:$LINENO: checking for -single_module linker flag" >&5
+echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6; }
+if test "${lt_cv_apple_cc_single_mod+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_apple_cc_single_mod=no
+ if test -z "${LT_MULTI_MODULE}"; then
+ # By default we will add the -single_module flag. You can override
+ # by either setting the environment variable LT_MULTI_MODULE
+ # non-empty at configure time, or by adding -multi_module to the
+ # link flags.
+ echo "int foo(void){return 1;}" > conftest.c
+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ -dynamiclib ${wl}-single_module conftest.c
+ if test -f libconftest.dylib; then
+ lt_cv_apple_cc_single_mod=yes
+ rm -rf libconftest.dylib*
+ fi
+ rm conftest.c
+ fi
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5
+echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6; }
+ { echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5
+echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6; }
+if test "${lt_cv_ld_exported_symbols_list+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_ld_exported_symbols_list=no
+ save_LDFLAGS=$LDFLAGS
+ echo "_main" > conftest.sym
+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ lt_cv_ld_exported_symbols_list=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ lt_cv_ld_exported_symbols_list=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5
+echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6; }
+ case $host_os in
+ rhapsody* | darwin1.[0123])
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;;
+ darwin1.*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ darwin*)
+ # if running on 10.5 or later, the deployment target defaults
+ # to the OS version, if on x86, and 10.4, the deployment
+ # target defaults to 10.4. Don't you love it?
+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in
+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ 10.[012]*)
+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;;
+ 10.*)
+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;;
+ esac
+ ;;
+ esac
+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then
+ _lt_dar_single_mod='$single_module'
+ fi
+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then
+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym'
+ else
+ _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}"
+ fi
+ if test "$DSYMUTIL" != ":"; then
+ _lt_dsymutil="~$DSYMUTIL \$lib || :"
+ else
+ _lt_dsymutil=
+ fi
+ ;;
+ esac
+
+
enable_dlopen=no
enable_win32_dll=no
@@ -6932,10 +7273,10 @@ objext=o
objext=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
# Code to be used in simple link tests
-lt_simple_link_test_code='int main(){return(0);}\n'
+lt_simple_link_test_code='int main(){return(0);}'
# If no C compiler was specified, use CC.
@@ -6950,16 +7291,16 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
@@ -6976,7 +7317,7 @@ if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
else
lt_cv_prog_compiler_rtti_exceptions=no
ac_outfile=conftest.$ac_objext
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-fno-rtti -fno-exceptions"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
@@ -6987,11 +7328,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:6990: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7331: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:6994: \$? = $ac_status" >&5
+ echo "$as_me:7335: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -7042,13 +7383,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4'
;;
- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
lt_prog_compiler_pic='-DDLL_EXPORT'
;;
@@ -7058,7 +7401,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_pic='-fno-common'
;;
- interix3*)
+ interix[3-9]*)
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
# Instead, we relocate shared libraries at runtime.
;;
@@ -7116,7 +7459,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
esac
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
lt_prog_compiler_pic='-DDLL_EXPORT'
@@ -7168,6 +7511,22 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
# All Alpha code is PIC.
lt_prog_compiler_static='-non_shared'
;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ lt_prog_compiler_wl=''
+ ;;
+ esac
+ ;;
esac
;;
@@ -7177,6 +7536,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_static='-non_shared'
;;
+ rdos*)
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
solaris*)
lt_prog_compiler_pic='-KPIC'
lt_prog_compiler_static='-Bstatic'
@@ -7239,12 +7602,12 @@ if test -n "$lt_prog_compiler_pic"; then
{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- lt_prog_compiler_pic_works=no
+ lt_cv_prog_compiler_pic_works=no
ac_outfile=conftest.$ac_objext
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="$lt_prog_compiler_pic -DPIC"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
@@ -7255,27 +7618,27 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7258: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7621: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:7262: \$? = $ac_status" >&5
+ echo "$as_me:7625: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
$echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_pic_works=yes
+ lt_cv_prog_compiler_pic_works=yes
fi
fi
$rm conftest*
fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6; }
-if test x"$lt_prog_compiler_pic_works" = xyes; then
+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then
case $lt_prog_compiler_pic in
"" | " "*) ;;
*) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;;
@@ -7302,13 +7665,13 @@ esac
wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- lt_prog_compiler_static_works=no
+ lt_cv_prog_compiler_static_works=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
# The linker can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -7318,20 +7681,20 @@ else
$echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_static_works=yes
+ lt_cv_prog_compiler_static_works=yes
fi
else
- lt_prog_compiler_static_works=yes
+ lt_cv_prog_compiler_static_works=yes
fi
fi
- $rm conftest*
+ $rm -r conftest*
LDFLAGS="$save_LDFLAGS"
fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6; }
-if test x"$lt_prog_compiler_static_works" = xyes; then
+if test x"$lt_cv_prog_compiler_static_works" = xyes; then
:
else
lt_prog_compiler_static=
@@ -7348,7 +7711,7 @@ else
mkdir conftest
cd conftest
mkdir out
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-o out/conftest2.$ac_objext"
# Insert the option either (1) after the last *FLAGS variable, or
@@ -7359,11 +7722,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:7362: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:7725: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:7366: \$? = $ac_status" >&5
+ echo "$as_me:7729: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -7443,12 +7806,13 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
# it will be wrapped by ` (' and `)$', so one must not match beginning or
# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
# as well as any symbol that contains `d'.
- exclude_expsyms="_GLOBAL_OFFSET_TABLE_"
+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
# platforms (ab)use it in PIC code, but their linkers get confused if
# the symbol is explicitly referenced. Since portable code cannot
# rely on this symbol name, it's probably fine to never include it in
# preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
extract_expsyms_cmds=
# Just being paranoid about ensuring that cc_basename is set.
for cc_temp in $compiler""; do
@@ -7507,7 +7871,7 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
# See if GNU ld supports shared libraries.
case $host_os in
- aix3* | aix4* | aix5*)
+ aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
ld_shlibs=no
@@ -7555,7 +7919,7 @@ EOF
allow_undefined_flag=unsupported
always_export_symbols=no
enable_shared_with_static_runtimes=yes
- export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -7573,7 +7937,7 @@ EOF
fi
;;
- interix3*)
+ interix[3-9]*)
hardcode_direct=no
hardcode_shlibpath_var=no
hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
@@ -7588,7 +7952,7 @@ EOF
archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- linux* | k*bsd*-gnu)
+ gnu* | linux* | k*bsd*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
tmp_addflag=
case $cc_basename,$host_cpu in
@@ -7606,13 +7970,22 @@ EOF
ifc* | ifort*) # Intel Fortran compiler
tmp_addflag=' -nofor_main' ;;
esac
- archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ *)
+ tmp_sharedflag='-shared' ;;
+ esac
+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
if test $supports_anon_versioning = yes; then
archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~
cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
$echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
fi
link_all_deplibs=no
else
@@ -7718,7 +8091,7 @@ _LT_EOF
fi
;;
- aix4* | aix5*)
+ aix[4-9]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
@@ -7738,7 +8111,7 @@ _LT_EOF
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
@@ -7772,7 +8145,7 @@ _LT_EOF
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
- hardcode_direct=yes
+ :
else
# We have old collect2
hardcode_direct=unsupported
@@ -7846,11 +8219,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -7905,11 +8285,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -7963,7 +8350,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# The linker will automatically build a .lib file if we build a DLL.
old_archive_From_new_cmds='true'
# FIXME: Should let the user specify the lib program.
- old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs'
fix_srcfile_path='`cygpath -w "$srcfile"`'
enable_shared_with_static_runtimes=yes
;;
@@ -7996,19 +8383,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
link_all_deplibs=yes
if test "$GCC" = yes ; then
output_verbose_link_cmd='echo'
- archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
else
case $cc_basename in
xlc*)
output_verbose_link_cmd='echo'
- archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
*)
@@ -8170,24 +8556,28 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
openbsd*)
- hardcode_direct=yes
- hardcode_shlibpath_var=no
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- export_dynamic_flag_spec='${wl}-E'
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec='-R$libdir'
+ ;;
+ *)
+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
else
- case $host_os in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec='-R$libdir'
- ;;
- *)
- archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
- ;;
- esac
+ ld_shlibs=no
fi
;;
@@ -8246,17 +8636,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
case $host_os in
solaris2.[0-5] | solaris2.[0-5].*) ;;
*)
- # The compiler driver will combine linker options so we
- # cannot just pass the convience library names through
- # without $wl, iff we do not link with $LD.
- # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- case $wlarc in
- '')
- whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
- *)
- whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
- esac ;;
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
esac
link_all_deplibs=yes
;;
@@ -8313,7 +8702,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
no_undefined_flag='${wl}-z,text'
archive_cmds_need_lc=no
hardcode_shlibpath_var=no
@@ -8390,7 +8779,7 @@ x|xyes)
{ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
$rm conftest*
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
@@ -8448,17 +8837,55 @@ shlibpath_overrides_runpath=unknown
version_type=none
dynamic_linker="$host_os ld.so"
sys_lib_dlsearch_path_spec="/lib /usr/lib"
+
if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ case $host_os in
+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;;
+ *) lt_awk_arg="/^libraries:/" ;;
+ esac
+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then
# if the path contains ";" then we assume it to be the separator
# otherwise default to the standard path separator (i.e. ":") - it is
# assumed that no part of a normal pathname contains ";" but that should
# okay in the real world where ";" in dirpaths is itself problematic.
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
+ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'`
else
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
+ lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
fi
+ # Ok, now we have the path, separated by spaces, we can step through it
+ # and add multilib dir if necessary.
+ lt_tmp_lt_search_path_spec=
+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null`
+ for lt_sys_path in $lt_search_path_spec; do
+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir"
+ else
+ test -d "$lt_sys_path" && \
+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path"
+ fi
+ done
+ lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk '
+BEGIN {RS=" "; FS="/|\n";} {
+ lt_foo="";
+ lt_count=0;
+ for (lt_i = NF; lt_i > 0; lt_i--) {
+ if ($lt_i != "" && $lt_i != ".") {
+ if ($lt_i == "..") {
+ lt_count++;
+ } else {
+ if (lt_count == 0) {
+ lt_foo="/" $lt_i lt_foo;
+ } else {
+ lt_count--;
+ }
+ }
+ }
+ }
+ if (lt_foo != "") { lt_freq[lt_foo]++; }
+ if (lt_freq[lt_foo] == 1) { print lt_foo; }
+}'`
+ sys_lib_search_path_spec=`echo $lt_search_path_spec`
else
sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
fi
@@ -8479,7 +8906,7 @@ aix3*)
soname_spec='${libname}${release}${shared_ext}$major'
;;
-aix4* | aix5*)
+aix[4-9]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -8618,12 +9045,8 @@ darwin* | rhapsody*)
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
- if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
- else
- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
- fi
+
+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"
sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
;;
@@ -8677,7 +9100,7 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
- freebsd*) # from 4.6 on
+ *) # from 4.6 on, and DragonFly
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
@@ -8740,7 +9163,7 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
-interix3*)
+interix[3-9]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -8811,7 +9234,7 @@ linux* | k*bsd*-gnu)
# Append ld.so.conf contents to the search path
if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
@@ -8917,6 +9340,10 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
+rdos*)
+ dynamic_linker=no
+ ;;
+
solaris*)
version_type=linux
need_lib_prefix=no
@@ -9013,6 +9440,21 @@ esac
echo "${ECHO_T}$dynamic_linker" >&6; }
test "$dynamic_linker" = no && can_build_shared=no
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
if test "$GCC" = yes; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -9070,6 +9512,7 @@ else
darwin*)
if test -n "$STRIP" ; then
striplib="$STRIP -x"
+ old_striplib="$STRIP -S"
{ echo "$as_me:$LINENO: result: yes" >&5
echo "${ECHO_T}yes" >&6; }
else
@@ -9331,7 +9774,7 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
if test $ac_cv_lib_dld_shl_load = yes; then
- lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"
else
{ echo "$as_me:$LINENO: checking for dlopen" >&5
echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
@@ -9607,7 +10050,7 @@ fi
{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
if test $ac_cv_lib_dld_dld_link = yes; then
- lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"
fi
@@ -9656,7 +10099,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 9659 "configure"
+#line 10102 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -9756,7 +10199,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<EOF
-#line 9759 "configure"
+#line 10202 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -9883,7 +10326,7 @@ aix3*)
fi
;;
-aix4* | aix5*)
+aix[4-9]*)
if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
test "$enable_shared" = yes && enable_static=no
fi
@@ -9939,6 +10382,7 @@ if test -f "$ltmain"; then
predeps \
postdeps \
compiler_lib_search_path \
+ compiler_lib_search_dirs \
archive_cmds \
archive_expsym_cmds \
postinstall_cmds \
@@ -9954,6 +10398,7 @@ if test -f "$ltmain"; then
module_cmds \
module_expsym_cmds \
lt_cv_prog_compiler_c_o \
+ fix_srcfile_path \
exclude_expsyms \
include_expsyms; do
@@ -9998,7 +10443,7 @@ echo "$as_me: creating $ofile" >&6;}
# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
# NOTE: Changes made to this file will be lost: look at ltmain.sh.
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
# Free Software Foundation, Inc.
#
# This file is part of GNU Libtool:
@@ -10234,6 +10679,10 @@ predeps=$lt_predeps
# shared library.
postdeps=$lt_postdeps
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs
+
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=$lt_compiler_lib_search_path
@@ -10322,7 +10771,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path"
+fix_srcfile_path=$lt_fix_srcfile_path
# Set to yes if exported symbols are required.
always_export_symbols=$always_export_symbols
@@ -10482,6 +10931,7 @@ postdep_objects_CXX=
predeps_CXX=
postdeps_CXX=
compiler_lib_search_path_CXX=
+compiler_lib_search_dirs_CXX=
# Source file extension for C++ test sources.
ac_ext=cpp
@@ -10491,10 +10941,10 @@ objext=o
objext_CXX=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code="int some_variable = 0;\n"
+lt_simple_compile_test_code="int some_variable = 0;"
# Code to be used in simple link tests
-lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }'
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
@@ -10510,16 +10960,16 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
# Allow CC to be a program name with arguments.
@@ -10726,7 +11176,7 @@ case $host_os in
# FIXME: insert proper C++ library support
ld_shlibs_CXX=no
;;
- aix4* | aix5*)
+ aix[4-9]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
@@ -10739,7 +11189,7 @@ case $host_os in
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do
case $ld_flag in
*-brtl*)
@@ -10775,7 +11225,7 @@ case $host_os in
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
- hardcode_direct_CXX=yes
+ :
else
# We have old collect2
hardcode_direct_CXX=unsupported
@@ -10849,11 +11299,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -10909,11 +11366,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -10983,59 +11447,31 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
darwin* | rhapsody*)
- case $host_os in
- rhapsody* | darwin1.[012])
- allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
- ;;
- *) # Darwin 1.3 on
- if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
- else
- case ${MACOSX_DEPLOYMENT_TARGET} in
- 10.[012])
- allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
- ;;
- 10.*)
- allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
- ;;
- esac
- fi
- ;;
- esac
archive_cmds_need_lc_CXX=no
hardcode_direct_CXX=no
hardcode_automatic_CXX=yes
hardcode_shlibpath_var_CXX=unsupported
whole_archive_flag_spec_CXX=''
link_all_deplibs_CXX=yes
-
- if test "$GXX" = yes ; then
- lt_int_apple_cc_single_mod=no
+ allow_undefined_flag_CXX="$_lt_dar_allow_undefined"
+ if test "$GXX" = yes ; then
output_verbose_link_cmd='echo'
- if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
- lt_int_apple_cc_single_mod=yes
+ archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
+ if test "$lt_cv_apple_cc_single_mod" != "yes"; then
+ archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}"
+ archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}"
fi
- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
- archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- else
- archive_cmds_CXX='$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- fi
- module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- else
- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -r -keep_private_externs -nostdlib -o ${lib}-master.o $libobjs~$CC -dynamiclib $allow_undefined_flag -o $lib ${lib}-master.o $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- fi
- module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
else
case $cc_basename in
xlc*)
output_verbose_link_cmd='echo'
- archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
*)
@@ -11118,9 +11554,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
hardcode_libdir_separator_CXX=:
case $host_cpu in
- hppa*64*|ia64*)
- hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
- ;;
+ hppa*64*|ia64*) ;;
*)
export_dynamic_flag_spec_CXX='${wl}-E'
;;
@@ -11188,7 +11622,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
esac
;;
- interix3*)
+ interix[3-9]*)
hardcode_direct_CXX=no
hardcode_shlibpath_var_CXX=no
hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
@@ -11280,7 +11714,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
;;
- pgCC*)
+ pgCC* | pgcpp*)
# Portland Group C++ compiler
archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib'
@@ -11308,6 +11742,29 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# dependencies.
output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols'
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+
+ # Not sure whether something based on
+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1
+ # would be better.
+ output_verbose_link_cmd='echo'
+
+ # Archives containing C++ object files must be created using
+ # "CC -xar", where "CC" is the Sun C++ compiler. This is
+ # necessary to make sure instantiated templates are included
+ # in the archive.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ esac
+ ;;
esac
;;
lynxos*)
@@ -11346,16 +11803,20 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
ld_shlibs_CXX=no
;;
openbsd*)
- hardcode_direct_CXX=yes
- hardcode_shlibpath_var_CXX=no
- archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
- hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
- export_dynamic_flag_spec_CXX='${wl}-E'
- whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ else
+ ld_shlibs_CXX=no
fi
- output_verbose_link_cmd='echo'
;;
osf3*)
case $cc_basename in
@@ -11517,15 +11978,10 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
case $host_os in
solaris2.[0-5] | solaris2.[0-5].*) ;;
*)
- # The C++ compiler is used as linker so we must use $wl
- # flag to pass the commands to the underlying system
- # linker. We must also pass each convience library through
- # to the system linker between allextract/defaultextract.
- # The C++ compiler will combine linker options so we
- # cannot just pass the convience library names through
- # without $wl.
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract'
;;
esac
link_all_deplibs_CXX=yes
@@ -11572,6 +12028,12 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
fi
;;
esac
@@ -11659,7 +12121,6 @@ test "$ld_shlibs_CXX" = no && can_build_shared=no
GCC_CXX="$GXX"
LD_CXX="$LD"
-
cat > conftest.$ac_ext <<EOF
class Foo
{
@@ -11761,9 +12222,14 @@ fi
$rm -f confest.$objext
+compiler_lib_search_dirs_CXX=
+if test -n "$compiler_lib_search_path_CXX"; then
+ compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'`
+fi
+
# PORTME: override above test on systems where it is broken
case $host_os in
-interix3*)
+interix[3-9]*)
# Interix 3.5 installs completely hosed .la files for C++, so rather than
# hack all around it, let's just trust "g++" to DTRT.
predep_objects_CXX=
@@ -11771,19 +12237,51 @@ interix3*)
postdeps_CXX=
;;
+linux*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ #
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+ if test "$solaris_use_stlport4" != yes; then
+ postdeps_CXX='-library=Cstd -library=Crun'
+ fi
+ ;;
+ esac
+ ;;
+
solaris*)
case $cc_basename in
CC*)
+ # The more standards-conforming stlport4 library is
+ # incompatible with the Cstd library. Avoid specifying
+ # it if it's in CXXFLAGS. Ignore libCrun as
+ # -library=stlport4 depends on it.
+ case " $CXX $CXXFLAGS " in
+ *" -library=stlport4 "*)
+ solaris_use_stlport4=yes
+ ;;
+ esac
+
# Adding this requires a known-good setup of shared libraries for
# Sun compiler versions before 5.6, else PIC objects from an old
# archive will be linked into the output, leading to subtle bugs.
- postdeps_CXX='-lCstd -lCrun'
+ if test "$solaris_use_stlport4" != yes; then
+ postdeps_CXX='-library=Cstd -library=Crun'
+ fi
;;
esac
;;
esac
-
case " $postdeps_CXX " in
*" -lc "*) archive_cmds_need_lc_CXX=no ;;
esac
@@ -11814,12 +12312,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
# like `-m68040'.
lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4'
;;
- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
- mingw* | os2* | pw32*)
+ mingw* | cygwin* | os2* | pw32*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
lt_prog_compiler_pic_CXX='-DDLL_EXPORT'
;;
darwin* | rhapsody*)
@@ -11831,7 +12331,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
# DJGPP does not support shared libraries at all
lt_prog_compiler_pic_CXX=
;;
- interix3*)
+ interix[3-9]*)
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
# Instead, we relocate shared libraries at runtime.
;;
@@ -11857,7 +12357,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
esac
else
case $host_os in
- aix4* | aix5*)
+ aix[4-9]*)
# All AIX code is PIC.
if test "$host_cpu" = ia64; then
# AIX 5 now supports IA64 processor
@@ -11953,7 +12453,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_pic_CXX='-KPIC'
lt_prog_compiler_static_CXX='-static'
;;
- pgCC*)
+ pgCC* | pgcpp*)
# Portland Group C++ compiler.
lt_prog_compiler_wl_CXX='-Wl,'
lt_prog_compiler_pic_CXX='-fpic'
@@ -11967,6 +12467,14 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_static_CXX='-non_shared'
;;
*)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C++ 5.9
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ esac
;;
esac
;;
@@ -12076,12 +12584,12 @@ if test -n "$lt_prog_compiler_pic_CXX"; then
{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- lt_prog_compiler_pic_works_CXX=no
+ lt_cv_prog_compiler_pic_works_CXX=no
ac_outfile=conftest.$ac_objext
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
@@ -12092,27 +12600,27 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12095: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12603: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:12099: \$? = $ac_status" >&5
+ echo "$as_me:12607: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
$echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_pic_works_CXX=yes
+ lt_cv_prog_compiler_pic_works_CXX=yes
fi
fi
$rm conftest*
fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_CXX" >&6; }
-if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then
case $lt_prog_compiler_pic_CXX in
"" | " "*) ;;
*) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
@@ -12139,13 +12647,13 @@ esac
wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- lt_prog_compiler_static_works_CXX=no
+ lt_cv_prog_compiler_static_works_CXX=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
# The linker can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -12155,20 +12663,20 @@ else
$echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_static_works_CXX=yes
+ lt_cv_prog_compiler_static_works_CXX=yes
fi
else
- lt_prog_compiler_static_works_CXX=yes
+ lt_cv_prog_compiler_static_works_CXX=yes
fi
fi
- $rm conftest*
+ $rm -r conftest*
LDFLAGS="$save_LDFLAGS"
fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_static_works_CXX" >&6; }
-if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then
:
else
lt_prog_compiler_static_CXX=
@@ -12185,7 +12693,7 @@ else
mkdir conftest
cd conftest
mkdir out
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-o out/conftest2.$ac_objext"
# Insert the option either (1) after the last *FLAGS variable, or
@@ -12196,11 +12704,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:12199: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:12707: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:12203: \$? = $ac_status" >&5
+ echo "$as_me:12711: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -12253,7 +12761,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
case $host_os in
- aix4* | aix5*)
+ aix[4-9]*)
# If we're using GNU nm, then we don't want the "-C" option.
# -C means demangle to AIX nm, but means don't demangle with GNU nm
if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
@@ -12266,7 +12774,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
export_symbols_cmds_CXX="$ltdll_cmds"
;;
cygwin* | mingw*)
- export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
;;
linux* | k*bsd*-gnu)
link_all_deplibs_CXX=no
@@ -12275,6 +12783,7 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
;;
esac
+ exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
@@ -12300,7 +12809,7 @@ x|xyes)
{ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
$rm conftest*
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
@@ -12358,20 +12867,7 @@ shlibpath_overrides_runpath=unknown
version_type=none
dynamic_linker="$host_os ld.so"
sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
- # if the path contains ";" then we assume it to be the separator
- # otherwise default to the standard path separator (i.e. ":") - it is
- # assumed that no part of a normal pathname contains ";" but that should
- # okay in the real world where ";" in dirpaths is itself problematic.
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
- else
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
-else
- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+
need_lib_prefix=unknown
hardcode_into_libs=no
@@ -12389,7 +12885,7 @@ aix3*)
soname_spec='${libname}${release}${shared_ext}$major'
;;
-aix4* | aix5*)
+aix[4-9]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -12528,12 +13024,7 @@ darwin* | rhapsody*)
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
- if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
- else
- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
- fi
+
sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
;;
@@ -12587,7 +13078,7 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
- freebsd*) # from 4.6 on
+ *) # from 4.6 on, and DragonFly
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
@@ -12650,7 +13141,7 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
-interix3*)
+interix[3-9]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -12721,7 +13212,7 @@ linux* | k*bsd*-gnu)
# Append ld.so.conf contents to the search path
if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
@@ -12827,6 +13318,10 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
+rdos*)
+ dynamic_linker=no
+ ;;
+
solaris*)
version_type=linux
need_lib_prefix=no
@@ -12923,6 +13418,21 @@ esac
echo "${ECHO_T}$dynamic_linker" >&6; }
test "$dynamic_linker" = no && can_build_shared=no
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
if test "$GCC" = yes; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -13006,6 +13516,7 @@ if test -f "$ltmain"; then
predeps_CXX \
postdeps_CXX \
compiler_lib_search_path_CXX \
+ compiler_lib_search_dirs_CXX \
archive_cmds_CXX \
archive_expsym_cmds_CXX \
postinstall_cmds_CXX \
@@ -13021,6 +13532,7 @@ if test -f "$ltmain"; then
module_cmds_CXX \
module_expsym_cmds_CXX \
lt_cv_prog_compiler_c_o_CXX \
+ fix_srcfile_path_CXX \
exclude_expsyms_CXX \
include_expsyms_CXX; do
@@ -13253,6 +13765,10 @@ predeps=$lt_predeps_CXX
# shared library.
postdeps=$lt_postdeps_CXX
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX
+
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
@@ -13341,7 +13857,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_CXX"
+fix_srcfile_path=$lt_fix_srcfile_path
# Set to yes if exported symbols are required.
always_export_symbols=$always_export_symbols_CXX
@@ -13432,10 +13948,17 @@ objext=o
objext_F77=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+lt_simple_compile_test_code="\
+ subroutine t
+ return
+ end
+"
# Code to be used in simple link tests
-lt_simple_link_test_code=" program t\n end\n"
+lt_simple_link_test_code="\
+ program t
+ end
+"
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
@@ -13451,16 +13974,16 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
# Allow CC to be a program name with arguments.
@@ -13498,7 +14021,7 @@ aix3*)
postinstall_cmds='$RANLIB $lib'
fi
;;
-aix4* | aix5*)
+aix[4-9]*)
if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
test "$enable_shared" = yes && enable_static=no
fi
@@ -13544,13 +14067,15 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4'
;;
- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
lt_prog_compiler_pic_F77='-DDLL_EXPORT'
;;
@@ -13560,7 +14085,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_pic_F77='-fno-common'
;;
- interix3*)
+ interix[3-9]*)
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
# Instead, we relocate shared libraries at runtime.
;;
@@ -13618,7 +14143,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
esac
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
lt_prog_compiler_pic_F77='-DDLL_EXPORT'
@@ -13670,6 +14195,22 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
# All Alpha code is PIC.
lt_prog_compiler_static_F77='-non_shared'
;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ lt_prog_compiler_wl_F77='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ lt_prog_compiler_wl_F77=''
+ ;;
+ esac
+ ;;
esac
;;
@@ -13679,6 +14220,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_static_F77='-non_shared'
;;
+ rdos*)
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
solaris*)
lt_prog_compiler_pic_F77='-KPIC'
lt_prog_compiler_static_F77='-Bstatic'
@@ -13741,12 +14286,12 @@ if test -n "$lt_prog_compiler_pic_F77"; then
{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- lt_prog_compiler_pic_works_F77=no
+ lt_cv_prog_compiler_pic_works_F77=no
ac_outfile=conftest.$ac_objext
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="$lt_prog_compiler_pic_F77"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
@@ -13757,27 +14302,27 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13760: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14305: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:13764: \$? = $ac_status" >&5
+ echo "$as_me:14309: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
$echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_pic_works_F77=yes
+ lt_cv_prog_compiler_pic_works_F77=yes
fi
fi
$rm conftest*
fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_F77" >&6; }
-if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then
case $lt_prog_compiler_pic_F77 in
"" | " "*) ;;
*) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
@@ -13804,13 +14349,13 @@ esac
wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- lt_prog_compiler_static_works_F77=no
+ lt_cv_prog_compiler_static_works_F77=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
# The linker can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -13820,20 +14365,20 @@ else
$echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_static_works_F77=yes
+ lt_cv_prog_compiler_static_works_F77=yes
fi
else
- lt_prog_compiler_static_works_F77=yes
+ lt_cv_prog_compiler_static_works_F77=yes
fi
fi
- $rm conftest*
+ $rm -r conftest*
LDFLAGS="$save_LDFLAGS"
fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_static_works_F77" >&6; }
-if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then
:
else
lt_prog_compiler_static_F77=
@@ -13850,7 +14395,7 @@ else
mkdir conftest
cd conftest
mkdir out
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-o out/conftest2.$ac_objext"
# Insert the option either (1) after the last *FLAGS variable, or
@@ -13861,11 +14406,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:13864: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:14409: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:13868: \$? = $ac_status" >&5
+ echo "$as_me:14413: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -13945,12 +14490,13 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
# it will be wrapped by ` (' and `)$', so one must not match beginning or
# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
# as well as any symbol that contains `d'.
- exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_"
+ exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
# platforms (ab)use it in PIC code, but their linkers get confused if
# the symbol is explicitly referenced. Since portable code cannot
# rely on this symbol name, it's probably fine to never include it in
# preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
extract_expsyms_cmds=
# Just being paranoid about ensuring that cc_basename is set.
for cc_temp in $compiler""; do
@@ -14009,7 +14555,7 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
# See if GNU ld supports shared libraries.
case $host_os in
- aix3* | aix4* | aix5*)
+ aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
ld_shlibs_F77=no
@@ -14057,7 +14603,7 @@ EOF
allow_undefined_flag_F77=unsupported
always_export_symbols_F77=no
enable_shared_with_static_runtimes_F77=yes
- export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -14075,7 +14621,7 @@ EOF
fi
;;
- interix3*)
+ interix[3-9]*)
hardcode_direct_F77=no
hardcode_shlibpath_var_F77=no
hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
@@ -14090,7 +14636,7 @@ EOF
archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- linux* | k*bsd*-gnu)
+ gnu* | linux* | k*bsd*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
tmp_addflag=
case $cc_basename,$host_cpu in
@@ -14108,13 +14654,22 @@ EOF
ifc* | ifort*) # Intel Fortran compiler
tmp_addflag=' -nofor_main' ;;
esac
- archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ *)
+ tmp_sharedflag='-shared' ;;
+ esac
+ archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
if test $supports_anon_versioning = yes; then
archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
$echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
fi
link_all_deplibs_F77=no
else
@@ -14220,7 +14775,7 @@ _LT_EOF
fi
;;
- aix4* | aix5*)
+ aix[4-9]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
@@ -14240,7 +14795,7 @@ _LT_EOF
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
@@ -14274,7 +14829,7 @@ _LT_EOF
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
- hardcode_direct_F77=yes
+ :
else
# We have old collect2
hardcode_direct_F77=unsupported
@@ -14338,11 +14893,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -14387,11 +14949,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -14445,7 +15014,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# The linker will automatically build a .lib file if we build a DLL.
old_archive_From_new_cmds_F77='true'
# FIXME: Should let the user specify the lib program.
- old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs'
fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
enable_shared_with_static_runtimes_F77=yes
;;
@@ -14478,19 +15047,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
link_all_deplibs_F77=yes
if test "$GCC" = yes ; then
output_verbose_link_cmd='echo'
- archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
else
case $cc_basename in
xlc*)
output_verbose_link_cmd='echo'
- archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
*)
@@ -14652,24 +15220,28 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
openbsd*)
- hardcode_direct_F77=yes
- hardcode_shlibpath_var_F77=no
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
- export_dynamic_flag_spec_F77='${wl}-E'
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
else
- case $host_os in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec_F77='-R$libdir'
- ;;
- *)
- archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
- ;;
- esac
+ ld_shlibs_F77=no
fi
;;
@@ -14728,17 +15300,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
case $host_os in
solaris2.[0-5] | solaris2.[0-5].*) ;;
*)
- # The compiler driver will combine linker options so we
- # cannot just pass the convience library names through
- # without $wl, iff we do not link with $LD.
- # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- case $wlarc in
- '')
- whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
- *)
- whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
- esac ;;
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
esac
link_all_deplibs_F77=yes
;;
@@ -14795,7 +15366,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
no_undefined_flag_F77='${wl}-z,text'
archive_cmds_need_lc_F77=no
hardcode_shlibpath_var_F77=no
@@ -14872,7 +15443,7 @@ x|xyes)
{ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
$rm conftest*
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
@@ -14930,20 +15501,7 @@ shlibpath_overrides_runpath=unknown
version_type=none
dynamic_linker="$host_os ld.so"
sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
- # if the path contains ";" then we assume it to be the separator
- # otherwise default to the standard path separator (i.e. ":") - it is
- # assumed that no part of a normal pathname contains ";" but that should
- # okay in the real world where ";" in dirpaths is itself problematic.
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
- else
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
-else
- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+
need_lib_prefix=unknown
hardcode_into_libs=no
@@ -14961,7 +15519,7 @@ aix3*)
soname_spec='${libname}${release}${shared_ext}$major'
;;
-aix4* | aix5*)
+aix[4-9]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -15100,12 +15658,7 @@ darwin* | rhapsody*)
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
- if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
- else
- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
- fi
+
sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
;;
@@ -15159,7 +15712,7 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
- freebsd*) # from 4.6 on
+ *) # from 4.6 on, and DragonFly
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
@@ -15222,7 +15775,7 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
-interix3*)
+interix[3-9]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -15293,7 +15846,7 @@ linux* | k*bsd*-gnu)
# Append ld.so.conf contents to the search path
if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
@@ -15399,6 +15952,10 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
+rdos*)
+ dynamic_linker=no
+ ;;
+
solaris*)
version_type=linux
need_lib_prefix=no
@@ -15495,6 +16052,21 @@ esac
echo "${ECHO_T}$dynamic_linker" >&6; }
test "$dynamic_linker" = no && can_build_shared=no
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
if test "$GCC" = yes; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -15578,6 +16150,7 @@ if test -f "$ltmain"; then
predeps_F77 \
postdeps_F77 \
compiler_lib_search_path_F77 \
+ compiler_lib_search_dirs_F77 \
archive_cmds_F77 \
archive_expsym_cmds_F77 \
postinstall_cmds_F77 \
@@ -15593,6 +16166,7 @@ if test -f "$ltmain"; then
module_cmds_F77 \
module_expsym_cmds_F77 \
lt_cv_prog_compiler_c_o_F77 \
+ fix_srcfile_path_F77 \
exclude_expsyms_F77 \
include_expsyms_F77; do
@@ -15825,6 +16399,10 @@ predeps=$lt_predeps_F77
# shared library.
postdeps=$lt_postdeps_F77
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77
+
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=$lt_compiler_lib_search_path_F77
@@ -15913,7 +16491,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_F77"
+fix_srcfile_path=$lt_fix_srcfile_path
# Set to yes if exported symbols are required.
always_export_symbols=$always_export_symbols_F77
@@ -15971,10 +16549,10 @@ objext=o
objext_GCJ=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code="class foo {}\n"
+lt_simple_compile_test_code="class foo {}"
# Code to be used in simple link tests
-lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }'
# ltmain only uses $CC for tagged configurations so make sure $CC is set.
@@ -15990,16 +16568,16 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
# Allow CC to be a program name with arguments.
@@ -16037,7 +16615,7 @@ if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
else
lt_cv_prog_compiler_rtti_exceptions=no
ac_outfile=conftest.$ac_objext
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-fno-rtti -fno-exceptions"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
@@ -16048,11 +16626,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16051: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16629: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16055: \$? = $ac_status" >&5
+ echo "$as_me:16633: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
@@ -16103,14 +16681,16 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4'
;;
- beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
# PIC is the default for these OSes.
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+ # Although the cygwin gcc ignores -fPIC, still need this for old-style
+ # (--disable-auto-import) libraries
+
;;
darwin* | rhapsody*)
@@ -16119,7 +16699,7 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_pic_GCJ='-fno-common'
;;
- interix3*)
+ interix[3-9]*)
# Interix 3.x gcc -fpic/-fPIC options generate broken code.
# Instead, we relocate shared libraries at runtime.
;;
@@ -16177,10 +16757,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
esac
;;
- mingw* | pw32* | os2*)
+ mingw* | cygwin* | pw32* | os2*)
# This hack is so that the source file can tell whether it is being
# built for inclusion in a dll (and should export symbols for example).
- lt_prog_compiler_pic_GCJ='-DDLL_EXPORT'
+
;;
hpux9* | hpux10* | hpux11*)
@@ -16229,6 +16809,22 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
# All Alpha code is PIC.
lt_prog_compiler_static_GCJ='-non_shared'
;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ # Sun C 5.9
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ ;;
+ *Sun\ F*)
+ # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ lt_prog_compiler_wl_GCJ=''
+ ;;
+ esac
+ ;;
esac
;;
@@ -16238,6 +16834,10 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
lt_prog_compiler_static_GCJ='-non_shared'
;;
+ rdos*)
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
solaris*)
lt_prog_compiler_pic_GCJ='-KPIC'
lt_prog_compiler_static_GCJ='-Bstatic'
@@ -16300,12 +16900,12 @@ if test -n "$lt_prog_compiler_pic_GCJ"; then
{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- lt_prog_compiler_pic_works_GCJ=no
+ lt_cv_prog_compiler_pic_works_GCJ=no
ac_outfile=conftest.$ac_objext
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
# Insert the option either (1) after the last *FLAGS variable, or
# (2) before a word containing "conftest.", or (3) at the end.
@@ -16316,27 +16916,27 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16319: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:16919: $lt_compile\"" >&5)
(eval "$lt_compile" 2>conftest.err)
ac_status=$?
cat conftest.err >&5
- echo "$as_me:16323: \$? = $ac_status" >&5
+ echo "$as_me:16923: \$? = $ac_status" >&5
if (exit $ac_status) && test -s "$ac_outfile"; then
# The compiler can only warn and ignore the option if not recognized
# So say no if there are warnings other than the usual output.
$echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_pic_works_GCJ=yes
+ lt_cv_prog_compiler_pic_works_GCJ=yes
fi
fi
$rm conftest*
fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
-echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_pic_works_GCJ" >&6; }
-if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then
case $lt_prog_compiler_pic_GCJ in
"" | " "*) ;;
*) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
@@ -16363,13 +16963,13 @@ esac
wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
-if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
- lt_prog_compiler_static_works_GCJ=no
+ lt_cv_prog_compiler_static_works_GCJ=no
save_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
- printf "$lt_simple_link_test_code" > conftest.$ac_ext
+ echo "$lt_simple_link_test_code" > conftest.$ac_ext
if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then
# The linker can only warn and ignore the option if not recognized
# So say no if there are warnings
@@ -16379,20 +16979,20 @@ else
$echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
$SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
if diff conftest.exp conftest.er2 >/dev/null; then
- lt_prog_compiler_static_works_GCJ=yes
+ lt_cv_prog_compiler_static_works_GCJ=yes
fi
else
- lt_prog_compiler_static_works_GCJ=yes
+ lt_cv_prog_compiler_static_works_GCJ=yes
fi
fi
- $rm conftest*
+ $rm -r conftest*
LDFLAGS="$save_LDFLAGS"
fi
-{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
-echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_static_works_GCJ" >&6; }
-if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then
:
else
lt_prog_compiler_static_GCJ=
@@ -16409,7 +17009,7 @@ else
mkdir conftest
cd conftest
mkdir out
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
lt_compiler_flag="-o out/conftest2.$ac_objext"
# Insert the option either (1) after the last *FLAGS variable, or
@@ -16420,11 +17020,11 @@ else
-e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
-e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
-e 's:$: $lt_compiler_flag:'`
- (eval echo "\"\$as_me:16423: $lt_compile\"" >&5)
+ (eval echo "\"\$as_me:17023: $lt_compile\"" >&5)
(eval "$lt_compile" 2>out/conftest.err)
ac_status=$?
cat out/conftest.err >&5
- echo "$as_me:16427: \$? = $ac_status" >&5
+ echo "$as_me:17027: \$? = $ac_status" >&5
if (exit $ac_status) && test -s out/conftest2.$ac_objext
then
# The compiler can only warn and ignore the option if not recognized
@@ -16504,12 +17104,13 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar
# it will be wrapped by ` (' and `)$', so one must not match beginning or
# end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc',
# as well as any symbol that contains `d'.
- exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_"
+ exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'
# Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out
# platforms (ab)use it in PIC code, but their linkers get confused if
# the symbol is explicitly referenced. Since portable code cannot
# rely on this symbol name, it's probably fine to never include it in
# preloaded symbol tables.
+ # Exclude shared library initialization/finalization symbols.
extract_expsyms_cmds=
# Just being paranoid about ensuring that cc_basename is set.
for cc_temp in $compiler""; do
@@ -16568,7 +17169,7 @@ cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
# See if GNU ld supports shared libraries.
case $host_os in
- aix3* | aix4* | aix5*)
+ aix[3-9]*)
# On AIX/PPC, the GNU linker is very broken
if test "$host_cpu" != ia64; then
ld_shlibs_GCJ=no
@@ -16616,7 +17217,7 @@ EOF
allow_undefined_flag_GCJ=unsupported
always_export_symbols_GCJ=no
enable_shared_with_static_runtimes_GCJ=yes
- export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib'
@@ -16634,7 +17235,7 @@ EOF
fi
;;
- interix3*)
+ interix[3-9]*)
hardcode_direct_GCJ=no
hardcode_shlibpath_var_GCJ=no
hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
@@ -16649,7 +17250,7 @@ EOF
archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib'
;;
- linux* | k*bsd*-gnu)
+ gnu* | linux* | k*bsd*-gnu)
if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
tmp_addflag=
case $cc_basename,$host_cpu in
@@ -16667,13 +17268,22 @@ EOF
ifc* | ifort*) # Intel Fortran compiler
tmp_addflag=' -nofor_main' ;;
esac
- archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*) # Sun C 5.9
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_sharedflag='-G' ;;
+ *Sun\ F*) # Sun Fortran 8.3
+ tmp_sharedflag='-G' ;;
+ *)
+ tmp_sharedflag='-shared' ;;
+ esac
+ archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
if test $supports_anon_versioning = yes; then
archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
$echo "local: *; };" >> $output_objdir/$libname.ver~
- $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
fi
link_all_deplibs_GCJ=no
else
@@ -16779,7 +17389,7 @@ _LT_EOF
fi
;;
- aix4* | aix5*)
+ aix[4-9]*)
if test "$host_cpu" = ia64; then
# On IA64, the linker does run time linking by default, so we don't
# have to do anything special.
@@ -16799,7 +17409,7 @@ _LT_EOF
# Test if we are trying to use run time linking or normal
# AIX style linking. If -brtl is somewhere in LDFLAGS, we
# need to do runtime linking.
- case $host_os in aix4.[23]|aix4.[23].*|aix5*)
+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*)
for ld_flag in $LDFLAGS; do
if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then
aix_use_runtimelinking=yes
@@ -16833,7 +17443,7 @@ _LT_EOF
strings "$collect2name" | grep resolve_lib_name >/dev/null
then
# We have reworked collect2
- hardcode_direct_GCJ=yes
+ :
else
# We have old collect2
hardcode_direct_GCJ=unsupported
@@ -16907,11 +17517,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -16966,11 +17583,18 @@ eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
} && test -s conftest$ac_exeext &&
$as_test_x conftest$ac_exeext; then
-aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`
+lt_aix_libpath_sed='
+ /Import File Strings/,/^$/ {
+ /^0/ {
+ s/^0 *\(.*\)$/\1/
+ p
+ }
+ }'
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
# Check for a 64-bit object if we didn't find anything.
-if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
-}'`; fi
+if test -z "$aix_libpath"; then
+ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"`
+fi
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
@@ -17024,7 +17648,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
# The linker will automatically build a .lib file if we build a DLL.
old_archive_From_new_cmds_GCJ='true'
# FIXME: Should let the user specify the lib program.
- old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs'
fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
enable_shared_with_static_runtimes_GCJ=yes
;;
@@ -17057,19 +17681,18 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
link_all_deplibs_GCJ=yes
if test "$GCC" = yes ; then
output_verbose_link_cmd='echo'
- archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
- module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
- # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
- module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}"
+ module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}"
+ archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}"
+ module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}"
else
case $cc_basename in
xlc*)
output_verbose_link_cmd='echo'
- archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring'
module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
# Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
- archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
;;
*)
@@ -17231,24 +17854,28 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
;;
openbsd*)
- hardcode_direct_GCJ=yes
- hardcode_shlibpath_var_GCJ=no
- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
- export_dynamic_flag_spec_GCJ='${wl}-E'
+ if test -f /usr/libexec/ld.so; then
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
else
- case $host_os in
- openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
- archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
- hardcode_libdir_flag_spec_GCJ='-R$libdir'
- ;;
- *)
- archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
- hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
- ;;
- esac
+ ld_shlibs_GCJ=no
fi
;;
@@ -17307,17 +17934,16 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
case $host_os in
solaris2.[0-5] | solaris2.[0-5].*) ;;
*)
- # The compiler driver will combine linker options so we
- # cannot just pass the convience library names through
- # without $wl, iff we do not link with $LD.
- # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # The compiler driver will combine and reorder linker options,
+ # but understands `-z linker_flag'. GCC discards it without `$wl',
+ # but is careful enough not to reorder.
# Supported since Solaris 2.6 (maybe 2.5.1?)
- case $wlarc in
- '')
- whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
- *)
- whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
- esac ;;
+ if test "$GCC" = yes; then
+ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract'
+ else
+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract'
+ fi
+ ;;
esac
link_all_deplibs_GCJ=yes
;;
@@ -17374,7 +18000,7 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
fi
;;
- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
no_undefined_flag_GCJ='${wl}-z,text'
archive_cmds_need_lc_GCJ=no
hardcode_shlibpath_var_GCJ=no
@@ -17451,7 +18077,7 @@ x|xyes)
{ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
$rm conftest*
- printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext
if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
(eval $ac_compile) 2>&5
@@ -17509,20 +18135,7 @@ shlibpath_overrides_runpath=unknown
version_type=none
dynamic_linker="$host_os ld.so"
sys_lib_dlsearch_path_spec="/lib /usr/lib"
-if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
- if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
- # if the path contains ";" then we assume it to be the separator
- # otherwise default to the standard path separator (i.e. ":") - it is
- # assumed that no part of a normal pathname contains ";" but that should
- # okay in the real world where ";" in dirpaths is itself problematic.
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'`
- else
- sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"`
- fi
-else
- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
-fi
+
need_lib_prefix=unknown
hardcode_into_libs=no
@@ -17540,7 +18153,7 @@ aix3*)
soname_spec='${libname}${release}${shared_ext}$major'
;;
-aix4* | aix5*)
+aix[4-9]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -17679,12 +18292,7 @@ darwin* | rhapsody*)
shlibpath_overrides_runpath=yes
shlibpath_var=DYLD_LIBRARY_PATH
shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`'
- # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
- if test "$GCC" = yes; then
- sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
- else
- sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
- fi
+
sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib'
;;
@@ -17738,7 +18346,7 @@ freebsd* | dragonfly*)
shlibpath_overrides_runpath=no
hardcode_into_libs=yes
;;
- freebsd*) # from 4.6 on
+ *) # from 4.6 on, and DragonFly
shlibpath_overrides_runpath=yes
hardcode_into_libs=yes
;;
@@ -17801,7 +18409,7 @@ hpux9* | hpux10* | hpux11*)
postinstall_cmds='chmod 555 $lib'
;;
-interix3*)
+interix[3-9]*)
version_type=linux
need_lib_prefix=no
need_version=no
@@ -17872,7 +18480,7 @@ linux* | k*bsd*-gnu)
# Append ld.so.conf contents to the search path
if test -f /etc/ld.so.conf; then
- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
fi
@@ -17978,6 +18586,10 @@ osf3* | osf4* | osf5*)
sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec"
;;
+rdos*)
+ dynamic_linker=no
+ ;;
+
solaris*)
version_type=linux
need_lib_prefix=no
@@ -18074,6 +18686,21 @@ esac
echo "${ECHO_T}$dynamic_linker" >&6; }
test "$dynamic_linker" = no && can_build_shared=no
+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"
+fi
+
+sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec"
+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"
+fi
+
+sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec"
+
variables_saved_for_relink="PATH $shlibpath_var $runpath_var"
if test "$GCC" = yes; then
variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH"
@@ -18157,6 +18784,7 @@ if test -f "$ltmain"; then
predeps_GCJ \
postdeps_GCJ \
compiler_lib_search_path_GCJ \
+ compiler_lib_search_dirs_GCJ \
archive_cmds_GCJ \
archive_expsym_cmds_GCJ \
postinstall_cmds_GCJ \
@@ -18172,6 +18800,7 @@ if test -f "$ltmain"; then
module_cmds_GCJ \
module_expsym_cmds_GCJ \
lt_cv_prog_compiler_c_o_GCJ \
+ fix_srcfile_path_GCJ \
exclude_expsyms_GCJ \
include_expsyms_GCJ; do
@@ -18404,6 +19033,10 @@ predeps=$lt_predeps_GCJ
# shared library.
postdeps=$lt_postdeps_GCJ
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ
+
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
@@ -18492,7 +19125,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_GCJ"
+fix_srcfile_path=$lt_fix_srcfile_path
# Set to yes if exported symbols are required.
always_export_symbols=$always_export_symbols_GCJ
@@ -18549,7 +19182,7 @@ objext=o
objext_RC=$objext
# Code to be used in simple compile tests
-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }'
# Code to be used in simple link tests
lt_simple_link_test_code="$lt_simple_compile_test_code"
@@ -18568,16 +19201,16 @@ compiler=$CC
# save warnings/boilerplate of simple test code
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_compile_test_code" >conftest.$ac_ext
+echo "$lt_simple_compile_test_code" >conftest.$ac_ext
eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_compiler_boilerplate=`cat conftest.err`
$rm conftest*
ac_outfile=conftest.$ac_objext
-printf "$lt_simple_link_test_code" >conftest.$ac_ext
+echo "$lt_simple_link_test_code" >conftest.$ac_ext
eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err
_lt_linker_boilerplate=`cat conftest.err`
-$rm conftest*
+$rm -r conftest*
# Allow CC to be a program name with arguments.
@@ -18637,6 +19270,7 @@ if test -f "$ltmain"; then
predeps_RC \
postdeps_RC \
compiler_lib_search_path_RC \
+ compiler_lib_search_dirs_RC \
archive_cmds_RC \
archive_expsym_cmds_RC \
postinstall_cmds_RC \
@@ -18652,6 +19286,7 @@ if test -f "$ltmain"; then
module_cmds_RC \
module_expsym_cmds_RC \
lt_cv_prog_compiler_c_o_RC \
+ fix_srcfile_path_RC \
exclude_expsyms_RC \
include_expsyms_RC; do
@@ -18884,6 +19519,10 @@ predeps=$lt_predeps_RC
# shared library.
postdeps=$lt_postdeps_RC
+# The directories searched by this compiler when creating a shared
+# library
+compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC
+
# The library search path used internally by the compiler when linking
# a shared library.
compiler_lib_search_path=$lt_compiler_lib_search_path_RC
@@ -18972,7 +19611,7 @@ sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
# Fix the shell variable \$srcfile for the compiler.
-fix_srcfile_path="$fix_srcfile_path_RC"
+fix_srcfile_path=$lt_fix_srcfile_path
# Set to yes if exported symbols are required.
always_export_symbols=$always_export_symbols_RC
@@ -22474,12 +23113,12 @@ host!$host$ac_delim
host_cpu!$host_cpu$ac_delim
host_vendor!$host_vendor$ac_delim
host_os!$host_os$ac_delim
+SED!$SED$ac_delim
LN_S!$LN_S$ac_delim
ECHO!$ECHO$ac_delim
AR!$AR$ac_delim
RANLIB!$RANLIB$ac_delim
-CXXCPP!$CXXCPP$ac_delim
-F77!$F77$ac_delim
+DSYMUTIL!$DSYMUTIL$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -22521,6 +23160,9 @@ _ACEOF
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+NMEDIT!$NMEDIT$ac_delim
+CXXCPP!$CXXCPP$ac_delim
+F77!$F77$ac_delim
FFLAGS!$FFLAGS$ac_delim
ac_ct_F77!$ac_ct_F77$ac_delim
LIBTOOL!$LIBTOOL$ac_delim
@@ -22536,7 +23178,7 @@ LIBOBJS!$LIBOBJS$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 13; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 16; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
diff --git a/configure.in b/configure.in
index bae3140..00131c1 100644
--- a/configure.in
+++ b/configure.in
@@ -1,7 +1,7 @@
AC_INIT(src/httrack.c)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(httrack, 3.42.3)
-VERSION_INFO="2:42:0"
+AM_INIT_AUTOMAKE(httrack, 3.43.12)
+VERSION_INFO="2:43:0"
AM_MAINTAINER_MODE
AC_PREREQ(2.50)
diff --git a/gpl-fr.txt b/gpl-fr.txt
index a211ae8..0c1315f 100644
--- a/gpl-fr.txt
+++ b/gpl-fr.txt
@@ -1,197 +1,197 @@
-GPL
-
-Introduction
-
-This is an unofficial translation of the GNU General Public License into French. It was not published by the Free Software Foundation, and does not legally
-state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this
-translation will help French speakers understand the GNU GPL better.
-
-Voici (http://www.linux-france.org/article/these/gpl.html) une adaptation non officielle de la Licence Publique Générale du projet GNU. Elle n'a pas été
-publiée par la Free Software Foundation et son contenu n'a aucune portée légale car seule la version anglaise de ce document détaille le mode de distribution
-des logiciels sous GNU GPL. Nous espérons cependant qu'elle permettra aux francophones de mieux comprendre la GPL.
-
-Licence Publique Générale GNU Version 2, Juin 1991
-
-Copyright © Free Software Foundation, Inc.
-59 Temple Place, Suite 330, Boston, MA 02111-1307
-États-Unis, 1989, 1991.
-La copie et la distribution de copies exactes de ce document sont autorisées, mais aucune modification n'est permise.
-
-Préambule
-
-Les licences d'utilisation de la plupart des programmes sont définies pour limiter ou supprimer toute liberté à l'utilisateur. À l'inverse, la Licence Publique
-Générale (General Public License) est destinée à vous garantir la liberté de partager et de modifier les logiciels libres, et de s'assurer que ces logiciels sont
-effectivement accessibles à tout utilisateur.
-
-Cette Licence Publique Générale s'applique à la plupart des programmes de la Free Software Foundation, comme à tout autre programme dont l'auteur l'aura
-décidé (d'autres logiciels de la FSF sont couverts pour leur part par la Licence Publique Générale pour Bibliothèques GNU (LGPL)). Vous pouvez aussi
-appliquer les termes de cette Licence à vos propres programmes, si vous le désirez.
-
-Liberté des logiciels ne signifie pas nécessairement gratuité. Notre Licence est conçue pour vous assurer la liberté de distribuer des copies des programmes,
-gratuitement ou non, de recevoir le code source ou de pouvoir l'obtenir, de modifier les programmes ou d'en utiliser des éléments dans de nouveaux
-programmes libres, en sachant que vous y êtes autorisé.
-
-Afin de garantir ces droits, nous avons dû introduire des restrictions interdisant à quiconque de vous les refuser ou de vous demander d'y renoncer. Ces
-restrictions vous imposent en retour certaines obligations si vous distribuez ou modifiez des copies de programmes protégés par la Licence. En d'autre termes,
-il vous incombera en ce cas de :
-
- transmettre aux destinataires tous les droits que vous possédez,
- expédier aux destinataires le code source ou bien tenir celui-ci à leur disposition,
- leur remettre cette Licence afin qu'ils prennent connaissance de leurs droits.
-
-Nous protégeons vos droits de deux façons : d'abord par le copyright du logiciel, ensuite par la remise de cette Licence qui vous autorise légalement à copier,
-distribuer et/ou modifier le logiciel.
-
-En outre, pour protéger chaque auteur ainsi que la FSF, nous affirmons solennellement que le programme concerné ne fait l'objet d'aucune garantie. Si un tiers
-le modifie puis le redistribue, tous ceux qui en recevront une copie doivent savoir qu'il ne s'agit pas de l'original afin qu'une copie défectueuse n'entache pas
-la réputation de l'auteur du logiciel.
-
-Enfin, tout programme libre est sans cesse menacé par des dépôts de brevets. Nous souhaitons à tout prix éviter que des distributeurs puissent déposer des
-brevets sur les Logiciels Libres pour leur propre compte. Pour éviter cela, nous stipulons bien que tout dépôt éventuel de brevet doit accorder expressément à
-tout un chacun le libre usage du produit.
-
-Les dispositions précises et les conditions de copie, de distribution et de modification de nos logiciels sont les suivantes :
-
-Stipulations et conditions relatives à la copie, la distribution et la modification
-
-
-
- Article 0
- La présente Licence s'applique à tout Programme (ou autre travail) où figure une note, placée par le détenteur des droits, stipulant que ledit Programme
- ou travail peut être distribué selon les termes de la présente Licence. Le terme Programme désigne aussi bien le Programme lui-même que tout travail
- qui en est dérivé selon la loi, c'est-à-dire tout ouvrage reproduisant le Programme ou une partie de celui-ci, à l'identique ou bien modifié, et/ou traduit
- dans une autre langue (la traduction est considérée comme une modification). Chaque personne concernée par la Licence Publique Générale sera
- désignée par le terme Vous.
-
- Les activités autres que copie, distribution et modification ne sont pas couvertes par la présente Licence et sortent de son cadre. Rien ne restreint
- l'utilisation du Programme et les données issues de celui-ci ne sont couvertes que si leur contenu constitue un travail basé sur le logiciel
- (indépendemment du fait d'avoir été réalisé en lançant le Programme). Tout dépend de ce que le Programme est censé produire.
-
-
- Article 1.
- Vous pouvez copier et distribuer des copies conformes du code source du Programme, tel que Vous l'avez reçu, sur n'importe quel support, à condition
- de placer sur chaque copie un copyright approprié et une restriction de garantie, de ne pas modifier ou omettre toutes les stipulations se référant à la
- présente Licence et à la limitation de garantie, et de fournir avec toute copie du Programme un exemplaire de la Licence.
-
- Vous pouvez demander une rétribution financière pour la réalisation de la copie et demeurez libre de proposer une garantie assurée par vos soins,
- moyennant finances.
-
-
- Article 2.
- Vous pouvez modifier votre copie ou vos copies du Programme ou partie de celui-ci, ou d'un travail basé sur ce Programme, et copier et distribuer ces
- modifications selon les termes de l'article 1, à condition de Vous conformer également aux conditions suivantes :
- a) Ajouter aux fichiers modifiés l'indication très claire des modifications effectuées, ainsi que la date de chaque changement.
- b) Distribuer sous les termes de la Licence Publique Générale l'ensemble de toute réalisation contenant tout ou partie du Programme, avec ou sans
- modifications.
- c) Si le Programme modifié lit des commandes de manière interactive lors de son exécution, faire en sorte qu'il affiche, lors d'une invocation
- ordinaire, le copyright approprié en indiquant clairement la limitation de garantie (ou la garantie que Vous Vous engagez à fournir Vous-même),
- qu'il stipule que tout utilisateur peut librement redistribuer le Programme selon les conditions de la Licence Publique Générale GNU, et qu'il montre
- à tout utilisateur comment lire une copie de celle-ci (exception : si le Programme original est interactif mais n'affiche pas un tel message en temps
- normal, tout travail dérivé de ce Programme ne sera pas non plus contraint de l'afficher).
-
- Toutes ces conditions s'appliquent à l'ensemble des modifications. Si des éléments identifiables de ce travail ne sont pas dérivés du Programme et
- peuvent être raisonnablement considérés comme indépendants, la présente Licence ne s'applique pas à ces éléments lorsque Vous les distribuez seuls.
- Mais, si Vous distribuez ces mêmes éléments comme partie d'un ensemble cohérent dont le reste est basé sur un Programme soumis à la Licence, ils lui
- sont également soumis, et la Licence s'étend ainsi à l'ensemble du produit, quel qu'en soit l'auteur.
-
- Cet article n'a pas pour but de s'approprier ou de contester vos droits sur un travail entièrement réalisé par Vous, mais plutôt d'ouvrir droit à un contrôle
- de la libre distribution de tout travail dérivé ou collectif basé sur le Programme.
-
- En outre, toute fusion d'un autre travail, non basé sur le Programme, avec le Programme (ou avec un travail dérivé de ce dernier), effectuée sur un
- support de stockage ou de distribution, ne fait pas tomber cet autre travail sous le contrôle de la Licence.
-
-
- Article 3.
- Vous pouvez copier et distribuer le Programme (ou tout travail dérivé selon les conditions énoncées dans l'article 1) sous forme de code objet ou
- exécutable, selon les termes des articles 0 et 1, à condition de respecter les clauses suivantes :
- a) Fournir le code source complet du Programme, sous une forme lisible par un ordinateur et selon les termes des articles 0 et 1, sur un support
- habituellement utilisé pour l'échange de données ; ou,
- b) Faire une offre écrite, valable pendant au moins trois ans, prévoyant de donner à tout tiers qui en fera la demande une copie, sous forme lisible
- par un ordinateur, du code source correspondant, pour un tarif n'excédant pas le coût de la copie, selon les termes des articles 0 et 1, sur un support
- couramment utilisé pour l'échange de données informatiques ; ou,
- c) Informer le destinataire de l'endroit où le code source peut être obtenu (cette solution n'est recevable que dans le cas d'une distribution non
- commerciale, et uniquement si Vous avez reçu le Programme sous forme de code objet ou exécutable avec l'offre prévue à l'alinéa b ci-dessus).
-
- Le code source d'un travail désigne la forme de cet ouvrage sous laquelle les modifications sont les plus aisées. Sont ainsi désignés la totalité du code
- source de tous les modules composant un Programme exécutable, de même que tout fichier de définition associé, ainsi que les scripts utilisés pour
- effectuer la compilation et l'installation du Programme exécutable. Toutefois, l'environnement standard de développement du système d'exploitation mis
- en oeuvre (source ou binaire) -- compilateurs, bibliothèques, noyau, etc. -- constitue une exception, sauf si ces éléments sont diffusés en même temps que
- le Programme exécutable.
-
- Si la distribution de l'exécutable ou du code objet consiste à offrir un accès permettant de copier le Programme depuis un endroit particulier, l'offre d'un
- accès équivalent pour se procurer le code source au même endroit est considéré comme une distribution de ce code source, même si l'utilisateur choisit
- de ne pas profiter de cette offre.
-
-
- Article 4.
- Vous ne pouvez pas copier, modifier, céder, déposer ou distribuer le Programme d'une autre manière que l'autorise la Licence Publique Générale. Toute
- tentative de ce type annule immédiatement vos droits d'utilisation du Programme sous cette Licence. Toutefois, les tiers ayant reçu de Vous des copies du
- Programme ou le droit d'utiliser ces copies continueront à bénéficier de leur droit d'utilisation tant qu'ils respecteront pleinement les conditions de la
- Licence.
-
-
- Article 5.
- Ne l'ayant pas signée, Vous n'êtes pas obligé d'accepter cette Licence. Cependant, rien d'autre ne Vous autorise à modifier ou distribuer le Programme ou
- quelque travaux dérivés : la loi l'interdit tant que Vous n'acceptez pas les termes de cette Licence. En conséquence, en modifiant ou en distribuant le
- Programme (ou tout travail basé sur lui), Vous acceptez implicitement tous les termes et conditions de cette Licence.
-
-
- Article 6.
- La diffusion d'un Programme (ou de tout travail dérivé) suppose l'envoi simultané d'une licence autorisant la copie, la distribution ou la modification du
- Programme, aux termes et conditions de la Licence. Vous n'avez pas le droit d'imposer de restrictions supplémentaires aux droits transmis au
- destinataire. Vous n'êtes pas responsable du respect de la Licence par un tiers.
-
-
- Article 7.
- Si, à la suite d'une décision de Justice, d'une plainte en contrefaçon ou pour toute autre raison (liée ou non à la contrefaçon), des conditions Vous sont
- imposées (que ce soit par ordonnance, accord amiable ou autre) qui se révèlent incompatibles avec les termes de la présente Licence, Vous n'êtes pas
- pour autant dégagé des obligations liées à celle-ci : si Vous ne pouvez concilier vos obligations légales ou autres avec les conditions de cette Licence,
- Vous ne devez pas distribuer le Programme.
-
- Si une partie quelconque de cet article est invalidée ou inapplicable pour quelque raison que ce soit, le reste de l'article continue de s'appliquer et
- l'intégralité de l'article s'appliquera en toute autre circonstance.
-
- Le présent article n'a pas pour but de Vous pousser à enfreindre des droits ou des dispositions légales ni en contester la validité ; son seul objectif est de
- protéger l'intégrité du système de distribution du Logiciel Libre. De nombreuses personnes ont généreusement contribué à la large gamme de Programmes
- distribuée de cette façon en toute confiance ; il appartient à chaque auteur/donateur de décider de diffuser ses Programmes selon les critères de son
- choix.
-
-
- Article 8.
- Si la distribution et/ou l'utilisation du Programme est limitée dans certains pays par des brevets ou des droits sur des interfaces, le détenteur original des
- droits qui place le Programme sous la Licence Publique Générale peut ajouter explicitement une clause de limitation géographique excluant ces pays.
- Dans ce cas, cette clause devient une partie intégrante de la Licence.
-
-
- Article 9.
- La Free Software Foundation se réserve le droit de publier périodiquement des mises à jour ou de nouvelles versions de la Licence. Rédigées dans le
- même esprit que la présente version, elles seront cependant susceptibles d'en modifier certains détails à mesure que de nouveaux problèmes se font jour.
-
- Chaque version possède un numéro distinct. Si le Programme précise un numéro de version de cette Licence et « toute version ultérieure », Vous avez le
- choix de suivre les termes et conditions de cette version ou de toute autre version plus récente publiée par la Free Software Foundation. Si le Programme
- ne spécifie aucun numéro de version, Vous pouvez alors choisir l'une quelconque des versions publiées par la Free Software Foundation.
-
-
- Article 10.
- Si Vous désirez incorporer des éléments du Programme dans d'autres Programmes libres dont les conditions de distribution diffèrent, Vous devez écrire
- à l'auteur pour lui en demander la permission. Pour ce qui est des Programmes directement déposés par la Free Software Foundation, écrivez-nous : une
- exception est toujours envisageable. Notre décision sera basée sur notre volonté de préserver la liberté de notre Programme ou de ses dérivés et celle de
- promouvoir le partage et la réutilisation du logiciel en général.
-
- LIMITATION DE GARANTIE
-
- Article 11.
- Parce que l'utilisation de ce Programme est libre et gratuite, aucune garantie n'est fournie, comme le permet la loi. Sauf mention écrite, les détenteurs du
- copyright et/ou les tiers fournissent le Programme en l'état, sans aucune sorte de garantie explicite ou implicite, y compris les garanties de
- commercialisation ou d'adaptation dans un but particulier. Vous assumez tous les risques quant à la qualité et aux effets du Programme. Si le Programme
- est défectueux, Vous assumez le coût de tous les services, corrections ou réparations nécessaires.
-
-
- Article 12.
- Sauf lorsqu'explicitement prévu par la Loi ou accepté par écrit, ni le détenteur des droits, ni quiconque autorisé à modifier et/ou redistribuer le
- Programme comme il est permis ci-dessus ne pourra être tenu pour responsable de tout dommage direct, indirect, secondaire ou accessoire (pertes
- financières dues au manque à gagner, à l'interruption d'activités ou à la perte de données, etc., découlant de l'utilisation du Programme ou de
- l'impossibilité d'utiliser celui-ci).
-
-
- FIN DES TERMES ET CONDITIONS
+GPL
+
+Introduction
+
+This is an unofficial translation of the GNU General Public License into French. It was not published by the Free Software Foundation, and does not legally
+state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this
+translation will help French speakers understand the GNU GPL better.
+
+Voici (http://www.linux-france.org/article/these/gpl.html) une adaptation non officielle de la Licence Publique Générale du projet GNU. Elle n'a pas été
+publiée par la Free Software Foundation et son contenu n'a aucune portée légale car seule la version anglaise de ce document détaille le mode de distribution
+des logiciels sous GNU GPL. Nous espérons cependant qu'elle permettra aux francophones de mieux comprendre la GPL.
+
+Licence Publique Générale GNU Version 2, Juin 1991
+
+Copyright © Free Software Foundation, Inc.
+59 Temple Place, Suite 330, Boston, MA 02111-1307
+États-Unis, 1989, 1991.
+La copie et la distribution de copies exactes de ce document sont autorisées, mais aucune modification n'est permise.
+
+Préambule
+
+Les licences d'utilisation de la plupart des programmes sont définies pour limiter ou supprimer toute liberté à l'utilisateur. À l'inverse, la Licence Publique
+Générale (General Public License) est destinée à vous garantir la liberté de partager et de modifier les logiciels libres, et de s'assurer que ces logiciels sont
+effectivement accessibles à tout utilisateur.
+
+Cette Licence Publique Générale s'applique à la plupart des programmes de la Free Software Foundation, comme à tout autre programme dont l'auteur l'aura
+décidé (d'autres logiciels de la FSF sont couverts pour leur part par la Licence Publique Générale pour Bibliothèques GNU (LGPL)). Vous pouvez aussi
+appliquer les termes de cette Licence à vos propres programmes, si vous le désirez.
+
+Liberté des logiciels ne signifie pas nécessairement gratuité. Notre Licence est conçue pour vous assurer la liberté de distribuer des copies des programmes,
+gratuitement ou non, de recevoir le code source ou de pouvoir l'obtenir, de modifier les programmes ou d'en utiliser des éléments dans de nouveaux
+programmes libres, en sachant que vous y êtes autorisé.
+
+Afin de garantir ces droits, nous avons dû introduire des restrictions interdisant à quiconque de vous les refuser ou de vous demander d'y renoncer. Ces
+restrictions vous imposent en retour certaines obligations si vous distribuez ou modifiez des copies de programmes protégés par la Licence. En d'autre termes,
+il vous incombera en ce cas de :
+
+ transmettre aux destinataires tous les droits que vous possédez,
+ expédier aux destinataires le code source ou bien tenir celui-ci à leur disposition,
+ leur remettre cette Licence afin qu'ils prennent connaissance de leurs droits.
+
+Nous protégeons vos droits de deux façons : d'abord par le copyright du logiciel, ensuite par la remise de cette Licence qui vous autorise légalement à copier,
+distribuer et/ou modifier le logiciel.
+
+En outre, pour protéger chaque auteur ainsi que la FSF, nous affirmons solennellement que le programme concerné ne fait l'objet d'aucune garantie. Si un tiers
+le modifie puis le redistribue, tous ceux qui en recevront une copie doivent savoir qu'il ne s'agit pas de l'original afin qu'une copie défectueuse n'entache pas
+la réputation de l'auteur du logiciel.
+
+Enfin, tout programme libre est sans cesse menacé par des dépôts de brevets. Nous souhaitons à tout prix éviter que des distributeurs puissent déposer des
+brevets sur les Logiciels Libres pour leur propre compte. Pour éviter cela, nous stipulons bien que tout dépôt éventuel de brevet doit accorder expressément à
+tout un chacun le libre usage du produit.
+
+Les dispositions précises et les conditions de copie, de distribution et de modification de nos logiciels sont les suivantes :
+
+Stipulations et conditions relatives à la copie, la distribution et la modification
+
+
+
+ Article 0
+ La présente Licence s'applique à tout Programme (ou autre travail) où figure une note, placée par le détenteur des droits, stipulant que ledit Programme
+ ou travail peut être distribué selon les termes de la présente Licence. Le terme Programme désigne aussi bien le Programme lui-même que tout travail
+ qui en est dérivé selon la loi, c'est-à-dire tout ouvrage reproduisant le Programme ou une partie de celui-ci, à l'identique ou bien modifié, et/ou traduit
+ dans une autre langue (la traduction est considérée comme une modification). Chaque personne concernée par la Licence Publique Générale sera
+ désignée par le terme Vous.
+
+ Les activités autres que copie, distribution et modification ne sont pas couvertes par la présente Licence et sortent de son cadre. Rien ne restreint
+ l'utilisation du Programme et les données issues de celui-ci ne sont couvertes que si leur contenu constitue un travail basé sur le logiciel
+ (indépendemment du fait d'avoir été réalisé en lançant le Programme). Tout dépend de ce que le Programme est censé produire.
+
+
+ Article 1.
+ Vous pouvez copier et distribuer des copies conformes du code source du Programme, tel que Vous l'avez reçu, sur n'importe quel support, à condition
+ de placer sur chaque copie un copyright approprié et une restriction de garantie, de ne pas modifier ou omettre toutes les stipulations se référant à la
+ présente Licence et à la limitation de garantie, et de fournir avec toute copie du Programme un exemplaire de la Licence.
+
+ Vous pouvez demander une rétribution financière pour la réalisation de la copie et demeurez libre de proposer une garantie assurée par vos soins,
+ moyennant finances.
+
+
+ Article 2.
+ Vous pouvez modifier votre copie ou vos copies du Programme ou partie de celui-ci, ou d'un travail basé sur ce Programme, et copier et distribuer ces
+ modifications selon les termes de l'article 1, à condition de Vous conformer également aux conditions suivantes :
+ a) Ajouter aux fichiers modifiés l'indication très claire des modifications effectuées, ainsi que la date de chaque changement.
+ b) Distribuer sous les termes de la Licence Publique Générale l'ensemble de toute réalisation contenant tout ou partie du Programme, avec ou sans
+ modifications.
+ c) Si le Programme modifié lit des commandes de manière interactive lors de son exécution, faire en sorte qu'il affiche, lors d'une invocation
+ ordinaire, le copyright approprié en indiquant clairement la limitation de garantie (ou la garantie que Vous Vous engagez à fournir Vous-même),
+ qu'il stipule que tout utilisateur peut librement redistribuer le Programme selon les conditions de la Licence Publique Générale GNU, et qu'il montre
+ à tout utilisateur comment lire une copie de celle-ci (exception : si le Programme original est interactif mais n'affiche pas un tel message en temps
+ normal, tout travail dérivé de ce Programme ne sera pas non plus contraint de l'afficher).
+
+ Toutes ces conditions s'appliquent à l'ensemble des modifications. Si des éléments identifiables de ce travail ne sont pas dérivés du Programme et
+ peuvent être raisonnablement considérés comme indépendants, la présente Licence ne s'applique pas à ces éléments lorsque Vous les distribuez seuls.
+ Mais, si Vous distribuez ces mêmes éléments comme partie d'un ensemble cohérent dont le reste est basé sur un Programme soumis à la Licence, ils lui
+ sont également soumis, et la Licence s'étend ainsi à l'ensemble du produit, quel qu'en soit l'auteur.
+
+ Cet article n'a pas pour but de s'approprier ou de contester vos droits sur un travail entièrement réalisé par Vous, mais plutôt d'ouvrir droit à un contrôle
+ de la libre distribution de tout travail dérivé ou collectif basé sur le Programme.
+
+ En outre, toute fusion d'un autre travail, non basé sur le Programme, avec le Programme (ou avec un travail dérivé de ce dernier), effectuée sur un
+ support de stockage ou de distribution, ne fait pas tomber cet autre travail sous le contrôle de la Licence.
+
+
+ Article 3.
+ Vous pouvez copier et distribuer le Programme (ou tout travail dérivé selon les conditions énoncées dans l'article 1) sous forme de code objet ou
+ exécutable, selon les termes des articles 0 et 1, à condition de respecter les clauses suivantes :
+ a) Fournir le code source complet du Programme, sous une forme lisible par un ordinateur et selon les termes des articles 0 et 1, sur un support
+ habituellement utilisé pour l'échange de données ; ou,
+ b) Faire une offre écrite, valable pendant au moins trois ans, prévoyant de donner à tout tiers qui en fera la demande une copie, sous forme lisible
+ par un ordinateur, du code source correspondant, pour un tarif n'excédant pas le coût de la copie, selon les termes des articles 0 et 1, sur un support
+ couramment utilisé pour l'échange de données informatiques ; ou,
+ c) Informer le destinataire de l'endroit où le code source peut être obtenu (cette solution n'est recevable que dans le cas d'une distribution non
+ commerciale, et uniquement si Vous avez reçu le Programme sous forme de code objet ou exécutable avec l'offre prévue à l'alinéa b ci-dessus).
+
+ Le code source d'un travail désigne la forme de cet ouvrage sous laquelle les modifications sont les plus aisées. Sont ainsi désignés la totalité du code
+ source de tous les modules composant un Programme exécutable, de même que tout fichier de définition associé, ainsi que les scripts utilisés pour
+ effectuer la compilation et l'installation du Programme exécutable. Toutefois, l'environnement standard de développement du système d'exploitation mis
+ en oeuvre (source ou binaire) -- compilateurs, bibliothèques, noyau, etc. -- constitue une exception, sauf si ces éléments sont diffusés en même temps que
+ le Programme exécutable.
+
+ Si la distribution de l'exécutable ou du code objet consiste à offrir un accès permettant de copier le Programme depuis un endroit particulier, l'offre d'un
+ accès équivalent pour se procurer le code source au même endroit est considéré comme une distribution de ce code source, même si l'utilisateur choisit
+ de ne pas profiter de cette offre.
+
+
+ Article 4.
+ Vous ne pouvez pas copier, modifier, céder, déposer ou distribuer le Programme d'une autre manière que l'autorise la Licence Publique Générale. Toute
+ tentative de ce type annule immédiatement vos droits d'utilisation du Programme sous cette Licence. Toutefois, les tiers ayant reçu de Vous des copies du
+ Programme ou le droit d'utiliser ces copies continueront à bénéficier de leur droit d'utilisation tant qu'ils respecteront pleinement les conditions de la
+ Licence.
+
+
+ Article 5.
+ Ne l'ayant pas signée, Vous n'êtes pas obligé d'accepter cette Licence. Cependant, rien d'autre ne Vous autorise à modifier ou distribuer le Programme ou
+ quelque travaux dérivés : la loi l'interdit tant que Vous n'acceptez pas les termes de cette Licence. En conséquence, en modifiant ou en distribuant le
+ Programme (ou tout travail basé sur lui), Vous acceptez implicitement tous les termes et conditions de cette Licence.
+
+
+ Article 6.
+ La diffusion d'un Programme (ou de tout travail dérivé) suppose l'envoi simultané d'une licence autorisant la copie, la distribution ou la modification du
+ Programme, aux termes et conditions de la Licence. Vous n'avez pas le droit d'imposer de restrictions supplémentaires aux droits transmis au
+ destinataire. Vous n'êtes pas responsable du respect de la Licence par un tiers.
+
+
+ Article 7.
+ Si, à la suite d'une décision de Justice, d'une plainte en contrefaçon ou pour toute autre raison (liée ou non à la contrefaçon), des conditions Vous sont
+ imposées (que ce soit par ordonnance, accord amiable ou autre) qui se révèlent incompatibles avec les termes de la présente Licence, Vous n'êtes pas
+ pour autant dégagé des obligations liées à celle-ci : si Vous ne pouvez concilier vos obligations légales ou autres avec les conditions de cette Licence,
+ Vous ne devez pas distribuer le Programme.
+
+ Si une partie quelconque de cet article est invalidée ou inapplicable pour quelque raison que ce soit, le reste de l'article continue de s'appliquer et
+ l'intégralité de l'article s'appliquera en toute autre circonstance.
+
+ Le présent article n'a pas pour but de Vous pousser à enfreindre des droits ou des dispositions légales ni en contester la validité ; son seul objectif est de
+ protéger l'intégrité du système de distribution du Logiciel Libre. De nombreuses personnes ont généreusement contribué à la large gamme de Programmes
+ distribuée de cette façon en toute confiance ; il appartient à chaque auteur/donateur de décider de diffuser ses Programmes selon les critères de son
+ choix.
+
+
+ Article 8.
+ Si la distribution et/ou l'utilisation du Programme est limitée dans certains pays par des brevets ou des droits sur des interfaces, le détenteur original des
+ droits qui place le Programme sous la Licence Publique Générale peut ajouter explicitement une clause de limitation géographique excluant ces pays.
+ Dans ce cas, cette clause devient une partie intégrante de la Licence.
+
+
+ Article 9.
+ La Free Software Foundation se réserve le droit de publier périodiquement des mises à jour ou de nouvelles versions de la Licence. Rédigées dans le
+ même esprit que la présente version, elles seront cependant susceptibles d'en modifier certains détails à mesure que de nouveaux problèmes se font jour.
+
+ Chaque version possède un numéro distinct. Si le Programme précise un numéro de version de cette Licence et « toute version ultérieure », Vous avez le
+ choix de suivre les termes et conditions de cette version ou de toute autre version plus récente publiée par la Free Software Foundation. Si le Programme
+ ne spécifie aucun numéro de version, Vous pouvez alors choisir l'une quelconque des versions publiées par la Free Software Foundation.
+
+
+ Article 10.
+ Si Vous désirez incorporer des éléments du Programme dans d'autres Programmes libres dont les conditions de distribution diffèrent, Vous devez écrire
+ à l'auteur pour lui en demander la permission. Pour ce qui est des Programmes directement déposés par la Free Software Foundation, écrivez-nous : une
+ exception est toujours envisageable. Notre décision sera basée sur notre volonté de préserver la liberté de notre Programme ou de ses dérivés et celle de
+ promouvoir le partage et la réutilisation du logiciel en général.
+
+ LIMITATION DE GARANTIE
+
+ Article 11.
+ Parce que l'utilisation de ce Programme est libre et gratuite, aucune garantie n'est fournie, comme le permet la loi. Sauf mention écrite, les détenteurs du
+ copyright et/ou les tiers fournissent le Programme en l'état, sans aucune sorte de garantie explicite ou implicite, y compris les garanties de
+ commercialisation ou d'adaptation dans un but particulier. Vous assumez tous les risques quant à la qualité et aux effets du Programme. Si le Programme
+ est défectueux, Vous assumez le coût de tous les services, corrections ou réparations nécessaires.
+
+
+ Article 12.
+ Sauf lorsqu'explicitement prévu par la Loi ou accepté par écrit, ni le détenteur des droits, ni quiconque autorisé à modifier et/ou redistribuer le
+ Programme comme il est permis ci-dessus ne pourra être tenu pour responsable de tout dommage direct, indirect, secondaire ou accessoire (pertes
+ financières dues au manque à gagner, à l'interruption d'activités ou à la perte de données, etc., découlant de l'utilisation du Programme ou de
+ l'impossibilité d'utiliser celui-ci).
+
+
+ FIN DES TERMES ET CONDITIONS
diff --git a/gpl.txt b/gpl.txt
index 4f92538..546a71a 100644
--- a/gpl.txt
+++ b/gpl.txt
@@ -1,287 +1,287 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
-
-
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+
+
diff --git a/greetings.txt b/greetings.txt
index 895a1c7..9d4258a 100644
--- a/greetings.txt
+++ b/greetings.txt
@@ -1,103 +1,108 @@
-Informations on this project:
-
-This project has been developed by:
-Xavier Roche (xroche at httrack.com)
- project leader
- core engine, Windows/Linux GUI
-Yann Philippot (yphilippot at lemel.fr)
- for the java binary .class parser
-
-With the help of:
-Leto Kauler (molotov at tasmail.com)
- for the site/logos design
- http://kauler.com/
-Christian Marillat (marillat.christian at wanadoo.fr)
- for autoconf compliance and .deb package
-Nicolas Benoit (nbenoit at tuxfamily.org), SDP Multimedia and Major MMS
- for the mms plugin core routines (MMSRIP)
- http://nbenoit.tuxfamily.org/
-Jean-loup Gailly from gzip.org
- for the help provided with Zlib
- http://www.zlib.net/
-Eric A. Young (eay at cryptsoft.com)
- for SSL cryptographic material (OpenSSL)
- http://www.openssl.org/
-Fred Cohen (fc at all.net)
- for HTTrack user's guide
- http://all.net/
-
-Translations written by:
-David Lawrie (dalawrie at lineone.net)
-Robert Lagadec (rlagadec at yahoo.fr)
- for checking both English & French translations
-Juan Pablo Barrio Lera (University of León)
- for Spanish translations
-Rainer Klueting (rk-htt at centermail.net)
-Bastian Gorke (bastiang at yahoo.com)
-Rudi Ferrari (Wyando at netcologne.de)
-Marcus Gaza (MarcusGaza at t-online.de)
- for German translations
-Rudi Ferrari (Wyando at netcologne.de)
- for Dutch translations
-Lukasz Jokiel (Opole University of Technology, Lukasz.Jokiel at po.opole.pl)
- for Polish translations
-Rui Fernandes (CANTIC, ruiefe at mail.malhatlantica.pt)
-Pedro T. Pinheiro (Universidade Nova de Lisboa-FCT, ptiago at mail.iupi.pt)
- for Portuguese translations
-Andrei Iliev (iliev at vitaplus.ru)
- for Russian translations
-Witold Krakowski (wtkrak at netscape.net )
- for Italian translations
-Jozsef Tamas Herczeg (hdodi at freemail.hu)
- for Hungarian translation
-Paulo Neto (pauloneto at layoutdobrasil.com)
- for Brazilian translation
-Brook Qin (brookqwr at sina.com)
- for simplified Chinese translation
-David Hing Cheong Hung (DAVEHUNG at mtr.com.hk)
-Addy Lin (addy1975 at pchome.com.tw)
- for traditional Chinese translation
-Jesper Bramm (bramm at get2net.dk)
- for Danish translation
-Tõnu Virma
- for Estonian translation
-Staffan Ström (staffan at fam-strom.org)
- for Swedish translation
-Arman (Armish) Aksoy (armish at linux-sevenler.de)
-Mehmet Akif Köeoðlu (mak at ttnet.net.tr)
- for Turkish translation
-Aleksandar Savic (aleks at macedonia.eu.org)
- for Macedonian translation
-Takayoshi Nakasikiryo
- for Japanese translation
-Martin Sereday (sereday at slovanet.sk)
- for Slovak translation
-Antonín Matìjèík (matejcik at volny.cz)
- for Czech translation
-Andrij Shevchuk (http://programy.com.ua)
- for Ukrainian translation
-Tobias "Spug" Langhoff (spug_enigma at hotmail.com)
- for Norwegian translation
-Jadran Rudeciur (jrudec at email.si)
- for Slovenian translation
-Alin Gheorghe Miron (miron.alin at personal.ro)
- for Romanian translation
-Michael Papadakis (mikepap at freemail.gr)
- for Greek translation
-Ilia Lindov (ilia at infomat-bg.com)
- for Bulgarian translation
-Mika Kähkönen (mika.kahkonen at mbnet.fi)
- for Finnish translation
-
-Thanks to:
-Patrick Ducrot & Daniel Carré (ENSI of Caen)
- for their initial support
- http://www.ducrot.org/
- http://www.greyc.ensicaen.fr/~dcarre/
-Ensi of Caen
- for their initial support
- http://www.ensicaen.fr/
-La sonothèque du Terrier
- for the sound fx :)
-
-..and all users who are using and supporting HTTrack!
+Informations on this project:
+
+This project has been developed by:
+Xavier Roche (xroche at httrack.com)
+ project leader
+ core engine, Windows/Linux GUI
+Yann Philippot (yphilippot at lemel.fr)
+ for the java binary .class parser
+
+With the help of:
+Leto Kauler (molotov at tasmail.com)
+ for the site/logos design
+ http://kauler.com/
+Christian Marillat (marillat.christian at wanadoo.fr)
+ for autoconf compliance and .deb package
+Fred Cohen (fc at all.net)
+ for HTTrack user's guide
+ http://all.net/
+
+And the help of the following third party developers:
+Nicolas Benoit (nbenoit at tuxfamily.org), SDP Multimedia and Major MMS
+ for the mms plugin core routines (MMSRIP)
+ http://nbenoit.tuxfamily.org/
+Jean-loup Gailly from gzip.org
+ for the help provided with Zlib
+ http://www.zlib.net/
+Eric A. Young (eay at cryptsoft.com)
+ for SSL cryptographic material (OpenSSL)
+ http://www.openssl.org/
+Jordan Russell
+ for the Windows setup tool (Inno Setup)
+ http://www.jrsoftware.org/isinfo.php
+
+Translations written by:
+David Lawrie (dalawrie at lineone.net)
+Robert Lagadec (rlagadec at yahoo.fr)
+ for checking both English & French translations
+Juan Pablo Barrio Lera (University of León)
+ for Spanish translations
+Rainer Klueting (rk-htt at centermail.net)
+Bastian Gorke (bastiang at yahoo.com)
+Rudi Ferrari (Wyando at netcologne.de)
+Marcus Gaza (MarcusGaza at t-online.de)
+ for German translations
+Rudi Ferrari (Wyando at netcologne.de)
+ for Dutch translations
+Lukasz Jokiel (Opole University of Technology, Lukasz.Jokiel at po.opole.pl)
+ for Polish translations
+Rui Fernandes (CANTIC, ruiefe at mail.malhatlantica.pt)
+Pedro T. Pinheiro (Universidade Nova de Lisboa-FCT, ptiago at mail.iupi.pt)
+ for Portuguese translations
+Andrei Iliev (iliev at vitaplus.ru)
+ for Russian translations
+Witold Krakowski (wtkrak at netscape.net )
+ for Italian translations
+Jozsef Tamas Herczeg (hdodi at freemail.hu)
+ for Hungarian translation
+Paulo Neto (pauloneto at layoutdobrasil.com)
+ for Brazilian translation
+Brook Qin (brookqwr at sina.com)
+ for simplified Chinese translation
+David Hing Cheong Hung (DAVEHUNG at mtr.com.hk)
+Addy Lin (addy1975 at pchome.com.tw)
+ for traditional Chinese translation
+Jesper Bramm (bramm at get2net.dk)
+ for Danish translation
+Tõnu Virma
+ for Estonian translation
+Staffan Ström (staffan at fam-strom.org)
+ for Swedish translation
+Arman (Armish) Aksoy (armish at linux-sevenler.de)
+Mehmet Akif Köeoðlu (mak at ttnet.net.tr)
+ for Turkish translation
+Aleksandar Savic (aleks at macedonia.eu.org)
+ for Macedonian translation
+Takayoshi Nakasikiryo
+ for Japanese translation
+Martin Sereday (sereday at slovanet.sk)
+ for Slovak translation
+Antonín Matìjèík (matejcik at volny.cz)
+ for Czech translation
+Andrij Shevchuk (http://programy.com.ua)
+ for Ukrainian translation
+Tobias "Spug" Langhoff (spug_enigma at hotmail.com)
+ for Norwegian translation
+Jadran Rudeciur (jrudec at email.si)
+ for Slovenian translation
+Alin Gheorghe Miron (miron.alin at personal.ro)
+ for Romanian translation
+Michael Papadakis (mikepap at freemail.gr)
+ for Greek translation
+Ilia Lindov (ilia at infomat-bg.com)
+ for Bulgarian translation
+Mika Kähkönen (mika.kahkonen at mbnet.fi)
+ for Finnish translation
+
+Thanks to:
+Patrick Ducrot & Daniel Carré (ENSI of Caen)
+ for their initial support
+ http://www.ducrot.org/
+ http://www.greyc.ensicaen.fr/~dcarre/
+Ensi of Caen
+ for their initial support
+ http://www.ensicaen.fr/
+La sonothèque du Terrier
+ for the sound fx :)
+
+..and all users who are using and supporting HTTrack!
diff --git a/history.txt b/history.txt
index 8a80763..e363b03 100644
--- a/history.txt
+++ b/history.txt
@@ -1,664 +1,717 @@
-
-HTTrack Website Copier release history:
---------------------------------------
-
-This file lists all changes and fixes that have been made for HTTrack.
-
-3.42-3
-+ Fixed: Bad URL length validation in the commandline (Joan CALVET)
-
-3.42-2
-+ Fixed: Random crashes at the end of the mirror due to a dangling file pointer (Carlos, angus at quovadis.com.ar)
-
-3.42
-+ Fixed: size limits are stopping the mirror gently, finishing pending transfers (David Stevenson)
-
-3.41-3
-+ Fixed: text/plain advertised files renamed into .txt
-+ Fixed: broken configure.in
-
-3.41-2
-+ Fixed: major WIN32 inlined function bug caused the cache not to be used at all, causing update not to work
-
-3.41
-+ New: changed API/ABI to thread-safe ones (libhttrack1 2), big cleanup in all .h definitions
-+ Fixed: Major memory usage bug when downloading large sites
-+ Fixed: do not rename files if the original MIME type was compatible
-+ Fixed: several source fixes for freeBSD (especially time problems)
-+ New: option %w to disable specific modules (java, flash..)
-+ Fixed: 'no space left in stack for back_add' error
-+ Fixed: fixed redirected images with "html" type
-+ Fixed: 'Crash adding error, unexpected error found.. [4268]' error
-
-3.40-2
-+ Fixed: bogus '.del' filenames with ISO-9660 option
-+ Fixed: now merges the header charset even with an empty footer string
-+ New: --port option for webhttrack
-3.40
-+ New: mms:// streaming capture (thanks to Nicolas Benoit!)
-+ New: proxyTrack project released
-+ New: new experimental parser that no longer needs link testing ('testing link type..')
-+ New: Redirect handled transparently with delayed type check and broken links made external when the "no error page" option is enabled
-+ New: improved background download to handle large sites
-+ New: '--assume foo/bar.cgi=text/html' is now possible
-+ New: MIME type scan rules (such as -mime:video/* +mime:video/mpeg)
-+ New: size scan rules now allows to rewrite uncaught links as external links
-+ Fixed: crash fixed when ftime()/localtime()==NULL
-+ Fixed: iso-9660 option now using '_' for collision character
-+ Fixed: collision problems with CaSe SeNsItIvItY
-+ Fixed: a href='..' fixed!
-+ Fixed: redirects are now handled by the new experimental parser
-+ Fixed: "./" links generated with fixed outbound links (../../)
-+ Fixed: 'base href' bogus in many cases
-+ Fixed: enforce security limits to avoid bandwidth abuses
-+ Fixed: bogus external (swf) parser, fixed remaining .delayed files
-+ New: new check-mime and save-file2 callbacks
-+ New: "always delayed type check" enabled
-+ Fixed: totally bogus finalizer causing compressed files not to be uncompressed, and many files to be truncated
-+ Shell: new Finnish interface added!
-+ Fixed: "..html" bogus type
-+ Fixed: remaining bogus .delayed entries
-+ Fixed: flush before user-defined command
-+ Fixed: fixed user-defined command call and background cleaner
-+ Fixed: fixed 'Crash adding error, unexpected error found.. [4250]' error
-+ Fixed: fixed cache absolute file reference (the reference is now relative) preventing the cache form being moved to another place
-+ Fixed: webhttrack 'Browse Sites' path bug
-+ Fixed: old httrack cache format fixes (import of older versions did not work anymore)
-+ Fixed: port fixes in htsnet.h
-+ Fixed: -N option with advanced extraction (bogus "not found" member)
-+ Fixed: javascript: location=URL was not recognized
-+ Fixed: no more character escaping when not needed (such as UTF-8 codes)
-+ Fixed: possibly temporary files left on disk with bogus servers giving compressed content on HEAD reuests
-+ Fixed: URL hack caused unexpected filename collisions (index.html vs INDEX.HTML)
-+ Fixed: "do not erase already downloaded file" option now correctly works (it leaves files linked in the mirror)
-+ Fixed: UCS2 encoded pages are now converted properly into UTF-8
-+ New: "near" option now also catch embedded (images, css, ..) files
-+ Fixed: bogus chunked multimedia link text files (such as x-ms-asf files)
-+ Fixed: compilation problems on Un*x version
-
-3.33
-+ Fixed: Bogus redirects with same location in https
-+ Fixed: Bogus file naming with URL hack
-+ Fixed: Extremly slow redirections and empty files
-+ Fixed: Bogus names with directories ending with a "."
-+ New: Number of connection per second can now be.. decimal, to delay even more
-+ New: Enforce stronger ISO9660 compliance
-+ Shell: "URL Hack" in interface
-+ Shell: "Save settings" now rebuild categories
-+ Shell: "Shutdown PC after mirror" option
-+ Shell: Sound at the begining/end or the mirror (configurable through system sound properties)
-+ Shell: Fixed drag & drop, .url import
-+ Shell: Fixed "wizard" mode (crash)
-+ Fixed: Crash at the end due to unterminated pending threads
-+ Fixed: \ is not anymore transformed into / after the query (?) delimiter
-+ New: Two new callbacks for pre/post-processing html data
-+ New: link-detected2 callback (additional tag name parameter)
-+ Fixed: Broken ISO9660
-+ Fixed: Crash on file:// links
-+ Fixed: Unescaped ampersands (&) in URLs
-+ Fixed: Transfer hangs introduced in 3.33-beta-2
-+ Fixed: Display bug "Waiting for scheduled time.."
-+ Fixed: Bug "Waiting for scheduled time.." (NOT a display bug, actually)
-+ Fixed: CaSe SenSiTiViTy bugs with mutliple links reffering to the same URL but using different case styles
-+ Fixed: Failed to build from sources (FTBFS) on amd64 archs because of cast problems (Andreas Jochens)
-+ Fixed: & were converted into &nbsp; (Leto Kauler)
-+ Shell: Fixed crash with long URL lists (Libor Striz)
-+ Fixed: connection/seconds limiter replugged
-+ Fixed: "no files updated" display bug
-+ Fixed: bogus links encoded with UTF (Lukasz Wozniak)
-+ New: --assume can be used to force a specific script type (Brian Schröder)
-
-3.32
-+ Fixed: css and js files were not parsed!
-+ Fixed: again broken file:// (infinite loops with local crawls)
-+ Fixed: Bandwidth limiter more gentle with low transfer rate
-+ Fixed: external wrappers were not called during updates/continue
-+ New: additional callback examples
-+ Fixed: overflow in unzip.c fixed
-+ New: tests are now cached for better performances!
-+ New: %r (protocol) option for user-defined structure
-+ Fixed: Broken engine on 64-bit archs
-
-3.31
-+ New: Experimental categories implemented
-+ New: New cache format (ZIP file)
-+ New: .m3u files now crawled
-+ New: .aam files now crawled
-+ Fixed: Broken ftp
-+ Fixed: Broken file://
-+ Fixed: Broken cookies management and loading
-+ Fixed: HTTrackInterface.c:251 crash
-+ Fixed: "N connections" means "N connections" even in scan phase
-+ Fixed: javascript:location bug
-+ Fixed: libtool versioning problem fixed
-+ Fixed: More javascript bugs with \' and \"
-+ Fixed: .HTM files not renamed into .html anymore
-+ Fixed: OSX fixes in the Makefile script
-+ New: Default "referer" and "from" fields
-+ New: Full HTTP headers are now stored in cache
-+ Fixed: ftp transfer not logged/properly finalized
-+ Fixed: Missing symbolic link in webhttrack install
-+ Fixed: path and language not saved in webhttrack
-+ Shell: Avoid invalid project names
-+ Fixed: Javascript bug with src=
-+ Fixed: Keep-alive consistency problems on Linux/Unix with bogus servers (SIGPIPE)
-+ Fixed: Parsing bug inside javascript (bogus parsing with empty quotes in function: foo(''))
-+ Fixed: static compiling on Linux/Unix
-+ Fixed: bloated .h headers (internal function definitions)
-+ Fixed: Bogus query strings with embedded ../ and/or ./
-+ New: Added "change-options" call in the crawl begining
-+ New: Query arguments now sorted for normalized URL checks (when "url hack" option is activated)
-+ Fixed: Previous dependency to zlib.dll to zlib1.dll
-+ Fixed: Broken static files were not correctly updated with the new cache format
-+ Shell: Launch button in Internet Explorer
-+ Fixed: Crash when dealing with multiple '?' in query string with 3.31-alpha
-
-3.30
-+ New: Webhttrack, a linux/unix/bsd Web GUI for httrack
-+ New: "URL hack" feature
-+ New: HTTP-headers charset is now propagated in the html file
-+ New: loadable external engine callbacks
-+ New: Experimental ".mht" archives format
-+ Fixed: Query ?? bug
-+ Fixed: Bogus base href without http://
-+ Fixed: Several javascript bugs
-+ Fixed: UCS2 pages badly detected
-+ Fixed: Build structure change does not redownload files
-+ Fixed: "?foo" URL bug (link with only a query string) fixed
-+ Fixed: ' or " inside non-quoted URLs
-+ Fixed: keep-alive problems with bogus servers
-+ Fixed: Broken .ra files
-+ Fixed: More javascript bugs
-+ Fixed: ftp transfers not properly monitored in the shell
-+ Fixed: various fixes in webhttrack
-+ Fixed: Blank final page in webhttrack
-+ Fixed: Javascript comments (//) are skipped
-+ Fixed: Temporary fix for "archive" bug with multiple java archives
-+ Fixed: Inlined js or css files have their path relative to the parent
-+ Fixed: Unescaped quotes ("") when continuing/updating in commandline mode
-+ Fixed: Null-character in html page bug
-+ Fixed: External depth slightly less bogus
-+ Fixed: Filters based on size bogus ("less than 1KiB" is now functionning)
-+ Fixed: Strange behaviour with filters (last filter "crushed")
-+ Fixed: Bogus downloads when using ftp (unable to save file)
-+ Fixed: Freeze with keep-alive on certain sites due to bad chunk encoding handling
-+ Fixed: Problems with javascript included paths
-+ Fixed: The mirror now aborts when the filesystem is full
-+ Fixed: "No external pages" option fixed
-+ Fixed: Javascript and \" in document.write bug fixed
-+ Fixed: Two memory leaks in temporary file generation, and in link build fixed
-+ Fixed: Bogus compression with non-gzip format
-+ Fixed: Larger range of charsets accepted
-+ Fixed: Bogus robots.txt when using comments (#)
-+ Fixed: Missing MIME types for files such as .ico
-+ Shell: Fixed continuous proxy search
-+ Shell: Fixed missing HelpHtml/ link
-+ Fixed: Overflow in htsback.c:2779
-+ Fixed: Bogus style and script expressions due to too aggressive parsing
-+ Fixed: Javascript parsing bugs with \" and \'
-+ Fixed: Javascript link detection bugs when comments were inserted between arguments
-+ Fixed: Bug when valid empty gzip content was received
-+ New: More aggressive "maximum mirroring time" and "maximum amount of bytes transfered" options
-+ New: Windows file://server/path syntax handled
-+ Fixed: mht archive fixes
-+ Fixed: Serious bugs with filters given in commandline erased by the engine
-+ Fixed: Bogus parsing of javascript: generated inside document.write() inside javascript code removed
-
-3.23
-+ New: Keep-alive
-+ New: URLs size limit is now 1024 bytes
-+ New: Bogus UCS2 html files hack
-+ Fixed: base href bugs
-+ Fixed: windows "dos devices" bug fixed
-+ Fixed: dirty parsing now avoids ","
-+ Fixed: "get non-html files near a link" option sometimes caused huge mirrors
-+ Fixed: Bugs if zlib library is not found
-+ Fixed: Bug with "near" and "no external pages"
-+ Fixed: "Link empty" crash
-+ Fixed: Several javascript bugs
-+ Fixed: Keep-alive problems ("unknown response structure")
-+ Fixed: Major keep-alive bug (connection not closed)
-+ Fixed: 8-3 options not working, ISO9660 option improved
-+ Fixed: Bogus links with embedded CR, TAB..
-+ Fixed: small ../ external link bug fixed
-
-3.22-3
-+ Fixed: Slow engine due to (too strict) memory checks
-+ Fixed: Overflow in htscore.c:2353
-+ Fixed: Bogus chunked files with content-length fixed
-+ Fixed: Folders renamed into ".txt" on Un*x platforms bug fixed!
-+ New: Scan rule list (-%S) added
-+ New: Cache debugging tool (-#C) added
-
-3.21-8
-+ New: Basic Macromedia Flash support (links extraction)
-+ New: Modular design for https, flash parser and zlib
-+ New: Standard autoconf/configure design on Un*x platforms
-+ New: Modular design also on Windows platforms (dll/lib)
-+ Fixed: Text files without extension not renamed "html" anymore
-+ Fixed: Bug with "?foo" urls
-+ Fixed: No chmod 755 on home anymore
-+ Fixed: Stability problems due to bad file structure checks
-+ Fixed: Overflow in GUI/commandline when displaying statistics
-+ Fixed: Directory creation error
-
-3.20-2
-+ New: HTTPS support (SSL)
-+ New: ipv6 support
-+ New: 'longdesc' added
-+ New: new file 'new.txt' generated for transfer status reports
-+ New: ISO9660 compatibility option
-+ New: empty mirror/update detection improved
-+ New: Update hack now recognizes "imported" files
-+ New: Option to disable ipv4/ipv6
-+ New: Filters now recognize patterns like -https://*
-+ Fixed: The engine should be now fully reentrant
-+ Fixed: Fixes for alpha and other 64-bit systems
-+ Fixed: Files downloaded twice if not found in cache
-+ Fixed: ftp problems with 2xx responses
-+ Fixed: ftp problems with multiple lines responses
-+ Fixed: ftp %20 not escaped anymore
-+ Fixed: ftp RETR with quotes problems
-+ Fixed: now tolerent to empty header responses
-+ Fixed: hts-log closed
-+ Fixed: Compressed pages during updates
-+ Fixed: Crash when receiving empty compressed pages
-+ Fixed: Random crashes in 'spider' mode
-+ Fixed: bcopy/bzero not used anymore..
-+ Fixed: various code cleanups
-+ Fixed: Better UTF8 detection
-+ Fixed: External links now work with https and ftp
-+ Fixed: Top index.html corrupted or missing
-+ Fixed: URL list crashes
-+ Fixed: Random crashes with large sites due to bogus naming handler
-+ Fixed: Freezes on some robots.txt files
-+ Fixed: Compressed files not stored
-+ Fixed: SVG fixes
-+ Fixed: Raw HTML responses
-+ Fixed: 406 error workaround
-+ Fixed: Crashes due to binary files with bogus HTML type (not parsed anymore)
-+ Fixed: External https and ftp links broken, relative https links broken
-+ Fixed: Automatic resizing of filter stack
-+ Fixed: Various ampersand (&) elements added
-+ Fixed: https with proxy temporary workaround (direct connection)
-+ Fixed: "base href" with absolute uris
-+ Fixed: stack frame too large on some systems
-+ Fixed: random bad requests due to bogus authentication
-+ Shell: Several fixes, including registration type problems
-+ Shell: "template files not found" fixed
-
-3.16-2
-+ Fixed: Zlib v1.4
-+ Fixed: Gzipped files now downloaded without problems (HTTP compression bug)
-+ Fixed: Ending spaces in URLs now handled correctly
-+ Fixed: META-HTTP bug
-+ Shell: Type registration done only once
-
-3.15
-+ Fixed: Bogus HTTP-referer with protected sites
-+ Fixed: Fatal IO/socket error with large sites (handles not closed)
-+ Fixed: K4 option now works
-+ Fixed: --continue+URL(s) now clears previous URLs
-+ Fixed: Parsing bug with 'www.foo.com?query'
-+ Shell: 'Soft cancel' documented
-+ Shell: 'Kx' options added
-
-3.10
-+ Fixed: Broken pipes on Linux version
-+ Fixed: Commandline version bug with gzipped files
-+ Fixed: Crash when reaching compressed error pages
-+ Fixed: Bogus html-escaped characters in query strings
-+ Fixed: Files skipped (bogus anticipating system)
-+ Fixed: Crash when showing stats (div by zero)
-+ Fixed: Problems with URLs/redirects containing spaces or quotes
-+ Fixed: Slash added when ~ detected
-+ Fixed: Ugly VT terminal
-+ New: Faster and cleaner mirror interrupt
-
-3.09
-+ Fixed: Several problems with javascript parsing
-+ Fixed: Elements after onXXX not parsed
-+ New: Source update wrapper
-+ New: Style url() and @import parsed
-+ Shell: Word database and maximum number of links
-+ Shell: Option changes taken in account immediately
-+ Shell: Cleaner installer (registry keys)
-
-3.08
-+ New: HTTP compression is now supported
-+ New: Faster response analysis
-+ Fixed: External page in html if cgi
-+ Fixed: Mix between CR and CR/LF for comments
-+ Fixed: Top index corrupted
-+ Shell: Better refresh during parsing
-+ Shell: DLL error
-
-3.07
-+ Fixed: Random crashes with HTTP redirects
-+ New: New rate limiter (should be sharper)
-+ New: Code cleaned up, new htscore.c/httrack.c files
-
-3.06
-+ Fixed: Redirect to https/mailto now supported
-+ New: Top index/top dir for Un*x version
-+ New: Sources more modular (.so)
-+ New: Quicktime targetX= tags
-+ New: HTTP 100 partially supported
-
-3.05
-+ Fixed: Non-scannable tag parameters ("id","name",..)
-+ Fixed: Java classes not found when using "." as separator
-+ Fixed: Java classes not found when missing .class
-
-3.04
-+ Fixed: URLs with starting spaces
-+ Fixed: bogus URLs when using "base href"
-+ Shell: --assume and -%e options included
-+ New: Documentation updated a little
-
-3.03
-+ New: Parser optimizations, 10 times faster now!
-+ New: New --assume option to speed up cgi tests
-+ New: Option to avoid Username/password storage for external pages
-+ New: Query string kept for local URIs
-+ Fixed: RFC2396 compliant URLs accepted (//foo and http:foo)
-+ Fixed: foo@foo.com not considered as URL anymore
-+ Fixed: Space encoded into %20 in URIs
-+ Fixed: "Unable to save file" bug
-+ Fixed: Corrupted top index.html
-+ Fixed: Cookies disabled with --get
-+ Fixed: Cache bug for error pages
-
-3.02
-+ Fixed: Pages without title recorded in top index
-+ Fixed: Error with Content-type+Content-disposition
-+ Fixed: backblue.gif/external.html files not purged anymore
-+ Fixed: Encoding problems with files containing %2F or other characters
-+ Fixed: Write error reported for HTML files
-+ New: hts-stop.lock file to pause the engine
-+ New: New install system using InnoSetup
-
-3.01
-+ New: HTTP real media files captured
-+ Fixed: Bogus statitics
-+ Fixed: Minor fixes
-
-3.00
-+ New: New interface, with MANY improvements!
-+ New: Better parsing (enhanced javascript parsing, sharper HTML parsing)
-+ New: Faster and more efficient background download system
-+ New: ETag properly handled
-+ New: Optional URL list
-+ New: Optionnal config file
-+ New: New structure options
-+ New: New filters options (size filters)
-+ New: Better password site handling
-+ New: Traffic control to avoid server overload
-+ New: Setuid and Chroot for Unix release
-+ New: limited 64-bit handling
-+ New: .js files are now parsed
-+ New: Single hts-log.txt file, error level
-+ New: New top index.html design
-+ New: "Update hack" option to prevent unnecessary updates
-+ New: Default language sent for mirrors
-+ New: Searchable index
-+ Fixed: Bogus ftp routines (Linux version)
-+ Fixed: Bug that caused to mirror a complete site from a subdir
-+ Fixed: Bug that caused restart to be very slow
-+ Fixed: Bug that caused loops on several query-string pages (?foo=/)
-+ Fixed: Corrupted cache bug
-+ Fixed: Random broken links (pages not downloaded)
-+ Fixed: Shared links problems
-+ Fixed: Bogus URLs with commas (,)
-+ Fixed: Bogus / and \ mixed
-+ Fixed: Bogus addresses with multiple @
-+ Fixed: Bogus links with %2E and %2F
-+ Fixed: Bogus empty links
-+ Fixed: "Unexpected backing error" bug fixed
-+ Fixed: Files with incorrect size no more accepted
-+ Fixed: Top index.html created even for untitled pages
-+ Fixed: Bogus N100 option (unable to save file)
-+ Fixed: Deadlock when using many hosts in URLs
-+ Fixed: Password stored internally to avoid access errors
-+ Fixed: Fixed /nul DOS limit
-+ Fixed: Bogus -* filter (nothing mirrored)
-+ Fixed: .shtml now renamed into .html
-+ Fixed: Content-disposition without ""
-+ Fixed: External html page for /foo links
-+ Fixed: Username/password % compliant
-+ Fixed: Javascript parser sometimes failed with " and ' mixed
-+ Fixed: Some Range: bugs when regeting complete files
-+ Fixed: Range: problems with html files
-+ Fixed: HTTP/1.1 407 and 416 messages now handled
-+ Fixed: Bogus timestamp
-+ Fixed: Null chars in HTML bug
-+ Fixed: Error pages cache bug
-+ Fixed: Connect error/site moved do not delete everything anymore!
-+ Fixed: Bogus garbage ../ in relative URL
-+ Shell: New transfer rate estimation
-+ Shell: Fixed crash when using verbose wizard
-+ Shell: dynamic lang.h for easier translation updates
-+ Shell: Fixed some options not passed to the engine
-+ Fixed: A lots of minor fixes!
-
-2.2
-Note: 3.00 alpha major bug fixes are included in the 2.2
-
-2.02
-+ New: Cache system improved, compatible with all platforms
-+ New: Update process improved (accurate date)
-+ New: Remote timestamp for files
-+ New: ETag (HTTP/1.1) supported
-+ Shell: Portugese interface available
-+ Fixed: Bug with links containing commas
-+ Fixed: 'file://' bug with proxy
-+ New: Engine a little bit faster
-+ Shell: Some bugs fixed in the interface
-
-2.01
-+ New: ftp through proxy finally supported!
-+ New: Sources cleaned up
-+ New: Again some new marvelous options
-+ New: Speed improved (links caught during parsing, faster "fast update")
-+ New: Tool to catch "submit" URL (forms or complex javascript links)
-+ Shell: German interface available
-+ Shell: Dutch interface available
-+ Shell: Polish interface available
-+ Fixed: Level 1 bug fixed
-+ Fixed: Still some parsing/structure problems
-+ Fixed: Referer now sent to server
-+ Fixed: Cookies did not work properly
-+ Fixed: Problems with redirect pages
-+ New: Better javascript parsing
-+ Fixed: Problems with URL-parameters (foo.cgi?param=2&choice=1)
-+ Fixed: Problems with ftp
-+ New: ftp transfers are now in passive mode (firewall compliant)
-
-2.00 -- The First Free Software Release of HTTrack!
-+ New: HTTrack sources (command line), now free software, are given
-+ Shell: Interface rewritten!
-+ New: Documentation rewritten
-+ Shell: Drag&Drop abilities
-+ Shell: More URL informations
-+ Shell: Fixed: Remote access problems
-+ Fixed: Loop problems on some sites causing crashes
-+ Fixed: URL encoding problems
-+ Fixed: Some file access problems for ../
-+ Fixed: Some fixes for updating a mirror
-+ Shell: Crazy progress bar fixed
-+ Fixed: Form action are rewritten so that cgi on form can work from an offline mirror
-+ Fixed: Crashes after continuing an "hand-interrupted" mirror
-+ Fixed: Bogus files with some servers (chunk bug)
-
-1.30
-+ Shell: Interface improved
-+ New: robots.txt are followed by default
-+ New: Parsing speed improved on big (>10,000 links) sites with an hash table
-+ New: Mirror Link mode (mirror all links in a page)
-+ New: Cookies are now understood
-+ New: No external pages option (replace external html/gif by default files)
-+ New: Command line version improved, background on Unix releases
-+ Fixed: Problems with javascript parsing
-+ Fixed: Username/password not set to lowercase anymore
-+ Fixed: Problems with base href
-+ New: Links in level 1 html files now patched
-+ New: Expurge now deletes unused folders
-+ New: Option -V executes shell command for every new file
-+ Shell: Primary filter now works
-
-1.24
-+ Fixed: Ftp protocol bogus (with login/pass)
-+ Fixed: Cache problems (corrupted files)
-+ New: Expurge old files for updates
-+ New: "Updated" messages for mirror updates
-+ Shell: Autodial/hangup option to RAS
-+ Fixed: index.html were not created sometimes
-+ Shell: Fixed: Random crashes with the interface
-+ Shell: Fixed: Filters profile not saved
-+ Fixed: Various (and numerous) fixes
-
-1.23
-+ Shell: Interface improved
-+ Shell: Multiple setups
-+ Shell: Redefine options
-+ Shell: Continue interrupted mirror improved
-
-1.22
-+ Fixed: Parsing up/down did not work well
-+ Fixed: Several files not catched, bugs fixes
-+ Fixed: Problems with classes (1.21)
-+ New: Transfer rate can be limited (-A option)
-+ Shell: Smooth refresh
-+ New: ftp basic protocol a little bit improved
-
-1.21
-+ Fixed: Several java classes were not parsed
-+ Fixed: Some folders without ending / ignored
-+ Fixed: Crashes due to content-type too long
-
-1.20
-+ Shell: documentation!
-+ Fixed: Some problems with 'host cancel' system after timeouts (crashes)
-+ New: Get only end of files if possible (file partially get)
-+ New: New cache system (only HTML stored)
-+ New: User-defined structure possible
-+ New: Also available: french interface
-+ Fixed: Random crashes (div by 0/illegal instruction) with null size files
-+ New: Limited ftp protocol (files only), e.g. +ftp://* now works
-+ Fixed: Some connect problems with several servers or proxies
-+ New: New option, save html error report by default
-+ Shell: Browse and see log files at the end of a mirror
-+ New: Proxy authentication (ex: guest:star@myproxy.com:8080)
-+ Shell: Interface improved (especially during mirror)
-+ Fixed: Ambiguous files are renamed (asp,cgi->html/gif..)
-+ Shell: New test link mode option
-+ New: Site authentication (ex: guest:star@www.myweb.com/index.html)
-+ Fixed: Minor bugs fixed
-+ Shell: See log files during a mirror
-+ Fixed: Some problems using CGI (different names now)
-+ Fixed: Go down/up/both options and filters
-+ Fixed: "Store html first" did not work
-+ New: -F option ("Browser ID") disguise HTTrack into a browser
-+ New: New filter system
-+ Shell: New "Save as default" options
-+ Fixed: "Build options" did NOT work properly! (files overwritten or missing)
-+ Fixed: User agent ID fixed
-+ Shell: Skip options
-+ Shell: Better interface control during mirrors
-+ Shell: InstallShield and Help files
-+ Fixed: Some external links were not filtered sometimes
-+ Fixed: Mirror crash at the end
-
-1.16b
-+ Shell: Really *stupid* bug fixed causing WinHTTrack to be slooow
-+ Fixed: Crash if the first page has no title fixed
-+ Fixed: Bogus options like "Just scan" saved empty files
-+ Fixed: Forbid all links (*) with manual accept did not work
-+ Shell: Filters interface improved
-1.16:
-+ New : Java Classes and subclasses are now retrieved!
-+ New: Better JavaScripts parsing
-+ New: Option: Abandon slowest hosts if timeout/transfer too slow
-+ Shell: Interface improved
-
-1.15b
-+ Fixed: Some bugs fixed
-1.15:
-+ Shell: Interface improved
-+ New: Robot improved (some files through javascript are now detected!)
-+ New: Improved wild cards (for example, +www.*.com/*.zip)
-+ New: 'config' file to configurate proxy, path.. only once
-
-1.11
-+ New: Wait for specific time (begin transfer at specific hour)
-+ New: Time limit option (stops transfer after x seconds)
-+ Shell: Interface improved for an easy use
-
-1.10e
-+ Fixed: Maps were not correctly managed (stupid bug)
-1.10d:
-+ Fixed: Bogus index.html fixed
-1.10c
-+ Shell: "Time out" field needed "transfer rate" field
-1.10b
-+ Fixed: Better memory management
-1.10
-+ New: "Transfer rate out" option added (abandon slowests sites)
-+ New: "Deaf" hosts do not freeze HTTrack any more
-+ Fixed: Again problems with code/codebase tags
-+ New: Broken links detection improved
-
-1.04
-+ Fixed:Some links were not correctly read (pages with "codebase" tags)
-+ Shell: Interface improved
-
-1.03 (No changes for the command-line robot)
-+ Shell: Big bug fixed! (VERY slow transfer rates..)
-
-1.02
-+ Fixed: Some java files were not correctly transfered
-+ New: Speed has been improved
-+ Fixed: Log file more accurate
-+ Shell: Interface has been improved
-
-1.01
-+ Fixed: Structure check error in some cases
-
-1.00 -- The 1.00, Yeah!
-+ New: base and codebase are now scanned
-
-0.998 beta-2
-+ Fixed: Multiple name bug (files having the same name in the same directory) with -O option fixed
-
-0.997 beta-2
-+ Fixed: Filenames with '%' were not correctly named
-+ Fixed: Bug detected in 0.996: several files are not written on disk!!
-
-0.996 beta-2
-+ New: -O option (path for mirror and log)
-+ New: Unmodified file time/date are not changed during an update
-
-0.99 beta-2
-+ New: User-agent field
-+ New: Shortcuts (--spider etc.)
-+ New: Links not retrieved are now rebuilt absolutly
-+ New: The 'g' option (juste get files in current directory) has been added
-+ New: Primary links analyste has been improved
-+ Fixed: "304" bug fixed
-
-0.25 beta-2
-+ Fixed: Freeze during several mirrors fixed!
-+ New: More 'N' options (filenames type)
-
-0.24 beta-2
-+ Fixed: Restart/Update with cache did not work (really not..)
-+ Fixed: Wild cards now work properly (e.g. +www.abc.com* do works)
-+ New: The 'n' option (get non-html files near a link) has been added!
-
-0.23 beta-2
-+ Fixed: The 'M' option (site size) did not work
-+ Fixed: Files larger than 65Kb were not correctly written
-
-older beta
-+ Many, many bugs fixed
-
+
+HTTrack Website Copier release history:
+--------------------------------------
+
+This file lists all changes and fixes that have been made for HTTrack.
+
+3.43-12
++ Fixed: buffer overflow while repairing httrack cache if a damaged cache is found from a previous mirror (closes:#607704)
+
+3.43-11
++ Fixed: webhttrack fixes for icecat (closes:#605140)
+
+3.43-10
++ Fixed: capture URL not working properly when IPv6 is installed (John Bostelman)
+
+3.43-9
++ Fixed: application/xhtml+xml not seen as "html" (Peter Fritzsche)
++ Fixed: various linux fixes for desktop files (closes:#563691)
+
+3.43-8
++ Fixed: URL encoding bugs with filenames containing '%' characters (sandboxie32)
++ Fixed: MacPorts Darwin/Mac fixes to webhttrack (Ross Williams)
++ Fixed: Flash link extraction has been improved (Vincent/suei8423)
+
+3.43-7
++ Fixed: "Open error when decompressing" errors due to temporary file generation problems (Scott Mueller)
+
+3.43-6
++ Shell: WIN32 setup cosmetic fixes: do not probe the proxy on non-local network, do not force *.whtt registration
+
+3.43-5
++ Fixed: code tag handling bug in certain cases leading to produce invalid links (Tom-tmh13 and William Roeder)
+
+3.43-4
++ Fixed: horrible SSL slowdowns due to bogus select() calls (Patrick Pfeifer)
++ Fixed: Konqueror fixes
+
+3.43-3
++ Updated: Portugues-Brasil language file
+
+3.43-2
++ Fixed: wizard question buggy, and commandline version did not print it (Maz)
++ Fixed: do not rename xml subtypes (such as xsd schemas) (Eric Avrillon)
+
+3.43
++ Fixed: Fixed too aggressive javascript url= parsing (Chris)
++ Fixed: fixed --urllist option "sticking" the list content to the list of URL (Andreas Maier)
++ Fixed: "Previous cache file not found" not redownloading file when deleted before an update (William Roeder)
++ Fixed: *.rpm.src files renamed to *.src.src with bogus servers (Hippy Dave)
++ Fixed: "pause" is pausing much faster (William Roeder)
++ Fixed: binary real media files and related files are no longer being parsed as html (William Roeder)
++ Fixed: "File not parsed, looks like binary" check no longer corrupt the checked binary file
++ Fixed: multiple download of error pages (several identical '"Not Found" (404) at link [identical link]') leading to a slowdown in certain cases (William Roeder)
++ Fixed: sometimes, a double request was issued to update a broken file
++ Fixed: display bug "link is probably looping, type unknown, aborting .."
++ Fixed: missing library references at build time and other build related issues (Debarshi Ray)
++ Fixed: on windows, switched from wsock32.dll to ws2_32.dll
++ Fixed: minor argument size validation error for "-O" option (Joan CALVET)
+
+3.42-3
++ Fixed: Bad URL length validation in the commandline (Joan CALVET)
+
+3.42-2
++ Fixed: Random crashes at the end of the mirror due to a dangling file pointer (Carlos, angus at quovadis.com.ar)
+
+3.42
++ Fixed: size limits are stopping the mirror gently, finishing pending transfers (David Stevenson)
+
+3.41-3
++ Fixed: text/plain advertised files renamed into .txt
++ Fixed: broken configure.in
+
+3.41-2
++ Fixed: major WIN32 inlined function bug caused the cache not to be used at all, causing update not to work
+
+3.41
++ New: changed API/ABI to thread-safe ones (libhttrack1 2), big cleanup in all .h definitions
++ Fixed: Major memory usage bug when downloading large sites
++ Fixed: do not rename files if the original MIME type was compatible
++ Fixed: several source fixes for freeBSD (especially time problems)
++ New: option %w to disable specific modules (java, flash..)
++ Fixed: 'no space left in stack for back_add' error
++ Fixed: fixed redirected images with "html" type
++ Fixed: 'Crash adding error, unexpected error found.. [4268]' error
+
+3.40-2
++ Fixed: bogus '.del' filenames with ISO-9660 option
++ Fixed: now merges the header charset even with an empty footer string
++ New: --port option for webhttrack
+3.40
++ New: mms:// streaming capture (thanks to Nicolas Benoit!)
++ New: proxyTrack project released
++ New: new experimental parser that no longer needs link testing ('testing link type..')
++ New: Redirect handled transparently with delayed type check and broken links made external when the "no error page" option is enabled
++ New: improved background download to handle large sites
++ New: '--assume foo/bar.cgi=text/html' is now possible
++ New: MIME type scan rules (such as -mime:video/* +mime:video/mpeg)
++ New: size scan rules now allows to rewrite uncaught links as external links
++ Fixed: crash fixed when ftime()/localtime()==NULL
++ Fixed: iso-9660 option now using '_' for collision character
++ Fixed: collision problems with CaSe SeNsItIvItY
++ Fixed: a href='..' fixed!
++ Fixed: redirects are now handled by the new experimental parser
++ Fixed: "./" links generated with fixed outbound links (../../)
++ Fixed: 'base href' bogus in many cases
++ Fixed: enforce security limits to avoid bandwidth abuses
++ Fixed: bogus external (swf) parser, fixed remaining .delayed files
++ New: new check-mime and save-file2 callbacks
++ New: "always delayed type check" enabled
++ Fixed: totally bogus finalizer causing compressed files not to be uncompressed, and many files to be truncated
++ Shell: new Finnish interface added!
++ Fixed: "..html" bogus type
++ Fixed: remaining bogus .delayed entries
++ Fixed: flush before user-defined command
++ Fixed: fixed user-defined command call and background cleaner
++ Fixed: fixed 'Crash adding error, unexpected error found.. [4250]' error
++ Fixed: fixed cache absolute file reference (the reference is now relative) preventing the cache form being moved to another place
++ Fixed: webhttrack 'Browse Sites' path bug
++ Fixed: old httrack cache format fixes (import of older versions did not work anymore)
++ Fixed: port fixes in htsnet.h
++ Fixed: -N option with advanced extraction (bogus "not found" member)
++ Fixed: javascript: location=URL was not recognized
++ Fixed: no more character escaping when not needed (such as UTF-8 codes)
++ Fixed: possibly temporary files left on disk with bogus servers giving compressed content on HEAD reuests
++ Fixed: URL hack caused unexpected filename collisions (index.html vs INDEX.HTML)
++ Fixed: "do not erase already downloaded file" option now correctly works (it leaves files linked in the mirror)
++ Fixed: UCS2 encoded pages are now converted properly into UTF-8
++ New: "near" option now also catch embedded (images, css, ..) files
++ Fixed: bogus chunked multimedia link text files (such as x-ms-asf files)
++ Fixed: compilation problems on Un*x version
+
+3.33
++ Fixed: Bogus redirects with same location in https
++ Fixed: Bogus file naming with URL hack
++ Fixed: Extremly slow redirections and empty files
++ Fixed: Bogus names with directories ending with a "."
++ New: Number of connection per second can now be.. decimal, to delay even more
++ New: Enforce stronger ISO9660 compliance
++ Shell: "URL Hack" in interface
++ Shell: "Save settings" now rebuild categories
++ Shell: "Shutdown PC after mirror" option
++ Shell: Sound at the begining/end or the mirror (configurable through system sound properties)
++ Shell: Fixed drag & drop, .url import
++ Shell: Fixed "wizard" mode (crash)
++ Fixed: Crash at the end due to unterminated pending threads
++ Fixed: \ is not anymore transformed into / after the query (?) delimiter
++ New: Two new callbacks for pre/post-processing html data
++ New: link-detected2 callback (additional tag name parameter)
++ Fixed: Broken ISO9660
++ Fixed: Crash on file:// links
++ Fixed: Unescaped ampersands (&) in URLs
++ Fixed: Transfer hangs introduced in 3.33-beta-2
++ Fixed: Display bug "Waiting for scheduled time.."
++ Fixed: Bug "Waiting for scheduled time.." (NOT a display bug, actually)
++ Fixed: CaSe SenSiTiViTy bugs with mutliple links reffering to the same URL but using different case styles
++ Fixed: Failed to build from sources (FTBFS) on amd64 archs because of cast problems (Andreas Jochens)
++ Fixed: & were converted into &nbsp; (Leto Kauler)
++ Shell: Fixed crash with long URL lists (Libor Striz)
++ Fixed: connection/seconds limiter replugged
++ Fixed: "no files updated" display bug
++ Fixed: bogus links encoded with UTF (Lukasz Wozniak)
++ New: --assume can be used to force a specific script type (Brian Schröder)
+
+3.32
++ Fixed: css and js files were not parsed!
++ Fixed: again broken file:// (infinite loops with local crawls)
++ Fixed: Bandwidth limiter more gentle with low transfer rate
++ Fixed: external wrappers were not called during updates/continue
++ New: additional callback examples
++ Fixed: overflow in unzip.c fixed
++ New: tests are now cached for better performances!
++ New: %r (protocol) option for user-defined structure
++ Fixed: Broken engine on 64-bit archs
+
+3.31
++ New: Experimental categories implemented
++ New: New cache format (ZIP file)
++ New: .m3u files now crawled
++ New: .aam files now crawled
++ Fixed: Broken ftp
++ Fixed: Broken file://
++ Fixed: Broken cookies management and loading
++ Fixed: HTTrackInterface.c:251 crash
++ Fixed: "N connections" means "N connections" even in scan phase
++ Fixed: javascript:location bug
++ Fixed: libtool versioning problem fixed
++ Fixed: More javascript bugs with \' and \"
++ Fixed: .HTM files not renamed into .html anymore
++ Fixed: OSX fixes in the Makefile script
++ New: Default "referer" and "from" fields
++ New: Full HTTP headers are now stored in cache
++ Fixed: ftp transfer not logged/properly finalized
++ Fixed: Missing symbolic link in webhttrack install
++ Fixed: path and language not saved in webhttrack
++ Shell: Avoid invalid project names
++ Fixed: Javascript bug with src=
++ Fixed: Keep-alive consistency problems on Linux/Unix with bogus servers (SIGPIPE)
++ Fixed: Parsing bug inside javascript (bogus parsing with empty quotes in function: foo(''))
++ Fixed: static compiling on Linux/Unix
++ Fixed: bloated .h headers (internal function definitions)
++ Fixed: Bogus query strings with embedded ../ and/or ./
++ New: Added "change-options" call in the crawl begining
++ New: Query arguments now sorted for normalized URL checks (when "url hack" option is activated)
++ Fixed: Previous dependency to zlib.dll to zlib1.dll
++ Fixed: Broken static files were not correctly updated with the new cache format
++ Shell: Launch button in Internet Explorer
++ Fixed: Crash when dealing with multiple '?' in query string with 3.31-alpha
+
+3.30
++ New: Webhttrack, a linux/unix/bsd Web GUI for httrack
++ New: "URL hack" feature
++ New: HTTP-headers charset is now propagated in the html file
++ New: loadable external engine callbacks
++ New: Experimental ".mht" archives format
++ Fixed: Query ?? bug
++ Fixed: Bogus base href without http://
++ Fixed: Several javascript bugs
++ Fixed: UCS2 pages badly detected
++ Fixed: Build structure change does not redownload files
++ Fixed: "?foo" URL bug (link with only a query string) fixed
++ Fixed: ' or " inside non-quoted URLs
++ Fixed: keep-alive problems with bogus servers
++ Fixed: Broken .ra files
++ Fixed: More javascript bugs
++ Fixed: ftp transfers not properly monitored in the shell
++ Fixed: various fixes in webhttrack
++ Fixed: Blank final page in webhttrack
++ Fixed: Javascript comments (//) are skipped
++ Fixed: Temporary fix for "archive" bug with multiple java archives
++ Fixed: Inlined js or css files have their path relative to the parent
++ Fixed: Unescaped quotes ("") when continuing/updating in commandline mode
++ Fixed: Null-character in html page bug
++ Fixed: External depth slightly less bogus
++ Fixed: Filters based on size bogus ("less than 1KiB" is now functionning)
++ Fixed: Strange behaviour with filters (last filter "crushed")
++ Fixed: Bogus downloads when using ftp (unable to save file)
++ Fixed: Freeze with keep-alive on certain sites due to bad chunk encoding handling
++ Fixed: Problems with javascript included paths
++ Fixed: The mirror now aborts when the filesystem is full
++ Fixed: "No external pages" option fixed
++ Fixed: Javascript and \" in document.write bug fixed
++ Fixed: Two memory leaks in temporary file generation, and in link build fixed
++ Fixed: Bogus compression with non-gzip format
++ Fixed: Larger range of charsets accepted
++ Fixed: Bogus robots.txt when using comments (#)
++ Fixed: Missing MIME types for files such as .ico
++ Shell: Fixed continuous proxy search
++ Shell: Fixed missing HelpHtml/ link
++ Fixed: Overflow in htsback.c:2779
++ Fixed: Bogus style and script expressions due to too aggressive parsing
++ Fixed: Javascript parsing bugs with \" and \'
++ Fixed: Javascript link detection bugs when comments were inserted between arguments
++ Fixed: Bug when valid empty gzip content was received
++ New: More aggressive "maximum mirroring time" and "maximum amount of bytes transfered" options
++ New: Windows file://server/path syntax handled
++ Fixed: mht archive fixes
++ Fixed: Serious bugs with filters given in commandline erased by the engine
++ Fixed: Bogus parsing of javascript: generated inside document.write() inside javascript code removed
+
+3.23
++ New: Keep-alive
++ New: URLs size limit is now 1024 bytes
++ New: Bogus UCS2 html files hack
++ Fixed: base href bugs
++ Fixed: windows "dos devices" bug fixed
++ Fixed: dirty parsing now avoids ","
++ Fixed: "get non-html files near a link" option sometimes caused huge mirrors
++ Fixed: Bugs if zlib library is not found
++ Fixed: Bug with "near" and "no external pages"
++ Fixed: "Link empty" crash
++ Fixed: Several javascript bugs
++ Fixed: Keep-alive problems ("unknown response structure")
++ Fixed: Major keep-alive bug (connection not closed)
++ Fixed: 8-3 options not working, ISO9660 option improved
++ Fixed: Bogus links with embedded CR, TAB..
++ Fixed: small ../ external link bug fixed
+
+3.22-3
++ Fixed: Slow engine due to (too strict) memory checks
++ Fixed: Overflow in htscore.c:2353
++ Fixed: Bogus chunked files with content-length fixed
++ Fixed: Folders renamed into ".txt" on Un*x platforms bug fixed!
++ New: Scan rule list (-%S) added
++ New: Cache debugging tool (-#C) added
+
+3.21-8
++ New: Basic Macromedia Flash support (links extraction)
++ New: Modular design for https, flash parser and zlib
++ New: Standard autoconf/configure design on Un*x platforms
++ New: Modular design also on Windows platforms (dll/lib)
++ Fixed: Text files without extension not renamed "html" anymore
++ Fixed: Bug with "?foo" urls
++ Fixed: No chmod 755 on home anymore
++ Fixed: Stability problems due to bad file structure checks
++ Fixed: Overflow in GUI/commandline when displaying statistics
++ Fixed: Directory creation error
+
+3.20-2
++ New: HTTPS support (SSL)
++ New: ipv6 support
++ New: 'longdesc' added
++ New: new file 'new.txt' generated for transfer status reports
++ New: ISO9660 compatibility option
++ New: empty mirror/update detection improved
++ New: Update hack now recognizes "imported" files
++ New: Option to disable ipv4/ipv6
++ New: Filters now recognize patterns like -https://*
++ Fixed: The engine should be now fully reentrant
++ Fixed: Fixes for alpha and other 64-bit systems
++ Fixed: Files downloaded twice if not found in cache
++ Fixed: ftp problems with 2xx responses
++ Fixed: ftp problems with multiple lines responses
++ Fixed: ftp %20 not escaped anymore
++ Fixed: ftp RETR with quotes problems
++ Fixed: now tolerent to empty header responses
++ Fixed: hts-log closed
++ Fixed: Compressed pages during updates
++ Fixed: Crash when receiving empty compressed pages
++ Fixed: Random crashes in 'spider' mode
++ Fixed: bcopy/bzero not used anymore..
++ Fixed: various code cleanups
++ Fixed: Better UTF8 detection
++ Fixed: External links now work with https and ftp
++ Fixed: Top index.html corrupted or missing
++ Fixed: URL list crashes
++ Fixed: Random crashes with large sites due to bogus naming handler
++ Fixed: Freezes on some robots.txt files
++ Fixed: Compressed files not stored
++ Fixed: SVG fixes
++ Fixed: Raw HTML responses
++ Fixed: 406 error workaround
++ Fixed: Crashes due to binary files with bogus HTML type (not parsed anymore)
++ Fixed: External https and ftp links broken, relative https links broken
++ Fixed: Automatic resizing of filter stack
++ Fixed: Various ampersand (&) elements added
++ Fixed: https with proxy temporary workaround (direct connection)
++ Fixed: "base href" with absolute uris
++ Fixed: stack frame too large on some systems
++ Fixed: random bad requests due to bogus authentication
++ Shell: Several fixes, including registration type problems
++ Shell: "template files not found" fixed
+
+3.16-2
++ Fixed: Zlib v1.4
++ Fixed: Gzipped files now downloaded without problems (HTTP compression bug)
++ Fixed: Ending spaces in URLs now handled correctly
++ Fixed: META-HTTP bug
++ Shell: Type registration done only once
+
+3.15
++ Fixed: Bogus HTTP-referer with protected sites
++ Fixed: Fatal IO/socket error with large sites (handles not closed)
++ Fixed: K4 option now works
++ Fixed: --continue+URL(s) now clears previous URLs
++ Fixed: Parsing bug with 'www.foo.com?query'
++ Shell: 'Soft cancel' documented
++ Shell: 'Kx' options added
+
+3.10
++ Fixed: Broken pipes on Linux version
++ Fixed: Commandline version bug with gzipped files
++ Fixed: Crash when reaching compressed error pages
++ Fixed: Bogus html-escaped characters in query strings
++ Fixed: Files skipped (bogus anticipating system)
++ Fixed: Crash when showing stats (div by zero)
++ Fixed: Problems with URLs/redirects containing spaces or quotes
++ Fixed: Slash added when ~ detected
++ Fixed: Ugly VT terminal
++ New: Faster and cleaner mirror interrupt
+
+3.09
++ Fixed: Several problems with javascript parsing
++ Fixed: Elements after onXXX not parsed
++ New: Source update wrapper
++ New: Style url() and @import parsed
++ Shell: Word database and maximum number of links
++ Shell: Option changes taken in account immediately
++ Shell: Cleaner installer (registry keys)
+
+3.08
++ New: HTTP compression is now supported
++ New: Faster response analysis
++ Fixed: External page in html if cgi
++ Fixed: Mix between CR and CR/LF for comments
++ Fixed: Top index corrupted
++ Shell: Better refresh during parsing
++ Shell: DLL error
+
+3.07
++ Fixed: Random crashes with HTTP redirects
++ New: New rate limiter (should be sharper)
++ New: Code cleaned up, new htscore.c/httrack.c files
+
+3.06
++ Fixed: Redirect to https/mailto now supported
++ New: Top index/top dir for Un*x version
++ New: Sources more modular (.so)
++ New: Quicktime targetX= tags
++ New: HTTP 100 partially supported
+
+3.05
++ Fixed: Non-scannable tag parameters ("id","name",..)
++ Fixed: Java classes not found when using "." as separator
++ Fixed: Java classes not found when missing .class
+
+3.04
++ Fixed: URLs with starting spaces
++ Fixed: bogus URLs when using "base href"
++ Shell: --assume and -%e options included
++ New: Documentation updated a little
+
+3.03
++ New: Parser optimizations, 10 times faster now!
++ New: New --assume option to speed up cgi tests
++ New: Option to avoid Username/password storage for external pages
++ New: Query string kept for local URIs
++ Fixed: RFC2396 compliant URLs accepted (//foo and http:foo)
++ Fixed: foo@foo.com not considered as URL anymore
++ Fixed: Space encoded into %20 in URIs
++ Fixed: "Unable to save file" bug
++ Fixed: Corrupted top index.html
++ Fixed: Cookies disabled with --get
++ Fixed: Cache bug for error pages
+
+3.02
++ Fixed: Pages without title recorded in top index
++ Fixed: Error with Content-type+Content-disposition
++ Fixed: backblue.gif/external.html files not purged anymore
++ Fixed: Encoding problems with files containing %2F or other characters
++ Fixed: Write error reported for HTML files
++ New: hts-stop.lock file to pause the engine
++ New: New install system using InnoSetup
+
+3.01
++ New: HTTP real media files captured
++ Fixed: Bogus statitics
++ Fixed: Minor fixes
+
+3.00
++ New: New interface, with MANY improvements!
++ New: Better parsing (enhanced javascript parsing, sharper HTML parsing)
++ New: Faster and more efficient background download system
++ New: ETag properly handled
++ New: Optional URL list
++ New: Optionnal config file
++ New: New structure options
++ New: New filters options (size filters)
++ New: Better password site handling
++ New: Traffic control to avoid server overload
++ New: Setuid and Chroot for Unix release
++ New: limited 64-bit handling
++ New: .js files are now parsed
++ New: Single hts-log.txt file, error level
++ New: New top index.html design
++ New: "Update hack" option to prevent unnecessary updates
++ New: Default language sent for mirrors
++ New: Searchable index
++ Fixed: Bogus ftp routines (Linux version)
++ Fixed: Bug that caused to mirror a complete site from a subdir
++ Fixed: Bug that caused restart to be very slow
++ Fixed: Bug that caused loops on several query-string pages (?foo=/)
++ Fixed: Corrupted cache bug
++ Fixed: Random broken links (pages not downloaded)
++ Fixed: Shared links problems
++ Fixed: Bogus URLs with commas (,)
++ Fixed: Bogus / and \ mixed
++ Fixed: Bogus addresses with multiple @
++ Fixed: Bogus links with %2E and %2F
++ Fixed: Bogus empty links
++ Fixed: "Unexpected backing error" bug fixed
++ Fixed: Files with incorrect size no more accepted
++ Fixed: Top index.html created even for untitled pages
++ Fixed: Bogus N100 option (unable to save file)
++ Fixed: Deadlock when using many hosts in URLs
++ Fixed: Password stored internally to avoid access errors
++ Fixed: Fixed /nul DOS limit
++ Fixed: Bogus -* filter (nothing mirrored)
++ Fixed: .shtml now renamed into .html
++ Fixed: Content-disposition without ""
++ Fixed: External html page for /foo links
++ Fixed: Username/password % compliant
++ Fixed: Javascript parser sometimes failed with " and ' mixed
++ Fixed: Some Range: bugs when regeting complete files
++ Fixed: Range: problems with html files
++ Fixed: HTTP/1.1 407 and 416 messages now handled
++ Fixed: Bogus timestamp
++ Fixed: Null chars in HTML bug
++ Fixed: Error pages cache bug
++ Fixed: Connect error/site moved do not delete everything anymore!
++ Fixed: Bogus garbage ../ in relative URL
++ Shell: New transfer rate estimation
++ Shell: Fixed crash when using verbose wizard
++ Shell: dynamic lang.h for easier translation updates
++ Shell: Fixed some options not passed to the engine
++ Fixed: A lots of minor fixes!
+
+2.2
+Note: 3.00 alpha major bug fixes are included in the 2.2
+
+2.02
++ New: Cache system improved, compatible with all platforms
++ New: Update process improved (accurate date)
++ New: Remote timestamp for files
++ New: ETag (HTTP/1.1) supported
++ Shell: Portugese interface available
++ Fixed: Bug with links containing commas
++ Fixed: 'file://' bug with proxy
++ New: Engine a little bit faster
++ Shell: Some bugs fixed in the interface
+
+2.01
++ New: ftp through proxy finally supported!
++ New: Sources cleaned up
++ New: Again some new marvelous options
++ New: Speed improved (links caught during parsing, faster "fast update")
++ New: Tool to catch "submit" URL (forms or complex javascript links)
++ Shell: German interface available
++ Shell: Dutch interface available
++ Shell: Polish interface available
++ Fixed: Level 1 bug fixed
++ Fixed: Still some parsing/structure problems
++ Fixed: Referer now sent to server
++ Fixed: Cookies did not work properly
++ Fixed: Problems with redirect pages
++ New: Better javascript parsing
++ Fixed: Problems with URL-parameters (foo.cgi?param=2&choice=1)
++ Fixed: Problems with ftp
++ New: ftp transfers are now in passive mode (firewall compliant)
+
+2.00 -- The First Free Software Release of HTTrack!
++ New: HTTrack sources (command line), now free software, are given
++ Shell: Interface rewritten!
++ New: Documentation rewritten
++ Shell: Drag&Drop abilities
++ Shell: More URL informations
++ Shell: Fixed: Remote access problems
++ Fixed: Loop problems on some sites causing crashes
++ Fixed: URL encoding problems
++ Fixed: Some file access problems for ../
++ Fixed: Some fixes for updating a mirror
++ Shell: Crazy progress bar fixed
++ Fixed: Form action are rewritten so that cgi on form can work from an offline mirror
++ Fixed: Crashes after continuing an "hand-interrupted" mirror
++ Fixed: Bogus files with some servers (chunk bug)
+
+1.30
++ Shell: Interface improved
++ New: robots.txt are followed by default
++ New: Parsing speed improved on big (>10,000 links) sites with an hash table
++ New: Mirror Link mode (mirror all links in a page)
++ New: Cookies are now understood
++ New: No external pages option (replace external html/gif by default files)
++ New: Command line version improved, background on Unix releases
++ Fixed: Problems with javascript parsing
++ Fixed: Username/password not set to lowercase anymore
++ Fixed: Problems with base href
++ New: Links in level 1 html files now patched
++ New: Expurge now deletes unused folders
++ New: Option -V executes shell command for every new file
++ Shell: Primary filter now works
+
+1.24
++ Fixed: Ftp protocol bogus (with login/pass)
++ Fixed: Cache problems (corrupted files)
++ New: Expurge old files for updates
++ New: "Updated" messages for mirror updates
++ Shell: Autodial/hangup option to RAS
++ Fixed: index.html were not created sometimes
++ Shell: Fixed: Random crashes with the interface
++ Shell: Fixed: Filters profile not saved
++ Fixed: Various (and numerous) fixes
+
+1.23
++ Shell: Interface improved
++ Shell: Multiple setups
++ Shell: Redefine options
++ Shell: Continue interrupted mirror improved
+
+1.22
++ Fixed: Parsing up/down did not work well
++ Fixed: Several files not catched, bugs fixes
++ Fixed: Problems with classes (1.21)
++ New: Transfer rate can be limited (-A option)
++ Shell: Smooth refresh
++ New: ftp basic protocol a little bit improved
+
+1.21
++ Fixed: Several java classes were not parsed
++ Fixed: Some folders without ending / ignored
++ Fixed: Crashes due to content-type too long
+
+1.20
++ Shell: documentation!
++ Fixed: Some problems with 'host cancel' system after timeouts (crashes)
++ New: Get only end of files if possible (file partially get)
++ New: New cache system (only HTML stored)
++ New: User-defined structure possible
++ New: Also available: french interface
++ Fixed: Random crashes (div by 0/illegal instruction) with null size files
++ New: Limited ftp protocol (files only), e.g. +ftp://* now works
++ Fixed: Some connect problems with several servers or proxies
++ New: New option, save html error report by default
++ Shell: Browse and see log files at the end of a mirror
++ New: Proxy authentication (ex: guest:star@myproxy.com:8080)
++ Shell: Interface improved (especially during mirror)
++ Fixed: Ambiguous files are renamed (asp,cgi->html/gif..)
++ Shell: New test link mode option
++ New: Site authentication (ex: guest:star@www.myweb.com/index.html)
++ Fixed: Minor bugs fixed
++ Shell: See log files during a mirror
++ Fixed: Some problems using CGI (different names now)
++ Fixed: Go down/up/both options and filters
++ Fixed: "Store html first" did not work
++ New: -F option ("Browser ID") disguise HTTrack into a browser
++ New: New filter system
++ Shell: New "Save as default" options
++ Fixed: "Build options" did NOT work properly! (files overwritten or missing)
++ Fixed: User agent ID fixed
++ Shell: Skip options
++ Shell: Better interface control during mirrors
++ Shell: InstallShield and Help files
++ Fixed: Some external links were not filtered sometimes
++ Fixed: Mirror crash at the end
+
+1.16b
++ Shell: Really *stupid* bug fixed causing WinHTTrack to be slooow
++ Fixed: Crash if the first page has no title fixed
++ Fixed: Bogus options like "Just scan" saved empty files
++ Fixed: Forbid all links (*) with manual accept did not work
++ Shell: Filters interface improved
+1.16:
++ New : Java Classes and subclasses are now retrieved!
++ New: Better JavaScripts parsing
++ New: Option: Abandon slowest hosts if timeout/transfer too slow
++ Shell: Interface improved
+
+1.15b
++ Fixed: Some bugs fixed
+1.15:
++ Shell: Interface improved
++ New: Robot improved (some files through javascript are now detected!)
++ New: Improved wild cards (for example, +www.*.com/*.zip)
++ New: 'config' file to configurate proxy, path.. only once
+
+1.11
++ New: Wait for specific time (begin transfer at specific hour)
++ New: Time limit option (stops transfer after x seconds)
++ Shell: Interface improved for an easy use
+
+1.10e
++ Fixed: Maps were not correctly managed (stupid bug)
+1.10d:
++ Fixed: Bogus index.html fixed
+1.10c
++ Shell: "Time out" field needed "transfer rate" field
+1.10b
++ Fixed: Better memory management
+1.10
++ New: "Transfer rate out" option added (abandon slowests sites)
++ New: "Deaf" hosts do not freeze HTTrack any more
++ Fixed: Again problems with code/codebase tags
++ New: Broken links detection improved
+
+1.04
++ Fixed:Some links were not correctly read (pages with "codebase" tags)
++ Shell: Interface improved
+
+1.03 (No changes for the command-line robot)
++ Shell: Big bug fixed! (VERY slow transfer rates..)
+
+1.02
++ Fixed: Some java files were not correctly transfered
++ New: Speed has been improved
++ Fixed: Log file more accurate
++ Shell: Interface has been improved
+
+1.01
++ Fixed: Structure check error in some cases
+
+1.00 -- The 1.00, Yeah!
++ New: base and codebase are now scanned
+
+0.998 beta-2
++ Fixed: Multiple name bug (files having the same name in the same directory) with -O option fixed
+
+0.997 beta-2
++ Fixed: Filenames with '%' were not correctly named
++ Fixed: Bug detected in 0.996: several files are not written on disk!!
+
+0.996 beta-2
++ New: -O option (path for mirror and log)
++ New: Unmodified file time/date are not changed during an update
+
+0.99 beta-2
++ New: User-agent field
++ New: Shortcuts (--spider etc.)
++ New: Links not retrieved are now rebuilt absolutly
++ New: The 'g' option (juste get files in current directory) has been added
++ New: Primary links analyste has been improved
++ Fixed: "304" bug fixed
+
+0.25 beta-2
++ Fixed: Freeze during several mirrors fixed!
++ New: More 'N' options (filenames type)
+
+0.24 beta-2
++ Fixed: Restart/Update with cache did not work (really not..)
++ Fixed: Wild cards now work properly (e.g. +www.abc.com* do works)
++ New: The 'n' option (get non-html files near a link) has been added!
+
+0.23 beta-2
++ Fixed: The 'M' option (site size) did not work
++ Fixed: Files larger than 65Kb were not correctly written
+
+older beta
++ Many, many bugs fixed
+
diff --git a/html/Makefile.in b/html/Makefile.in
index d586b13..cec19c8 100644
--- a/html/Makefile.in
+++ b/html/Makefile.in
@@ -59,6 +59,7 @@ DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -83,6 +84,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -92,6 +94,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
diff --git a/html/faq.html b/html/faq.html
index 3b4a051..19e5b3a 100644
--- a/html/faq.html
+++ b/html/faq.html
@@ -125,19 +125,21 @@ clear language!
<br>
<h3>General questions:<br></h3>
-<li><a href="#QG0">Is there any 'spyware' or 'adware' in this program? Can you prove that there isn't any?</a><br></li>
-
-<li><a href="#QG0c">This software is 'free', but I bought it from an authorized reseller. What's going on?</a><br></li>
+<li><a href="#QG0">Is there any 'spyware' or 'adware' in this program? Can you prove that there isn't any?</a><br></li>
+
+<li><a href="#QG0c">This software is 'free', but I bought it from an authorized reseller. What's going on?</a><br></li>
<li><a href="#QG0b">Is there any risks of viruses with this software?</a><br></li>
-<li><a href="#QG1">The install is not working on NT without administrator rights!</a><br></li>
+<li><a href="#QG1">The install is not working on Windows without administrator rights!</a><br></li>
<li><a href="#QG2">Where can I find French/other languages documentation?</a><br></li>
+<li><a href="#QG3b">Is HTTrack working on Windows Vista or Windows Seven?</a><br></li>
+
<li><a href="#QG3">Is HTTrack working on NT/2000?</a><br></li>
-<li><a href="#QG4">What's the difference between HTTrack and WinHTTrack?</a><br></li>
+<li><a href="#QG4">What's the difference between HTTrack, WinHTTrack and WebHTTrack?</a><br></li>
<li><a href="#QG5">Is HTTrack Mac compatible?</a><br></li>
@@ -265,8 +267,8 @@ clear language!
<li><a href="#QM10">What's this hts-cache directory? Can I remove it?</a><br></li>
-<li><a href="#QM10b">What is the meaning of the <tt>Links scanned: 12/34 (+5)</tt> line in WinHTTrack/WebHTTrack?</a><br></li>
-
+<li><a href="#QM10b">What is the meaning of the <tt>Links scanned: 12/34 (+5)</tt> line in WinHTTrack/WebHTTrack?</a><br></li>
+
<li><a href="#QM11">Can I start a mirror from my bookmarks?</a><br></li>
<li><a href="#QM11c">Can I convert a local website (file:// links) to a standard website?</a><br></li>
@@ -350,16 +352,16 @@ More detailed information can be found <a href="filters.html">here</a>!<br>
<a NAME="QG0">Q: <strong>Is there any 'spyware' or 'adware' in this program? Can you prove that there isn't any?</strong></a><br>
A: <em>No ads (banners), and absolutely no 'spy' features inside the program.<br>
The best proof is the software status: all sources are released, and everybody can check them. Open source is the best protection against privacy problems - HTTrack is an open source project, free of charge and free of any spy 'features'.</em>
-
-<br><br><a NAME="QG0c">Q: <strong>This software is 'free', but I bought it from an authorized reseller . What's going on?</strong></a><br>
-A: <em>
-HTTrack is free (free as in 'freedom') as it is covered by the <a href="http://www.gnu.org/licenses/gpl.txt" target="_new">GNU General Public License (GPL)</a>.
-You can freely download it, without paying any fees, copy it to your friends, and modify it if you respect the license.
-There are NO official/authorized resellers, because HTTrack is <b>NOT</b> a commercial product.
-But you can be charged for duplication fees, or any other services (example: software CDroms or shareware collections, or fees for maintenance),
-but you should have been informed that the software was free software/GPL, and you <b><u>MUST</u></b> have received a copy of the GNU General Public License.
-Otherwise this is dishonnest and unfair.
-</em>
+
+<br><br><a NAME="QG0c">Q: <strong>This software is 'free', but I bought it from an authorized reseller . What's going on?</strong></a><br>
+A: <em>
+HTTrack is free (free as in 'freedom') as it is covered by the <a href="http://www.gnu.org/licenses/gpl.txt" target="_new">GNU General Public License (GPL)</a>.
+You can freely download it, without paying any fees, copy it to your friends, and modify it if you respect the license.
+There are NO official/authorized resellers, because HTTrack is <b>NOT</b> a commercial product.
+But you can be charged for duplication fees, or any other services (example: software CDroms or shareware collections, or fees for maintenance),
+but you should have been informed that the software was free software/GPL, and you <b><u>MUST</u></b> have received a copy of the GNU General Public License.
+Otherwise this is dishonnest and unfair.
+</em>
<br><br><a NAME="QG0b">Q: <strong>Are there any risks of viruses with this software?</strong></a><br>
A: <em>For the software itself:
@@ -367,28 +369,23 @@ All official releases (at httrack.com) are checked against all known viruses, an
For files you are downloading on the WWW using HTTrack: You may encounter websites which were corrupted by viruses, and downloading data on these websites might be dangerous (as dangerous as if using a regular Browser). Always ensure that websites you are crawling are safe.
(Note: remember that using an antivirus software is a good idea once you are connected to the Internet)</em>
-<br><br><a NAME="QG1">Q: <strong>The install is not working on NT without administrator rights!</strong></a><br>
+<br><br><a NAME="QG1">Q: <strong>The install is not working on Windows without administrator rights!</strong></a><br>
A: <em>That's right. You can, however, install WinHTTrack on your own machine, and then copy your <tt>WinHTTrack</tt> folder from your <tt>Program Files</tt> folder to another machine, in a temporary directory (e.g. <tt>C:\temp\</tt>)</em>
<br><br><a NAME="QG2">Q: <strong>Where can I find French/other languages documentation?</strong></a><br>
A: <em>Windows interface is available on several languages, but not yet the documentation!</em>
+<br><br><a NAME="QG3b">Q: <strong>Is HTTrack working on Windows Vista or Windows Seven?</strong></a><br>
+A: <em>Yes, it does</em>
+
<br><br><a NAME="QG3">Q: <strong>Is HTTrack working on NT/2000?</strong></a><br>
A: <em>Yes, it does</em>
-<br><br><a NAME="QG4">Q: <strong>What's the difference between HTTrack and WinHTTrack?</strong></a><br>
-A: <em>WinHTTrack is the Windows release of HTTrack (with a graphic shell)</em>
+<br><br><a NAME="QG4">Q: <strong>What's the difference between HTTrack, WinHTTrack and WebHTTrack?</strong></a><br>
+A: <em>WinHTTrack is the Windows GUI release of HTTrack (with a native graphic shell) and WebHTTrack is the Linux/Posix release of HTTrack (with an html graphic shell)</em>
<br><br><a NAME="QG5">Q: <strong>Is HTTrack Mac compatible?</strong></a><br>
-A: <em>Yes, using the original sources:
-
-<pre>
-tar xvfz httrack-*.tar.gz
-cd httrack-*
-./configure --prefix=/usr/local && make && make install
-/usr/local/bin/httrack
-</pre>
-But there are no official binaries, because of a lack of time</em>
+A: <em>Yes, using the original sources, or with MacPorts.
<br><br><a NAME="QG6">Q: <strong>Can HTTrack be compiled on all Un*x?</strong></a><br>
A: <em>It should. The <tt>Makefile</tt> may be modified in some cases, however</em>
@@ -396,16 +393,16 @@ A: <em>It should. The <tt>Makefile</tt> may be modified in some cases, however</
<br><br><a NAME="QG7">Q: <strong>I use HTTrack for professional purpose. What about restrictions/license fee?</strong></a><br>
A: <em>HTTrack is covered by the GNU General Public License (GPL). There is no restrictions using HTTrack for professional purpose,
except if you develop a software which uses HTTrack components (parts of the source, or any other component).
-See the <tt>license.txt</tt> file for more information</em>
+See the <tt>license.txt</tt> file for more information</em>. See also the next question regarding copyright issues when reditributing downloaded material.
<br><br><a NAME="QG7b">Q: <strong>Is there any license royalties for distributing a mirror made with HTTrack?</strong></a><br>
-A: <em>No.</em>
+A: <em>On the HTTrack side, no. However, sharing, publishing or reusing copyrighted material downloaded from a site requires the authorization of the copyright holders, and possibly paying royalty fees. Always ask the authorization before creating a mirror of a site, even if the site appears to be royalty-free and/or without copyright notice.</em>
<br><br><a NAME="QG8">Q: <strong>Is a DLL/library version available?</strong></a><br>
A: <em>Yes. The default distribution includes a DLL (Windows) or a .so (Un*X), used by the program</em>
-<br><br><a NAME="QG9">Q: <strong>Is there a X11/KDE shell available for Linux and Un*x?</strong></a><br>
-A: <em>Yes. See the download/contribution section at <a href="http://www.httrack.com">www.httrack.com!</a></em>
+<br><br><a NAME="QG9">Q: <strong>Is there a GUI version available for Linux and Un*x?</strong></a><br>
+A: <em>Yes. It is called WebHTTrack. See the download section at <a href="http://www.httrack.com">www.httrack.com!</a></em>
<br><br>
<u><strong>Troubleshooting:<br>
@@ -464,10 +461,10 @@ A: <em>Yes, but .ra/.rm associated file should be captured together - except if
<br><br><a NAME="QT6">Q: <strong>Using user:password@address is not working!</a></strong></a></br>
A: <em>Again, first check the <tt>hts-log.txt</tt> and <tt>hts-err.txt</tt> error log files - this can give you precious information<br>
The site may have a different authentication scheme - form based authentication, for example.
-In this case, use the URL capture features of HTTrack, it might work.
-<br>Note: If your username and/or password contains a '<tt>@</tt>' character, you may have to replace all '<tt>@</tt>'
-occurences by '<tt>%40</tt>' so that it can work, such as in <tt>user%40domain.com:foobar@www.foo.com/auth/.
-You may have to do the same for all "special" characters like spaces (%20), quotes (%22)..</tt>
+In this case, use the URL capture features of HTTrack, it might work.
+<br>Note: If your username and/or password contains a '<tt>@</tt>' character, you may have to replace all '<tt>@</tt>'
+occurences by '<tt>%40</tt>' so that it can work, such as in <tt>user%40domain.com:foobar@www.foo.com/auth/.
+You may have to do the same for all "special" characters like spaces (%20), quotes (%22)..</tt>
</em>
<br><br>
@@ -844,10 +841,10 @@ A: <em>Not yet!</em>
<br><br><a NAME="QM10">Q: <strong>What's this hts-cache directory? Can I remove it?</strong></a><br>
A: <em>NO if you want to update the site, because this directory is used by HTTrack for this purpose.
If you remove it, options and URLs will not be available for updating the site</em>
-
-<br><br><a NAME="QM10b">Q: <strong>What is the meaning of the <tt>Links scanned: 12/34 (+5)</tt> line in WinHTTrack/WebHTTrack?</strong></a><br>
-A: <em>12 is the number of links scanned and stored, 34 the total number of links detected to be parsed, and 5 the number of files downloaded in background.
-In this example, 17 links were downloaded out of a (temporary) total of 34 links.</em>
+
+<br><br><a NAME="QM10b">Q: <strong>What is the meaning of the <tt>Links scanned: 12/34 (+5)</tt> line in WinHTTrack/WebHTTrack?</strong></a><br>
+A: <em>12 is the number of links scanned and stored, 34 the total number of links detected to be parsed, and 5 the number of files downloaded in background.
+In this example, 17 links were downloaded out of a (temporary) total of 34 links.</em>
<br><br><a NAME="QM11">Q: <strong>Can I start a mirror from my bookmarks?</strong></a><br>
A: <em>Yes. Drag&Drop your bookmark.html file to the WinHTTrack window (or use file://filename for command-line release) and select
diff --git a/html/httrack.man.html b/html/httrack.man.html
index 9d6c576..6427bef 100644
--- a/html/httrack.man.html
+++ b/html/httrack.man.html
@@ -1,5 +1,5 @@
<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Mon Jul 28 23:17:44 2008 -->
+<!-- CreationDate: Tue Dec 21 11:30:04 2010 -->
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
@@ -45,54 +45,101 @@ local directory</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p><b>httrack [ url ]... [ -filter ]... [ +filter ]... [</b>
-] [ <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> ] [
-<b>-HN, --host-control[=N]</b> ] [ <b>-%P,
---extended-parsing[=N]</b> ] [ <b>-n, --near</b> ] [ <b>-t,
---test</b> ] [ <b>-%L, --list</b> ] [ <b>-%S, --urllist</b>
-] [ <b>-NN, --structure[=N]</b> ] [ <b>-%D,
---cached-delayed-type-check</b> ] [ <b>-%M, --mime-html</b>
-] [ <b>-LN, --long-names[=N]</b> ] [ <b>-KN,
---keep-links[=N]</b> ] [ <b>-x, --replace-external</b> ] [
-<b>-%x, --disable-passwords</b> ] [ <b>-%q,
---include-query-string</b> ] [ <b>-o, --generate-errors</b>
-] [ <b>-X, --purge-old[=N]</b> ] [ <b>-%p, --preserve</b> ]
-[ <b>-bN, --cookies[=N]</b> ] [ <b>-u, --check-type[=N]</b>
-] [ <b>-j, --parse-java[=N]</b> ] [ <b>-sN, --robots[=N]</b>
-] [ <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>-%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>-%!,
---disable-security-limits</b> ] [ <b>-V, --userdef-cmd</b> ]
-[ <b>-%U, --user</b> ] [ <b>-%W, --callback</b> ] [ <b>-K,
---keep-links[=N]</b> ] [</p>
+<p><b>httrack [ url ]... [ &minus;filter ]... [ +filter ]...
+[ &minus;O, &minus;&minus;path</b> ] [ <b>&minus;%O,
+&minus;&minus;chroot</b> ] [ <b>&minus;w,
+&minus;&minus;mirror</b> ] [ <b>&minus;W,
+&minus;&minus;mirror&minus;wizard</b> ] [ <b>&minus;g,
+&minus;&minus;get&minus;files</b> ] [ <b>&minus;i,
+&minus;&minus;continue</b> ] [ <b>&minus;Y,
+&minus;&minus;mirrorlinks</b> ] [ <b>&minus;P,
+&minus;&minus;proxy</b> ] [ <b>&minus;%f,
+&minus;&minus;httpproxy&minus;ftp[=N]</b> ] [ <b>&minus;%b,
+&minus;&minus;bind</b> ] [ <b>&minus;rN,
+&minus;&minus;depth[=N]</b> ] [ <b>&minus;%eN,
+&minus;&minus;ext&minus;depth[=N]</b> ] [ <b>&minus;mN,
+&minus;&minus;max&minus;files[=N]</b> ] [ <b>&minus;MN,
+&minus;&minus;max&minus;size[=N]</b> ] [ <b>&minus;EN,
+&minus;&minus;max&minus;time[=N]</b> ] [ <b>&minus;AN,
+&minus;&minus;max&minus;rate[=N]</b> ] [ <b>&minus;%cN,
+&minus;&minus;connection&minus;per&minus;second[=N]</b> ] [
+<b>&minus;GN, &minus;&minus;max&minus;pause[=N]</b> ] [
+<b>&minus;%mN,
+&minus;&minus;max&minus;mms&minus;time[=N]</b> ] [
+<b>&minus;cN, &minus;&minus;sockets[=N]</b> ] [
+<b>&minus;TN, &minus;&minus;timeout</b> ] [ <b>&minus;RN,
+&minus;&minus;retries[=N]</b> ] [ <b>&minus;JN,
+&minus;&minus;min&minus;rate[=N]</b> ] [ <b>&minus;HN,
+&minus;&minus;host&minus;control[=N]</b> ] [ <b>&minus;%P,
+&minus;&minus;extended&minus;parsing[=N]</b> ] [
+<b>&minus;n, &minus;&minus;near</b> ] [ <b>&minus;t,
+&minus;&minus;test</b> ] [ <b>&minus;%L,
+&minus;&minus;list</b> ] [ <b>&minus;%S,
+&minus;&minus;urllist</b> ] [ <b>&minus;NN,
+&minus;&minus;structure[=N]</b> ] [ <b>&minus;%D,
+&minus;&minus;cached&minus;delayed&minus;type&minus;check</b>
+] [ <b>&minus;%M, &minus;&minus;mime&minus;html</b> ] [
+<b>&minus;LN, &minus;&minus;long&minus;names[=N]</b> ] [
+<b>&minus;KN, &minus;&minus;keep&minus;links[=N]</b> ] [
+<b>&minus;x, &minus;&minus;replace&minus;external</b> ] [
+<b>&minus;%x, &minus;&minus;disable&minus;passwords</b> ] [
+<b>&minus;%q,
+&minus;&minus;include&minus;query&minus;string</b> ] [
+<b>&minus;o, &minus;&minus;generate&minus;errors</b> ] [
+<b>&minus;X, &minus;&minus;purge&minus;old[=N]</b> ] [
+<b>&minus;%p, &minus;&minus;preserve</b> ] [ <b>&minus;bN,
+&minus;&minus;cookies[=N]</b> ] [ <b>&minus;u,
+&minus;&minus;check&minus;type[=N]</b> ] [ <b>&minus;j,
+&minus;&minus;parse&minus;java[=N]</b> ] [ <b>&minus;sN,
+&minus;&minus;robots[=N]</b> ] [ <b>&minus;%h,
+&minus;&minus;http&minus;10</b> ] [ <b>&minus;%k,
+&minus;&minus;keep&minus;alive</b> ] [ <b>&minus;%B,
+&minus;&minus;tolerant</b> ] [ <b>&minus;%s,
+&minus;&minus;updatehack</b> ] [ <b>&minus;%u,
+&minus;&minus;urlhack</b> ] [ <b>&minus;%A,
+&minus;&minus;assume</b> ] [ <b>&minus;@iN,
+&minus;&minus;protocol[=N]</b> ] [ <b>&minus;%w,
+&minus;&minus;disable&minus;module</b> ] [ <b>&minus;F,
+&minus;&minus;user&minus;agent</b> ] [ <b>&minus;%R,
+&minus;&minus;referer</b> ] [ <b>&minus;%E,
+&minus;&minus;from</b> ] [ <b>&minus;%F,
+&minus;&minus;footer</b> ] [ <b>&minus;%l,
+&minus;&minus;language</b> ] [ <b>&minus;C,
+&minus;&minus;cache[=N]</b> ] [ <b>&minus;k,
+&minus;&minus;store&minus;all&minus;in&minus;cache</b> ] [
+<b>&minus;%n, &minus;&minus;do&minus;not&minus;recatch</b> ]
+[ <b>&minus;%v, &minus;&minus;display</b> ] [ <b>&minus;Q,
+&minus;&minus;do&minus;not&minus;log</b> ] [ <b>&minus;q,
+&minus;&minus;quiet</b> ] [ <b>&minus;z,
+&minus;&minus;extra&minus;log</b> ] [ <b>&minus;Z,
+&minus;&minus;debug&minus;log</b> ] [ <b>&minus;v,
+&minus;&minus;verbose</b> ] [ <b>&minus;f,
+&minus;&minus;file&minus;log</b> ] [ <b>&minus;f2,
+&minus;&minus;single&minus;log</b> ] [ <b>&minus;I,
+&minus;&minus;index</b> ] [ <b>&minus;%i,
+&minus;&minus;build&minus;top&minus;index</b> ] [
+<b>&minus;%I, &minus;&minus;search&minus;index</b> ] [
+<b>&minus;pN, &minus;&minus;priority[=N]</b> ] [
+<b>&minus;S,
+&minus;&minus;stay&minus;on&minus;same&minus;dir</b> ] [
+<b>&minus;D, &minus;&minus;can&minus;go&minus;down</b> ] [
+<b>&minus;U, &minus;&minus;can&minus;go&minus;up</b> ] [
+<b>&minus;B,
+&minus;&minus;can&minus;go&minus;up&minus;and&minus;down</b>
+] [ <b>&minus;a,
+&minus;&minus;stay&minus;on&minus;same&minus;address</b> ] [
+<b>&minus;d,
+&minus;&minus;stay&minus;on&minus;same&minus;domain</b> ] [
+<b>&minus;l,
+&minus;&minus;stay&minus;on&minus;same&minus;tld</b> ] [
+<b>&minus;e, &minus;&minus;go&minus;everywhere</b> ] [
+<b>&minus;%H, &minus;&minus;debug&minus;headers</b> ] [
+<b>&minus;%!,
+&minus;&minus;disable&minus;security&minus;limits</b> ] [
+<b>&minus;V, &minus;&minus;userdef&minus;cmd</b> ] [
+<b>&minus;%U, &minus;&minus;user</b> ] [ <b>&minus;%W,
+&minus;&minus;callback</b> ] [ <b>&minus;K,
+&minus;&minus;keep&minus;links[=N]</b> ] [</p>
</td>
</table>
<a name="DESCRIPTION"></a>
@@ -140,7 +187,7 @@ mirrored site, and resume interrupted downloads.</p>
<td width="10%"></td>
<td width="89%">
<p><b>httrack www.someweb.com/bob/ www.anothertest.com/mike/
-+*.com/*.jpg -mime:application/*</b></p></td>
++*.com/*.jpg &minus;mime:application/*</b></p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -159,7 +206,7 @@ accept any .jpg files on .com sites</p>
<td width="10%"></td>
<td width="89%">
<p><b>httrack www.someweb.com/bob/bobby.html +*
--r6</b></p></td>
+&minus;r6</b></p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -168,7 +215,7 @@ accept any .jpg files on .com sites</p>
<td width="21%"></td>
<td width="77%">
<p>means get all files starting from bobby.html, with 6
-link-depth, and possibility of going everywhere on the
+link&minus;depth, and possibility of going everywhere on the
web</p>
</td>
</table>
@@ -178,7 +225,8 @@ web</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p><b>httrack www.someweb.com/bob/bobby.html --spider -P
+<p><b>httrack www.someweb.com/bob/bobby.html
+&minus;&minus;spider &minus;P
proxy.myhost.com:8080</b></p></td>
</table>
<!-- INDENTATION -->
@@ -197,7 +245,7 @@ proxy</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p><b>httrack --update</b></p></td>
+<p><b>httrack &minus;&minus;update</b></p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -231,7 +279,7 @@ proxy</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p><b>httrack --continue</b></p></td>
+<p><b>httrack &minus;&minus;continue</b></p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -259,25 +307,26 @@ proxy</p>
<td width="11%"></td>
<td width="4%">
-<p>-O</p>
+<p>&minus;O</p>
</td>
<td width="5%"></td>
<td width="77%">
-<p>path for mirror/logfiles+cache (-O path mirror[,path
-cache and logfiles]) (--path &lt;param&gt;)</p>
+<p>path for mirror/logfiles+cache (&minus;O path
+mirror[,path cache and logfiles]) (&minus;&minus;path
+&lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="4%">
-<p>-%O</p>
+<p>&minus;%O</p>
</td>
<td width="5%"></td>
<td width="77%">
-<p>chroot path to, must be r00t (-%O root path) (--chroot
-&lt;param&gt;)</p>
+<p>chroot path to, must be r00t (&minus;%O root path)
+(&minus;&minus;chroot &lt;param&gt;)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -295,60 +344,60 @@ cache and logfiles]) (--path &lt;param&gt;)</p>
<td width="11%"></td>
<td width="5%">
-<p>-w</p>
+<p>&minus;w</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>*mirror web sites (--mirror)</p>
+<p>*mirror web sites (&minus;&minus;mirror)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-W</p>
+<p>&minus;W</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>mirror web sites, semi-automatic (asks questions)
-(--mirror-wizard)</p>
+<p>mirror web sites, semi&minus;automatic (asks questions)
+(&minus;&minus;mirror&minus;wizard)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-g</p>
+<p>&minus;g</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>just get files (saved in the current directory)
-(--get-files)</p>
+(&minus;&minus;get&minus;files)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-i</p>
+<p>&minus;i</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>continue an interrupted mirror using the cache
-(--continue)</p>
+(&minus;&minus;continue)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-Y</p>
+<p>&minus;Y</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>mirror ALL links located in the first level pages
-(mirror links) (--mirrorlinks)</p>
+(mirror links) (&minus;&minus;mirrorlinks)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -366,37 +415,38 @@ cache and logfiles]) (--path &lt;param&gt;)</p>
<td width="11%"></td>
<td width="4%">
-<p>-P</p>
+<p>&minus;P</p>
</td>
<td width="5%"></td>
<td width="77%">
-<p>proxy use (-P proxy:port or -P user:pass@proxy:port)
-(--proxy &lt;param&gt;)</p>
+<p>proxy use (&minus;P proxy:port or &minus;P
+user:pass@proxy:port) (&minus;&minus;proxy
+&lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="4%">
-<p>-%f</p>
+<p>&minus;%f</p>
</td>
<td width="5%"></td>
<td width="77%">
<p>*use proxy for ftp (f0 don t use)
-(--httpproxy-ftp[=N])</p>
+(&minus;&minus;httpproxy&minus;ftp[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="4%">
-<p>-%b</p>
+<p>&minus;%b</p>
</td>
<td width="5%"></td>
<td width="77%">
-<p>use this local hostname to make/send requests (-%b
-hostname) (--bind &lt;param&gt;)</p>
+<p>use this local hostname to make/send requests (&minus;%b
+hostname) (&minus;&minus;bind &lt;param&gt;)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -414,42 +464,43 @@ hostname) (--bind &lt;param&gt;)</p>
<td width="11%"></td>
<td width="8%">
-<p>-rN</p>
+<p>&minus;rN</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>set the mirror depth to N (* r9999) (--depth[=N])</p>
+<p>set the mirror depth to N (* r9999)
+(&minus;&minus;depth[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%eN</p>
+<p>&minus;%eN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>set the external links depth to N (* %e0)
-(--ext-depth[=N])</p>
+(&minus;&minus;ext&minus;depth[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-mN</p>
+<p>&minus;mN</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>maximum file length for a non-html file
-(--max-files[=N])</p>
+<p>maximum file length for a non&minus;html file
+(&minus;&minus;max&minus;files[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-mN,N2</p>
+<p>&minus;mN,N2</p>
</td>
<td width="1%"></td>
<td width="77%">
@@ -460,73 +511,74 @@ hostname) (--bind &lt;param&gt;)</p>
<td width="11%"></td>
<td width="8%">
-<p>-MN</p>
+<p>&minus;MN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>maximum overall size that can be uploaded/scanned
-(--max-size[=N])</p>
+(&minus;&minus;max&minus;size[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-EN</p>
+<p>&minus;EN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>maximum mirror time in seconds (60=1 minute, 3600=1
-hour) (--max-time[=N])</p>
+hour) (&minus;&minus;max&minus;time[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-AN</p>
+<p>&minus;AN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>maximum transfer rate in bytes/seconds (1000=1KB/s max)
-(--max-rate[=N])</p>
+(&minus;&minus;max&minus;rate[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%cN</p>
+<p>&minus;%cN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>maximum number of connections/seconds (*%c10)
-(--connection-per-second[=N])</p>
+(&minus;&minus;connection&minus;per&minus;second[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-GN</p>
+<p>&minus;GN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>pause transfer if N bytes reached, and wait until lock
-file is deleted (--max-pause[=N])</p>
+file is deleted (&minus;&minus;max&minus;pause[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%mN</p>
+<p>&minus;%mN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>maximum mms stream download time in seconds (60=1
-minute, 3600=1 hour) (--max-mms-time[=N])</p>
+minute, 3600=1 hour)
+(&minus;&minus;max&minus;mms&minus;time[=N])</p>
</td>
</table>
<!-- INDENTATION -->
@@ -544,60 +596,62 @@ minute, 3600=1 hour) (--max-mms-time[=N])</p>
<td width="11%"></td>
<td width="7%">
-<p>-cN</p>
+<p>&minus;cN</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>number of multiple connections (*c8) (--sockets[=N])</p>
+<p>number of multiple connections (*c8)
+(&minus;&minus;sockets[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-TN</p>
+<p>&minus;TN</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>timeout, number of seconds after a non-responding link
-is shutdown (--timeout)</p>
+<p>timeout, number of seconds after a non&minus;responding
+link is shutdown (&minus;&minus;timeout)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-RN</p>
+<p>&minus;RN</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>number of retries, in case of timeout or non-fatal
-errors (*R1) (--retries[=N])</p>
+<p>number of retries, in case of timeout or non&minus;fatal
+errors (*R1) (&minus;&minus;retries[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-JN</p>
+<p>&minus;JN</p>
</td>
<td width="2%"></td>
<td width="77%">
<p>traffic jam control, minimum transfert rate
-(bytes/seconds) tolerated for a link (--min-rate[=N])</p>
+(bytes/seconds) tolerated for a link
+(&minus;&minus;min&minus;rate[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-HN</p>
+<p>&minus;HN</p>
</td>
<td width="2%"></td>
<td width="77%">
<p>host is abandonned if: 0=never, 1=timeout, 2=slow,
-3=timeout or slow (--host-control[=N])</p>
+3=timeout or slow (&minus;&minus;host&minus;control[=N])</p>
</td>
</table>
<!-- INDENTATION -->
@@ -615,61 +669,63 @@ errors (*R1) (--retries[=N])</p>
<td width="11%"></td>
<td width="5%">
-<p>-%P</p>
+<p>&minus;%P</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>*extended parsing, attempt to parse all links, even in
unknown tags or Javascript (%P0 don t use)
-(--extended-parsing[=N])</p>
+(&minus;&minus;extended&minus;parsing[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-n</p>
+<p>&minus;n</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>get non-html files near an html file (ex: an image
-located outside) (--near)</p>
+<p>get non&minus;html files near an html file (ex: an image
+located outside) (&minus;&minus;near)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-t</p>
+<p>&minus;t</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>test all URLs (even forbidden ones) (--test)</p>
+<p>test all URLs (even forbidden ones)
+(&minus;&minus;test)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%L</p>
+<p>&minus;%L</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>&lt;file&gt; add all URL located in this text file (one
-URL per line) (--list &lt;param&gt;)</p>
+URL per line) (&minus;&minus;list &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%S</p>
+<p>&minus;%S</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>&lt;file&gt; add all scan rules located in this text
-file (one scan rule per line) (--urllist &lt;param&gt;)</p>
+file (one scan rule per line) (&minus;&minus;urllist
+&lt;param&gt;)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -687,30 +743,31 @@ file (one scan rule per line) (--urllist &lt;param&gt;)</p>
<td width="11%"></td>
<td width="5%">
-<p>-NN</p>
+<p>&minus;NN</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>structure type (0 *original structure, 1+: see below)
-(--structure[=N])</p>
+(&minus;&minus;structure[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-or</p>
+<p>&minus;or</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>user defined structure (-N &quot;%h%p/%n%q.%t&quot;)</p>
+<p>user defined structure (&minus;N
+&quot;%h%p/%n%q.%t&quot;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%N</p>
+<p>&minus;%N</p>
</td>
<td width="4%"></td>
<td width="77%">
@@ -723,124 +780,127 @@ t use, %N1 use for unknown extensions, * %N2 always use)</p>
<td width="11%"></td>
<td width="5%">
-<p>-%D</p>
+<p>&minus;%D</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>cached delayed type check, don t wait for remote type
during updates, to speedup them (%D0 wait, * %D1 don t wait)
-(--cached-delayed-type-check)</p>
+(&minus;&minus;cached&minus;delayed&minus;type&minus;check)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%M</p>
+<p>&minus;%M</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>generate a RFC MIME-encapsulated full-archive (.mht)
-(--mime-html)</p>
+<p>generate a RFC MIME&minus;encapsulated
+full&minus;archive (.mht)
+(&minus;&minus;mime&minus;html)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-LN</p>
+<p>&minus;LN</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>long names (L1 *long names / L0 8-3 conversion / L2
-ISO9660 compatible) (--long-names[=N])</p>
+<p>long names (L1 *long names / L0 8&minus;3 conversion /
+L2 ISO9660 compatible)
+(&minus;&minus;long&minus;names[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-KN</p>
+<p>&minus;KN</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>keep original links (e.g. http://www.adr/link) (K0
*relative link, K absolute links, K4 original links, K3
-absolute URI links) (--keep-links[=N])</p>
+absolute URI links) (&minus;&minus;keep&minus;links[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-x</p>
+<p>&minus;x</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>replace external html links by error pages
-(--replace-external)</p>
+(&minus;&minus;replace&minus;external)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%x</p>
+<p>&minus;%x</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>do not include any password for external password
-protected websites (%x0 include) (--disable-passwords)</p>
+protected websites (%x0 include)
+(&minus;&minus;disable&minus;passwords)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%q</p>
+<p>&minus;%q</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>*include query string for local files (useless, for
information purpose only) (%q0 don t include)
-(--include-query-string)</p>
+(&minus;&minus;include&minus;query&minus;string)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-o</p>
+<p>&minus;o</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>*generate output html file in case of error (404..) (o0
-don t generate) (--generate-errors)</p>
+don t generate) (&minus;&minus;generate&minus;errors)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-X</p>
+<p>&minus;X</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>*purge old files after update (X0 keep delete)
-(--purge-old[=N])</p>
+(&minus;&minus;purge&minus;old[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%p</p>
+<p>&minus;%p</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>preserve html files as is (identical to -K4 -%F
-&quot;&quot; ) (--preserve)</p>
+<p>preserve html files as is (identical to &minus;K4
+&minus;%F &quot;&quot; ) (&minus;&minus;preserve)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -858,163 +918,166 @@ don t generate) (--generate-errors)</p>
<td width="11%"></td>
<td width="8%">
-<p>-bN</p>
+<p>&minus;bN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>accept cookies in cookies.txt (0=do not accept,*
-1=accept) (--cookies[=N])</p>
+1=accept) (&minus;&minus;cookies[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-u</p>
+<p>&minus;u</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>check document type if unknown (cgi,asp..) (u0 don t
check, * u1 check but /, u2 check always)
-(--check-type[=N])</p>
+(&minus;&minus;check&minus;type[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-j</p>
+<p>&minus;j</p>
</td>
<td width="1%"></td>
<td width="77%">
<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>
+be aggressive) (&minus;&minus;parse&minus;java[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-sN</p>
+<p>&minus;sN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>follow robots.txt and meta robots tags
(0=never,1=sometimes,* 2=always, 3=always (even strict
-rules)) (--robots[=N])</p>
+rules)) (&minus;&minus;robots[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%h</p>
+<p>&minus;%h</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>force HTTP/1.0 requests (reduce update features, only
-for old servers or proxies) (--http-10)</p>
+for old servers or proxies)
+(&minus;&minus;http&minus;10)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%k</p>
+<p>&minus;%k</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>use keep-alive if possible, greately reducing latency
-for small files and test requests (%k0 don t use)
-(--keep-alive)</p>
+<p>use keep&minus;alive if possible, greately reducing
+latency for small files and test requests (%k0 don t use)
+(&minus;&minus;keep&minus;alive)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%B</p>
+<p>&minus;%B</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>tolerant requests (accept bogus responses on some
-servers, but not standard!) (--tolerant)</p>
+servers, but not standard!) (&minus;&minus;tolerant)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%s</p>
+<p>&minus;%s</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>update hacks: various hacks to limit re-transfers when
-updating (identical size, bogus response..)
-(--updatehack)</p>
+<p>update hacks: various hacks to limit re&minus;transfers
+when updating (identical size, bogus response..)
+(&minus;&minus;updatehack)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%u</p>
+<p>&minus;%u</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>url hacks: various hacks to limit duplicate URLs (strip
-//, www.foo.com==foo.com..) (--urlhack)</p>
+//, www.foo.com==foo.com..) (&minus;&minus;urlhack)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%A</p>
+<p>&minus;%A</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>assume that a type (cgi,asp..) is always linked with a
-mime type (-%A php3,cgi=text/html;dat,bin=application/x-zip)
-(--assume &lt;param&gt;)</p>
+mime type (&minus;%A
+php3,cgi=text/html;dat,bin=application/x&minus;zip)
+(&minus;&minus;assume &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-can</p>
+<p>&minus;can</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>also be used to force a specific file type: --assume
-foo.cgi=text/html</p>
+<p>also be used to force a specific file type:
+&minus;&minus;assume foo.cgi=text/html</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-@iN</p>
+<p>&minus;@iN</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>internet protocol (0=both ipv6+ipv4, 4=ipv4 only, 6=ipv6
-only) (--protocol[=N])</p>
+only) (&minus;&minus;protocol[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-%w</p>
+<p>&minus;%w</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>disable a specific external mime module (-%w htsswf -%w
-htsjava) (--disable-module &lt;param&gt;)</p>
+<p>disable a specific external mime module (&minus;%w
+htsswf &minus;%w htsjava)
+(&minus;&minus;disable&minus;module &lt;param&gt;)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -1032,63 +1095,63 @@ htsjava) (--disable-module &lt;param&gt;)</p>
<td width="11%"></td>
<td width="5%">
-<p>-F</p>
+<p>&minus;F</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>user-agent field sent in HTTP headers (-F
-&quot;user-agent name&quot;) (--user-agent
-&lt;param&gt;)</p>
+<p>user&minus;agent field sent in HTTP headers (&minus;F
+&quot;user&minus;agent name&quot;)
+(&minus;&minus;user&minus;agent &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%R</p>
+<p>&minus;%R</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>default referer field sent in HTTP headers (--referer
-&lt;param&gt;)</p>
+<p>default referer field sent in HTTP headers
+(&minus;&minus;referer &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%E</p>
+<p>&minus;%E</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>from email address sent in HTTP headers (--from
-&lt;param&gt;)</p>
+<p>from email address sent in HTTP headers
+(&minus;&minus;from &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%F</p>
+<p>&minus;%F</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>footer string in Html code (-%F &quot;Mirrored [from
-host %s [file %s [at %s]]]&quot; (--footer
+<p>footer string in Html code (&minus;%F &quot;Mirrored
+[from host %s [file %s [at %s]]]&quot; (&minus;&minus;footer
&lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%l</p>
+<p>&minus;%l</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>preffered language (-%l &quot;fr, en, jp, *&quot;
-(--language &lt;param&gt;)</p>
+<p>preffered language (&minus;%l &quot;fr, en, jp, *&quot;
+(&minus;&minus;language &lt;param&gt;)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -1106,162 +1169,166 @@ host %s [file %s [at %s]]]&quot; (--footer
<td width="11%"></td>
<td width="5%">
-<p>-C</p>
+<p>&minus;C</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>create/use a cache for updates and retries (C0 no
cache,C1 cache is prioritary,* C2 test update before)
-(--cache[=N])</p>
+(&minus;&minus;cache[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-k</p>
+<p>&minus;k</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>store all files in cache (not useful if files on disk)
-(--store-all-in-cache)</p>
+(&minus;&minus;store&minus;all&minus;in&minus;cache)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%n</p>
+<p>&minus;%n</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>do not re-download locally erased files
-(--do-not-recatch)</p>
+<p>do not re&minus;download locally erased files
+(&minus;&minus;do&minus;not&minus;recatch)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%v</p>
+<p>&minus;%v</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>display on screen filenames downloaded (in realtime) - *
-%v1 short version - %v2 full animation (--display)</p>
+<p>display on screen filenames downloaded (in realtime)
+&minus; * %v1 short version &minus; %v2 full animation
+(&minus;&minus;display)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-Q</p>
+<p>&minus;Q</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>no log - quiet mode (--do-not-log)</p>
+<p>no log &minus; quiet mode
+(&minus;&minus;do&minus;not&minus;log)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-q</p>
+<p>&minus;q</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>no questions - quiet mode (--quiet)</p>
+<p>no questions &minus; quiet mode
+(&minus;&minus;quiet)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-z</p>
+<p>&minus;z</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>log - extra infos (--extra-log)</p>
+<p>log &minus; extra infos
+(&minus;&minus;extra&minus;log)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-Z</p>
+<p>&minus;Z</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>log - debug (--debug-log)</p>
+<p>log &minus; debug (&minus;&minus;debug&minus;log)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-v</p>
+<p>&minus;v</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>log on screen (--verbose)</p>
+<p>log on screen (&minus;&minus;verbose)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-f</p>
+<p>&minus;f</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>*log in files (--file-log)</p>
+<p>*log in files (&minus;&minus;file&minus;log)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-f2</p>
+<p>&minus;f2</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>one single log file (--single-log)</p>
+<p>one single log file (&minus;&minus;single&minus;log)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-I</p>
+<p>&minus;I</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>*make an index (I0 don t make) (--index)</p>
+<p>*make an index (I0 don t make) (&minus;&minus;index)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%i</p>
+<p>&minus;%i</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>make a top index for a project folder (* %i0 don t make)
-(--build-top-index)</p>
+(&minus;&minus;build&minus;top&minus;index)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%I</p>
+<p>&minus;%I</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>make an searchable index for this mirror (* %I0 don t
-make) (--search-index)</p>
+make) (&minus;&minus;search&minus;index)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -1279,18 +1346,18 @@ make) (--search-index)</p>
<td width="11%"></td>
<td width="5%">
-<p>-pN</p>
+<p>&minus;pN</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>priority mode: (* p3) (--priority[=N])</p>
+<p>priority mode: (* p3) (&minus;&minus;priority[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-p0</p>
+<p>&minus;p0</p>
</td>
<td width="4%"></td>
<td width="77%">
@@ -1301,7 +1368,7 @@ make) (--search-index)</p>
<td width="11%"></td>
<td width="5%">
-<p>-p1</p>
+<p>&minus;p1</p>
</td>
<td width="4%"></td>
<td width="77%">
@@ -1312,7 +1379,7 @@ make) (--search-index)</p>
<td width="11%"></td>
<td width="5%">
-<p>-p2</p>
+<p>&minus;p2</p>
</td>
<td width="4%"></td>
<td width="77%">
@@ -1323,7 +1390,7 @@ make) (--search-index)</p>
<td width="11%"></td>
<td width="5%">
-<p>-*p3</p>
+<p>&minus;*p3</p>
</td>
<td width="4%"></td>
<td width="77%">
@@ -1334,7 +1401,7 @@ make) (--search-index)</p>
<td width="11%"></td>
<td width="5%">
-<p>-p7</p>
+<p>&minus;p7</p>
</td>
<td width="4%"></td>
<td width="77%">
@@ -1345,102 +1412,109 @@ make) (--search-index)</p>
<td width="11%"></td>
<td width="5%">
-<p>-S</p>
+<p>&minus;S</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>stay on the same directory (--stay-on-same-dir)</p>
+<p>stay on the same directory
+(&minus;&minus;stay&minus;on&minus;same&minus;dir)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-D</p>
+<p>&minus;D</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>*can only go down into subdirs (--can-go-down)</p>
+<p>*can only go down into subdirs
+(&minus;&minus;can&minus;go&minus;down)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-U</p>
+<p>&minus;U</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>can only go to upper directories (--can-go-up)</p>
+<p>can only go to upper directories
+(&minus;&minus;can&minus;go&minus;up)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-B</p>
+<p>&minus;B</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>can both go up&amp;down into the directory structure
-(--can-go-up-and-down)</p>
+(&minus;&minus;can&minus;go&minus;up&minus;and&minus;down)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-a</p>
+<p>&minus;a</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>*stay on the same address (--stay-on-same-address)</p>
+<p>*stay on the same address
+(&minus;&minus;stay&minus;on&minus;same&minus;address)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-d</p>
+<p>&minus;d</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>stay on the same principal domain
-(--stay-on-same-domain)</p>
+(&minus;&minus;stay&minus;on&minus;same&minus;domain)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-l</p>
+<p>&minus;l</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>stay on the same TLD (eg: .com) (--stay-on-same-tld)</p>
+<p>stay on the same TLD (eg: .com)
+(&minus;&minus;stay&minus;on&minus;same&minus;tld)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-e</p>
+<p>&minus;e</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>go everywhere on the web (--go-everywhere)</p>
+<p>go everywhere on the web
+(&minus;&minus;go&minus;everywhere)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%H</p>
+<p>&minus;%H</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>debug HTTP headers in logfile (--debug-headers)</p>
+<p>debug HTTP headers in logfile
+(&minus;&minus;debug&minus;headers)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -1458,149 +1532,152 @@ make) (--search-index)</p>
<td width="11%"></td>
<td width="7%">
-<p>-#X</p>
+<p>&minus;#X</p>
</td>
<td width="2%"></td>
<td width="77%">
<p>*use optimized engine (limited memory boundary checks)
-(--fast-engine)</p>
+(&minus;&minus;fast&minus;engine)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#0</p>
+<p>&minus;#0</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>filter test (-#0 *.gif www.bar.com/foo.gif )
-(--debug-testfilters &lt;param&gt;)</p>
+<p>filter test (&minus;#0 *.gif www.bar.com/foo.gif )
+(&minus;&minus;debug&minus;testfilters &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#1</p>
+<p>&minus;#1</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>simplify test (-#1 ./foo/bar/../foobar)</p>
+<p>simplify test (&minus;#1 ./foo/bar/../foobar)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#2</p>
+<p>&minus;#2</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>type test (-#2 /foo/bar.php)</p>
+<p>type test (&minus;#2 /foo/bar.php)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#C</p>
+<p>&minus;#C</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>cache list (-#C *.com/spider*.gif (--debug-cache
-&lt;param&gt;)</p>
+<p>cache list (&minus;#C *.com/spider*.gif
+(&minus;&minus;debug&minus;cache &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#R</p>
+<p>&minus;#R</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>cache repair (damaged cache) (--repair-cache)</p>
+<p>cache repair (damaged cache)
+(&minus;&minus;repair&minus;cache)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#d</p>
+<p>&minus;#d</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>debug parser (--debug-parsing)</p>
+<p>debug parser (&minus;&minus;debug&minus;parsing)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#E</p>
+<p>&minus;#E</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>extract new.zip cache meta-data in meta.zip</p>
+<p>extract new.zip cache meta&minus;data in meta.zip</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#f</p>
+<p>&minus;#f</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>always flush log files (--advanced-flushlogs)</p>
+<p>always flush log files
+(&minus;&minus;advanced&minus;flushlogs)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#FN</p>
+<p>&minus;#FN</p>
</td>
<td width="2%"></td>
<td width="77%">
<p>maximum number of filters
-(--advanced-maxfilters[=N])</p>
+(&minus;&minus;advanced&minus;maxfilters[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#h</p>
+<p>&minus;#h</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>version info (--version)</p>
+<p>version info (&minus;&minus;version)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#K</p>
+<p>&minus;#K</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>scan stdin (debug) (--debug-scanstdin)</p>
+<p>scan stdin (debug)
+(&minus;&minus;debug&minus;scanstdin)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="7%">
-<p>-#L</p>
+<p>&minus;#L</p>
</td>
<td width="2%"></td>
<td width="77%">
-<p>maximum number of links (-#L1000000)
-(--advanced-maxlinks)</p>
+<p>maximum number of links (&minus;#L1000000)
+(&minus;&minus;advanced&minus;maxlinks)</p>
</td>
</table>
<!-- TABS -->
@@ -1610,82 +1687,83 @@ make) (--search-index)</p>
<td width="11%"></td>
<td width="8%">
-<p>-#p</p>
+<p>&minus;#p</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>display ugly progress information
-(--advanced-progressinfo)</p>
+(&minus;&minus;advanced&minus;progressinfo)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-#P</p>
+<p>&minus;#P</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>catch URL (--catch-url)</p>
+<p>catch URL (&minus;&minus;catch&minus;url)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-#R</p>
+<p>&minus;#R</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>old FTP routines (debug) (--repair-cache)</p>
+<p>old FTP routines (debug)
+(&minus;&minus;repair&minus;cache)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-#T</p>
+<p>&minus;#T</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>generate transfer ops. log every minutes
-(--debug-xfrstats)</p>
+(&minus;&minus;debug&minus;xfrstats)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-#u</p>
+<p>&minus;#u</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>wait time (--advanced-wait)</p>
+<p>wait time (&minus;&minus;advanced&minus;wait)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-#Z</p>
+<p>&minus;#Z</p>
</td>
<td width="1%"></td>
<td width="77%">
<p>generate transfer rate statictics every minutes
-(--debug-ratestats)</p>
+(&minus;&minus;debug&minus;ratestats)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="8%">
-<p>-#!</p>
+<p>&minus;#!</p>
</td>
<td width="1%"></td>
<td width="77%">
-<p>execute a shell command (-#! &quot;echo hello&quot;)
-(--exec &lt;param&gt;)</p>
+<p>execute a shell command (&minus;#! &quot;echo
+hello&quot;) (&minus;&minus;exec &lt;param&gt;)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -1704,14 +1782,14 @@ what you are doing)</b></p></td>
<td width="11%"></td>
<td width="4%">
-<p>-%!</p>
+<p>&minus;%!</p>
</td>
<td width="5%"></td>
<td width="77%">
-<p>bypass built-in security limits aimed to avoid bandwith
-abuses (bandwidth, simultaneous connections)
-(--disable-security-limits)</p>
+<p>bypass built&minus;in security limits aimed to avoid
+bandwith abuses (bandwidth, simultaneous connections)
+(&minus;&minus;disable&minus;security&minus;limits)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -1720,7 +1798,7 @@ abuses (bandwidth, simultaneous connections)
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>-IMPORTANT</p></td>
+<p>&minus;IMPORTANT</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -1738,7 +1816,7 @@ abuses (bandwidth, simultaneous connections)
<td width="11%"></td>
<td width="5%">
-<p>-USE</p>
+<p>&minus;USE</p>
</td>
<td width="13%"></td>
<td width="29%">
@@ -1754,7 +1832,7 @@ abuses (bandwidth, simultaneous connections)
<tr valign="top" align="left">
<td width="4%"></td>
<td width="95%">
-<p><b>Command-line specific options:</b></p></td>
+<p><b>Command&minus;line specific options:</b></p></td>
</table>
<!-- TABS -->
<table width="100%" border=0 rules="none" frame="void"
@@ -1763,38 +1841,39 @@ abuses (bandwidth, simultaneous connections)
<td width="11%"></td>
<td width="5%">
-<p>-V</p>
+<p>&minus;V</p>
</td>
<td width="4%"></td>
<td width="77%">
<p>execute system command after each files ($0 is the
-filename: -V &quot;rm &quot;) (--userdef-cmd
-&lt;param&gt;)</p>
+filename: &minus;V &quot;rm &quot;)
+(&minus;&minus;userdef&minus;cmd &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%U</p>
+<p>&minus;%U</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>run the engine with another id when called as root (-%U
-smith) (--user &lt;param&gt;)</p>
+<p>run the engine with another id when called as root
+(&minus;%U smith) (&minus;&minus;user &lt;param&gt;)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-%W</p>
+<p>&minus;%W</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>use an external library function as a wrapper (-%W
-myfoo.so[,myparameters]) (--callback &lt;param&gt;)</p>
+<p>use an external library function as a wrapper (&minus;%W
+myfoo.so[,myparameters]) (&minus;&minus;callback
+&lt;param&gt;)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -1812,17 +1891,17 @@ myfoo.so[,myparameters]) (--callback &lt;param&gt;)</p>
<td width="11%"></td>
<td width="10%">
-<p>-N0</p>
+<p>&minus;N0</p>
</td>
<td width="77%">
-<p>Site-structure (default)</p>
+<p>Site&minus;structure (default)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="10%">
-<p>-N1</p>
+<p>&minus;N1</p>
</td>
<td width="77%">
@@ -1832,7 +1911,7 @@ myfoo.so[,myparameters]) (--callback &lt;param&gt;)</p>
<td width="11%"></td>
<td width="10%">
-<p>-N2</p>
+<p>&minus;N2</p>
</td>
<td width="77%">
@@ -1842,7 +1921,7 @@ myfoo.so[,myparameters]) (--callback &lt;param&gt;)</p>
<td width="11%"></td>
<td width="10%">
-<p>-N3</p>
+<p>&minus;N3</p>
</td>
<td width="77%">
@@ -1852,7 +1931,7 @@ myfoo.so[,myparameters]) (--callback &lt;param&gt;)</p>
<td width="11%"></td>
<td width="10%">
-<p>-N4</p>
+<p>&minus;N4</p>
</td>
<td width="77%">
@@ -1864,7 +1943,7 @@ example)</p>
<td width="11%"></td>
<td width="10%">
-<p>-N5</p>
+<p>&minus;N5</p>
</td>
<td width="77%">
@@ -1874,7 +1953,7 @@ example)</p>
<td width="11%"></td>
<td width="10%">
-<p>-N99</p>
+<p>&minus;N99</p>
</td>
<td width="77%">
@@ -1884,17 +1963,17 @@ example)</p>
<td width="11%"></td>
<td width="10%">
-<p>-N100</p>
+<p>&minus;N100</p>
</td>
<td width="77%">
-<p>Site-structure, without www.domain.xxx/</p>
+<p>Site&minus;structure, without www.domain.xxx/</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="10%">
-<p>-N101</p>
+<p>&minus;N101</p>
</td>
<td width="77%">
@@ -1905,7 +1984,7 @@ by the site s name</p>
<td width="11%"></td>
<td width="10%">
-<p>-N102</p>
+<p>&minus;N102</p>
</td>
<td width="77%">
@@ -1916,7 +1995,7 @@ by the site s name</p>
<td width="11%"></td>
<td width="10%">
-<p>-N103</p>
+<p>&minus;N103</p>
</td>
<td width="77%">
@@ -1927,7 +2006,7 @@ by the site s name</p>
<td width="11%"></td>
<td width="10%">
-<p>-N104</p>
+<p>&minus;N104</p>
</td>
<td width="77%">
@@ -1938,7 +2017,7 @@ by the site s name</p>
<td width="11%"></td>
<td width="10%">
-<p>-N105</p>
+<p>&minus;N105</p>
</td>
<td width="77%">
@@ -1949,7 +2028,7 @@ by the site s name</p>
<td width="11%"></td>
<td width="10%">
-<p>-N199</p>
+<p>&minus;N199</p>
</td>
<td width="77%">
@@ -1960,7 +2039,7 @@ by the site s name</p>
<td width="11%"></td>
<td width="10%">
-<p>-N1001</p>
+<p>&minus;N1001</p>
</td>
<td width="77%">
@@ -1971,7 +2050,7 @@ directory</p>
<td width="11%"></td>
<td width="10%">
-<p>-N1002</p>
+<p>&minus;N1002</p>
</td>
<td width="77%">
@@ -1982,7 +2061,7 @@ directory</p>
<td width="11%"></td>
<td width="10%">
-<p>-N1003</p>
+<p>&minus;N1003</p>
</td>
<td width="77%">
@@ -1993,7 +2072,7 @@ directory (option set for g option)</p>
<td width="11%"></td>
<td width="10%">
-<p>-N1004</p>
+<p>&minus;N1004</p>
</td>
<td width="77%">
@@ -2004,7 +2083,7 @@ directory</p>
<td width="11%"></td>
<td width="10%">
-<p>-N1005</p>
+<p>&minus;N1005</p>
</td>
<td width="77%">
@@ -2015,7 +2094,7 @@ directory</p>
<td width="11%"></td>
<td width="10%">
-<p>-N1099</p>
+<p>&minus;N1099</p>
</td>
<td width="77%">
@@ -2029,7 +2108,7 @@ directory</p>
<tr valign="top" align="left">
<td width="4%"></td>
<td width="95%">
-<p><b>Details: User-defined option N</b></p></td>
+<p><b>Details: User&minus;defined option N</b></p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2055,8 +2134,8 @@ extraction</p>
<tr valign="top" align="left">
<td width="4%"></td>
<td width="95%">
-<p><b>Details: User-defined option N and advanced variable
-extraction</b></p></td>
+<p><b>Details: User&minus;defined option N and advanced
+variable extraction</b></p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2074,7 +2153,7 @@ extraction</b></p></td>
<td width="11%"></td>
<td width="8%">
-<p>-param</p>
+<p>&minus;param</p>
</td>
<td width="13%"></td>
<td width="23%">
@@ -2090,7 +2169,7 @@ extraction</b></p></td>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>-before</p></td>
+<p>&minus;before</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2108,7 +2187,7 @@ extraction</b></p></td>
<td width="11%"></td>
<td width="8%">
-<p>-after</p>
+<p>&minus;after</p>
</td>
<td width="13%"></td>
<td width="66%">
@@ -2124,7 +2203,7 @@ extraction</b></p></td>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>-notfound</p></td>
+<p>&minus;notfound</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2143,7 +2222,7 @@ found</p>
<td width="11%"></td>
<td width="8%">
-<p>-empty</p>
+<p>&minus;empty</p>
</td>
<td width="1%"></td>
<td width="77%">
@@ -2154,7 +2233,7 @@ found</p>
<td width="11%"></td>
<td width="8%">
-<p>-all</p>
+<p>&minus;all</p>
</td>
<td width="1%"></td>
<td width="77%">
@@ -2178,47 +2257,47 @@ be empty</p>
<td width="11%"></td>
<td width="5%">
-<p>-K0</p>
+<p>&minus;K0</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>foo.cgi?q=45 -&gt; foo4B54.html?q=45 (relative URI,
-default)</p>
+<p>foo.cgi?q=45 &minus;&gt; foo4B54.html?q=45 (relative
+URI, default)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-K</p>
+<p>&minus;K</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>-&gt; http://www.foobar.com/folder/foo.cgi?q=45
-(absolute URL) (--keep-links[=N])</p>
+<p>&minus;&gt; http://www.foobar.com/folder/foo.cgi?q=45
+(absolute URL) (&minus;&minus;keep&minus;links[=N])</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-K4</p>
+<p>&minus;K4</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>-&gt; foo.cgi?q=45 (original URL)</p>
+<p>&minus;&gt; foo.cgi?q=45 (original URL)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="5%">
-<p>-K3</p>
+<p>&minus;K3</p>
</td>
<td width="4%"></td>
<td width="77%">
-<p>-&gt; /folder/foo.cgi?q=45 (absolute URI)</p>
+<p>&minus;&gt; /folder/foo.cgi?q=45 (absolute URI)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2235,7 +2314,7 @@ default)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--mirror</p></td>
+<p>&minus;&minus;mirror</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2253,23 +2332,23 @@ default)</p>
<td width="11%"></td>
<td width="10%">
-<p>--get</p>
+<p>&minus;&minus;get</p>
</td>
<td width="77%">
<p>&lt;URLs&gt; get the files indicated, do not seek other
-URLs (-qg)</p>
+URLs (&minus;qg)</p>
</td>
<tr valign="top" align="left">
<td width="11%"></td>
<td width="10%">
-<p>--list</p>
+<p>&minus;&minus;list</p>
</td>
<td width="77%">
<p>&lt;text file&gt; add all URL located in this text file
-(-%L)</p>
+(&minus;%L)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2278,7 +2357,7 @@ URLs (-qg)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--mirrorlinks</p></td>
+<p>&minus;&minus;mirrorlinks</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2286,7 +2365,8 @@ URLs (-qg)</p>
<tr valign="top" align="left">
<td width="21%"></td>
<td width="77%">
-<p>&lt;URLs&gt; mirror all links in 1st level pages (-Y)</p>
+<p>&lt;URLs&gt; mirror all links in 1st level pages
+(&minus;Y)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2295,7 +2375,7 @@ URLs (-qg)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--testlinks</p></td>
+<p>&minus;&minus;testlinks</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2303,7 +2383,7 @@ URLs (-qg)</p>
<tr valign="top" align="left">
<td width="21%"></td>
<td width="77%">
-<p>&lt;URLs&gt; test links in pages (-r1p0C0I0t)</p>
+<p>&lt;URLs&gt; test links in pages (&minus;r1p0C0I0t)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2312,7 +2392,7 @@ URLs (-qg)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--spider</p></td>
+<p>&minus;&minus;spider</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2321,7 +2401,7 @@ URLs (-qg)</p>
<td width="21%"></td>
<td width="77%">
<p>&lt;URLs&gt; spider site(s), to test links: reports
-Errors &amp; Warnings (-p0C0I0t)</p>
+Errors &amp; Warnings (&minus;p0C0I0t)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2330,7 +2410,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--testsite</p></td>
+<p>&minus;&minus;testsite</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2338,7 +2418,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<tr valign="top" align="left">
<td width="21%"></td>
<td width="77%">
-<p>&lt;URLs&gt; identical to --spider</p>
+<p>&lt;URLs&gt; identical to &minus;&minus;spider</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2347,7 +2427,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--skeleton</p></td>
+<p>&minus;&minus;skeleton</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2356,7 +2436,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<td width="21%"></td>
<td width="77%">
<p>&lt;URLs&gt; make a mirror, but gets only html files
-(-p1)</p>
+(&minus;p1)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2365,7 +2445,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--update</p></td>
+<p>&minus;&minus;update</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2373,7 +2453,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<tr valign="top" align="left">
<td width="21%"></td>
<td width="77%">
-<p>update a mirror, without confirmation (-iC2)</p>
+<p>update a mirror, without confirmation (&minus;iC2)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2382,7 +2462,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--continue</p></td>
+<p>&minus;&minus;continue</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2390,7 +2470,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<tr valign="top" align="left">
<td width="21%"></td>
<td width="77%">
-<p>continue a mirror, without confirmation (-iC1)</p>
+<p>continue a mirror, without confirmation (&minus;iC1)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2399,7 +2479,7 @@ Errors &amp; Warnings (-p0C0I0t)</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--catchurl</p></td>
+<p>&minus;&minus;catchurl</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2417,7 +2497,7 @@ URL</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--clean</p></td>
+<p>&minus;&minus;clean</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2434,7 +2514,7 @@ URL</p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>--http10</p></td>
+<p>&minus;&minus;http10</p></td>
</table>
<!-- INDENTATION -->
<table width="100%" border=0 rules="none" frame="void"
@@ -2442,7 +2522,7 @@ URL</p>
<tr valign="top" align="left">
<td width="21%"></td>
<td width="77%">
-<p>force http/1.0 requests (-%h)</p>
+<p>force http/1.0 requests (&minus;%h)</p>
</td>
</table>
<!-- INDENTATION -->
@@ -2507,8 +2587,8 @@ line <i>path ~/websites/#</i></p>
<tr valign="top" align="left">
<td width="10%"></td>
<td width="89%">
-<p>Errors/Warnings are reported to <i>hts-log.txt</i> by
-default, or to stderr if the <i>-v</i> option was
+<p>Errors/Warnings are reported to <i>hts&minus;log.txt</i>
+by default, or to stderr if the <i>-v</i> option was
specified.</p>
</td>
</table>
diff --git a/html/server/addurl.html b/html/server/addurl.html
index 21a0953..41b0f07 100755
--- a/html/server/addurl.html
+++ b/html/server/addurl.html
@@ -78,14 +78,20 @@ h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
<script language="javascript">
<!--
+
+// initialize wparent to false if necessary (Konqueror bug workaround)
+if ((typeof wparent) == "undefined") {
+ wparent=false;
+}
+
function do_load() {
window.status=' ';
}
function do_unload() {
}
function do_add() {
- if (document.wparent)
- pparent = document.wparent;
+ if (wparent)
+ pparent = wparent;
else if (parent && parent.document)
pparent = parent.document;
if (pparent
diff --git a/html/server/div/WebHTTrack-Websites.desktop b/html/server/div/WebHTTrack-Websites.desktop
index 6b27c64..92688ed 100644
--- a/html/server/div/WebHTTrack-Websites.desktop
+++ b/html/server/div/WebHTTrack-Websites.desktop
@@ -1,13 +1,9 @@
[Desktop Entry]
-Encoding=UTF-8
Version=1.0
Type=Application
-Categories=Application;Network
+Categories=Network;
Terminal=false
Name=Browse Mirrored Websites
Comment=Browse Websites Mirrored by WebHTTrack
Exec=webhttrack browse
Icon=/usr/share/httrack/icons/webhttrack.xpm
-Terminal=false
-MultipleArgs=false
-Type=Application
diff --git a/html/server/div/WebHTTrack.desktop b/html/server/div/WebHTTrack.desktop
index 762b31e..b6d75ef 100644
--- a/html/server/div/WebHTTrack.desktop
+++ b/html/server/div/WebHTTrack.desktop
@@ -1,13 +1,9 @@
[Desktop Entry]
-Encoding=UTF-8
Version=1.0
Type=Application
-Categories=Application;Network
+Categories=Network;
Terminal=false
Name=WebHTTrack Website Copier
Comment=Copy websites to your computer
Exec=webhttrack
Icon=/usr/share/httrack/icons/webhttrack.xpm
-Terminal=false
-MultipleArgs=false
-Type=Application
diff --git a/html/server/step3.html b/html/server/step3.html
index a1b035f..f085101 100755
--- a/html/server/step3.html
+++ b/html/server/step3.html
@@ -99,13 +99,16 @@ function info(str) {
}
function doOpenWindow() {
childWn=window.open('addurl.html', 'addurl', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480');
- setTimeout(do_check_child, 500);
+ setTimeout("do_check_child()", 100);
}
function do_check_child() {
- if (childWn && childWn.document.location=="about:blank") {
- setTimeout(do_check_child, 500);
- } else if (childWn) {
- childWn.document.wparent=document;
+ if (childWn && childWn.document) {
+ if ((typeof childWn.wparent) == "undefined") {
+ childWn.wparent=document;
+ setTimeout("do_check_child()", 1000);
+ } else {
+ childWn.wparent=document;
+ }
}
}
// -->
@@ -178,22 +181,6 @@ ${do:end-if}
<input type="hidden" name="sid" value="${sid}">
<input type="hidden" name="redirect" value="">
-<script language="javascript">
-<!--
-function doOpenWindow() {
-childWn=window.open('addurl.html', 'addurl', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480');
-setTimeout(do_check_child, 500);
-}
-function do_check_child() {
-if (childWn && childWn.document.location=="about:blank") {
-setTimeout(do_check_child, 500);
-} else if (childWn) {
-childWn.document.wparent=document;
-}
-}
-// -->
-</script>
-
<table border="0" width="100%">
<tr><td>
${LANG_G31}
diff --git a/lang/Makefile.in b/lang/Makefile.in
index a535ffb..efedb7e 100644
--- a/lang/Makefile.in
+++ b/lang/Makefile.in
@@ -59,6 +59,7 @@ DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -83,6 +84,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -92,6 +94,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
diff --git a/lang/Portugues-Brasil.txt b/lang/Portugues-Brasil.txt
index c5d40de..55b0d8b 100755
--- a/lang/Portugues-Brasil.txt
+++ b/lang/Portugues-Brasil.txt
@@ -5,7 +5,7 @@ Portugues-Brasil
LANGUAGE_ISO
pt
LANGUAGE_AUTHOR
-Paulo Neto (company at layout.com.br) \r\n
+Paulo Neto (layoutbr at lexxa.com.br) \r\n
LANGUAGE_CHARSET
ISO-8859-1
LANGUAGE_WINDOWSID
@@ -175,7 +175,7 @@ Analizando arquivo HTML...
Purging files..
Limpando arquivos...
Loading cache in progress..
-
+Carregando cache...
Parsing HTML file (testing links)..
Analizando arquivo HTML (testando links)...
Pause - Toggle [Mirror]/[Pause download] to resume operation
@@ -186,6 +186,8 @@ scanning
analizando
Waiting for scheduled time..
Aguardando horário programado para iniciar...
+Transferring data..
+Transferindo dados..
Connecting to provider
Conectando ao provedor
[%d seconds] to go before start of operation
@@ -229,7 +231,7 @@ Caminho do arquivo de relatório
Path
Caminho
- Links List Mode -\n\nUse URL box to enter address(es) of page(s) containing links to mirror
-Método da lista de links -\n\nUtilize a caixa URL's para digitar o(s) endereço(s) da(s) página(s) contendo links para recebimento.
+- Método da lista de links -\n\nUtilize a caixa URL's para digitar o(s) endereço(s) da(s) página(s) contendo links para recebimento.
New project / Import?
Novo projeto / Importar?
Choose criterion
@@ -375,7 +377,7 @@ Criar relatórios de erros e informações
Generate DOS 8-3 filenames ONLY
Gerar SOMENTE nomes de arquivos DOS (8+3 caracteres)
Generate ISO9660 filenames ONLY for CDROM medias
-
+Gerar nomes de arquivo ISO9660 SOMENTE para mídias de CDROM
Do not create HTML error pages
Não criar páginas de erro HTML
Select file types to be saved to disk
@@ -385,7 +387,7 @@ Selecionar direção de navegação no site
Select global parsing direction
Selecionar direção geral do site
Setup URL rewriting rules for internal links (downloaded ones) and external links (not downloaded ones)
-
+Configurar regras de substituição de URL para links internos (já recebidos) e links externos (ainda não recebidos)
Max simultaneous connections
Máximo de conexões simultâneas
File timeout
@@ -453,9 +455,9 @@ Tentar evitar alguns erros do servidor usando chamadas não padrão
Use old HTTP/1.0 requests (limits engine power!)
Utilizar chamadas antigas HTTP/1.0 limita a capacidade de captura!
Attempt to limit retransfers through several tricks (file size test..)
-Tentativa de limitar a retransferência através de várias maneiras (teste do tamanho do arquivo..)
+Tentativa de limitar a retransferência através de várias maneiras (teste do tamanho do arquivo...)
Attempt to limit the number of links by skipping similar URLs (www.foo.com==foo.com, http=https ..)
-
+Tentativas para limitar o número de links ignorando URLs similares (www.foo.com==foo.com, http=https ...)
Write external links without login/password
Gravar links externos sem login/senha
Write internal links without query string
@@ -483,7 +485,7 @@ Relatórios
DOS names (8+3)
Nomes DOS (8+3)
ISO9660 names (CDROM)
-
+Nomes ISO9660 (CDROM)
No error pages
Sem página de erros
Primary Scan Rule
@@ -497,7 +499,7 @@ Normalmente estas configurações não devem ser alteradas!
Activate Debugging Mode (winhttrack.log)
Ativar método de debug (winhttrack.log)
Rewrite links: internal / external
-
+Links substituídos: interno / externo
Flow control
Controle de fluxo
Limits
@@ -521,9 +523,9 @@ usar servidor proxy para transferências FTP
TimeOut(s)
Limite de tempo
Persistent connections (Keep-Alive)
-
+Conexões persistentes (Manter Ativo)
Reduce connection time and type lookup time using persistent connections
-
+Reduza o tempo de conexão e o tempo do tipo de pesquisa usando conexões persistentes
Retries
Tentativas
Size limit
@@ -559,7 +561,7 @@ Requisição de tolerância (para servidores)
Update hack (limit re-transfers)
Corte de atualização (limite da retransferência)
URL hacks (join similar URLs)
-
+URL hacks (unir URLs similares)
Force old HTTP/1.0 requests (no 1.1)
Forçar requisição HTTP/1.0 anterior (não 1.1)
Max connections / seconds
@@ -593,7 +595,7 @@ Relatório, Índice, Cache
Proxy
Servidor proxy
MIME Types
-
+Tipos MIME
Do you really want to quit WinHTTrack Website Copier?
Você deseja realmente sair do WinHTTrack Website Copier?
Do not connect to a provider (already connected)
@@ -635,7 +637,7 @@ Desconectar ao finalizar
Disconnect modem on completion
Desconectar o modem ao finalizar
\r\n(Please notify us of any bug or problem)\r\n\r\nDevelopment:\r\nInterface (Windows): Xavier Roche\r\nSpider: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche and other contributors\r\nMANY THANKS for translation tips to:\r\nRobert Lagadec (rlagadec@yahoo.fr)
-\r\n(por favor nos comunique sobre erros ou problemas)\r\n\r\nDesenvolvimento:\r\nInterface (Windows): Xavier Roche\r\nMotor: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche e outros colaboradores\r\nTraduzido para o Português-Brasil por :\r\nPaulo Neto (Layout do Brasil, company@layout.com.br)
+\r\n(por favor nos comunique sobre erros ou problemas)\r\n\r\nDesenvolvimento:\r\nInterface (Windows): Xavier Roche\r\nMotor: Xavier Roche\r\nJavaParserClasses: Yann Philippot\r\n\r\n(C)1998-2003 Xavier Roche e outros colaboradores\r\nTraduzido para o Português-Brasil por :\r\nPaulo Neto (layoutbr@lexxa.com.br)
About WinHTTrack Website Copier
Sobre o WinHTTrack Website Copier
Please visit our Web page
@@ -777,7 +779,7 @@ Selecionar um projeto existente para atualizar
Click here to select path
Clique aqui para selecionar o caminho
Select or create a new category name, to sort your mirrors in categories
-
+Selecionar ou criar uma nova categoria, para classificar seus espelhos nas categorias
HTTrack Project Wizard...
Assistente de projetos HTTrack...
New project name:
@@ -789,7 +791,7 @@ Nome do projeto:
Base path:
Caminho base:
Project category:
-
+Categoria do projeto:
C:\\My Web Sites
C:\\Meus Sites
Type a new project name, \r\nor select existing project to update/resume
@@ -900,31 +902,31 @@ normal\nextended\ndebug
normal\nextendido\ncorrigir
Download web site(s)\nDownload web site(s) + questions\nGet individual files\nDownload all sites in pages (multiple mirror)\nTest links in pages (bookmark test)\n* Continue interrupted download\n* Update existing download
Copiar site(s) da Web\nCopiar site(s) interativos da Web (perguntas)\nReceber arquivos específicos\nCopiar todas as páginas do site (alternação múltipla)\nTestar links nas páginas (testar indicador)\n* Retomar download interrompido\n* Atualizar download existente
-Relative URI / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL
-
+Relative URL / Absolute URL (default)\nAbsolute URL / Absolute URL\nAbsolute URI / Absolute URL\nOriginal URL / Original URL
+URI Relativa / URL Absoluta (padrão)\nURL Absoluta / URL Absoluta\nURI Absoluta / URL Absoluta\nURL Original / URL Original
Open Source offline browser
-
+Abrir origem offline no navegador
Website Copier/Offline Browser. Copy remote websites to your computer. Free.
-
+Copiador de website/Navegador Offline. Copia sites remotos para seu computador. Gratuito.
httrack, winhttrack, webhttrack, offline browser
-
+httrack, winhttrack, webhttrack, navegador offline
URL list (.txt)
-
+Lista de URL (.txt)
Previous
-
+Anterior
Next
-
+Próximo
+URLs
URLs
-
Warning
-
+Atenção
Your browser does not currently support javascript. For better results, please use a javascript-aware browser.
-
+Seu Navegador atualmente não suporta javascript. Para melhores resultados, favor usar um navegador com javascript-aware.
Thank you
-
+Obrigado
You can now close this window
-
+Vocë pode fechar esta janela agora
Server terminated
-
+Servidor finalizado
A fatal error has occured during this mirror
-
+Um erro fatal ocorreu durante este espelho
diff --git a/libtest/Makefile.in b/libtest/Makefile.in
index f807ce2..95683d4 100644
--- a/libtest/Makefile.in
+++ b/libtest/Makefile.in
@@ -59,6 +59,7 @@ DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -83,6 +84,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -92,6 +94,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
diff --git a/libtest/callbacks-example-baselinks.c b/libtest/callbacks-example-baselinks.c
index 63b5175..246c921 100755
--- a/libtest/callbacks-example-baselinks.c
+++ b/libtest/callbacks-example-baselinks.c
@@ -1,118 +1,118 @@
-/*
- HTTrack external callbacks example : enforce a constant base href
- Can be useful to make copies of site's archives using site's URL base href as root reference
- .c file
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback ..
-*/
-
-#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 definitions */
-static int process_file(t_hts_callbackarg *carg, httrackp* opt, char* html, int len, const char* url_address, const char* url_file);
-static int check_detectedlink(t_hts_callbackarg *carg, httrackp* opt, char* link);
-static int check_detectedlink_end(t_hts_callbackarg *carg, httrackp *opt);
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-
-/*
-module entry point
-*/
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
- const char *arg = strchr(argv, ',');
- if (arg != NULL)
- arg++;
-
- /* Check args */
- fprintf(stderr, "Plugged..\n");
- if (arg == NULL || *arg == '\0' || strlen(arg) >= HTS_URLMAXSIZE / 2) {
- fprintf(stderr, "** callback error: arguments expected or bad arguments\n");
- fprintf(stderr, "usage: httrack --wrapper modulename,base\n");
- fprintf(stderr, "example: httrack --wrapper callback,http://www.example.com/\n");
- return 0; /* failed */
- } else {
- char *callbacks_userdef = strdup(arg); /* userdef */
-
- /* Plug callback functions */
- CHAIN_FUNCTION(opt, check_html, process_file, callbacks_userdef);
- CHAIN_FUNCTION(opt, linkdetected, check_detectedlink, callbacks_userdef);
- CHAIN_FUNCTION(opt, end, check_detectedlink_end, callbacks_userdef);
-
- fprintf(stderr, "Using root '%s'\n", callbacks_userdef);
- }
-
- return 1; /* success */
-}
-
-static int process_file(t_hts_callbackarg *carg, httrackp* opt, char* html, int len, const char* url_address, const char* url_file) {
- char* prevBase;
-
- /* Call parent functions if multiple callbacks are chained. */
- 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 */
- }
- }
-
- /* Disable base href, if any */
- if ( ( prevBase = strstr(html, "<BASE HREF=\"") ) != NULL) {
- prevBase[1] = 'X';
- }
-
- return 1; /* success */
-}
-
-static int check_detectedlink(t_hts_callbackarg *carg, httrackp* opt, char* link) {
- const char *base = (char*) CALLBACKARG_USERDEF(carg);
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, linkdetected) != NULL) {
- if (!CALLBACKARG_PREV_FUN(carg, linkdetected)(CALLBACKARG_PREV_CARG(carg), opt, link)) {
- return 0; /* Abort */
- }
- }
-
- /* The incoming (read/write) buffer is at least HTS_URLMAXSIZE bytes long */
- if (strncmp(link, "http://", 7) == 0 || strncmp(link, "https://", 8) == 0) {
- char temp[HTS_URLMAXSIZE * 2];
- strcpy(temp, base);
- strcat(temp, link);
- strcpy(link, temp);
- }
-
- return 1; /* success */
-}
-
-static int check_detectedlink_end(t_hts_callbackarg *carg, httrackp *opt) {
- char *base = (char*) CALLBACKARG_USERDEF(carg);
-
- fprintf(stderr, "Unplugged ..\n");
- if (base != NULL) {
- free(base);
- base = NULL;
- }
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
- return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
- }
-
- return 1; /* success */
-}
+/*
+ HTTrack external callbacks example : enforce a constant base href
+ Can be useful to make copies of site's archives using site's URL base href as root reference
+ .c file
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback ..
+*/
+
+#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 definitions */
+static int process_file(t_hts_callbackarg *carg, httrackp* opt, char* html, int len, const char* url_address, const char* url_file);
+static int check_detectedlink(t_hts_callbackarg *carg, httrackp* opt, char* link);
+static int check_detectedlink_end(t_hts_callbackarg *carg, httrackp *opt);
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+
+/*
+module entry point
+*/
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
+ const char *arg = strchr(argv, ',');
+ if (arg != NULL)
+ arg++;
+
+ /* Check args */
+ fprintf(stderr, "Plugged..\n");
+ if (arg == NULL || *arg == '\0' || strlen(arg) >= HTS_URLMAXSIZE / 2) {
+ fprintf(stderr, "** callback error: arguments expected or bad arguments\n");
+ fprintf(stderr, "usage: httrack --wrapper modulename,base\n");
+ fprintf(stderr, "example: httrack --wrapper callback,http://www.example.com/\n");
+ return 0; /* failed */
+ } else {
+ char *callbacks_userdef = strdup(arg); /* userdef */
+
+ /* Plug callback functions */
+ CHAIN_FUNCTION(opt, check_html, process_file, callbacks_userdef);
+ CHAIN_FUNCTION(opt, linkdetected, check_detectedlink, callbacks_userdef);
+ CHAIN_FUNCTION(opt, end, check_detectedlink_end, callbacks_userdef);
+
+ fprintf(stderr, "Using root '%s'\n", callbacks_userdef);
+ }
+
+ return 1; /* success */
+}
+
+static int process_file(t_hts_callbackarg *carg, httrackp* opt, char* html, int len, const char* url_address, const char* url_file) {
+ char* prevBase;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ 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 */
+ }
+ }
+
+ /* Disable base href, if any */
+ if ( ( prevBase = strstr(html, "<BASE HREF=\"") ) != NULL) {
+ prevBase[1] = 'X';
+ }
+
+ return 1; /* success */
+}
+
+static int check_detectedlink(t_hts_callbackarg *carg, httrackp* opt, char* link) {
+ const char *base = (char*) CALLBACKARG_USERDEF(carg);
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, linkdetected) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, linkdetected)(CALLBACKARG_PREV_CARG(carg), opt, link)) {
+ return 0; /* Abort */
+ }
+ }
+
+ /* The incoming (read/write) buffer is at least HTS_URLMAXSIZE bytes long */
+ if (strncmp(link, "http://", 7) == 0 || strncmp(link, "https://", 8) == 0) {
+ char temp[HTS_URLMAXSIZE * 2];
+ strcpy(temp, base);
+ strcat(temp, link);
+ strcpy(link, temp);
+ }
+
+ return 1; /* success */
+}
+
+static int check_detectedlink_end(t_hts_callbackarg *carg, httrackp *opt) {
+ char *base = (char*) CALLBACKARG_USERDEF(carg);
+
+ fprintf(stderr, "Unplugged ..\n");
+ if (base != NULL) {
+ free(base);
+ base = NULL;
+ }
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
+ return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
+ }
+
+ return 1; /* success */
+}
diff --git a/libtest/callbacks-example-changecontent.c b/libtest/callbacks-example-changecontent.c
index 7e0e0a9..e141789 100755
--- a/libtest/callbacks-example-changecontent.c
+++ b/libtest/callbacks-example-changecontent.c
@@ -1,65 +1,65 @@
-/*
- HTTrack external callbacks example : display all incoming request headers
- Example of <wrappername>_init and <wrappername>_exit call (httrack >> 3.31)
- .c file
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback ..
-*/
-
-#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 definitions */
-static int postprocess(t_hts_callbackarg *carg, httrackp *opt,
- char** html, int* len,
- const char* url_address, const char* url_file);
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-
-/*
-module entry point
-*/
+/*
+ HTTrack external callbacks example : display all incoming request headers
+ Example of <wrappername>_init and <wrappername>_exit call (httrack >> 3.31)
+ .c file
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback ..
+*/
+
+#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 definitions */
+static int postprocess(t_hts_callbackarg *carg, httrackp *opt,
+ char** html, int* len,
+ const char* url_address, const char* url_file);
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+
+/*
+module entry point
+*/
EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
const char *arg = strchr(argv, ',');
if (arg != NULL)
arg++;
-
- /* Plug callback functions */
+
+ /* Plug callback functions */
CHAIN_FUNCTION(opt, postprocess, postprocess, NULL);
- return 1; /* success */
-}
-
-static int postprocess(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file) {
- char *old = *html;
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, postprocess) != NULL) {
- if (CALLBACKARG_PREV_FUN(carg, postprocess)(CALLBACKARG_PREV_CARG(carg), opt, html, len, url_address, url_file)) {
- /* Modified *html */
- old = *html;
- }
- }
-
- /* Process */
- *html = strdup(*html);
- hts_free(old);
-
- return 1;
-}
+ return 1; /* success */
+}
+
+static int postprocess(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file) {
+ char *old = *html;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, postprocess) != NULL) {
+ if (CALLBACKARG_PREV_FUN(carg, postprocess)(CALLBACKARG_PREV_CARG(carg), opt, html, len, url_address, url_file)) {
+ /* Modified *html */
+ old = *html;
+ }
+ }
+
+ /* Process */
+ *html = strdup(*html);
+ hts_free(old);
+
+ return 1;
+}
diff --git a/libtest/callbacks-example-contentfilter.c b/libtest/callbacks-example-contentfilter.c
index 069a99f..489f24c 100755
--- a/libtest/callbacks-example-contentfilter.c
+++ b/libtest/callbacks-example-contentfilter.c
@@ -1,150 +1,150 @@
-/*
- HTTrack external callbacks example : crawling html pages depending on content
- Example of <wrappername>_init and <wrappername>_exit call (httrack >> 3.31)
- .c file
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback,stringtofind,stringtofind.. ..
-*/
-
-#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 definitions */
-static int process(t_hts_callbackarg *carg, httrackp *opt, char* html, int len, const char* address, const char* filename);
-static int end(t_hts_callbackarg *carg, httrackp *opt);
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-
-/* TOLOWER */
-#define TOLOWER_(a) (a >= 'A' && a <= 'Z') ? (a + ('a' - 'A')) : a
-#define TOLOWER(a) ( TOLOWER_( (a) ) )
-
-/*
- This sample just crawls pages that contains certain keywords, and skips the other ones
-*/
-
-typedef struct t_my_userdef {
- char stringfilter[8192];
- char* stringfilters[128];
-} t_my_userdef;
-
-/*
-module entry point
-*/
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
- const char *arg = strchr(argv, ',');
- if (arg != NULL)
- arg++;
-
- /* Check args */
- if (arg == NULL || *arg == '\0') {
- fprintf(stderr, "** callback error: arguments expected or bad arguments\n");
- fprintf(stderr, "usage: httrack --wrapper callback,stringtofind,stringtofind..\n");
- fprintf(stderr, "example: httrack --wrapper callback,apple,orange,lemon\n");
- return 0;
- } else {
- t_my_userdef *userdef = (t_my_userdef*) malloc(sizeof(t_my_userdef)); /* userdef */
- char * const stringfilter = userdef->stringfilter;
- char** const stringfilters = userdef->stringfilters;
- /* */
- char* a = stringfilter;
- int i = 0;
- fprintf(stderr, "** info: wrapper_init(%s) called!\n", arg);
- fprintf(stderr, "** callback example: crawling pages only if specific keywords are found\n");
-
- /* stringfilters = split(arg, ','); */
- strcpy(stringfilter, arg);
- while(a != NULL) {
- stringfilters[i] = a;
- a = strchr(a, ',');
- if (a != NULL) {
- *a = '\0';
- a ++;
- }
- fprintf(stderr, "** callback info: will crawl pages with '%s' in them\n", stringfilters[i]);
- i++;
- }
- stringfilters[i++] = NULL;
-
- /* Plug callback functions */
- CHAIN_FUNCTION(opt, check_html, process, userdef);
- CHAIN_FUNCTION(opt, end, end, userdef);
- }
-
- return 1; /* success */
-}
-
-static int process(t_hts_callbackarg *carg, httrackp *opt, char* html, int len, const char* address, const char* filename) {
- t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
- char * const stringfilter = userdef->stringfilter;
- char** const stringfilters = userdef->stringfilters;
- /* */
- int i = 0;
- int getIt = 0;
- char* pos;
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, check_html) != NULL) {
- if (!CALLBACKARG_PREV_FUN(carg, check_html)(CALLBACKARG_PREV_CARG(carg), opt, html, len, address, filename)) {
- return 0; /* Abort */
- }
- }
-
- /* Process */
- if (strcmp(address, "primary") == 0 && strcmp(filename, "/primary") == 0) /* primary page (list of links) */
- return 1;
- while(stringfilters[i] != NULL && ! getIt) {
- if ( ( pos = strstr(html, stringfilters[i]) ) != NULL) {
- int j;
- getIt = 1;
- fprintf(stderr, "** callback info: found '%s' keyword in '%s%s', crawling this page!\n", stringfilters[i], address, filename);
- fprintf(stderr, "** details:\n(..)");
- for(j = 0; j < 72 && pos[j] ; j++) {
- if (pos[j] > 32)
- fprintf(stderr, "%c", pos[j]);
- else
- fprintf(stderr, "?");
- }
- fprintf(stderr, "(..)\n");
- }
- i++;
- }
- if (getIt) {
- return 1; /* success */
- } else {
- fprintf(stderr, "** callback info: won't parse '%s%s' (no specified keywords found)\n", address, filename);
- return 0; /* this page sucks, don't parse it */
- }
-}
-
-static int end(t_hts_callbackarg *carg, httrackp *opt) {
- t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
- fprintf(stderr, "** info: wrapper_exit() called!\n");
- if (userdef != NULL) {
- free(userdef);
- userdef = NULL;
- }
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
- return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
- }
-
- return 1; /* success */
-}
+/*
+ HTTrack external callbacks example : crawling html pages depending on content
+ Example of <wrappername>_init and <wrappername>_exit call (httrack >> 3.31)
+ .c file
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback,stringtofind,stringtofind.. ..
+*/
+
+#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 definitions */
+static int process(t_hts_callbackarg *carg, httrackp *opt, char* html, int len, const char* address, const char* filename);
+static int end(t_hts_callbackarg *carg, httrackp *opt);
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+
+/* TOLOWER */
+#define TOLOWER_(a) (a >= 'A' && a <= 'Z') ? (a + ('a' - 'A')) : a
+#define TOLOWER(a) ( TOLOWER_( (a) ) )
+
+/*
+ This sample just crawls pages that contains certain keywords, and skips the other ones
+*/
+
+typedef struct t_my_userdef {
+ char stringfilter[8192];
+ char* stringfilters[128];
+} t_my_userdef;
+
+/*
+module entry point
+*/
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
+ const char *arg = strchr(argv, ',');
+ if (arg != NULL)
+ arg++;
+
+ /* Check args */
+ if (arg == NULL || *arg == '\0') {
+ fprintf(stderr, "** callback error: arguments expected or bad arguments\n");
+ fprintf(stderr, "usage: httrack --wrapper callback,stringtofind,stringtofind..\n");
+ fprintf(stderr, "example: httrack --wrapper callback,apple,orange,lemon\n");
+ return 0;
+ } else {
+ t_my_userdef *userdef = (t_my_userdef*) malloc(sizeof(t_my_userdef)); /* userdef */
+ char * const stringfilter = userdef->stringfilter;
+ char** const stringfilters = userdef->stringfilters;
+ /* */
+ char* a = stringfilter;
+ int i = 0;
+ fprintf(stderr, "** info: wrapper_init(%s) called!\n", arg);
+ fprintf(stderr, "** callback example: crawling pages only if specific keywords are found\n");
+
+ /* stringfilters = split(arg, ','); */
+ strcpy(stringfilter, arg);
+ while(a != NULL) {
+ stringfilters[i] = a;
+ a = strchr(a, ',');
+ if (a != NULL) {
+ *a = '\0';
+ a ++;
+ }
+ fprintf(stderr, "** callback info: will crawl pages with '%s' in them\n", stringfilters[i]);
+ i++;
+ }
+ stringfilters[i++] = NULL;
+
+ /* Plug callback functions */
+ CHAIN_FUNCTION(opt, check_html, process, userdef);
+ CHAIN_FUNCTION(opt, end, end, userdef);
+ }
+
+ return 1; /* success */
+}
+
+static int process(t_hts_callbackarg *carg, httrackp *opt, char* html, int len, const char* address, const char* filename) {
+ t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
+ char * const stringfilter = userdef->stringfilter;
+ char** const stringfilters = userdef->stringfilters;
+ /* */
+ int i = 0;
+ int getIt = 0;
+ char* pos;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, check_html) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, check_html)(CALLBACKARG_PREV_CARG(carg), opt, html, len, address, filename)) {
+ return 0; /* Abort */
+ }
+ }
+
+ /* Process */
+ if (strcmp(address, "primary") == 0 && strcmp(filename, "/primary") == 0) /* primary page (list of links) */
+ return 1;
+ while(stringfilters[i] != NULL && ! getIt) {
+ if ( ( pos = strstr(html, stringfilters[i]) ) != NULL) {
+ int j;
+ getIt = 1;
+ fprintf(stderr, "** callback info: found '%s' keyword in '%s%s', crawling this page!\n", stringfilters[i], address, filename);
+ fprintf(stderr, "** details:\n(..)");
+ for(j = 0; j < 72 && pos[j] ; j++) {
+ if (pos[j] > 32)
+ fprintf(stderr, "%c", pos[j]);
+ else
+ fprintf(stderr, "?");
+ }
+ fprintf(stderr, "(..)\n");
+ }
+ i++;
+ }
+ if (getIt) {
+ return 1; /* success */
+ } else {
+ fprintf(stderr, "** callback info: won't parse '%s%s' (no specified keywords found)\n", address, filename);
+ return 0; /* this page sucks, don't parse it */
+ }
+}
+
+static int end(t_hts_callbackarg *carg, httrackp *opt) {
+ t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
+ fprintf(stderr, "** info: wrapper_exit() called!\n");
+ if (userdef != NULL) {
+ free(userdef);
+ userdef = NULL;
+ }
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
+ return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
+ }
+
+ return 1; /* success */
+}
diff --git a/libtest/callbacks-example-displayheader.c b/libtest/callbacks-example-displayheader.c
index a8333b3..ae1efd4 100755
--- a/libtest/callbacks-example-displayheader.c
+++ b/libtest/callbacks-example-displayheader.c
@@ -1,66 +1,66 @@
-/*
- HTTrack external callbacks example : display all incoming request headers
- Example of <wrappername>_init and <wrappername>_exit call (httrack >> 3.31)
- .c file
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback ..
-*/
-
-#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 definitions */
-static int process(t_hts_callbackarg *carg, httrackp *opt,
- char* buff, const char* adr, const char* fil,
- const char* referer_adr, const char* referer_fil,
- htsblk* incoming);
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-
-/*
-module entry point
-*/
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
- const char *arg = strchr(argv, ',');
- if (arg != NULL)
- arg++;
-
- /* Plug callback functions */
- CHAIN_FUNCTION(opt, receivehead, process, NULL);
-
- return 1; /* success */
-}
-
-static int process(t_hts_callbackarg *carg, httrackp *opt,
- char* buff, const char* adr, const char* fil,
- const char* referer_adr, const char* referer_fil,
- htsblk* incoming) {
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, receivehead) != NULL) {
- if (!CALLBACKARG_PREV_FUN(carg, receivehead)(CALLBACKARG_PREV_CARG(carg), opt, buff, adr, fil, referer_adr, referer_fil, incoming)) {
- return 0; /* Abort */
- }
- }
-
- /* Process */
- printf("[ %s%s ]\n%s\n", adr, fil, buff);
-
- return 1; /* success */
-}
+/*
+ HTTrack external callbacks example : display all incoming request headers
+ Example of <wrappername>_init and <wrappername>_exit call (httrack >> 3.31)
+ .c file
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback ..
+*/
+
+#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 definitions */
+static int process(t_hts_callbackarg *carg, httrackp *opt,
+ char* buff, const char* adr, const char* fil,
+ const char* referer_adr, const char* referer_fil,
+ htsblk* incoming);
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+
+/*
+module entry point
+*/
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
+ const char *arg = strchr(argv, ',');
+ if (arg != NULL)
+ arg++;
+
+ /* Plug callback functions */
+ CHAIN_FUNCTION(opt, receivehead, process, NULL);
+
+ return 1; /* success */
+}
+
+static int process(t_hts_callbackarg *carg, httrackp *opt,
+ char* buff, const char* adr, const char* fil,
+ const char* referer_adr, const char* referer_fil,
+ htsblk* incoming) {
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, receivehead) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, receivehead)(CALLBACKARG_PREV_CARG(carg), opt, buff, adr, fil, referer_adr, referer_fil, incoming)) {
+ return 0; /* Abort */
+ }
+ }
+
+ /* Process */
+ printf("[ %s%s ]\n%s\n", adr, fil, buff);
+
+ return 1; /* success */
+}
diff --git a/libtest/callbacks-example-filename.c b/libtest/callbacks-example-filename.c
index a6c7fa1..361ebb0 100755
--- a/libtest/callbacks-example-filename.c
+++ b/libtest/callbacks-example-filename.c
@@ -1,86 +1,86 @@
-/*
- HTTrack external callbacks example : changing the destination filename
- .c file
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback ..
-*/
-
-#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 definitions */
-static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save);
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-
-/* Options settings */
-#include "htsopt.h"
-
-/* TOLOWER */
-#define TOLOWER_(a) (a >= 'A' && a <= 'Z') ? (a + ('a' - 'A')) : a
-#define TOLOWER(a) ( TOLOWER_( (a) ) )
-
-/*
- This sample just changes the destination filenames to ROT-13 equivalent ; that is,
- a -> n
- b -> o
- c -> p
- d -> q
- ..
- n -> a
- o -> b
- ..
-
- <parent> -> <link>
- This sample can be improved, for example, to make a map of a website.
-*/
-
-/*
-module entry point
-*/
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
- const char *arg = strchr(argv, ',');
- if (arg != NULL)
- arg++;
-
- /* Plug callback functions */
- CHAIN_FUNCTION(opt, savename, mysavename, NULL);
-
- return 1; /* success */
-}
-
-static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save) {
- char* a;
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, savename) != NULL) {
- if (!CALLBACKARG_PREV_FUN(carg, savename)(CALLBACKARG_PREV_CARG(carg), opt, adr_complete, fil_complete, referer_adr, referer_fil, save)) {
- return 0; /* Abort */
- }
- }
-
- /* Process */
- for(a = save ; *a != 0 ; a++) {
- char c = TOLOWER(*a);
- if (c >= 'a' && c <= 'z')
- *a = ( ( ( c - 'a' ) + 13 ) % 26 ) + 'a'; // ROT-13
- }
-
- return 1; /* success */
-}
+/*
+ HTTrack external callbacks example : changing the destination filename
+ .c file
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback ..
+*/
+
+#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 definitions */
+static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save);
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+
+/* Options settings */
+#include "htsopt.h"
+
+/* TOLOWER */
+#define TOLOWER_(a) (a >= 'A' && a <= 'Z') ? (a + ('a' - 'A')) : a
+#define TOLOWER(a) ( TOLOWER_( (a) ) )
+
+/*
+ This sample just changes the destination filenames to ROT-13 equivalent ; that is,
+ a -> n
+ b -> o
+ c -> p
+ d -> q
+ ..
+ n -> a
+ o -> b
+ ..
+
+ <parent> -> <link>
+ This sample can be improved, for example, to make a map of a website.
+*/
+
+/*
+module entry point
+*/
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
+ const char *arg = strchr(argv, ',');
+ if (arg != NULL)
+ arg++;
+
+ /* Plug callback functions */
+ CHAIN_FUNCTION(opt, savename, mysavename, NULL);
+
+ return 1; /* success */
+}
+
+static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save) {
+ char* a;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, savename) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, savename)(CALLBACKARG_PREV_CARG(carg), opt, adr_complete, fil_complete, referer_adr, referer_fil, save)) {
+ return 0; /* Abort */
+ }
+ }
+
+ /* Process */
+ for(a = save ; *a != 0 ; a++) {
+ char c = TOLOWER(*a);
+ if (c >= 'a' && c <= 'z')
+ *a = ( ( ( c - 'a' ) + 13 ) % 26 ) + 'a'; // ROT-13
+ }
+
+ return 1; /* success */
+}
diff --git a/libtest/callbacks-example-filename2.c b/libtest/callbacks-example-filename2.c
index a66420e..2683b7b 100755
--- a/libtest/callbacks-example-filename2.c
+++ b/libtest/callbacks-example-filename2.c
@@ -1,130 +1,130 @@
-/*
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback,string1,string2 ..
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Standard httrack module includes */
-#include "httrack-library.h"
-#include "htsopt.h"
-#include "htsdefines.h"
-
-/* Function definitions */
-static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save);
-static int myend(t_hts_callbackarg *carg, httrackp *opt);
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-
-/* TOLOWER */
-#define TOLOWER_(a) (a >= 'A' && a <= 'Z') ? (a + ('a' - 'A')) : a
-#define TOLOWER(a) ( TOLOWER_( (a) ) )
-
-/*
- This sample just replaces all occurences of "string1" into "string2"
- string1 and string2 are passed in the callback string:
- httrack --wrapper save-name=callback:mysavename,string1,string2 ..
-*/
-
-typedef struct t_my_userdef {
- char string1[256];
- char string2[256];
-} t_my_userdef;
-
-/*
-module entry point
-*/
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
- const char *arg = strchr(argv, ',');
- if (arg != NULL)
- arg++;
-
- /* Check args */
- if (arg == NULL || *arg == '\0' || strchr(arg, ',') == NULL) {
- fprintf(stderr, "** callback error: arguments expected or bad arguments\n");
- fprintf(stderr, "usage: httrack --wrapper save-name=callback:mysavename,string1,string2\n");
- fprintf(stderr, "example: httrack --wrapper save-name=callback:mysavename,foo,bar\n");
- return 0; /* failed */
- } else {
- char *pos = strchr(arg, ',');
- t_my_userdef *userdef = (t_my_userdef*) malloc(sizeof(t_my_userdef));
- char * const string1 = userdef->string1;
- char * const string2 = userdef->string2;
-
- /* Split args */
- fprintf(stderr, "** info: wrapper_init(%s) called!\n", arg);
- fprintf(stderr, "** callback example: changing destination filename word by another one\n");
- string1[0] = string1[1] = '\0';
- strncat(string1, arg, pos - arg);
- strcpy(string2, pos + 1);
- fprintf(stderr, "** callback info: will replace %s by %s in filenames!\n", string1, string2);
-
- /* Plug callback functions */
- CHAIN_FUNCTION(opt, savename, mysavename, userdef);
- CHAIN_FUNCTION(opt, end, myend, userdef);
- }
-
- return 1; /* success */
-}
-
-static int myend(t_hts_callbackarg *carg, httrackp *opt) {
- t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
-
- fprintf(stderr, "** info: wrapper_exit() called!\n");
- if (userdef != NULL) {
- free(userdef);
- userdef = NULL;
- }
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
- return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
- }
-
- return 1; /* success */
-}
-
-static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save) {
- t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
- char * const string1 = userdef->string1;
- char * const string2 = userdef->string2;
- /* */
- char *buff, *a, *b;
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, savename) != NULL) {
- if (!CALLBACKARG_PREV_FUN(carg, savename)(CALLBACKARG_PREV_CARG(carg), opt, adr_complete, fil_complete, referer_adr, referer_fil, save)) {
- return 0; /* Abort */
- }
- }
-
- /* Process */
- buff = strdup(save);
- a = buff;
- b = save;
- *b = '\0'; /* the "save" variable points to a buffer with "sufficient" space */
- while(*a) {
- if (strncmp(a, string1, (int)strlen(string1)) == 0) {
- strcat(b, string2);
- b += strlen(b);
- a += strlen(string1);
- } else {
- *b++ = *a++;
- *b = '\0';
- }
- }
- free(buff);
-
- return 1; /* success */
-}
+/*
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback,string1,string2 ..
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Standard httrack module includes */
+#include "httrack-library.h"
+#include "htsopt.h"
+#include "htsdefines.h"
+
+/* Function definitions */
+static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save);
+static int myend(t_hts_callbackarg *carg, httrackp *opt);
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+
+/* TOLOWER */
+#define TOLOWER_(a) (a >= 'A' && a <= 'Z') ? (a + ('a' - 'A')) : a
+#define TOLOWER(a) ( TOLOWER_( (a) ) )
+
+/*
+ This sample just replaces all occurences of "string1" into "string2"
+ string1 and string2 are passed in the callback string:
+ httrack --wrapper save-name=callback:mysavename,string1,string2 ..
+*/
+
+typedef struct t_my_userdef {
+ char string1[256];
+ char string2[256];
+} t_my_userdef;
+
+/*
+module entry point
+*/
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
+ const char *arg = strchr(argv, ',');
+ if (arg != NULL)
+ arg++;
+
+ /* Check args */
+ if (arg == NULL || *arg == '\0' || strchr(arg, ',') == NULL) {
+ fprintf(stderr, "** callback error: arguments expected or bad arguments\n");
+ fprintf(stderr, "usage: httrack --wrapper save-name=callback:mysavename,string1,string2\n");
+ fprintf(stderr, "example: httrack --wrapper save-name=callback:mysavename,foo,bar\n");
+ return 0; /* failed */
+ } else {
+ char *pos = strchr(arg, ',');
+ t_my_userdef *userdef = (t_my_userdef*) malloc(sizeof(t_my_userdef));
+ char * const string1 = userdef->string1;
+ char * const string2 = userdef->string2;
+
+ /* Split args */
+ fprintf(stderr, "** info: wrapper_init(%s) called!\n", arg);
+ fprintf(stderr, "** callback example: changing destination filename word by another one\n");
+ string1[0] = string1[1] = '\0';
+ strncat(string1, arg, pos - arg);
+ strcpy(string2, pos + 1);
+ fprintf(stderr, "** callback info: will replace %s by %s in filenames!\n", string1, string2);
+
+ /* Plug callback functions */
+ CHAIN_FUNCTION(opt, savename, mysavename, userdef);
+ CHAIN_FUNCTION(opt, end, myend, userdef);
+ }
+
+ return 1; /* success */
+}
+
+static int myend(t_hts_callbackarg *carg, httrackp *opt) {
+ t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
+
+ fprintf(stderr, "** info: wrapper_exit() called!\n");
+ if (userdef != NULL) {
+ free(userdef);
+ userdef = NULL;
+ }
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
+ return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
+ }
+
+ return 1; /* success */
+}
+
+static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save) {
+ t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
+ char * const string1 = userdef->string1;
+ char * const string2 = userdef->string2;
+ /* */
+ char *buff, *a, *b;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, savename) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, savename)(CALLBACKARG_PREV_CARG(carg), opt, adr_complete, fil_complete, referer_adr, referer_fil, save)) {
+ return 0; /* Abort */
+ }
+ }
+
+ /* Process */
+ buff = strdup(save);
+ a = buff;
+ b = save;
+ *b = '\0'; /* the "save" variable points to a buffer with "sufficient" space */
+ while(*a) {
+ if (strncmp(a, string1, (int)strlen(string1)) == 0) {
+ strcat(b, string2);
+ b += strlen(b);
+ a += strlen(string1);
+ } else {
+ *b++ = *a++;
+ *b = '\0';
+ }
+ }
+ free(buff);
+
+ return 1; /* success */
+}
diff --git a/libtest/callbacks-example-filenameiisbug.c b/libtest/callbacks-example-filenameiisbug.c
index 59c42f5..bd882cf 100755
--- a/libtest/callbacks-example-filenameiisbug.c
+++ b/libtest/callbacks-example-filenameiisbug.c
@@ -1,69 +1,69 @@
-/*
- HTTrack external callbacks example : changing folder names ending with ".com"
- with ".c0m" as a workaround of IIS bug (see KB 275601)
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Standard httrack module includes */
-#include "httrack-library.h"
-#include "htsopt.h"
-#include "htsdefines.h"
-
-/* Function definitions */
-static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save);
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-
-/*
-module entry point
-*/
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
- const char *arg = strchr(argv, ',');
- if (arg != NULL)
- arg++;
- CHAIN_FUNCTION(opt, savename, mysavename, NULL);
- return 1; /* success */
-}
-
-/*
- Replaces all "offending" IIS extensions (exe, dll..) with "nice" ones
-*/
-static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save) {
- static const char* iisBogus[] = { ".com", ".exe", ".dll", ".sh", NULL };
- static const char* iisBogusReplace[] = { ".c0m", ".ex3", ".dl1", ".5h", NULL }; /* MUST be the same sizes */
- char* a;
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, savename) != NULL) {
- if (!CALLBACKARG_PREV_FUN(carg, savename)(CALLBACKARG_PREV_CARG(carg), opt, adr_complete, fil_complete, referer_adr, referer_fil, save)) {
- return 0; /* Abort */
- }
- }
-
- /* Process */
- for(a = save ; *a != '\0' ; a++) {
- int i;
- for(i = 0 ; iisBogus[i] != NULL ; i++) {
- int j;
- for(j = 0 ; iisBogus[i][j] == a[j] && iisBogus[i][j] != '\0' ; j++);
- if (iisBogus[i][j] == '\0' && ( a[j] == '\0' || a[j] == '/' || a[j] == '\\' ) ) {
- strncpy(a, iisBogusReplace[i], strlen(iisBogusReplace[i]));
- break;
- }
- }
- }
-
- return 1; /* success */
-}
+/*
+ HTTrack external callbacks example : changing folder names ending with ".com"
+ with ".c0m" as a workaround of IIS bug (see KB 275601)
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Standard httrack module includes */
+#include "httrack-library.h"
+#include "htsopt.h"
+#include "htsdefines.h"
+
+/* Function definitions */
+static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save);
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+
+/*
+module entry point
+*/
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
+ const char *arg = strchr(argv, ',');
+ if (arg != NULL)
+ arg++;
+ CHAIN_FUNCTION(opt, savename, mysavename, NULL);
+ return 1; /* success */
+}
+
+/*
+ Replaces all "offending" IIS extensions (exe, dll..) with "nice" ones
+*/
+static int mysavename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete, const char* fil_complete, const char* referer_adr, const char* referer_fil, char* save) {
+ static const char* iisBogus[] = { ".com", ".exe", ".dll", ".sh", NULL };
+ static const char* iisBogusReplace[] = { ".c0m", ".ex3", ".dl1", ".5h", NULL }; /* MUST be the same sizes */
+ char* a;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, savename) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, savename)(CALLBACKARG_PREV_CARG(carg), opt, adr_complete, fil_complete, referer_adr, referer_fil, save)) {
+ return 0; /* Abort */
+ }
+ }
+
+ /* Process */
+ for(a = save ; *a != '\0' ; a++) {
+ int i;
+ for(i = 0 ; iisBogus[i] != NULL ; i++) {
+ int j;
+ for(j = 0 ; iisBogus[i][j] == a[j] && iisBogus[i][j] != '\0' ; j++);
+ if (iisBogus[i][j] == '\0' && ( a[j] == '\0' || a[j] == '/' || a[j] == '\\' ) ) {
+ strncpy(a, iisBogusReplace[i], strlen(iisBogusReplace[i]));
+ break;
+ }
+ }
+ }
+
+ return 1; /* success */
+}
diff --git a/libtest/callbacks-example-listlinks.c b/libtest/callbacks-example-listlinks.c
index 9aef247..e602bd2 100755
--- a/libtest/callbacks-example-listlinks.c
+++ b/libtest/callbacks-example-listlinks.c
@@ -1,133 +1,133 @@
-/*
- HTTrack external callbacks example
- .c file
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback ..
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-/* Standard httrack module includes */
-#include "httrack-library.h"
-#include "htsopt.h"
-#include "htsdefines.h"
-
-/* Function definitions */
-static int process_file(t_hts_callbackarg *carg, httrackp *opt, char* html, int len, const char* url_address, const char* url_file);
-static int check_detectedlink(t_hts_callbackarg *carg, httrackp *opt, char* link);
-static int check_loop(t_hts_callbackarg *carg, httrackp *opt, void* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,void* stats);
-static int end(t_hts_callbackarg *carg, httrackp *opt);
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-
-/*
- This sample just lists all links in documents with the parent link:
- <parent> -> <link>
- This sample can be improved, for example, to make a map of a website.
-*/
-
-typedef struct t_my_userdef {
- char currentURLBeingParsed[2048];
-} t_my_userdef;
-
-/*
-module entry point
-*/
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
- t_my_userdef *userdef;
- /* */
- const char *arg = strchr(argv, ',');
- if (arg != NULL)
- arg++;
-
- /* Create user-defined structure */
- userdef = (t_my_userdef*) malloc(sizeof(t_my_userdef)); /* userdef */
- userdef->currentURLBeingParsed[0] = '\0';
-
- /* Plug callback functions */
- CHAIN_FUNCTION(opt, check_html, process_file, userdef);
- CHAIN_FUNCTION(opt, end, end, userdef);
- CHAIN_FUNCTION(opt, linkdetected, check_detectedlink, userdef);
- CHAIN_FUNCTION(opt, loop, check_loop, userdef);
-
- return 1; /* success */
-}
-
-static int process_file(t_hts_callbackarg *carg, httrackp *opt, char* html, int len, const char* url_address, const char* url_file) {
- t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
- char * const currentURLBeingParsed = userdef->currentURLBeingParsed;
-
- /* Call parent functions if multiple callbacks are chained. */
- 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 */
- }
- }
-
- /* Process */
- printf("now parsing %s%s..\n", url_address, url_file);
- strcpy(currentURLBeingParsed, url_address);
- strcat(currentURLBeingParsed, url_file);
-
- return 1; /* success */
-}
-
-static int check_detectedlink(t_hts_callbackarg *carg, httrackp *opt, char* link) {
- t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
- char * const currentURLBeingParsed = userdef->currentURLBeingParsed;
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, linkdetected) != NULL) {
- if (!CALLBACKARG_PREV_FUN(carg, linkdetected)(CALLBACKARG_PREV_CARG(carg), opt, link)) {
- return 0; /* Abort */
- }
- }
-
- /* Process */
- printf("[%s] -> [%s]\n", currentURLBeingParsed, link);
-
- return 1; /* success */
-}
-
-static int check_loop(t_hts_callbackarg *carg, httrackp *opt, void* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,void* stats) {
- static int fun_animation=0;
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, loop) != NULL) {
- if (!CALLBACKARG_PREV_FUN(carg, loop)(CALLBACKARG_PREV_CARG(carg), opt, back, back_max, back_index, lien_tot, lien_ntot, stat_time, stats)) {
- return 0; /* Abort */
- }
- }
-
- /* Process */
- printf("%c\r", "/-\\|"[(fun_animation++)%4]);
- return 1;
-}
-
-static int end(t_hts_callbackarg *carg, httrackp *opt) {
- t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
- fprintf(stderr, "** info: wrapper_exit() called!\n");
- if (userdef != NULL) {
- free(userdef);
- userdef = NULL;
- }
-
- /* Call parent functions if multiple callbacks are chained. */
- if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
- return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
- }
-
- return 1; /* success */
-}
+/*
+ HTTrack external callbacks example
+ .c file
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback ..
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Standard httrack module includes */
+#include "httrack-library.h"
+#include "htsopt.h"
+#include "htsdefines.h"
+
+/* Function definitions */
+static int process_file(t_hts_callbackarg *carg, httrackp *opt, char* html, int len, const char* url_address, const char* url_file);
+static int check_detectedlink(t_hts_callbackarg *carg, httrackp *opt, char* link);
+static int check_loop(t_hts_callbackarg *carg, httrackp *opt, void* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,void* stats);
+static int end(t_hts_callbackarg *carg, httrackp *opt);
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+
+/*
+ This sample just lists all links in documents with the parent link:
+ <parent> -> <link>
+ This sample can be improved, for example, to make a map of a website.
+*/
+
+typedef struct t_my_userdef {
+ char currentURLBeingParsed[2048];
+} t_my_userdef;
+
+/*
+module entry point
+*/
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv) {
+ t_my_userdef *userdef;
+ /* */
+ const char *arg = strchr(argv, ',');
+ if (arg != NULL)
+ arg++;
+
+ /* Create user-defined structure */
+ userdef = (t_my_userdef*) malloc(sizeof(t_my_userdef)); /* userdef */
+ userdef->currentURLBeingParsed[0] = '\0';
+
+ /* Plug callback functions */
+ CHAIN_FUNCTION(opt, check_html, process_file, userdef);
+ CHAIN_FUNCTION(opt, end, end, userdef);
+ CHAIN_FUNCTION(opt, linkdetected, check_detectedlink, userdef);
+ CHAIN_FUNCTION(opt, loop, check_loop, userdef);
+
+ return 1; /* success */
+}
+
+static int process_file(t_hts_callbackarg *carg, httrackp *opt, char* html, int len, const char* url_address, const char* url_file) {
+ t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
+ char * const currentURLBeingParsed = userdef->currentURLBeingParsed;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ 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 */
+ }
+ }
+
+ /* Process */
+ printf("now parsing %s%s..\n", url_address, url_file);
+ strcpy(currentURLBeingParsed, url_address);
+ strcat(currentURLBeingParsed, url_file);
+
+ return 1; /* success */
+}
+
+static int check_detectedlink(t_hts_callbackarg *carg, httrackp *opt, char* link) {
+ t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
+ char * const currentURLBeingParsed = userdef->currentURLBeingParsed;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, linkdetected) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, linkdetected)(CALLBACKARG_PREV_CARG(carg), opt, link)) {
+ return 0; /* Abort */
+ }
+ }
+
+ /* Process */
+ printf("[%s] -> [%s]\n", currentURLBeingParsed, link);
+
+ return 1; /* success */
+}
+
+static int check_loop(t_hts_callbackarg *carg, httrackp *opt, void* back,int back_max,int back_index,int lien_tot,int lien_ntot,int stat_time,void* stats) {
+ static int fun_animation=0;
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, loop) != NULL) {
+ if (!CALLBACKARG_PREV_FUN(carg, loop)(CALLBACKARG_PREV_CARG(carg), opt, back, back_max, back_index, lien_tot, lien_ntot, stat_time, stats)) {
+ return 0; /* Abort */
+ }
+ }
+
+ /* Process */
+ printf("%c\r", "/-\\|"[(fun_animation++)%4]);
+ return 1;
+}
+
+static int end(t_hts_callbackarg *carg, httrackp *opt) {
+ t_my_userdef *userdef = (t_my_userdef*) CALLBACKARG_USERDEF(carg);
+ fprintf(stderr, "** info: wrapper_exit() called!\n");
+ if (userdef != NULL) {
+ free(userdef);
+ userdef = NULL;
+ }
+
+ /* Call parent functions if multiple callbacks are chained. */
+ if (CALLBACKARG_PREV_FUN(carg, end) != NULL) {
+ return CALLBACKARG_PREV_FUN(carg, end)(CALLBACKARG_PREV_CARG(carg), opt);
+ }
+
+ return 1; /* success */
+}
diff --git a/libtest/callbacks-example-log.c b/libtest/callbacks-example-log.c
index 2834d05..068fda4 100755
--- a/libtest/callbacks-example-log.c
+++ b/libtest/callbacks-example-log.c
@@ -1,114 +1,114 @@
-/*
- HTTrack external callbacks example : dumy plugin, aimed to log for debugging purpose
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback ..
-*/
-
-/* 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"
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-EXTERNAL_FUNCTION int hts_unplug(httrackp *opt);
-
-/* local function called as "check_html" callback */
-static int process_file(t_hts_callbackarg *carg, httrackp *opt,
- char* html, int len, const char* url_address, const char* url_file) {
- void *ourDummyArg = (void*) CALLBACKARG_USERDEF(carg); /*optional user-defined arg*/
- char *fmt;
-
- /* 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 */
- }
- }
-
- /* log */
- fprintf(stderr, "* parsing file %s%s\n", url_address, url_file);
- fmt = malloc(strlen(url_address) + strlen(url_file) + 128);
- sprintf(fmt, " parsing file %s%s", url_address, url_file);
- hts_log(opt, "log-wrapper-info", fmt);
- free(fmt);
-
- return 1; /* success */
-}
-
-static int start_of_mirror(t_hts_callbackarg *carg, httrackp *opt) {
- const char *arginfo = (char*) CALLBACKARG_USERDEF(carg);
-
- fprintf(stderr, "* mirror start\n");
- hts_log(opt, arginfo, "mirror started");
-
- /* 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, start)(CALLBACKARG_PREV_CARG(carg), opt);
- }
-
- return 1; /* success */
-}
-
-/* local function called as "end" callback */
-static int end_of_mirror(t_hts_callbackarg *carg, httrackp *opt) {
- const char *arginfo = (char*) CALLBACKARG_USERDEF(carg);
-
- fprintf(stderr, "* mirror end\n");
- hts_log(opt, arginfo, "mirror ended");
-
- /* 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 */
- if (arg == NULL)
- arg = "log-wrapper-info";
- hts_log(opt, arg, "* plugging functions");
- CHAIN_FUNCTION(opt, check_html, process_file, (char*) arg);
- CHAIN_FUNCTION(opt, start, start_of_mirror, (char*) arg);
- CHAIN_FUNCTION(opt, end, end_of_mirror, (char*) arg);
-
- hts_log(opt, arg, "* module successfully plugged");
- return 1; /* success */
-}
-
-/*
-module exit point
-the function name and prototype MUST match this prototype
-*/
-EXTERNAL_FUNCTION int hts_unplug(httrackp *opt) {
- hts_log(opt, "log-wrapper-info", "* module successfully unplugged");
- return 1;
-}
+/*
+ HTTrack external callbacks example : dumy plugin, aimed to log for debugging purpose
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback ..
+*/
+
+/* 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"
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+EXTERNAL_FUNCTION int hts_unplug(httrackp *opt);
+
+/* local function called as "check_html" callback */
+static int process_file(t_hts_callbackarg *carg, httrackp *opt,
+ char* html, int len, const char* url_address, const char* url_file) {
+ void *ourDummyArg = (void*) CALLBACKARG_USERDEF(carg); /*optional user-defined arg*/
+ char *fmt;
+
+ /* 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 */
+ }
+ }
+
+ /* log */
+ fprintf(stderr, "* parsing file %s%s\n", url_address, url_file);
+ fmt = malloc(strlen(url_address) + strlen(url_file) + 128);
+ sprintf(fmt, " parsing file %s%s", url_address, url_file);
+ hts_log(opt, "log-wrapper-info", fmt);
+ free(fmt);
+
+ return 1; /* success */
+}
+
+static int start_of_mirror(t_hts_callbackarg *carg, httrackp *opt) {
+ const char *arginfo = (char*) CALLBACKARG_USERDEF(carg);
+
+ fprintf(stderr, "* mirror start\n");
+ hts_log(opt, arginfo, "mirror started");
+
+ /* 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, start)(CALLBACKARG_PREV_CARG(carg), opt);
+ }
+
+ return 1; /* success */
+}
+
+/* local function called as "end" callback */
+static int end_of_mirror(t_hts_callbackarg *carg, httrackp *opt) {
+ const char *arginfo = (char*) CALLBACKARG_USERDEF(carg);
+
+ fprintf(stderr, "* mirror end\n");
+ hts_log(opt, arginfo, "mirror ended");
+
+ /* 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 */
+ if (arg == NULL)
+ arg = "log-wrapper-info";
+ hts_log(opt, arg, "* plugging functions");
+ CHAIN_FUNCTION(opt, check_html, process_file, (char*) arg);
+ CHAIN_FUNCTION(opt, start, start_of_mirror, (char*) arg);
+ CHAIN_FUNCTION(opt, end, end_of_mirror, (char*) arg);
+
+ hts_log(opt, arg, "* module successfully plugged");
+ return 1; /* success */
+}
+
+/*
+module exit point
+the function name and prototype MUST match this prototype
+*/
+EXTERNAL_FUNCTION int hts_unplug(httrackp *opt) {
+ hts_log(opt, "log-wrapper-info", "* module successfully unplugged");
+ return 1;
+}
diff --git a/libtest/callbacks-example-simple.c b/libtest/callbacks-example-simple.c
index e1f835a..42bf8cd 100755
--- a/libtest/callbacks-example-simple.c
+++ b/libtest/callbacks-example-simple.c
@@ -1,89 +1,89 @@
-/*
- HTTrack external callbacks example : print all downloaded html documents
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack1
- With MS-Visual C++:
- cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack1.lib
-
- Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
-
- How to use:
- httrack --wrapper mycallback ..
-*/
-
-/* 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"
-
-/* external functions */
-EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
-EXTERNAL_FUNCTION int hts_unplug(httrackp *opt);
-
-/* 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(stderr, "Module unplugged");
-
- return 1; /* success */
-}
+/*
+ HTTrack external callbacks example : print all downloaded html documents
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -O -g3 -Wall -D_REENTRANT -shared -o mycallback.so callbacks-example.c -lhttrack2
+ With MS-Visual C++:
+ cl -LD -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.dll" callbacks-example.c libhttrack.lib
+
+ Note: the httrack library linker option is only necessary when using libhttrack's functions inside the callback
+
+ How to use:
+ httrack --wrapper mycallback ..
+*/
+
+/* 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"
+
+/* external functions */
+EXTERNAL_FUNCTION int hts_plug(httrackp *opt, const char* argv);
+EXTERNAL_FUNCTION int hts_unplug(httrackp *opt);
+
+/* 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(stderr, "Module unplugged");
+
+ return 1; /* success */
+}
diff --git a/libtest/example.c b/libtest/example.c
index df6e503..21f7254 100644
--- a/libtest/example.c
+++ b/libtest/example.c
@@ -1,201 +1,201 @@
-/*
- HTTrack library example
- .c file
-
- Prerequisites:
- - install winhttrack
- - set the proper path in the project settings (especially for the httrack lib and dll)
-
- How to build: (callback.so or callback.dll)
- With GNU-GCC:
- gcc -I/usr/include/httrack -O -g3 -Wall -D_REENTRANT -o example example.c -lhttrack1
- With MS-Visual C++:
- cl -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.exe" callbacks-example.c wsock32.lib libhttrack.lib
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#ifdef _WIN32
-#include <windows.h>
-#endif
-
-/* Standard httrack module includes */
-#include "httrack-library.h"
-#include "htsopt.h"
-#include "htsdefines.h"
-
-/* Local definitions */
-#include "example.h"
-
-/*
- * Name: main
- * Description: main() function
- * Parameters: None
- * Should return: error status
-*/
-int main(void) {
- /*
- First, ask for an URL
- Note: For the test, option r2 (mirror max depth=1) and --testscan (no index, no cache, do not store, no log files)
- */
- char _argv[][256] = {"httrack_test" , "<URL>" , "-r3" , "--testscan" , "" };
- char* argv[] = {NULL , NULL , NULL , NULL , NULL};
- int argc = 0;
- httrackp *opt;
- int ret;
- while(strlen(_argv[argc])) {
- argv[argc]=_argv[argc];
- argc++;
- }
- argv[argc]=NULL;
- printf("HTTrackLib test program\n");
- printf("Enter URL (example: www.foobar.com/index.html) :");
- scanf("%s",argv[1]);
- printf("Test: 1 depth\n");
-
- /* Initialize the library */
-#ifdef _WIN32
- {
- WORD wVersionRequested; // requested version WinSock API
- WSADATA wsadata; // Windows Sockets API data
- int stat;
- wVersionRequested = 0x0101;
- stat = WSAStartup( wVersionRequested, &wsadata );
- if (stat != 0) {
- printf("Winsock not found!\n");
- return;
- } else if (LOBYTE(wsadata.wVersion) != 1 && HIBYTE(wsadata.wVersion) != 1) {
- printf("WINSOCK.DLL does not support version 1.1\n");
- WSACleanup();
- return;
- }
- }
-#endif
- hts_init();
-
- /* Create option settings and set callbacks (wrappers) */
- opt = hts_create_opt();
-
- CHAIN_FUNCTION(opt, init, httrack_wrapper_init, NULL);
- CHAIN_FUNCTION(opt, uninit, httrack_wrapper_uninit, NULL);
- CHAIN_FUNCTION(opt, start, httrack_wrapper_start, NULL);
- CHAIN_FUNCTION(opt, end, httrack_wrapper_end, NULL);
- CHAIN_FUNCTION(opt, chopt, httrack_wrapper_chopt, NULL);
- CHAIN_FUNCTION(opt, preprocess, httrack_wrapper_preprocesshtml, NULL);
- CHAIN_FUNCTION(opt, postprocess, httrack_wrapper_postprocesshtml, NULL);
- CHAIN_FUNCTION(opt, check_html, httrack_wrapper_checkhtml, NULL);
- CHAIN_FUNCTION(opt, query, httrack_wrapper_query, NULL);
- CHAIN_FUNCTION(opt, query2, httrack_wrapper_query2, NULL);
- CHAIN_FUNCTION(opt, query3, httrack_wrapper_query3, NULL);
- CHAIN_FUNCTION(opt, loop, httrack_wrapper_loop, NULL);
- CHAIN_FUNCTION(opt, check_link, httrack_wrapper_check, NULL);
- CHAIN_FUNCTION(opt, check_mime, httrack_wrapper_check_mime, NULL);
- CHAIN_FUNCTION(opt, pause, httrack_wrapper_pause, NULL);
- CHAIN_FUNCTION(opt, filesave, httrack_wrapper_filesave, NULL);
- CHAIN_FUNCTION(opt, filesave2, httrack_wrapper_filesave2, NULL);
- CHAIN_FUNCTION(opt, linkdetected, httrack_wrapper_linkdetected, NULL);
- CHAIN_FUNCTION(opt, linkdetected2, httrack_wrapper_linkdetected2, NULL);
- CHAIN_FUNCTION(opt, xfrstatus, httrack_wrapper_xfrstatus, NULL);
- CHAIN_FUNCTION(opt, savename, httrack_wrapper_savename, NULL);
- CHAIN_FUNCTION(opt, sendhead, httrack_wrapper_sendheader, NULL);
- CHAIN_FUNCTION(opt, receivehead, httrack_wrapper_receiveheader, NULL);
-
- /* Then, launch the mirror */
- ret = hts_main2(argc, argv, opt);
-
- /* Wait for a key */
- printf("\nPress ENTER key to exit\n");
- scanf("%s",argv[1]);
-
- /* Clear option state */
- hts_free_opt(opt);
- hts_uninit();
-#ifdef _WIN32
- WSACleanup();
-#endif
-
- /* That's all! */
- return 0;
-}
-
-
-/* CALLBACK FUNCTIONS */
-
-/* Initialize the Winsock */
-static void CDECL httrack_wrapper_init(t_hts_callbackarg *carg) {
- printf("Engine started\n");
-}
-static void CDECL httrack_wrapper_uninit(t_hts_callbackarg *carg) {
- printf("Engine exited\n");
-}
-static int CDECL httrack_wrapper_start(t_hts_callbackarg *carg, httrackp* opt) {
- printf("Start of mirror\n");
- return 1;
-}
-static int CDECL httrack_wrapper_chopt(t_hts_callbackarg *carg, httrackp* opt) {
- return 1;
-}
-static int CDECL httrack_wrapper_end(t_hts_callbackarg *carg, httrackp* opt) {
- printf("End of mirror\n");
- return 1;
-}
-static int CDECL httrack_wrapper_checkhtml(t_hts_callbackarg *carg, httrackp *opt, char* html,int len,const char* url_address,const char* url_file) {
- printf("Parsing html file: http://%s%s\n",url_address,url_file);
- return 1;
-}
-static int CDECL httrack_wrapper_loop(t_hts_callbackarg *carg, httrackp *opt, void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats) {
- /* printf("..httrack_wrapper_loop called\n"); */
- return 1;
-}
-static const char* CDECL httrack_wrapper_query(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
- /* Answer is No */
- return "N";
-}
-static const char* CDECL httrack_wrapper_query2(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
- /* Answer is No */
- return "N";
-}
-static const char* CDECL httrack_wrapper_query3(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
- /* Answer is "" */
- return "";
-}
-static int CDECL httrack_wrapper_check(t_hts_callbackarg *carg, httrackp *opt, const char* adr,const char* fil,int status) {
- printf("Link status tested: http://%s%s\n",adr,fil);
- return -1;
-}
-static void CDECL httrack_wrapper_pause(t_hts_callbackarg *carg, httrackp *opt, const char* lockfile) {
- /* Wait until lockfile is removed.. */
-}
-static void CDECL httrack_wrapper_filesave(t_hts_callbackarg *carg, httrackp *opt, const char* file) {
-}
-static int CDECL httrack_wrapper_linkdetected(t_hts_callbackarg *carg, httrackp *opt, char* link) {
- printf("Link detected: %s\n",link);
- return 1;
-}
-static int CDECL httrack_wrapper_xfrstatus(t_hts_callbackarg *carg, httrackp *opt, void* back) {
- return 1;
-}
-static int CDECL httrack_wrapper_preprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file) {
- return 1;
-}
-static int CDECL httrack_wrapper_postprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file) {
- return 1;
-}
-static int CDECL httrack_wrapper_check_mime(t_hts_callbackarg *carg, httrackp *opt, const char* adr,const char* fil,const char* mime,int status) {
- return -1;
-}
-static void CDECL httrack_wrapper_filesave2(t_hts_callbackarg *carg, httrackp *opt, const char* adr, const char* fil, const char* save, int is_new, int is_modified,int not_updated) {
-}
-static int CDECL httrack_wrapper_linkdetected2(t_hts_callbackarg *carg, httrackp *opt, char* link, const char* start_tag) {
- return 1;
-}
-static int CDECL httrack_wrapper_savename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete,const char* fil_complete,const char* referer_adr,const char* referer_fil,char* save) {
- return 1;
-}
-static int CDECL httrack_wrapper_sendheader(t_hts_callbackarg *carg, httrackp *opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* outgoing) {
- return 1;
-}
-static int CDECL httrack_wrapper_receiveheader(t_hts_callbackarg *carg, httrackp *opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* incoming) {
- return 1;
-}
+/*
+ HTTrack library example
+ .c file
+
+ Prerequisites:
+ - install winhttrack
+ - set the proper path in the project settings (especially for the httrack lib and dll)
+
+ How to build: (callback.so or callback.dll)
+ With GNU-GCC:
+ gcc -I/usr/include/httrack -O -g3 -Wall -D_REENTRANT -o example example.c -lhttrack2
+ With MS-Visual C++:
+ cl -nologo -W3 -Zi -Zp4 -DWIN32 -Fe"mycallback.exe" callbacks-example.c wsock32.lib libhttrack.lib
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
+/* Standard httrack module includes */
+#include "httrack-library.h"
+#include "htsopt.h"
+#include "htsdefines.h"
+
+/* Local definitions */
+#include "example.h"
+
+/*
+ * Name: main
+ * Description: main() function
+ * Parameters: None
+ * Should return: error status
+*/
+int main(void) {
+ /*
+ First, ask for an URL
+ Note: For the test, option r2 (mirror max depth=1) and --testscan (no index, no cache, do not store, no log files)
+ */
+ char _argv[][256] = {"httrack_test" , "<URL>" , "-r3" , "--testscan" , "" };
+ char* argv[] = {NULL , NULL , NULL , NULL , NULL};
+ int argc = 0;
+ httrackp *opt;
+ int ret;
+ while(strlen(_argv[argc])) {
+ argv[argc]=_argv[argc];
+ argc++;
+ }
+ argv[argc]=NULL;
+ printf("HTTrackLib test program\n");
+ printf("Enter URL (example: www.foobar.com/index.html) :");
+ scanf("%s",argv[1]);
+ printf("Test: 1 depth\n");
+
+ /* Initialize the library */
+#ifdef _WIN32
+ {
+ WORD wVersionRequested; // requested version WinSock API
+ WSADATA wsadata; // Windows Sockets API data
+ int stat;
+ wVersionRequested = 0x0101;
+ stat = WSAStartup( wVersionRequested, &wsadata );
+ if (stat != 0) {
+ printf("Winsock not found!\n");
+ return;
+ } else if (LOBYTE(wsadata.wVersion) != 1 && HIBYTE(wsadata.wVersion) != 1) {
+ printf("WINSOCK.DLL does not support version 1.1\n");
+ WSACleanup();
+ return;
+ }
+ }
+#endif
+ hts_init();
+
+ /* Create option settings and set callbacks (wrappers) */
+ opt = hts_create_opt();
+
+ CHAIN_FUNCTION(opt, init, httrack_wrapper_init, NULL);
+ CHAIN_FUNCTION(opt, uninit, httrack_wrapper_uninit, NULL);
+ CHAIN_FUNCTION(opt, start, httrack_wrapper_start, NULL);
+ CHAIN_FUNCTION(opt, end, httrack_wrapper_end, NULL);
+ CHAIN_FUNCTION(opt, chopt, httrack_wrapper_chopt, NULL);
+ CHAIN_FUNCTION(opt, preprocess, httrack_wrapper_preprocesshtml, NULL);
+ CHAIN_FUNCTION(opt, postprocess, httrack_wrapper_postprocesshtml, NULL);
+ CHAIN_FUNCTION(opt, check_html, httrack_wrapper_checkhtml, NULL);
+ CHAIN_FUNCTION(opt, query, httrack_wrapper_query, NULL);
+ CHAIN_FUNCTION(opt, query2, httrack_wrapper_query2, NULL);
+ CHAIN_FUNCTION(opt, query3, httrack_wrapper_query3, NULL);
+ CHAIN_FUNCTION(opt, loop, httrack_wrapper_loop, NULL);
+ CHAIN_FUNCTION(opt, check_link, httrack_wrapper_check, NULL);
+ CHAIN_FUNCTION(opt, check_mime, httrack_wrapper_check_mime, NULL);
+ CHAIN_FUNCTION(opt, pause, httrack_wrapper_pause, NULL);
+ CHAIN_FUNCTION(opt, filesave, httrack_wrapper_filesave, NULL);
+ CHAIN_FUNCTION(opt, filesave2, httrack_wrapper_filesave2, NULL);
+ CHAIN_FUNCTION(opt, linkdetected, httrack_wrapper_linkdetected, NULL);
+ CHAIN_FUNCTION(opt, linkdetected2, httrack_wrapper_linkdetected2, NULL);
+ CHAIN_FUNCTION(opt, xfrstatus, httrack_wrapper_xfrstatus, NULL);
+ CHAIN_FUNCTION(opt, savename, httrack_wrapper_savename, NULL);
+ CHAIN_FUNCTION(opt, sendhead, httrack_wrapper_sendheader, NULL);
+ CHAIN_FUNCTION(opt, receivehead, httrack_wrapper_receiveheader, NULL);
+
+ /* Then, launch the mirror */
+ ret = hts_main2(argc, argv, opt);
+
+ /* Wait for a key */
+ printf("\nPress ENTER key to exit\n");
+ scanf("%s",argv[1]);
+
+ /* Clear option state */
+ hts_free_opt(opt);
+ hts_uninit();
+#ifdef _WIN32
+ WSACleanup();
+#endif
+
+ /* That's all! */
+ return 0;
+}
+
+
+/* CALLBACK FUNCTIONS */
+
+/* Initialize the Winsock */
+static void CDECL httrack_wrapper_init(t_hts_callbackarg *carg) {
+ printf("Engine started\n");
+}
+static void CDECL httrack_wrapper_uninit(t_hts_callbackarg *carg) {
+ printf("Engine exited\n");
+}
+static int CDECL httrack_wrapper_start(t_hts_callbackarg *carg, httrackp* opt) {
+ printf("Start of mirror\n");
+ return 1;
+}
+static int CDECL httrack_wrapper_chopt(t_hts_callbackarg *carg, httrackp* opt) {
+ return 1;
+}
+static int CDECL httrack_wrapper_end(t_hts_callbackarg *carg, httrackp* opt) {
+ printf("End of mirror\n");
+ return 1;
+}
+static int CDECL httrack_wrapper_checkhtml(t_hts_callbackarg *carg, httrackp *opt, char* html,int len,const char* url_address,const char* url_file) {
+ printf("Parsing html file: http://%s%s\n",url_address,url_file);
+ return 1;
+}
+static int CDECL httrack_wrapper_loop(t_hts_callbackarg *carg, httrackp *opt, void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats) {
+ /* printf("..httrack_wrapper_loop called\n"); */
+ return 1;
+}
+static const char* CDECL httrack_wrapper_query(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
+ /* Answer is No */
+ return "N";
+}
+static const char* CDECL httrack_wrapper_query2(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
+ /* Answer is No */
+ return "N";
+}
+static const char* CDECL httrack_wrapper_query3(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
+ /* Answer is "" */
+ return "";
+}
+static int CDECL httrack_wrapper_check(t_hts_callbackarg *carg, httrackp *opt, const char* adr,const char* fil,int status) {
+ printf("Link status tested: http://%s%s\n",adr,fil);
+ return -1;
+}
+static void CDECL httrack_wrapper_pause(t_hts_callbackarg *carg, httrackp *opt, const char* lockfile) {
+ /* Wait until lockfile is removed.. */
+}
+static void CDECL httrack_wrapper_filesave(t_hts_callbackarg *carg, httrackp *opt, const char* file) {
+}
+static int CDECL httrack_wrapper_linkdetected(t_hts_callbackarg *carg, httrackp *opt, char* link) {
+ printf("Link detected: %s\n",link);
+ return 1;
+}
+static int CDECL httrack_wrapper_xfrstatus(t_hts_callbackarg *carg, httrackp *opt, void* back) {
+ return 1;
+}
+static int CDECL httrack_wrapper_preprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file) {
+ return 1;
+}
+static int CDECL httrack_wrapper_postprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file) {
+ return 1;
+}
+static int CDECL httrack_wrapper_check_mime(t_hts_callbackarg *carg, httrackp *opt, const char* adr,const char* fil,const char* mime,int status) {
+ return -1;
+}
+static void CDECL httrack_wrapper_filesave2(t_hts_callbackarg *carg, httrackp *opt, const char* adr, const char* fil, const char* save, int is_new, int is_modified,int not_updated) {
+}
+static int CDECL httrack_wrapper_linkdetected2(t_hts_callbackarg *carg, httrackp *opt, char* link, const char* start_tag) {
+ return 1;
+}
+static int CDECL httrack_wrapper_savename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete,const char* fil_complete,const char* referer_adr,const char* referer_fil,char* save) {
+ return 1;
+}
+static int CDECL httrack_wrapper_sendheader(t_hts_callbackarg *carg, httrackp *opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* outgoing) {
+ return 1;
+}
+static int CDECL httrack_wrapper_receiveheader(t_hts_callbackarg *carg, httrackp *opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* incoming) {
+ return 1;
+}
diff --git a/libtest/example.h b/libtest/example.h
index 57bf15d..b1d8e38 100644
--- a/libtest/example.h
+++ b/libtest/example.h
@@ -1,34 +1,34 @@
-/*
- HTTrack library example
- .h file
-*/
-
-#ifdef __WIN32
-#define CDECL __cdecl
-#else
-#define CDECL
-#endif
-
-static void CDECL httrack_wrapper_init(t_hts_callbackarg *carg);
-static void CDECL httrack_wrapper_uninit(t_hts_callbackarg *carg);
-static int CDECL httrack_wrapper_start(t_hts_callbackarg *carg, httrackp* opt);
-static int CDECL httrack_wrapper_chopt(t_hts_callbackarg *carg, httrackp* opt);
-static int CDECL httrack_wrapper_end(t_hts_callbackarg *carg, httrackp* opt);
-static int CDECL httrack_wrapper_checkhtml(t_hts_callbackarg *carg, httrackp *opt, char* html,int len,const char* url_address,const char* url_file);
-static int CDECL httrack_wrapper_loop(t_hts_callbackarg *carg, httrackp *opt, void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats);
-static const char* CDECL httrack_wrapper_query(t_hts_callbackarg *carg, httrackp *opt, const char* question);
-static const char* CDECL httrack_wrapper_query2(t_hts_callbackarg *carg, httrackp *opt, const char* question);
-static const char* CDECL httrack_wrapper_query3(t_hts_callbackarg *carg, httrackp *opt, const char* question);
-static int CDECL httrack_wrapper_check(t_hts_callbackarg *carg, httrackp *opt, const char* adr,const char* fil,int status);
-static void CDECL httrack_wrapper_pause(t_hts_callbackarg *carg, httrackp *opt, const char* lockfile);
-static void CDECL httrack_wrapper_filesave(t_hts_callbackarg *carg, httrackp *opt, const char* file);
-static int CDECL httrack_wrapper_linkdetected(t_hts_callbackarg *carg, httrackp *opt, char* link);
-static int CDECL httrack_wrapper_xfrstatus(t_hts_callbackarg *carg, httrackp *opt, void* back);
-static int CDECL httrack_wrapper_preprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file);
-static int CDECL httrack_wrapper_postprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file);
-static int CDECL httrack_wrapper_check_mime(t_hts_callbackarg *carg, httrackp *opt, const char* adr,const char* fil,const char* mime,int status);
-static void CDECL httrack_wrapper_filesave2(t_hts_callbackarg *carg, httrackp *opt, const char* adr, const char* fil, const char* save, int is_new, int is_modified,int not_updated);
-static int CDECL httrack_wrapper_linkdetected2(t_hts_callbackarg *carg, httrackp *opt, char* link, const char* start_tag);
-static int CDECL httrack_wrapper_savename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete,const char* fil_complete,const char* referer_adr,const char* referer_fil,char* save);
-static int CDECL httrack_wrapper_sendheader(t_hts_callbackarg *carg, httrackp *opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* outgoing);
-static int CDECL httrack_wrapper_receiveheader(t_hts_callbackarg *carg, httrackp *opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* incoming);
+/*
+ HTTrack library example
+ .h file
+*/
+
+#ifdef __WIN32
+#define CDECL __cdecl
+#else
+#define CDECL
+#endif
+
+static void CDECL httrack_wrapper_init(t_hts_callbackarg *carg);
+static void CDECL httrack_wrapper_uninit(t_hts_callbackarg *carg);
+static int CDECL httrack_wrapper_start(t_hts_callbackarg *carg, httrackp* opt);
+static int CDECL httrack_wrapper_chopt(t_hts_callbackarg *carg, httrackp* opt);
+static int CDECL httrack_wrapper_end(t_hts_callbackarg *carg, httrackp* opt);
+static int CDECL httrack_wrapper_checkhtml(t_hts_callbackarg *carg, httrackp *opt, char* html,int len,const char* url_address,const char* url_file);
+static int CDECL httrack_wrapper_loop(t_hts_callbackarg *carg, httrackp *opt, void* _back,int back_max,int back_index,int lien_n,int lien_tot,int stat_time,hts_stat_struct* stats);
+static const char* CDECL httrack_wrapper_query(t_hts_callbackarg *carg, httrackp *opt, const char* question);
+static const char* CDECL httrack_wrapper_query2(t_hts_callbackarg *carg, httrackp *opt, const char* question);
+static const char* CDECL httrack_wrapper_query3(t_hts_callbackarg *carg, httrackp *opt, const char* question);
+static int CDECL httrack_wrapper_check(t_hts_callbackarg *carg, httrackp *opt, const char* adr,const char* fil,int status);
+static void CDECL httrack_wrapper_pause(t_hts_callbackarg *carg, httrackp *opt, const char* lockfile);
+static void CDECL httrack_wrapper_filesave(t_hts_callbackarg *carg, httrackp *opt, const char* file);
+static int CDECL httrack_wrapper_linkdetected(t_hts_callbackarg *carg, httrackp *opt, char* link);
+static int CDECL httrack_wrapper_xfrstatus(t_hts_callbackarg *carg, httrackp *opt, void* back);
+static int CDECL httrack_wrapper_preprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file);
+static int CDECL httrack_wrapper_postprocesshtml(t_hts_callbackarg *carg, httrackp *opt, char** html,int* len,const char* url_address,const char* url_file);
+static int CDECL httrack_wrapper_check_mime(t_hts_callbackarg *carg, httrackp *opt, const char* adr,const char* fil,const char* mime,int status);
+static void CDECL httrack_wrapper_filesave2(t_hts_callbackarg *carg, httrackp *opt, const char* adr, const char* fil, const char* save, int is_new, int is_modified,int not_updated);
+static int CDECL httrack_wrapper_linkdetected2(t_hts_callbackarg *carg, httrackp *opt, char* link, const char* start_tag);
+static int CDECL httrack_wrapper_savename(t_hts_callbackarg *carg, httrackp *opt, const char* adr_complete,const char* fil_complete,const char* referer_adr,const char* referer_fil,char* save);
+static int CDECL httrack_wrapper_sendheader(t_hts_callbackarg *carg, httrackp *opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* outgoing);
+static int CDECL httrack_wrapper_receiveheader(t_hts_callbackarg *carg, httrackp *opt, char* buff, const char* adr, const char* fil, const char* referer_adr, const char* referer_fil, htsblk* incoming);
diff --git a/libtest/readme.txt b/libtest/readme.txt
index c204e29..6c19b12 100644
--- a/libtest/readme.txt
+++ b/libtest/readme.txt
@@ -1,56 +1,56 @@
-HTTrack library example
------------------------
-
-Here is an example of how to integrate HTTrack Website Copier into a project
-to use it as a "core library".
-
-
-Important Notice:
-----------------
-
-These sources are covered by the GNU General Public License (see below)
-(Projects based on these sources must follow the GPL, too)
-
-
-Copyright notice:
-----------------
-
-HTTrack Website Copier, Offline Browser for Windows and Unix
-Copyright (C) Xavier Roche and other contributors
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-========================================================================
- MAKEFILE PROJECT : libtest Project Overview
-========================================================================
-
-AppWizard has created this libtest project for you.
-
-This file contains a summary of what you will find in each of the files that
-make up your libtest project.
-
-
-libtest.vcproj
- This is the main project file for VC++ projects generated using an Application Wizard.
- It contains information about the version of Visual C++ that generated the file, and
- information about the platforms, configurations, and project features selected with the
- Application Wizard.
-
-This project allows you to build/clean/rebuild from within Visual Studio by calling the commands you have input
-in the wizard. The build command can be nmake or any other tool you use.
-
-This project does not contain any files, so there are none displayed in Solution Explorer.
-
-/////////////////////////////////////////////////////////////////////////////
+HTTrack library example
+-----------------------
+
+Here is an example of how to integrate HTTrack Website Copier into a project
+to use it as a "core library".
+
+
+Important Notice:
+----------------
+
+These sources are covered by the GNU General Public License (see below)
+(Projects based on these sources must follow the GPL, too)
+
+
+Copyright notice:
+----------------
+
+HTTrack Website Copier, Offline Browser for Windows and Unix
+Copyright (C) Xavier Roche and other contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+========================================================================
+ MAKEFILE PROJECT : libtest Project Overview
+========================================================================
+
+AppWizard has created this libtest project for you.
+
+This file contains a summary of what you will find in each of the files that
+make up your libtest project.
+
+
+libtest.vcproj
+ This is the main project file for VC++ projects generated using an Application Wizard.
+ It contains information about the version of Visual C++ that generated the file, and
+ information about the platforms, configurations, and project features selected with the
+ Application Wizard.
+
+This project allows you to build/clean/rebuild from within Visual Studio by calling the commands you have input
+in the wizard. The build command can be nmake or any other tool you use.
+
+This project does not contain any files, so there are none displayed in Solution Explorer.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/license.txt b/license.txt
index 9543ff8..22c4666 100644
--- a/license.txt
+++ b/license.txt
@@ -1,39 +1,39 @@
-HTTrack Website Copier License Agreement:
-
-HTTrack Website Copier, Offline Browser for Windows and Unix
-Copyright (C) Xavier Roche and other contributors
-
-This program is free software; you can redistribute it and/or
-modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation; either version 2
-of the License, or any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
-In addition, as a special exception, Xavier Roche gives permission to
-link the code of this program with the openSSL library (or with
-modified versions of openSSL that use the same license as openSSL),
-and distribute linked combinations including the two. You must obey
-the GNU General Public License in all respects for all of the code
-used other than openSSL. If you modify this file, you may extend this
-exception to your version of the file, but you are not obligated to do
-so. If you do not wish to do so, delete this exception statement from
-your version.
-
-Important notes:
-
-We hereby ask people using this source NOT to use it in purpose of grabbing
-emails addresses, or collecting any other private informations on persons.
-This would disgrace our work, and spoil the many hours we spent on it.
-
-
-Contacting us / support:
-Please refer to the README file
-
+HTTrack Website Copier License Agreement:
+
+HTTrack Website Copier, Offline Browser for Windows and Unix
+Copyright (C) Xavier Roche and other contributors
+
+This program is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+In addition, as a special exception, Xavier Roche gives permission to
+link the code of this program with the openSSL library (or with
+modified versions of openSSL that use the same license as openSSL),
+and distribute linked combinations including the two. You must obey
+the GNU General Public License in all respects for all of the code
+used other than openSSL. If you modify this file, you may extend this
+exception to your version of the file, but you are not obligated to do
+so. If you do not wish to do so, delete this exception statement from
+your version.
+
+Important notes:
+
+We hereby ask people using this source NOT to use it in purpose of grabbing
+emails addresses, or collecting any other private informations on persons.
+This would disgrace our work, and spoil the many hours we spent on it.
+
+
+Contacting us / support:
+Please refer to the README file
+
diff --git a/ltmain.sh b/ltmain.sh
index c715b59..1ad8ef4 100644
--- a/ltmain.sh
+++ b/ltmain.sh
@@ -1,8 +1,8 @@
# ltmain.sh - Provide generalized library-building support services.
# NOTE: Changing this file will not affect anything until you rerun configure.
#
-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
-# Free Software Foundation, Inc.
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
+# 2007, 2008 Free Software Foundation, Inc.
# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
#
# This program is free software; you can redistribute it and/or modify
@@ -43,14 +43,22 @@ EXIT_FAILURE=1
PROGRAM=ltmain.sh
PACKAGE=libtool
-VERSION="1.5.22 Debian 1.5.22-4"
-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
-
-# See if we are running on zsh, and set the options which allow our
-# commands through without removal of \ escapes.
-if test -n "${ZSH_VERSION+set}" ; then
+VERSION="1.5.26 Debian 1.5.26-4+lenny1"
+TIMESTAMP=" (1.1220.2.493 2008/02/01 16:58:18)"
+
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
# Check that we have a working $echo.
if test "X$1" = X--no-reexec; then
@@ -105,11 +113,19 @@ esac
# These must not be set unconditionally because not all systems understand
# e.g. LANG=C (notably SCO).
# We save the old values to restore during execute mode.
-if test "${LC_ALL+set}" = set; then
- save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
-fi
-if test "${LANG+set}" = set; then
- save_LANG="$LANG"; LANG=C; export LANG
+lt_env=
+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+do
+ eval "if test \"\${$lt_var+set}\" = set; then
+ save_$lt_var=\$$lt_var
+ lt_env=\"$lt_var=\$$lt_var \$lt_env\"
+ $lt_var=C
+ export $lt_var
+ fi"
+done
+
+if test -n "$lt_env"; then
+ lt_env="env $lt_env"
fi
# Make sure IFS has a sensible default
@@ -136,6 +152,8 @@ duplicate_deps=no
preserve_args=
lo2o="s/\\.lo\$/.${objext}/"
o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
#####################################
# Shell function definitions:
@@ -196,7 +214,13 @@ func_win32_libid ()
if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
$EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
win32_nmres=`eval $NM -f posix -A $1 | \
- $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
+ $SED -n -e '1,100{
+ / I /{
+ s,.*,import,
+ p
+ q
+ }
+ }'`
case $win32_nmres in
import*) win32_libid_type="x86 archive import";;
*) win32_libid_type="x86 archive static";;
@@ -327,7 +351,17 @@ func_extract_archives ()
*) my_xabs=`pwd`"/$my_xlib" ;;
esac
my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
- my_xdir="$my_gentop/$my_xlib"
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ extracted_serial=`expr $extracted_serial + 1`
+ my_xlib_u=lt$extracted_serial-$my_xlib ;;
+ *) break ;;
+ esac
+ done
+ extracted_archives="$extracted_archives $my_xlib_u"
+ my_xdir="$my_gentop/$my_xlib_u"
$show "${rm}r $my_xdir"
$run ${rm}r "$my_xdir"
@@ -454,11 +488,12 @@ do
;;
--version)
- $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
- $echo
- $echo "Copyright (C) 2005 Free Software Foundation, Inc."
- $echo "This is free software; see the source for copying conditions. There is NO"
- $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ echo "\
+$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
+
+Copyright (C) 2008 Free Software Foundation, Inc.
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
exit $?
;;
@@ -755,9 +790,11 @@ if test -z "$show_help"; then
*.class) xform=class ;;
*.cpp) xform=cpp ;;
*.cxx) xform=cxx ;;
- *.f90) xform=f90 ;;
+ *.[fF][09]?) xform=[fF][09]. ;;
*.for) xform=for ;;
*.java) xform=java ;;
+ *.obj) xform=obj ;;
+ *.sx) xform=sx ;;
esac
libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
@@ -926,7 +963,7 @@ EOF
$run $rm "$lobj" "$output_obj"
$show "$command"
- if $run eval "$command"; then :
+ if $run eval $lt_env "$command"; then :
else
test -n "$output_obj" && $run $rm $removelist
exit $EXIT_FAILURE
@@ -998,7 +1035,7 @@ EOF
command="$command$suppress_output"
$run $rm "$obj" "$output_obj"
$show "$command"
- if $run eval "$command"; then :
+ if $run eval $lt_env "$command"; then :
else
$run $rm $removelist
exit $EXIT_FAILURE
@@ -1131,6 +1168,7 @@ EOF
thread_safe=no
vinfo=
vinfo_number=no
+ single_module="${wl}-single_module"
func_infer_tag $base_compile
@@ -1138,8 +1176,9 @@ EOF
for arg
do
case $arg in
- -all-static | -static)
- if test "X$arg" = "X-all-static"; then
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
$echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
fi
@@ -1147,12 +1186,20 @@ EOF
dlopen_self=$dlopen_self_static
fi
prefer_static_libs=yes
- else
+ ;;
+ -static)
if test -z "$pic_flag" && test -n "$link_static_flag"; then
dlopen_self=$dlopen_self_static
fi
prefer_static_libs=built
- fi
+ ;;
+ -static-libtool-libs)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+ ;;
+ esac
build_libtool_libs=no
build_old_libs=yes
break
@@ -1600,13 +1647,18 @@ EOF
continue
;;
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
compiler_flags="$compiler_flags $arg"
compile_command="$compile_command $arg"
finalize_command="$finalize_command $arg"
continue
;;
+ -multi_module)
+ single_module="${wl}-multi_module"
+ continue
+ ;;
+
-module)
module=yes
continue
@@ -1620,10 +1672,11 @@ EOF
# -m* pass through architecture-specific compiler args for GCC
# -m*, -t[45]*, -txscale* pass through architecture-specific
# compiler args for GCC
- # -pg pass through profiling flag for GCC
+ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
+ # -F/path gives path to uninstalled frameworks, gcc on darwin
# @file GCC response files
- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
- -t[45]*|-txscale*|@*)
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
# Unknown arguments in both finalize_command and compile_command need
# to be aesthetically quoted because they are evaled later.
@@ -1651,9 +1704,9 @@ EOF
-no-install)
case $host in
- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
# The PATH hackery in wrapper scripts is required on Windows
- # in order for the loader to find any dlls it needs.
+ # and Darwin in order for the loader to find any dlls it needs.
$echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
$echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
fast_install=no
@@ -1712,7 +1765,7 @@ EOF
continue
;;
- -static)
+ -static | -static-libtool-libs)
# The effects of -static are defined in a previous loop.
# We used to do the same as -all-static on platforms that
# didn't have a PIC flag, but the assumption that the effects
@@ -2097,7 +2150,7 @@ EOF
lib=
found=no
case $deplib in
- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
if test "$linkmode,$pass" = "prog,link"; then
compile_deplibs="$deplib $compile_deplibs"
finalize_deplibs="$deplib $finalize_deplibs"
@@ -2112,7 +2165,12 @@ EOF
continue
fi
name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
- for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do
+ if test "$linkmode" = lib; then
+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path"
+ else
+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path"
+ fi
+ for searchdir in $searchdirs; do
for search_ext in .la $std_shrext .so .a; do
# Search the libtool library
lib="$searchdir/lib${name}${search_ext}"
@@ -2493,7 +2551,9 @@ EOF
if test "$linkmode,$pass" = "prog,link"; then
if test -n "$library_names" &&
- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
+ { { test "$prefer_static_libs" = no ||
+ test "$prefer_static_libs,$installed" = "built,yes"; } ||
+ test -z "$old_library"; }; then
# We need to hardcode the library path
if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
# Make sure the rpath contains only unique directories.
@@ -2906,12 +2966,18 @@ EOF
# we do not want to link against static libs,
# but need to link against shared
eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib`
+ eval deplibdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
if test -n "$deplibrary_names" ; then
for tmp in $deplibrary_names ; do
depdepl=$tmp
done
- if test -f "$path/$depdepl" ; then
+ if test -f "$deplibdir/$depdepl" ; then
+ depdepl="$deplibdir/$depdepl"
+ elif test -f "$path/$depdepl" ; then
depdepl="$path/$depdepl"
+ else
+ # Can't find it, oh well...
+ depdepl=
fi
# do not add paths which are already there
case " $newlib_search_path " in
@@ -3059,9 +3125,10 @@ EOF
case $linkmode in
oldlib)
- if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
- fi
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 ;;
+ esac
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
$echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
@@ -3189,7 +3256,7 @@ EOF
# which has an extra 1 added just for fun
#
case $version_type in
- darwin|linux|osf|windows)
+ darwin|linux|osf|windows|none)
current=`expr $number_major + $number_minor`
age="$number_minor"
revision="$number_revision"
@@ -3200,9 +3267,10 @@ EOF
age="0"
;;
irix|nonstopux)
- current=`expr $number_major + $number_minor - 1`
+ current=`expr $number_major + $number_minor`
age="$number_minor"
revision="$number_minor"
+ lt_irix_increment=no
;;
*)
$echo "$modename: unknown library version type \`$version_type'" 1>&2
@@ -3266,7 +3334,8 @@ EOF
versuffix="$major.$age.$revision"
# Darwin ld doesn't like 0 for these options...
minor_current=`expr $current + 1`
- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
;;
freebsd-aout)
@@ -3280,8 +3349,11 @@ EOF
;;
irix | nonstopux)
- major=`expr $current - $age + 1`
-
+ if test "X$lt_irix_increment" = "Xno"; then
+ major=`expr $current - $age`
+ else
+ major=`expr $current - $age + 1`
+ fi
case $version_type in
nonstopux) verstring_prefix=nonstopux ;;
*) verstring_prefix=sgi ;;
@@ -3418,11 +3490,11 @@ EOF
fi
# Eliminate all temporary directories.
- for path in $notinst_path; do
- lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
- deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
- dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
- done
+ #for path in $notinst_path; do
+ # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+ # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+ # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+ #done
if test -n "$xrpath"; then
# If the user specified any rpath flags, then add them.
@@ -3523,13 +3595,12 @@ EOF
int main() { return 0; }
EOF
$rm conftest
- $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
- if test "$?" -eq 0 ; then
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
ldd_output=`ldd conftest`
for i in $deplibs; do
name=`expr $i : '-l\(.*\)'`
# If $name is empty we are operating on a -L argument.
- if test "$name" != "" && test "$name" -ne "0"; then
+ if test "$name" != "" && test "$name" != "0"; then
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
*" $i "*)
@@ -3568,9 +3639,7 @@ EOF
# If $name is empty we are operating on a -L argument.
if test "$name" != "" && test "$name" != "0"; then
$rm conftest
- $LTCC $LTCFLAGS -o conftest conftest.c $i
- # Did it work?
- if test "$?" -eq 0 ; then
+ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
ldd_output=`ldd conftest`
if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
case " $predeps $postdeps " in
@@ -3602,7 +3671,7 @@ EOF
droppeddeps=yes
$echo
$echo "*** Warning! Library $i is needed by this library but I was not able to"
- $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** make it link in! You will probably need to install it or some"
$echo "*** library that it depends on before this library will be fully"
$echo "*** functional. Installing it before continuing would be even better."
fi
@@ -3888,7 +3957,10 @@ EOF
test -n "$hardcode_libdirs"; then
libdir="$hardcode_libdirs"
if test -n "$hardcode_libdir_flag_spec_ld"; then
- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
+ case $archive_cmds in
+ *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
+ *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
+ esac
else
eval dep_rpath=\"$hardcode_libdir_flag_spec\"
fi
@@ -4198,9 +4270,10 @@ EOF
;;
obj)
- if test -n "$deplibs"; then
- $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
- fi
+ case " $deplibs" in
+ *\ -l* | *\ -L*)
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 ;;
+ esac
if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
$echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
@@ -4247,12 +4320,14 @@ EOF
reload_conv_objs=
gentop=
# reload_cmds runs $LD directly, so let us get rid of
- # -Wl from whole_archive_flag_spec
+ # -Wl from whole_archive_flag_spec and hope we can get by with
+ # turning comma into space..
wl=
if test -n "$convenience"; then
if test -n "$whole_archive_flag_spec"; then
- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
+ reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
else
gentop="$output_objdir/${obj}x"
generated="$generated $gentop"
@@ -4700,16 +4775,16 @@ static const void *lt_preloaded_setup() {
case $host in
*cygwin* | *mingw* )
if test -f "$output_objdir/${outputname}.def" ; then
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
else
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
fi
;;
* )
- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
;;
esac
;;
@@ -4724,13 +4799,13 @@ static const void *lt_preloaded_setup() {
# really was required.
# Nullify the symbol file.
- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
fi
if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
# Replace the output file specification.
- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
link_command="$compile_command$compile_rpath"
# We have no uninstalled library dependencies, so finalize right now.
@@ -4817,7 +4892,7 @@ static const void *lt_preloaded_setup() {
if test "$fast_install" != no; then
link_command="$finalize_var$compile_command$finalize_rpath"
if test "$fast_install" = yes; then
- relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
else
# fast_install is set to needless
relink_command=
@@ -4854,7 +4929,7 @@ static const void *lt_preloaded_setup() {
fi
done
relink_command="(cd `pwd`; $relink_command)"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
fi
# Quote $echo for shipping.
@@ -5261,6 +5336,20 @@ EOF
Xsed='${SED} -e 1s/^X//'
sed_quote_subst='$sed_quote_subst'
+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '\${1+\"\$@\"}'='\"\$@\"'
+ setopt NO_GLOB_SUBST
+else
+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
+fi
+BIN_SH=xpg4; export BIN_SH # for Tru64
+DUALCASE=1; export DUALCASE # for MKS sh
+
# The HP-UX ksh and POSIX shell print the target directory to stdout
# if CDPATH is set.
(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
@@ -5403,7 +5492,7 @@ else
;;
esac
$echo >> $output "\
- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
+ \$echo \"\$0: cannot exec \$program \$*\"
exit $EXIT_FAILURE
fi
else
@@ -5589,7 +5678,7 @@ fi\
done
# Quote the link command for shipping.
relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
if test "$hardcode_automatic" = yes ; then
relink_command=
fi
@@ -5934,9 +6023,9 @@ relink_command=\"$relink_command\""
if test -n "$inst_prefix_dir"; then
# Stick the inst_prefix_dir data into the link command.
- relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
else
- relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
fi
$echo "$modename: warning: relinking \`$file'" 1>&2
@@ -6145,7 +6234,7 @@ relink_command=\"$relink_command\""
file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
outputname="$tmpdir/$file"
# Replace the output file specification.
- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
$show "$relink_command"
if $run eval "$relink_command"; then :
@@ -6356,8 +6445,10 @@ relink_command=\"$relink_command\""
if test -f "$dir/$objdir/$dlname"; then
dir="$dir/$objdir"
else
- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
- exit $EXIT_FAILURE
+ if test ! -f "$dir/$dlname"; then
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
fi
;;
@@ -6421,12 +6512,12 @@ relink_command=\"$relink_command\""
fi
# Restore saved environment variables
- if test "${save_LC_ALL+set}" = set; then
- LC_ALL="$save_LC_ALL"; export LC_ALL
- fi
- if test "${save_LANG+set}" = set; then
- LANG="$save_LANG"; export LANG
- fi
+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
+ do
+ eval "if test \"\${save_$lt_var+set}\" = set; then
+ $lt_var=\$save_$lt_var; export $lt_var
+ fi"
+ done
# Now prepare to actually exec the command.
exec_cmd="\$cmd$args"
@@ -6783,9 +6874,9 @@ The following components of LINK-COMMAND are treated specially:
-dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
-export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
-export-symbols SYMFILE
- try to export only the symbols listed in SYMFILE
+ try to export only the symbols listed in SYMFILE
-export-symbols-regex REGEX
- try to export only the symbols matching REGEX
+ try to export only the symbols matching REGEX
-LLIBDIR search LIBDIR for required installed libraries
-lNAME OUTPUT-FILE requires the installed library libNAME
-module build a library that can dlopened
@@ -6799,9 +6890,11 @@ The following components of LINK-COMMAND are treated specially:
-release RELEASE specify package release information
-rpath LIBDIR the created library will eventually be installed in LIBDIR
-R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
- -static do not do any dynamic linking of libtool libraries
+ -static do not do any dynamic linking of uninstalled libtool libraries
+ -static-libtool-libs
+ do not do any dynamic linking of libtool libraries
-version-info CURRENT[:REVISION[:AGE]]
- specify library version info [each variable defaults to 0]
+ specify library version info [each variable defaults to 0]
All other options (arguments beginning with \`-') are ignored.
diff --git a/m4/Makefile.in b/m4/Makefile.in
index d994f26..15fc6b6 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -59,6 +59,7 @@ DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -83,6 +84,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -92,6 +94,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
diff --git a/man/Makefile.in b/man/Makefile.in
index e3a1f39..fdea7a7 100644
--- a/man/Makefile.in
+++ b/man/Makefile.in
@@ -59,6 +59,7 @@ DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -83,6 +84,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -92,6 +94,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
diff --git a/man/httrack.1 b/man/httrack.1
index af38725..076ff19 100644
--- a/man/httrack.1
+++ b/man/httrack.1
@@ -1,182 +1,182 @@
.\" Process this file with
.\" groff -man -Tascii httrack.1
.\"
-.TH httrack 1 "Nov 2007" "httrack website copier"
+.TH httrack 1 "HTTrack version 3.43-9 (compiled Jan 4 2010)" "httrack website copier"
.SH NAME
httrack \- offline browser : copy websites to a local directory
.SH SYNOPSIS
-.B httrack [ url ]... [ -filter ]... [ +filter ]... [
-.B-O, --path
+.B httrack [ url ]... [ \-filter ]... [ +filter ]... [
+.B \-O, \-\-path
] [
-.B -%O, --chroot
+.B \-%O, \-\-chroot
] [
-.B -w, --mirror
+.B \-w, \-\-mirror
] [
-.B -W, --mirror-wizard
+.B \-W, \-\-mirror\-wizard
] [
-.B -g, --get-files
+.B \-g, \-\-get\-files
] [
-.B -i, --continue
+.B \-i, \-\-continue
] [
-.B -Y, --mirrorlinks
+.B \-Y, \-\-mirrorlinks
] [
-.B -P, --proxy
+.B \-P, \-\-proxy
] [
-.B -%f, --httpproxy-ftp[=N]
+.B \-%f, \-\-httpproxy\-ftp[=N]
] [
-.B -%b, --bind
+.B \-%b, \-\-bind
] [
-.B -rN, --depth[=N]
+.B \-rN, \-\-depth[=N]
] [
-.B -%eN, --ext-depth[=N]
+.B \-%eN, \-\-ext\-depth[=N]
] [
-.B -mN, --max-files[=N]
+.B \-mN, \-\-max\-files[=N]
] [
-.B -MN, --max-size[=N]
+.B \-MN, \-\-max\-size[=N]
] [
-.B -EN, --max-time[=N]
+.B \-EN, \-\-max\-time[=N]
] [
-.B -AN, --max-rate[=N]
+.B \-AN, \-\-max\-rate[=N]
] [
-.B -%cN, --connection-per-second[=N]
+.B \-%cN, \-\-connection\-per\-second[=N]
] [
-.B -GN, --max-pause[=N]
+.B \-GN, \-\-max\-pause[=N]
] [
-.B -%mN, --max-mms-time[=N]
+.B \-%mN, \-\-max\-mms\-time[=N]
] [
-.B -cN, --sockets[=N]
+.B \-cN, \-\-sockets[=N]
] [
-.B -TN, --timeout
+.B \-TN, \-\-timeout
] [
-.B -RN, --retries[=N]
+.B \-RN, \-\-retries[=N]
] [
-.B -JN, --min-rate[=N]
+.B \-JN, \-\-min\-rate[=N]
] [
-.B -HN, --host-control[=N]
+.B \-HN, \-\-host\-control[=N]
] [
-.B -%P, --extended-parsing[=N]
+.B \-%P, \-\-extended\-parsing[=N]
] [
-.B -n, --near
+.B \-n, \-\-near
] [
-.B -t, --test
+.B \-t, \-\-test
] [
-.B -%L, --list
+.B \-%L, \-\-list
] [
-.B -%S, --urllist
+.B \-%S, \-\-urllist
] [
-.B -NN, --structure[=N]
+.B \-NN, \-\-structure[=N]
] [
-.B -%D, --cached-delayed-type-check
+.B \-%D, \-\-cached\-delayed\-type\-check
] [
-.B -%M, --mime-html
+.B \-%M, \-\-mime\-html
] [
-.B -LN, --long-names[=N]
+.B \-LN, \-\-long\-names[=N]
] [
-.B -KN, --keep-links[=N]
+.B \-KN, \-\-keep\-links[=N]
] [
-.B -x, --replace-external
+.B \-x, \-\-replace\-external
] [
-.B -%x, --disable-passwords
+.B \-%x, \-\-disable\-passwords
] [
-.B -%q, --include-query-string
+.B \-%q, \-\-include\-query\-string
] [
-.B -o, --generate-errors
+.B \-o, \-\-generate\-errors
] [
-.B -X, --purge-old[=N]
+.B \-X, \-\-purge\-old[=N]
] [
-.B -%p, --preserve
+.B \-%p, \-\-preserve
] [
-.B -bN, --cookies[=N]
+.B \-bN, \-\-cookies[=N]
] [
-.B -u, --check-type[=N]
+.B \-u, \-\-check\-type[=N]
] [
-.B -j, --parse-java[=N]
+.B \-j, \-\-parse\-java[=N]
] [
-.B -sN, --robots[=N]
+.B \-sN, \-\-robots[=N]
] [
-.B -%h, --http-10
+.B \-%h, \-\-http\-10
] [
-.B -%k, --keep-alive
+.B \-%k, \-\-keep\-alive
] [
-.B -%B, --tolerant
+.B \-%B, \-\-tolerant
] [
-.B -%s, --updatehack
+.B \-%s, \-\-updatehack
] [
-.B -%u, --urlhack
+.B \-%u, \-\-urlhack
] [
-.B -%A, --assume
+.B \-%A, \-\-assume
] [
-.B -@iN, --protocol[=N]
+.B \-@iN, \-\-protocol[=N]
] [
-.B -%w, --disable-module
+.B \-%w, \-\-disable\-module
] [
-.B -F, --user-agent
+.B \-F, \-\-user\-agent
] [
-.B -%R, --referer
+.B \-%R, \-\-referer
] [
-.B -%E, --from
+.B \-%E, \-\-from
] [
-.B -%F, --footer
+.B \-%F, \-\-footer
] [
-.B -%l, --language
+.B \-%l, \-\-language
] [
-.B -C, --cache[=N]
+.B \-C, \-\-cache[=N]
] [
-.B -k, --store-all-in-cache
+.B \-k, \-\-store\-all\-in\-cache
] [
-.B -%n, --do-not-recatch
+.B \-%n, \-\-do\-not\-recatch
] [
-.B -%v, --display
+.B \-%v, \-\-display
] [
-.B -Q, --do-not-log
+.B \-Q, \-\-do\-not\-log
] [
-.B -q, --quiet
+.B \-q, \-\-quiet
] [
-.B -z, --extra-log
+.B \-z, \-\-extra\-log
] [
-.B -Z, --debug-log
+.B \-Z, \-\-debug\-log
] [
-.B -v, --verbose
+.B \-v, \-\-verbose
] [
-.B -f, --file-log
+.B \-f, \-\-file\-log
] [
-.B -f2, --single-log
+.B \-f2, \-\-single\-log
] [
-.B -I, --index
+.B \-I, \-\-index
] [
-.B -%i, --build-top-index
+.B \-%i, \-\-build\-top\-index
] [
-.B -%I, --search-index
+.B \-%I, \-\-search\-index
] [
-.B -pN, --priority[=N]
+.B \-pN, \-\-priority[=N]
] [
-.B -S, --stay-on-same-dir
+.B \-S, \-\-stay\-on\-same\-dir
] [
-.B -D, --can-go-down
+.B \-D, \-\-can\-go\-down
] [
-.B -U, --can-go-up
+.B \-U, \-\-can\-go\-up
] [
-.B -B, --can-go-up-and-down
+.B \-B, \-\-can\-go\-up\-and\-down
] [
-.B -a, --stay-on-same-address
+.B \-a, \-\-stay\-on\-same\-address
] [
-.B -d, --stay-on-same-domain
+.B \-d, \-\-stay\-on\-same\-domain
] [
-.B -l, --stay-on-same-tld
+.B \-l, \-\-stay\-on\-same\-tld
] [
-.B -e, --go-everywhere
+.B \-e, \-\-go\-everywhere
] [
-.B -%H, --debug-headers
+.B \-%H, \-\-debug\-headers
] [
-.B -%!, --disable-security-limits
+.B \-%!, \-\-disable\-security\-limits
] [
-.B -V, --userdef-cmd
+.B \-V, \-\-userdef\-cmd
] [
-.B -%U, --user
+.B \-%U, \-\-user
] [
-.B -%W, --callback
+.B \-%W, \-\-callback
] [
-.B -K, --keep-links[=N]
+.B \-K, \-\-keep\-links[=N]
] [
.B
.SH DESCRIPTION
@@ -187,331 +187,331 @@ allows you to download a World Wide Web site from the Internet to a local direct
.B httrack www.someweb.com/bob/
mirror site www.someweb.com/bob/ and only this site
.TP
-.B httrack www.someweb.com/bob/ www.anothertest.com/mike/ +*.com/*.jpg -mime:application/*
+.B httrack www.someweb.com/bob/ www.anothertest.com/mike/ +*.com/*.jpg \-mime:application/*
mirror the two sites together (with shared links) and accept any .jpg files on .com sites
.TP
-.B httrack www.someweb.com/bob/bobby.html +* -r6
-means get all files starting from bobby.html, with 6 link-depth, and possibility of going everywhere on the web
+.B httrack www.someweb.com/bob/bobby.html +* \-r6
+means get all files starting from bobby.html, with 6 link\-depth, and possibility of going everywhere on the web
.TP
-.B httrack www.someweb.com/bob/bobby.html --spider -P proxy.myhost.com:8080
+.B httrack www.someweb.com/bob/bobby.html \-\-spider \-P proxy.myhost.com:8080
runs the spider on www.someweb.com/bob/bobby.html using a proxy
.TP
-.B httrack --update
+.B httrack \-\-update
updates a mirror in the current folder
.TP
.B httrack
will bring you to the interactive mode
.TP
-.B httrack --continue
+.B httrack \-\-continue
continues a mirror in the current folder
.SH OPTIONS
.SS General options:
-.IP -O
-path for mirror/logfiles+cache (-O path
+.IP \-O
+path for mirror/logfiles+cache (\-O path
mirror[,path
cache
and
-logfiles]) (--path <param>)
-.IP -%O
-chroot path to, must be r00t (-%O root
-path) (--chroot <param>)
+logfiles]) (\-\-path <param>)
+.IP \-%O
+chroot path to, must be r00t (\-%O root
+path) (\-\-chroot <param>)
.SS Action options:
-.IP -w
-*mirror web sites (--mirror)
-.IP -W
-mirror web sites, semi-automatic (asks questions) (--mirror-wizard)
-.IP -g
-just get files (saved in the current directory) (--get-files)
-.IP -i
-continue an interrupted mirror using the cache (--continue)
-.IP -Y
-mirror ALL links located in the first level pages (mirror links) (--mirrorlinks)
+.IP \-w
+*mirror web sites (\-\-mirror)
+.IP \-W
+mirror web sites, semi\-automatic (asks questions) (\-\-mirror\-wizard)
+.IP \-g
+just get files (saved in the current directory) (\-\-get\-files)
+.IP \-i
+continue an interrupted mirror using the cache (\-\-continue)
+.IP \-Y
+mirror ALL links located in the first level pages (mirror links) (\-\-mirrorlinks)
.SS Proxy options:
-.IP -P
-proxy use (-P proxy:port or -P user:pass@proxy:port) (--proxy <param>)
-.IP -%f
-*use proxy for ftp (f0 don t use) (--httpproxy-ftp[=N])
-.IP -%b
-use this local hostname to make/send requests (-%b hostname) (--bind <param>)
+.IP \-P
+proxy use (\-P proxy:port or \-P user:pass@proxy:port) (\-\-proxy <param>)
+.IP \-%f
+*use proxy for ftp (f0 don t use) (\-\-httpproxy\-ftp[=N])
+.IP \-%b
+use this local hostname to make/send requests (\-%b hostname) (\-\-bind <param>)
.SS Limits options:
-.IP -rN
-set the mirror depth to N (* r9999) (--depth[=N])
-.IP -%eN
-set the external links depth to N (* %e0) (--ext-depth[=N])
-.IP -mN
-maximum file length for a non-html file (--max-files[=N])
-.IP -mN,N2
+.IP \-rN
+set the mirror depth to N (* r9999) (\-\-depth[=N])
+.IP \-%eN
+set the external links depth to N (* %e0) (\-\-ext\-depth[=N])
+.IP \-mN
+maximum file length for a non\-html file (\-\-max\-files[=N])
+.IP \-mN,N2
maximum file length for non html (N) and html (N2)
-.IP -MN
-maximum overall size that can be uploaded/scanned (--max-size[=N])
-.IP -EN
-maximum mirror time in seconds (60=1 minute, 3600=1 hour) (--max-time[=N])
-.IP -AN
-maximum transfer rate in bytes/seconds (1000=1KB/s max) (--max-rate[=N])
-.IP -%cN
-maximum number of connections/seconds (*%c10) (--connection-per-second[=N])
-.IP -GN
-pause transfer if N bytes reached, and wait until lock file is deleted (--max-pause[=N])
-.IP -%mN
-maximum mms stream download time in seconds (60=1 minute, 3600=1 hour) (--max-mms-time[=N])
+.IP \-MN
+maximum overall size that can be uploaded/scanned (\-\-max\-size[=N])
+.IP \-EN
+maximum mirror time in seconds (60=1 minute, 3600=1 hour) (\-\-max\-time[=N])
+.IP \-AN
+maximum transfer rate in bytes/seconds (1000=1KB/s max) (\-\-max\-rate[=N])
+.IP \-%cN
+maximum number of connections/seconds (*%c10) (\-\-connection\-per\-second[=N])
+.IP \-GN
+pause transfer if N bytes reached, and wait until lock file is deleted (\-\-max\-pause[=N])
+.IP \-%mN
+maximum mms stream download time in seconds (60=1 minute, 3600=1 hour) (\-\-max\-mms\-time[=N])
.SS Flow control:
-.IP -cN
-number of multiple connections (*c8) (--sockets[=N])
-.IP -TN
-timeout, number of seconds after a non-responding link is shutdown (--timeout)
-.IP -RN
-number of retries, in case of timeout or non-fatal errors (*R1) (--retries[=N])
-.IP -JN
-traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link (--min-rate[=N])
-.IP -HN
-host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow (--host-control[=N])
+.IP \-cN
+number of multiple connections (*c8) (\-\-sockets[=N])
+.IP \-TN
+timeout, number of seconds after a non\-responding link is shutdown (\-\-timeout)
+.IP \-RN
+number of retries, in case of timeout or non\-fatal errors (*R1) (\-\-retries[=N])
+.IP \-JN
+traffic jam control, minimum transfert rate (bytes/seconds) tolerated for a link (\-\-min\-rate[=N])
+.IP \-HN
+host is abandonned if: 0=never, 1=timeout, 2=slow, 3=timeout or slow (\-\-host\-control[=N])
.SS Links options:
-.IP -%P
-*extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don t use) (--extended-parsing[=N])
-.IP -n
-get non-html files near an html file (ex: an image located outside) (--near)
-.IP -t
-test all URLs (even forbidden ones) (--test)
-.IP -%L
-<file> add all URL located in this text file (one URL per line) (--list <param>)
-.IP -%S
-<file> add all scan rules located in this text file (one scan rule per line) (--urllist <param>)
+.IP \-%P
+*extended parsing, attempt to parse all links, even in unknown tags or Javascript (%P0 don t use) (\-\-extended\-parsing[=N])
+.IP \-n
+get non\-html files near an html file (ex: an image located outside) (\-\-near)
+.IP \-t
+test all URLs (even forbidden ones) (\-\-test)
+.IP \-%L
+<file> add all URL located in this text file (one URL per line) (\-\-list <param>)
+.IP \-%S
+<file> add all scan rules located in this text file (one scan rule per line) (\-\-urllist <param>)
.SS Build options:
-.IP -NN
-structure type (0 *original structure, 1+: see below) (--structure[=N])
-.IP -or
-user defined structure (-N "%h%p/%n%q.%t")
-.IP -%N
+.IP \-NN
+structure type (0 *original structure, 1+: see below) (\-\-structure[=N])
+.IP \-or
+user defined structure (\-N "%h%p/%n%q.%t")
+.IP \-%N
delayed type check, don t make any link test but wait for files download to start instead (experimental) (%N0 don t use, %N1 use for unknown extensions, * %N2 always use)
-.IP -%D
-cached delayed type check, don t wait for remote type during updates, to speedup them (%D0 wait, * %D1 don t wait) (--cached-delayed-type-check)
-.IP -%M
-generate a RFC MIME-encapsulated full-archive (.mht) (--mime-html)
-.IP -LN
-long names (L1 *long names / L0 8-3 conversion / L2 ISO9660 compatible) (--long-names[=N])
-.IP -KN
-keep original links (e.g. http://www.adr/link) (K0 *relative link, K absolute links, K4 original links, K3 absolute URI links) (--keep-links[=N])
-.IP -x
-replace external html links by error pages (--replace-external)
-.IP -%x
-do not include any password for external password protected websites (%x0 include) (--disable-passwords)
-.IP -%q
-*include query string for local files (useless, for information purpose only) (%q0 don t include) (--include-query-string)
-.IP -o
-*generate output html file in case of error (404..) (o0 don t generate) (--generate-errors)
-.IP -X
-*purge old files after update (X0 keep delete) (--purge-old[=N])
-.IP -%p
-preserve html files as is (identical to -K4 -%F "" ) (--preserve)
+.IP \-%D
+cached delayed type check, don t wait for remote type during updates, to speedup them (%D0 wait, * %D1 don t wait) (\-\-cached\-delayed\-type\-check)
+.IP \-%M
+generate a RFC MIME\-encapsulated full\-archive (.mht) (\-\-mime\-html)
+.IP \-LN
+long names (L1 *long names / L0 8\-3 conversion / L2 ISO9660 compatible) (\-\-long\-names[=N])
+.IP \-KN
+keep original links (e.g. http://www.adr/link) (K0 *relative link, K absolute links, K4 original links, K3 absolute URI links) (\-\-keep\-links[=N])
+.IP \-x
+replace external html links by error pages (\-\-replace\-external)
+.IP \-%x
+do not include any password for external password protected websites (%x0 include) (\-\-disable\-passwords)
+.IP \-%q
+*include query string for local files (useless, for information purpose only) (%q0 don t include) (\-\-include\-query\-string)
+.IP \-o
+*generate output html file in case of error (404..) (o0 don t generate) (\-\-generate\-errors)
+.IP \-X
+*purge old files after update (X0 keep delete) (\-\-purge\-old[=N])
+.IP \-%p
+preserve html files as is (identical to \-K4 \-%F "" ) (\-\-preserve)
.SS Spider options:
-.IP -bN
-accept cookies in cookies.txt (0=do not accept,* 1=accept) (--cookies[=N])
-.IP -u
-check document type if unknown (cgi,asp..) (u0 don t check, * u1 check but /, u2 check always) (--check-type[=N])
-.IP -j
-*parse Java Classes (j0 don t parse, bitmask: |1 parse default, |2 don t parse .class |4 don t parse .js |8 don t be aggressive) (--parse-java[=N])
-.IP -sN
-follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always, 3=always (even strict rules)) (--robots[=N])
-.IP -%h
-force HTTP/1.0 requests (reduce update features, only for old servers or proxies) (--http-10)
-.IP -%k
-use keep-alive if possible, greately reducing latency for small files and test requests (%k0 don t use) (--keep-alive)
-.IP -%B
-tolerant requests (accept bogus responses on some servers, but not standard!) (--tolerant)
-.IP -%s
-update hacks: various hacks to limit re-transfers when updating (identical size, bogus response..) (--updatehack)
-.IP -%u
-url hacks: various hacks to limit duplicate URLs (strip //, www.foo.com==foo.com..) (--urlhack)
-.IP -%A
-assume that a type (cgi,asp..) is always linked with a mime type (-%A php3,cgi=text/html;dat,bin=application/x-zip) (--assume <param>)
-.IP -can
-also be used to force a specific file type: --assume foo.cgi=text/html
-.IP -@iN
-internet protocol (0=both ipv6+ipv4, 4=ipv4 only, 6=ipv6 only) (--protocol[=N])
-.IP -%w
-disable a specific external mime module (-%w htsswf -%w htsjava) (--disable-module <param>)
+.IP \-bN
+accept cookies in cookies.txt (0=do not accept,* 1=accept) (\-\-cookies[=N])
+.IP \-u
+check document type if unknown (cgi,asp..) (u0 don t check, * u1 check but /, u2 check always) (\-\-check\-type[=N])
+.IP \-j
+*parse Java Classes (j0 don t parse, bitmask: |1 parse default, |2 don t parse .class |4 don t parse .js |8 don t be aggressive) (\-\-parse\-java[=N])
+.IP \-sN
+follow robots.txt and meta robots tags (0=never,1=sometimes,* 2=always, 3=always (even strict rules)) (\-\-robots[=N])
+.IP \-%h
+force HTTP/1.0 requests (reduce update features, only for old servers or proxies) (\-\-http\-10)
+.IP \-%k
+use keep\-alive if possible, greately reducing latency for small files and test requests (%k0 don t use) (\-\-keep\-alive)
+.IP \-%B
+tolerant requests (accept bogus responses on some servers, but not standard!) (\-\-tolerant)
+.IP \-%s
+update hacks: various hacks to limit re\-transfers when updating (identical size, bogus response..) (\-\-updatehack)
+.IP \-%u
+url hacks: various hacks to limit duplicate URLs (strip //, www.foo.com==foo.com..) (\-\-urlhack)
+.IP \-%A
+assume that a type (cgi,asp..) is always linked with a mime type (\-%A php3,cgi=text/html;dat,bin=application/x\-zip) (\-\-assume <param>)
+.IP \-can
+also be used to force a specific file type: \-\-assume foo.cgi=text/html
+.IP \-@iN
+internet protocol (0=both ipv6+ipv4, 4=ipv4 only, 6=ipv6 only) (\-\-protocol[=N])
+.IP \-%w
+disable a specific external mime module (\-%w htsswf \-%w htsjava) (\-\-disable\-module <param>)
.SS Browser ID:
-.IP -F
-user-agent field sent in HTTP headers (-F "user-agent name") (--user-agent <param>)
-.IP -%R
-default referer field sent in HTTP headers (--referer <param>)
-.IP -%E
-from email address sent in HTTP headers (--from <param>)
-.IP -%F
-footer string in Html code (-%F "Mirrored [from host %s [file %s [at %s]]]" (--footer <param>)
-.IP -%l
-preffered language (-%l "fr, en, jp, *" (--language <param>)
+.IP \-F
+user\-agent field sent in HTTP headers (\-F "user\-agent name") (\-\-user\-agent <param>)
+.IP \-%R
+default referer field sent in HTTP headers (\-\-referer <param>)
+.IP \-%E
+from email address sent in HTTP headers (\-\-from <param>)
+.IP \-%F
+footer string in Html code (\-%F "Mirrored [from host %s [file %s [at %s]]]" (\-\-footer <param>)
+.IP \-%l
+preffered language (\-%l "fr, en, jp, *" (\-\-language <param>)
.SS Log, index, cache
-.IP -C
-create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before) (--cache[=N])
-.IP -k
-store all files in cache (not useful if files on disk) (--store-all-in-cache)
-.IP -%n
-do not re-download locally erased files (--do-not-recatch)
-.IP -%v
-display on screen filenames downloaded (in realtime) - * %v1 short version - %v2 full animation (--display)
-.IP -Q
-no log - quiet mode (--do-not-log)
-.IP -q
-no questions - quiet mode (--quiet)
-.IP -z
-log - extra infos (--extra-log)
-.IP -Z
-log - debug (--debug-log)
-.IP -v
-log on screen (--verbose)
-.IP -f
-*log in files (--file-log)
-.IP -f2
-one single log file (--single-log)
-.IP -I
-*make an index (I0 don t make) (--index)
-.IP -%i
-make a top index for a project folder (* %i0 don t make) (--build-top-index)
-.IP -%I
-make an searchable index for this mirror (* %I0 don t make) (--search-index)
+.IP \-C
+create/use a cache for updates and retries (C0 no cache,C1 cache is prioritary,* C2 test update before) (\-\-cache[=N])
+.IP \-k
+store all files in cache (not useful if files on disk) (\-\-store\-all\-in\-cache)
+.IP \-%n
+do not re\-download locally erased files (\-\-do\-not\-recatch)
+.IP \-%v
+display on screen filenames downloaded (in realtime) \- * %v1 short version \- %v2 full animation (\-\-display)
+.IP \-Q
+no log \- quiet mode (\-\-do\-not\-log)
+.IP \-q
+no questions \- quiet mode (\-\-quiet)
+.IP \-z
+log \- extra infos (\-\-extra\-log)
+.IP \-Z
+log \- debug (\-\-debug\-log)
+.IP \-v
+log on screen (\-\-verbose)
+.IP \-f
+*log in files (\-\-file\-log)
+.IP \-f2
+one single log file (\-\-single\-log)
+.IP \-I
+*make an index (I0 don t make) (\-\-index)
+.IP \-%i
+make a top index for a project folder (* %i0 don t make) (\-\-build\-top\-index)
+.IP \-%I
+make an searchable index for this mirror (* %I0 don t make) (\-\-search\-index)
.SS Expert options:
-.IP -pN
-priority mode: (* p3) (--priority[=N])
-.IP -p0
+.IP \-pN
+priority mode: (* p3) (\-\-priority[=N])
+.IP \-p0
just scan, don t save anything (for checking links)
-.IP -p1
+.IP \-p1
save only html files
-.IP -p2
+.IP \-p2
save only non html files
-.IP -*p3
+.IP \-*p3
save all files
-.IP -p7
+.IP \-p7
get html files before, then treat other files
-.IP -S
-stay on the same directory (--stay-on-same-dir)
-.IP -D
-*can only go down into subdirs (--can-go-down)
-.IP -U
-can only go to upper directories (--can-go-up)
-.IP -B
-can both go up&down into the directory structure (--can-go-up-and-down)
-.IP -a
-*stay on the same address (--stay-on-same-address)
-.IP -d
-stay on the same principal domain (--stay-on-same-domain)
-.IP -l
-stay on the same TLD (eg: .com) (--stay-on-same-tld)
-.IP -e
-go everywhere on the web (--go-everywhere)
-.IP -%H
-debug HTTP headers in logfile (--debug-headers)
+.IP \-S
+stay on the same directory (\-\-stay\-on\-same\-dir)
+.IP \-D
+*can only go down into subdirs (\-\-can\-go\-down)
+.IP \-U
+can only go to upper directories (\-\-can\-go\-up)
+.IP \-B
+can both go up&down into the directory structure (\-\-can\-go\-up\-and\-down)
+.IP \-a
+*stay on the same address (\-\-stay\-on\-same\-address)
+.IP \-d
+stay on the same principal domain (\-\-stay\-on\-same\-domain)
+.IP \-l
+stay on the same TLD (eg: .com) (\-\-stay\-on\-same\-tld)
+.IP \-e
+go everywhere on the web (\-\-go\-everywhere)
+.IP \-%H
+debug HTTP headers in logfile (\-\-debug\-headers)
.SS Guru options: (do NOT use if possible)
-.IP -#X
-*use optimized engine (limited memory boundary checks) (--fast-engine)
-.IP -#0
-filter test (-#0 *.gif www.bar.com/foo.gif ) (--debug-testfilters <param>)
-.IP -#1
-simplify test (-#1 ./foo/bar/../foobar)
-.IP -#2
-type test (-#2 /foo/bar.php)
-.IP -#C
-cache list (-#C *.com/spider*.gif (--debug-cache <param>)
-.IP -#R
-cache repair (damaged cache) (--repair-cache)
-.IP -#d
-debug parser (--debug-parsing)
-.IP -#E
-extract new.zip cache meta-data in meta.zip
-.IP -#f
-always flush log files (--advanced-flushlogs)
-.IP -#FN
-maximum number of filters (--advanced-maxfilters[=N])
-.IP -#h
-version info (--version)
-.IP -#K
-scan stdin (debug) (--debug-scanstdin)
-.IP -#L
-maximum number of links (-#L1000000) (--advanced-maxlinks)
-.IP -#p
-display ugly progress information (--advanced-progressinfo)
-.IP -#P
-catch URL (--catch-url)
-.IP -#R
-old FTP routines (debug) (--repair-cache)
-.IP -#T
-generate transfer ops. log every minutes (--debug-xfrstats)
-.IP -#u
-wait time (--advanced-wait)
-.IP -#Z
-generate transfer rate statictics every minutes (--debug-ratestats)
-.IP -#!
-execute a shell command (-#! "echo hello") (--exec <param>)
+.IP \-#X
+*use optimized engine (limited memory boundary checks) (\-\-fast\-engine)
+.IP \-#0
+filter test (\-#0 *.gif www.bar.com/foo.gif ) (\-\-debug\-testfilters <param>)
+.IP \-#1
+simplify test (\-#1 ./foo/bar/../foobar)
+.IP \-#2
+type test (\-#2 /foo/bar.php)
+.IP \-#C
+cache list (\-#C *.com/spider*.gif (\-\-debug\-cache <param>)
+.IP \-#R
+cache repair (damaged cache) (\-\-repair\-cache)
+.IP \-#d
+debug parser (\-\-debug\-parsing)
+.IP \-#E
+extract new.zip cache meta\-data in meta.zip
+.IP \-#f
+always flush log files (\-\-advanced\-flushlogs)
+.IP \-#FN
+maximum number of filters (\-\-advanced\-maxfilters[=N])
+.IP \-#h
+version info (\-\-version)
+.IP \-#K
+scan stdin (debug) (\-\-debug\-scanstdin)
+.IP \-#L
+maximum number of links (\-#L1000000) (\-\-advanced\-maxlinks)
+.IP \-#p
+display ugly progress information (\-\-advanced\-progressinfo)
+.IP \-#P
+catch URL (\-\-catch\-url)
+.IP \-#R
+old FTP routines (debug) (\-\-repair\-cache)
+.IP \-#T
+generate transfer ops. log every minutes (\-\-debug\-xfrstats)
+.IP \-#u
+wait time (\-\-advanced\-wait)
+.IP \-#Z
+generate transfer rate statictics every minutes (\-\-debug\-ratestats)
+.IP \-#!
+execute a shell command (\-#! "echo hello") (\-\-exec <param>)
.SS Dangerous options: (do NOT use unless you exactly know what you are doing)
-.IP -%!
-bypass built-in security limits aimed to avoid bandwith abuses (bandwidth, simultaneous connections) (--disable-security-limits)
-.IP -IMPORTANT
+.IP \-%!
+bypass built\-in security limits aimed to avoid bandwith abuses (bandwidth, simultaneous connections) (\-\-disable\-security\-limits)
+.IP \-IMPORTANT
NOTE: DANGEROUS OPTION, ONLY SUITABLE FOR EXPERTS
-.IP -USE
+.IP \-USE
IT WITH EXTREME CARE
-.SS Command-line specific options:
-.IP -V
-execute system command after each files ($0 is the filename: -V "rm \$0") (--userdef-cmd <param>)
-.IP -%U
-run the engine with another id when called as root (-%U smith) (--user <param>)
-.IP -%W
-use an external library function as a wrapper (-%W myfoo.so[,myparameters]) (--callback <param>)
+.SS Command\-line specific options:
+.IP \-V
+execute system command after each files ($0 is the filename: \-V "rm \$0") (\-\-userdef\-cmd <param>)
+.IP \-%U
+run the engine with another id when called as root (\-%U smith) (\-\-user <param>)
+.IP \-%W
+use an external library function as a wrapper (\-%W myfoo.so[,myparameters]) (\-\-callback <param>)
.SS Details: Option N
-.IP -N0
-Site-structure (default)
-.IP -N1
+.IP \-N0
+Site\-structure (default)
+.IP \-N1
HTML in web/, images/other files in web/images/
-.IP -N2
+.IP \-N2
HTML in web/HTML, images/other in web/images
-.IP -N3
+.IP \-N3
HTML in web/, images/other in web/
-.IP -N4
+.IP \-N4
HTML in web/, images/other in web/xxx, where xxx is the file extension (all gif will be placed onto web/gif, for example)
-.IP -N5
+.IP \-N5
Images/other in web/xxx and HTML in web/HTML
-.IP -N99
+.IP \-N99
All files in web/, with random names (gadget !)
-.IP -N100
-Site-structure, without www.domain.xxx/
-.IP -N101
+.IP \-N100
+Site\-structure, without www.domain.xxx/
+.IP \-N101
Identical to N1 exept that "web" is replaced by the site s name
-.IP -N102
+.IP \-N102
Identical to N2 exept that "web" is replaced by the site s name
-.IP -N103
+.IP \-N103
Identical to N3 exept that "web" is replaced by the site s name
-.IP -N104
+.IP \-N104
Identical to N4 exept that "web" is replaced by the site s name
-.IP -N105
+.IP \-N105
Identical to N5 exept that "web" is replaced by the site s name
-.IP -N199
+.IP \-N199
Identical to N99 exept that "web" is replaced by the site s name
-.IP -N1001
+.IP \-N1001
Identical to N1 exept that there is no "web" directory
-.IP -N1002
+.IP \-N1002
Identical to N2 exept that there is no "web" directory
-.IP -N1003
+.IP \-N1003
Identical to N3 exept that there is no "web" directory (option set for g option)
-.IP -N1004
+.IP \-N1004
Identical to N4 exept that there is no "web" directory
-.IP -N1005
+.IP \-N1005
Identical to N5 exept that there is no "web" directory
-.IP -N1099
+.IP \-N1099
Identical to N99 exept that there is no "web" directory
-.SS Details: User-defined option N
+.SS Details: User\-defined option N
%n Name of file without file type (ex: image)
%N Name of file, including file type (ex: image.gif)
%t File type (ex: gif)
@@ -524,60 +524,60 @@ Identical to N99 exept that there is no "web" directory
%s? Short name version (ex: %sN)
%[param] param variable in query string
%[param:before:after:empty:notfound] advanced variable extraction
-.SS Details: User-defined option N and advanced variable extraction
+.SS Details: User\-defined option N and advanced variable extraction
%[param:before:after:empty:notfound]
-.IP -param
+.IP \-param
: parameter name
-.IP -before
+.IP \-before
: string to prepend if the parameter was found
-.IP -after
+.IP \-after
: string to append if the parameter was found
-.IP -notfound
+.IP \-notfound
: string replacement if the parameter could not be found
-.IP -empty
+.IP \-empty
: string replacement if the parameter was empty
-.IP -all
+.IP \-all
fields, except the first one (the parameter name), can be empty
.SS Details: Option K
-.IP -K0
-foo.cgi?q=45 -> foo4B54.html?q=45 (relative URI, default)
-.IP -K
--> http://www.foobar.com/folder/foo.cgi?q=45 (absolute URL) (--keep-links[=N])
-.IP -K4
--> foo.cgi?q=45 (original URL)
-.IP -K3
--> /folder/foo.cgi?q=45 (absolute URI)
+.IP \-K0
+foo.cgi?q=45 \-> foo4B54.html?q=45 (relative URI, default)
+.IP \-K
+\-> http://www.foobar.com/folder/foo.cgi?q=45 (absolute URL) (\-\-keep\-links[=N])
+.IP \-K4
+\-> foo.cgi?q=45 (original URL)
+.IP \-K3
+\-> /folder/foo.cgi?q=45 (absolute URI)
.SS Shortcuts:
-.IP --mirror
+.IP \-\-mirror
<URLs> *make a mirror of site(s) (default)
-.IP --get
- <URLs> get the files indicated, do not seek other URLs (-qg)
-.IP --list
- <text file> add all URL located in this text file (-%L)
-.IP --mirrorlinks
-<URLs> mirror all links in 1st level pages (-Y)
-.IP --testlinks
- <URLs> test links in pages (-r1p0C0I0t)
-.IP --spider
- <URLs> spider site(s), to test links: reports Errors & Warnings (-p0C0I0t)
-.IP --testsite
- <URLs> identical to --spider
-.IP --skeleton
- <URLs> make a mirror, but gets only html files (-p1)
-.IP --update
- update a mirror, without confirmation (-iC2)
-.IP --continue
- continue a mirror, without confirmation (-iC1)
+.IP \-\-get
+ <URLs> get the files indicated, do not seek other URLs (\-qg)
+.IP \-\-list
+ <text file> add all URL located in this text file (\-%L)
+.IP \-\-mirrorlinks
+<URLs> mirror all links in 1st level pages (\-Y)
+.IP \-\-testlinks
+ <URLs> test links in pages (\-r1p0C0I0t)
+.IP \-\-spider
+ <URLs> spider site(s), to test links: reports Errors & Warnings (\-p0C0I0t)
+.IP \-\-testsite
+ <URLs> identical to \-\-spider
+.IP \-\-skeleton
+ <URLs> make a mirror, but gets only html files (\-p1)
+.IP \-\-update
+ update a mirror, without confirmation (\-iC2)
+.IP \-\-continue
+ continue a mirror, without confirmation (\-iC1)
-.IP --catchurl
+.IP \-\-catchurl
create a temporary proxy to capture an URL or a form post URL
-.IP --clean
+.IP \-\-clean
erase cache & log files
-.IP --http10
- force http/1.0 requests (-%h)
+.IP \-\-http10
+ force http/1.0 requests (\-%h)
.SS Details: Option %W: External callbacks prototypes
.SS see htsdefines.h
@@ -591,21 +591,20 @@ Is being used if you defined in /etc/httrack.conf the line
.I path ~/websites/#
.SH DIAGNOSTICS
Errors/Warnings are reported to
-.I hts-log.txt
+.I hts\-log.txt
by default, or to stderr if the
.I -v
option was specified.
.SH LIMITS
-These are the principals limits of HTTrack for that moment. Note that we did not heard about any other utility
-that would have solved them.
-
+These are the principals limits of HTTrack for that moment. Note that we did not heard about any other utility
+that would have solved them.
-.SM - Several scripts generating complex filenames may not find them (ex: img.src='image'+a+Mobj.dst+'.gif')
-.SM - Some java classes may not find some files on them (class included)
+.SM - Several scripts generating complex filenames may not find them (ex: img.src='image'+a+Mobj.dst+'.gif')
-.SM - Cgi-bin links may not work properly in some cases (parameters needed). To avoid them: use filters like -*cgi-bin*
-
+.SM - Some java classes may not find some files on them (class included)
+
+.SM - Cgi-bin links may not work properly in some cases (parameters needed). To avoid them: use filters like -*cgi-bin*
.SH BUGS
Please reports bugs to
.B <bugs@httrack.com>.
diff --git a/src/Makefile.am b/src/Makefile.am
index c609b07..9dfec26 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -69,7 +69,7 @@ libhttrack_la_LIBADD = $(THREADS_LIBS) $(ZLIB_LIBS) $(DL_LIBS) $(SOCKET_LIBS)
libhttrack_la_LDFLAGS = -version-info $(VERSION_INFO)
libhtsjava_la_SOURCES = htsjava.c htsjava.h
-libhtsjava_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS)
+libhtsjava_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS) -lhttrack
libhtsjava_la_LDFLAGS = -version-info $(VERSION_INFO)
EXTRA_DIST = httrack.h webhttrack \
diff --git a/src/Makefile.in b/src/Makefile.in
index 1351f2f..2380102 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -61,6 +61,7 @@ DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -85,6 +86,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -94,6 +96,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
@@ -221,7 +224,7 @@ libhttrack_la_LIBADD = $(THREADS_LIBS) $(ZLIB_LIBS) $(DL_LIBS) $(SOCKET_LIBS)
libhttrack_la_LDFLAGS = -version-info $(VERSION_INFO)
libhtsjava_la_SOURCES = htsjava.c htsjava.h
-libhtsjava_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS)
+libhtsjava_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS) -lhttrack
libhtsjava_la_LDFLAGS = -version-info $(VERSION_INFO)
EXTRA_DIST = httrack.h webhttrack \
diff --git a/src/hts-indextmpl.h b/src/hts-indextmpl.h
index 24706d5..c5ad960 100644
--- a/src/hts-indextmpl.h
+++ b/src/hts-indextmpl.h
@@ -174,7 +174,7 @@ regen:
" <BR>"LF\
" <BR>"LF\
" <H6 ALIGN=\"RIGHT\">"LF\
- " <I>Mirror and index made by HTTrack Website Copier [XR&amp;CO'2007]</I>"LF\
+ " <I>Mirror and index made by HTTrack Website Copier [XR&amp;CO'2008]</I>"LF\
" </H6>"LF\
" %s"LF\
" <!-- Thanks for using HTTrack Website Copier! -->"LF\
@@ -193,7 +193,7 @@ regen:
""LF\
"<table width=\"76%%\" border=\"0\" align=\"center\" valign=\"bottom\" cellspacing=\"0\" cellpadding=\"0\">"LF\
" <tr>"LF\
- " <td id=\"footer\"><small>&copy; 2007 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
+ " <td id=\"footer\"><small>&copy; 2008 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
" </tr>"LF\
"</table>"LF\
""LF\
@@ -324,7 +324,7 @@ regen:
" </TABLE>"LF\
" <BR>"LF\
" <H6 ALIGN=\"RIGHT\">"LF\
- " <I>Mirror and index made by HTTrack Website Copier [XR&CO'2007]</I>"LF\
+ " <I>Mirror and index made by HTTrack Website Copier [XR&CO'2008]</I>"LF\
" </H6>"LF\
" %s"LF\
" <!-- Thanks for using HTTrack Website Copier! -->"LF\
@@ -342,7 +342,7 @@ regen:
""LF\
"<table width=\"76%%\" border=\"0\" align=\"center\" valign=\"bottom\" cellspacing=\"0\" cellpadding=\"0\">"LF\
" <tr>"LF\
- " <td id=\"footer\"><small>&copy; 2007 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
+ " <td id=\"footer\"><small>&copy; 2008 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
" </tr>"LF\
"</table>"LF\
""LF\
@@ -483,7 +483,7 @@ regen:
""LF\
"<table width=\"76%%\" height=\"100%%\" border=\"0\" align=\"center\" valign=\"bottom\" cellspacing=\"0\" cellpadding=\"0\">"LF\
" <tr>"LF\
- " <td id=\"footer\"><small>&copy; 2007 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
+ " <td id=\"footer\"><small>&copy; 2008 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
" </tr>"LF\
"</table>"LF\
""LF\
@@ -620,7 +620,7 @@ regen:
""LF\
"<table width=\"76%%\" height=\"100%%\" border=\"0\" align=\"center\" valign=\"bottom\" cellspacing=\"0\" cellpadding=\"0\">"LF\
" <tr>"LF\
- " <td id=\"footer\"><small>&copy; 2007 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
+ " <td id=\"footer\"><small>&copy; 2008 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
" </tr>"LF\
"</table>"LF\
""LF\
diff --git a/src/htsback.c b/src/htsback.c
index 91245a7..723ad60 100644
--- a/src/htsback.c
+++ b/src/htsback.c
@@ -479,8 +479,23 @@ int back_finalize(httrackp* opt,cache_back* cache,struct_back* sback,int p) {
back[p].compressed_size=back[p].r.size;
// en mémoire -> passage sur disque
if (!back[p].r.is_write) {
+#if 1
+#ifdef _WIN32
+#undef tempnam
+#define tempnam _tempnam
+#endif
+ char *const tmp = tempnam(NULL, "httrack_temporaryGzipFile_");
+ if (tmp != NULL) {
+ strcpybuff(back[p].tmpfile_buffer, tmp);
+ free(tmp);
+ back[p].tmpfile = back[p].tmpfile_buffer;
+ } else {
+ back[p].tmpfile = NULL;
+ }
+#else
back[p].tmpfile_buffer[0]='\0';
- back[p].tmpfile=tmpnam(back[p].tmpfile_buffer);
+ back[p].tmpfile=tmpnam(back[p].tmpfile_buffer);
+#endif
if (back[p].tmpfile != NULL && back[p].tmpfile[0] != '\0') {
back[p].r.out=fopen(back[p].tmpfile,"wb");
if (back[p].r.out) {
@@ -497,7 +512,7 @@ int back_finalize(httrackp* opt,cache_back* cache,struct_back* sback,int p) {
} else {
back[p].tmpfile[0]='\0';
back[p].r.statuscode=STATUSCODE_INVALID;
- strcpybuff(back[p].r.msg,"Open error when decompressing");
+ strcpybuff(back[p].r.msg,"Open error when decompressing (can not create a temporary file)");
}
}
}
@@ -546,6 +561,11 @@ int back_finalize(httrackp* opt,cache_back* cache,struct_back* sback,int p) {
back[p].r.adr = NULL;
}
+ /* remove reference file, if any */
+ if (back[p].r.is_write) {
+ url_savename_refname_remove(opt, back[p].url_adr, back[p].url_fil);
+ }
+
/* ************************************************************************
REAL MEDIA HACK
Check if we have to load locally the file
@@ -884,6 +904,46 @@ int back_unserialize(FILE *fp, lien_back** dst) {
return 1; /* error */
}
+/* serialize a reference ; used to store references of files being downloaded in case of broken download */
+int back_serialize_ref(httrackp* opt, const lien_back* src) {
+ char *filename = url_savename_refname_fullpath(opt, src->url_adr, src->url_fil);
+ FILE *fp = fopen(filename, "wb");
+ if (fp == NULL) {
+#ifdef _WIN32
+ if (mkdir(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), CACHE_REFNAME)) == 0)
+#else
+ if (mkdir(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), CACHE_REFNAME), S_IRWXU | S_IRWXG | S_IRWXO) == 0)
+#endif
+ {
+ filename = url_savename_refname_fullpath(opt, src->url_adr, src->url_fil);
+ fp = fopen(filename, "wb");
+ }
+ }
+ if (fp != NULL) {
+ int ser = back_serialize(fp, src);
+ fclose(fp);
+ return ser;
+ }
+ return 1;
+}
+
+/* unserialize a reference ; used to store references of files being downloaded in case of broken download */
+int back_unserialize_ref(httrackp* opt, const char *adr, const char *fil, lien_back** dst) {
+ char *filename = url_savename_refname_fullpath(opt, adr, fil);
+ FILE *fp = fopen(filename, "rb");
+ if (fp != NULL) {
+ int ser = back_unserialize(fp, dst);
+ fclose(fp);
+ if (ser != 0) { /* back_unserialize_ref() != 0 does not need cleaning up */
+ back_clear_entry(*dst); /* delete entry content */
+ freet(*dst); /* delete item */
+ *dst = NULL;
+ }
+ return ser;
+ }
+ return 1;
+}
+
// clear, or leave for keep-alive
int back_maydelete(httrackp* opt,cache_back* cache,struct_back* sback, int p) {
lien_back* const back = sback->lnk;
@@ -1253,6 +1313,7 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char*
int p=0;
char catbuff[CATBUFF_SIZE];
char catbuff2[CATBUFF_SIZE];
+ lien_back* itemback = NULL;
#if (defined(_DEBUG) || defined(DEBUG))
if (!test && back_exist(sback,opt,adr,fil,save)) {
@@ -1399,31 +1460,41 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char*
a+=strlen(buff);
sscanf(a,"%d",&pos); // lire position
#endif
+
+#if HTS_FAST_CACHE==0
if (pos<0) { // pas de mise en cache data, vérifier existence
+#endif
/* note: no check with IS_DELAYED_EXT() enabled - postcheck by client please! */
- if (!IS_DELAYED_EXT(save) && fsize(fconv(catbuff,save)) <= 0) { // fichier existe pas ou est vide!
+ if (save[0] != '\0' && !IS_DELAYED_EXT(save) && fsize(fconv(catbuff,save)) <= 0) { // fichier final n'existe pas ou est vide!
int found=0;
/* It is possible that the file has been moved due to changes in build structure */
{
char BIGSTK previous_save[HTS_URLMAXSIZE*2];
+ htsblk r;
previous_save[0] = '\0';
- back[p].r = cache_readex(opt, cache, adr, fil, NULL, back[p].location_buffer, previous_save, 0);
- if (previous_save[0] != '\0' && fexist(fconv(catbuff,previous_save))) {
- rename(fconv(catbuff,previous_save), fconv(catbuff2,save));
- if (fexist(fconv(catbuff,save))) {
- found = 1;
- if ((opt->debug>1) && (opt->log!=NULL)) {
- HTS_LOG(opt,LOG_DEBUG); fprintf(opt->log,"File '%s' has been renamed since last mirror to '%s' ; applying changes"LF, previous_save, save); test_flush;
- }
- } else {
- if ((opt->debug>0) && (opt->log!=NULL)) {
- HTS_LOG(opt,LOG_ERROR); fprintf(opt->log,"Could not rename '%s' to '%s' ; will have to retransfer it"LF, previous_save, save); test_flush;
+ r = cache_readex(opt, cache, adr, fil, /*head*/NULL, /*bound to back[p] (temporary)*/back[p].location_buffer, previous_save, /*ro*/1);
+ /* Is supposed to be on disk only */
+ if (r.is_write && previous_save[0] != '\0') {
+ /* Exists, but with another (old) filename: rename (almost) silently */
+ if (strcmp(previous_save, save) != 0 && fexist(fconv(catbuff, previous_save))) {
+ rename(fconv(catbuff, previous_save), fconv(catbuff2,save));
+ if (fexist(fconv(catbuff,save))) {
+ found = 1;
+ if ((opt->debug>1) && (opt->log!=NULL)) {
+ HTS_LOG(opt,LOG_DEBUG); fprintf(opt->log,"File '%s' has been renamed since last mirror to '%s' ; applying changes"LF, previous_save, save); test_flush;
+ }
+ } else {
+ if ((opt->debug>0) && (opt->log!=NULL)) {
+ HTS_LOG(opt,LOG_ERROR); fprintf(opt->log,"Could not rename '%s' to '%s' ; will have to retransfer it"LF, previous_save, save); test_flush;
+ }
}
}
}
+ back[p].location_buffer[0] = '\0';
}
+ /* Not found ? */
if (!found) {
#if HTS_FAST_CACHE
hash_pos_return=0;
@@ -1438,22 +1509,29 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char*
FILE* fp=fopen(fconv(catbuff,save),"wb");
if (fp) fclose(fp);
if (opt->log!=NULL) {
- HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"File must have been erased by user, ignoring: %s%s"LF,back[p].url_adr,back[p].url_fil); test_flush;
+ HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"Previous file not found (erased by user ?), ignoring: %s%s"LF,back[p].url_adr,back[p].url_fil); test_flush;
}
}
+ } else {
+ if (opt->log!=NULL) {
+ HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"Previous file not found (erased by user ?), recatching: %s%s"LF,back[p].url_adr,back[p].url_fil); test_flush;
+ }
}
}
} // fsize() <= 0
+#if HTS_FAST_CACHE==0
}
+#endif
}
}
//
- } else
+ } else {
#if HTS_FAST_CACHE
hash_pos_return=0;
#else
a=NULL;
#endif
+ }
// Existe pas en cache, ou bien pas de cache présent
#if HTS_FAST_CACHE
@@ -1567,83 +1645,113 @@ int back_add(struct_back* sback,httrackp* opt,cache_back* cache,char* adr,char*
printf("..is modified test %s\n",back[p].send_too);
#endif
}
- // Okay, pas trouvé dans le cache
- // Et si le fichier existe sur disque?
- // Pas dans le cache: fichier n'a pas été transféré du tout, donc pas sur disque?
- } else {
- if (fexist(save)) { // fichier existe? aghl!
- off_t sz=fsize(save);
- // Bon, là il est possible que le fichier ait été partiellement transféré
- // (s'il l'avait été en totalité il aurait été inscrit dans le cache ET existerait sur disque)
- // PAS de If-Modified-Since, on a pas connaissance des données à la date du cache
- // On demande juste les données restantes si le date est valide (206), tout sinon (200)
- if ((ishtml(opt,save) != 1) && (ishtml(opt,back[p].url_fil)!=1)) { // NON HTML (liens changés!!)
- if (sz>0) { // Fichier non vide? (question bête, sinon on transfert tout!)
- char lastmodified[256];
- get_filetime_rfc822(save, lastmodified);
- if (strnotempty(lastmodified)) { /* pas de If-.. possible */
+ }
+ /* Not in cache ; maybe in temporary cache ? Warning: non-movable "url_sav" */
+ else if (back_unserialize_ref(opt, adr, fil, &itemback) == 0) {
+ const long file_size = fsize(itemback->url_sav);
+ /* Found file on disk */
+ if (file_size > 0) {
+ char *send_too = back[p].send_too;
+ sprintf(send_too, "Range: bytes="LLintP"-\r\n", (LLint) file_size);
+ send_too += strlen(send_too);
+ /* add etag information */
+ if (strnotempty(itemback->r.etag)) {
+ sprintf(send_too,"If-Match: %s\r\n", itemback->r.etag);
+ send_too += strlen(send_too);
+ }
+ /* add date information */
+ if (strnotempty(itemback->r.lastmodified)) {
+ sprintf(send_too,"If-Unmodified-Since: %s\r\n", itemback->r.lastmodified);
+ send_too += strlen(send_too);
+ }
+ back[p].http11=1; /* 1.1 */
+ back[p].range_req_size=(LLint) file_size;
+ back[p].r.req.range_used=1;
+ back[p].is_update=1; /* this is an update of a file */
+ back[p].r.req.nocompression=1; /* Do not compress when updating! */
+ } else {
+ /* broken ; remove */
+ url_savename_refname_remove(opt, adr, fil);
+ }
+ /* cleanup */
+ back_clear_entry(itemback); /* delete entry content */
+ freet(itemback); /* delete item */
+ itemback = NULL;
+ }
+ /* Not in cache or temporary cache ; found on disk ? (hack) */
+ else if (fexist(save)) {
+ off_t sz=fsize(save);
+ // Bon, là il est possible que le fichier ait été partiellement transféré
+ // (s'il l'avait été en totalité il aurait été inscrit dans le cache ET existerait sur disque)
+ // PAS de If-Modified-Since, on a pas connaissance des données à la date du cache
+ // On demande juste les données restantes si le date est valide (206), tout sinon (200)
+ if ((ishtml(opt,save) != 1) && (ishtml(opt,back[p].url_fil)!=1)) { // NON HTML (liens changés!!)
+ if (sz>0) { // Fichier non vide? (question bête, sinon on transfert tout!)
+ char lastmodified[256];
+ get_filetime_rfc822(save, lastmodified);
+ if (strnotempty(lastmodified)) { /* pas de If-.. possible */
#if DEBUGCA
- printf("..if unmodified since %s size "LLintP"\n", lastmodified, (LLint)sz);
+ printf("..if unmodified since %s size "LLintP"\n", lastmodified, (LLint)sz);
#endif
- if ((opt->debug>1) && (opt->log!=NULL)) {
- HTS_LOG(opt,LOG_DEBUG); fprintf(opt->log,"File partially present ("LLintP" bytes): %s%s"LF,(LLint)sz,back[p].url_adr,back[p].url_fil); test_flush;
- }
-
- /* impossible - don't have etag or date
- if (strnotempty(back[p].r.etag)) { // ETag (RFC2616)
- sprintf(back[p].send_too,"If-None-Match: %s\r\n",back[p].r.etag);
- back[p].http11=1; // En tête 1.1
- } else if (strnotempty(back[p].r.lastmodified)) {
- sprintf(back[p].send_too,"If-Unmodified-Since: %s\r\n",back[p].r.lastmodified);
+ if ((opt->debug>1) && (opt->log!=NULL)) {
+ HTS_LOG(opt,LOG_DEBUG); fprintf(opt->log,"File partially present ("LLintP" bytes): %s%s"LF,(LLint)sz,back[p].url_adr,back[p].url_fil); test_flush;
+ }
+
+ /* impossible - don't have etag or date
+ if (strnotempty(back[p].r.etag)) { // ETag (RFC2616)
+ sprintf(back[p].send_too,"If-None-Match: %s\r\n",back[p].r.etag);
+ back[p].http11=1; // En tête 1.1
+ } else if (strnotempty(back[p].r.lastmodified)) {
+ sprintf(back[p].send_too,"If-Unmodified-Since: %s\r\n",back[p].r.lastmodified);
+ back[p].http11=1; // En tête 1.1
+ } else
+ */
+ if (strlen(lastmodified)) {
+ sprintf(back[p].send_too,
+ "If-Unmodified-Since: %s\r\nRange: bytes="LLintP"-\r\n"
+ , lastmodified, (LLint)sz);
back[p].http11=1; // En tête 1.1
- } else
- */
- if (strlen(lastmodified)) {
- sprintf(back[p].send_too,
- "If-Unmodified-Since: %s\r\nRange: bytes="LLintP"-\r\n"
- , lastmodified, (LLint)sz);
- back[p].http11=1; // En tête 1.1
- back[p].range_req_size=sz;
- back[p].r.req.range_used=1;
- back[p].r.req.nocompression=1;
- } else {
- if ((opt->debug>0) && (opt->log!=NULL)) {
- HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"Could not find timestamp for partially present file, restarting (lost "LLintP" bytes): %s%s"LF,(LLint)sz,back[p].url_adr,back[p].url_fil); test_flush;
- }
- }
-
- } else {
+ back[p].is_update=1; /* this is an update of a file */
+ back[p].range_req_size=sz;
+ back[p].r.req.range_used=1;
+ back[p].r.req.nocompression=1;
+ } else {
if ((opt->debug>0) && (opt->log!=NULL)) {
- HTS_LOG(opt,LOG_WARNING);
- /*
- if (opt->http10)
- fprintf(opt->log,"File partially present (%d bytes) retransfered due to HTTP/1.0 settings: %s%s"LF,sz,back[p].url_adr,back[p].url_fil);
- else
- */
- fprintf(opt->log,"File partially present ("LLintP" bytes) retransfered due to lack of cache: %s%s"LF,(LLint)sz,back[p].url_adr,back[p].url_fil);
- test_flush;
+ HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"Could not find timestamp for partially present file, restarting (lost "LLintP" bytes): %s%s"LF,(LLint)sz,back[p].url_adr,back[p].url_fil); test_flush;
}
- /* Sinon requête normale... */
- back[p].http11=0;
}
- } else if (opt->norecatch) { // tester norecatch
- filenote(&opt->state.strc,save,NULL); // ne pas purger tout de même
- file_notify(opt,back[p].url_adr, back[p].url_fil, back[p].url_sav, 0, 0, back[p].r.notmodified);
- back[p].status=STATUS_READY; // OK prêt
- back_set_finished(sback, p);
- back[p].r.statuscode=STATUSCODE_INVALID; // erreur
- strcpybuff(back[p].r.msg,"Null-size file not recaught");
- return 0;
- }
- } else {
- if ((opt->debug>0) && (opt->log!=NULL)) {
- HTS_LOG(opt,LOG_WARNING);
- fprintf(opt->log,"HTML file ("LLintP" bytes) retransfered due to lack of cache: %s%s"LF,(LLint)sz,back[p].url_adr,back[p].url_fil);
- test_flush;
+
+ } else {
+ if ((opt->debug>0) && (opt->log!=NULL)) {
+ HTS_LOG(opt,LOG_WARNING);
+ /*
+ if (opt->http10)
+ fprintf(opt->log,"File partially present (%d bytes) retransfered due to HTTP/1.0 settings: %s%s"LF,sz,back[p].url_adr,back[p].url_fil);
+ else
+ */
+ fprintf(opt->log,"File partially present ("LLintP" bytes) retransfered due to lack of cache: %s%s"LF,(LLint)sz,back[p].url_adr,back[p].url_fil);
+ test_flush;
+ }
+ /* Sinon requête normale... */
+ back[p].http11=0;
}
- /* Sinon requête normale... */
- back[p].http11=0;
+ } else if (opt->norecatch) { // tester norecatch
+ filenote(&opt->state.strc,save,NULL); // ne pas purger tout de même
+ file_notify(opt,back[p].url_adr, back[p].url_fil, back[p].url_sav, 0, 0, back[p].r.notmodified);
+ back[p].status=STATUS_READY; // OK prêt
+ back_set_finished(sback, p);
+ back[p].r.statuscode=STATUSCODE_INVALID; // erreur
+ strcpybuff(back[p].r.msg,"Null-size file not recaught");
+ return 0;
}
+ } else {
+ if ((opt->debug>0) && (opt->log!=NULL)) {
+ HTS_LOG(opt,LOG_WARNING);
+ fprintf(opt->log,"HTML file ("LLintP" bytes) retransfered due to lack of cache: %s%s"LF,(LLint)sz,back[p].url_adr,back[p].url_fil);
+ test_flush;
+ }
+ /* Sinon requête normale... */
+ back[p].http11=0;
}
}
}
@@ -2264,24 +2372,27 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti
// vérification de sécurité
if (back[i].r.soc!=INVALID_SOCKET) { // hey, you never know..
- do_wait=1;
-
- // noter socket read
- FD_SET(back[i].r.soc,&fds);
-
- // noter socket error
- FD_SET(back[i].r.soc,&fds_e);
-
- // incrémenter nombre de sockets
- nsockets++;
-
- // calculer max
- if (max_c) {
- max_c=0;
- nfds=back[i].r.soc;
- } else if (back[i].r.soc>nfds) {
- // ID socket la plus élevée
- nfds=back[i].r.soc;
+ // Do not endlessly wait when receiving SSL http data (Patrick Pfeifer)
+ if (!(back[i].r.ssl && back[i].status > 0 && back[i].status < 1000)) {
+ do_wait=1;
+
+ // noter socket read
+ FD_SET(back[i].r.soc,&fds);
+
+ // noter socket error
+ FD_SET(back[i].r.soc,&fds_e);
+
+ // incrémenter nombre de sockets
+ nsockets++;
+
+ // calculer max
+ if (max_c) {
+ max_c=0;
+ nfds=back[i].r.soc;
+ } else if (back[i].r.soc>nfds) {
+ // ID socket la plus élevée
+ nfds=back[i].r.soc;
+ }
}
} else {
back[i].r.statuscode=STATUSCODE_CONNERROR;
@@ -2623,8 +2734,23 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti
/* .gz are *NOT* depacked!! */
(strfield(get_ext(catbuff,back[i].url_sav),"gz") == 0)
) {
+#if 1
+#ifdef _WIN32
+#undef tempnam
+#define tempnam _tempnam
+#endif
+ char *const tmp = tempnam(NULL, "httrack_temporaryGzipFile_");
+ if (tmp != NULL) {
+ strcpybuff(back[i].tmpfile_buffer, tmp);
+ free(tmp);
+ back[i].tmpfile = back[i].tmpfile_buffer;
+ } else {
+ back[i].tmpfile = NULL;
+ }
+#else
back[i].tmpfile_buffer[0]='\0';
- back[i].tmpfile=tmpnam(back[i].tmpfile_buffer);
+ back[i].tmpfile=tmpnam(back[p].tmpfile_buffer);
+#endif
if (back[i].tmpfile != NULL && back[i].tmpfile[0]) {
if ((back[i].r.out=fopen(back[i].tmpfile,"wb")) == NULL) {
last_errno = errno;
@@ -2662,13 +2788,19 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti
test_flush;
}
back[i].r.is_write=0; // erreur, abandonner
-#if HDEBUG
- printf("..error!\n");
-#endif
- }
+ } else {
#ifndef _WIN32
- else chmod(back[i].url_sav,HTS_ACCESS_FILE);
+ chmod(back[i].url_sav, HTS_ACCESS_FILE);
#endif
+ /* create a temporary reference file in case of broken mirror */
+ if (back[i].r.out != NULL) {
+ if (back_serialize_ref(opt, &back[i]) != 0) {
+ if (opt->log != NULL) {
+ HTS_LOG(opt,LOG_WARNING); fprintf(opt->log, "Could not create temporary reference file for %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush;
+ }
+ }
+ }
+ }
} else { // on coupe tout!
if ((opt->debug>1) && (opt->log!=NULL)) {
HTS_LOG(opt,LOG_DEBUG); fprintf(opt->log,"File cancelled (non HTML): %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush;
@@ -3409,6 +3541,12 @@ void back_wait(struct_back* sback,httrackp* opt,cache_back* cache,TStamp stat_ti
if (back[i].r.totalsize>0)
back[i].r.totalsize+=sz; // plus en fait
fseek(back[i].r.out,0,SEEK_END); // à la fin
+ /* create a temporary reference file in case of broken mirror */
+ if (back_serialize_ref(opt, &back[i]) != 0) {
+ if (opt->log != NULL) {
+ HTS_LOG(opt,LOG_WARNING); fprintf(opt->log, "Could not create temporary reference file for %s%s"LF,back[i].url_adr,back[i].url_fil); test_flush;
+ }
+ }
#if HDEBUG
printf("continue interrupted file\n");
#endif
diff --git a/src/htsback.h b/src/htsback.h
index 57751d1..eb3f8ef 100644
--- a/src/htsback.h
+++ b/src/htsback.h
@@ -100,6 +100,8 @@ void back_move(lien_back* src, lien_back* dst);
void back_copy_static(const lien_back* src, lien_back* dst);
int back_serialize(FILE *fp, const lien_back* src);
int back_unserialize(FILE *fp, lien_back** dst);
+int back_serialize_ref(httrackp* opt, const lien_back* src);
+int back_unserialize_ref(httrackp* opt, const char *adr, const char *fil, lien_back** dst);
void back_set_finished(struct_back* sback, int p);
void back_set_locked(struct_back* sback, int p);
void back_set_unlocked(struct_back* sback, int p);
diff --git a/src/htsbase.h b/src/htsbase.h
index e3aec57..7340598 100644
--- a/src/htsbase.h
+++ b/src/htsbase.h
@@ -48,16 +48,13 @@ extern "C" {
#include <string.h>
#include <time.h>
-#ifdef HAVE_UNISTD_H
+#ifndef _WIN32
#include <unistd.h>
#endif
-#if ( defined(_WIN32) ||defined(HAVE_SYS_TYPES_H) )
#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
-#endif
-#ifdef HAVE_DLFCN_H
+
+#ifndef _WIN32
#include <dlfcn.h>
#endif
diff --git a/src/htsbasenet.h b/src/htsbasenet.h
index 26f1392..d717654 100644
--- a/src/htsbasenet.h
+++ b/src/htsbasenet.h
@@ -47,9 +47,15 @@ Please visit our Website: http://www.httrack.com
#ifndef _WIN32_WCE
#undef HTS_USESCOPEID
#define WIN32_LEAN_AND_MEAN
-#include <winsock2.h>
+// KB955045 (http://support.microsoft.com/kb/955045)
+// To execute an application using this function on earlier versions of Windows
+// (Windows 2000, Windows NT, and Windows Me/98/95), then it is mandatary to #include Ws2tcpip.h
+// and also Wspiapi.h. When the Wspiapi.h header file is included, the 'getaddrinfo' function is
+// #defined to the 'WspiapiGetAddrInfo' inline function in Wspiapi.h.
#include <ws2tcpip.h>
-#include <tpipv6.h>
+#include <Wspiapi.h>
+//#include <winsock2.h>
+//#include <tpipv6.h>
#else
#include <winsock2.h>
#include <socket.h>
diff --git a/src/htscache.c b/src/htscache.c
index 068da05..d3698cf 100644
--- a/src/htscache.c
+++ b/src/htscache.c
@@ -541,6 +541,22 @@ htsblk cache_read_ro(httrackp* opt,cache_back* cache,const char* adr,const char*
return cache_readex(opt,cache,adr,fil,save,location,NULL,1);
}
+htsblk cache_read_including_broken(httrackp* opt,cache_back* cache,const char* adr,const char* fil) {
+ htsblk r = cache_read(opt,cache,adr,fil,NULL,NULL);
+ if (r.statuscode = -1) {
+ lien_back *itemback = NULL;
+ if (back_unserialize_ref(opt, adr, fil, &itemback) == 0) {
+ r = itemback->r;
+ /* cleanup */
+ back_clear_entry(itemback); /* delete entry content */
+ freet(itemback); /* delete item */
+ itemback = NULL;
+ return r;
+ }
+ }
+ return r;
+}
+
static htsblk cache_readex_old(httrackp* opt,cache_back* cache,const char* adr,const char* fil,const char* save,char* location,
char* return_save, int readonly);
@@ -681,9 +697,9 @@ static htsblk cache_readex_new(httrackp* opt,cache_back* cache,const char* adr,c
}
}
else if (!readonly && r.statuscode==HTTP_OK && !is_hypertext_mime(opt,r.contenttype, fil) && strnotempty(save)) { // pas HTML, écrire sur disk directement
-
r.is_write=1; // écrire
- if (!dataincache) {
+
+ if (!dataincache) {
if (fexist(fconv(catbuff, save))) { // un fichier existe déja
//if (fsize(fconv(save))==r.size) { // même taille -- NON tant pis (taille mal declaree)
ok=1; // plus rien à faire
@@ -701,7 +717,7 @@ static htsblk cache_readex_new(httrackp* opt,cache_back* cache,const char* adr,c
strcpybuff(r.msg,"File deleted by user not recaught");
ok=1; // ne pas récupérer (et pas d'erreur)
} else {
- file_notify(opt,adr, fil, save, 1, 1, 0);
+ // ????? file_notify(opt,adr, fil, save, 1, 1, 0);
r.statuscode=STATUSCODE_INVALID;
strcpybuff(r.msg,"Previous cache file not found");
ok=1; // ne pas récupérer
@@ -792,8 +808,11 @@ static htsblk cache_readex_new(httrackp* opt,cache_back* cache,const char* adr,c
}
}
}
- } // si save==null, ne rien charger (juste en tête)
-
+ }
+ // si save==null, ne rien charger (juste en tête)
+ else if (r.statuscode==HTTP_OK && !is_hypertext_mime(opt,r.contenttype, fil)) { // pas HTML, écrire sur disk directement
+ r.is_write = 1; /* supposed to be on disk (informational) */
+ }
} else {
r.statuscode=STATUSCODE_INVALID;
diff --git a/src/htscache.h b/src/htscache.h
index 7a4bb5c..b8dd037 100644
--- a/src/htscache.h
+++ b/src/htscache.h
@@ -66,6 +66,7 @@ void cache_mayadd(httrackp* opt,cache_back* cache,htsblk* r,const char* url_adr,
void cache_add(httrackp* opt,cache_back* cache,const htsblk *r,const char* url_adr,const char* url_fil,const char* url_save,int all_in_cache,const char* path_prefix);
htsblk cache_read(httrackp* opt,cache_back* cache,const char* adr,const char* fil,const char* save,char* location);
htsblk cache_read_ro(httrackp* opt,cache_back* cache,const char* adr,const char* fil,const char* save,char* location);
+htsblk cache_read_including_broken(httrackp* opt,cache_back* cache,const char* adr,const char* fil);
htsblk cache_readex(httrackp* opt,cache_back* cache,const char* adr,const char* fil,const char* save,char* location,char* return_save,int readonly);
htsblk* cache_header(httrackp* opt,cache_back* cache,const char* adr,const char* fil,htsblk* r);
void cache_init(cache_back* cache,httrackp* opt);
diff --git a/src/htscatchurl.c b/src/htscatchurl.c
index 74a2439..2cb10f0 100644
--- a/src/htscatchurl.c
+++ b/src/htscatchurl.c
@@ -160,9 +160,7 @@ HTSEXT_API int catch_url(T_SOC soc,char* url,char* method,char* data) {
// connexion (accept)
if (soc != INVALID_SOCKET) {
T_SOC soc2;
- struct sockaddr dummyaddr;
- int dummylen = sizeof(struct sockaddr);
- while ( (soc2 = (T_SOC) accept(soc,&dummyaddr,&dummylen)) == INVALID_SOCKET);
+ while ( (soc2 = (T_SOC) accept(soc, NULL, NULL)) == INVALID_SOCKET);
/*
#ifdef _WIN32
closesocket(soc);
diff --git a/src/htscore.c b/src/htscore.c
index 41c27a0..bfc5643 100644
--- a/src/htscore.c
+++ b/src/htscore.c
@@ -779,6 +779,8 @@ int httpmirror(char* url1, httrackp* opt) {
do {
int error=0; // si error alors sauter
int store_errpage=0; // c'est une erreur mais on enregistre le html
+ int is_binary=0; // is a binary file
+ int is_loaded_from_file=0; // has been loaded from a file (implies is_write=1)
char BIGSTK loc[HTS_URLMAXSIZE*2]; // adresse de relocation
// Ici on charge le fichier (html, gif..) en mémoire
@@ -1010,7 +1012,35 @@ int httpmirror(char* url1, httrackp* opt) {
}
}
}
-
+
+ /* Load file if necessary and decode. */ \
+#define LOAD_IN_MEMORY_IF_NECESSARY() do { \
+ if ( \
+ may_be_hypertext_mime(opt,r.contenttype, urlfil) /* Is HTML or Js, .. */ \
+ && (liens[ptr]->depth>0) /* Depth > 0 (recurse depth) */ \
+ && (r.adr==NULL) /* HTML Data exists */ \
+ && (!store_errpage) /* Not an html error page */ \
+ && (savename[0]!='\0') /* Output filename exists */ \
+ ) \
+ { \
+ is_loaded_from_file = 1; \
+ r.adr = readfile2(savename, &r.size); \
+ if (r.adr != NULL) { \
+ if ( (opt->debug>0) && (opt->log!=NULL) ) { \
+ HTS_LOG(opt,LOG_INFO); fprintf(opt->log,"File successfully loaded for parsing: %s%s (%d bytes)"LF,urladr,urlfil,(int)r.size); \
+ test_flush; \
+ } \
+ } else { \
+ if ( opt->log != NULL ) { \
+ HTS_LOG(opt,LOG_ERROR); fprintf(opt->log,"File could not be loaded for parsing: %s%s"LF,urladr,urlfil); \
+ test_flush; \
+ } \
+ } \
+ } \
+} while(0)
+ /* Load file and decode if necessary, before content-binary check. (3.43) */
+ LOAD_IN_MEMORY_IF_NECESSARY();
+
// ------------------------------------
// BOGUS MIME TYPE HACK II (the revenge)
// Check if we have a bogus MIME type
@@ -1021,7 +1051,7 @@ int httpmirror(char* url1, httrackp* opt) {
unsigned int map[256];
int i;
unsigned int nspec = 0;
- map_characters((unsigned char*)r.adr, (unsigned int)r.size, (unsigned int*)map);
+ map_characters((unsigned char*)r.adr, (unsigned int)r.size, &map[0]);
for(i = 1 ; i < 32 ; i++) { // null chars ignored..
if (!is_realspace(i)
&& i != 27 /* Damn you ISO2022-xx! */
@@ -1136,6 +1166,7 @@ int httpmirror(char* url1, httrackp* opt) {
#undef CH_ADD_RNG1
#undef CH_ADD_RNG2
} else if ((nspec > r.size / 100) && (nspec > 10)) { // too many special characters
+ is_binary = 1;
strcpybuff(r.contenttype,"application/octet-stream");
if (opt->log) {
HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"File not parsed, looks like binary: %s%s"LF,urladr,urlfil);
@@ -1144,9 +1175,11 @@ int httpmirror(char* url1, httrackp* opt) {
}
/* This hack allows to avoid problems with parsing '\0' characters */
- for(i = 0 ; i < r.size ; i++) {
- if (r.adr[i] == '\0') r.adr[i] = ' ';
- }
+ if (!is_binary) {
+ for(i = 0 ; i < r.size ; i++) {
+ if (r.adr[i] == '\0') r.adr[i] = ' ';
+ }
+ }
}
@@ -1302,31 +1335,10 @@ int httpmirror(char* url1, httrackp* opt) {
io_flush;
}
#endif
-
- /* Load file if necessary */
- if (
- may_be_hypertext_mime(opt,r.contenttype, urlfil) /* Is HTML or Js, .. */
- && (liens[ptr]->depth>0) /* Depth > 0 (recurse depth) */
- && (r.adr==NULL) /* HTML Data exists */
- && (!store_errpage) /* Not an html error page */
- && (savename[0]!='\0') /* Output filename exists */
- )
- {
- r.adr = readfile2(savename, &r.size);
- (void) unlink(fconv(OPT_GET_BUFF(opt),savename));
- if (r.adr != NULL) {
- if ( (opt->debug>0) && (opt->log!=NULL) ) {
- HTS_LOG(opt,LOG_INFO); fprintf(opt->log,"File successfully loaded for parsing: %s%s (%d bytes)"LF,urladr,urlfil,(int)r.size);
- test_flush;
- }
- } else {
- if ( opt->log != NULL ) {
- HTS_LOG(opt,LOG_ERROR); fprintf(opt->log,"File could not be loaded for parsing: %s%s"LF,urladr,urlfil);
- test_flush;
- }
- }
- }
+ /* Load file and decode if necessary, after redirect check. */
+ LOAD_IN_MEMORY_IF_NECESSARY();
+
// ------------------------------------------------------
// ok, fichier chargé localement
// ------------------------------------------------------
@@ -1374,6 +1386,8 @@ int httpmirror(char* url1, httrackp* opt) {
// traiter
if (
+ ! is_binary
+ &&
( (is_hypertext_mime(opt,r.contenttype, urlfil)) /* Is HTML or Js, .. */
|| (may_be_hypertext_mime(opt,r.contenttype, urlfil) && r.adr != NULL ) /* Is real media, .. */
)
@@ -1386,6 +1400,13 @@ int httpmirror(char* url1, httrackp* opt) {
// -- -- -- --
// Parsing HTML
if (!error) {
+
+ /* Remove file if being processed */
+ if (is_loaded_from_file) {
+ (void) unlink(fconv(OPT_GET_BUFF(opt),savename));
+ is_loaded_from_file = 0;
+ }
+
/* Info for wrappers */
if ( (opt->debug>0) && (opt->log!=NULL) ) {
HTS_LOG(opt,LOG_INFO); fprintf(opt->log,"engine: check-html: %s%s"LF,urladr,urlfil);
diff --git a/src/htscore.h b/src/htscore.h
index 5e88313..c115bc1 100644
--- a/src/htscore.h
+++ b/src/htscore.h
@@ -43,12 +43,8 @@ Please visit our Website: http://www.httrack.com
/* specific definitions */
#include "htsbase.h"
// Includes & définitions
-#if ( defined(_WIN32) ||defined(HAVE_SYS_TYPES_H) )
#include <sys/types.h>
-#endif
-#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h>
-#endif
#ifdef _WIN32
#ifndef _WIN32_WCE
#include <conio.h>
@@ -57,7 +53,7 @@ Please visit our Website: http://www.httrack.com
#include <direct.h>
#endif
#else
-#ifdef HAVE_UNISTD_H
+#ifndef _WIN32
#include <unistd.h>
#endif
#endif
diff --git a/src/htscoremain.c b/src/htscoremain.c
index a118c5f..bfaebaf 100644
--- a/src/htscoremain.c
+++ b/src/htscoremain.c
@@ -140,7 +140,19 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
// Create options
_DEBUG_HEAD=0; // pas de debuggage en têtes
-
+
+ /* command max-size check (3.43 ; 3.42-4) */
+ {
+ int i;
+ for(i = 0 ; i < argc ; i++) {
+ if (strlen(argv[i]) >= HTS_CDLMAXSIZE) {
+ HTS_PANIC_PRINTF("argument too long");
+ htsmain_free();
+ return -1;
+ }
+ }
+ }
+
/* Init root dir */
hts_rootdir(argv[0]);
@@ -231,7 +243,6 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
/* Vérifier argv[] non vide */
if (strnotempty(argv[na])) {
- assertf(strlen(argv[na]) < HTS_CDLMAXSIZE);
/* Vérifier Commande (alias) */
result=optalias_check(argc,(const char * const *)argv,na,
@@ -262,6 +273,9 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
help(argv[0],!opt->quiet);
htsmain_free();
return 0;
+ } else if (strcmp(tmp_argv[0],"-#h")==0) {
+ printf("HTTrack version "HTTRACK_VERSION"%s\n", hts_get_version_info(opt));
+ return 0;
} else {
if (strncmp(tmp_argv[0],"--",2)) { /* pas */
if ((strchr(tmp_argv[0],'q')!=NULL))
@@ -535,7 +549,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
//
} else if (strfield2(argv[i]+2,"updatehttrack")) {
#ifdef _WIN32
- char s[HTS_CDLMAXSIZE];
+ char s[HTS_CDLMAXSIZE + 256];
sprintf(s,"%s not available in this version",argv[i]);
HTS_PANIC_PRINTF(s);
htsmain_free();
@@ -562,7 +576,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
}
//
else {
- char s[HTS_CDLMAXSIZE];
+ char s[HTS_CDLMAXSIZE + 256];
sprintf(s,"%s not recognized",argv[i]);
HTS_PANIC_PRINTF(s);
htsmain_free();
@@ -728,10 +742,10 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
}
} else { // aucune URL définie et pas de cache
- if (argc > 1 && strcmp(argv[0], "-#h") == 0) {
- printf("HTTrack version "HTTRACK_VERSION"%s\n", hts_get_version_info(opt));
- exit(0);
- }
+ //if (argc > 1 && strcmp(argv[1], "-#h") == 0) {
+ // printf("HTTrack version "HTTRACK_VERSION"%s\n", hts_get_version_info(opt));
+ // exit(0);
+ //}
if (opt->quiet) {
help(argv[0],!opt->quiet);
htsmain_free();
@@ -819,10 +833,10 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
for(na=1;na<argc;na++) {
if (argv[na][0]=='"') {
- char BIGSTK tempo[HTS_CDLMAXSIZE];
+ char BIGSTK tempo[HTS_CDLMAXSIZE + 256];
strcpybuff(tempo,argv[na]+1);
if (tempo[strlen(tempo)-1]!='"') {
- char s[HTS_CDLMAXSIZE];
+ char s[HTS_CDLMAXSIZE + 256];
sprintf(s,"Missing quote in %s",argv[na]);
HTS_PANIC_PRINTF(s);
htsmain_free();
@@ -1119,6 +1133,10 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
if (fp != NULL) {
int cl = (int) strlen(url);
ensureUrlCapacity(url, url_sz, cl + fz + 8192);
+ if (cl > 0) { /* don't stick! (3.43) */
+ url[cl] = ' ';
+ cl++;
+ }
if (fread(url + cl, 1, fz, fp) != fz) {
HTS_PANIC_PRINTF("File url list could not be read");
htsmain_free();
@@ -1325,7 +1343,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
break;
default: {
- char s[HTS_CDLMAXSIZE];
+ char s[HTS_CDLMAXSIZE + 256];
sprintf(s,"invalid option %%%c\n",*com);
HTS_PANIC_PRINTF(s);
htsmain_free();
@@ -1372,7 +1390,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
break;
default: {
- char s[HTS_CDLMAXSIZE];
+ char s[HTS_CDLMAXSIZE + 256];
sprintf(s,"invalid option %%%c\n",*com);
HTS_PANIC_PRINTF(s);
htsmain_free();
@@ -1587,11 +1605,13 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
return 0;
break;
case '~': /* internal lib test */
- {
- char thisIsATestYouShouldSeeAnError[12];
- strcpybuff(thisIsATestYouShouldSeeAnError, "0123456789012345678901234567890123456789");
- return 0;
- }
+ //Disabled because choke on GCC 4.3 (toni from links2linux.de)
+ //{
+ // char thisIsATestYouShouldSeeAnError[12];
+ // const char *const bufferOverflowTest = "0123456789012345678901234567890123456789";
+ // strcpybuff(thisIsATestYouShouldSeeAnError, bufferOverflowTest);
+ // return 0;
+ //}
break;
case 'f': opt->flush=1; break;
case 'h':
@@ -1773,7 +1793,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
break;
//
default: {
- char s[HTS_CDLMAXSIZE];
+ char s[HTS_CDLMAXSIZE + 256];
sprintf(s,"invalid option %c\n",*com);
HTS_PANIC_PRINTF(s);
htsmain_free();
@@ -1958,13 +1978,13 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
else
opt->errlog=opt->log;
if (opt->log==NULL) {
- char s[HTS_CDLMAXSIZE];
+ char s[HTS_CDLMAXSIZE + 256];
sprintf(s,"Unable to create log file %s",fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-log.txt"));
HTS_PANIC_PRINTF(s);
htsmain_free();
return -1;
} else if (opt->errlog==NULL) {
- char s[HTS_CDLMAXSIZE];
+ char s[HTS_CDLMAXSIZE + 256];
sprintf(s,"Unable to create log file %s",fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-err.txt"));
HTS_PANIC_PRINTF(s);
htsmain_free();
@@ -2200,6 +2220,27 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp *opt) {
}
}
+ /* Not or cleanly interrupted; erase hts-cache/ref temporary directory */
+ if (opt->state.exit_xh == 0) {
+ // erase ref files if not interrupted
+ DIR *dir;
+ struct dirent *entry;
+ for(dir = opendir(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), CACHE_REFNAME))
+ ; dir != NULL && ( entry = readdir(dir) ) != NULL
+ ; )
+ {
+ if (entry->d_name[0] != '\0' && entry->d_name[0] != '.') {
+ char *f = OPT_GET_BUFF(opt);
+ sprintf(f, "%s/%s", CACHE_REFNAME, entry->d_name);
+ (void)unlink(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), f));
+ }
+ }
+ if (dir != NULL) {
+ (void) closedir(dir);
+ }
+ (void)rmdir(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), CACHE_REFNAME));
+ }
+
/* Info for wrappers */
if ( (opt->debug>0) && (opt->log!=NULL) ) {
HTS_LOG(opt,LOG_INFO); fprintf(opt->log,"engine: free"LF);
diff --git a/src/htsftp.c b/src/htsftp.c
index e8797ca..f6df65e 100644
--- a/src/htsftp.c
+++ b/src/htsftp.c
@@ -653,9 +653,7 @@ int run_launch_ftp(FTPDownloadStruct *pStruct) {
_CHECK_HALT_FTP;
if (line[0]=='1') {
//T_SOC soc_dat;
- struct sockaddr dummyaddr;
- int dummylen = sizeof(struct sockaddr);
- if ( (soc_dat=accept(soc_servdat,&dummyaddr,&dummylen)) == INVALID_SOCKET) {
+ if ( (soc_dat=accept(soc_servdat, NULL, NULL)) == INVALID_SOCKET) {
strcpybuff(back->r.msg,"Unable to accept connection");
// back->status=STATUS_FTP_READY; // fini
back->r.statuscode=STATUSCODE_INVALID;
diff --git a/src/htsglobal.h b/src/htsglobal.h
index 5337659..be06e5d 100644
--- a/src/htsglobal.h
+++ b/src/htsglobal.h
@@ -39,9 +39,9 @@ Please visit our Website: http://www.httrack.com
#ifndef HTTRACK_GLOBAL_DEFH
#define HTTRACK_GLOBAL_DEFH
-// Version
-#define HTTRACK_VERSION "3.42-3"
-#define HTTRACK_VERSIONID "3.42.3"
+// Version (also check external version information)
+#define HTTRACK_VERSION "3.43-12"
+#define HTTRACK_VERSIONID "3.43.12"
#define HTTRACK_AFF_VERSION "3.x"
#define HTTRACK_LIB_VERSION "2.0"
@@ -78,9 +78,11 @@ Please visit our Website: http://www.httrack.com
// WIN32
#ifndef _WIN32_WCE
+/*
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TYPES_H 1
#define HAVE_SYS_STAT_H 1
+*/
#ifndef DLLIB
#define DLLIB 1
#endif
@@ -104,12 +106,16 @@ Please visit our Website: http://www.httrack.com
#undef HTS_MAKE_KEYWORD_INDEX
#ifdef HTS_CECOMPAT
#define HTS_DO_NOT_USE_FTIME 1
+/*
#undef HAVE_SYS_STAT_H
#undef HAVE_SYS_TYPES_H
+*/
#else
#undef HTS_DO_NOT_USE_FTIME
+/*
#define HAVE_SYS_STAT_H 1
#define HAVE_SYS_TYPES_H 1
+*/
#endif
#define HTS_DLOPEN 0
@@ -260,7 +266,7 @@ Please visit our Website: http://www.httrack.com
#endif
/* Copyright (C) Xavier Roche and other contributors */
-#define HTTRACK_AFF_AUTHORS "[XR&CO'2007]"
+#define HTTRACK_AFF_AUTHORS "[XR&CO'2010]"
#define HTS_DEFAULT_FOOTER "<!-- Mirrored from %s%s by HTTrack Website Copier/"HTTRACK_AFF_VERSION" "HTTRACK_AFF_AUTHORS", %s -->"
#define HTTRACK_WEB "http://www.httrack.com"
#define HTS_UPDATE_WEBSITE "http://www.httrack.com/update.php3?Product=HTTrack&Version="HTTRACK_VERSIONID"&VersionStr="HTTRACK_VERSION"&Platform=%d&Language=%s"
diff --git a/src/htsindex.c b/src/htsindex.c
index 4a7bd67..4ab69d0 100644
--- a/src/htsindex.c
+++ b/src/htsindex.c
@@ -172,7 +172,7 @@ int index_keyword(const char* html_data,LLint size,const char* mime,const char*
}
// Check MIME type
- if (strfield2(mime,"text/html")) {
+ if (is_html_mime_type(mime)) {
inscript=0;
}
// FIXME - temporary fix for image/svg+xml (svg)
diff --git a/src/htslib.c b/src/htslib.c
index aba65fb..ff41d4f 100644
--- a/src/htslib.c
+++ b/src/htslib.c
@@ -239,6 +239,14 @@ const char* hts_detectandleave[] = {
const char* hts_mime_keep[] = {
"application/octet-stream",
"text/plain",
+ "application/xml",
+ "text/xml",
+ ""
+};
+
+/* bogus servers returns these mime types when the extension is seen within the filename */
+const char* hts_mime_bogus_multiple[] = {
+ "application/x-wais-source", /* src (src.rpm) */
""
};
@@ -3097,15 +3105,19 @@ int ishtml(httrackp *opt,const char* fil) {
*a = '\0';
}
if (get_userhttptype(opt, mime, fil_noquery)) {
- if (strfield2(mime, "text/html")) {
+ if (is_html_mime_type(mime)) {
return 1;
} else {
return 0;
}
}
+ if (!strnotempty(fil_noquery)) {
+ return -2;
+ }
+
/* Search for known ext */
- for (a = fil_noquery + strlen(fil_noquery) - 1 ; (*a!='.') && (*a!='/') && ( a > fil_noquery ) ; a-- );
+ for (a = fil_noquery + strlen(fil_noquery) - 1 ; *a != '.' && *a != '/' && a > fil_noquery ; a-- );
if (*a == '.') { // a une extension
char BIGSTK fil_noquery[HTS_URLMAXSIZE*2];
char* b;
@@ -3690,15 +3702,15 @@ HTSEXT_API char* unescape_http(char *catbuff, const char* s) {
}
// unescape in URL/URI ONLY what has to be escaped, to form a standard URL/URI
-// DOES NOT DECODE %25
+// DOES NOT DECODE %25 (part of CHAR_DELIM)
HTSEXT_API char* unescape_http_unharm(char *catbuff, const char* s, int no_high) {
int i,j=0;
for (i=0;i<(int) strlen(s);i++) {
if (s[i]=='%') {
int nchar=(char) ehex(s+i+1);
- int test = ( CHAR_RESERVED(nchar)
- || ( nchar != '%' && CHAR_DELIM(nchar) )
+ int test = ( ( CHAR_RESERVED(nchar) && nchar != '+' ) /* %2B => + (not in query!) */
+ || CHAR_DELIM(nchar)
|| CHAR_UNWISE(nchar)
|| CHAR_LOW(nchar) /* CHAR_SPECIAL */
|| CHAR_XXAVOID(nchar)
@@ -3810,9 +3822,13 @@ HTSEXT_API void x_escape_http(char* s,int mode) {
|| CHAR_XXAVOID(*s) );
}
else if (mode==30) { // échapper que ce qui est nécessaire
- test = (
- CHAR_LOW(*s)
- || CHAR_XXAVOID(*s) );
+ test =
+ ( *s != '/' && CHAR_RESERVED(*s) )
+ || CHAR_DELIM(*s)
+ || CHAR_UNWISE(*s)
+ || CHAR_SPECIAL(*s)
+ || CHAR_XXAVOID(*s)
+ ;
}
if (test) {
@@ -4143,7 +4159,7 @@ HTSEXT_API int is_knowntype(httrackp *opt,const char *fil) {
ext = get_ext(catbuff, fil);
while(strnotempty(hts_mime[j][1])) {
if (strfield2(hts_mime[j][1], ext)) {
- if (strfield2(hts_mime[j][0], "text/html"))
+ if (is_html_mime_type(hts_mime[j][0]))
return 2;
else
return 1;
@@ -4189,7 +4205,7 @@ HTSEXT_API int is_userknowntype(httrackp *opt,const char *fil) {
get_userhttptype(opt, mime, fil);
if (!strnotempty(mime))
return 0;
- else if (strfield2(mime,"text/html"))
+ else if (is_html_mime_type(mime))
return 2;
else
return 1;
@@ -4229,6 +4245,43 @@ int may_unknown(httrackp *opt,const char* st) {
return 0;
}
+/* returns 1 if the mime/filename seems to be bogus because of badly recognized multiple extension
+ ; such as "application/x-wais-source" for "httrack-3.42-1.el5.src.rpm"
+ reported by Hippy Dave 08/2008 (3.43) */
+int may_bogus_multiple(httrackp *opt, const char* mime, const char *filename) {
+ int j;
+ for(j = 0 ; strnotempty(hts_mime_bogus_multiple[j]) ; j++) {
+ if (strfield2(hts_mime_bogus_multiple[j], mime)) { /* found mime type in suspicious list */
+ char ext[64];
+ ext[0] = '\0';
+ give_mimext(ext, mime);
+ if (ext[0] != 0) { /* we have an extension for that */
+ const size_t ext_size = strlen(ext);
+ const char *file = strrchr(filename, '/'); /* fetch terminal filename */
+ if (file != NULL) {
+ int i;
+ for(i = 0 ; file[i] != 0 ; i++) {
+ if (i > 0 && file[i - 1] == '.' && strncasecmp(&file[i], ext, ext_size) == 0
+ && ( file[i + ext_size] == 0 || file[i + ext_size] == '.' || file[i + ext_size] == '?' ) ) {
+ return 1; /* is ambiguous */
+ }
+ }
+ }
+ }
+ return 0;
+ }
+ }
+ return 0;
+}
+
+/* filename extension should not be changed because potentially bogus ; replaces may_unknown() (3.43) */
+int may_unknown2(httrackp *opt, const char* mime, const char *filename) {
+ int ret = may_unknown(opt, mime);
+ if (ret == 0) {
+ ret = may_bogus_multiple(opt, mime, filename);
+ }
+ return ret;
+}
// -- Utils fichiers
@@ -5568,5 +5621,75 @@ HTSEXT_API int hts_resetvar(void) {
return 0;
}
+#ifdef _WIN32
+
+typedef struct dirent dirent;
+DIR *opendir(const char *name) {
+ WIN32_FILE_ATTRIBUTE_DATA st;
+ DIR *dir;
+ size_t len;
+ int i;
+ if (name == NULL || *name == '\0') {
+ errno = ENOENT;
+ return NULL;
+ }
+ if (!GetFileAttributesEx(name, GetFileExInfoStandard, &st)
+ || ( st.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) == 0) {
+ errno = ENOENT;
+ return NULL;
+ }
+ dir = calloc(sizeof(DIR), 1);
+ if (dir == NULL) {
+ errno = ENOMEM;
+ return NULL;
+ }
+ len = strlen(name);
+ dir->h = INVALID_HANDLE_VALUE;
+ dir->name = malloc(len + 2 + 1);
+ strcpy(dir->name, name);
+ for(i = 0 ; dir->name[i] != '\0' ; i++) {
+ if (dir->name[i] == '/') {
+ dir->name[i] = '\\';
+ }
+ }
+ strcat(dir->name, "\\*");
+ return dir;
+}
+
+struct dirent *readdir(DIR *dir) {
+ WIN32_FIND_DATAA find;
+ if (dir->h == INVALID_HANDLE_VALUE) {
+ dir->h = FindFirstFileA(dir->name, &find);
+ } else {
+ if (!FindNextFile(dir->h, &find)) {
+ FindClose(dir->h);
+ dir->h = INVALID_HANDLE_VALUE;
+ }
+ }
+ if (dir->h != INVALID_HANDLE_VALUE) {
+ dir->entry.d_name[0] = 0;
+ strncat(dir->entry.d_name, find.cFileName, HTS_DIRENT_SIZE - 1);
+ return &dir->entry;
+ }
+ errno = ENOENT;
+ return NULL;
+}
+
+int closedir(DIR *dir) {
+ if (dir != NULL) {
+ if (dir->h != INVALID_HANDLE_VALUE) {
+ CloseHandle(dir->h);
+ }
+ if (dir->name != NULL) {
+ free(dir->name);
+ }
+ free(dir);
+ return 0;
+ }
+ errno = EBADF;
+ return -1;
+}
+#endif
+
// Fin
diff --git a/src/htslib.h b/src/htslib.h
index ae5fde7..19d7adc 100644
--- a/src/htslib.h
+++ b/src/htslib.h
@@ -62,6 +62,12 @@ typedef struct t_dnscache t_dnscache;
#include "htsnet.h"
#include "htsdefines.h"
+/* readdir() */
+#ifndef _WIN32
+#include <sys/types.h>
+#include <dirent.h>
+#endif
+
/* cookies et auth */
#include "htsbauth.h"
@@ -349,6 +355,8 @@ HTSEXT_API int is_dyntype(const char *fil);
HTSEXT_API char* get_ext(char *catbuff, const char *fil);
#endif
int may_unknown(httrackp *opt,const char* st);
+int may_bogus_multiple(httrackp *opt, const char* mime, const char *filename);
+int may_unknown2(httrackp *opt,const char* mime, const char *filename);
#ifndef HTTRACK_DEFLIB
HTSEXT_API char* jump_identification(const char*);
HTSEXT_API char* jump_normalized(const char*);
@@ -546,8 +554,14 @@ HTS_STATIC int strcmpnocase(char* a,char* b) {
#else
#define OPT_MMS(a) (0)
#endif
-#define is_hypertext_mime__(a) \
+
+#define is_html_mime_type(a) \
( (strfield2((a),"text/html")!=0)\
+ || (strfield2((a),"application/xhtml+xml")!=0) \
+ )
+#define is_hypertext_mime__(a) \
+ ( \
+ is_html_mime_type(a)\
|| (strfield2((a),"application/x-javascript")!=0) \
|| (strfield2((a),"text/css")!=0) \
/*|| (strfield2((a),"text/vnd.wap.wml")!=0)*/ \
@@ -564,7 +578,6 @@ HTS_STATIC int strcmpnocase(char* a,char* b) {
|| OPT_MMS(a) \
)
-
/* Library internal definictions */
#ifdef HTS_INTERNAL_BYTECODE
@@ -634,6 +647,25 @@ HTS_STATIC char *getcwd_ce(char *buffer, int maxlen) {
#define getcwd getcwd_ce
#endif
+/* dirent() compatibility */
+#ifdef _WIN32
+#define HTS_DIRENT_SIZE 256
+struct dirent {
+ ino_t d_ino; /* ignored */
+ off_t d_off; /* ignored */
+ unsigned short d_reclen; /* ignored */
+ unsigned char d_type; /* ignored */
+ char d_name[HTS_DIRENT_SIZE]; /* filename */
+};
+typedef struct DIR DIR;
+struct DIR {
+ HANDLE h;
+ struct dirent entry;
+ char *name;
+};
+DIR *opendir(const char *name);
+struct dirent *readdir(DIR *dir);
+int closedir(DIR *dir);
#endif
-
+#endif
diff --git a/src/htsmd5.c b/src/htsmd5.c
index 114ae7a..c026225 100644
--- a/src/htsmd5.c
+++ b/src/htsmd5.c
@@ -52,24 +52,11 @@ int domd5mem(const unsigned char * buf, size_t len,
unsigned char * digest, int asAscii) {
int endian = 1;
unsigned char bindigest[16];
-#if 1
-//#ifndef _WIN32_WCE
MD5_CTX ctx;
MD5Init(&ctx, * ( (char*) &endian));
MD5Update(&ctx, buf, (unsigned int) len);
MD5Final(bindigest, &ctx);
-#else
- /* Broken md5.. temporary hack */
- int i;
- memset(bindigest, 0, 16);
- if (len > 0) {
- for(i = 0 ; i < len + 16 ; i++) {
- bindigest[i % 16] ^= ( buf[i % len] + i + len );
- bindigest[(i - 1) % 16] ^= bindigest[ ( i + buf[i % len]*buf[(i-1) % len] ) % 16];
- }
- }
-#endif
if (!asAscii) {
memcpy(digest, bindigest, 16);
@@ -80,7 +67,6 @@ int domd5mem(const unsigned char * buf, size_t len,
bindigest[4], bindigest[5], bindigest[6], bindigest[7],
bindigest[8], bindigest[9], bindigest[10], bindigest[11],
bindigest[12], bindigest[13], bindigest[14], bindigest[15]);
-
}
return 0;
diff --git a/src/htsmodules.c b/src/htsmodules.c
index 8f7facc..07291bd 100644
--- a/src/htsmodules.c
+++ b/src/htsmodules.c
@@ -263,30 +263,35 @@ void htspe_init(void) {
handle = LoadLibraryA((char*)"ssleay32");
#else
/* We are compatible with 0.9.6/7/8/8b and potentially above */
- handle = dlopen("libssl.so.0.9.8g", RTLD_LAZY); /* added 8g release too (Debarshi Ray) */
- if (handle == NULL) {
- handle = dlopen("libssl.so.0.9.8b", RTLD_LAZY);
- }
- if (handle == NULL) {
- handle = dlopen("libssl.so.0.9.8", RTLD_LAZY);
- }
- if (handle == NULL) {
- handle = dlopen("libssl.so.0.9.7", RTLD_LAZY);
- }
- if (handle == NULL) {
- handle = dlopen("libssl.so.0.9.6", RTLD_LAZY);
- }
- if (handle == NULL) {
- /* Try harder with .0 if any */
- handle = dlopen("libssl.so.0", RTLD_LAZY);
- }
- if (handle == NULL) {
- /* Try harder with devel link */
- handle = dlopen("libssl.so", RTLD_LAZY);
+ static const char *const libs[] = {
+ "libssl.so.1.0",
+ "libssl.so.1",
+ "libssl.so.1.0.0",
+ /* */
+ "libssl.so.0",
+ "libssl.so.0.9",
+ "libssl.so.0.9.8p",
+ "libssl.so.0.9.8o",
+ "libssl.so.0.9.8n",
+ "libssl.so.0.9.8m",
+ "libssl.so.0.9.8l",
+ "libssl.so.0.9.8k", /* (Debarshi Ray) */
+ "libssl.so.0.9.8j", /* (Debarshi Ray) */
+ "libssl.so.0.9.8g", /* Added 8g release too (Debarshi Ray) */
+ "libssl.so.0.9.8b",
+ "libssl.so.0.9.8",
+ "libssl.so.0.9.7",
+ "libssl.so.0.9.6",
+ "libssl.so", /* Try harder with devel link */
+ NULL
+ };
+ int i;
+ for(i = 0, handle = NULL ; handle == NULL && libs[i] != NULL ; i++) {
+ handle = dlopen(libs[i], RTLD_LAZY);
}
#endif
ssl_handle = handle;
- if (handle) {
+ if (handle != NULL) {
SSL_shutdown = (t_SSL_shutdown) DynamicGet(handle, (char*)"SSL_shutdown");
SSL_free = (t_SSL_free) DynamicGet(handle, (char*)"SSL_free");
SSL_new = (t_SSL_new) DynamicGet(handle, (char*)"SSL_new");
diff --git a/src/htsname.c b/src/htsname.c
index 1a48f9f..0a24a5a 100644
--- a/src/htsname.c
+++ b/src/htsname.c
@@ -40,6 +40,7 @@ Please visit our Website: http://www.httrack.com
#include "htscore.h"
#include "htsname.h"
+#include "md5.h"
#include "htsmd5.h"
#include "htstools.h"
#include <ctype.h>
@@ -112,7 +113,8 @@ int url_savename(char* adr_complete, char* fil_complete, char* save,
struct_back* sback, cache_back* cache, hash_struct* hash,
int ptr, int numero_passe, const lien_back* headers) {
char catbuff[CATBUFF_SIZE];
- const char* mime_type = ( headers && HTTP_IS_OK(headers->r.statuscode) ) ? headers->r.contenttype : NULL;
+ const char* mime_type = ( headers && !HTTP_IS_REDIRECT(headers->r.statuscode) ) ? headers->r.contenttype : NULL;
+ /*const char* mime_type = ( headers && HTTP_IS_OK(headers->r.statuscode) ) ? headers->r.contenttype : NULL;*/
lien_back* const back = sback->lnk;
/* */
char BIGSTK newfil[HTS_URLMAXSIZE*2]; /* ="" */
@@ -349,7 +351,7 @@ int url_savename(char* adr_complete, char* fil_complete, char* save,
if (!( (opt->check_type==1) && (fil[strlen(fil)-1]=='/') )) // slash doit être html?
if ( opt->savename_delayed == 2 || (ishtest=ishtml(opt,fil)) < 0) { // on ne sait pas si c'est un html ou un fichier..
// lire dans le cache
- htsblk r = cache_read(opt,cache,adr,fil,NULL,NULL); // test uniquement
+ htsblk r = cache_read_including_broken(opt,cache,adr,fil); // test uniquement
if (r.statuscode != -1) { // pas d'erreur de lecture cache
char s[16]; s[0]='\0';
if ( (opt->debug>1) && (opt->log!=NULL) ) {
@@ -360,7 +362,7 @@ int url_savename(char* adr_complete, char* fil_complete, char* save,
ext_chg=2; /* change filename */
strcpybuff(ext,r.cdispo);
}
- else if (!may_unknown(opt,r.contenttype) || ishtest == -2) { // on peut patcher à priori?
+ else if (!may_unknown2(opt,r.contenttype,fil) || ishtest == -2) { // on peut patcher à priori?
give_mimext(s,r.contenttype); // obtenir extension
if (strnotempty(s)>0) { // on a reconnu l'extension
ext_chg=1;
@@ -395,7 +397,7 @@ int url_savename(char* adr_complete, char* fil_complete, char* save,
mime_from_file[0] = 0;
get_httptype(opt, mime_from_file, fil, 1);
if (!strnotempty(mime_from_file) || strcasecmp(mime_type, mime_from_file) != 0) { /* different mime for this type */
- if (!may_unknown(opt, mime_type)) {
+ if (!may_unknown2(opt, mime_type, fil)) {
ext_chg = 1;
}
} else {
@@ -599,7 +601,7 @@ int url_savename(char* adr_complete, char* fil_complete, char* save,
ext_chg=2; /* change filename */
strcpybuff(ext,back[b].r.cdispo);
}
- else if (!may_unknown(opt,back[b].r.contenttype) || ishtest == -2 ) { // on peut patcher à priori? (pas interdit ou pas de type)
+ else if (!may_unknown2(opt, back[b].r.contenttype, back[b].url_fil) || ishtest == -2 ) { // on peut patcher à priori? (pas interdit ou pas de type)
give_mimext(s,back[b].r.contenttype); // obtenir extension
if (strnotempty(s)>0) { // on a reconnu l'extension
ext_chg=1;
@@ -1483,4 +1485,35 @@ void url_savename_addstr(char* d,char* s) {
d[i]='\0';
}
+/* "filename" should be at least 64 bytes. */
+void url_savename_refname(const char *adr, const char *fil, char *filename) {
+ unsigned char bindigest[16];
+ MD5_CTX ctx;
+ MD5Init(&ctx, 0);
+ MD5Update(&ctx, adr, (unsigned int) strlen(adr));
+ MD5Update(&ctx, ",", 1);
+ MD5Update(&ctx, fil, (unsigned int) strlen(fil));
+ MD5Final(bindigest, &ctx);
+ sprintf(filename, CACHE_REFNAME "/"
+ "%02x%02x%02x%02x%02x%02x%02x%02x"
+ "%02x%02x%02x%02x%02x%02x%02x%02x"
+ ".ref",
+ bindigest[0], bindigest[1], bindigest[2], bindigest[3],
+ bindigest[4], bindigest[5], bindigest[6], bindigest[7],
+ bindigest[8], bindigest[9], bindigest[10], bindigest[11],
+ bindigest[12], bindigest[13], bindigest[14], bindigest[15]);
+}
+
+char *url_savename_refname_fullpath(httrackp* opt, const char *adr, const char *fil) {
+ char digest_filename[64];
+ url_savename_refname(adr, fil, digest_filename);
+ return fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), digest_filename);
+}
+
+/* remove refname if any */
+void url_savename_refname_remove(httrackp* opt, const char *adr, const char *fil) {
+ char *filename = url_savename_refname_fullpath(opt, adr, fil);
+ (void) unlink(filename);
+}
+
#undef test_flush
diff --git a/src/htsname.h b/src/htsname.h
index 9d98622..0bb4c2c 100644
--- a/src/htsname.h
+++ b/src/htsname.h
@@ -54,6 +54,7 @@ HTS_STATIC int strendwith_(const char* a, const char* b) {
}
return (j == -1);
}
+#define CACHE_REFNAME "hts-cache/ref"
/* Library internal definictions */
#ifdef HTS_INTERNAL_BYTECODE
@@ -98,6 +99,9 @@ int url_savename(char* adr_complete, char* fil_complete, char* save,
void standard_name(char* b,char* dot_pos,char* nom_pos,char* fil_complete,int short_ver);
void url_savename_addstr(char* d,char* s);
char* url_md5(char* digest_buffer, char* fil_complete);
+void url_savename_refname(const char *adr, const char *fil, char *filename);
+char *url_savename_refname_fullpath(httrackp* opt, const char *adr, const char *fil);
+void url_savename_refname_remove(httrackp* opt, const char *adr, const char *fil);
#endif
#endif
diff --git a/src/htsnet.h b/src/htsnet.h
index 7c7fbe3..14b00f0 100644
--- a/src/htsnet.h
+++ b/src/htsnet.h
@@ -65,8 +65,8 @@ Please visit our Website: http://www.httrack.com
#endif
#include <sys/ioctl.h>
/* gethostname & co */
-#ifdef HAVE_UNISTD_H
- #include <unistd.h>
+#ifndef _WIN32
+#include <unistd.h>
#endif
/* inet_addr */
#include <arpa/inet.h>
diff --git a/src/htsopt.h b/src/htsopt.h
index 0b304f8..db50dd2 100644
--- a/src/htsopt.h
+++ b/src/htsopt.h
@@ -217,7 +217,7 @@ struct htsoptstate {
int verif_external_status;
t_dnscache *dns_cache;
/* HTML parsing state */
- char _hts_errmsg[1024];
+ char _hts_errmsg[HTS_CDLMAXSIZE + 256];
int _hts_in_html_parsing;
int _hts_in_html_done;
int _hts_in_html_poll;
diff --git a/src/htsparse.c b/src/htsparse.c
index b39b41f..34ef831 100644
--- a/src/htsparse.c
+++ b/src/htsparse.c
@@ -313,30 +313,50 @@ Please visit our Website: http://www.httrack.com
} \
}
-#define ENGINE_LOAD_CONTEXT() \
- ENGINE_LOAD_CONTEXT_BASE(); \
+#define ENGINE_DEFINE_CONTEXT() \
+ ENGINE_DEFINE_CONTEXT_BASE(); \
+ /* */ \
+ htsblk* const r HTS_UNUSED = stre->r_; \
+ hash_struct* const hash HTS_UNUSED = stre->hash_; \
+ char* const codebase HTS_UNUSED = stre->codebase; \
+ char* const base HTS_UNUSED = stre->base; \
+ /* */ \
+ const char * const template_header HTS_UNUSED = stre->template_header_; \
+ const char * const template_body HTS_UNUSED = stre->template_body_; \
+ const char * const template_footer HTS_UNUSED = stre->template_footer_; \
+ /* */ \
+ char* const makeindex_firstlink = stre->makeindex_firstlink_; \
+ /* */ \
+ /* */ \
+ int error = * stre->error_; \
+ int store_errpage = * stre->store_errpage_; \
+ int lien_max = *stre->lien_max_; \
/* */ \
- htsblk* r HTS_UNUSED = stre->r_; \
- hash_struct* hash HTS_UNUSED = stre->hash_; \
- int lien_max HTS_UNUSED = *stre->lien_max_; \
+ int makeindex_done = *stre->makeindex_done_; \
+ FILE* makeindex_fp = *stre->makeindex_fp_; \
+ int makeindex_links = *stre->makeindex_links_; \
/* */ \
- int error HTS_UNUSED = * stre->error_; \
- int store_errpage HTS_UNUSED = * stre->store_errpage_; \
- char* codebase HTS_UNUSED = stre->codebase; \
- char* base HTS_UNUSED = stre->base; \
+ LLint stat_fragment = *stre->stat_fragment_; \
+ TStamp makestat_time = stre->makestat_time; \
+ FILE* makestat_fp = stre->makestat_fp
+
+#define ENGINE_SET_CONTEXT() \
+ ENGINE_SET_CONTEXT_BASE(); \
/* */ \
- int makeindex_done HTS_UNUSED = *stre->makeindex_done_; \
- FILE* makeindex_fp HTS_UNUSED = *stre->makeindex_fp_; \
- int makeindex_links HTS_UNUSED = *stre->makeindex_links_; \
- char* makeindex_firstlink HTS_UNUSED = stre->makeindex_firstlink_; \
+ error = * stre->error_; \
+ store_errpage = * stre->store_errpage_; \
+ lien_max = *stre->lien_max_; \
/* */ \
- char *template_header HTS_UNUSED = stre->template_header_; \
- char *template_body HTS_UNUSED = stre->template_body_; \
- char *template_footer HTS_UNUSED = stre->template_footer_; \
+ makeindex_done = *stre->makeindex_done_; \
+ makeindex_fp = *stre->makeindex_fp_; \
+ makeindex_links = *stre->makeindex_links_; \
/* */ \
- LLint stat_fragment HTS_UNUSED = *stre->stat_fragment_; \
- TStamp makestat_time HTS_UNUSED = stre->makestat_time; \
- FILE* makestat_fp HTS_UNUSED = stre->makestat_fp
+ stat_fragment = *stre->stat_fragment_; \
+ makestat_time = stre->makestat_time; \
+ makestat_fp = stre->makestat_fp
+
+#define ENGINE_LOAD_CONTEXT() \
+ ENGINE_DEFINE_CONTEXT()
#define ENGINE_SAVE_CONTEXT() \
ENGINE_SAVE_CONTEXT_BASE(); \
@@ -382,9 +402,9 @@ Please visit our Website: http://www.httrack.com
/* Main parser */
int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
+ char catbuff[CATBUFF_SIZE];
/* Load engine variables */
ENGINE_LOAD_CONTEXT();
- char catbuff[CATBUFF_SIZE];
{
char* cAddr = r->adr;
@@ -428,6 +448,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
}
if (!error) {
+ time_t user_interact_timestamp = 0;
int detect_title=0; // détection du title
int back_add_stats = opt->state.back_add_stats;
//
@@ -1331,76 +1352,76 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
expected='('; // parenthèse
expected_end=")"; // fin: parenthèse
}
- if (!nc) if ( (nc = strfield(adr,"url")) && (!isalnum(*(adr - 1)))
- && *(adr - 1) != '_'
- ) { // url(url)
- expected='('; // parenthèse
- expected_end=")"; // fin: parenthèse
- can_avoid_quotes=1;
- quotes_replacement=')';
- }
- if (!nc) if ( (nc = strfield(adr,"import")) ) { // import "url"
- if (is_space(*(adr+nc))) {
- expected=0; // no char expected
- } else
- nc=0;
- }
- if (nc) {
- char *a;
- a=adr+nc;
+ if (!nc && (nc = strfield(adr,"url")) && (!isalnum(*(adr - 1))) && *(adr - 1) != '_') { // url(url)
+ expected='('; // parenthèse
+ expected_end=")"; // fin: parenthèse
+ can_avoid_quotes=1;
+ quotes_replacement=')';
+ } else {
+ nc = 0;
+ }
+ if (!nc) if ( (nc = strfield(adr,"import")) ) { // import "url"
+ if (is_space(*(adr+nc))) {
+ expected=0; // no char expected
+ } else
+ nc=0;
+ }
+ if (nc) {
+ char *a;
+ a=adr+nc;
+ while(is_realspace(*a)) a++;
+ if ((*a == expected) || (!expected)) {
+ if (expected)
+ a++;
while(is_realspace(*a)) a++;
- if ((*a == expected) || (!expected)) {
- if (expected)
+ if ((*a==34) || (*a=='\'') || (can_avoid_quotes)) {
+ char *b,*c;
+ int ndelim=1;
+ if ((*a==34) || (*a=='\''))
a++;
- while(is_realspace(*a)) a++;
- if ((*a==34) || (*a=='\'') || (can_avoid_quotes)) {
- char *b,*c;
- int ndelim=1;
- if ((*a==34) || (*a=='\''))
- a++;
- else
- ndelim=0;
- b=a;
- if (ndelim) {
- while((*b!=34) && (*b!='\'') && (*b!='\0')) b++;
- }
- else {
- while((*b != quotes_replacement) && (*b!='\0')) b++;
- }
- c=b--; c+=ndelim;
- while(*c==' ') c++;
- if ((strchr(expected_end,*c)) || (*c=='\n') || (*c=='\r')) {
- c-=(ndelim+1);
- if ((int) (c - a + 1)) {
- if (ensure_not_mime) {
- int i = 0;
- while(a != NULL && hts_main_mime[i] != NULL && hts_main_mime[i][0] != '\0') {
- int p;
- if ((p=strfield(a, hts_main_mime[i])) && a[p] == '/') {
- a=NULL;
- }
- i++;
+ else
+ ndelim=0;
+ b=a;
+ if (ndelim) {
+ while((*b!=34) && (*b!='\'') && (*b!='\0')) b++;
+ }
+ else {
+ while((*b != quotes_replacement) && (*b!='\0')) b++;
+ }
+ c=b--; c+=ndelim;
+ while(*c==' ') c++;
+ if ((strchr(expected_end,*c)) || (*c=='\n') || (*c=='\r')) {
+ c-=(ndelim+1);
+ if ((int) (c - a + 1)) {
+ if (ensure_not_mime) {
+ int i = 0;
+ while(a != NULL && hts_main_mime[i] != NULL && hts_main_mime[i][0] != '\0') {
+ int p;
+ if ((p=strfield(a, hts_main_mime[i])) && a[p] == '/') {
+ a=NULL;
}
+ i++;
}
- if (a != NULL) {
- if ((opt->debug>1) && (opt->log!=NULL)) {
- char str[512];
- str[0]='\0';
- strncatbuff(str,a,minimum((int) (c - a + 1),32));
- HTS_LOG(opt,LOG_DEBUG); fprintf(opt->log,"link detected in javascript: %s"LF,str); test_flush;
- }
- p=(int) (a - adr); // p non nul: TRAITER CHAINE COMME FICHIER
- if (can_avoid_quotes) {
- ending_p=quotes_replacement;
- }
+ }
+ if (a != NULL) {
+ if ((opt->debug>1) && (opt->log!=NULL)) {
+ char str[512];
+ str[0]='\0';
+ strncatbuff(str,a,minimum((int) (c - a + 1),32));
+ HTS_LOG(opt,LOG_DEBUG); fprintf(opt->log,"link detected in javascript: %s"LF,str); test_flush;
+ }
+ p=(int) (a - adr); // p non nul: TRAITER CHAINE COMME FICHIER
+ if (can_avoid_quotes) {
+ ending_p=quotes_replacement;
}
}
}
+ }
- }
}
}
+ }
} /* HTSPARSE_NO_JAVASCRIPT */
@@ -1932,12 +1953,12 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
unescape_amp(lien);
unescape_amp(query);
// décoder l'inutile (%2E par exemple) et coder espaces
- // XXXXXXXXXXXXXXXXX strcpybuff(lien,unescape_http(lien));
- //strcpybuff(lien,unescape_http_unharm(lien, (no_esc_utf)?0:1));
+ // Bad: strcpybuff(lien,unescape_http(lien));
+ // Bad: strcpybuff(lien,unescape_http_unharm(lien, (no_esc_utf)?0:1));
/* Never unescape high-chars (we don't know the encoding!!) */
strcpybuff(lien,unescape_http_unharm(catbuff,lien, 1)); /* note: '%' is still escaped */
escape_remove_control(lien);
- escape_spc_url(lien);
+ // ???? No! escape_spc_url(lien);
strcatbuff(lien,query); /* restore */
}
@@ -2114,7 +2135,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
strcatbuff(lien, "/");
while( (a > lien) && (*a) && (*a!='/')) a--;
if (*a=='/') { // ok on a repéré le dernier /
- if (start_of_filename != NULL && a >= start_of_filename) {
+ if (start_of_filename != NULL && a + 1 >= start_of_filename) {
*(a+1)='\0'; // couper
}
} else {
@@ -2352,6 +2373,8 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
if ((p_type!=2) && (p_type!=-2)) { // pas base href ou codebase
if (forbidden_url!=1) {
char BIGSTK last_adr[HTS_URLMAXSIZE*2];
+
+ /* Calc */
last_adr[0]='\0';
//char last_fil[HTS_URLMAXSIZE*2]="";
strcpybuff(last_adr,adr); // ancienne adresse
@@ -2398,8 +2421,22 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
&& forbidden_url == 0
&& IS_DELAYED_EXT(save)
)
- { // pas d'erreur, on continue
+ {
+ time_t t;
+
+ // pas d'erreur, on continue
r_sv = hts_wait_delayed(str, adr, fil, save, parenturladr, parenturlfil, former_adr, former_fil, &forbidden_url);
+
+ /* User interaction, because hts_wait_delayed can be slow.. (3.43) */
+ t = time(NULL);
+ if (user_interact_timestamp == 0 || t - user_interact_timestamp > 0) {
+ user_interact_timestamp = t;
+ ENGINE_SAVE_CONTEXT();
+ {
+ hts_mirror_process_user_interaction(str, stre);
+ }
+ ENGINE_SET_CONTEXT();
+ }
}
// record!
@@ -2715,6 +2752,7 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
if (!in_media) { // In media (such as real audio): don't patch
/* Never escape high-chars (we don't know the encoding!!) */
escape_uri_utf(tempo);
+
//if (!no_esc_utf)
// escape_uri(tempo); // escape with %xx
//else {
@@ -3596,18 +3634,13 @@ int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre)
}
-
-
/*
-Wait for next file and
-check 301, 302, .. statuscodes (moved)
+ Process pause, link adding..
*/
-int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
+void hts_mirror_process_user_interaction(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
+ int b;
/* Load engine variables */
ENGINE_LOAD_CONTEXT();
- /* */
- int b;
- int n;
#if BDEBUG==1
printf("\nBack test..\n");
@@ -3664,7 +3697,7 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended*
}
*stre->exit_xh_=1; // exit requested
XH_uninit;
- return 0;
+ return ;
}
}
}
@@ -3731,7 +3764,7 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended*
}
//if (opt->getmode & 1) { if (fp) { fclose(fp); fp=NULL; } }
XH_uninit; // désallocation mémoire & buffers
- return 0;
+ return ;
}
} else {
if ( (opt->debug>0) && (opt->log!=NULL) ) {
@@ -3781,15 +3814,35 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended*
}
*stre->exit_xh_=1; // exit requested
XH_uninit;
- return 0;
+ return ;
}
Sleep(100); // pause
}
opt->state._hts_in_html_parsing = prev;
}
+ ENGINE_SAVE_CONTEXT();
+ return ;
+}
+
+/*
+Wait for next file and
+check 301, 302, .. statuscodes (moved)
+*/
+int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended* stre) {
+ /* Load engine variables */
+ ENGINE_DEFINE_CONTEXT();
+ int b;
+ int n;
+
+ /* User interaction */
+ ENGINE_SAVE_CONTEXT();
+ {
+ hts_mirror_process_user_interaction(str, stre);
+ }
+ ENGINE_SET_CONTEXT();
// si le fichier n'est pas en backing, le mettre..
- if (!back_exist(sback,opt,urladr,urlfil,savename)) {
+ if (!back_exist(str->sback,str->opt,urladr,urlfil,savename)) {
#if BDEBUG==1
printf("crash backing: %s%s\n",liens[ptr]->adr,liens[ptr]->fil);
#endif
@@ -3826,6 +3879,12 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended*
// ------------------------------------------------------------
// attendre que le fichier actuel soit prêt - BOUCLE D'ATTENTE
do {
+ /* User interaction */
+ ENGINE_SAVE_CONTEXT();
+ {
+ hts_mirror_process_user_interaction(str, stre);
+ }
+ ENGINE_SET_CONTEXT();
// index du lien actuel
b=back_index(opt,sback,urladr,urlfil,savename);
@@ -4093,49 +4152,6 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended*
back_maydelete(opt,cache,sback,b);
}
- // progression
-#if 0
- if (opt->aff_progress) {
- TStamp tl=time_local();
- if ((tl-HTS_STAT.stat_timestart)>0) {
- char s[32];
- int i=0;
- lastime=tl;
- _CLRSCR; _GOTOXY("1","1");
- printf("Rate=%d B/sec\n",(int) (HTS_STAT.HTS_TOTAL_RECV/(tl-HTS_STAT.stat_timestart)));
- while(i<minimum(back_max,99)) { // **
- if (back[i].status>=0) { // loading..
- s[0]='\0';
- if (strlen(back[i].url_fil)>16)
- strcatbuff(s,back[i].url_fil+strlen(back[i].url_fil)-16);
- else
- strncatbuff(s,back[i].url_fil,16);
- printf("%s : ",s);
-
- printf("[");
- if (back[i].r.totalsize>0) {
- int p;
- int j;
- p=(int)((back[i].r.size*10)/back[i].r.totalsize);
- p=minimum(10,p);
- for(j=0;j<p;j++) printf("*");
- for(j=0;j<(10-p);j++) printf("-");
- } else {
- printf(LLintP,(LLint)back[i].r.size);
- }
- printf("]");
-
- //} else if (back[i].status==STATUS_READY) {
- // strcpybuff(s,"ENDED");
- }
- printf("\n");
- i++;
- }
- io_flush;
- }
- }
-#endif
-
// débug graphique
#if BDEBUG==2
{
@@ -4163,12 +4179,6 @@ int hts_mirror_wait_for_next_file(htsmoduleStruct* str, htsmoduleStructExtended*
#endif
}
- /*else {
- #if BDEBUG==1
- printf("back index error\n");
- #endif
- }
- */
ENGINE_SAVE_CONTEXT();
return 0;
@@ -4184,6 +4194,9 @@ int hts_wait_delayed(htsmoduleStruct* str,
hash_struct* const hash = hashptr;
int r_sv=0;
+ int in_error = 0;
+ LLint in_error_size = 0;
+ char in_error_msg[32];
// resolve unresolved type
if (opt->savename_delayed != 0
@@ -4385,20 +4398,12 @@ int hts_wait_delayed(htsmoduleStruct* str,
/* Error */
if (HTTP_IS_ERROR(back[b].r.statuscode))
{
- /* 'no error page' selected or file discarded by size rules! */
- if (!opt->errpage || ( back[b].r.statuscode == STATUSCODE_TOO_BIG ) ) {
- /* Note: the cache 'cached_tests' system will remember this error, and we'll only issue ONE request */
- *forbidden_url = 1; /* Forbidden! */
- if (opt->log != NULL) {
- if (back[b].r.statuscode == STATUSCODE_TOO_BIG) {
- HTS_LOG(opt,LOG_ERROR); fprintf(opt->log,"link not taken because of its size (%d bytes) at %s%s"LF,(int)back[b].r.totalsize,adr,fil);
- } else {
- HTS_LOG(opt,LOG_ERROR); fprintf(opt->log,"link not taken because of error (%d '%s') at %s%s"LF,back[b].r.statuscode,back[b].r.msg,adr,fil);
- }
- test_flush;
- }
- break;
- }
+ /* seen as in error */
+ in_error = back[b].r.statuscode;
+ in_error_msg[0] = 0;
+ strncat(in_error_msg, back[b].r.msg, sizeof(in_error_msg) - 1);
+ in_error_size = back[b].r.totalsize;
+ /* don't break, even with "don't take error pages" switch, because we need to process the slot anyway (and cache the error) */
}
/* Moved! */
else if (HTTP_IS_REDIRECT(back[b].r.statuscode))
@@ -4541,12 +4546,38 @@ int hts_wait_delayed(htsmoduleStruct* str,
} // while(IS_DELAYED_EXT(save))
+ if (in_error != 0) {
+ /* 'no error page' selected or file discarded by size rules! */
+ if (!opt->errpage || ( in_error == STATUSCODE_TOO_BIG ) ) {
+ /* Note: the cache 'cached_tests' system will remember this error, and we'll only issue ONE request */
+#if 0
+ /* No (3.43) - don't do that. We must not post-exclude an authorized link, because this will prevent the cache
+ system from processing it, leading to refetch it endlessly. Just accept it, and handle the error as
+ usual during parsing.
+ */
+ *forbidden_url = 1; /* Forbidden! */
+#endif
+ if (opt->log != NULL && opt->debug > 0) {
+ if (in_error == STATUSCODE_TOO_BIG) {
+ HTS_LOG(opt, LOG_INFO); fprintf(opt->log,"link not taken because of its size (%d bytes) at %s%s"LF,(int)in_error_size,adr,fil);
+ } else {
+ HTS_LOG(opt, LOG_INFO); fprintf(opt->log,"link not taken because of error (%d '%s') at %s%s"LF,in_error,in_error_msg,adr,fil);
+ }
+ test_flush;
+ }
+ }
+ }
+
// error
if (*forbidden_url != 1
&& IS_DELAYED_EXT(save)) {
*forbidden_url = 1;
if (opt->log!=NULL) {
- HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"link is probably looping, type unknown, aborting: %s%s"LF, adr, fil);
+ if (in_error) {
+ HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"link in error (%d '%s'), type unknown, aborting: %s%s"LF, in_error, in_error_msg, adr, fil);
+ } else {
+ HTS_LOG(opt,LOG_WARNING); fprintf(opt->log,"link is probably looping, type unknown, aborting: %s%s"LF, adr, fil);
+ }
test_flush;
}
}
diff --git a/src/htsparse.h b/src/htsparse.h
index afd9e88..638c409 100644
--- a/src/htsparse.h
+++ b/src/htsparse.h
@@ -121,6 +121,11 @@ int htsparse(htsmoduleStruct* str, htsmoduleStructExtended* stre);
int hts_mirror_check_moved(htsmoduleStruct* str, htsmoduleStructExtended* stre);
/*
+ Process user intercations: pause, add link, delete link..
+*/
+void hts_mirror_process_user_interaction(htsmoduleStruct* str, htsmoduleStructExtended* stre);
+
+/*
Get the next file on the queue, waiting for it, handling other files in background..
Parameters: The public module structure, and the private module variables
Returns 0 upon success
@@ -141,7 +146,7 @@ int hts_wait_delayed(htsmoduleStruct* str,
/* Context state */
-#define ENGINE_LOAD_CONTEXT_BASE() \
+#define ENGINE_DEFINE_CONTEXT_BASE() \
lien_url** const liens HTS_UNUSED = (lien_url**) str->liens; \
httrackp* const opt HTS_UNUSED = (httrackp*) str->opt; \
struct_back* const sback HTS_UNUSED = (struct_back*) str->sback; \
@@ -151,11 +156,20 @@ int hts_wait_delayed(htsmoduleStruct* str,
hash_struct* const hashptr HTS_UNUSED = (hash_struct*) str->hashptr; \
const int numero_passe HTS_UNUSED = str->numero_passe; \
const int add_tab_alloc HTS_UNUSED = str->add_tab_alloc; \
- /* */ \
- int lien_tot HTS_UNUSED = *str->lien_tot_; \
- int ptr HTS_UNUSED = *str->ptr_; \
- size_t lien_size HTS_UNUSED = *str->lien_size_; \
- char* lien_buffer HTS_UNUSED = *str->lien_buffer_
+ /* variable */ \
+ int lien_tot = *str->lien_tot_; \
+ int ptr = *str->ptr_; \
+ size_t lien_size = *str->lien_size_; \
+ char* lien_buffer = *str->lien_buffer_
+
+#define ENGINE_SET_CONTEXT_BASE() \
+ lien_tot = *str->lien_tot_; \
+ ptr = *str->ptr_; \
+ lien_size = *str->lien_size_; \
+ lien_buffer = *str->lien_buffer_
+
+#define ENGINE_LOAD_CONTEXT_BASE() \
+ ENGINE_DEFINE_CONTEXT_BASE()
#define ENGINE_SAVE_CONTEXT_BASE() \
/* Apply changes */ \
diff --git a/src/htsserver.c b/src/htsserver.c
index abcd1be..855db75 100644
--- a/src/htsserver.c
+++ b/src/htsserver.c
@@ -302,7 +302,7 @@ int smallserver(T_SOC soc,char* url,char* method,char* data, char* path) {
};
initStrElt initStr[] = {
{ "user", "Mozilla/4.5 (compatible; HTTrack 3.0x; Windows 98)" },
- { "footer", "<!-- Mirrored from %s%s by HTTrack Website Copier/3.x [XR&CO'2006], %s -->" },
+ { "footer", "<!-- Mirrored from %s%s by HTTrack Website Copier/3.x [XR&CO'2008], %s -->" },
{ "url2", "+*.png +*.gif +*.jpg +*.css +*.js -ad.doubleclick.net/*" },
{ NULL, NULL }
};
@@ -332,8 +332,6 @@ int smallserver(T_SOC soc,char* url,char* method,char* data, char* path) {
char line[8192];
char line2[1024];
T_SOC soc_c;
- struct sockaddr dummyaddr;
- int dummylen = sizeof(struct sockaddr);
LLint length = 0;
char* error_redirect = NULL;
@@ -349,7 +347,6 @@ int smallserver(T_SOC soc,char* url,char* method,char* data, char* path) {
StringCat(tmpbuff, "");
StringCat(tmpbuff2, "");
StringCat(fspath, "");
- memset(&dummyaddr, 0, sizeof(dummyaddr));
/* UnLock */
webhttrack_release();
@@ -360,7 +357,7 @@ int smallserver(T_SOC soc,char* url,char* method,char* data, char* path) {
#endif
/* Accept */
- while ( (soc_c = (T_SOC) accept(soc, &dummyaddr, &dummylen)) == INVALID_SOCKET);
+ while ( (soc_c = (T_SOC) accept(soc, NULL, NULL)) == INVALID_SOCKET);
/* Lock */
webhttrack_lock();
diff --git a/src/htswizard.c b/src/htswizard.c
index 80cbbda..403ce34 100644
--- a/src/htswizard.c
+++ b/src/htswizard.c
@@ -684,30 +684,12 @@ static int hts_acceptlink_(httrackp* opt,
// si primaire (plus bas) alors ...
if ((ptr!=0) && (force_mirror==0)) {
- HTS_REQUEST_START;
- HT_PRINT("\n");
- HT_PRINT("At "); HT_PRINT(urladr); HT_PRINT(", there is a link ("); HT_PRINT(adr); HT_PRINT("/"); HT_PRINT(fil); HT_PRINT(") which goes outside the address."LF);
- HT_PRINT("What should I do? (press a key + enter)"LF LF);
- HT_PRINT("* Ignore all further links" LF);
- HT_PRINT("0 Ignore this link (default if empty entry)"LF);
- HT_PRINT("1 Ignore directory and lower structures"LF);
- HT_PRINT("2 Ignore all domain"LF);
- //HT_PRINT("3 (Ignore location, not implemented)\n");
- HT_PRINT(LF);
- HT_PRINT("4 Get only this page/link"LF);
- HT_PRINT("5 Mirror this link (useful)"LF);
- HT_PRINT("6 Mirror links located in the same domain"LF);
- HT_PRINT(LF);
- HTS_REQUEST_END;
- {
- char BIGSTK tempo[HTS_URLMAXSIZE*2];
- tempo[0]='\0';
- strcatbuff(tempo,adr);
- strcatbuff(tempo,"/");
- strcatbuff(tempo,fil);
- s = RUN_CALLBACK1(opt, query3, tempo);
- }
- if (strnotempty(s)==0) // entrée
+ char BIGSTK tempo[HTS_URLMAXSIZE*2];
+ tempo[0]='\0';
+ strcatbuff(tempo,adr);
+ strcatbuff(tempo,fil);
+ s = RUN_CALLBACK1(opt, query3, tempo);
+ if (strnotempty(s)==0) // entrée
n=0;
else if (isdigit((unsigned char)*s))
sscanf(s,"%d",&n);
diff --git a/src/httrack.c b/src/httrack.c
index 778ca41..d1f2f77 100644
--- a/src/httrack.c
+++ b/src/httrack.c
@@ -568,20 +568,38 @@ static int __cdecl htsshow_loop(t_hts_callbackarg *carg, httrackp *opt, lien_bac
}
static const char* __cdecl htsshow_query(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
static char s[12]=""; /* ok */
- printf("%s\nPress <Y><Enter> to confirm, <N><Enter> to abort\n",question);
- io_flush; linput(stdin,s,4);
+ printf("%s\nPress <Y><Enter> to confirm, <N><Enter> to abort\n", question);
+ io_flush;
+ linput(stdin,s,4);
return s;
}
static const char* __cdecl htsshow_query2(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
static char s[12]=""; /* ok */
- printf("%s\nPress <Y><Enter> to confirm, <N><Enter> to abort\n",question);
- io_flush; linput(stdin,s,4);
+ printf("%s\nPress <Y><Enter> to confirm, <N><Enter> to abort\n", question);
+ io_flush;
+ linput(stdin,s,4);
return s;
}
static const char* __cdecl htsshow_query3(t_hts_callbackarg *carg, httrackp *opt, const char* question) {
static char line[256]; /* ok */
+ printf(
+ "\n"
+ "A link, %s, is located beyond this mirror scope.\n"
+ "What should I do? (type in the choice + enter)\n\n"
+ "* Ignore all further links and do not ask any more questions\n"
+ "0 Ignore this link (default if empty entry)\n"
+ "1 Ignore directory and lower structures\n"
+ "2 Ignore all domain\n"
+ "\n"
+ "4 Get only this page/link, but not links inside this page\n"
+ "5 Mirror this link (useful)\n"
+ "6 Mirror all links located on the same domain as this link\n"
+ "\n",
+ question);
do {
- io_flush; linput(stdin,line,206);
+ printf(">> ");
+ io_flush;
+ linput(stdin, line, 200);
} while(!strnotempty(line));
printf("ok..\n");
return line;
diff --git a/src/httrack.vcproj b/src/httrack.vcproj
index 2e8bd28..95b63ae 100755
--- a/src/httrack.vcproj
+++ b/src/httrack.vcproj
@@ -1,36 +1,62 @@
<?xml version="1.0" encoding="Windows-1252"?>
<VisualStudioProject
ProjectType="Visual C++"
- Version="7.10"
+ Version="9,00"
Name="httrack"
ProjectGUID="{D0E894E7-F64C-4722-9807-9ABB1054D43A}"
- SccProjectName=""
- SccLocalPath="">
+ RootNamespace="httrack"
+ TargetFrameworkVersion="131072"
+ >
<Platforms>
<Platform
- Name="Win32"/>
+ Name="Win32"
+ />
+ <Platform
+ Name="x64"
+ />
</Platforms>
+ <ToolFiles>
+ </ToolFiles>
<Configurations>
<Configuration
Name="Release avec debug|Win32"
OutputDirectory=".\Release_avec_debug"
IntermediateDirectory="c:\temp\vcpp"
ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release_avec_debug/httrack.tlb"
+ HeaderFileName=""
+ />
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/Zm200 "
Optimization="4"
InlineFunctionExpansion="2"
- EnableIntrinsicFunctions="TRUE"
+ EnableIntrinsicFunctions="true"
FavorSizeOrSpeed="1"
- OmitFramePointers="TRUE"
- AdditionalIncludeDirectories="C:\Dev\IPv6Kit\inc\,C:\Dev\zlib\,C:\Dev\openssl\include,C:\Dev\Winhttrack"
- PreprocessorDefinitions="WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE"
+ OmitFramePointers="true"
+ AdditionalIncludeDirectories="&quot;C:\Dev\zlib-1.2.3\&quot;;C:\Dev\openssl\include;C:\Dev\Winhttrack"
+ PreprocessorDefinitions="WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE;_CRT_SECURE_NO_WARNINGS"
RuntimeLibrary="2"
- UsePrecompiledHeader="2"
+ UsePrecompiledHeader="0"
PrecompiledHeaderFile="c:\temp\vcpp/httrack.pch"
AssemblerOutput="2"
AssemblerListingLocation="c:\temp\vcpp/"
@@ -38,65 +64,193 @@
ProgramDataBaseFileName="c:\temp\vcpp/"
BrowseInformation="1"
WarningLevel="3"
- SuppressStartupBanner="TRUE"
- Detect64BitPortabilityProblems="TRUE"
+ SuppressStartupBanner="true"
+ Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
- CompileAs="0"/>
+ CompileAs="0"
+ />
<Tool
- Name="VCCustomBuildTool"/>
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="wsock32.lib libhttrack.lib"
- OutputFile="L:\HTTrack\httrack\httrack.exe"
+ AdditionalDependencies="Ws2_32.lib libhttrack.lib"
+ OutputFile="O:\HTTrack\httrack\httrack.exe"
LinkIncremental="1"
- SuppressStartupBanner="TRUE"
+ SuppressStartupBanner="true"
AdditionalLibraryDirectories="C:\Dev\openssl\lib,C:\Dev\zlib\dll32,C:\Dev\openssl\lib\out32dll"
- GenerateDebugInformation="TRUE"
+ GenerateDebugInformation="true"
ProgramDatabaseFile=".\Release_avec_debug/httrack.pdb"
SubSystem="1"
- TargetMachine="1"/>
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release avec debug|x64"
+ OutputDirectory="$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
TypeLibraryName=".\Release_avec_debug/httrack.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
+ HeaderFileName=""
+ />
<Tool
- Name="VCPreBuildEventTool"/>
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="4"
+ InlineFunctionExpansion="2"
+ EnableIntrinsicFunctions="true"
+ FavorSizeOrSpeed="1"
+ OmitFramePointers="true"
+ AdditionalIncludeDirectories="&quot;C:\Dev\zlib-1.2.3\&quot;;C:\Dev\openssl\include;C:\Dev\Winhttrack"
+ PreprocessorDefinitions="WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE"
+ RuntimeLibrary="2"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="c:\temp\vcpp/httrack.pch"
+ AssemblerOutput="2"
+ AssemblerListingLocation="c:\temp\vcpp/"
+ ObjectFile="c:\temp\vcpp/"
+ ProgramDataBaseFileName="c:\temp\vcpp/"
+ BrowseInformation="1"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
<Tool
- Name="VCPreLinkEventTool"/>
+ Name="VCManagedResourceCompilerTool"
+ />
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="Ws2_32.lib libhttrack.lib"
+ OutputFile="O:\HTTrack\httrack\httrack.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="C:\Dev\openssl\lib,C:\Dev\zlib\dll32,C:\Dev\openssl\lib\out32dll"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Release_avec_debug/httrack.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
<Tool
- Name="VCWebServiceProxyGeneratorTool"/>
+ Name="VCXDCMakeTool"
+ />
<Tool
- Name="VCXMLDataGeneratorTool"/>
+ Name="VCBscMakeTool"
+ />
<Tool
- Name="VCWebDeploymentTool"/>
+ Name="VCFxCopTool"
+ />
<Tool
- Name="VCManagedWrapperGeneratorTool"/>
+ Name="VCAppVerifierTool"
+ />
<Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ Name="VCPostBuildEventTool"
+ />
</Configuration>
<Configuration
Name="Debug|Win32"
OutputDirectory="C:\temp\httrackcmd\Debug"
IntermediateDirectory="C:\temp\httrackcmd\Debug"
ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Debug/httrack.tlb"
+ HeaderFileName=""
+ />
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/Zm200 "
Optimization="0"
- AdditionalIncludeDirectories="C:\Dev\IPv6Kit\inc\,C:\Dev\zlib\,C:\Dev\openssl\include,C:\Dev\Winhttrack"
- PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE"
+ AdditionalIncludeDirectories="&quot;C:\Dev\zlib-1.2.3\&quot;;C:\Dev\openssl\include;C:\Dev\Winhttrack"
+ PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE;_CRT_SECURE_NO_WARNINGS"
RuntimeLibrary="3"
- BufferSecurityCheck="TRUE"
- RuntimeTypeInfo="TRUE"
+ BufferSecurityCheck="true"
+ RuntimeTypeInfo="true"
PrecompiledHeaderFile="c:\temp\vcpp/httrack.pch"
AssemblerOutput="2"
AssemblerListingLocation="c:\temp\vcpp/"
@@ -105,147 +259,415 @@
BrowseInformation="1"
BrowseInformationFile="c:\temp\vcpp/"
WarningLevel="3"
- SuppressStartupBanner="TRUE"
- Detect64BitPortabilityProblems="TRUE"
+ SuppressStartupBanner="true"
+ Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
- CompileAs="0"/>
+ CompileAs="0"
+ />
+ <Tool
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"
+ />
<Tool
- Name="VCCustomBuildTool"/>
+ Name="VCPreLinkEventTool"
+ />
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="wsock32.lib libhttrack.lib"
- OutputFile="C:\temp\httrack.exe"
+ AdditionalDependencies="Ws2_32.lib libhttrack.lib"
+ OutputFile="C:\temp\httrack\httrack.exe"
LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="C:\Dev\openssl\lib,C:\Dev\zlib\dll32,C:\Dev\openssl\lib\out32dll,C:\temp\Debuglib"
- GenerateDebugInformation="TRUE"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="C:\Dev\openssl\lib;C:\temp\release_libz;C:\Dev\openssl\lib\out32dll;C:\temp\Debuglib"
+ GenerateDebugInformation="true"
ProgramDatabaseFile=".\Debug/httrack.pdb"
SubSystem="1"
- TargetMachine="1"/>
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Debug|x64"
+ OutputDirectory="C:\temp\httrackcmd\Debug"
+ IntermediateDirectory="C:\temp\httrackcmd\Debug"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
TypeLibraryName=".\Debug/httrack.tlb"
- HeaderFileName=""/>
- <Tool
- Name="VCPostBuildEventTool"/>
+ HeaderFileName=""
+ />
<Tool
- Name="VCPreBuildEventTool"/>
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="0"
+ AdditionalIncludeDirectories="&quot;C:\Dev\zlib-1.2.3\&quot;;C:\Dev\openssl\include;C:\Dev\Winhttrack"
+ PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE;_CRT_SECURE_NO_WARNINGS"
+ RuntimeLibrary="3"
+ BufferSecurityCheck="true"
+ RuntimeTypeInfo="true"
+ PrecompiledHeaderFile="c:\temp\vcpp/httrack.pch"
+ AssemblerOutput="2"
+ AssemblerListingLocation="c:\temp\vcpp/"
+ ObjectFile="c:\temp\vcpp/"
+ ProgramDataBaseFileName="c:\temp\vcpp/"
+ BrowseInformation="1"
+ BrowseInformationFile="c:\temp\vcpp/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ Detect64BitPortabilityProblems="true"
+ DebugInformationFormat="3"
+ CompileAs="0"
+ />
<Tool
- Name="VCPreLinkEventTool"/>
+ Name="VCManagedResourceCompilerTool"
+ />
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="_DEBUG"
- Culture="1033"/>
+ Culture="1033"
+ />
<Tool
- Name="VCWebServiceProxyGeneratorTool"/>
+ Name="VCPreLinkEventTool"
+ />
<Tool
- Name="VCXMLDataGeneratorTool"/>
+ Name="VCLinkerTool"
+ AdditionalDependencies="Ws2_32.lib libhttrack.lib"
+ OutputFile="C:\temp\httrack64\httrack.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="C:\Dev\openssl\lib,C:\temp\zlib,C:\Dev\openssl\lib\out32dll,C:\temp\Debuglib"
+ GenerateDebugInformation="true"
+ ProgramDatabaseFile=".\Debug/httrack.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
<Tool
- Name="VCWebDeploymentTool"/>
+ Name="VCManifestTool"
+ />
<Tool
- Name="VCManagedWrapperGeneratorTool"/>
+ Name="VCXDCMakeTool"
+ />
<Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="C:\temp\httrackcmd\Release"
IntermediateDirectory="C:\temp\httrackcmd\Release"
ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
UseOfMFC="0"
- ATLMinimizesCRunTimeLibraryUsage="FALSE"
- CharacterSet="2">
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
+ <Tool
+ Name="VCMIDLTool"
+ TypeLibraryName=".\Release/httrack.tlb"
+ HeaderFileName=""
+ />
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/Zm200 "
Optimization="3"
InlineFunctionExpansion="2"
- ImproveFloatingPointConsistency="TRUE"
- AdditionalIncludeDirectories="C:\Dev\IPv6Kit\inc\,C:\Dev\zlib\,C:\Dev\openssl\include,C:\Dev\Winhttrack"
- PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE"
- StringPooling="TRUE"
+ AdditionalIncludeDirectories="&quot;C:\Dev\zlib-1.2.3\&quot;;C:\Dev\openssl\include;C:\Dev\Winhttrack"
+ PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE;_CRT_SECURE_NO_WARNINGS"
+ StringPooling="true"
RuntimeLibrary="2"
- EnableFunctionLevelLinking="TRUE"
- UsePrecompiledHeader="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
PrecompiledHeaderFile="c:\temp\vcpp/httrack.pch"
AssemblerListingLocation="c:\temp\vcpp/"
ObjectFile="c:\temp\vcpp/"
ProgramDataBaseFileName="c:\temp\vcpp/"
WarningLevel="3"
- SuppressStartupBanner="TRUE"
- Detect64BitPortabilityProblems="TRUE"
- CompileAs="0"/>
+ SuppressStartupBanner="true"
+ Detect64BitPortabilityProblems="true"
+ CompileAs="0"
+ />
<Tool
- Name="VCCustomBuildTool"/>
+ Name="VCManagedResourceCompilerTool"
+ />
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
<Tool
Name="VCLinkerTool"
- AdditionalDependencies="wsock32.lib libhttrack.lib"
- OutputFile="L:\HTTrack\httrack\httrack.exe"
+ AdditionalDependencies="Ws2_32.lib libhttrack.lib"
+ OutputFile="O:\HTTrack\httrack\httrack.exe"
LinkIncremental="1"
- SuppressStartupBanner="TRUE"
- AdditionalLibraryDirectories="C:\Dev\openssl\lib,C:\Dev\zlib\dll32,C:\Dev\openssl\lib\out32dll,C:\temp\Releaselib"
- ProgramDatabaseFile=".\Release/httrack.pdb"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="C:\Dev\openssl\lib,C:\temp\zlib,C:\Dev\openssl\lib\out32dll,C:\temp\Releaselib"
+ ProgramDatabaseFile="C:\temp\httrackcmd\Release\httrack.pdb"
SubSystem="1"
- TargetMachine="1"/>
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="1"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
+ <Tool
+ Name="VCXDCMakeTool"
+ />
+ <Tool
+ Name="VCBscMakeTool"
+ />
+ <Tool
+ Name="VCFxCopTool"
+ />
+ <Tool
+ Name="VCAppVerifierTool"
+ />
+ <Tool
+ Name="VCPostBuildEventTool"
+ />
+ </Configuration>
+ <Configuration
+ Name="Release|x64"
+ OutputDirectory="$(SolutionDir)$(PlatformName)\$(ConfigurationName)"
+ IntermediateDirectory="$(PlatformName)\$(ConfigurationName)"
+ ConfigurationType="1"
+ InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC71.vsprops"
+ UseOfMFC="0"
+ ATLMinimizesCRunTimeLibraryUsage="false"
+ CharacterSet="2"
+ >
+ <Tool
+ Name="VCPreBuildEventTool"
+ />
+ <Tool
+ Name="VCCustomBuildTool"
+ />
+ <Tool
+ Name="VCXMLDataGeneratorTool"
+ />
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"
+ />
<Tool
Name="VCMIDLTool"
+ TargetEnvironment="3"
TypeLibraryName=".\Release/httrack.tlb"
- HeaderFileName=""/>
+ HeaderFileName=""
+ />
<Tool
- Name="VCPostBuildEventTool"/>
- <Tool
- Name="VCPreBuildEventTool"/>
+ Name="VCCLCompilerTool"
+ AdditionalOptions="/Zm200 "
+ Optimization="3"
+ InlineFunctionExpansion="2"
+ AdditionalIncludeDirectories="&quot;C:\Dev\zlib-1.2.3\&quot;;C:\Dev\openssl\include;C:\Dev\Winhttrack"
+ PreprocessorDefinitions="NDEBUG;WIN32;_CONSOLE;HTS_ANALYSTE_CONSOLE;_CRT_SECURE_NO_WARNINGS"
+ StringPooling="true"
+ RuntimeLibrary="2"
+ EnableFunctionLevelLinking="true"
+ UsePrecompiledHeader="0"
+ PrecompiledHeaderFile="c:\temp\vcpp/httrack.pch"
+ AssemblerListingLocation="c:\temp\vcpp/"
+ ObjectFile="c:\temp\vcpp/"
+ ProgramDataBaseFileName="c:\temp\vcpp/"
+ WarningLevel="3"
+ SuppressStartupBanner="true"
+ Detect64BitPortabilityProblems="true"
+ CompileAs="0"
+ />
<Tool
- Name="VCPreLinkEventTool"/>
+ Name="VCManagedResourceCompilerTool"
+ />
<Tool
Name="VCResourceCompilerTool"
PreprocessorDefinitions="NDEBUG"
- Culture="1033"/>
+ Culture="1033"
+ />
+ <Tool
+ Name="VCPreLinkEventTool"
+ />
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="Ws2_32.lib libhttrack.lib"
+ OutputFile="O:\HTTrack\httrack\x64\httrack.exe"
+ LinkIncremental="1"
+ SuppressStartupBanner="true"
+ AdditionalLibraryDirectories="C:\Dev\openssl\lib,C:\temp\zlib,C:\Dev\openssl\lib\out32dll,C:\temp\Releaselib"
+ ProgramDatabaseFile="C:\temp\httrackcmd\Release64\httrack.pdb"
+ SubSystem="1"
+ RandomizedBaseAddress="1"
+ DataExecutionPrevention="0"
+ TargetMachine="17"
+ />
+ <Tool
+ Name="VCALinkTool"
+ />
+ <Tool
+ Name="VCManifestTool"
+ />
<Tool
- Name="VCWebServiceProxyGeneratorTool"/>
+ Name="VCXDCMakeTool"
+ />
<Tool
- Name="VCXMLDataGeneratorTool"/>
+ Name="VCBscMakeTool"
+ />
<Tool
- Name="VCWebDeploymentTool"/>
+ Name="VCFxCopTool"
+ />
<Tool
- Name="VCManagedWrapperGeneratorTool"/>
+ Name="VCAppVerifierTool"
+ />
<Tool
- Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ Name="VCPostBuildEventTool"
+ />
</Configuration>
</Configurations>
<References>
</References>
<Files>
<File
- RelativePath="httrack.c">
+ RelativePath="httrack.c"
+ >
<FileConfiguration
- Name="Release avec debug|Win32">
+ Name="Release avec debug|Win32"
+ >
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
- BrowseInformation="1"/>
+ BrowseInformation="1"
+ />
</FileConfiguration>
<FileConfiguration
- Name="Debug|Win32">
+ Name="Release avec debug|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Debug|Win32"
+ >
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories=""
PreprocessorDefinitions=""
- BrowseInformation="1"/>
+ BrowseInformation="1"
+ />
</FileConfiguration>
<FileConfiguration
- Name="Release|Win32">
+ Name="Debug|x64"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ BrowseInformation="1"
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32"
+ >
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="2"
+ AdditionalIncludeDirectories=""
+ PreprocessorDefinitions=""
+ />
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|x64"
+ >
<Tool
Name="VCCLCompilerTool"
Optimization="2"
AdditionalIncludeDirectories=""
- PreprocessorDefinitions=""/>
+ PreprocessorDefinitions=""
+ />
</FileConfiguration>
</File>
<File
- RelativePath=".\httrack.h">
+ RelativePath=".\httrack.h"
+ >
</File>
</Files>
<Globals>
diff --git a/src/minizip/mztools.c b/src/minizip/mztools.c
index 6021c49..a09bfb7 100644
--- a/src/minizip/mztools.c
+++ b/src/minizip/mztools.c
@@ -1,287 +1,287 @@
-/*
- Additional tools for Minizip
- Code: Xavier Roche '2004
- License: Same as ZLIB (www.gzip.org)
-*/
-
-/* Code */
-#include <string.h>
-#ifndef _WIN32_WCE
+/*
+ Additional tools for Minizip
+ Code: Xavier Roche '2004
+ License: Same as ZLIB (www.gzip.org)
+*/
+
+/* Code */
+#include <string.h>
+#ifndef _WIN32_WCE
+#include <stdio.h>
+#include <stdlib.h>
+#else
#include <stdio.h>
-#include <stdlib.h>
-#else
-#include <stdio.h>
-#include <stdlib.h>
-#include "celib.h"
-#endif
-#include "zlib.h"
-#include "unzip.h"
-
-#define READ_8(adr) ((unsigned char)*(adr))
-#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) )
-#define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) )
-
-#define WRITE_8(buff, n) do { \
- *((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \
-} while(0)
-#define WRITE_16(buff, n) do { \
- WRITE_8((unsigned char*)(buff), n); \
- WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \
-} while(0)
-#define WRITE_32(buff, n) do { \
- WRITE_16((unsigned char*)(buff), (n) & 0xffff); \
- WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \
-} while(0)
-
-extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered)
-const char* file;
-const char* fileOut;
-const char* fileOutTmp;
-uLong* nRecovered;
-uLong* bytesRecovered;
-{
- int err = Z_OK;
- FILE* fpZip = fopen(file, "rb");
- FILE* fpOut = fopen(fileOut, "wb");
- FILE* fpOutCD = fopen(fileOutTmp, "wb");
- if (fpZip != NULL && fpOut != NULL) {
- int entries = 0;
- uLong totalBytes = 0;
- char header[30];
- char filename[256];
- char extra[1024];
- int offset = 0;
- int offsetCD = 0;
- while ( fread(header, 1, 30, fpZip) == 30 ) {
- int currentOffset = offset;
-
- /* File entry */
- if (READ_32(header) == 0x04034b50) {
- unsigned int version = READ_16(header + 4);
- unsigned int gpflag = READ_16(header + 6);
- unsigned int method = READ_16(header + 8);
- unsigned int filetime = READ_16(header + 10);
- unsigned int filedate = READ_16(header + 12);
- unsigned int crc = READ_32(header + 14); /* crc */
- unsigned int cpsize = READ_32(header + 18); /* compressed size */
- unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */
- unsigned int fnsize = READ_16(header + 26); /* file name length */
- unsigned int extsize = READ_16(header + 28); /* extra field length */
- filename[0] = extra[0] = '\0';
-
- /* Header */
- if (fwrite(header, 1, 30, fpOut) == 30) {
- offset += 30;
- } else {
- err = Z_ERRNO;
- break;
- }
-
- /* Filename */
- if (fnsize > 0) {
- if (fread(filename, 1, fnsize, fpZip) == fnsize) {
- if (fwrite(filename, 1, fnsize, fpOut) == fnsize) {
- offset += fnsize;
- } else {
- err = Z_ERRNO;
- break;
- }
- } else {
- err = Z_ERRNO;
- break;
- }
- } else {
- err = Z_STREAM_ERROR;
- break;
- }
-
- /* Extra field */
- if (extsize > 0) {
- if (fread(extra, 1, extsize, fpZip) == extsize) {
- if (fwrite(extra, 1, extsize, fpOut) == extsize) {
- offset += extsize;
- } else {
- err = Z_ERRNO;
- break;
- }
- } else {
- err = Z_ERRNO;
- break;
- }
- }
-
- /* Data */
- {
- int dataSize = cpsize;
- if (dataSize == 0) {
- dataSize = uncpsize;
- }
- if (dataSize > 0) {
- char* data = malloc(dataSize);
- if (data != NULL) {
- if ((int)fread(data, 1, dataSize, fpZip) == dataSize) {
- if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) {
- offset += dataSize;
- totalBytes += dataSize;
- } else {
- err = Z_ERRNO;
- }
- } else {
- err = Z_ERRNO;
- }
- free(data);
- if (err != Z_OK) {
- break;
- }
- } else {
- err = Z_MEM_ERROR;
- break;
- }
- }
- }
-
- /* Central directory entry */
- {
- char header[46];
- char* comment = "";
- int comsize = (int) strlen(comment);
- WRITE_32(header, 0x02014b50);
- WRITE_16(header + 4, version);
- WRITE_16(header + 6, version);
- WRITE_16(header + 8, gpflag);
- WRITE_16(header + 10, method);
- WRITE_16(header + 12, filetime);
- WRITE_16(header + 14, filedate);
- WRITE_32(header + 16, crc);
- WRITE_32(header + 20, cpsize);
- WRITE_32(header + 24, uncpsize);
- WRITE_16(header + 28, fnsize);
- WRITE_16(header + 30, extsize);
- WRITE_16(header + 32, comsize);
- WRITE_16(header + 34, 0); /* disk # */
- WRITE_16(header + 36, 0); /* int attrb */
- WRITE_32(header + 38, 0); /* ext attrb */
- WRITE_32(header + 42, currentOffset);
- /* Header */
- if (fwrite(header, 1, 46, fpOutCD) == 46) {
- offsetCD += 46;
-
- /* Filename */
- if (fnsize > 0) {
- if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) {
- offsetCD += fnsize;
- } else {
- err = Z_ERRNO;
- break;
- }
- } else {
- err = Z_STREAM_ERROR;
- break;
- }
-
- /* Extra field */
- if (extsize > 0) {
- if (fwrite(extra, 1, extsize, fpOutCD) == extsize) {
- offsetCD += extsize;
- } else {
- err = Z_ERRNO;
- break;
- }
- }
-
- /* Comment field */
- if (comsize > 0) {
- if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) {
- offsetCD += comsize;
- } else {
- err = Z_ERRNO;
- break;
- }
- }
-
-
- } else {
- err = Z_ERRNO;
- break;
- }
- }
-
- /* Success */
- entries++;
-
- } else {
- break;
- }
- }
-
- /* Final central directory */
- {
- int entriesZip = entries;
- char header[22];
- char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools";
- int comsize = (int) strlen(comment);
- if (entriesZip > 0xffff) {
- entriesZip = 0xffff;
- }
- WRITE_32(header, 0x06054b50);
- WRITE_16(header + 4, 0); /* disk # */
- WRITE_16(header + 6, 0); /* disk # */
- WRITE_16(header + 8, entriesZip); /* hack */
- WRITE_16(header + 10, entriesZip); /* hack */
- WRITE_32(header + 12, offsetCD); /* size of CD */
- WRITE_32(header + 16, offset); /* offset to CD */
- WRITE_16(header + 20, comsize); /* comment */
-
- /* Header */
- if (fwrite(header, 1, 22, fpOutCD) == 22) {
-
- /* Comment field */
- if (comsize > 0) {
- if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) {
- err = Z_ERRNO;
- }
- }
-
- } else {
- err = Z_ERRNO;
- }
- }
-
- /* Final merge (file + central directory) */
- fclose(fpOutCD);
- if (err == Z_OK) {
- fpOutCD = fopen(fileOutTmp, "rb");
- if (fpOutCD != NULL) {
- int nRead;
- char buffer[8192];
- while ( (nRead = fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) {
- if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) {
- err = Z_ERRNO;
- break;
- }
- }
- fclose(fpOutCD);
- }
- }
-
- /* Close */
- fclose(fpZip);
- fclose(fpOut);
-
- /* Wipe temporary file */
- (void)remove(fileOutTmp);
-
- /* Number of recovered entries */
- if (err == Z_OK) {
- if (nRecovered != NULL) {
- *nRecovered = entries;
- }
- if (bytesRecovered != NULL) {
- *bytesRecovered = totalBytes;
- }
- }
- } else {
- err = Z_STREAM_ERROR;
- }
- return err;
-}
+#include <stdlib.h>
+#include "celib.h"
+#endif
+#include "zlib.h"
+#include "unzip.h"
+
+#define READ_8(adr) ((unsigned char)*(adr))
+#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) )
+#define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) )
+
+#define WRITE_8(buff, n) do { \
+ *((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \
+} while(0)
+#define WRITE_16(buff, n) do { \
+ WRITE_8((unsigned char*)(buff), n); \
+ WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \
+} while(0)
+#define WRITE_32(buff, n) do { \
+ WRITE_16((unsigned char*)(buff), (n) & 0xffff); \
+ WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \
+} while(0)
+
+extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered)
+const char* file;
+const char* fileOut;
+const char* fileOutTmp;
+uLong* nRecovered;
+uLong* bytesRecovered;
+{
+ int err = Z_OK;
+ FILE* fpZip = fopen(file, "rb");
+ FILE* fpOut = fopen(fileOut, "wb");
+ FILE* fpOutCD = fopen(fileOutTmp, "wb");
+ if (fpZip != NULL && fpOut != NULL) {
+ int entries = 0;
+ uLong totalBytes = 0;
+ char header[30];
+ char filename[1024];
+ char extra[1024];
+ int offset = 0;
+ int offsetCD = 0;
+ while ( fread(header, 1, 30, fpZip) == 30 ) {
+ int currentOffset = offset;
+
+ /* File entry */
+ if (READ_32(header) == 0x04034b50) {
+ unsigned int version = READ_16(header + 4);
+ unsigned int gpflag = READ_16(header + 6);
+ unsigned int method = READ_16(header + 8);
+ unsigned int filetime = READ_16(header + 10);
+ unsigned int filedate = READ_16(header + 12);
+ unsigned int crc = READ_32(header + 14); /* crc */
+ unsigned int cpsize = READ_32(header + 18); /* compressed size */
+ unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */
+ unsigned int fnsize = READ_16(header + 26); /* file name length */
+ unsigned int extsize = READ_16(header + 28); /* extra field length */
+ filename[0] = extra[0] = '\0';
+
+ /* Header */
+ if (fwrite(header, 1, 30, fpOut) == 30) {
+ offset += 30;
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+
+ /* Filename */
+ if (fnsize > 0) {
+ if (fnsize < sizeof(filename) && fread(filename, 1, fnsize, fpZip) == fnsize) {
+ if (fwrite(filename, 1, fnsize, fpOut) == fnsize) {
+ offset += fnsize;
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+ } else {
+ err = Z_STREAM_ERROR;
+ break;
+ }
+
+ /* Extra field */
+ if (extsize > 0) {
+ if (extsize < sizeof(extra) && fread(extra, 1, extsize, fpZip) == extsize) {
+ if (fwrite(extra, 1, extsize, fpOut) == extsize) {
+ offset += extsize;
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+ }
+
+ /* Data */
+ {
+ int dataSize = cpsize;
+ if (dataSize == 0) {
+ dataSize = uncpsize;
+ }
+ if (dataSize > 0) {
+ char* data = malloc(dataSize);
+ if (data != NULL) {
+ if ((int)fread(data, 1, dataSize, fpZip) == dataSize) {
+ if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) {
+ offset += dataSize;
+ totalBytes += dataSize;
+ } else {
+ err = Z_ERRNO;
+ }
+ } else {
+ err = Z_ERRNO;
+ }
+ free(data);
+ if (err != Z_OK) {
+ break;
+ }
+ } else {
+ err = Z_MEM_ERROR;
+ break;
+ }
+ }
+ }
+
+ /* Central directory entry */
+ {
+ char header[46];
+ char* comment = "";
+ int comsize = (int) strlen(comment);
+ WRITE_32(header, 0x02014b50);
+ WRITE_16(header + 4, version);
+ WRITE_16(header + 6, version);
+ WRITE_16(header + 8, gpflag);
+ WRITE_16(header + 10, method);
+ WRITE_16(header + 12, filetime);
+ WRITE_16(header + 14, filedate);
+ WRITE_32(header + 16, crc);
+ WRITE_32(header + 20, cpsize);
+ WRITE_32(header + 24, uncpsize);
+ WRITE_16(header + 28, fnsize);
+ WRITE_16(header + 30, extsize);
+ WRITE_16(header + 32, comsize);
+ WRITE_16(header + 34, 0); /* disk # */
+ WRITE_16(header + 36, 0); /* int attrb */
+ WRITE_32(header + 38, 0); /* ext attrb */
+ WRITE_32(header + 42, currentOffset);
+ /* Header */
+ if (fwrite(header, 1, 46, fpOutCD) == 46) {
+ offsetCD += 46;
+
+ /* Filename */
+ if (fnsize > 0) {
+ if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) {
+ offsetCD += fnsize;
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+ } else {
+ err = Z_STREAM_ERROR;
+ break;
+ }
+
+ /* Extra field */
+ if (extsize > 0) {
+ if (fwrite(extra, 1, extsize, fpOutCD) == extsize) {
+ offsetCD += extsize;
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+ }
+
+ /* Comment field */
+ if (comsize > 0) {
+ if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) {
+ offsetCD += comsize;
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+ }
+
+
+ } else {
+ err = Z_ERRNO;
+ break;
+ }
+ }
+
+ /* Success */
+ entries++;
+
+ } else {
+ break;
+ }
+ }
+
+ /* Final central directory */
+ {
+ int entriesZip = entries;
+ char header[22];
+ char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools";
+ int comsize = (int) strlen(comment);
+ if (entriesZip > 0xffff) {
+ entriesZip = 0xffff;
+ }
+ WRITE_32(header, 0x06054b50);
+ WRITE_16(header + 4, 0); /* disk # */
+ WRITE_16(header + 6, 0); /* disk # */
+ WRITE_16(header + 8, entriesZip); /* hack */
+ WRITE_16(header + 10, entriesZip); /* hack */
+ WRITE_32(header + 12, offsetCD); /* size of CD */
+ WRITE_32(header + 16, offset); /* offset to CD */
+ WRITE_16(header + 20, comsize); /* comment */
+
+ /* Header */
+ if (fwrite(header, 1, 22, fpOutCD) == 22) {
+
+ /* Comment field */
+ if (comsize > 0) {
+ if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) {
+ err = Z_ERRNO;
+ }
+ }
+
+ } else {
+ err = Z_ERRNO;
+ }
+ }
+
+ /* Final merge (file + central directory) */
+ fclose(fpOutCD);
+ if (err == Z_OK) {
+ fpOutCD = fopen(fileOutTmp, "rb");
+ if (fpOutCD != NULL) {
+ int nRead;
+ char buffer[8192];
+ while ( (nRead = fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) {
+ if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) {
+ err = Z_ERRNO;
+ break;
+ }
+ }
+ fclose(fpOutCD);
+ }
+ }
+
+ /* Close */
+ fclose(fpZip);
+ fclose(fpOut);
+
+ /* Wipe temporary file */
+ (void)remove(fileOutTmp);
+
+ /* Number of recovered entries */
+ if (err == Z_OK) {
+ if (nRecovered != NULL) {
+ *nRecovered = entries;
+ }
+ if (bytesRecovered != NULL) {
+ *bytesRecovered = totalBytes;
+ }
+ }
+ } else {
+ err = Z_STREAM_ERROR;
+ }
+ return err;
+}
diff --git a/src/proxy/proxytrack.c b/src/proxy/proxytrack.c
index 195c1a5..78775ab 100644
--- a/src/proxy/proxytrack.c
+++ b/src/proxy/proxytrack.c
@@ -1365,10 +1365,7 @@ static int proxytrack_process_HTTP_threaded(PT_Indexes indexes, T_SOC soc) {
static int proxytrack_start_HTTP(PT_Indexes indexes, T_SOC soc) {
while(soc != INVALID_SOCKET) {
T_SOC soc_c;
- struct sockaddr clientAddr;
- int clientAddrLen = sizeof(struct sockaddr);
- memset(&clientAddr, 0, sizeof(clientAddr));
- if ( (soc_c = (T_SOC) accept(soc, &clientAddr, &clientAddrLen)) != INVALID_SOCKET) {
+ if ( (soc_c = (T_SOC) accept(soc, NULL, NULL)) != INVALID_SOCKET) {
if (!proxytrack_process_HTTP_threaded(indexes, soc_c)) {
CRITICAL("proxytrack_start_HTTP::Can not fork a thread");
}
diff --git a/src/webhttrack b/src/webhttrack
index 430b026..314e070 100755
--- a/src/webhttrack
+++ b/src/webhttrack
@@ -4,14 +4,21 @@
# Initializes the htsserver GUI frontend and launch the default browser
BROWSEREXE=
-SRCHBROWSEREXE="x-www-browser www-browser iceape mozilla firefox firebird galeon konqueror opera netscape"
+SRCHBROWSEREXE="x-www-browser www-browser iceape mozilla firefox icecat iceweasel abrowser firebird galeon konqueror opera netscape"
if test -n "${BROWSER}"; then
# sensible-browser will f up if BROWSER is not set
SRCHBROWSEREXE="xdg-open sensible-browser ${SRCHBROWSEREXE}"
fi
-SRCHPATH="/usr/local/bin /usr/share/bin /usr/bin /usr/lib/httrack /usr/local/lib/httrack /usr/local/share/httrack /sw/bin ${HOME}/usr/bin ${HOME}/bin"
+# Patch for Darwin/Mac by Ross Williams
+if test "`uname -s`" == "Darwin"; then
+# Darwin/Mac OS X uses a system 'open' command to find
+# the default browser. The -W flag causes it to wait for
+# the browser to exit
+BROWSEREXE="/usr/bin/open -W"
+fi
+SRCHPATH="/usr/local/bin /usr/share/bin /usr/bin /usr/lib/httrack /usr/local/lib/httrack /usr/local/share/httrack /opt/local/bin /sw/bin ${HOME}/usr/bin ${HOME}/bin"
SRCHPATH="$SRCHPATH "`echo $PATH | tr ":" " "`
-SRCHDISTPATH="/usr/share /usr/local /usr /local /usr/local/share ${HOME}/usr ${HOME}/usr/share /sw ${HOME}/usr/local ${HOME}/usr/share"
+SRCHDISTPATH="/usr/share /usr/local /usr /local /usr/local/share ${HOME}/usr ${HOME}/usr/share /opt/local/share /sw ${HOME}/usr/local ${HOME}/usr/share"
###
# And now some famous cuisine
@@ -33,6 +40,12 @@ echo "$1" | grep -q "firebird"
[ $? -eq 0 ] && return 0
echo "$1" | grep -q "firefox"
[ $? -eq 0 ] && return 0
+echo "$1" | grep -q "iceweasel"
+[ $? -eq 0 ] && return 0
+echo "$1" | grep -q "abrowser"
+[ $? -eq 0 ] && return 0
+echo "$1" | grep -q "icecat"
+[ $? -eq 0 ] && return 0
return 1;
}
function mozillaloaded {
@@ -41,7 +54,7 @@ if ! test -n "${user_name}"; then
user_name=`id -un`
fi
if test -n "${user_name}"; then
-ps -e --user "$user_name" | grep -qE "(iceape|mozilla|netscape|firebird|firefox)"
+ps -e -U "$user_name" | grep -E "(iceape|mozilla|netscape|firebird|firefox)" | grep -qv "grep -E"
else
false
fi
diff --git a/templates/Makefile.in b/templates/Makefile.in
index ca6c521..0ecb7c7 100644
--- a/templates/Makefile.in
+++ b/templates/Makefile.in
@@ -59,6 +59,7 @@ DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
DEFS = @DEFS@
DEPDIR = @DEPDIR@
DL_LIBS = @DL_LIBS@
+DSYMUTIL = @DSYMUTIL@
ECHO = @ECHO@
ECHO_C = @ECHO_C@
ECHO_N = @ECHO_N@
@@ -83,6 +84,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@
+NMEDIT = @NMEDIT@
OBJEXT = @OBJEXT@
PACKAGE = @PACKAGE@
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -92,6 +94,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
RANLIB = @RANLIB@
+SED = @SED@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SOCKET_LIBS = @SOCKET_LIBS@
diff --git a/templates/index-footer.html b/templates/index-footer.html
index fa9b570..339ca72 100644
--- a/templates/index-footer.html
+++ b/templates/index-footer.html
@@ -3,7 +3,7 @@
<BR>
<BR>
<H6 ALIGN="RIGHT">
- <I>Mirror and index made by HTTrack Website Copier [XR&amp;CO'2002]</I>
+ <I>Mirror and index made by HTTrack Website Copier [XR&amp;CO'2008]</I>
</H6>
%s
<!-- Thanks for using HTTrack Website Copier! -->
@@ -22,7 +22,7 @@
<table width="76%%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0">
<tr>
- <td id="footer"><small>&copy; 2002 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td>
+ <td id="footer"><small>&copy; 2008 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td>
</tr>
</table>
diff --git a/templates/topindex-footer.html b/templates/topindex-footer.html
index 1128f23..8785b28 100644
--- a/templates/topindex-footer.html
+++ b/templates/topindex-footer.html
@@ -1,7 +1,7 @@
</TABLE>
<BR>
<H6 ALIGN="RIGHT">
- <I>Mirror and index made by HTTrack Website Copier [XR&CO'2002]</I>
+ <I>Mirror and index made by HTTrack Website Copier [XR&CO'2008]</I>
</H6>
%s
<!-- Thanks for using HTTrack Website Copier! -->
@@ -19,7 +19,7 @@
<table width="76%%" border="0" align="center" valign="bottom" cellspacing="0" cellpadding="0">
<tr>
- <td id="footer"><small>&copy; 2002 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td>
+ <td id="footer"><small>&copy; 2008 Xavier Roche & other contributors - Web Design: Leto Kauler.</small></td>
</tr>
</table>