mirror of
https://github.com/xroche/httrack.git
synced 2026-05-18 00:46:21 +03:00
Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
87ed27845b | ||
|
|
5ee4508f6a | ||
|
|
8fa9a7fa04 | ||
|
|
f085121f6d | ||
|
|
540efa3d86 | ||
|
|
c16bceaf22 | ||
|
|
f179036bda | ||
|
|
2f99eec8d9 | ||
|
|
6e611c37bd | ||
|
|
aa3c3ed18f | ||
|
|
3f603d7b35 | ||
|
|
4d6337ec60 | ||
|
|
117d8bebb3 | ||
|
|
1a8f462462 | ||
|
|
57a9befbd2 | ||
|
|
80289b6966 |
@@ -134,6 +134,7 @@ am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@@ -142,14 +143,12 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
|
||||
DEFAULT_LDFLAGS = @DEFAULT_LDFLAGS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@@ -163,6 +162,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
HTTPS_SUPPORT = @HTTPS_SUPPORT@
|
||||
ICONV_LIBS = @ICONV_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -218,7 +218,6 @@ abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
|
||||
2
README
2
README
@@ -1,5 +1,5 @@
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 Xavier Roche and other contributors
|
||||
|
||||
Welcome to HTTrack Website Copier!
|
||||
|
||||
|
||||
241
compile
241
compile
@@ -1,9 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Wrapper for compilers which do not understand `-c -o'.
|
||||
# Wrapper for compilers which do not understand '-c -o'.
|
||||
|
||||
scriptversion=2005-05-14.22
|
||||
scriptversion=2012-03-05.13; # UTC
|
||||
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
|
||||
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010, 2012 Free
|
||||
# Software Foundation, Inc.
|
||||
# Written by Tom Tromey <tromey@cygnus.com>.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
@@ -17,8 +18,7 @@ scriptversion=2005-05-14.22
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
@@ -29,21 +29,219 @@ scriptversion=2005-05-14.22
|
||||
# bugs to <bug-automake@gnu.org> or send patches to
|
||||
# <automake-patches@gnu.org>.
|
||||
|
||||
nl='
|
||||
'
|
||||
|
||||
# We need space, tab and new line, in precisely that order. Quoting is
|
||||
# there to prevent tools from complaining about whitespace usage.
|
||||
IFS=" "" $nl"
|
||||
|
||||
file_conv=
|
||||
|
||||
# func_file_conv build_file lazy
|
||||
# Convert a $build file to $host form and store it in $file
|
||||
# Currently only supports Windows hosts. If the determined conversion
|
||||
# type is listed in (the comma separated) LAZY, no conversion will
|
||||
# take place.
|
||||
func_file_conv ()
|
||||
{
|
||||
file=$1
|
||||
case $file in
|
||||
/ | /[!/]*) # absolute file, and not a UNC file
|
||||
if test -z "$file_conv"; then
|
||||
# lazily determine how to convert abs files
|
||||
case `uname -s` in
|
||||
MINGW*)
|
||||
file_conv=mingw
|
||||
;;
|
||||
CYGWIN*)
|
||||
file_conv=cygwin
|
||||
;;
|
||||
*)
|
||||
file_conv=wine
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
case $file_conv/,$2, in
|
||||
*,$file_conv,*)
|
||||
;;
|
||||
mingw/*)
|
||||
file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
|
||||
;;
|
||||
cygwin/*)
|
||||
file=`cygpath -m "$file" || echo "$file"`
|
||||
;;
|
||||
wine/*)
|
||||
file=`winepath -w "$file" || echo "$file"`
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# func_cl_dashL linkdir
|
||||
# Make cl look for libraries in LINKDIR
|
||||
func_cl_dashL ()
|
||||
{
|
||||
func_file_conv "$1"
|
||||
if test -z "$lib_path"; then
|
||||
lib_path=$file
|
||||
else
|
||||
lib_path="$lib_path;$file"
|
||||
fi
|
||||
linker_opts="$linker_opts -LIBPATH:$file"
|
||||
}
|
||||
|
||||
# func_cl_dashl library
|
||||
# Do a library search-path lookup for cl
|
||||
func_cl_dashl ()
|
||||
{
|
||||
lib=$1
|
||||
found=no
|
||||
save_IFS=$IFS
|
||||
IFS=';'
|
||||
for dir in $lib_path $LIB
|
||||
do
|
||||
IFS=$save_IFS
|
||||
if $shared && test -f "$dir/$lib.dll.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.dll.lib
|
||||
break
|
||||
fi
|
||||
if test -f "$dir/$lib.lib"; then
|
||||
found=yes
|
||||
lib=$dir/$lib.lib
|
||||
break
|
||||
fi
|
||||
done
|
||||
IFS=$save_IFS
|
||||
|
||||
if test "$found" != yes; then
|
||||
lib=$lib.lib
|
||||
fi
|
||||
}
|
||||
|
||||
# func_cl_wrapper cl arg...
|
||||
# Adjust compile command to suit cl
|
||||
func_cl_wrapper ()
|
||||
{
|
||||
# Assume a capable shell
|
||||
lib_path=
|
||||
shared=:
|
||||
linker_opts=
|
||||
for arg
|
||||
do
|
||||
if test -n "$eat"; then
|
||||
eat=
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.[oO][bB][jJ])
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fo"$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
func_file_conv "$2"
|
||||
set x "$@" -Fe"$file"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-I)
|
||||
eat=1
|
||||
func_file_conv "$2" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-I*)
|
||||
func_file_conv "${1#-I}" mingw
|
||||
set x "$@" -I"$file"
|
||||
shift
|
||||
;;
|
||||
-l)
|
||||
eat=1
|
||||
func_cl_dashl "$2"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-l*)
|
||||
func_cl_dashl "${1#-l}"
|
||||
set x "$@" "$lib"
|
||||
shift
|
||||
;;
|
||||
-L)
|
||||
eat=1
|
||||
func_cl_dashL "$2"
|
||||
;;
|
||||
-L*)
|
||||
func_cl_dashL "${1#-L}"
|
||||
;;
|
||||
-static)
|
||||
shared=false
|
||||
;;
|
||||
-Wl,*)
|
||||
arg=${1#-Wl,}
|
||||
save_ifs="$IFS"; IFS=','
|
||||
for flag in $arg; do
|
||||
IFS="$save_ifs"
|
||||
linker_opts="$linker_opts $flag"
|
||||
done
|
||||
IFS="$save_ifs"
|
||||
;;
|
||||
-Xlinker)
|
||||
eat=1
|
||||
linker_opts="$linker_opts $2"
|
||||
;;
|
||||
-*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
*.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
|
||||
func_file_conv "$1"
|
||||
set x "$@" -Tp"$file"
|
||||
shift
|
||||
;;
|
||||
*.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
|
||||
func_file_conv "$1" mingw
|
||||
set x "$@" "$file"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
set x "$@" "$1"
|
||||
shift
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
shift
|
||||
done
|
||||
if test -n "$linker_opts"; then
|
||||
linker_opts="-link$linker_opts"
|
||||
fi
|
||||
exec "$@" $linker_opts
|
||||
exit 1
|
||||
}
|
||||
|
||||
eat=
|
||||
|
||||
case $1 in
|
||||
'')
|
||||
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
|
||||
echo "$0: No command. Try '$0 --help' for more information." 1>&2
|
||||
exit 1;
|
||||
;;
|
||||
-h | --h*)
|
||||
cat <<\EOF
|
||||
Usage: compile [--help] [--version] PROGRAM [ARGS]
|
||||
|
||||
Wrapper for compilers which do not understand `-c -o'.
|
||||
Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
Wrapper for compilers which do not understand '-c -o'.
|
||||
Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
|
||||
arguments, and rename the output as expected.
|
||||
|
||||
If you are trying to build a whole package this is not the
|
||||
right script to run: please start by reading the file `INSTALL'.
|
||||
right script to run: please start by reading the file 'INSTALL'.
|
||||
|
||||
Report bugs to <bug-automake@gnu.org>.
|
||||
EOF
|
||||
@@ -53,11 +251,13 @@ EOF
|
||||
echo "compile $scriptversion"
|
||||
exit $?
|
||||
;;
|
||||
cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
|
||||
func_cl_wrapper "$@" # Doesn't return...
|
||||
;;
|
||||
esac
|
||||
|
||||
ofile=
|
||||
cfile=
|
||||
eat=
|
||||
|
||||
for arg
|
||||
do
|
||||
@@ -66,8 +266,8 @@ do
|
||||
else
|
||||
case $1 in
|
||||
-o)
|
||||
# configure might choose to run compile as `compile cc -o foo foo.c'.
|
||||
# So we strip `-o arg' only if arg is an object.
|
||||
# configure might choose to run compile as 'compile cc -o foo foo.c'.
|
||||
# So we strip '-o arg' only if arg is an object.
|
||||
eat=1
|
||||
case $2 in
|
||||
*.o | *.obj)
|
||||
@@ -94,22 +294,22 @@ do
|
||||
done
|
||||
|
||||
if test -z "$ofile" || test -z "$cfile"; then
|
||||
# If no `-o' option was seen then we might have been invoked from a
|
||||
# If no '-o' option was seen then we might have been invoked from a
|
||||
# pattern rule where we don't need one. That is ok -- this is a
|
||||
# normal compilation that the losing compiler can handle. If no
|
||||
# `.c' file was seen then we are probably linking. That is also
|
||||
# '.c' file was seen then we are probably linking. That is also
|
||||
# ok.
|
||||
exec "$@"
|
||||
fi
|
||||
|
||||
# Name of file we expect compiler to create.
|
||||
cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'`
|
||||
cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
|
||||
|
||||
# Create the lock directory.
|
||||
# Note: use `[/.-]' here to ensure that we don't use the same name
|
||||
# Note: use '[/\\:.-]' here to ensure that we don't use the same name
|
||||
# that we are using for the .o file. Also, base the name on the expected
|
||||
# object file name, since that is what matters with a parallel build.
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d
|
||||
lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
|
||||
while true; do
|
||||
if mkdir "$lockdir" >/dev/null 2>&1; then
|
||||
break
|
||||
@@ -124,9 +324,9 @@ trap "rmdir '$lockdir'; exit 1" 1 2 15
|
||||
ret=$?
|
||||
|
||||
if test -f "$cofile"; then
|
||||
mv "$cofile" "$ofile"
|
||||
test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
|
||||
elif test -f "${cofile}bj"; then
|
||||
mv "${cofile}bj" "$ofile"
|
||||
test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
|
||||
fi
|
||||
|
||||
rmdir "$lockdir"
|
||||
@@ -138,5 +338,6 @@ exit $ret
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-end: "$"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
|
||||
54
config.h.in
54
config.h.in
@@ -6,9 +6,15 @@
|
||||
/* Check for ftime */
|
||||
#undef FTIME
|
||||
|
||||
/* Define if pointers to integers require aligned access */
|
||||
#undef HAVE_ALIGNED_ACCESS_REQUIRED
|
||||
|
||||
/* Define to 1 if you have the <dlfcn.h> header file. */
|
||||
#undef HAVE_DLFCN_H
|
||||
|
||||
/* Define to 1 if you have the <execinfo.h> header file. */
|
||||
#undef HAVE_EXECINFO_H
|
||||
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
@@ -33,6 +39,9 @@
|
||||
/* Define to 1 if you have the <string.h> header file. */
|
||||
#undef HAVE_STRING_H
|
||||
|
||||
/* Check for strnlen */
|
||||
#undef HAVE_STRNLEN
|
||||
|
||||
/* Define to 1 if you have the <sys/stat.h> header file. */
|
||||
#undef HAVE_SYS_STAT_H
|
||||
|
||||
@@ -42,6 +51,10 @@
|
||||
/* Define to 1 if you have the <unistd.h> header file. */
|
||||
#undef HAVE_UNISTD_H
|
||||
|
||||
/* Define to 1 or 0, depending whether the compiler supports simple visibility
|
||||
declarations. */
|
||||
#undef HAVE_VISIBILITY
|
||||
|
||||
/* Define to 1 if you have the `vsnprintf' function. */
|
||||
#undef HAVE_VSNPRINTF
|
||||
|
||||
@@ -67,6 +80,9 @@
|
||||
*/
|
||||
#undef LT_OBJDIR
|
||||
|
||||
/* Define to 1 if your C compiler doesn't accept -c and -o together. */
|
||||
#undef NO_MINUS_C_MINUS_O
|
||||
|
||||
/* Name of package */
|
||||
#undef PACKAGE
|
||||
|
||||
@@ -106,5 +122,43 @@
|
||||
/* Check for pthread in pthreads */
|
||||
#undef THREADS
|
||||
|
||||
/* Enable extensions on AIX 3, Interix. */
|
||||
#ifndef _ALL_SOURCE
|
||||
# undef _ALL_SOURCE
|
||||
#endif
|
||||
/* Enable GNU extensions on systems that have them. */
|
||||
#ifndef _GNU_SOURCE
|
||||
# undef _GNU_SOURCE
|
||||
#endif
|
||||
/* Enable threading extensions on Solaris. */
|
||||
#ifndef _POSIX_PTHREAD_SEMANTICS
|
||||
# undef _POSIX_PTHREAD_SEMANTICS
|
||||
#endif
|
||||
/* Enable extensions on HP NonStop. */
|
||||
#ifndef _TANDEM_SOURCE
|
||||
# undef _TANDEM_SOURCE
|
||||
#endif
|
||||
/* Enable general extensions on Solaris. */
|
||||
#ifndef __EXTENSIONS__
|
||||
# undef __EXTENSIONS__
|
||||
#endif
|
||||
|
||||
|
||||
/* Version number of package */
|
||||
#undef VERSION
|
||||
|
||||
/* Define to 1 if on MINIX. */
|
||||
#undef _MINIX
|
||||
|
||||
/* Define to 2 if the system does not provide POSIX.1 features except with
|
||||
this defined. */
|
||||
#undef _POSIX_1_SOURCE
|
||||
|
||||
/* Define to 1 if you need to in order for `stat' and other things to work. */
|
||||
#undef _POSIX_SOURCE
|
||||
|
||||
/* in_port_t */
|
||||
#undef in_port_t
|
||||
|
||||
/* sa_family_t */
|
||||
#undef sa_family_t
|
||||
|
||||
110
configure.ac
110
configure.ac
@@ -1,18 +1,46 @@
|
||||
AC_INIT([httrack], [3.48.1], [roche+packaging@httrack.com], [httrack], [http://www.httrack.com/])
|
||||
AC_PREREQ(2.59)
|
||||
|
||||
AC_INIT([httrack], [3.48.20], [roche+packaging@httrack.com], [httrack], [http://www.httrack.com/])
|
||||
AC_COPYRIGHT([
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2014 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Important notes:
|
||||
|
||||
- We hereby ask people using this source NOT to use it in purpose of grabbing
|
||||
emails addresses, or collecting any other private information on persons.
|
||||
This would disgrace our work, and spoil the many hours we spent on it.
|
||||
|
||||
Please visit our Website: http://www.httrack.com
|
||||
])
|
||||
|
||||
AC_CONFIG_SRCDIR(src/httrack.c)
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
AC_CONFIG_HEADERS(config.h)
|
||||
AM_INIT_AUTOMAKE
|
||||
AM_INIT_AUTOMAKE([subdir-objects])
|
||||
VERSION_INFO="2:48:0"
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
AC_PREREQ(2.50)
|
||||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
AC_PROG_CC
|
||||
AC_PROG_CXX
|
||||
AM_PROG_CC_C_O
|
||||
AC_STDC_HEADERS
|
||||
LT_INIT
|
||||
AC_PROG_LN_S
|
||||
AM_PROG_LIBTOOL
|
||||
|
||||
# Export LD_LIBRARY_PATH name or equivalent.
|
||||
AC_SUBST(SHLIBPATH_VAR,$shlibpath_var)
|
||||
@@ -20,13 +48,43 @@ AC_SUBST(SHLIBPATH_VAR,$shlibpath_var)
|
||||
# Export .libs or equivalent.
|
||||
AC_SUBST(LT_CV_OBJDIR,$lt_cv_objdir)
|
||||
|
||||
### Default CFLAGS
|
||||
DEFAULT_CFLAGS="-Wall -Wcast-align -Wstrict-prototypes \
|
||||
-Wmissing-prototypes -Wmissing-declarations -Wpointer-arith \
|
||||
-Wnested-externs -D_REENTRANT"
|
||||
AC_SUBST(DEFAULT_CFLAGS)
|
||||
# Export version info
|
||||
AC_SUBST(VERSION_INFO)
|
||||
|
||||
### Default CFLAGS
|
||||
DEFAULT_CFLAGS="-Wall -Wformat -Wformat-security \
|
||||
-Wmultichar -Wwrite-strings -Wcast-qual -Wcast-align \
|
||||
-Wstrict-prototypes -Wmissing-prototypes \
|
||||
-Wmissing-declarations -Wdeclaration-after-statement \
|
||||
-Wpointer-arith -Wsequence-point -Wnested-externs \
|
||||
-D_REENTRANT"
|
||||
AC_SUBST(DEFAULT_CFLAGS)
|
||||
DEFAULT_LDFLAGS=""
|
||||
AC_SUBST(DEFAULT_LDFLAGS)
|
||||
|
||||
### Additional flags (if supported)
|
||||
AX_CHECK_COMPILE_FLAG([-Wparentheses], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Wparentheses"])
|
||||
AX_CHECK_COMPILE_FLAG([-Winit-self], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Winit-self"])
|
||||
AX_CHECK_COMPILE_FLAG([-Wunused-but-set-parameter], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Wunused-but-set-parameter"])
|
||||
AX_CHECK_COMPILE_FLAG([-Waddress], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Waddress"])
|
||||
AX_CHECK_COMPILE_FLAG([-Wuninitialized], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Wuninitialized"])
|
||||
AX_CHECK_COMPILE_FLAG([-Wformat=2], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Wformat=2"])
|
||||
AX_CHECK_COMPILE_FLAG([-Wformat-nonliteral], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Wformat-nonliteral"])
|
||||
AX_CHECK_COMPILE_FLAG([-Wmissing-parameter-type], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Wmissing-parameter-type"])
|
||||
AX_CHECK_COMPILE_FLAG([-Wold-style-definition], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Wold-style-definition"])
|
||||
AX_CHECK_COMPILE_FLAG([-Wignored-qualifiers], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -Wignored-qualifiers"])
|
||||
AX_CHECK_COMPILE_FLAG([-fstrict-aliasing -Wstrict-aliasing], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -fstrict-aliasing -Wstrict-aliasing"])
|
||||
AX_CHECK_LINK_FLAG([-Wl,--discard-all], [DEFAULT_LDLAGS="$DEFAULT_LDLAGS -Wl,--discard-all"])
|
||||
AX_CHECK_LINK_FLAG([-Wl,--no-undefined], [DEFAULT_LDLAGS="$DEFAULT_LDLAGS -Wl,--no-undefined"])
|
||||
|
||||
## Export all symbols for backtraces
|
||||
AX_CHECK_COMPILE_FLAG([-rdynamic], [DEFAULT_CFLAGS="$DEFAULT_CFLAGS -rdynamic"])
|
||||
|
||||
### Check for -fvisibility=hidden support
|
||||
gl_VISIBILITY
|
||||
AM_CFLAGS="$AM_CFLAGS $CFLAG_VISIBILITY"
|
||||
AC_SUBST([AM_CFLAGS])
|
||||
|
||||
### Check for platform
|
||||
#case $host in
|
||||
#AIX) AC_DEFINE(HTS_PLATFORM, 1, [Defined to build under AIX]);;
|
||||
@@ -47,6 +105,24 @@ AC_MSG_WARN([*** in_addr_t not found]),
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>])
|
||||
|
||||
# check for in_port_
|
||||
AC_CHECK_TYPE(in_port_t, [], [AC_DEFINE([in_port_t], [uint16_t], [in_port_t])], [
|
||||
#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
])
|
||||
|
||||
# check for sa_family_t
|
||||
AC_CHECK_TYPE(sa_family_t, [], [AC_DEFINE([sa_family_t], [uint16_t], [sa_family_t])], [
|
||||
#include <sys/types.h>
|
||||
#include <netinet/in.h>
|
||||
])
|
||||
|
||||
# check wether misaligned access is possible or not
|
||||
AX_CHECK_ALIGNED_ACCESS_REQUIRED
|
||||
|
||||
# check for various headers
|
||||
AC_CHECK_HEADERS([execinfo.h])
|
||||
|
||||
### zlib
|
||||
CHECK_ZLIB()
|
||||
|
||||
@@ -77,9 +153,16 @@ if test x"$https_support" = x"no"; then
|
||||
AC_MSG_NOTICE([disabling https support])
|
||||
AC_DEFINE(HTS_USEOPENSSL, 0)
|
||||
else
|
||||
SAVE_LIBS=$LIBS
|
||||
AC_CHECK_LIB(crypto, EVP_get_digestbyname,
|
||||
[
|
||||
OPENSSL_LIBS="-lcrypto"
|
||||
]
|
||||
)
|
||||
LIBS="$LIBS $OPENSSL_LIBS"
|
||||
AC_CHECK_LIB(ssl, SSL_library_init,
|
||||
[
|
||||
OPENSSL_LIBS="-lcrypto -lssl"
|
||||
OPENSSL_LIBS="$OPENSSL_LIBS -lssl"
|
||||
AC_DEFINE(HTS_USEOPENSSL, 1, [Check for OpenSSL])
|
||||
],
|
||||
[
|
||||
@@ -90,6 +173,7 @@ AC_CHECK_LIB(ssl, SSL_library_init,
|
||||
fi
|
||||
]
|
||||
)
|
||||
LIBS=$SAVE_LIBS
|
||||
AC_SUBST(OPENSSL_LIBS)
|
||||
fi
|
||||
|
||||
@@ -154,6 +238,10 @@ AC_DEFINE(SETUID, 1,[Check for setuid])], AC_MSG_RESULT([not found]))
|
||||
### Check for snprintf
|
||||
AC_FUNC_SNPRINTF()
|
||||
|
||||
### Check for strnlen
|
||||
AC_CHECK_LIB(c, strnlen, [
|
||||
AC_DEFINE(HAVE_STRNLEN, 1,[Check for strnlen])], AC_MSG_RESULT([not found]))
|
||||
|
||||
## Online unit tests
|
||||
AC_MSG_CHECKING(whether to enable online unit tests)
|
||||
AC_ARG_ENABLE([online-unit-tests],
|
||||
|
||||
149
debian/changelog
vendored
149
debian/changelog
vendored
@@ -1,3 +1,152 @@
|
||||
httrack (3.48.20-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.20 (3.48-20)
|
||||
closes:#765019
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Wed, 15 Oct 2014 21:37:54 +0200
|
||||
|
||||
httrack (3.48.19-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.19 (3.48-19)
|
||||
closes:#756328
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Mon, 28 Jul 2014 22:52:19 +0200
|
||||
|
||||
httrack (3.48.18-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.18 (3.48-18)
|
||||
closes:#755107
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Thu, 17 Jul 2014 21:35:10 +0200
|
||||
|
||||
httrack (3.48.17-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.17 (3.48-17)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Sat, 12 Jul 2014 15:21:14 +0200
|
||||
|
||||
httrack (3.48.16-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.16 (3.48-16)
|
||||
fixed FTBFS on ARM/MIPS again
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Wed, 09 Jul 2014 07:02:08 +0200
|
||||
|
||||
httrack (3.48.15-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.15 (3.48-15)
|
||||
fixed FTBFS on ARM/MIPS
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Tue, 08 Jul 2014 22:05:14 +0200
|
||||
|
||||
httrack (3.48.14-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.14 (3.48-14)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Tue, 08 Jul 2014 20:36:55 +0200
|
||||
|
||||
httrack (3.48.13-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.13 (3.48-13)
|
||||
closes:#750931
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Sun, 08 Jun 2014 16:22:13 +0200
|
||||
|
||||
httrack (3.48.12-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.12 (3.48-12)
|
||||
Should fix missing/broken .h for libhttrack-dev
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Sun, 08 Jun 2014 13:19:49 +0200
|
||||
|
||||
httrack (3.48.11-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.11 (3.48-11)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Fri, 06 Jun 2014 17:58:12 +0200
|
||||
|
||||
httrack (3.48.10-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.10 (3.48-10)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Wed, 04 Jun 2014 19:00:07 +0200
|
||||
|
||||
httrack (3.48.9-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.9 (3.48-9)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Wed, 21 May 2014 19:22:04 +0200
|
||||
|
||||
httrack (3.48.8-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.8 (3.48-8)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Thu, 15 May 2014 19:21:21 +0200
|
||||
|
||||
httrack (3.48.7-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.7 (3.48-7)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Wed, 14 May 2014 19:51:57 +0200
|
||||
|
||||
httrack (3.48.6-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.6 (3.48-6)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Tue, 13 May 2014 21:23:02 +0200
|
||||
|
||||
httrack (3.48.5-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.5 (3.48-5)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Fri, 02 May 2014 16:37:08 +0200
|
||||
|
||||
httrack (3.48.4-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.4 (3.48-4)
|
||||
closes:#746173
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Sun, 27 Apr 2014 18:48:57 +0200
|
||||
|
||||
httrack (3.48.3-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.3 (3.48-3)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Fri, 11 Apr 2014 20:31:21 +0200
|
||||
|
||||
httrack (3.48.2-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.2 (3.48-2)
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Thu, 10 Apr 2014 18:30:08 +0200
|
||||
|
||||
httrack (3.48.1-5) unstable; urgency=low
|
||||
|
||||
* Really call dh_autoreconf, fix configure dependencies.
|
||||
|
||||
-- Matthias Klose <doko@ubuntu.com> Wed, 16 Apr 2014 14:46:20 +0200
|
||||
|
||||
httrack (3.48.1-4) unstable; urgency=low
|
||||
|
||||
* Cleanup in dependencies
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Tue, 15 Apr 2014 22:13:19 +0200
|
||||
|
||||
httrack (3.48.1-3) unstable; urgency=low
|
||||
|
||||
* Fixed FTBFS due to a missing Build-Depends: dh-autoreconf
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Tue, 15 Apr 2014 21:32:03 +0200
|
||||
|
||||
httrack (3.48.1-2) unstable; urgency=low
|
||||
|
||||
* Fixed removal of .a files even on architectures where .a are libraries
|
||||
closes:#744594
|
||||
Enable verosity of unit tests
|
||||
Call dh_autoreconf_clean before dh_clean
|
||||
|
||||
-- Xavier Roche <xavier@debian.org> Tue, 15 Apr 2014 21:02:14 +0200
|
||||
|
||||
httrack (3.48.1-1) unstable; urgency=low
|
||||
|
||||
* Updated to 3.48.1 (3.48-1)
|
||||
|
||||
6
debian/control
vendored
6
debian/control
vendored
@@ -2,9 +2,11 @@ Source: httrack
|
||||
Section: web
|
||||
Priority: optional
|
||||
Maintainer: Xavier Roche <roche@httrack.com>
|
||||
Standards-Version: 3.9.4
|
||||
Build-Depends: debhelper (>= 8.0.0), zlib1g-dev, libssl-dev, autotools-dev, autoconf, automake, libtool
|
||||
Standards-Version: 3.9.5
|
||||
Build-Depends: debhelper (>= 8.0.0), dh-autoreconf, autotools-dev, autoconf, autoconf-archive, automake, libtool, zlib1g-dev, libssl-dev
|
||||
Homepage: http://www.httrack.com
|
||||
Vcs-Svn: http://httrack.googlecode.com/svn/trunk
|
||||
Vcs-Browser: https://code.google.com/p/httrack/source/browse/trunk/src
|
||||
|
||||
Package: httrack
|
||||
Architecture: any
|
||||
|
||||
2
debian/copyright
vendored
2
debian/copyright
vendored
@@ -5,7 +5,7 @@ The current Debian maintainer is Xavier Roche <xavier@debian.org>
|
||||
|
||||
Upstream author: Xavier Roche <roche@httrack.com>
|
||||
|
||||
Copyright: 1998-2013 Xavier Roche and other contributors
|
||||
Copyright: 1998-2014 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
|
||||
|
||||
19
debian/rules
vendored
19
debian/rules
vendored
@@ -23,11 +23,16 @@ ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
||||
INSTALL_PROGRAM += -s
|
||||
endif
|
||||
|
||||
# as suggested by Simon McVittie
|
||||
# (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=744380)
|
||||
override_dh_auto_test:
|
||||
VERBOSE=1 dh_auto_test
|
||||
|
||||
configure: configure-stamp
|
||||
configure-stamp:
|
||||
dh_testdir
|
||||
|
||||
autoreconf -v -i
|
||||
dh_autoreconf
|
||||
# note: dpkg-buildflags to be removed when compat=9
|
||||
dh_auto_configure -- --enable-online-unit-tests=auto $(shell dpkg-buildflags --export=configure)
|
||||
|
||||
@@ -50,6 +55,7 @@ clean:
|
||||
dh_testroot
|
||||
rm -f build-stamp configure-stamp
|
||||
dh_auto_clean
|
||||
dh_autoreconf_clean
|
||||
dh_clean
|
||||
|
||||
install: build
|
||||
@@ -79,10 +85,17 @@ install: build
|
||||
mkdir -p $(CURDIR)/debian/httrack/usr/lib/httrack/
|
||||
mv $(CURDIR)/debian/httrack/usr/bin/htsserver \
|
||||
$(CURDIR)/debian/httrack/usr/lib/httrack/
|
||||
rm -f $(CURDIR)/debian/httrack/usr/lib/*.a
|
||||
# remove *.la (https://wiki.debian.org/ReleaseGoals/LAFileRemoval)
|
||||
rm -f $(CURDIR)/debian/httrack/usr/lib/*.la
|
||||
rm -f $(CURDIR)/debian/httrack/usr/lib/httrack/*.a
|
||||
rm -f $(CURDIR)/debian/httrack/usr/lib/httrack/*.la
|
||||
# remove *.a unless we do not have *.so files
|
||||
# see BUG #744594
|
||||
if ls $(CURDIR)/debian/httrack/usr/lib/*.so >/dev/null 2>/dev/null ; then \
|
||||
rm -f $(CURDIR)/debian/httrack/usr/lib/*.a ; \
|
||||
fi
|
||||
if ls $(CURDIR)/debian/httrack/usr/lib/httrack/*.so >/dev/null 2>/dev/null ; then \
|
||||
rm -f $(CURDIR)/debian/httrack/usr/lib/httrack/*.a ; \
|
||||
fi
|
||||
mv $(CURDIR)/debian/httrack/usr/lib/httrack/lib* \
|
||||
$(CURDIR)/debian/httrack/usr/share/httrack/libtest/
|
||||
mkdir -p $(CURDIR)/debian/httrack/usr/lib/httrack/libtest
|
||||
|
||||
34
history.txt
34
history.txt
@@ -2,9 +2,37 @@
|
||||
HTTrack Website Copier release history:
|
||||
--------------------------------------
|
||||
|
||||
This file lists all changes and fixes that have been made for HTTrack.
|
||||
|
||||
3.48-1
|
||||
This file lists all changes and fixes that have been made for HTTrack
|
||||
3.48-20
|
||||
+ Fixed: webhttrack incompatibility with Chrome
|
||||
+ Fixed: assertion failure at htslib.c:3458 (strlen(copyBuff) == qLen) seen on Linux
|
||||
+ Fixed: infamous crashes inside the DNS cache due to a corruption within the option structure (E.Kalinowski/karbofos)
|
||||
+ New: added minimalistic crash reporting on Windows and Linux
|
||||
+ Fixed: URL list not working anymore (tom swift)
|
||||
+ Fixed: FTBFS on ARM
|
||||
+ Fixed: buggy FFFD (replacement character) in place of leading non-ascii character such as Chinese ones (aballboy)
|
||||
+ Fixed: FTBFS when compiling with zlib versions < 1.2.70 (sammyx)
|
||||
+ Fixed: buggy SVG (Smiling Spectre)
|
||||
+ Fixed: do not uncompress .tgz advertised as "streamed" (Smiling Spectre)
|
||||
+ Fixed: NULL pointer dereferencing in back_unserialize (htsback.c:976)
|
||||
+ Fixed: library development files
|
||||
+ Fixed: --advanced-maxlinks broken (Localhost)
|
||||
+ Fixed: -devel package should now be standalone
|
||||
+ Fixed: assertion failure at htscore.c:244 (len + liensbuf->string_buffer_size < liensbuf->string_buffer_capa)
|
||||
+ Fixed: injection-proof templates
|
||||
+ Fixed: htshash.c:330 assertion failure ("error invalidating hash entry") (Sergey)
|
||||
+ Fixed: Windows 2000 regression (fantozzi.usenet)
|
||||
+ Fixed: code cleanup (aliasing issues, const correctness, safe strings)
|
||||
+ New: handle --advanced-maxlinks=0 to disable maximum link limits
|
||||
+ New: updated ZIP routines (zlib 1.2.8)
|
||||
+ Fixed: broken 32-bit version
|
||||
+ Fixed: assertion "segOutputSize < segSize assertion fails at htscharset.c:993"
|
||||
+ Fixed: new zlib version fixing CVE-2004-0797 and CVE-2005-2096
|
||||
+ Fixed: more reliable crash reporting
|
||||
+ Fixed: fixed infamous "hashtable internal error: cuckoo/stash collision" errors
|
||||
+ Fixed: safety cleanup in many strings operations
|
||||
+ Fixed: buggy option pannels
|
||||
+ New: Enforce check against CVE-2014-0160
|
||||
+ New: improved hashtables to speedup large mirrors
|
||||
+ New: added unit tests
|
||||
+ New: Added %a option, allowing to define the "Accept:" header line.
|
||||
|
||||
@@ -20,7 +20,7 @@ HelpHtmldiv_DATA = div/search.sh
|
||||
HelpHtmlimg_DATA = img/*
|
||||
HelpHtmlimages_DATA = images/*
|
||||
HelpHtmlTxt_DATA = ../greetings.txt ../history.txt ../license.txt
|
||||
WebHtml_DATA = server/*.html
|
||||
WebHtml_DATA = server/*.html server/*.js server/*.css
|
||||
WebHtmlimages_DATA = server/images/*
|
||||
WebHtmlsfx_DATA = server/sfx/*
|
||||
# note: converted & normalized by
|
||||
@@ -41,6 +41,6 @@ EXTRA_DIST = $(HelpHtml_DATA) $(HelpHtmlimg_DATA) $(HelpHtmlimages_DATA) \
|
||||
install-data-hook:
|
||||
if test ! -L $(DESTDIR)$(prefix)/share/httrack/html ; then \
|
||||
( cd $(DESTDIR)$(prefix)/share/httrack \
|
||||
&& $(LN_S) $(htmldir) html \
|
||||
&& $(LN_S) ../doc/httrack html \
|
||||
) \
|
||||
fi
|
||||
|
||||
@@ -115,6 +115,7 @@ DATA = $(HelpHtml_DATA) $(HelpHtmlTxt_DATA) $(HelpHtmldiv_DATA) \
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@@ -123,14 +124,12 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
|
||||
DEFAULT_LDFLAGS = @DEFAULT_LDFLAGS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@@ -144,6 +143,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
HTTPS_SUPPORT = @HTTPS_SUPPORT@
|
||||
ICONV_LIBS = @ICONV_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -199,7 +199,6 @@ abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
@@ -266,7 +265,7 @@ HelpHtmldiv_DATA = div/search.sh
|
||||
HelpHtmlimg_DATA = img/*
|
||||
HelpHtmlimages_DATA = images/*
|
||||
HelpHtmlTxt_DATA = ../greetings.txt ../history.txt ../license.txt
|
||||
WebHtml_DATA = server/*.html
|
||||
WebHtml_DATA = server/*.html server/*.js server/*.css
|
||||
WebHtmlimages_DATA = server/images/*
|
||||
WebHtmlsfx_DATA = server/sfx/*
|
||||
# note: converted & normalized by
|
||||
@@ -801,7 +800,7 @@ uninstall-am: uninstall-HelpHtmlDATA uninstall-HelpHtmlTxtDATA \
|
||||
install-data-hook:
|
||||
if test ! -L $(DESTDIR)$(prefix)/share/httrack/html ; then \
|
||||
( cd $(DESTDIR)$(prefix)/share/httrack \
|
||||
&& $(LN_S) $(htmldir) html \
|
||||
&& $(LN_S) ../doc/httrack html \
|
||||
) \
|
||||
fi
|
||||
|
||||
|
||||
@@ -52,8 +52,7 @@ offline browser : copy websites to a local directory</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>httrack [
|
||||
url ]... [ −filter ]... [ +filter ]... [ −O,
|
||||
−−path</b> ] [ <b>−%O,
|
||||
−−chroot</b> ] [ <b>−w,
|
||||
−−path</b> ] [ <b>−w,
|
||||
−−mirror</b> ] [ <b>−W,
|
||||
−−mirror−wizard</b> ] [ <b>−g,
|
||||
−−get−files</b> ] [ <b>−i,
|
||||
@@ -70,8 +69,6 @@ url ]... [ −filter ]... [ +filter ]... [ −O,
|
||||
−−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[=N]</b> ] [
|
||||
<b>−RN, −−retries[=N]</b> ] [
|
||||
@@ -111,7 +108,9 @@ url ]... [ −filter ]... [ +filter ]... [ −O,
|
||||
−−referer</b> ] [ <b>−%E,
|
||||
−−from</b> ] [ <b>−%F,
|
||||
−−footer</b> ] [ <b>−%l,
|
||||
−−language</b> ] [ <b>−C,
|
||||
−−language</b> ] [ <b>−%a,
|
||||
−−accept</b> ] [ <b>−%X,
|
||||
−−headers</b> ] [ <b>−C,
|
||||
−−cache[=N]</b> ] [ <b>−k,
|
||||
−−store−all−in−cache</b> ] [
|
||||
<b>−%n, −−do−not−recatch</b> ]
|
||||
@@ -144,8 +143,7 @@ url ]... [ −filter ]... [ +filter ]... [ −O,
|
||||
<b>−%!,
|
||||
−−disable−security−limits</b> ] [
|
||||
<b>−V, −−userdef−cmd</b> ] [
|
||||
<b>−%U, −−user</b> ] [ <b>−%W,
|
||||
−−callback</b> ] [ <b>−K,
|
||||
<b>−%W, −−callback</b> ] [ <b>−K,
|
||||
−−keep−links[=N]</b> ] [</p>
|
||||
|
||||
<h2>DESCRIPTION
|
||||
@@ -227,29 +225,17 @@ options:</b></p>
|
||||
cellspacing="0" cellpadding="0">
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
<td width="3%">
|
||||
|
||||
|
||||
<p>−O</p></td>
|
||||
<td width="7%"></td>
|
||||
<td width="8%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p>path for mirror/logfiles+cache (−O path
|
||||
mirror[,path cache and logfiles]) (−−path
|
||||
<param>)</p> </td></tr>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
<p>−%O</p></td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p>chroot path to, must be r00t (−%O root path)
|
||||
(−−chroot <param>)</p></td></tr>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>Action
|
||||
@@ -475,19 +461,6 @@ hour) (−−max−time[=N])</p></td></tr>
|
||||
|
||||
<p>pause transfer if N bytes reached, and wait until lock
|
||||
file is deleted (−−max−pause[=N])</p></td></tr>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="9%">
|
||||
|
||||
|
||||
<p>−%mN</p></td>
|
||||
<td width="2%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p>maximum mms stream download time in seconds (60=1
|
||||
minute, 3600=1 hour)
|
||||
(−−max−mms−time[=N])</p> </td></tr>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>Flow
|
||||
@@ -1049,6 +1022,32 @@ HTTP headers (−F "user−agent name")
|
||||
|
||||
<p>preffered language (−%l "fr, en, jp, *"
|
||||
(−−language <param>)</p></td></tr>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
<p>−%a</p></td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p>accepted formats (−%a
|
||||
"text/html,image/png;q=0.9,*/*;q=0.1"
|
||||
(−−accept <param>)</p></td></tr>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
<p>−%X</p></td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p>additional HTTP header line (−%X
|
||||
"X−Magic: 42" (−−headers
|
||||
<param>)</p> </td></tr>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>Log, index,
|
||||
@@ -1632,18 +1631,6 @@ memory boundary checks)
|
||||
|
||||
<p>generate transfer rate statictics every minutes
|
||||
(−−debug−ratestats)</p> </td></tr>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="6%">
|
||||
|
||||
|
||||
<p>−#!</p></td>
|
||||
<td width="5%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p>execute a shell command (−#! "echo
|
||||
hello") (−−exec <param>)</p></td></tr>
|
||||
</table>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em"><b>Dangerous
|
||||
@@ -1707,25 +1694,13 @@ specific options:</b></p>
|
||||
|
||||
|
||||
<p style="margin-top: 1em">execute system command after
|
||||
each files ($0 is the filename: −V "rm ")
|
||||
each files ($0 is the filename: −V "rm \$0")
|
||||
(−−userdef−cmd <param>)</p></td></tr>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
<p>−%U</p></td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
|
||||
|
||||
<p>run the engine with another id when called as root
|
||||
(−%U smith) (−−user <param>)</p></td></tr>
|
||||
<tr valign="top" align="left">
|
||||
<td width="11%"></td>
|
||||
<td width="4%">
|
||||
|
||||
|
||||
<p>−%W</p></td>
|
||||
<td width="7%"></td>
|
||||
<td width="78%">
|
||||
@@ -2311,7 +2286,7 @@ other information you deem necessary.</p>
|
||||
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">Copyright (C)
|
||||
1998-2013 Xavier Roche and other contributors</p>
|
||||
1998-2014 Xavier Roche and other contributors</p>
|
||||
|
||||
<p style="margin-left:11%; margin-top: 1em">This program is
|
||||
free software: you can redistribute it and/or modify it
|
||||
|
||||
@@ -6,79 +6,9 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
@@ -139,7 +69,7 @@ ${LANG_K3} : ${HTTRACK_WEB}
|
||||
|
||||
<form>
|
||||
<input type="button" value="OK" onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,75 +6,10 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
@@ -138,7 +73,7 @@ function info(str) {
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/server/file.html" target="_blank"
|
||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O1}
|
||||
@@ -150,7 +85,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/index.html" target="_blank"
|
||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O5}
|
||||
@@ -183,20 +118,20 @@ ${do:end-if}
|
||||
<form action="${thisfile}" name="form">
|
||||
<table width="100%">
|
||||
<tr><td>${LANG_T2}</td><td>http://<input name="urladr"
|
||||
onMouseOver="info('${LANG_T10}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_T10}'); return true" onMouseOut="info(' '); return true"
|
||||
></td></tr>
|
||||
<tr><td colspan=2>
|
||||
|
||||
<table width="100%">
|
||||
<th>${LANG_T4}</th>
|
||||
<tr><td>${LANG_T5}:</td><td><input name="urllogin"
|
||||
onMouseOver="info('${LANG_T12}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_T12}'); return true" onMouseOut="info(' '); return true"
|
||||
></td></tr>
|
||||
<tr><td>${LANG_T6}:</td><td><input name="urlpass"
|
||||
onMouseOver="info('${LANG_T13}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_T13}'); return true" onMouseOut="info(' '); return true"
|
||||
></td></tr>
|
||||
<tr><td>${LANG_T7}:</td><td><input type="button" value="${LANG_T8}" onClick="alert('not yet implemented!')"
|
||||
onMouseOver="info('${LANG_T14}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_T14}'); return true" onMouseOut="info(' '); return true"
|
||||
></td></tr>
|
||||
</table>
|
||||
|
||||
@@ -204,7 +139,7 @@ ${do:end-if}
|
||||
|
||||
<tr><td>
|
||||
<input type="button" value="OK" onClick="if (do_add()) { window.close(); }"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
|
||||
@@ -6,75 +6,8 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
|
||||
@@ -7,10 +7,10 @@
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
window.close();
|
||||
window.close();
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
|
||||
@@ -6,79 +6,8 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
|
||||
@@ -6,75 +6,8 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
@@ -103,7 +36,7 @@ function info(str) {
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/server/file.html" target="_blank"
|
||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O1}
|
||||
@@ -115,7 +48,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/index.html" target="_blank"
|
||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O5}
|
||||
@@ -147,23 +80,23 @@ ${do:end-if}
|
||||
|
||||
<br>
|
||||
|
||||
<pre>
|
||||
|
||||
${do:if-not-empty:commandReturn}
|
||||
${LANG_F19}
|
||||
<font color="red">
|
||||
${commandReturnMsg}
|
||||
</font>
|
||||
${LANG_F20}
|
||||
<font color="blue">
|
||||
httrack ${commandReturnCmdl}
|
||||
</font>
|
||||
${LANG_F21}
|
||||
${do:end-if}
|
||||
|
||||
${do:if-empty:commandReturn}
|
||||
<pre>
|
||||
|
||||
${do:if-not-empty:commandReturn}
|
||||
${LANG_F19}
|
||||
<font color="red">
|
||||
${commandReturnMsg}
|
||||
</font>
|
||||
${LANG_F20}
|
||||
<font color="blue">
|
||||
httrack ${commandReturnCmdl}
|
||||
</font>
|
||||
${LANG_F21}
|
||||
${do:end-if}
|
||||
|
||||
${do:if-empty:commandReturn}
|
||||
${LANG_F22}
|
||||
${do:end-if}
|
||||
${do:end-if}
|
||||
</pre>
|
||||
|
||||
${LANG_G8} :
|
||||
@@ -177,7 +110,7 @@ ${path}/${projname}
|
||||
<li><a href="/website/hts-log.txt" target="_new">${LANG_D4}</a></li>
|
||||
</ul>
|
||||
|
||||
<form method="POST" action="exit.html" name="form">
|
||||
<form method="POST" action="exit.html" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="command" value="quit">
|
||||
|
||||
@@ -191,8 +124,8 @@ ${path}/${projname}
|
||||
<table width="100%" border="0"><tr><td align="left">
|
||||
|
||||
</td><td align="right">
|
||||
<input type="submit" value=" ${LANG_QUIT} "
|
||||
onClick="form.submit()">
|
||||
<input type="submit" value=" ${LANG_QUIT} "
|
||||
onClick="form.submit()">
|
||||
</td></tr></table>
|
||||
|
||||
</td></tr>
|
||||
|
||||
@@ -6,79 +6,8 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
@@ -129,7 +58,7 @@ function info(str) {
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr><td class="tabCtrl" align="left">
|
||||
<a style="background:black;color: white" href="about.html" target="_new"
|
||||
onMouseOver="info('${LANG_G21}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G21}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${LANG_O16}...
|
||||
</a>
|
||||
@@ -138,7 +67,7 @@ ${LANG_O16}...
|
||||
<tr><td class="tabCtrl" align="left">
|
||||
<a style="background:black;color: white"
|
||||
href="http://www.httrack.com/update.php3?Product=HTTrack&Version=${HTTRACK_VERSIONID}&VersionStr=${HTTRACK_VERSION}&Platform=${HTS_PLATFORM}&LanguageId=${lang}" target="_new"
|
||||
onMouseOver="info('${LANG_O17}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_O17}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${LANG_O17}...
|
||||
</a>
|
||||
@@ -149,7 +78,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<tr><td class="tabCtrl" align="left">
|
||||
<a style="background:black;color: white"
|
||||
href="/index.html" target="_new"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${LANG_P16}
|
||||
</a>
|
||||
|
||||
@@ -6,75 +6,8 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>HTTrack Website Copier - Offline Browser</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
@@ -110,7 +43,7 @@ function info(str) {
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/server/file.html" target="_blank"
|
||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O1}
|
||||
@@ -122,7 +55,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/index.html" target="_blank"
|
||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O5}
|
||||
@@ -180,7 +113,7 @@ ${LANG_THANKYOU}!
|
||||
|
||||
<tr><td align="right">
|
||||
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> "
|
||||
onMouseOver="info('${LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt1.html" target="_blank"
|
||||
onClick="window.open('/step9_opt1.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,7 +96,7 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
<!-- clear if not checked -->
|
||||
<input type="hidden" name="parseall" value="">
|
||||
@@ -178,34 +107,34 @@ ${do:end-if}
|
||||
<!-- checkboxes -->
|
||||
<table border="0" width="100%" cellspacing="0">
|
||||
<tr><td><input type="checkbox" name="parseall" ${checked:parseall}
|
||||
onMouseOver="info('${LANG_I1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I31}</td></tr>
|
||||
<tr><td><input type="checkbox" name="link" ${checked:link}
|
||||
onMouseOver="info('${LANG_I2}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I2}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I32}</td></tr>
|
||||
<tr><td><input type="checkbox" name="testall" ${checked:testall}
|
||||
onMouseOver="info('${LANG_I2b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I2b}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I32b}</td></tr>
|
||||
<tr><td><input type="checkbox" name="htmlfirst" ${checked:htmlfirst}
|
||||
onMouseOver="info('${LANG_I2c}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I2c}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I32c}</td></tr>
|
||||
</table>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt7.html" target="_blank"
|
||||
onClick="window.open('/step9_opt7.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,37 +96,37 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
${LANG_IOPT10}:
|
||||
<input name="prox" value="${prox}" size="32"
|
||||
onMouseOver="info('${LANG_G14}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G14}'); return true" onMouseOut="info(' '); return true"
|
||||
>:
|
||||
<input name="portprox" value="${portprox}" size="4"
|
||||
onMouseOver="info('${LANG_G15}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G15}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
<br>
|
||||
|
||||
<input type="checkbox" name="ftpprox" ${checked:ftpprox}
|
||||
onMouseOver="info('${LANG_G15c}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G15c}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I47c}
|
||||
<br><br>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt9.html" target="_blank"
|
||||
onClick="window.open('/step9_opt9.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,7 +96,7 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
${LANG_W1}:
|
||||
<br>
|
||||
@@ -183,97 +112,97 @@ ${LANG_W3}
|
||||
|
||||
<td align="left">
|
||||
<input name="ext1" value="${ext1}"
|
||||
onMouseOver="info('${LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="left">
|
||||
⇔
|
||||
</td><td align="left">
|
||||
<input name="mime1" value="${mime1}"
|
||||
onMouseOver="info('${LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
<!-- -->
|
||||
<td align="left">
|
||||
<input name="ext2" value="${ext2}"
|
||||
onMouseOver="info('${LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="left">
|
||||
⇔
|
||||
</td><td align="left">
|
||||
<input name="mime2" value="${mime2}"
|
||||
onMouseOver="info('${LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
<!-- -->
|
||||
<td align="left">
|
||||
<input name="ext3" value="${ext3}"
|
||||
onMouseOver="info('${LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="left">
|
||||
⇔
|
||||
</td><td align="left">
|
||||
<input name="mime3" value="${mime3}"
|
||||
onMouseOver="info('${LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
<!-- -->
|
||||
<td align="left">
|
||||
<input name="ext4" value="${ext4}"
|
||||
onMouseOver="info('${LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="left">
|
||||
⇔
|
||||
</td><td align="left">
|
||||
<input name="mime4" value="${mime4}"
|
||||
onMouseOver="info('${LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
<!-- -->
|
||||
<td align="left">
|
||||
<input name="ext5" value="${ext5}"
|
||||
onMouseOver="info('${LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="left">
|
||||
⇔
|
||||
</td><td align="left">
|
||||
<input name="mime5" value="${mime5}"
|
||||
onMouseOver="info('${LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
<!-- -->
|
||||
<td align="left">
|
||||
<input name="ext6" value="${ext6}"
|
||||
onMouseOver="info('${LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="left">
|
||||
⇔
|
||||
</td><td align="left">
|
||||
<input name="mime6" value="${mime6}"
|
||||
onMouseOver="info('${LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
<!-- -->
|
||||
<td align="left">
|
||||
<input name="ext7" value="${ext7}"
|
||||
onMouseOver="info('${LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="left">
|
||||
⇔
|
||||
</td><td align="left">
|
||||
<input name="mime7" value="${mime7}"
|
||||
onMouseOver="info('${LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
<!-- -->
|
||||
<td align="left">
|
||||
<input name="ext8" value="${ext8}"
|
||||
onMouseOver="info('${LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="left">
|
||||
⇔
|
||||
</td><td align="left">
|
||||
<input name="mime8" value="${mime8}"
|
||||
onMouseOver="info('${LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_W5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
<!-- -->
|
||||
@@ -283,21 +212,21 @@ ${LANG_W3}
|
||||
<br><br>
|
||||
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,94 +6,23 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
function info(str) {
|
||||
window.status = str;
|
||||
}
|
||||
}
|
||||
// -->
|
||||
</script>
|
||||
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt5.html" target="_blank"
|
||||
onClick="window.open('/step9_opt5.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,62 +96,62 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
${LANG_I33}
|
||||
<br>
|
||||
<select name="build"
|
||||
onMouseOver="info('${LANG_I3}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I3}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:build:LISTDEF_3}
|
||||
</select>
|
||||
<input type="button" value="${LANG_O2}"
|
||||
onClick="form.build.selectedIndex=14; window.open('option2b.html', 'option2b', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480').wparent=document; form.submit();"
|
||||
onMouseOver="info('${LANG_I4}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I4}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
|
||||
<!-- checkboxes -->
|
||||
<table border="0" width="100%" cellspacing="0">
|
||||
<tr><td>
|
||||
<select name="dos"
|
||||
onMouseOver="info('${LANG_I8}\r\n${LANG_I8b}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
<option value="0"${ztest:dos: selected::}> </option>
|
||||
<option value="1"${ztest:dos:: selected:}>${LANG_I37}</option>
|
||||
<option value="2"${ztest:dos::: selected}>${LANG_I37b}</option>
|
||||
</select>
|
||||
<tr><td>
|
||||
<select name="dos"
|
||||
onMouseOver="info('${html:LANG_I8}\r\n${LANG_I8b}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
<option value="0"${ztest:dos: selected::}> </option>
|
||||
<option value="1"${ztest:dos:: selected:}>${LANG_I37}</option>
|
||||
<option value="2"${ztest:dos::: selected}>${LANG_I37b}</option>
|
||||
</select>
|
||||
</td></tr>
|
||||
<tr><td><input type="checkbox" name="errpage" ${checked:errpage}
|
||||
onMouseOver="info('${LANG_I9}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I9}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I38}</td></tr>
|
||||
<tr><td><input type="checkbox" name="external" ${checked:external}
|
||||
onMouseOver="info('${LANG_I29}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I29}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I56}</td></tr>
|
||||
<tr><td><input type="checkbox" name="hidepwd" ${checked:hidepwd}
|
||||
onMouseOver="info('${LANG_I30}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I30}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I66}</td></tr>
|
||||
<tr><td><input type="checkbox" name="hidequery" ${checked:hidequery}
|
||||
onMouseOver="info('${LANG_I30b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I30b}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I67}</td></tr>
|
||||
<tr><td><input type="checkbox" name="nopurge" ${checked:nopurge}
|
||||
onMouseOver="info('${LANG_I1a}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1a}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I57}</td></tr>
|
||||
</table>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -141,7 +70,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt5.html" target="_blank"
|
||||
onClick="window.open('/step9_opt5.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -155,7 +84,7 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
<input name="BuildString" size="60" value="${BuildString}">
|
||||
|
||||
@@ -170,25 +99,25 @@ ${LANG_Q3}
|
||||
</pre>
|
||||
|
||||
<br>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK]"
|
||||
${do:output-mode:html-urlescaped}
|
||||
onClick="if (confirm(str_replace(str_replace('${LANG_DIAL7}', '%20', ' '), '%0a', ' '))) { form.closeme.value=1; form.submit(); } return false;"
|
||||
${do:output-mode:}
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK]"
|
||||
${do:output-mode:html-urlescaped}
|
||||
onClick="if (confirm(str_replace(str_replace('${LANG_DIAL7}', '%20', ' '), '%0a', ' '))) { form.closeme.value=1; form.submit(); } return false;"
|
||||
${do:output-mode:}
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
</td></tr>
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt10.html" target="_blank"
|
||||
onClick="window.open('/step9_opt10.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,7 +96,7 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
${LANG_I40c}
|
||||
<br>
|
||||
@@ -175,7 +104,7 @@ ${LANG_I40c}
|
||||
<!-- checkboxes -->
|
||||
<table border="0" width="100%" cellspacing="0">
|
||||
<tr><td><input type="checkbox" name="cache" ${checked:cache}
|
||||
onMouseOver="info('${LANG_I5}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I5}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I34}</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
@@ -183,7 +112,7 @@ ${LANG_I40c}
|
||||
${LANG_I39}
|
||||
<br>
|
||||
<select name="filter"
|
||||
onMouseOver="info('${LANG_I29}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I29}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:filter:LISTDEF_4}
|
||||
</select>
|
||||
@@ -192,7 +121,7 @@ ${listid:filter:LISTDEF_4}
|
||||
${LANG_I40}
|
||||
<br>
|
||||
<select name="travel"
|
||||
onMouseOver="info('${LANG_I11}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I11}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:travel:LISTDEF_5}
|
||||
</select>
|
||||
@@ -201,7 +130,7 @@ ${listid:travel:LISTDEF_5}
|
||||
${LANG_I40b}
|
||||
<br>
|
||||
<select name="travel2"
|
||||
onMouseOver="info('${LANG_I11b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I11b}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:travel2:LISTDEF_6}
|
||||
</select>
|
||||
@@ -210,7 +139,7 @@ ${listid:travel2:LISTDEF_6}
|
||||
${LANG_I40e}
|
||||
<br>
|
||||
<select name="travel3"
|
||||
onMouseOver="info('${LANG_I11c}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I11c}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:travel3:LISTDEF_11}
|
||||
</select>
|
||||
@@ -219,26 +148,26 @@ ${listid:travel3:LISTDEF_11}
|
||||
<!-- checkboxes -->
|
||||
<table border="0" width="100%" cellspacing="0">
|
||||
<tr><td><input type="checkbox" name="windebug" ${checked:windebug}
|
||||
onMouseOver="info('${LANG_I1h}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1h}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I40d}</td></tr>
|
||||
</table>
|
||||
<br>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt3.html" target="_blank"
|
||||
onClick="window.open('/step9_opt3.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,7 +96,7 @@ ${do:end-if}
|
||||
<form method="POST" action="refresh.html" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
<table border="0" width="100%" cellspacing="0">
|
||||
|
||||
@@ -175,11 +104,11 @@ ${do:end-if}
|
||||
${LANG_I44}
|
||||
</td><td>
|
||||
<input name="connexion" value="${connexion}" size="4"
|
||||
onMouseOver="info('${LANG_I12}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I12}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr><tr><td></td><td>
|
||||
<input type="checkbox" name="ka" ${checked:ka}
|
||||
onMouseOver="info('${LANG_I47f}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I47f}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I47e}
|
||||
</td></tr>
|
||||
|
||||
@@ -187,11 +116,11 @@ ${LANG_I44}
|
||||
${LANG_I47d}
|
||||
</td><td>
|
||||
<input name="timeout" value="${timeout}" size="4"
|
||||
onMouseOver="info('${LANG_I13}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I13}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr><tr><td></td><td>
|
||||
<input type="checkbox" name="remt" ${checked:remt}
|
||||
onMouseOver="info('${LANG_I14}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I14}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I45}
|
||||
</td></tr>
|
||||
|
||||
@@ -199,7 +128,7 @@ ${LANG_I47d}
|
||||
${LANG_I48}
|
||||
</td><td>
|
||||
<input name="retry" value="${retry}" size="4"
|
||||
onMouseOver="info('${LANG_I17}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I17}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -207,31 +136,31 @@ ${LANG_I48}
|
||||
${LANG_I46}
|
||||
</td><td>
|
||||
<input name="rate" value="${rate}" size="4"
|
||||
onMouseOver="info('${LANG_I15}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I15}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr><tr><td></td><td>
|
||||
<input type="checkbox" name="rems" ${checked:rems}
|
||||
onMouseOver="info('${LANG_I16}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I16}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I47}
|
||||
</td></tr>
|
||||
|
||||
</table>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt2.html" target="_blank"
|
||||
onClick="window.open('/step9_opt2.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,7 +96,7 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
<table border="0" width="100%" cellspacing="0">
|
||||
|
||||
@@ -175,7 +104,7 @@ ${do:end-if}
|
||||
${LANG_G32}
|
||||
</td><td>
|
||||
<input name="depth" value="${depth}" size="4"
|
||||
onMouseOver="info('${LANG_I1g}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1g}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -183,7 +112,7 @@ ${LANG_G32}
|
||||
${LANG_G32b}
|
||||
</td><td>
|
||||
<input name="depth2" value="${depth2}" size="4"
|
||||
onMouseOver="info('${LANG_I1g2}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1g2}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -191,7 +120,7 @@ ${LANG_G32b}
|
||||
${LANG_I50}
|
||||
</td><td>
|
||||
<input name="maxhtml" value="${maxhtml}" size="4"
|
||||
onMouseOver="info('${LANG_I18}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I18}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -199,7 +128,7 @@ ${LANG_I50}
|
||||
${LANG_I50b}
|
||||
</td><td>
|
||||
<input name="othermax" value="${othermax}" size="4"
|
||||
onMouseOver="info('${LANG_I19}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I19}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -207,7 +136,7 @@ ${LANG_I50b}
|
||||
${LANG_I51}
|
||||
</td><td>
|
||||
<input name="sizemax" value="${sizemax}" size="4"
|
||||
onMouseOver="info('${LANG_I20}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I20}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -215,7 +144,7 @@ ${LANG_I51}
|
||||
${LANG_I65}
|
||||
</td><td>
|
||||
<input name="pausebytes" value="${pausebytes}" size="4"
|
||||
onMouseOver="info('${LANG_I20b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I20b}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -223,7 +152,7 @@ ${LANG_I65}
|
||||
${LANG_I52}
|
||||
</td><td>
|
||||
<input name="maxtime" value="${maxtime}" size="4"
|
||||
onMouseOver="info('${LANG_I21}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I21}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -231,7 +160,7 @@ ${LANG_I52}
|
||||
${LANG_I54}
|
||||
</td><td>
|
||||
<input name="maxrate" value="${maxrate}" size="4"
|
||||
onMouseOver="info('${LANG_I22}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I22}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -239,7 +168,7 @@ ${LANG_I54}
|
||||
${LANG_I64}
|
||||
</td><td>
|
||||
<input name="maxconn" value="${maxconn}" size="4"
|
||||
onMouseOver="info('${LANG_I22b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I22b}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -247,25 +176,25 @@ ${LANG_I64}
|
||||
${LANG_I64b}
|
||||
</td><td>
|
||||
<input name="maxlinks" value="${maxlinks}" size="4"
|
||||
onMouseOver="info('${LANG_I22c}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I22c}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</table>
|
||||
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt8.html" target="_blank"
|
||||
onClick="window.open('/step9_opt8.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,7 +96,7 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
<table border="0" width="100%" cellspacing="0">
|
||||
|
||||
@@ -175,7 +104,7 @@ ${do:end-if}
|
||||
${LANG_I43}
|
||||
</td><td>
|
||||
<input name="user" value="${user}" size="60"
|
||||
onMouseOver="info('${LANG_I23}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I23}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
@@ -183,27 +112,27 @@ ${LANG_I43}
|
||||
${LANG_I43b}
|
||||
</td><td>
|
||||
<input name="footer" value="${footer}" size="60"
|
||||
onMouseOver="info('${LANG_I23b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I23b}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
|
||||
</table>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt4.html" target="_blank"
|
||||
onClick="window.open('/step9_opt4.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,13 +96,13 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
<tt>
|
||||
${LANG_B10}
|
||||
</tt>
|
||||
<textarea name="url2" cols="60" rows="8"
|
||||
onMouseOver="info('${LANG_C3}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_C3}'); return true" onMouseOut="info(' '); return true"
|
||||
>${url2}</textarea>
|
||||
|
||||
<br>
|
||||
@@ -181,21 +110,21 @@ ${LANG_B10}
|
||||
${LANG_B13}
|
||||
</tt>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt6.html" target="_blank"
|
||||
onClick="window.open('/step9_opt6.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,72 +96,72 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
<input type="checkbox" name="cookies" ${checked:cookies}
|
||||
onMouseOver="info('${LANG_I1b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1b}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I58}
|
||||
<br><br>
|
||||
|
||||
${LANG_I59}
|
||||
<br>
|
||||
<select name="checktype"
|
||||
onMouseOver="info('${LANG_I1c}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1c}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:checktype:LISTDEF_7}
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="parsejava" ${checked:parsejava}
|
||||
onMouseOver="info('${LANG_I1d}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1d}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I60}
|
||||
<br><br>
|
||||
|
||||
${LANG_I55}
|
||||
<br>
|
||||
<select name="robots"
|
||||
onMouseOver="info('${LANG_I28}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I28}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:robots:LISTDEF_8}
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="updhack" ${checked:updhack}
|
||||
onMouseOver="info('${LANG_I1k}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1k}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I62b}
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="urlhack" ${checked:urlhack}
|
||||
onMouseOver="info('${LANG_I1k2}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1k2}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I62b2}
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="toler" ${checked:toler}
|
||||
onMouseOver="info('${LANG_I1i}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1i}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I62}
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="http10" ${checked:http10}
|
||||
onMouseOver="info('${LANG_I1j}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1j}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I63}
|
||||
<br><br>
|
||||
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
@@ -6,88 +6,17 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
${do:if-not-empty:closeme}
|
||||
window.close();
|
||||
${do:end-if}
|
||||
${do:set:closeme:}
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
@@ -131,7 +60,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step9_opt9.html" target="_blank"
|
||||
onClick="window.open('/step9_opt9.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -142,18 +71,18 @@ ${do:end-if}
|
||||
<table class="tableWidth" border="0" width="100%" cellspacing="0">
|
||||
<tr>
|
||||
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option1.html" onClick="form.redirect.value='option1.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT1}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT1}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option2.html" onClick="form.redirect.value='option2.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT2}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT2}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option3.html" onClick="form.redirect.value='option3.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT3}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT3}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option4.html" onClick="form.redirect.value='option4.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT4}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT4}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option5.html" onClick="form.redirect.value='option5.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT5}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT5}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option11.html" onClick="form.redirect.value='option11.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT11}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT11}</a></td>
|
||||
</tr><tr>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option6.html" onClick="form.redirect.value='option6.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT6}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT6}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option7.html" onClick="form.redirect.value='option7.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT7}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT7}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option8.html" onClick="form.redirect.value='option8.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT8}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT8}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option9.html" onClick="form.redirect.value='option9.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT9}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT9}</a></td>
|
||||
<td class="tabCtrl" align="center"><a style="background:black;color: white" href="option10.html" onClick="form.redirect.value='option10.html'; form.submit(); return false;" align="center" onMouseOver="info('${html:LANG_IOPT10}'); return true" onMouseOut="info(' '); return true">${LANG_IOPT10}</a></td>
|
||||
<td class="tabCtrl" align="center"> </td>
|
||||
|
||||
</tr>
|
||||
@@ -167,53 +96,53 @@ ${do:end-if}
|
||||
<form method="POST" action="${thisfile}" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
<input type="hidden" name="closeme" value="">
|
||||
|
||||
<input type="checkbox" name="cache2" ${checked:cache2}
|
||||
onMouseOver="info('${LANG_I1e}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1e}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I61}
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="norecatch" ${checked:norecatch}
|
||||
onMouseOver="info('${LANG_I5b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I5b}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I34b}
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="logf" ${checked:logf}
|
||||
onMouseOver="info('${LANG_I7}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I7}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I36}
|
||||
<select name="logtype"
|
||||
onMouseOver="info('${LANG_I1f}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I1f}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:logtype:LISTDEF_9}
|
||||
</select>
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="index" ${checked:index}
|
||||
onMouseOver="info('${LANG_I6}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I6}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I35}
|
||||
<br><br>
|
||||
|
||||
<input type="checkbox" name="index2" ${checked:index2}
|
||||
onMouseOver="info('${LANG_I6b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_I6b}'); return true" onMouseOut="info(' '); return true"
|
||||
> ${LANG_I35b}
|
||||
<br><br>
|
||||
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<table width="100%">
|
||||
<tr><td align="left">
|
||||
<input type="submit" value="${LANG_OK}"
|
||||
onClick="form.closeme.value=1; form.submit(); return false;"
|
||||
onMouseOver="info('${html:LANG_TIPOK}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input type="button" value="${LANG_CANCEL}"
|
||||
onClick="window.close();"
|
||||
onMouseOver="info('${html:LANG_TIPCANCEL}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr>
|
||||
</table>
|
||||
</td></tr>
|
||||
|
||||
</form>
|
||||
|
||||
|
||||
26
html/server/ping.js
Normal file
26
html/server/ping.js
Normal file
@@ -0,0 +1,26 @@
|
||||
// Function aimed to ping the webhttrack server regularly to keep it alive
|
||||
// If the browser window is closed, the server will eventually shutdown
|
||||
function ping_server() {
|
||||
var iframe = document.getElementById('pingiframe');
|
||||
if (iframe && iframe.src) {
|
||||
iframe.src = iframe.src;
|
||||
setTimeout(ping_server, 30000);
|
||||
}
|
||||
}
|
||||
|
||||
// Create an invisible iframe to hold the server ping result
|
||||
// Only modern browsers will support that, but old browsers are compatible
|
||||
// with the legacy "wait for browser PID" mode
|
||||
if (document && document.createElement && document.body
|
||||
&& document.body.appendChild && document.getElementById) {
|
||||
var iframe = document.createElement('iframe');
|
||||
if (iframe) {
|
||||
iframe.id = 'pingiframe';
|
||||
iframe.style.display = "none";
|
||||
iframe.style.visibility = "hidden";
|
||||
iframe.width = iframe.height = 0;
|
||||
iframe.src = "/ping";
|
||||
document.body.appendChild(iframe);
|
||||
ping_server();
|
||||
}
|
||||
}
|
||||
@@ -7,122 +7,55 @@
|
||||
<META http-equiv="refresh" content="30; URL=finished.html">
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
<!--
|
||||
var freeze=0;
|
||||
setTimeout(do_refresh, 1000);
|
||||
setTimeout(do_refresh, 1000);
|
||||
function do_load() {
|
||||
window.status=' ';
|
||||
enable_timer();
|
||||
}
|
||||
function disable_timer() {
|
||||
if (freeze == 0) {
|
||||
freeze=1;
|
||||
}
|
||||
window.status=' ';
|
||||
enable_timer();
|
||||
}
|
||||
function disable_timer() {
|
||||
if (freeze == 0) {
|
||||
freeze=1;
|
||||
}
|
||||
}
|
||||
function lock_timer() {
|
||||
freeze=2;
|
||||
}
|
||||
function enable_timer() {
|
||||
if (freeze == 1) {
|
||||
freeze=0;
|
||||
}
|
||||
}
|
||||
function unlock_timer() {
|
||||
freeze=0;
|
||||
}
|
||||
function do_confirm(str) {
|
||||
lock_timer();
|
||||
ret=confirm(str);
|
||||
if (!ret) {
|
||||
unlock_timer();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
function lock_timer() {
|
||||
freeze=2;
|
||||
}
|
||||
function enable_timer() {
|
||||
if (freeze == 1) {
|
||||
freeze=0;
|
||||
}
|
||||
}
|
||||
function unlock_timer() {
|
||||
freeze=0;
|
||||
}
|
||||
function do_confirm(str) {
|
||||
lock_timer();
|
||||
ret=confirm(str);
|
||||
if (!ret) {
|
||||
unlock_timer();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
function do_unload() {
|
||||
}
|
||||
function info(str) {
|
||||
window.status = str;
|
||||
}
|
||||
function do_refresh() {
|
||||
if (!freeze) {
|
||||
document.location.reload();
|
||||
} else {
|
||||
setTimeout(do_refresh, 1000);
|
||||
}
|
||||
}
|
||||
function no_refresh() {
|
||||
}
|
||||
function do_refresh() {
|
||||
if (!freeze) {
|
||||
document.location.reload();
|
||||
} else {
|
||||
setTimeout(do_refresh, 1000);
|
||||
}
|
||||
}
|
||||
function no_refresh() {
|
||||
}
|
||||
// -->
|
||||
</script>
|
||||
|
||||
@@ -140,7 +73,7 @@ function no_refresh() {
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/server/file.html" target="_blank"
|
||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O1}
|
||||
@@ -152,7 +85,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/index.html" target="_blank"
|
||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O5}
|
||||
@@ -198,8 +131,8 @@ ${do:end-if}
|
||||
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<br>
|
||||
|
||||
<table border="0" width="100%">
|
||||
<tr>
|
||||
@@ -210,8 +143,8 @@ ${LANG_H20} ${info.currentjob}
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<br>
|
||||
|
||||
<br>
|
||||
|
||||
<form method="POST" action="step4.html" name="form">
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
@@ -219,20 +152,20 @@ ${LANG_H20} ${info.currentjob}
|
||||
|
||||
<table border="0" width="100%">
|
||||
|
||||
<tr><td>${info.state[0]}</td><td>${info.name[0]}</td><td>${info.file[0]}</td><td>${info.size[0]}/${info.sizetot[0]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[0]}'; form.submit()" onMouseOver="info('${LANG_H6}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[1]}</td><td>${info.name[1]}</td><td>${info.file[1]}</td><td>${info.size[1]}/${info.sizetot[1]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[1]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[2]}</td><td>${info.name[2]}</td><td>${info.file[2]}</td><td>${info.size[2]}/${info.sizetot[2]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[2]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[3]}</td><td>${info.name[3]}</td><td>${info.file[3]}</td><td>${info.size[3]}/${info.sizetot[3]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[3]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[4]}</td><td>${info.name[4]}</td><td>${info.file[4]}</td><td>${info.size[4]}/${info.sizetot[4]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[4]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[5]}</td><td>${info.name[5]}</td><td>${info.file[5]}</td><td>${info.size[5]}/${info.sizetot[5]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[5]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[6]}</td><td>${info.name[6]}</td><td>${info.file[6]}</td><td>${info.size[6]}/${info.sizetot[6]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[6]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[7]}</td><td>${info.name[7]}</td><td>${info.file[7]}</td><td>${info.size[7]}/${info.sizetot[7]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[7]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[8]}</td><td>${info.name[8]}</td><td>${info.file[8]}</td><td>${info.size[8]}/${info.sizetot[8]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[8]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[9]}</td><td>${info.name[9]}</td><td>${info.file[9]}</td><td>${info.size[9]}/${info.sizetot[9]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[9]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[10]}</td><td>${info.name[10]}</td><td>${info.file[10]}</td><td>${info.size[10]}/${info.sizetot[10]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[10]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[11]}</td><td>${info.name[11]}</td><td>${info.file[11]}</td><td>${info.size[11]}/${info.sizetot[11]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[11]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[12]}</td><td>${info.name[12]}</td><td>${info.file[12]}</td><td>${info.size[12]}/${info.sizetot[12]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[12]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[13]}</td><td>${info.name[13]}</td><td>${info.file[13]}</td><td>${info.size[13]}/${info.sizetot[13]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[13]}'; form.submit()" onMouseOver="info('${LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[0]}</td><td>${info.name[0]}</td><td>${info.file[0]}</td><td>${info.size[0]}/${info.sizetot[0]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[0]}'; form.submit()" onMouseOver="info('${html:LANG_H6}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[1]}</td><td>${info.name[1]}</td><td>${info.file[1]}</td><td>${info.size[1]}/${info.sizetot[1]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[1]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[2]}</td><td>${info.name[2]}</td><td>${info.file[2]}</td><td>${info.size[2]}/${info.sizetot[2]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[2]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[3]}</td><td>${info.name[3]}</td><td>${info.file[3]}</td><td>${info.size[3]}/${info.sizetot[3]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[3]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[4]}</td><td>${info.name[4]}</td><td>${info.file[4]}</td><td>${info.size[4]}/${info.sizetot[4]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[4]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[5]}</td><td>${info.name[5]}</td><td>${info.file[5]}</td><td>${info.size[5]}/${info.sizetot[5]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[5]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[6]}</td><td>${info.name[6]}</td><td>${info.file[6]}</td><td>${info.size[6]}/${info.sizetot[6]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[6]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[7]}</td><td>${info.name[7]}</td><td>${info.file[7]}</td><td>${info.size[7]}/${info.sizetot[7]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[7]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[8]}</td><td>${info.name[8]}</td><td>${info.file[8]}</td><td>${info.size[8]}/${info.sizetot[8]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[8]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[9]}</td><td>${info.name[9]}</td><td>${info.file[9]}</td><td>${info.size[9]}/${info.sizetot[9]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[9]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[10]}</td><td>${info.name[10]}</td><td>${info.file[10]}</td><td>${info.size[10]}/${info.sizetot[10]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[10]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[11]}</td><td>${info.name[11]}</td><td>${info.file[11]}</td><td>${info.size[11]}/${info.sizetot[11]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[11]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[12]}</td><td>${info.name[12]}</td><td>${info.file[12]}</td><td>${info.size[12]}/${info.sizetot[12]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[12]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
<tr><td>${info.state[13]}</td><td>${info.name[13]}</td><td>${info.file[13]}</td><td>${info.size[13]}/${info.sizetot[13]}</td><td><input type="submit" value="${LANG_H15}" onClick="form.command.value='cancel-file=${info.url_sav[13]}'; form.submit()" onMouseOver="info('${html:LANG_H7}'); return true" onMouseOut="info(' '); return true"></td></tr>
|
||||
|
||||
</table>
|
||||
|
||||
@@ -246,10 +179,10 @@ ${LANG_H20} ${info.currentjob}
|
||||
<table width="100%" border="0"><tr><td align="left">
|
||||
|
||||
</td><td align="right">
|
||||
<input type="submit" value=" ${LANG_V4} "
|
||||
onMouseOver="disable_timer(); info('${LANG_D3}'); return true"
|
||||
onMouseOut="info(' '); enable_timer(); return true"
|
||||
onClick="if (do_confirm('${LANG_G1}')) { form.command.value='cancel'; form.submit(); } return false"
|
||||
<input type="submit" value=" ${LANG_V4} "
|
||||
onMouseOver="disable_timer(); info('${LANG_D3}'); return true"
|
||||
onMouseOut="info(' '); enable_timer(); return true"
|
||||
onClick="if (do_confirm('${LANG_G1}')) { form.command.value='cancel'; form.submit(); } return false"
|
||||
>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
@@ -6,75 +6,8 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
@@ -119,7 +52,7 @@ function info(str) {
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/server/file.html" target="_blank"
|
||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O1}
|
||||
@@ -131,7 +64,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/index.html" target="_blank"
|
||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O5}
|
||||
@@ -160,18 +93,18 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step1.html" target="_blank"
|
||||
onClick="window.open('/step1.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
</tr></table>
|
||||
|
||||
|
||||
${/* Default values for empty settings */}
|
||||
${do:set:cache:1}
|
||||
${do:set:cache:1}
|
||||
|
||||
${/* Convert winprofile.ini into internal variables */}
|
||||
${do:copy:CurrentUrl:urls}
|
||||
${do:copy:Category:projcateg}
|
||||
${do:copy:CurrentUrl:urls}
|
||||
${do:copy:Category:projcateg}
|
||||
${do:copy:CurrentAction:todo}
|
||||
${do:copy:CurrentURLList:filelist}
|
||||
${do:copy:Proxy:proxy}
|
||||
@@ -267,7 +200,7 @@ ${do:end-if}
|
||||
|
||||
|
||||
${do:loadhash}
|
||||
|
||||
|
||||
${LANG_S11b}
|
||||
<select name="loadprojname" onChange="form.redirect.value='step2.html'; form.submit()">
|
||||
<option value=""> </option>
|
||||
@@ -278,30 +211,30 @@ ${do:loadhash}
|
||||
|
||||
${LANG_S11}
|
||||
<input name="projname" value="${projname}"
|
||||
onMouseOver="info('${LANG_S1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:html:LANG_S1}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
|
||||
<br>
|
||||
|
||||
<table border="0">
|
||||
<tr><td>
|
||||
|
||||
${LANG_S13}
|
||||
<select name="loadprojcateg" onChange="form.redirect.value='step2.html'; form.submit()">
|
||||
<option value=""> </option>
|
||||
${liststr:wincateg}
|
||||
</select>
|
||||
</td><td>
|
||||
<input name="projcateg" value="${projcateg}"
|
||||
onMouseOver="info('${LANG_S5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
|
||||
</td></tr></table>
|
||||
|
||||
<br>
|
||||
|
||||
<table border="0">
|
||||
<tr><td>
|
||||
|
||||
${LANG_S13}
|
||||
<select name="loadprojcateg" onChange="form.redirect.value='step2.html'; form.submit()">
|
||||
<option value=""> </option>
|
||||
${liststr:wincateg}
|
||||
</select>
|
||||
</td><td>
|
||||
<input name="projcateg" value="${projcateg}"
|
||||
onMouseOver="info('${html:html:LANG_S5}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
|
||||
</td></tr></table>
|
||||
|
||||
<br>
|
||||
${LANG_S12}
|
||||
<input name="path" value="${path}"
|
||||
onMouseOver="info('${LANG_S2}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:html:LANG_S2}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
<input type="button" value="refresh" onClick="form.redirect.value='step2.html'; form.submit()">
|
||||
|
||||
@@ -310,11 +243,11 @@ ${do:loadhash}
|
||||
<tr><td>
|
||||
<table width="100%" border="0"><tr><td align="left">
|
||||
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.redirect.value='index.html'; form.submit()"
|
||||
onMouseOver="info('${LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> " onClick="return checkname();" default
|
||||
onMouseOver="info('${LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
@@ -6,75 +6,8 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
@@ -128,7 +61,7 @@ function do_check_child() {
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/server/file.html" target="_blank"
|
||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O1}
|
||||
@@ -140,7 +73,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/index.html" target="_blank"
|
||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O5}
|
||||
@@ -169,7 +102,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step2.html" target="_blank"
|
||||
onClick="window.open('/step2.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -185,7 +118,7 @@ ${do:end-if}
|
||||
<tr><td>
|
||||
${LANG_G31}
|
||||
<select name="todo"
|
||||
onMouseOver="info('${LANG_G9}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G9}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${listid:todo:LISTDEF_10}
|
||||
</select>
|
||||
@@ -198,12 +131,12 @@ ${do:end-if}
|
||||
</td><td>
|
||||
<input type="button" value="${LANG_G43}"
|
||||
onClick="doOpenWindow()"
|
||||
onMouseOver="info('${LANG_G24b}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G24b}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr></table>
|
||||
<br>
|
||||
<textarea name="urls" cols="50" rows="8"
|
||||
onMouseOver="info('${LANG_G11}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G11}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
${do:output-mode:html}
|
||||
${urls}
|
||||
@@ -217,7 +150,7 @@ ${do:output-mode:}
|
||||
${LANG_URLLIST}:
|
||||
</td><td>
|
||||
<input name="filelist" value="${filelist}" size="40"
|
||||
onMouseOver="info('${LANG_G24c}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G24c}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr></table>
|
||||
|
||||
@@ -228,7 +161,7 @@ ${do:output-mode:}
|
||||
${LANG_G41}
|
||||
</td><td>
|
||||
<input type="button" value="${LANG_G40}" onClick="window.open('option1.html', 'option1', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_G24}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_G24}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr></table>
|
||||
|
||||
@@ -237,11 +170,11 @@ ${do:output-mode:}
|
||||
<tr><td align="right">
|
||||
<table width="100%" border="0"><tr><td align="left">
|
||||
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.redirect.value='step2.html'; form.submit()"
|
||||
onMouseOver="info('${LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input name="nextBtn" type="submit" value=" ${LANG_NEXT} >> "
|
||||
onMouseOver="info('${LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
@@ -6,75 +6,8 @@
|
||||
<meta name="keywords" content="${LANG_METAKEYW}" />
|
||||
<title>'${projname}' - HTTrack Website Copier</title>
|
||||
|
||||
<style type="text/css">
|
||||
<!--
|
||||
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
|
||||
|
||||
// -->
|
||||
</style>
|
||||
<link rel="stylesheet" type="text/css" media="screen" href="style.css">
|
||||
<script type="text/javascript" src="ping.js" defer></script>
|
||||
|
||||
<script language="javascript">
|
||||
<!--
|
||||
@@ -110,7 +43,7 @@ function info(str) {
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/server/file.html" target="_blank"
|
||||
onClick="window.open('/server/file.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_O1}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O1}
|
||||
@@ -122,7 +55,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td id="subTitle" align="right">
|
||||
<a href="/index.html" target="_blank"
|
||||
onClick="window.open('/server/help.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
style="color:#FFFFFF"
|
||||
>
|
||||
${LANG_O5}
|
||||
@@ -151,7 +84,7 @@ ${do:if-file-exists:html/index.html}
|
||||
<td>
|
||||
<a href="/step3.html" target="_blank"
|
||||
onClick="window.open('/step3.html', 'help', 'toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=yes, resizable=yes, width=640, height=480'); return false"
|
||||
onMouseOver="info('${LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPHELP}'); return true" onMouseOut="info(' '); return true"
|
||||
>${LANG_TIPHELP}</a>
|
||||
</td>
|
||||
${do:end-if}
|
||||
@@ -163,34 +96,34 @@ ${do:end-if}
|
||||
<input type="hidden" name="sid" value="${sid}">
|
||||
<input type="hidden" name="redirect" value="">
|
||||
<input type="hidden" name="projpath" value="${path}/${projname}/">
|
||||
|
||||
<input type="hidden" name="command_arg_profile" value="path,lang">
|
||||
|
||||
<input type="hidden" name="command_arg_profile" value="path,lang">
|
||||
|
||||
<table border="0" width="100%">
|
||||
<tr><td>
|
||||
|
||||
</td></tr>
|
||||
|
||||
</td></tr>
|
||||
|
||||
<tr><td>
|
||||
<input type="radio" name="command_do" value="start" checked><b>${LANG_J10}</b>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<input type="radio" name="command_do" value="save">${LANG_J10b}
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
|
||||
${/* Real commands and ini file generated below */}
|
||||
<input type="radio" name="command_do" value="start" checked><b>${LANG_J10}</b>
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
<input type="radio" name="command_do" value="save">${LANG_J10b}
|
||||
</td></tr>
|
||||
<tr><td>
|
||||
|
||||
${/* Real commands and ini file generated below */}
|
||||
|
||||
<!-- engine commandline -->
|
||||
${do:output-mode:html}
|
||||
<textarea name="command" cols="50" rows="4" style="visibility:hidden">
|
||||
httrack \
|
||||
--quiet \
|
||||
--quiet \
|
||||
--build-top-index \
|
||||
${test:todo:--mirror:--mirror:--mirror-wizard:--get:--mirrorlinks:--testlinks:--continue:--update}
|
||||
${urls}
|
||||
${test:filelist:-%L "}${filelist}${test:filelist:"}
|
||||
--path "${path}/${projname}"
|
||||
--path "${html:path}/${html:projname}"
|
||||
\
|
||||
${test:parseall:--near}
|
||||
${test:link:--test}
|
||||
@@ -203,8 +136,8 @@ ${do:end-if}
|
||||
${test:build:-N0:-N0:-N1:-N2:-N3:-N4:-N5:-N100:-N101:-N102:-N103:-N104:-N105:-N99:-N199:}
|
||||
\
|
||||
${ztest:dos::--long-names=0:--long-names=2}
|
||||
${test:robots:--robots=0:--robots=0:--robots=1:--robots=2}
|
||||
${test:errpage:--generate-errors:--generate-errors=0}
|
||||
${test:robots:--robots=0:--robots=0:--robots=1:--robots=2}
|
||||
${test:errpage:--generate-errors:--generate-errors=0}
|
||||
${test:external:--replace-external}
|
||||
${test:hidepwd:--disable-passwords}
|
||||
${test:hidequery:--include-query-string=1:--include-query-string=0}
|
||||
@@ -236,8 +169,8 @@ ${do:end-if}
|
||||
${test:maxconn:--connection-per-second=}${maxconn}
|
||||
${test:maxlinks:--advanced-maxlinks=}${maxlinks}
|
||||
\
|
||||
--user-agent "${user}"
|
||||
--footer "${footer}"
|
||||
--user-agent "${html:user}"
|
||||
--footer "${html:footer}"
|
||||
\
|
||||
${url2}
|
||||
\
|
||||
@@ -261,7 +194,7 @@ ${do:end-if}
|
||||
${do:output-mode:inifile}
|
||||
<textarea name="winprofile" cols="50" rows="4" style="visibility:hidden">
|
||||
CurrentUrl=${urls}
|
||||
Category=${projcateg}
|
||||
Category=${projcateg}
|
||||
CurrentAction=${todo}
|
||||
CurrentURLList=${filelist}
|
||||
Proxy=${proxy}
|
||||
@@ -338,25 +271,25 @@ MIMEDefsMime7=${mime7}
|
||||
MIMEDefsMime8=${mime8}
|
||||
</textarea>
|
||||
${do:output-mode:}
|
||||
<!-- winprofile.ini -->
|
||||
|
||||
<!-- httrack.ini -->
|
||||
${do:output-mode:inifile}
|
||||
<textarea name="userprofile" cols="50" rows="4" style="visibility:hidden">
|
||||
path=${path}
|
||||
lang=${lang_}
|
||||
</textarea>
|
||||
${do:output-mode:}
|
||||
<!-- httrack.ini -->
|
||||
<!-- winprofile.ini -->
|
||||
|
||||
<!-- httrack.ini -->
|
||||
${do:output-mode:inifile}
|
||||
<textarea name="userprofile" cols="50" rows="4" style="visibility:hidden">
|
||||
path=${path}
|
||||
lang=${lang_}
|
||||
</textarea>
|
||||
${do:output-mode:}
|
||||
<!-- httrack.ini -->
|
||||
|
||||
</td></tr><tr><td>
|
||||
<table width="100%" border="0"><tr><td align="left">
|
||||
<input type="submit" value=" << ${LANG_PREVIOUS} " onClick="form.command.value=''; form.redirect.value='step3.html'; form.submit()"
|
||||
onMouseOver="info('${LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPPREV}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td><td align="right">
|
||||
<input name="nextBtn" type="submit" value=" ${LANG_J9} >> "
|
||||
onMouseOver="info('${LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||
onMouseOver="info('${html:LANG_TIPNEXT}'); return true" onMouseOut="info(' '); return true"
|
||||
>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
66
html/server/style.css
Normal file
66
html/server/style.css
Normal file
@@ -0,0 +1,66 @@
|
||||
body {
|
||||
margin: 0; padding: 0; margin-bottom: 15px; margin-top: 8px;
|
||||
background: #77b;
|
||||
}
|
||||
body, td {
|
||||
font: 14px "Trebuchet MS", Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
|
||||
#subTitle {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
.tabCtrl {
|
||||
background: #000; color: #fff; padding: 4px; font-weight: bold;
|
||||
}
|
||||
|
||||
#siteNavigation a, #siteNavigation .current {
|
||||
font-weight: bold; color: #448;
|
||||
}
|
||||
#siteNavigation a:link { text-decoration: none; }
|
||||
#siteNavigation a:visited { text-decoration: none; }
|
||||
|
||||
#siteNavigation .current { background-color: #ccd; }
|
||||
|
||||
#siteNavigation a:hover { text-decoration: none; background-color: #fff; color: #000; }
|
||||
#siteNavigation a:active { text-decoration: none; background-color: #ccc; }
|
||||
|
||||
|
||||
a:link { text-decoration: underline; color: #00f; }
|
||||
a:visited { text-decoration: underline; color: #000; }
|
||||
a:hover { text-decoration: underline; color: #c00; }
|
||||
a:active { text-decoration: underline; }
|
||||
|
||||
#pageContent {
|
||||
clear: both;
|
||||
border-bottom: 6px solid #000;
|
||||
padding: 10px; padding-top: 20px;
|
||||
line-height: 1.65em;
|
||||
background-image: url(images/bg_rings.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: top right;
|
||||
}
|
||||
|
||||
#pageContent, #siteNavigation {
|
||||
background-color: #ccd;
|
||||
}
|
||||
|
||||
|
||||
.imgLeft { float: left; margin-right: 10px; margin-bottom: 10px; }
|
||||
.imgRight { float: right; margin-left: 10px; margin-bottom: 10px; }
|
||||
|
||||
hr { height: 1px; color: #000; background-color: #000; margin-bottom: 15px; }
|
||||
|
||||
h1 { margin: 0; font-weight: bold; font-size: 2em; }
|
||||
h2 { margin: 0; font-weight: bold; font-size: 1.6em; }
|
||||
h3 { margin: 0; font-weight: bold; font-size: 1.3em; }
|
||||
h4 { margin: 0; font-weight: bold; font-size: 1.18em; }
|
||||
|
||||
.blak { background-color: #000; }
|
||||
.hide { display: none; }
|
||||
.tableWidth { min-width: 400px; }
|
||||
|
||||
.tblRegular { border-collapse: collapse; }
|
||||
.tblRegular td { padding: 6px; background-image: url(images/fade.gif); border: 2px solid #99c; }
|
||||
.tblHeaderColor, .tblHeaderColor td { background: #99c; }
|
||||
.tblNoBorder td { border: 0; }
|
||||
@@ -104,6 +104,7 @@ DATA = $(lang_DATA) $(langroot_DATA)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@@ -112,14 +113,12 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
|
||||
DEFAULT_LDFLAGS = @DEFAULT_LDFLAGS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@@ -133,6 +132,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
HTTPS_SUPPORT = @HTTPS_SUPPORT@
|
||||
ICONV_LIBS = @ICONV_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -188,7 +188,6 @@ abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
|
||||
@@ -3,7 +3,7 @@ exemplesdir = $(datadir)/httrack/libtest
|
||||
exemples_DATA = *.c *.h *.txt
|
||||
EXTRA_DIST = $(exemples_DATA)
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
@DEFAULT_CFLAGS@ \
|
||||
@THREADS_CFLAGS@ \
|
||||
@V6_FLAG@ \
|
||||
@@ -13,7 +13,7 @@ INCLUDES = \
|
||||
-DDATADIR=\""$(datadir)"\" \
|
||||
-DLIBDIR=\""$(libdir)"\"
|
||||
|
||||
AM_CPPFLAGS = -I../src
|
||||
AM_CPPFLAGS += -I../src
|
||||
AM_LDFLAGS = -L../src
|
||||
|
||||
# Examples
|
||||
|
||||
@@ -201,6 +201,7 @@ CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@@ -209,14 +210,12 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
|
||||
DEFAULT_LDFLAGS = @DEFAULT_LDFLAGS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@@ -230,6 +229,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
HTTPS_SUPPORT = @HTTPS_SUPPORT@
|
||||
ICONV_LIBS = @ICONV_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -285,7 +285,6 @@ abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
@@ -335,17 +334,9 @@ top_srcdir = @top_srcdir@
|
||||
exemplesdir = $(datadir)/httrack/libtest
|
||||
exemples_DATA = *.c *.h *.txt
|
||||
EXTRA_DIST = $(exemples_DATA)
|
||||
INCLUDES = \
|
||||
@DEFAULT_CFLAGS@ \
|
||||
@THREADS_CFLAGS@ \
|
||||
@V6_FLAG@ \
|
||||
@LFS_FLAG@ \
|
||||
-DPREFIX=\""$(prefix)"\" \
|
||||
-DSYSCONFDIR=\""$(sysconfdir)"\" \
|
||||
-DDATADIR=\""$(datadir)"\" \
|
||||
-DLIBDIR=\""$(libdir)"\"
|
||||
|
||||
AM_CPPFLAGS = -I../src
|
||||
AM_CPPFLAGS = @DEFAULT_CFLAGS@ @THREADS_CFLAGS@ @V6_FLAG@ @LFS_FLAG@ \
|
||||
-DPREFIX=\""$(prefix)"\" -DSYSCONFDIR=\""$(sysconfdir)"\" \
|
||||
-DDATADIR=\""$(datadir)"\" -DLIBDIR=\""$(libdir)"\" -I../src
|
||||
AM_LDFLAGS = -L../src
|
||||
|
||||
# Examples
|
||||
@@ -485,22 +476,25 @@ distclean-compile:
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/callbacks-example-simple.Plo@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
@@ -100,9 +100,9 @@ EXTERNAL_FUNCTION int hts_plug(httrackp * opt, const char *argv) {
|
||||
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);
|
||||
CHAIN_FUNCTION(opt, check_html, process_file, (void *) (uintptr_t) arg);
|
||||
CHAIN_FUNCTION(opt, start, start_of_mirror, (void *) (uintptr_t) arg);
|
||||
CHAIN_FUNCTION(opt, end, end_of_mirror, (void *) (uintptr_t) arg);
|
||||
|
||||
hts_log(opt, arg, "* module successfully plugged");
|
||||
return 1; /* success */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
HTTrack Website Copier License Agreement:
|
||||
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
|
||||
@@ -74,6 +74,7 @@ am__can_run_installinfo = \
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@@ -82,14 +83,12 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
|
||||
DEFAULT_LDFLAGS = @DEFAULT_LDFLAGS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@@ -103,6 +102,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
HTTPS_SUPPORT = @HTTPS_SUPPORT@
|
||||
ICONV_LIBS = @ICONV_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -158,7 +158,6 @@ abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
|
||||
@@ -105,6 +105,7 @@ MANS = $(man_MANS)
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@@ -113,14 +114,12 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
|
||||
DEFAULT_LDFLAGS = @DEFAULT_LDFLAGS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@@ -134,6 +133,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
HTTPS_SUPPORT = @HTTPS_SUPPORT@
|
||||
ICONV_LIBS = @ICONV_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -189,7 +189,6 @@ abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
.\" Process this file with
|
||||
.\" groff -man -Tascii httrack.1
|
||||
.\"
|
||||
.TH httrack 1 "HTTrack version 3.47-26 (compiled Sep 6 2013)" "httrack website copier"
|
||||
.TH httrack 1 "28 July 2014" "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 \-%O, \-\-chroot
|
||||
] [
|
||||
.B \-w, \-\-mirror
|
||||
] [
|
||||
.B \-W, \-\-mirror\-wizard
|
||||
@@ -42,8 +40,6 @@ httrack \- offline browser : copy websites to a local directory
|
||||
] [
|
||||
.B \-GN, \-\-max\-pause[=N]
|
||||
] [
|
||||
.B \-%mN, \-\-max\-mms\-time[=N]
|
||||
] [
|
||||
.B \-cN, \-\-sockets[=N]
|
||||
] [
|
||||
.B \-TN, \-\-timeout[=N]
|
||||
@@ -122,6 +118,10 @@ httrack \- offline browser : copy websites to a local directory
|
||||
] [
|
||||
.B \-%l, \-\-language
|
||||
] [
|
||||
.B \-%a, \-\-accept
|
||||
] [
|
||||
.B \-%X, \-\-headers
|
||||
] [
|
||||
.B \-C, \-\-cache[=N]
|
||||
] [
|
||||
.B \-k, \-\-store\-all\-in\-cache
|
||||
@@ -174,8 +174,6 @@ httrack \- offline browser : copy websites to a local directory
|
||||
] [
|
||||
.B \-V, \-\-userdef\-cmd
|
||||
] [
|
||||
.B \-%U, \-\-user
|
||||
] [
|
||||
.B \-%W, \-\-callback
|
||||
] [
|
||||
.B \-K, \-\-keep\-links[=N]
|
||||
@@ -214,9 +212,6 @@ mirror[,path
|
||||
cache
|
||||
and
|
||||
logfiles]) (\-\-path <param>)
|
||||
.IP \-%O
|
||||
chroot path to, must be r00t (\-%O root
|
||||
path) (\-\-chroot <param>)
|
||||
|
||||
.SS Action options:
|
||||
.IP \-w
|
||||
@@ -257,8 +252,6 @@ maximum transfer rate in bytes/seconds (1000=1KB/s max) (\-\-max\-rate[=N])
|
||||
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
|
||||
@@ -353,6 +346,10 @@ from email address sent in HTTP headers (\-\-from <param>)
|
||||
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 \-%a
|
||||
accepted formats (\-%a "text/html,image/png;q=0.9,*/*;q=0.1" (\-\-accept <param>)
|
||||
.IP \-%X
|
||||
additional HTTP header line (\-%X "X\-Magic: 42" (\-\-headers <param>)
|
||||
|
||||
.SS Log, index, cache
|
||||
.IP \-C
|
||||
@@ -455,8 +452,6 @@ generate transfer ops. log every minutes (\-\-debug\-xfrstats)
|
||||
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 \-%!
|
||||
@@ -468,9 +463,7 @@ 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>)
|
||||
execute system command after each files ($0 is the filename: \-V "rm \\$0") (\-\-userdef\-cmd <param>)
|
||||
.IP \-%W
|
||||
use an external library function as a wrapper (\-%W myfoo.so[,myparameters]) (\-\-callback <param>)
|
||||
|
||||
@@ -617,7 +610,7 @@ Please reports bugs to
|
||||
.B <bugs@httrack.com>.
|
||||
Include a complete, self-contained example that will allow the bug to be reproduced, and say which version of httrack you are using. Do not forget to detail options used, OS version, and any other information you deem necessary.
|
||||
.SH COPYRIGHT
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
|
||||
@@ -8,10 +8,14 @@ DevIncludes_DATA = \
|
||||
../config.h \
|
||||
htsmodules.h \
|
||||
htsbasenet.h \
|
||||
htsnet.h \
|
||||
htsbauth.h \
|
||||
htsdefines.h
|
||||
htsdefines.h \
|
||||
htsstrings.h \
|
||||
htsarrays.h \
|
||||
htssafe.h
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
@DEFAULT_CFLAGS@ \
|
||||
@THREADS_CFLAGS@ \
|
||||
@V6_FLAG@ \
|
||||
@@ -26,41 +30,44 @@ bin_PROGRAMS = proxytrack httrack htsserver
|
||||
httrack_LDADD = $(THREADS_LIBS) libhttrack.la
|
||||
htsserver_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) libhttrack.la
|
||||
proxytrack_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS)
|
||||
proxytrack_CFLAGS = $(AM_CFLAGS) -DNO_MALLOCT
|
||||
proxytrack_CFLAGS = $(AM_CFLAGS) -DNO_MALLOCT -DZLIB_CONST -DHTS_INTHASH_USES_MD5
|
||||
htsserver_CFLAGS = $(AM_CFLAGS) -DZLIB_CONST -DHTS_INTHASH_USES_MD5
|
||||
|
||||
lib_LTLIBRARIES = libhttrack.la libhtsjava.la
|
||||
|
||||
htsserver_SOURCES = htsserver.c htsserver.h htsweb.c htsweb.h
|
||||
proxytrack_SOURCES = proxy/main.c \
|
||||
proxy/proxytrack.c proxy/store.c \
|
||||
htsinthash.c htsmd5.c md5.c \
|
||||
coucal.c htsmd5.c md5.c \
|
||||
minizip/ioapi.c minizip/mztools.c minizip/unzip.c minizip/zip.c
|
||||
|
||||
whttrackrundir = $(bindir)
|
||||
whttrackrun_SCRIPTS = webhttrack
|
||||
|
||||
libhttrack_la_SOURCES = htscore.c htsparse.c htsback.c htscache.c \
|
||||
htscatchurl.c htsfilters.c htsftp.c htshash.c htsinthash.c \
|
||||
htscatchurl.c htsfilters.c htsftp.c htshash.c coucal.c \
|
||||
htshelp.c htslib.c htscoremain.c \
|
||||
htsname.c htsrobots.c htstools.c htswizard.c \
|
||||
htsalias.c htsthread.c htsindex.c htsbauth.c \
|
||||
htsmd5.c htszlib.c htswrap.c \
|
||||
htsmd5.c htszlib.c htswrap.c htsconcat.c \
|
||||
htsmodules.c htscharset.c punycode.c htsencoding.c \
|
||||
md5.c \
|
||||
minizip/ioapi.c minizip/mztools.c minizip/unzip.c minizip/zip.c \
|
||||
hts-indextmpl.h htsalias.h htsback.h htsbase.h \
|
||||
hts-indextmpl.h htsalias.h htsback.h htsbase.h htssafe.h \
|
||||
htsbasenet.h htsbauth.h htscache.h htscatchurl.h \
|
||||
htsconfig.h htscore.h htsparse.h htscoremain.h htsdefines.h \
|
||||
htsfilters.h htsftp.h htsglobal.h htshash.h htsinthash.h \
|
||||
htsfilters.h htsftp.h htsglobal.h htshash.h coucal.h \
|
||||
htshelp.h htsindex.h htslib.h htsmd5.h \
|
||||
htsmodules.h htsname.h htsnet.h \
|
||||
htsopt.h htsrobots.h htsthread.h \
|
||||
htstools.h htswizard.h htswrap.h htszlib.h \
|
||||
htsstrings.h httrack-library.h htscharset.h punycode.h htsencoding.h \
|
||||
htsstrings.h htsarrays.h httrack-library.h \
|
||||
htscharset.h punycode.h htsencoding.h \
|
||||
htsentities.h htsentities.sh htsbasiccharsets.sh htscodepages.h \
|
||||
md5.h murmurhash3.h \
|
||||
minizip/crypt.h minizip/ioapi.h minizip/mztools.h minizip/unzip.h minizip/zip.h
|
||||
libhttrack_la_LIBADD = $(THREADS_LIBS) $(ZLIB_LIBS) $(OPENSSL_LIBS) $(DL_LIBS) $(SOCKET_LIBS) $(ICONV_LIBS)
|
||||
libhttrack_la_CFLAGS = $(AM_CFLAGS) -DLIBHTTRACK_EXPORTS -DZLIB_CONST
|
||||
libhttrack_la_LDFLAGS = -version-info $(VERSION_INFO)
|
||||
|
||||
libhtsjava_la_SOURCES = htsjava.c htsjava.h
|
||||
@@ -68,9 +75,22 @@ libhtsjava_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS) libhttrack.la
|
||||
libhtsjava_la_LDFLAGS = -version-info $(VERSION_INFO)
|
||||
|
||||
EXTRA_DIST = httrack.h webhttrack \
|
||||
minizip/ChangeLogUnzip \
|
||||
murmurhash3.h.diff \
|
||||
murmurhash3.h.orig \
|
||||
minizip/iowin32.c \
|
||||
minizip/iowin32.h \
|
||||
minizip/ioapi.c.diff \
|
||||
minizip/ioapi.h.diff \
|
||||
minizip/zip.c.diff \
|
||||
minizip/zip.h.diff \
|
||||
minizip/mztools.c.diff \
|
||||
minizip/ioapi.c.orig \
|
||||
minizip/ioapi.h.orig \
|
||||
minizip/mztools.c.orig \
|
||||
minizip/zip.c.orig \
|
||||
minizip/zip.h.orig \
|
||||
minizip/MiniZip64_Changes.txt \
|
||||
minizip/MiniZip64_info.txt \
|
||||
proxy/AUTHORS \
|
||||
proxy/COPYING \
|
||||
proxy/changelog.txt \
|
||||
|
||||
694
src/Makefile.in
694
src/Makefile.in
@@ -110,31 +110,49 @@ libhtsjava_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
libhttrack_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
am_libhttrack_la_OBJECTS = htscore.lo htsparse.lo htsback.lo \
|
||||
htscache.lo htscatchurl.lo htsfilters.lo htsftp.lo htshash.lo \
|
||||
htsinthash.lo htshelp.lo htslib.lo htscoremain.lo htsname.lo \
|
||||
htsrobots.lo htstools.lo htswizard.lo htsalias.lo htsthread.lo \
|
||||
htsindex.lo htsbauth.lo htsmd5.lo htszlib.lo htswrap.lo \
|
||||
htsmodules.lo htscharset.lo punycode.lo htsencoding.lo md5.lo \
|
||||
ioapi.lo mztools.lo unzip.lo zip.lo
|
||||
am__dirstamp = $(am__leading_dot)dirstamp
|
||||
am_libhttrack_la_OBJECTS = libhttrack_la-htscore.lo \
|
||||
libhttrack_la-htsparse.lo libhttrack_la-htsback.lo \
|
||||
libhttrack_la-htscache.lo libhttrack_la-htscatchurl.lo \
|
||||
libhttrack_la-htsfilters.lo libhttrack_la-htsftp.lo \
|
||||
libhttrack_la-htshash.lo libhttrack_la-coucal.lo \
|
||||
libhttrack_la-htshelp.lo libhttrack_la-htslib.lo \
|
||||
libhttrack_la-htscoremain.lo libhttrack_la-htsname.lo \
|
||||
libhttrack_la-htsrobots.lo libhttrack_la-htstools.lo \
|
||||
libhttrack_la-htswizard.lo libhttrack_la-htsalias.lo \
|
||||
libhttrack_la-htsthread.lo libhttrack_la-htsindex.lo \
|
||||
libhttrack_la-htsbauth.lo libhttrack_la-htsmd5.lo \
|
||||
libhttrack_la-htszlib.lo libhttrack_la-htswrap.lo \
|
||||
libhttrack_la-htsconcat.lo libhttrack_la-htsmodules.lo \
|
||||
libhttrack_la-htscharset.lo libhttrack_la-punycode.lo \
|
||||
libhttrack_la-htsencoding.lo libhttrack_la-md5.lo \
|
||||
minizip/libhttrack_la-ioapi.lo \
|
||||
minizip/libhttrack_la-mztools.lo \
|
||||
minizip/libhttrack_la-unzip.lo minizip/libhttrack_la-zip.lo
|
||||
libhttrack_la_OBJECTS = $(am_libhttrack_la_OBJECTS)
|
||||
libhttrack_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||
$(libhttrack_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(libhttrack_la_CFLAGS) \
|
||||
$(CFLAGS) $(libhttrack_la_LDFLAGS) $(LDFLAGS) -o $@
|
||||
PROGRAMS = $(bin_PROGRAMS)
|
||||
am_htsserver_OBJECTS = htsserver.$(OBJEXT) htsweb.$(OBJEXT)
|
||||
am_htsserver_OBJECTS = htsserver-htsserver.$(OBJEXT) \
|
||||
htsserver-htsweb.$(OBJEXT)
|
||||
htsserver_OBJECTS = $(am_htsserver_OBJECTS)
|
||||
htsserver_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
|
||||
libhttrack.la
|
||||
htsserver_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(htsserver_CFLAGS) \
|
||||
$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||
httrack_SOURCES = httrack.c
|
||||
httrack_OBJECTS = httrack.$(OBJEXT)
|
||||
httrack_DEPENDENCIES = $(am__DEPENDENCIES_1) libhttrack.la
|
||||
am_proxytrack_OBJECTS = proxytrack-main.$(OBJEXT) \
|
||||
proxytrack-proxytrack.$(OBJEXT) proxytrack-store.$(OBJEXT) \
|
||||
proxytrack-htsinthash.$(OBJEXT) proxytrack-htsmd5.$(OBJEXT) \
|
||||
proxytrack-md5.$(OBJEXT) proxytrack-ioapi.$(OBJEXT) \
|
||||
proxytrack-mztools.$(OBJEXT) proxytrack-unzip.$(OBJEXT) \
|
||||
proxytrack-zip.$(OBJEXT)
|
||||
am_proxytrack_OBJECTS = proxy/proxytrack-main.$(OBJEXT) \
|
||||
proxy/proxytrack-proxytrack.$(OBJEXT) \
|
||||
proxy/proxytrack-store.$(OBJEXT) proxytrack-coucal.$(OBJEXT) \
|
||||
proxytrack-htsmd5.$(OBJEXT) proxytrack-md5.$(OBJEXT) \
|
||||
minizip/proxytrack-ioapi.$(OBJEXT) \
|
||||
minizip/proxytrack-mztools.$(OBJEXT) \
|
||||
minizip/proxytrack-unzip.$(OBJEXT) \
|
||||
minizip/proxytrack-zip.$(OBJEXT)
|
||||
proxytrack_OBJECTS = $(am_proxytrack_OBJECTS)
|
||||
proxytrack_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
|
||||
proxytrack_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
|
||||
@@ -169,6 +187,7 @@ CTAGS = ctags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMTAR = @AMTAR@
|
||||
AM_CFLAGS = @AM_CFLAGS@
|
||||
AR = @AR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
@@ -177,14 +196,12 @@ AWK = @AWK@
|
||||
CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXCPP = @CXXCPP@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFAULT_CFLAGS = @DEFAULT_CFLAGS@
|
||||
DEFAULT_LDFLAGS = @DEFAULT_LDFLAGS@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DLLTOOL = @DLLTOOL@
|
||||
@@ -198,6 +215,7 @@ EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FGREP = @FGREP@
|
||||
GREP = @GREP@
|
||||
HAVE_VISIBILITY = @HAVE_VISIBILITY@
|
||||
HTTPS_SUPPORT = @HTTPS_SUPPORT@
|
||||
ICONV_LIBS = @ICONV_LIBS@
|
||||
INSTALL = @INSTALL@
|
||||
@@ -253,7 +271,6 @@ abs_top_builddir = @abs_top_builddir@
|
||||
abs_top_srcdir = @abs_top_srcdir@
|
||||
ac_ct_AR = @ac_ct_AR@
|
||||
ac_ct_CC = @ac_ct_CC@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
|
||||
am__include = @am__include@
|
||||
am__leading_dot = @am__leading_dot@
|
||||
@@ -310,10 +327,14 @@ DevIncludes_DATA = \
|
||||
../config.h \
|
||||
htsmodules.h \
|
||||
htsbasenet.h \
|
||||
htsnet.h \
|
||||
htsbauth.h \
|
||||
htsdefines.h
|
||||
htsdefines.h \
|
||||
htsstrings.h \
|
||||
htsarrays.h \
|
||||
htssafe.h
|
||||
|
||||
INCLUDES = \
|
||||
AM_CPPFLAGS = \
|
||||
@DEFAULT_CFLAGS@ \
|
||||
@THREADS_CFLAGS@ \
|
||||
@V6_FLAG@ \
|
||||
@@ -326,47 +347,63 @@ INCLUDES = \
|
||||
httrack_LDADD = $(THREADS_LIBS) libhttrack.la
|
||||
htsserver_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS) libhttrack.la
|
||||
proxytrack_LDADD = $(THREADS_LIBS) $(SOCKET_LIBS)
|
||||
proxytrack_CFLAGS = $(AM_CFLAGS) -DNO_MALLOCT
|
||||
proxytrack_CFLAGS = $(AM_CFLAGS) -DNO_MALLOCT -DZLIB_CONST -DHTS_INTHASH_USES_MD5
|
||||
htsserver_CFLAGS = $(AM_CFLAGS) -DZLIB_CONST -DHTS_INTHASH_USES_MD5
|
||||
lib_LTLIBRARIES = libhttrack.la libhtsjava.la
|
||||
htsserver_SOURCES = htsserver.c htsserver.h htsweb.c htsweb.h
|
||||
proxytrack_SOURCES = proxy/main.c \
|
||||
proxy/proxytrack.c proxy/store.c \
|
||||
htsinthash.c htsmd5.c md5.c \
|
||||
coucal.c htsmd5.c md5.c \
|
||||
minizip/ioapi.c minizip/mztools.c minizip/unzip.c minizip/zip.c
|
||||
|
||||
whttrackrundir = $(bindir)
|
||||
whttrackrun_SCRIPTS = webhttrack
|
||||
libhttrack_la_SOURCES = htscore.c htsparse.c htsback.c htscache.c \
|
||||
htscatchurl.c htsfilters.c htsftp.c htshash.c htsinthash.c \
|
||||
htscatchurl.c htsfilters.c htsftp.c htshash.c coucal.c \
|
||||
htshelp.c htslib.c htscoremain.c \
|
||||
htsname.c htsrobots.c htstools.c htswizard.c \
|
||||
htsalias.c htsthread.c htsindex.c htsbauth.c \
|
||||
htsmd5.c htszlib.c htswrap.c \
|
||||
htsmd5.c htszlib.c htswrap.c htsconcat.c \
|
||||
htsmodules.c htscharset.c punycode.c htsencoding.c \
|
||||
md5.c \
|
||||
minizip/ioapi.c minizip/mztools.c minizip/unzip.c minizip/zip.c \
|
||||
hts-indextmpl.h htsalias.h htsback.h htsbase.h \
|
||||
hts-indextmpl.h htsalias.h htsback.h htsbase.h htssafe.h \
|
||||
htsbasenet.h htsbauth.h htscache.h htscatchurl.h \
|
||||
htsconfig.h htscore.h htsparse.h htscoremain.h htsdefines.h \
|
||||
htsfilters.h htsftp.h htsglobal.h htshash.h htsinthash.h \
|
||||
htsfilters.h htsftp.h htsglobal.h htshash.h coucal.h \
|
||||
htshelp.h htsindex.h htslib.h htsmd5.h \
|
||||
htsmodules.h htsname.h htsnet.h \
|
||||
htsopt.h htsrobots.h htsthread.h \
|
||||
htstools.h htswizard.h htswrap.h htszlib.h \
|
||||
htsstrings.h httrack-library.h htscharset.h punycode.h htsencoding.h \
|
||||
htsstrings.h htsarrays.h httrack-library.h \
|
||||
htscharset.h punycode.h htsencoding.h \
|
||||
htsentities.h htsentities.sh htsbasiccharsets.sh htscodepages.h \
|
||||
md5.h murmurhash3.h \
|
||||
minizip/crypt.h minizip/ioapi.h minizip/mztools.h minizip/unzip.h minizip/zip.h
|
||||
|
||||
libhttrack_la_LIBADD = $(THREADS_LIBS) $(ZLIB_LIBS) $(OPENSSL_LIBS) $(DL_LIBS) $(SOCKET_LIBS) $(ICONV_LIBS)
|
||||
libhttrack_la_CFLAGS = $(AM_CFLAGS) -DLIBHTTRACK_EXPORTS -DZLIB_CONST
|
||||
libhttrack_la_LDFLAGS = -version-info $(VERSION_INFO)
|
||||
libhtsjava_la_SOURCES = htsjava.c htsjava.h
|
||||
libhtsjava_la_LIBADD = $(THREADS_LIBS) $(DL_LIBS) libhttrack.la
|
||||
libhtsjava_la_LDFLAGS = -version-info $(VERSION_INFO)
|
||||
EXTRA_DIST = httrack.h webhttrack \
|
||||
minizip/ChangeLogUnzip \
|
||||
murmurhash3.h.diff \
|
||||
murmurhash3.h.orig \
|
||||
minizip/iowin32.c \
|
||||
minizip/iowin32.h \
|
||||
minizip/ioapi.c.diff \
|
||||
minizip/ioapi.h.diff \
|
||||
minizip/zip.c.diff \
|
||||
minizip/zip.h.diff \
|
||||
minizip/mztools.c.diff \
|
||||
minizip/ioapi.c.orig \
|
||||
minizip/ioapi.h.orig \
|
||||
minizip/mztools.c.orig \
|
||||
minizip/zip.c.orig \
|
||||
minizip/zip.h.orig \
|
||||
minizip/MiniZip64_Changes.txt \
|
||||
minizip/MiniZip64_info.txt \
|
||||
proxy/AUTHORS \
|
||||
proxy/COPYING \
|
||||
proxy/changelog.txt \
|
||||
@@ -443,6 +480,20 @@ clean-libLTLIBRARIES:
|
||||
done
|
||||
libhtsjava.la: $(libhtsjava_la_OBJECTS) $(libhtsjava_la_DEPENDENCIES) $(EXTRA_libhtsjava_la_DEPENDENCIES)
|
||||
$(libhtsjava_la_LINK) -rpath $(libdir) $(libhtsjava_la_OBJECTS) $(libhtsjava_la_LIBADD) $(LIBS)
|
||||
minizip/$(am__dirstamp):
|
||||
@$(MKDIR_P) minizip
|
||||
@: > minizip/$(am__dirstamp)
|
||||
minizip/$(DEPDIR)/$(am__dirstamp):
|
||||
@$(MKDIR_P) minizip/$(DEPDIR)
|
||||
@: > minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
minizip/libhttrack_la-ioapi.lo: minizip/$(am__dirstamp) \
|
||||
minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
minizip/libhttrack_la-mztools.lo: minizip/$(am__dirstamp) \
|
||||
minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
minizip/libhttrack_la-unzip.lo: minizip/$(am__dirstamp) \
|
||||
minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
minizip/libhttrack_la-zip.lo: minizip/$(am__dirstamp) \
|
||||
minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
libhttrack.la: $(libhttrack_la_OBJECTS) $(libhttrack_la_DEPENDENCIES) $(EXTRA_libhttrack_la_DEPENDENCIES)
|
||||
$(libhttrack_la_LINK) -rpath $(libdir) $(libhttrack_la_OBJECTS) $(libhttrack_la_LIBADD) $(LIBS)
|
||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||
@@ -493,10 +544,30 @@ clean-binPROGRAMS:
|
||||
rm -f $$list
|
||||
htsserver$(EXEEXT): $(htsserver_OBJECTS) $(htsserver_DEPENDENCIES) $(EXTRA_htsserver_DEPENDENCIES)
|
||||
@rm -f htsserver$(EXEEXT)
|
||||
$(LINK) $(htsserver_OBJECTS) $(htsserver_LDADD) $(LIBS)
|
||||
$(htsserver_LINK) $(htsserver_OBJECTS) $(htsserver_LDADD) $(LIBS)
|
||||
httrack$(EXEEXT): $(httrack_OBJECTS) $(httrack_DEPENDENCIES) $(EXTRA_httrack_DEPENDENCIES)
|
||||
@rm -f httrack$(EXEEXT)
|
||||
$(LINK) $(httrack_OBJECTS) $(httrack_LDADD) $(LIBS)
|
||||
proxy/$(am__dirstamp):
|
||||
@$(MKDIR_P) proxy
|
||||
@: > proxy/$(am__dirstamp)
|
||||
proxy/$(DEPDIR)/$(am__dirstamp):
|
||||
@$(MKDIR_P) proxy/$(DEPDIR)
|
||||
@: > proxy/$(DEPDIR)/$(am__dirstamp)
|
||||
proxy/proxytrack-main.$(OBJEXT): proxy/$(am__dirstamp) \
|
||||
proxy/$(DEPDIR)/$(am__dirstamp)
|
||||
proxy/proxytrack-proxytrack.$(OBJEXT): proxy/$(am__dirstamp) \
|
||||
proxy/$(DEPDIR)/$(am__dirstamp)
|
||||
proxy/proxytrack-store.$(OBJEXT): proxy/$(am__dirstamp) \
|
||||
proxy/$(DEPDIR)/$(am__dirstamp)
|
||||
minizip/proxytrack-ioapi.$(OBJEXT): minizip/$(am__dirstamp) \
|
||||
minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
minizip/proxytrack-mztools.$(OBJEXT): minizip/$(am__dirstamp) \
|
||||
minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
minizip/proxytrack-unzip.$(OBJEXT): minizip/$(am__dirstamp) \
|
||||
minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
minizip/proxytrack-zip.$(OBJEXT): minizip/$(am__dirstamp) \
|
||||
minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
proxytrack$(EXEEXT): $(proxytrack_OBJECTS) $(proxytrack_DEPENDENCIES) $(EXTRA_proxytrack_DEPENDENCIES)
|
||||
@rm -f proxytrack$(EXEEXT)
|
||||
$(proxytrack_LINK) $(proxytrack_OBJECTS) $(proxytrack_LDADD) $(LIBS)
|
||||
@@ -538,161 +609,411 @@ uninstall-whttrackrunSCRIPTS:
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.$(OBJEXT)
|
||||
-rm -f minizip/libhttrack_la-ioapi.$(OBJEXT)
|
||||
-rm -f minizip/libhttrack_la-ioapi.lo
|
||||
-rm -f minizip/libhttrack_la-mztools.$(OBJEXT)
|
||||
-rm -f minizip/libhttrack_la-mztools.lo
|
||||
-rm -f minizip/libhttrack_la-unzip.$(OBJEXT)
|
||||
-rm -f minizip/libhttrack_la-unzip.lo
|
||||
-rm -f minizip/libhttrack_la-zip.$(OBJEXT)
|
||||
-rm -f minizip/libhttrack_la-zip.lo
|
||||
-rm -f minizip/proxytrack-ioapi.$(OBJEXT)
|
||||
-rm -f minizip/proxytrack-mztools.$(OBJEXT)
|
||||
-rm -f minizip/proxytrack-unzip.$(OBJEXT)
|
||||
-rm -f minizip/proxytrack-zip.$(OBJEXT)
|
||||
-rm -f proxy/proxytrack-main.$(OBJEXT)
|
||||
-rm -f proxy/proxytrack-proxytrack.$(OBJEXT)
|
||||
-rm -f proxy/proxytrack-store.$(OBJEXT)
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsalias.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsback.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsbauth.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscache.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscatchurl.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscharset.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscore.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htscoremain.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsencoding.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsfilters.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsftp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htshash.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htshelp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsindex.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsinthash.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsjava.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htslib.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsmd5.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsmodules.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsname.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsparse.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsrobots.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsserver.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsthread.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htstools.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsweb.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htswizard.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htswrap.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htszlib.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsserver-htsserver.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/htsserver-htsweb.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httrack.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ioapi.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mztools.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-htsinthash.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-coucal.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsalias.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsback.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsbauth.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htscache.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htscatchurl.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htscharset.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsconcat.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htscore.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htscoremain.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsencoding.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsfilters.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsftp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htshash.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htshelp.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsindex.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htslib.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsmd5.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsmodules.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsname.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsparse.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsrobots.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htsthread.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htstools.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htswizard.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htswrap.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-htszlib.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-md5.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libhttrack_la-punycode.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-coucal.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-htsmd5.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-ioapi.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-main.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-md5.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-mztools.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-proxytrack.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-store.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-unzip.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/proxytrack-zip.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/punycode.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unzip.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zip.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@minizip/$(DEPDIR)/libhttrack_la-ioapi.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@minizip/$(DEPDIR)/libhttrack_la-mztools.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@minizip/$(DEPDIR)/libhttrack_la-unzip.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@minizip/$(DEPDIR)/libhttrack_la-zip.Plo@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@minizip/$(DEPDIR)/proxytrack-ioapi.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@minizip/$(DEPDIR)/proxytrack-mztools.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@minizip/$(DEPDIR)/proxytrack-unzip.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@minizip/$(DEPDIR)/proxytrack-zip.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@proxy/$(DEPDIR)/proxytrack-main.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@proxy/$(DEPDIR)/proxytrack-proxytrack.Po@am__quote@
|
||||
@AMDEP_TRUE@@am__include@ @am__quote@proxy/$(DEPDIR)/proxytrack-store.Po@am__quote@
|
||||
|
||||
.c.o:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c $<
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $<
|
||||
|
||||
.c.obj:
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
|
||||
@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
|
||||
@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
|
||||
|
||||
.c.lo:
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
|
||||
@am__fastdepCC_TRUE@ depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
|
||||
@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
|
||||
|
||||
ioapi.lo: minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ioapi.lo -MD -MP -MF $(DEPDIR)/ioapi.Tpo -c -o ioapi.lo `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/ioapi.Tpo $(DEPDIR)/ioapi.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/ioapi.c' object='ioapi.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
libhttrack_la-htscore.lo: htscore.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htscore.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htscore.Tpo -c -o libhttrack_la-htscore.lo `test -f 'htscore.c' || echo '$(srcdir)/'`htscore.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htscore.Tpo $(DEPDIR)/libhttrack_la-htscore.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htscore.c' object='libhttrack_la-htscore.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ioapi.lo `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htscore.lo `test -f 'htscore.c' || echo '$(srcdir)/'`htscore.c
|
||||
|
||||
mztools.lo: minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mztools.lo -MD -MP -MF $(DEPDIR)/mztools.Tpo -c -o mztools.lo `test -f 'minizip/mztools.c' || echo '$(srcdir)/'`minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/mztools.Tpo $(DEPDIR)/mztools.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/mztools.c' object='mztools.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
libhttrack_la-htsparse.lo: htsparse.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsparse.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsparse.Tpo -c -o libhttrack_la-htsparse.lo `test -f 'htsparse.c' || echo '$(srcdir)/'`htsparse.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsparse.Tpo $(DEPDIR)/libhttrack_la-htsparse.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsparse.c' object='libhttrack_la-htsparse.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mztools.lo `test -f 'minizip/mztools.c' || echo '$(srcdir)/'`minizip/mztools.c
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsparse.lo `test -f 'htsparse.c' || echo '$(srcdir)/'`htsparse.c
|
||||
|
||||
unzip.lo: minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unzip.lo -MD -MP -MF $(DEPDIR)/unzip.Tpo -c -o unzip.lo `test -f 'minizip/unzip.c' || echo '$(srcdir)/'`minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/unzip.Tpo $(DEPDIR)/unzip.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/unzip.c' object='unzip.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
libhttrack_la-htsback.lo: htsback.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsback.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsback.Tpo -c -o libhttrack_la-htsback.lo `test -f 'htsback.c' || echo '$(srcdir)/'`htsback.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsback.Tpo $(DEPDIR)/libhttrack_la-htsback.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsback.c' object='libhttrack_la-htsback.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unzip.lo `test -f 'minizip/unzip.c' || echo '$(srcdir)/'`minizip/unzip.c
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsback.lo `test -f 'htsback.c' || echo '$(srcdir)/'`htsback.c
|
||||
|
||||
zip.lo: minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT zip.lo -MD -MP -MF $(DEPDIR)/zip.Tpo -c -o zip.lo `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/zip.Tpo $(DEPDIR)/zip.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/zip.c' object='zip.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
libhttrack_la-htscache.lo: htscache.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htscache.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htscache.Tpo -c -o libhttrack_la-htscache.lo `test -f 'htscache.c' || echo '$(srcdir)/'`htscache.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htscache.Tpo $(DEPDIR)/libhttrack_la-htscache.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htscache.c' object='libhttrack_la-htscache.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o zip.lo `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htscache.lo `test -f 'htscache.c' || echo '$(srcdir)/'`htscache.c
|
||||
|
||||
proxytrack-main.o: proxy/main.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-main.o -MD -MP -MF $(DEPDIR)/proxytrack-main.Tpo -c -o proxytrack-main.o `test -f 'proxy/main.c' || echo '$(srcdir)/'`proxy/main.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-main.Tpo $(DEPDIR)/proxytrack-main.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/main.c' object='proxytrack-main.o' libtool=no @AMDEPBACKSLASH@
|
||||
libhttrack_la-htscatchurl.lo: htscatchurl.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htscatchurl.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htscatchurl.Tpo -c -o libhttrack_la-htscatchurl.lo `test -f 'htscatchurl.c' || echo '$(srcdir)/'`htscatchurl.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htscatchurl.Tpo $(DEPDIR)/libhttrack_la-htscatchurl.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htscatchurl.c' object='libhttrack_la-htscatchurl.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-main.o `test -f 'proxy/main.c' || echo '$(srcdir)/'`proxy/main.c
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htscatchurl.lo `test -f 'htscatchurl.c' || echo '$(srcdir)/'`htscatchurl.c
|
||||
|
||||
proxytrack-main.obj: proxy/main.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-main.obj -MD -MP -MF $(DEPDIR)/proxytrack-main.Tpo -c -o proxytrack-main.obj `if test -f 'proxy/main.c'; then $(CYGPATH_W) 'proxy/main.c'; else $(CYGPATH_W) '$(srcdir)/proxy/main.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-main.Tpo $(DEPDIR)/proxytrack-main.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/main.c' object='proxytrack-main.obj' libtool=no @AMDEPBACKSLASH@
|
||||
libhttrack_la-htsfilters.lo: htsfilters.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsfilters.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsfilters.Tpo -c -o libhttrack_la-htsfilters.lo `test -f 'htsfilters.c' || echo '$(srcdir)/'`htsfilters.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsfilters.Tpo $(DEPDIR)/libhttrack_la-htsfilters.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsfilters.c' object='libhttrack_la-htsfilters.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-main.obj `if test -f 'proxy/main.c'; then $(CYGPATH_W) 'proxy/main.c'; else $(CYGPATH_W) '$(srcdir)/proxy/main.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsfilters.lo `test -f 'htsfilters.c' || echo '$(srcdir)/'`htsfilters.c
|
||||
|
||||
proxytrack-proxytrack.o: proxy/proxytrack.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-proxytrack.o -MD -MP -MF $(DEPDIR)/proxytrack-proxytrack.Tpo -c -o proxytrack-proxytrack.o `test -f 'proxy/proxytrack.c' || echo '$(srcdir)/'`proxy/proxytrack.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-proxytrack.Tpo $(DEPDIR)/proxytrack-proxytrack.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/proxytrack.c' object='proxytrack-proxytrack.o' libtool=no @AMDEPBACKSLASH@
|
||||
libhttrack_la-htsftp.lo: htsftp.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsftp.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsftp.Tpo -c -o libhttrack_la-htsftp.lo `test -f 'htsftp.c' || echo '$(srcdir)/'`htsftp.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsftp.Tpo $(DEPDIR)/libhttrack_la-htsftp.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsftp.c' object='libhttrack_la-htsftp.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-proxytrack.o `test -f 'proxy/proxytrack.c' || echo '$(srcdir)/'`proxy/proxytrack.c
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsftp.lo `test -f 'htsftp.c' || echo '$(srcdir)/'`htsftp.c
|
||||
|
||||
proxytrack-proxytrack.obj: proxy/proxytrack.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-proxytrack.obj -MD -MP -MF $(DEPDIR)/proxytrack-proxytrack.Tpo -c -o proxytrack-proxytrack.obj `if test -f 'proxy/proxytrack.c'; then $(CYGPATH_W) 'proxy/proxytrack.c'; else $(CYGPATH_W) '$(srcdir)/proxy/proxytrack.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-proxytrack.Tpo $(DEPDIR)/proxytrack-proxytrack.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/proxytrack.c' object='proxytrack-proxytrack.obj' libtool=no @AMDEPBACKSLASH@
|
||||
libhttrack_la-htshash.lo: htshash.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htshash.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htshash.Tpo -c -o libhttrack_la-htshash.lo `test -f 'htshash.c' || echo '$(srcdir)/'`htshash.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htshash.Tpo $(DEPDIR)/libhttrack_la-htshash.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htshash.c' object='libhttrack_la-htshash.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-proxytrack.obj `if test -f 'proxy/proxytrack.c'; then $(CYGPATH_W) 'proxy/proxytrack.c'; else $(CYGPATH_W) '$(srcdir)/proxy/proxytrack.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htshash.lo `test -f 'htshash.c' || echo '$(srcdir)/'`htshash.c
|
||||
|
||||
proxytrack-store.o: proxy/store.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-store.o -MD -MP -MF $(DEPDIR)/proxytrack-store.Tpo -c -o proxytrack-store.o `test -f 'proxy/store.c' || echo '$(srcdir)/'`proxy/store.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-store.Tpo $(DEPDIR)/proxytrack-store.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/store.c' object='proxytrack-store.o' libtool=no @AMDEPBACKSLASH@
|
||||
libhttrack_la-coucal.lo: coucal.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-coucal.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-coucal.Tpo -c -o libhttrack_la-coucal.lo `test -f 'coucal.c' || echo '$(srcdir)/'`coucal.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-coucal.Tpo $(DEPDIR)/libhttrack_la-coucal.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='coucal.c' object='libhttrack_la-coucal.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-store.o `test -f 'proxy/store.c' || echo '$(srcdir)/'`proxy/store.c
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-coucal.lo `test -f 'coucal.c' || echo '$(srcdir)/'`coucal.c
|
||||
|
||||
proxytrack-store.obj: proxy/store.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-store.obj -MD -MP -MF $(DEPDIR)/proxytrack-store.Tpo -c -o proxytrack-store.obj `if test -f 'proxy/store.c'; then $(CYGPATH_W) 'proxy/store.c'; else $(CYGPATH_W) '$(srcdir)/proxy/store.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-store.Tpo $(DEPDIR)/proxytrack-store.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/store.c' object='proxytrack-store.obj' libtool=no @AMDEPBACKSLASH@
|
||||
libhttrack_la-htshelp.lo: htshelp.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htshelp.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htshelp.Tpo -c -o libhttrack_la-htshelp.lo `test -f 'htshelp.c' || echo '$(srcdir)/'`htshelp.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htshelp.Tpo $(DEPDIR)/libhttrack_la-htshelp.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htshelp.c' object='libhttrack_la-htshelp.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-store.obj `if test -f 'proxy/store.c'; then $(CYGPATH_W) 'proxy/store.c'; else $(CYGPATH_W) '$(srcdir)/proxy/store.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htshelp.lo `test -f 'htshelp.c' || echo '$(srcdir)/'`htshelp.c
|
||||
|
||||
proxytrack-htsinthash.o: htsinthash.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-htsinthash.o -MD -MP -MF $(DEPDIR)/proxytrack-htsinthash.Tpo -c -o proxytrack-htsinthash.o `test -f 'htsinthash.c' || echo '$(srcdir)/'`htsinthash.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-htsinthash.Tpo $(DEPDIR)/proxytrack-htsinthash.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsinthash.c' object='proxytrack-htsinthash.o' libtool=no @AMDEPBACKSLASH@
|
||||
libhttrack_la-htslib.lo: htslib.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htslib.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htslib.Tpo -c -o libhttrack_la-htslib.lo `test -f 'htslib.c' || echo '$(srcdir)/'`htslib.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htslib.Tpo $(DEPDIR)/libhttrack_la-htslib.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htslib.c' object='libhttrack_la-htslib.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-htsinthash.o `test -f 'htsinthash.c' || echo '$(srcdir)/'`htsinthash.c
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htslib.lo `test -f 'htslib.c' || echo '$(srcdir)/'`htslib.c
|
||||
|
||||
proxytrack-htsinthash.obj: htsinthash.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-htsinthash.obj -MD -MP -MF $(DEPDIR)/proxytrack-htsinthash.Tpo -c -o proxytrack-htsinthash.obj `if test -f 'htsinthash.c'; then $(CYGPATH_W) 'htsinthash.c'; else $(CYGPATH_W) '$(srcdir)/htsinthash.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-htsinthash.Tpo $(DEPDIR)/proxytrack-htsinthash.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsinthash.c' object='proxytrack-htsinthash.obj' libtool=no @AMDEPBACKSLASH@
|
||||
libhttrack_la-htscoremain.lo: htscoremain.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htscoremain.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htscoremain.Tpo -c -o libhttrack_la-htscoremain.lo `test -f 'htscoremain.c' || echo '$(srcdir)/'`htscoremain.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htscoremain.Tpo $(DEPDIR)/libhttrack_la-htscoremain.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htscoremain.c' object='libhttrack_la-htscoremain.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-htsinthash.obj `if test -f 'htsinthash.c'; then $(CYGPATH_W) 'htsinthash.c'; else $(CYGPATH_W) '$(srcdir)/htsinthash.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htscoremain.lo `test -f 'htscoremain.c' || echo '$(srcdir)/'`htscoremain.c
|
||||
|
||||
libhttrack_la-htsname.lo: htsname.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsname.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsname.Tpo -c -o libhttrack_la-htsname.lo `test -f 'htsname.c' || echo '$(srcdir)/'`htsname.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsname.Tpo $(DEPDIR)/libhttrack_la-htsname.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsname.c' object='libhttrack_la-htsname.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsname.lo `test -f 'htsname.c' || echo '$(srcdir)/'`htsname.c
|
||||
|
||||
libhttrack_la-htsrobots.lo: htsrobots.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsrobots.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsrobots.Tpo -c -o libhttrack_la-htsrobots.lo `test -f 'htsrobots.c' || echo '$(srcdir)/'`htsrobots.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsrobots.Tpo $(DEPDIR)/libhttrack_la-htsrobots.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsrobots.c' object='libhttrack_la-htsrobots.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsrobots.lo `test -f 'htsrobots.c' || echo '$(srcdir)/'`htsrobots.c
|
||||
|
||||
libhttrack_la-htstools.lo: htstools.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htstools.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htstools.Tpo -c -o libhttrack_la-htstools.lo `test -f 'htstools.c' || echo '$(srcdir)/'`htstools.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htstools.Tpo $(DEPDIR)/libhttrack_la-htstools.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htstools.c' object='libhttrack_la-htstools.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htstools.lo `test -f 'htstools.c' || echo '$(srcdir)/'`htstools.c
|
||||
|
||||
libhttrack_la-htswizard.lo: htswizard.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htswizard.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htswizard.Tpo -c -o libhttrack_la-htswizard.lo `test -f 'htswizard.c' || echo '$(srcdir)/'`htswizard.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htswizard.Tpo $(DEPDIR)/libhttrack_la-htswizard.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htswizard.c' object='libhttrack_la-htswizard.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htswizard.lo `test -f 'htswizard.c' || echo '$(srcdir)/'`htswizard.c
|
||||
|
||||
libhttrack_la-htsalias.lo: htsalias.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsalias.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsalias.Tpo -c -o libhttrack_la-htsalias.lo `test -f 'htsalias.c' || echo '$(srcdir)/'`htsalias.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsalias.Tpo $(DEPDIR)/libhttrack_la-htsalias.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsalias.c' object='libhttrack_la-htsalias.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsalias.lo `test -f 'htsalias.c' || echo '$(srcdir)/'`htsalias.c
|
||||
|
||||
libhttrack_la-htsthread.lo: htsthread.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsthread.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsthread.Tpo -c -o libhttrack_la-htsthread.lo `test -f 'htsthread.c' || echo '$(srcdir)/'`htsthread.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsthread.Tpo $(DEPDIR)/libhttrack_la-htsthread.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsthread.c' object='libhttrack_la-htsthread.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsthread.lo `test -f 'htsthread.c' || echo '$(srcdir)/'`htsthread.c
|
||||
|
||||
libhttrack_la-htsindex.lo: htsindex.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsindex.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsindex.Tpo -c -o libhttrack_la-htsindex.lo `test -f 'htsindex.c' || echo '$(srcdir)/'`htsindex.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsindex.Tpo $(DEPDIR)/libhttrack_la-htsindex.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsindex.c' object='libhttrack_la-htsindex.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsindex.lo `test -f 'htsindex.c' || echo '$(srcdir)/'`htsindex.c
|
||||
|
||||
libhttrack_la-htsbauth.lo: htsbauth.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsbauth.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsbauth.Tpo -c -o libhttrack_la-htsbauth.lo `test -f 'htsbauth.c' || echo '$(srcdir)/'`htsbauth.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsbauth.Tpo $(DEPDIR)/libhttrack_la-htsbauth.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsbauth.c' object='libhttrack_la-htsbauth.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsbauth.lo `test -f 'htsbauth.c' || echo '$(srcdir)/'`htsbauth.c
|
||||
|
||||
libhttrack_la-htsmd5.lo: htsmd5.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsmd5.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsmd5.Tpo -c -o libhttrack_la-htsmd5.lo `test -f 'htsmd5.c' || echo '$(srcdir)/'`htsmd5.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsmd5.Tpo $(DEPDIR)/libhttrack_la-htsmd5.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsmd5.c' object='libhttrack_la-htsmd5.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsmd5.lo `test -f 'htsmd5.c' || echo '$(srcdir)/'`htsmd5.c
|
||||
|
||||
libhttrack_la-htszlib.lo: htszlib.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htszlib.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htszlib.Tpo -c -o libhttrack_la-htszlib.lo `test -f 'htszlib.c' || echo '$(srcdir)/'`htszlib.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htszlib.Tpo $(DEPDIR)/libhttrack_la-htszlib.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htszlib.c' object='libhttrack_la-htszlib.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htszlib.lo `test -f 'htszlib.c' || echo '$(srcdir)/'`htszlib.c
|
||||
|
||||
libhttrack_la-htswrap.lo: htswrap.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htswrap.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htswrap.Tpo -c -o libhttrack_la-htswrap.lo `test -f 'htswrap.c' || echo '$(srcdir)/'`htswrap.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htswrap.Tpo $(DEPDIR)/libhttrack_la-htswrap.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htswrap.c' object='libhttrack_la-htswrap.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htswrap.lo `test -f 'htswrap.c' || echo '$(srcdir)/'`htswrap.c
|
||||
|
||||
libhttrack_la-htsconcat.lo: htsconcat.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsconcat.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsconcat.Tpo -c -o libhttrack_la-htsconcat.lo `test -f 'htsconcat.c' || echo '$(srcdir)/'`htsconcat.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsconcat.Tpo $(DEPDIR)/libhttrack_la-htsconcat.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsconcat.c' object='libhttrack_la-htsconcat.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsconcat.lo `test -f 'htsconcat.c' || echo '$(srcdir)/'`htsconcat.c
|
||||
|
||||
libhttrack_la-htsmodules.lo: htsmodules.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsmodules.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsmodules.Tpo -c -o libhttrack_la-htsmodules.lo `test -f 'htsmodules.c' || echo '$(srcdir)/'`htsmodules.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsmodules.Tpo $(DEPDIR)/libhttrack_la-htsmodules.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsmodules.c' object='libhttrack_la-htsmodules.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsmodules.lo `test -f 'htsmodules.c' || echo '$(srcdir)/'`htsmodules.c
|
||||
|
||||
libhttrack_la-htscharset.lo: htscharset.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htscharset.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htscharset.Tpo -c -o libhttrack_la-htscharset.lo `test -f 'htscharset.c' || echo '$(srcdir)/'`htscharset.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htscharset.Tpo $(DEPDIR)/libhttrack_la-htscharset.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htscharset.c' object='libhttrack_la-htscharset.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htscharset.lo `test -f 'htscharset.c' || echo '$(srcdir)/'`htscharset.c
|
||||
|
||||
libhttrack_la-punycode.lo: punycode.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-punycode.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-punycode.Tpo -c -o libhttrack_la-punycode.lo `test -f 'punycode.c' || echo '$(srcdir)/'`punycode.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-punycode.Tpo $(DEPDIR)/libhttrack_la-punycode.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='punycode.c' object='libhttrack_la-punycode.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-punycode.lo `test -f 'punycode.c' || echo '$(srcdir)/'`punycode.c
|
||||
|
||||
libhttrack_la-htsencoding.lo: htsencoding.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-htsencoding.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-htsencoding.Tpo -c -o libhttrack_la-htsencoding.lo `test -f 'htsencoding.c' || echo '$(srcdir)/'`htsencoding.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-htsencoding.Tpo $(DEPDIR)/libhttrack_la-htsencoding.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsencoding.c' object='libhttrack_la-htsencoding.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-htsencoding.lo `test -f 'htsencoding.c' || echo '$(srcdir)/'`htsencoding.c
|
||||
|
||||
libhttrack_la-md5.lo: md5.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT libhttrack_la-md5.lo -MD -MP -MF $(DEPDIR)/libhttrack_la-md5.Tpo -c -o libhttrack_la-md5.lo `test -f 'md5.c' || echo '$(srcdir)/'`md5.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libhttrack_la-md5.Tpo $(DEPDIR)/libhttrack_la-md5.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='md5.c' object='libhttrack_la-md5.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o libhttrack_la-md5.lo `test -f 'md5.c' || echo '$(srcdir)/'`md5.c
|
||||
|
||||
minizip/libhttrack_la-ioapi.lo: minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT minizip/libhttrack_la-ioapi.lo -MD -MP -MF minizip/$(DEPDIR)/libhttrack_la-ioapi.Tpo -c -o minizip/libhttrack_la-ioapi.lo `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/libhttrack_la-ioapi.Tpo minizip/$(DEPDIR)/libhttrack_la-ioapi.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/ioapi.c' object='minizip/libhttrack_la-ioapi.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o minizip/libhttrack_la-ioapi.lo `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
|
||||
|
||||
minizip/libhttrack_la-mztools.lo: minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT minizip/libhttrack_la-mztools.lo -MD -MP -MF minizip/$(DEPDIR)/libhttrack_la-mztools.Tpo -c -o minizip/libhttrack_la-mztools.lo `test -f 'minizip/mztools.c' || echo '$(srcdir)/'`minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/libhttrack_la-mztools.Tpo minizip/$(DEPDIR)/libhttrack_la-mztools.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/mztools.c' object='minizip/libhttrack_la-mztools.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o minizip/libhttrack_la-mztools.lo `test -f 'minizip/mztools.c' || echo '$(srcdir)/'`minizip/mztools.c
|
||||
|
||||
minizip/libhttrack_la-unzip.lo: minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT minizip/libhttrack_la-unzip.lo -MD -MP -MF minizip/$(DEPDIR)/libhttrack_la-unzip.Tpo -c -o minizip/libhttrack_la-unzip.lo `test -f 'minizip/unzip.c' || echo '$(srcdir)/'`minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/libhttrack_la-unzip.Tpo minizip/$(DEPDIR)/libhttrack_la-unzip.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/unzip.c' object='minizip/libhttrack_la-unzip.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o minizip/libhttrack_la-unzip.lo `test -f 'minizip/unzip.c' || echo '$(srcdir)/'`minizip/unzip.c
|
||||
|
||||
minizip/libhttrack_la-zip.lo: minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -MT minizip/libhttrack_la-zip.lo -MD -MP -MF minizip/$(DEPDIR)/libhttrack_la-zip.Tpo -c -o minizip/libhttrack_la-zip.lo `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/libhttrack_la-zip.Tpo minizip/$(DEPDIR)/libhttrack_la-zip.Plo
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/zip.c' object='minizip/libhttrack_la-zip.lo' libtool=yes @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libhttrack_la_CFLAGS) $(CFLAGS) -c -o minizip/libhttrack_la-zip.lo `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
|
||||
|
||||
htsserver-htsserver.o: htsserver.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(htsserver_CFLAGS) $(CFLAGS) -MT htsserver-htsserver.o -MD -MP -MF $(DEPDIR)/htsserver-htsserver.Tpo -c -o htsserver-htsserver.o `test -f 'htsserver.c' || echo '$(srcdir)/'`htsserver.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/htsserver-htsserver.Tpo $(DEPDIR)/htsserver-htsserver.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsserver.c' object='htsserver-htsserver.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(htsserver_CFLAGS) $(CFLAGS) -c -o htsserver-htsserver.o `test -f 'htsserver.c' || echo '$(srcdir)/'`htsserver.c
|
||||
|
||||
htsserver-htsserver.obj: htsserver.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(htsserver_CFLAGS) $(CFLAGS) -MT htsserver-htsserver.obj -MD -MP -MF $(DEPDIR)/htsserver-htsserver.Tpo -c -o htsserver-htsserver.obj `if test -f 'htsserver.c'; then $(CYGPATH_W) 'htsserver.c'; else $(CYGPATH_W) '$(srcdir)/htsserver.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/htsserver-htsserver.Tpo $(DEPDIR)/htsserver-htsserver.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsserver.c' object='htsserver-htsserver.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(htsserver_CFLAGS) $(CFLAGS) -c -o htsserver-htsserver.obj `if test -f 'htsserver.c'; then $(CYGPATH_W) 'htsserver.c'; else $(CYGPATH_W) '$(srcdir)/htsserver.c'; fi`
|
||||
|
||||
htsserver-htsweb.o: htsweb.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(htsserver_CFLAGS) $(CFLAGS) -MT htsserver-htsweb.o -MD -MP -MF $(DEPDIR)/htsserver-htsweb.Tpo -c -o htsserver-htsweb.o `test -f 'htsweb.c' || echo '$(srcdir)/'`htsweb.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/htsserver-htsweb.Tpo $(DEPDIR)/htsserver-htsweb.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsweb.c' object='htsserver-htsweb.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(htsserver_CFLAGS) $(CFLAGS) -c -o htsserver-htsweb.o `test -f 'htsweb.c' || echo '$(srcdir)/'`htsweb.c
|
||||
|
||||
htsserver-htsweb.obj: htsweb.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(htsserver_CFLAGS) $(CFLAGS) -MT htsserver-htsweb.obj -MD -MP -MF $(DEPDIR)/htsserver-htsweb.Tpo -c -o htsserver-htsweb.obj `if test -f 'htsweb.c'; then $(CYGPATH_W) 'htsweb.c'; else $(CYGPATH_W) '$(srcdir)/htsweb.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/htsserver-htsweb.Tpo $(DEPDIR)/htsserver-htsweb.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='htsweb.c' object='htsserver-htsweb.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(htsserver_CFLAGS) $(CFLAGS) -c -o htsserver-htsweb.obj `if test -f 'htsweb.c'; then $(CYGPATH_W) 'htsweb.c'; else $(CYGPATH_W) '$(srcdir)/htsweb.c'; fi`
|
||||
|
||||
proxy/proxytrack-main.o: proxy/main.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxy/proxytrack-main.o -MD -MP -MF proxy/$(DEPDIR)/proxytrack-main.Tpo -c -o proxy/proxytrack-main.o `test -f 'proxy/main.c' || echo '$(srcdir)/'`proxy/main.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) proxy/$(DEPDIR)/proxytrack-main.Tpo proxy/$(DEPDIR)/proxytrack-main.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/main.c' object='proxy/proxytrack-main.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxy/proxytrack-main.o `test -f 'proxy/main.c' || echo '$(srcdir)/'`proxy/main.c
|
||||
|
||||
proxy/proxytrack-main.obj: proxy/main.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxy/proxytrack-main.obj -MD -MP -MF proxy/$(DEPDIR)/proxytrack-main.Tpo -c -o proxy/proxytrack-main.obj `if test -f 'proxy/main.c'; then $(CYGPATH_W) 'proxy/main.c'; else $(CYGPATH_W) '$(srcdir)/proxy/main.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) proxy/$(DEPDIR)/proxytrack-main.Tpo proxy/$(DEPDIR)/proxytrack-main.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/main.c' object='proxy/proxytrack-main.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxy/proxytrack-main.obj `if test -f 'proxy/main.c'; then $(CYGPATH_W) 'proxy/main.c'; else $(CYGPATH_W) '$(srcdir)/proxy/main.c'; fi`
|
||||
|
||||
proxy/proxytrack-proxytrack.o: proxy/proxytrack.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxy/proxytrack-proxytrack.o -MD -MP -MF proxy/$(DEPDIR)/proxytrack-proxytrack.Tpo -c -o proxy/proxytrack-proxytrack.o `test -f 'proxy/proxytrack.c' || echo '$(srcdir)/'`proxy/proxytrack.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) proxy/$(DEPDIR)/proxytrack-proxytrack.Tpo proxy/$(DEPDIR)/proxytrack-proxytrack.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/proxytrack.c' object='proxy/proxytrack-proxytrack.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxy/proxytrack-proxytrack.o `test -f 'proxy/proxytrack.c' || echo '$(srcdir)/'`proxy/proxytrack.c
|
||||
|
||||
proxy/proxytrack-proxytrack.obj: proxy/proxytrack.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxy/proxytrack-proxytrack.obj -MD -MP -MF proxy/$(DEPDIR)/proxytrack-proxytrack.Tpo -c -o proxy/proxytrack-proxytrack.obj `if test -f 'proxy/proxytrack.c'; then $(CYGPATH_W) 'proxy/proxytrack.c'; else $(CYGPATH_W) '$(srcdir)/proxy/proxytrack.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) proxy/$(DEPDIR)/proxytrack-proxytrack.Tpo proxy/$(DEPDIR)/proxytrack-proxytrack.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/proxytrack.c' object='proxy/proxytrack-proxytrack.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxy/proxytrack-proxytrack.obj `if test -f 'proxy/proxytrack.c'; then $(CYGPATH_W) 'proxy/proxytrack.c'; else $(CYGPATH_W) '$(srcdir)/proxy/proxytrack.c'; fi`
|
||||
|
||||
proxy/proxytrack-store.o: proxy/store.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxy/proxytrack-store.o -MD -MP -MF proxy/$(DEPDIR)/proxytrack-store.Tpo -c -o proxy/proxytrack-store.o `test -f 'proxy/store.c' || echo '$(srcdir)/'`proxy/store.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) proxy/$(DEPDIR)/proxytrack-store.Tpo proxy/$(DEPDIR)/proxytrack-store.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/store.c' object='proxy/proxytrack-store.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxy/proxytrack-store.o `test -f 'proxy/store.c' || echo '$(srcdir)/'`proxy/store.c
|
||||
|
||||
proxy/proxytrack-store.obj: proxy/store.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxy/proxytrack-store.obj -MD -MP -MF proxy/$(DEPDIR)/proxytrack-store.Tpo -c -o proxy/proxytrack-store.obj `if test -f 'proxy/store.c'; then $(CYGPATH_W) 'proxy/store.c'; else $(CYGPATH_W) '$(srcdir)/proxy/store.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) proxy/$(DEPDIR)/proxytrack-store.Tpo proxy/$(DEPDIR)/proxytrack-store.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='proxy/store.c' object='proxy/proxytrack-store.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxy/proxytrack-store.obj `if test -f 'proxy/store.c'; then $(CYGPATH_W) 'proxy/store.c'; else $(CYGPATH_W) '$(srcdir)/proxy/store.c'; fi`
|
||||
|
||||
proxytrack-coucal.o: coucal.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-coucal.o -MD -MP -MF $(DEPDIR)/proxytrack-coucal.Tpo -c -o proxytrack-coucal.o `test -f 'coucal.c' || echo '$(srcdir)/'`coucal.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-coucal.Tpo $(DEPDIR)/proxytrack-coucal.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='coucal.c' object='proxytrack-coucal.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-coucal.o `test -f 'coucal.c' || echo '$(srcdir)/'`coucal.c
|
||||
|
||||
proxytrack-coucal.obj: coucal.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-coucal.obj -MD -MP -MF $(DEPDIR)/proxytrack-coucal.Tpo -c -o proxytrack-coucal.obj `if test -f 'coucal.c'; then $(CYGPATH_W) 'coucal.c'; else $(CYGPATH_W) '$(srcdir)/coucal.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-coucal.Tpo $(DEPDIR)/proxytrack-coucal.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='coucal.c' object='proxytrack-coucal.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-coucal.obj `if test -f 'coucal.c'; then $(CYGPATH_W) 'coucal.c'; else $(CYGPATH_W) '$(srcdir)/coucal.c'; fi`
|
||||
|
||||
proxytrack-htsmd5.o: htsmd5.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-htsmd5.o -MD -MP -MF $(DEPDIR)/proxytrack-htsmd5.Tpo -c -o proxytrack-htsmd5.o `test -f 'htsmd5.c' || echo '$(srcdir)/'`htsmd5.c
|
||||
@@ -722,67 +1043,68 @@ proxytrack-md5.obj: md5.c
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-md5.obj `if test -f 'md5.c'; then $(CYGPATH_W) 'md5.c'; else $(CYGPATH_W) '$(srcdir)/md5.c'; fi`
|
||||
|
||||
proxytrack-ioapi.o: minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-ioapi.o -MD -MP -MF $(DEPDIR)/proxytrack-ioapi.Tpo -c -o proxytrack-ioapi.o `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-ioapi.Tpo $(DEPDIR)/proxytrack-ioapi.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/ioapi.c' object='proxytrack-ioapi.o' libtool=no @AMDEPBACKSLASH@
|
||||
minizip/proxytrack-ioapi.o: minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT minizip/proxytrack-ioapi.o -MD -MP -MF minizip/$(DEPDIR)/proxytrack-ioapi.Tpo -c -o minizip/proxytrack-ioapi.o `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/proxytrack-ioapi.Tpo minizip/$(DEPDIR)/proxytrack-ioapi.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/ioapi.c' object='minizip/proxytrack-ioapi.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-ioapi.o `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o minizip/proxytrack-ioapi.o `test -f 'minizip/ioapi.c' || echo '$(srcdir)/'`minizip/ioapi.c
|
||||
|
||||
proxytrack-ioapi.obj: minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-ioapi.obj -MD -MP -MF $(DEPDIR)/proxytrack-ioapi.Tpo -c -o proxytrack-ioapi.obj `if test -f 'minizip/ioapi.c'; then $(CYGPATH_W) 'minizip/ioapi.c'; else $(CYGPATH_W) '$(srcdir)/minizip/ioapi.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-ioapi.Tpo $(DEPDIR)/proxytrack-ioapi.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/ioapi.c' object='proxytrack-ioapi.obj' libtool=no @AMDEPBACKSLASH@
|
||||
minizip/proxytrack-ioapi.obj: minizip/ioapi.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT minizip/proxytrack-ioapi.obj -MD -MP -MF minizip/$(DEPDIR)/proxytrack-ioapi.Tpo -c -o minizip/proxytrack-ioapi.obj `if test -f 'minizip/ioapi.c'; then $(CYGPATH_W) 'minizip/ioapi.c'; else $(CYGPATH_W) '$(srcdir)/minizip/ioapi.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/proxytrack-ioapi.Tpo minizip/$(DEPDIR)/proxytrack-ioapi.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/ioapi.c' object='minizip/proxytrack-ioapi.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-ioapi.obj `if test -f 'minizip/ioapi.c'; then $(CYGPATH_W) 'minizip/ioapi.c'; else $(CYGPATH_W) '$(srcdir)/minizip/ioapi.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o minizip/proxytrack-ioapi.obj `if test -f 'minizip/ioapi.c'; then $(CYGPATH_W) 'minizip/ioapi.c'; else $(CYGPATH_W) '$(srcdir)/minizip/ioapi.c'; fi`
|
||||
|
||||
proxytrack-mztools.o: minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-mztools.o -MD -MP -MF $(DEPDIR)/proxytrack-mztools.Tpo -c -o proxytrack-mztools.o `test -f 'minizip/mztools.c' || echo '$(srcdir)/'`minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-mztools.Tpo $(DEPDIR)/proxytrack-mztools.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/mztools.c' object='proxytrack-mztools.o' libtool=no @AMDEPBACKSLASH@
|
||||
minizip/proxytrack-mztools.o: minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT minizip/proxytrack-mztools.o -MD -MP -MF minizip/$(DEPDIR)/proxytrack-mztools.Tpo -c -o minizip/proxytrack-mztools.o `test -f 'minizip/mztools.c' || echo '$(srcdir)/'`minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/proxytrack-mztools.Tpo minizip/$(DEPDIR)/proxytrack-mztools.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/mztools.c' object='minizip/proxytrack-mztools.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-mztools.o `test -f 'minizip/mztools.c' || echo '$(srcdir)/'`minizip/mztools.c
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o minizip/proxytrack-mztools.o `test -f 'minizip/mztools.c' || echo '$(srcdir)/'`minizip/mztools.c
|
||||
|
||||
proxytrack-mztools.obj: minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-mztools.obj -MD -MP -MF $(DEPDIR)/proxytrack-mztools.Tpo -c -o proxytrack-mztools.obj `if test -f 'minizip/mztools.c'; then $(CYGPATH_W) 'minizip/mztools.c'; else $(CYGPATH_W) '$(srcdir)/minizip/mztools.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-mztools.Tpo $(DEPDIR)/proxytrack-mztools.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/mztools.c' object='proxytrack-mztools.obj' libtool=no @AMDEPBACKSLASH@
|
||||
minizip/proxytrack-mztools.obj: minizip/mztools.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT minizip/proxytrack-mztools.obj -MD -MP -MF minizip/$(DEPDIR)/proxytrack-mztools.Tpo -c -o minizip/proxytrack-mztools.obj `if test -f 'minizip/mztools.c'; then $(CYGPATH_W) 'minizip/mztools.c'; else $(CYGPATH_W) '$(srcdir)/minizip/mztools.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/proxytrack-mztools.Tpo minizip/$(DEPDIR)/proxytrack-mztools.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/mztools.c' object='minizip/proxytrack-mztools.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-mztools.obj `if test -f 'minizip/mztools.c'; then $(CYGPATH_W) 'minizip/mztools.c'; else $(CYGPATH_W) '$(srcdir)/minizip/mztools.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o minizip/proxytrack-mztools.obj `if test -f 'minizip/mztools.c'; then $(CYGPATH_W) 'minizip/mztools.c'; else $(CYGPATH_W) '$(srcdir)/minizip/mztools.c'; fi`
|
||||
|
||||
proxytrack-unzip.o: minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-unzip.o -MD -MP -MF $(DEPDIR)/proxytrack-unzip.Tpo -c -o proxytrack-unzip.o `test -f 'minizip/unzip.c' || echo '$(srcdir)/'`minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-unzip.Tpo $(DEPDIR)/proxytrack-unzip.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/unzip.c' object='proxytrack-unzip.o' libtool=no @AMDEPBACKSLASH@
|
||||
minizip/proxytrack-unzip.o: minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT minizip/proxytrack-unzip.o -MD -MP -MF minizip/$(DEPDIR)/proxytrack-unzip.Tpo -c -o minizip/proxytrack-unzip.o `test -f 'minizip/unzip.c' || echo '$(srcdir)/'`minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/proxytrack-unzip.Tpo minizip/$(DEPDIR)/proxytrack-unzip.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/unzip.c' object='minizip/proxytrack-unzip.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-unzip.o `test -f 'minizip/unzip.c' || echo '$(srcdir)/'`minizip/unzip.c
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o minizip/proxytrack-unzip.o `test -f 'minizip/unzip.c' || echo '$(srcdir)/'`minizip/unzip.c
|
||||
|
||||
proxytrack-unzip.obj: minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-unzip.obj -MD -MP -MF $(DEPDIR)/proxytrack-unzip.Tpo -c -o proxytrack-unzip.obj `if test -f 'minizip/unzip.c'; then $(CYGPATH_W) 'minizip/unzip.c'; else $(CYGPATH_W) '$(srcdir)/minizip/unzip.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-unzip.Tpo $(DEPDIR)/proxytrack-unzip.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/unzip.c' object='proxytrack-unzip.obj' libtool=no @AMDEPBACKSLASH@
|
||||
minizip/proxytrack-unzip.obj: minizip/unzip.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT minizip/proxytrack-unzip.obj -MD -MP -MF minizip/$(DEPDIR)/proxytrack-unzip.Tpo -c -o minizip/proxytrack-unzip.obj `if test -f 'minizip/unzip.c'; then $(CYGPATH_W) 'minizip/unzip.c'; else $(CYGPATH_W) '$(srcdir)/minizip/unzip.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/proxytrack-unzip.Tpo minizip/$(DEPDIR)/proxytrack-unzip.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/unzip.c' object='minizip/proxytrack-unzip.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-unzip.obj `if test -f 'minizip/unzip.c'; then $(CYGPATH_W) 'minizip/unzip.c'; else $(CYGPATH_W) '$(srcdir)/minizip/unzip.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o minizip/proxytrack-unzip.obj `if test -f 'minizip/unzip.c'; then $(CYGPATH_W) 'minizip/unzip.c'; else $(CYGPATH_W) '$(srcdir)/minizip/unzip.c'; fi`
|
||||
|
||||
proxytrack-zip.o: minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-zip.o -MD -MP -MF $(DEPDIR)/proxytrack-zip.Tpo -c -o proxytrack-zip.o `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-zip.Tpo $(DEPDIR)/proxytrack-zip.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/zip.c' object='proxytrack-zip.o' libtool=no @AMDEPBACKSLASH@
|
||||
minizip/proxytrack-zip.o: minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT minizip/proxytrack-zip.o -MD -MP -MF minizip/$(DEPDIR)/proxytrack-zip.Tpo -c -o minizip/proxytrack-zip.o `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/proxytrack-zip.Tpo minizip/$(DEPDIR)/proxytrack-zip.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/zip.c' object='minizip/proxytrack-zip.o' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-zip.o `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o minizip/proxytrack-zip.o `test -f 'minizip/zip.c' || echo '$(srcdir)/'`minizip/zip.c
|
||||
|
||||
proxytrack-zip.obj: minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT proxytrack-zip.obj -MD -MP -MF $(DEPDIR)/proxytrack-zip.Tpo -c -o proxytrack-zip.obj `if test -f 'minizip/zip.c'; then $(CYGPATH_W) 'minizip/zip.c'; else $(CYGPATH_W) '$(srcdir)/minizip/zip.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/proxytrack-zip.Tpo $(DEPDIR)/proxytrack-zip.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/zip.c' object='proxytrack-zip.obj' libtool=no @AMDEPBACKSLASH@
|
||||
minizip/proxytrack-zip.obj: minizip/zip.c
|
||||
@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -MT minizip/proxytrack-zip.obj -MD -MP -MF minizip/$(DEPDIR)/proxytrack-zip.Tpo -c -o minizip/proxytrack-zip.obj `if test -f 'minizip/zip.c'; then $(CYGPATH_W) 'minizip/zip.c'; else $(CYGPATH_W) '$(srcdir)/minizip/zip.c'; fi`
|
||||
@am__fastdepCC_TRUE@ $(am__mv) minizip/$(DEPDIR)/proxytrack-zip.Tpo minizip/$(DEPDIR)/proxytrack-zip.Po
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='minizip/zip.c' object='minizip/proxytrack-zip.obj' libtool=no @AMDEPBACKSLASH@
|
||||
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o proxytrack-zip.obj `if test -f 'minizip/zip.c'; then $(CYGPATH_W) 'minizip/zip.c'; else $(CYGPATH_W) '$(srcdir)/minizip/zip.c'; fi`
|
||||
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(proxytrack_CFLAGS) $(CFLAGS) -c -o minizip/proxytrack-zip.obj `if test -f 'minizip/zip.c'; then $(CYGPATH_W) 'minizip/zip.c'; else $(CYGPATH_W) '$(srcdir)/minizip/zip.c'; fi`
|
||||
|
||||
mostlyclean-libtool:
|
||||
-rm -f *.lo
|
||||
|
||||
clean-libtool:
|
||||
-rm -rf .libs _libs
|
||||
-rm -rf minizip/.libs minizip/_libs
|
||||
install-DevIncludesDATA: $(DevIncludes_DATA)
|
||||
@$(NORMAL_INSTALL)
|
||||
@list='$(DevIncludes_DATA)'; test -n "$(DevIncludesdir)" || list=; \
|
||||
@@ -922,6 +1244,10 @@ clean-generic:
|
||||
distclean-generic:
|
||||
-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
|
||||
-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
|
||||
-rm -f minizip/$(DEPDIR)/$(am__dirstamp)
|
||||
-rm -f minizip/$(am__dirstamp)
|
||||
-rm -f proxy/$(DEPDIR)/$(am__dirstamp)
|
||||
-rm -f proxy/$(am__dirstamp)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@@ -932,7 +1258,7 @@ clean-am: clean-binPROGRAMS clean-generic clean-libLTLIBRARIES \
|
||||
clean-libtool mostlyclean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -rf ./$(DEPDIR) minizip/$(DEPDIR) proxy/$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
distclean-am: clean-am distclean-compile distclean-generic \
|
||||
distclean-tags
|
||||
@@ -978,7 +1304,7 @@ install-ps-am:
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -rf ./$(DEPDIR)
|
||||
-rm -rf ./$(DEPDIR) minizip/$(DEPDIR) proxy/$(DEPDIR)
|
||||
-rm -f Makefile
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
|
||||
1561
src/coucal.c
Normal file
1561
src/coucal.c
Normal file
File diff suppressed because it is too large
Load Diff
529
src/coucal.h
Normal file
529
src/coucal.h
Normal file
@@ -0,0 +1,529 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
Coucal, Cuckoo hashing-based hashtable with stash area.
|
||||
Copyright (C) 2013-2014 Xavier Roche (http://www.httrack.com/)
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Coucal, a Cuckoo-hashing-based hashtable with stash area C library.
|
||||
*
|
||||
* This hashtable library provides key/value hashtable, with by default a
|
||||
* string key, and integer/pointer value (with an associated optional
|
||||
* allocator). Both key and value can be of any type, using custom settings.
|
||||
* By default, the string key is dup'ed using a string pool, and the opaque
|
||||
* value is stored as-is (either the pointer, or an uintptr_t integer value).
|
||||
* It features O(1) average insertion, and guaranteed O(1) lookup, replace,
|
||||
* and delete operations.
|
||||
*
|
||||
* Implementation notes:
|
||||
* Implementation is auto-rehashable, and uses cuckoo hashing of size 2**n
|
||||
* with a Murmur or MD5 hash function, with one additional auxiliary hash
|
||||
* function.
|
||||
* It also uses a small stash area to handle rare cases of collisions.
|
||||
* Enumeration of all key/values is possible, deletion is also possible, but
|
||||
* currently without any auto-shrinking (ie. table will never shrink).
|
||||
* Overall, two main blocks are allocated: one for the items, and one for
|
||||
* the keys (pool).
|
||||
* If the string pool is being used (to store dup'ed keys), deleting is only
|
||||
* O(1) average, because the pool needs to be compacted time to time.
|
||||
* Currently the default maximum number of elements in the hashtable is
|
||||
* 2**31 - 1 (that is, 2,147,483,648 elements), but this default can be changed
|
||||
* by setting COUCAL_HASH_SIZE to a higher value (64 is the only higher value
|
||||
* currently supported), and rebuilding the library.
|
||||
*
|
||||
* References:
|
||||
*
|
||||
* Cuckoo Hashing, by Rasmus Pagh and Flemming Friche Rodler
|
||||
* http://www.it-c.dk/people/pagh/papers/cuckoo-jour.pdf
|
||||
*
|
||||
* Cuckoo Stash, by Adam Kirsch, Michael Mitzenmacher and Udi Wieder
|
||||
* http://research.microsoft.com/pubs/73856/stash-full.9-30.pdf
|
||||
*
|
||||
* MurmurHash3, by Austin Appleby
|
||||
* http://en.wikipedia.org/wiki/MurmurHash
|
||||
*
|
||||
* MD5 http://en.wikipedia.org/wiki/MD5
|
||||
* FNV http://www.isthe.com/chongo/tech/comp/fnv/
|
||||
**/
|
||||
|
||||
#ifndef COUCAL_DEFH
|
||||
#define COUCAL_DEFH
|
||||
|
||||
/* Includes */
|
||||
#ifdef _WIN32
|
||||
#include <stddef.h>
|
||||
typedef unsigned __int32 uint32_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#elif (defined(SOLARIS) || defined(sun) || defined(HAVE_INTTYPES_H) \
|
||||
|| defined(BSD) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD_kernel__))
|
||||
#include <inttypes.h>
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#include <stdarg.h>
|
||||
|
||||
/* External definitions */
|
||||
#ifndef COUCAL_EXTERN
|
||||
#ifdef _WIN32
|
||||
#ifdef COUCAL_BUILDING
|
||||
#define COUCAL_EXTERN __declspec(dllimport)
|
||||
#else
|
||||
#define COUCAL_EXTERN __declspec(dllexport)
|
||||
#endif
|
||||
#elif ( ( defined(__GNUC__) && ( __GNUC__ >= 4 ) ) \
|
||||
|| ( defined(HAVE_VISIBILITY) && HAVE_VISIBILITY ) )
|
||||
#define COUCAL_EXTERN extern __attribute__ ((visibility("default")))
|
||||
#else
|
||||
#define COUCAL_EXTERN extern
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/** Key opaque type. May be a regular 'const char*'. **/
|
||||
typedef void* coucal_key;
|
||||
|
||||
/** Key constant (can not be modified) opaque type. **/
|
||||
typedef const void* coucal_key_const;
|
||||
|
||||
/** Opaque user-defined pointer. **/
|
||||
typedef void* coucal_opaque;
|
||||
|
||||
/** Value (union of any value). **/
|
||||
typedef union coucal_value {
|
||||
/** Integer value. **/
|
||||
intptr_t intg;
|
||||
|
||||
/** Unsigned integer value. **/
|
||||
uintptr_t uintg;
|
||||
|
||||
/** Pointer value. **/
|
||||
void *ptr;
|
||||
} coucal_value;
|
||||
|
||||
/** Value constant. **/
|
||||
typedef const coucal_value coucal_value_const;
|
||||
|
||||
/** NULL Value. **/
|
||||
#define INTHASH_VALUE_NULL { 0 }
|
||||
|
||||
#ifndef HTS_DEF_FWSTRUCT_coucal_item
|
||||
#define HTS_DEF_FWSTRUCT_coucal_item
|
||||
typedef struct coucal_item coucal_item;
|
||||
#endif
|
||||
|
||||
/** Coucal primary hash size. Default is 32-bit. **/
|
||||
#ifndef COUCAL_HASH_SIZE
|
||||
#define COUCAL_HASH_SIZE 32
|
||||
#endif
|
||||
|
||||
/** Hash integer type. **/
|
||||
#if (COUCAL_HASH_SIZE == 32)
|
||||
|
||||
/** 32-bit hash key. **/
|
||||
typedef uint32_t coucal_hashkey;
|
||||
|
||||
#elif (COUCAL_HASH_SIZE == 64)
|
||||
|
||||
/** 64-bit hash key. **/
|
||||
typedef uint64_t coucal_hashkey;
|
||||
|
||||
#else
|
||||
#error "Unsupported COUCAL_HASH_SIZE"
|
||||
#endif
|
||||
|
||||
/** Pair of hashes **/
|
||||
typedef struct coucal_hashkeys {
|
||||
coucal_hashkey hash1;
|
||||
coucal_hashkey hash2;
|
||||
} coucal_hashkeys;
|
||||
|
||||
/** NULL pair of hashes. **/
|
||||
#define INTHASH_KEYS_NULL { 0, 0 }
|
||||
|
||||
/** Item holding a value. **/
|
||||
struct coucal_item {
|
||||
/** Key. **/
|
||||
coucal_key name;
|
||||
|
||||
/** Value. **/
|
||||
coucal_value value;
|
||||
|
||||
/** Hashes of the key. **/
|
||||
coucal_hashkeys hashes;
|
||||
};
|
||||
|
||||
/** Log level. **/
|
||||
typedef enum coucal_loglevel {
|
||||
coucal_log_critical,
|
||||
coucal_log_warning,
|
||||
coucal_log_info,
|
||||
coucal_log_debug,
|
||||
coucal_log_trace
|
||||
} coucal_loglevel;
|
||||
|
||||
/** free handler. Only used when values are markes as xxc **/
|
||||
typedef void (*t_coucal_key_freehandler)(coucal_opaque arg,
|
||||
coucal_key key);
|
||||
|
||||
/** Value free handler. Only used when values are markes as xxc **/
|
||||
typedef void (*t_coucal_value_freehandler)(coucal_opaque arg,
|
||||
coucal_value value);
|
||||
|
||||
/** Key dup handler. **/
|
||||
typedef coucal_key (*t_coucal_duphandler)(coucal_opaque arg,
|
||||
coucal_key_const name);
|
||||
|
||||
/** Key hash computation handler. **/
|
||||
typedef coucal_hashkeys (*t_coucal_hasheshandler)(coucal_opaque arg,
|
||||
coucal_key_const name);
|
||||
|
||||
/** Hashtable logging handler. **/
|
||||
typedef void (*t_coucal_loghandler)(coucal_opaque arg, coucal_loglevel level,
|
||||
const char* format, va_list args);
|
||||
|
||||
/** Hashtable fatal assertion failure. **/
|
||||
typedef void (*t_coucal_asserthandler)(coucal_opaque arg, const char* exp,
|
||||
const char* file, int line);
|
||||
|
||||
/** Key printer (debug) **/
|
||||
typedef const char* (*t_coucal_printkeyhandler)(coucal_opaque arg,
|
||||
coucal_key_const name);
|
||||
|
||||
/** Value printer (debug) **/
|
||||
typedef const char* (*t_coucal_printvaluehandler)(coucal_opaque arg,
|
||||
coucal_value_const value);
|
||||
|
||||
/**
|
||||
* Value comparison handler (returns non-zero value if strings are equal).
|
||||
**/
|
||||
typedef int (*t_coucal_cmphandler)(coucal_opaque arg,
|
||||
coucal_key_const a,
|
||||
coucal_key_const b);
|
||||
|
||||
/** Hashtable (opaque structure). **/
|
||||
#ifndef HTS_DEF_FWSTRUCT_struct_coucal
|
||||
#define HTS_DEF_FWSTRUCT_struct_coucal
|
||||
typedef struct struct_coucal struct_coucal, *coucal;
|
||||
#endif
|
||||
|
||||
/** Hashtable enumeration (opaque structure). **/
|
||||
#ifndef HTS_DEF_FWSTRUCT_struct_coucal_enum
|
||||
#define HTS_DEF_FWSTRUCT_struct_coucal_enum
|
||||
typedef struct struct_coucal_enum struct_coucal_enum;
|
||||
#endif
|
||||
|
||||
/** Enumeration. **/
|
||||
struct struct_coucal_enum {
|
||||
coucal table;
|
||||
size_t index;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Create a new hashtable, with initial bucket size of 'size'.
|
||||
* If size is 0, use the default minimal bucket size.
|
||||
* Return a non-NULL pointer upon success.
|
||||
*
|
||||
* By default, keys are supposed to be '\0'-terminated strings, which are
|
||||
* duplicated by the library (the passed pointer does not need to be
|
||||
* persistent), and values are opaque pointers (or integers) which are copied
|
||||
* "as is", without further processing. Use coucal_value_set_key_handler()
|
||||
* and coucal_value_set_value_handler() to alter this default behavior.
|
||||
**/
|
||||
COUCAL_EXTERN coucal coucal_new(size_t size);
|
||||
|
||||
/**
|
||||
* Was the hashtable successfully created ?
|
||||
* Return non-zero value if the hashtable is valid.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_created(coucal hashtable);
|
||||
|
||||
/**
|
||||
* Delete a hashtable, freeing all entries.
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_delete(coucal * hashtable);
|
||||
|
||||
/**
|
||||
* Return the number of items in the hashtable.
|
||||
**/
|
||||
COUCAL_EXTERN size_t coucal_nitems(coucal hashtable);
|
||||
|
||||
/**
|
||||
* Return the memory size taken by the hashtable.
|
||||
* (This does not take account of the possible memory taken by values)
|
||||
**/
|
||||
COUCAL_EXTERN size_t coucal_memory_size(coucal hashtable);
|
||||
|
||||
/**
|
||||
* Return the library hash size compiled.
|
||||
* The returned value MUST match COUCAL_HASH_SIZE.
|
||||
**/
|
||||
COUCAL_EXTERN size_t coucal_hash_size(void);
|
||||
|
||||
/**
|
||||
* If 'flag' is non-zero, calls coucal_value_set_value_handler() with
|
||||
* default system free() handler function, otherwise, free the value handlers.
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_value_is_malloc(coucal hashtable, int flag);
|
||||
|
||||
/**
|
||||
* Set handlers for values.
|
||||
* free: this handler will be called when a value is to be removed from
|
||||
* the hashtable. if NULL, values won't be free'd.
|
||||
* arg: opaque custom argument to be used by functions.
|
||||
* Handler(s) MUST NOT be changed once elements have been added.
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_value_set_value_handler(coucal hashtable,
|
||||
t_coucal_value_freehandler free,
|
||||
coucal_opaque arg);
|
||||
|
||||
/**
|
||||
* Set handlers for keys.
|
||||
* dup: handler called to duplicate a key. if NULL, the internal pool is used.
|
||||
* free: handler called to free a key. if NULL, the internal pool is used.
|
||||
* hash: hashing handler, called to hash a key. if NULL, the default hash
|
||||
* function is used.
|
||||
* equals: comparison handler, returning non-zero value when two keys are
|
||||
* identical. if NULL, the default comparison function is used.
|
||||
* arg: opaque custom argument to be used by functions.
|
||||
* Handler(s) MUST NOT be changed once elements have been added.
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_value_set_key_handler(coucal hashtable,
|
||||
t_coucal_duphandler dup,
|
||||
t_coucal_key_freehandler free,
|
||||
t_coucal_hasheshandler hash,
|
||||
t_coucal_cmphandler equals,
|
||||
coucal_opaque arg);
|
||||
|
||||
/**
|
||||
* Set assertion failure handler.
|
||||
* log: handler called upon serious programming error
|
||||
* fatal: handler called upon serious programming error
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_set_assert_handler(coucal hashtable,
|
||||
t_coucal_loghandler log,
|
||||
t_coucal_asserthandler fatal,
|
||||
coucal_opaque arg);
|
||||
|
||||
/**
|
||||
* Set pretty print loggers (debug). Both handlers must return a string
|
||||
* pointer which shall be valid until the next call. Both key and value
|
||||
* pointers shall be valid at the same time.
|
||||
* name: handler called to print the string representation of the name
|
||||
* value: handler called to print the string representation of the value
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_set_print_handler(coucal hashtable,
|
||||
t_coucal_printkeyhandler key,
|
||||
t_coucal_printvaluehandler value,
|
||||
coucal_opaque arg);
|
||||
|
||||
/**
|
||||
* Set the hashtable name, for degugging purpose.
|
||||
* name: the hashtable name (ASCII or UTF-8)
|
||||
*/
|
||||
COUCAL_EXTERN void coucal_set_name(coucal hashtable, coucal_key_const name);
|
||||
|
||||
/**
|
||||
* Get the hashtable name, for degugging purpose.
|
||||
* Return NULL if no name was defined.
|
||||
**/
|
||||
COUCAL_EXTERN const char* coucal_get_name(coucal hashtable);
|
||||
|
||||
/**
|
||||
* Read an integer entry from the hashtable.
|
||||
* Return non-zero value upon success and sets intvalue.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_read(coucal hashtable, coucal_key_const name,
|
||||
intptr_t * intvalue);
|
||||
|
||||
/**
|
||||
* Same as coucal_read(), but return 0 is the value was zero.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_readptr(coucal hashtable, coucal_key_const name,
|
||||
intptr_t * intvalue);
|
||||
|
||||
/**
|
||||
* Read an integer entry from the hashtable.
|
||||
* Return 0 if the entry could not be found.
|
||||
**/
|
||||
COUCAL_EXTERN intptr_t coucal_get_intptr(coucal hashtable,
|
||||
coucal_key_const name);
|
||||
|
||||
/**
|
||||
* Return non-zero value if the given entry exists.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_exists(coucal hashtable, coucal_key_const name);
|
||||
|
||||
/**
|
||||
* Read an entry from the hashtable.
|
||||
* Return non-zero value upon success and sets value.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_read_value(coucal hashtable, coucal_key_const name,
|
||||
coucal_value *value);
|
||||
|
||||
/**
|
||||
* Write an entry to the hashtable.
|
||||
* Return non-zero value if the entry was added, zero if it was replaced.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_write_value(coucal hashtable, coucal_key_const name,
|
||||
coucal_value_const value);
|
||||
|
||||
/**
|
||||
* Read a pointer entry from the hashtable.
|
||||
* Return non-zero value upon success and sets value.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_read_pvoid(coucal hashtable, coucal_key_const name,
|
||||
void **value);
|
||||
|
||||
/**
|
||||
* Read a pointer entry from the hashtable and returns its value.
|
||||
* Return NULL if the entry could not be found.
|
||||
**/
|
||||
COUCAL_EXTERN void* coucal_get_pvoid(coucal hashtable, coucal_key_const name);
|
||||
|
||||
/**
|
||||
* Write a pointer entry to the hashtable.
|
||||
* Return non-zero value if the entry was added, zero if it was replaced.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_write_pvoid(coucal hashtable, coucal_key_const name,
|
||||
void *value);
|
||||
|
||||
/**
|
||||
* Alias to coucal_write_pvoid()
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_add_pvoid(coucal hashtable, coucal_key_const name,
|
||||
void *value);
|
||||
|
||||
/**
|
||||
* Write an integer entry to the hashtable.
|
||||
* Return non-zero value if the entry was added, zero if it was replaced.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_write(coucal hashtable, coucal_key_const name,
|
||||
intptr_t value);
|
||||
|
||||
/**
|
||||
* Alias to coucal_write()
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_add(coucal hashtable, coucal_key_const name,
|
||||
intptr_t value);
|
||||
|
||||
/**
|
||||
* Increment an entry value in the hashtable
|
||||
* (or create a new entry with value 1 if it does not yet exist)
|
||||
* Return non-zero value if the entry was added, zero if it was changed.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_inc(coucal hashtable, coucal_key_const name);
|
||||
|
||||
/**
|
||||
* Decrement an entry value in the hashtable
|
||||
* (or create a new entry with value -1 if it does not yet exist)
|
||||
* Return non-zero value if the entry was added, zero if it was changed.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_dec(coucal hashtable, coucal_key_const name);
|
||||
|
||||
/**
|
||||
* Fetch an entry value from the hashtable.
|
||||
* Returns NULL if the entry could not be found.
|
||||
* The returned pointer is only valid until next call to this library, and can
|
||||
* be used for read or write operations.
|
||||
**/
|
||||
COUCAL_EXTERN coucal_value* coucal_fetch_value(coucal hashtable,
|
||||
coucal_key_const name);
|
||||
|
||||
/**
|
||||
* Fetch an entry value from the hashtable, given a name, and its hashes.
|
||||
* Returns NULL if the entry could not be found.
|
||||
* The returned pointer is only valid until next call to this library, and can
|
||||
* be used for read or write operations.
|
||||
* The hashes MUST have been computed using coucal_calc_hashes(), or by
|
||||
* copying an existing hash during an enumeration.
|
||||
* The use of a non-matching hash is safe, but will return NULL.
|
||||
**/
|
||||
COUCAL_EXTERN coucal_value* coucal_fetch_value_hashes(coucal hashtable,
|
||||
coucal_key_const name,
|
||||
const coucal_hashkeys
|
||||
*hashes);
|
||||
|
||||
/**
|
||||
* Remove an entry from the hashtable
|
||||
* Return non-zero value if the entry was removed, zero otherwise.
|
||||
**/
|
||||
COUCAL_EXTERN int coucal_remove(coucal hashtable, coucal_key_const name);
|
||||
|
||||
/**
|
||||
* Return a new enumerator.
|
||||
* Note: deleting entries is safe while enumerating, but adding entries
|
||||
* lead to undefined enumeration behavior (yet safe).
|
||||
**/
|
||||
COUCAL_EXTERN struct_coucal_enum coucal_enum_new(coucal hashtable);
|
||||
|
||||
/**
|
||||
* Enumerate the next entry.
|
||||
**/
|
||||
COUCAL_EXTERN coucal_item *coucal_enum_next(struct_coucal_enum * e);
|
||||
|
||||
/**
|
||||
* Compute a hash of a key for the hashtable 'hashtable'.
|
||||
* The returned hash is suitable for use with coucal_fetch_value_hashes()
|
||||
* Note: the default implementation uses coucal_hash_string()
|
||||
**/
|
||||
COUCAL_EXTERN coucal_hashkeys coucal_calc_hashes(coucal hashtable,
|
||||
coucal_key_const value);
|
||||
|
||||
/**
|
||||
* Compute a hash, given a string. This is the default function used for
|
||||
* hashing keys, which are by default strings. This function uses
|
||||
* coucal_hash_data() as backend.
|
||||
**/
|
||||
COUCAL_EXTERN coucal_hashkeys coucal_hash_string(const char *value);
|
||||
|
||||
/**
|
||||
* Compute a hash, given an opaque buffer.
|
||||
**/
|
||||
COUCAL_EXTERN coucal_hashkeys coucal_hash_data(const void *data, size_t size);
|
||||
|
||||
/**
|
||||
* Set default global assertion failure handler.
|
||||
* The handler will be used if no specific handler was defined in the
|
||||
* hashtable itself.
|
||||
* log: handler called upon serious error log (opaque argument
|
||||
* is the hashtable itself)
|
||||
* fatal: handler called upon serious programming error (opaque argument
|
||||
* is the hashtable itself)
|
||||
**/
|
||||
COUCAL_EXTERN void coucal_set_global_assert_handler(t_coucal_loghandler log,
|
||||
t_coucal_asserthandler fatal);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -168,7 +168,7 @@ regen:
|
||||
" <BR>"LF\
|
||||
" <BR>"LF\
|
||||
" <H6 ALIGN=\"RIGHT\">"LF\
|
||||
" <I>Mirror and index made by HTTrack Website Copier [XR&CO'2013]</I>"LF\
|
||||
" <I>Mirror and index made by HTTrack Website Copier [XR&CO'2014]</I>"LF\
|
||||
" </H6>"LF\
|
||||
" %s"LF\
|
||||
" <!-- Thanks for using HTTrack Website Copier! -->"LF\
|
||||
@@ -186,7 +186,7 @@ regen:
|
||||
""LF\
|
||||
"<table width=\"76%%\" border=\"0\" align=\"center\" valign=\"bottom\" cellspacing=\"0\" cellpadding=\"0\">"LF\
|
||||
" <tr>"LF\
|
||||
" <td id=\"footer\"><small>© 2013 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
|
||||
" <td id=\"footer\"><small>© 2014 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
|
||||
" </tr>"LF\
|
||||
"</table>"LF\
|
||||
""LF\
|
||||
@@ -317,7 +317,7 @@ regen:
|
||||
" </TABLE>"LF\
|
||||
" <BR>"LF\
|
||||
" <H6 ALIGN=\"RIGHT\">"LF\
|
||||
" <I>Mirror and index made by HTTrack Website Copier [XR&CO'2013]</I>"LF\
|
||||
" <I>Mirror and index made by HTTrack Website Copier [XR&CO'2014]</I>"LF\
|
||||
" </H6>"LF\
|
||||
" %s"LF\
|
||||
" <!-- Thanks for using HTTrack Website Copier! -->"LF\
|
||||
@@ -335,7 +335,7 @@ regen:
|
||||
""LF\
|
||||
"<table width=\"76%%\" border=\"0\" align=\"center\" valign=\"bottom\" cellspacing=\"0\" cellpadding=\"0\">"LF\
|
||||
" <tr>"LF\
|
||||
" <td id=\"footer\"><small>© 2013 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
|
||||
" <td id=\"footer\"><small>© 2014 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
|
||||
" </tr>"LF\
|
||||
"</table>"LF\
|
||||
""LF\
|
||||
@@ -475,7 +475,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>© 2013 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
|
||||
" <td id=\"footer\"><small>© 2014 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
|
||||
" </tr>"LF\
|
||||
"</table>"LF\
|
||||
""LF\
|
||||
@@ -612,7 +612,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>© 2013 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
|
||||
" <td id=\"footer\"><small>© 2014 Xavier Roche & other contributors - Web Design: Kauler Leto.</small></td>"LF\
|
||||
" </tr>"LF\
|
||||
"</table>"LF\
|
||||
""LF\
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -37,20 +37,9 @@ Please visit our Website: http://www.httrack.com
|
||||
#include "htsbase.h"
|
||||
#include "htsalias.h"
|
||||
#include "htsglobal.h"
|
||||
|
||||
void linput(FILE * fp, char *s, int max);
|
||||
void hts_lowcase(char *s);
|
||||
#include "htslib.h"
|
||||
|
||||
#define _NOT_NULL(a) ( (a!=NULL) ? (a) : "" )
|
||||
// #define is_realspace(c) (strchr(" \x0d\x0a\x09\x0b\x0c",(c))!=NULL)
|
||||
#define is_realspace(c) ( \
|
||||
(c) == ' ' \
|
||||
|| (c) == '\x09' \
|
||||
|| (c) == '\x0a' \
|
||||
|| (c) == '\x0b' \
|
||||
|| (c) == '\x0c' \
|
||||
|| (c) == '\x0d' \
|
||||
)
|
||||
|
||||
// COPY OF cmdl_ins in htsmain.c
|
||||
// Insert a command in the argc/argv
|
||||
@@ -200,10 +189,10 @@ const char *hts_optalias[][4] = {
|
||||
/* Badly documented */
|
||||
{"debug-testfilters", "-#0", "param1", "debug: test filters"},
|
||||
{"advanced-flushlogs", "-#f", "single", ""},
|
||||
{"advanced-maxfilters", "-#F", "param", ""},
|
||||
{"advanced-maxfilters", "-#F", "param", "maximum number of scan rules"},
|
||||
{"version", "-#h", "single", ""},
|
||||
{"debug-scanstdin", "-#K", "single", ""},
|
||||
{"advanced-maxlinks", "-#L", "single", ""},
|
||||
{"advanced-maxlinks", "-#L", "param", "maximum number of links (0 to disable limit)"},
|
||||
{"advanced-progressinfo", "-#p", "single", "deprecated"},
|
||||
{"catch-url", "-#P", "single", "catch complex URL through proxy"},
|
||||
/*{"debug-oldftp","-#R","single",""}, */
|
||||
@@ -528,9 +517,9 @@ int optinclude_file(const char *name, int *argc, char **argv, char *x_argvblk,
|
||||
tmp_argv[1] = _tmp_argv[1];
|
||||
tmp_argv[2] = _tmp_argv[2];
|
||||
tmp_argv[3] = _tmp_argv[3];
|
||||
strcpybuff(tmp_argv[0], "--");
|
||||
strcatbuff(tmp_argv[0], a);
|
||||
strcpybuff(tmp_argv[1], b);
|
||||
strcpybuff(_tmp_argv[0], "--");
|
||||
strcatbuff(_tmp_argv[0], a);
|
||||
strcpybuff(_tmp_argv[1], b);
|
||||
|
||||
result =
|
||||
optalias_check(2, (const char *const *) tmp_argv, 0, &return_argc,
|
||||
@@ -571,8 +560,8 @@ int optinclude_file(const char *name, int *argc, char **argv, char *x_argvblk,
|
||||
|
||||
/* Get home directory, '.' if failed */
|
||||
/* example: /home/smith */
|
||||
char *hts_gethome(void) {
|
||||
char *home = getenv("HOME");
|
||||
const char *hts_gethome(void) {
|
||||
const char *home = getenv("HOME");
|
||||
|
||||
if (home)
|
||||
return home;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -48,7 +48,7 @@ const char *optreal_value(int p);
|
||||
const char *optalias_value(int p);
|
||||
const char *opttype_value(int p);
|
||||
const char *opthelp_value(int p);
|
||||
char *hts_gethome(void);
|
||||
const char *hts_gethome(void);
|
||||
void expand_home(String * str);
|
||||
#endif
|
||||
|
||||
|
||||
149
src/htsarrays.h
Normal file
149
src/htsarrays.h
Normal file
@@ -0,0 +1,149 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2014 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Important notes:
|
||||
|
||||
- We hereby ask people using this source NOT to use it in purpose of grabbing
|
||||
emails addresses, or collecting any other private information on persons.
|
||||
This would disgrace our work, and spoil the many hours we spent on it.
|
||||
|
||||
Please visit our Website: http://www.httrack.com
|
||||
*/
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/* File: Arrays */
|
||||
/* Author: Xavier Roche */
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
#ifndef HTS_ARRAYS_DEFSTATIC
|
||||
#define HTS_ARRAYS_DEFSTATIC
|
||||
|
||||
/* System definitions. */
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "htssafe.h"
|
||||
|
||||
/* Memory allocation assertion failure */
|
||||
static void hts_record_assert_memory_failed(const size_t size) {
|
||||
fprintf(stderr, "memory allocation failed (%lu bytes)", \
|
||||
(long int) size); \
|
||||
assertf(! "memory allocation failed"); \
|
||||
}
|
||||
|
||||
/** Dynamic array of T elements. **/
|
||||
#define TypedArray(T) \
|
||||
struct { \
|
||||
/** Elements. **/ \
|
||||
union { \
|
||||
/** Typed. **/ \
|
||||
T* elts; \
|
||||
/** Opaque. **/ \
|
||||
void* ptr; \
|
||||
} data; \
|
||||
/** Count. **/ \
|
||||
size_t size; \
|
||||
/** Capacity. **/ \
|
||||
size_t capa; \
|
||||
}
|
||||
#define EMPTY_TYPED_ARRAY { { NULL }, 0, 0 }
|
||||
|
||||
/** Array size, in elements. **/
|
||||
#define TypedArraySize(A) ((A).size)
|
||||
|
||||
/** Array capacity, in elements. **/
|
||||
#define TypedArrayCapa(A) ((A).capa)
|
||||
|
||||
/**
|
||||
* Remaining free space, in elements.
|
||||
* Macro, first element evaluated multiple times.
|
||||
**/
|
||||
#define TypedArrayRoom(A) ( TypedArrayCapa(A) - TypedArraySize(A) )
|
||||
|
||||
/** Array elements, of type T*. **/
|
||||
#define TypedArrayElts(A) ((A).data.elts)
|
||||
|
||||
/** Array pointer, of type void*. **/
|
||||
#define TypedArrayPtr(A) ((A).data.ptr)
|
||||
|
||||
/** Size of T. **/
|
||||
#define TypedArrayWidth(A) (sizeof(*TypedArrayElts(A)))
|
||||
|
||||
/** Nth element of the array. **/
|
||||
#define TypedArrayNth(A, N) (TypedArrayElts(A)[N])
|
||||
|
||||
/**
|
||||
* Tail of the array (outside the array).
|
||||
* The returned pointer points to the beginning of TypedArrayRoom(A)
|
||||
* free elements.
|
||||
**/
|
||||
#define TypedArrayTail(A) (TypedArrayNth(A, TypedArraySize(A)))
|
||||
|
||||
/**
|
||||
* Ensure at least 'ROOM' elements can be put in the remaining space.
|
||||
* After a call to this macro, TypedArrayRoom(A) is guaranteed to be at
|
||||
* least equal to 'ROOM'.
|
||||
**/
|
||||
#define TypedArrayEnsureRoom(A, ROOM) do { \
|
||||
const size_t room_ = (ROOM); \
|
||||
while (TypedArrayRoom(A) < room_) { \
|
||||
TypedArrayCapa(A) = TypedArrayCapa(A) < 16 ? 16 : TypedArrayCapa(A) * 2; \
|
||||
} \
|
||||
TypedArrayPtr(A) = realloc(TypedArrayPtr(A), \
|
||||
TypedArrayCapa(A)*TypedArrayWidth(A)); \
|
||||
if (TypedArrayPtr(A) == NULL) { \
|
||||
hts_record_assert_memory_failed(TypedArrayCapa(A)*TypedArrayWidth(A)); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
/** Add an element. Macro, first element evaluated multiple times. **/
|
||||
#define TypedArrayAdd(A, E) do { \
|
||||
TypedArrayEnsureRoom(A, 1); \
|
||||
assertf(TypedArraySize(A) < TypedArrayCapa(A)); \
|
||||
TypedArrayTail(A) = (E); \
|
||||
TypedArraySize(A)++; \
|
||||
} while(0)
|
||||
|
||||
/**
|
||||
* Add 'COUNT' elements from 'PTR'.
|
||||
* Macro, first element evaluated multiple times.
|
||||
**/
|
||||
#define TypedArrayAppend(A, PTR, COUNT) do { \
|
||||
const size_t count_ = (COUNT); \
|
||||
/* This 1-case is to benefit from type safety. */ \
|
||||
if (count_ == 1) { \
|
||||
TypedArrayAdd(A, *(PTR)); \
|
||||
} else { \
|
||||
const void *const source_ = (PTR); \
|
||||
TypedArrayEnsureRoom(A, count_); \
|
||||
assertf(count_ <= TypedArrayRoom(A)); \
|
||||
memcpy(&TypedArrayTail(A), source_, count_ * TypedArrayWidth(A)); \
|
||||
TypedArraySize(A) += count_; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
/** Clear an array, freeing memory and clearing size and capacity. **/
|
||||
#define TypedArrayFree(A) do { \
|
||||
if (TypedArrayPtr(A) != NULL) { \
|
||||
TypedArrayCapa(A) = TypedArraySize(A) = 0; \
|
||||
free(TypedArrayPtr(A)); \
|
||||
TypedArrayPtr(A) = NULL; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#endif
|
||||
202
src/htsback.c
202
src/htsback.c
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -67,15 +67,17 @@ static int slot_can_be_cached_on_disk(const lien_back * back);
|
||||
static int slot_can_be_cleaned(const lien_back * back);
|
||||
static int slot_can_be_finalized(httrackp * opt, const lien_back * back);
|
||||
|
||||
struct_back *back_new(int back_max) {
|
||||
struct_back *back_new(httrackp *opt, int back_max) {
|
||||
int i;
|
||||
struct_back *sback = calloct(1, sizeof(struct_back));
|
||||
|
||||
sback->count = back_max;
|
||||
sback->lnk = (lien_back *) calloct((back_max + 1), sizeof(lien_back));
|
||||
sback->ready = inthash_new(0);
|
||||
sback->ready = coucal_new(0);
|
||||
hts_set_hash_handler(sback->ready, opt);
|
||||
coucal_set_name(sback->ready, "back_new");
|
||||
sback->ready_size_bytes = 0;
|
||||
inthash_value_is_malloc(sback->ready, 1);
|
||||
coucal_value_is_malloc(sback->ready, 1);
|
||||
// init
|
||||
for(i = 0; i < sback->count; i++) {
|
||||
sback->lnk[i].r.location = sback->lnk[i].location_buffer;
|
||||
@@ -92,7 +94,7 @@ void back_free(struct_back ** sback) {
|
||||
(*sback)->lnk = NULL;
|
||||
}
|
||||
if ((*sback)->ready != NULL) {
|
||||
inthash_delete(&(*sback)->ready);
|
||||
coucal_delete(&(*sback)->ready);
|
||||
(*sback)->ready_size_bytes = 0;
|
||||
}
|
||||
freet(*sback);
|
||||
@@ -110,12 +112,12 @@ void back_delete_all(httrackp * opt, cache_back * cache, struct_back * sback) {
|
||||
}
|
||||
// delete stored slots
|
||||
if (sback->ready != NULL) {
|
||||
struct_inthash_enum e = inthash_enum_new(sback->ready);
|
||||
inthash_chain *item;
|
||||
struct_coucal_enum e = coucal_enum_new(sback->ready);
|
||||
coucal_item *item;
|
||||
|
||||
while((item = inthash_enum_next(&e))) {
|
||||
while((item = coucal_enum_next(&e))) {
|
||||
#ifndef HTS_NO_BACK_ON_DISK
|
||||
char *filename = (char *) item->value.ptr;
|
||||
const char *filename = (char *) item->value.ptr;
|
||||
|
||||
if (filename != NULL) {
|
||||
(void) UNLINK(filename);
|
||||
@@ -128,7 +130,7 @@ void back_delete_all(httrackp * opt, cache_back * cache, struct_back * sback) {
|
||||
#endif
|
||||
}
|
||||
/* delete hashtable & content */
|
||||
inthash_delete(&sback->ready);
|
||||
coucal_delete(&sback->ready);
|
||||
sback->ready_size_bytes = 0;
|
||||
}
|
||||
}
|
||||
@@ -137,19 +139,19 @@ void back_delete_all(httrackp * opt, cache_back * cache, struct_back * sback) {
|
||||
// ---
|
||||
// routines de backing
|
||||
|
||||
static int back_index_ready(httrackp * opt, struct_back * sback, char *adr,
|
||||
char *fil, char *sav, int getIndex);
|
||||
static int back_index_fetch(httrackp * opt, struct_back * sback, char *adr,
|
||||
char *fil, char *sav, int getIndex);
|
||||
static int back_index_ready(httrackp * opt, struct_back * sback, const char *adr,
|
||||
const char *fil, const char *sav, int getIndex);
|
||||
static int back_index_fetch(httrackp * opt, struct_back * sback, const char *adr,
|
||||
const char *fil, const char *sav, int getIndex);
|
||||
|
||||
// retourne l'index d'un lien dans un tableau de backing
|
||||
int back_index(httrackp * opt, struct_back * sback, char *adr, char *fil,
|
||||
char *sav) {
|
||||
int back_index(httrackp * opt, struct_back * sback, const char *adr, const char *fil,
|
||||
const char *sav) {
|
||||
return back_index_fetch(opt, sback, adr, fil, sav, 1);
|
||||
}
|
||||
|
||||
static int back_index_fetch(httrackp * opt, struct_back * sback, char *adr,
|
||||
char *fil, char *sav, int getIndex) {
|
||||
static int back_index_fetch(httrackp * opt, struct_back * sback, const char *adr,
|
||||
const char *fil, const char *sav, int getIndex) {
|
||||
lien_back *const back = sback->lnk;
|
||||
const int back_max = sback->count;
|
||||
int index = -1;
|
||||
@@ -175,12 +177,12 @@ static int back_index_fetch(httrackp * opt, struct_back * sback, char *adr,
|
||||
}
|
||||
|
||||
/* resurrect stored entry */
|
||||
static int back_index_ready(httrackp * opt, struct_back * sback, char *adr,
|
||||
char *fil, char *sav, int getIndex) {
|
||||
static int back_index_ready(httrackp * opt, struct_back * sback, const char *adr,
|
||||
const char *fil, const char *sav, int getIndex) {
|
||||
lien_back *const back = sback->lnk;
|
||||
void *ptr = NULL;
|
||||
|
||||
if (inthash_read_pvoid(sback->ready, sav, &ptr)) {
|
||||
if (coucal_read_pvoid(sback->ready, sav, &ptr)) {
|
||||
if (!getIndex) { /* don't "pagefault" the entry */
|
||||
if (ptr != NULL) {
|
||||
return sback->count; /* (invalid but) positive result */
|
||||
@@ -192,10 +194,10 @@ static int back_index_ready(httrackp * opt, struct_back * sback, char *adr,
|
||||
|
||||
#ifndef HTS_NO_BACK_ON_DISK
|
||||
FILE *fp;
|
||||
char *fileback = (char *) ptr;
|
||||
const char *fileback = (char *) ptr;
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
|
||||
if ((fp = FOPEN(fconv(catbuff, fileback), "rb")) != NULL) {
|
||||
if ((fp = FOPEN(fconv(catbuff, sizeof(catbuff), fileback), "rb")) != NULL) {
|
||||
if (back_unserialize(fp, &itemback) != 0) {
|
||||
if (itemback != NULL) {
|
||||
back_clear_entry(itemback);
|
||||
@@ -226,7 +228,7 @@ static int back_index_ready(httrackp * opt, struct_back * sback, char *adr,
|
||||
back_clear_entry(itemback); /* delete entry content */
|
||||
freet(itemback); /* delete item */
|
||||
itemback = NULL;
|
||||
inthash_remove(sback->ready, sav); // delete item
|
||||
coucal_remove(sback->ready, sav); // delete item
|
||||
sback->ready_size_bytes -= back[q].r.size; /* substract for stats */
|
||||
back_set_locked(sback, q); /* locked */
|
||||
return q;
|
||||
@@ -307,7 +309,7 @@ int back_cleanup_background(httrackp * opt, cache_back * cache,
|
||||
/* Create file and serialize slot */
|
||||
if ((fp = filecreate(NULL, filename)) != NULL) {
|
||||
if (back_serialize(fp, &back[i]) == 0) {
|
||||
inthash_add_pvoid(sback->ready, back[i].url_sav, filename);
|
||||
coucal_add_pvoid(sback->ready, back[i].url_sav, filename);
|
||||
filename = NULL;
|
||||
sback->ready_size_bytes += back[i].r.size; /* add for stats */
|
||||
nclean++;
|
||||
@@ -338,7 +340,7 @@ int back_cleanup_background(httrackp * opt, cache_back * cache,
|
||||
#else
|
||||
itemback = calloct(1, sizeof(lien_back));
|
||||
back_move(&back[i], itemback);
|
||||
inthash_add_pvoid(sback->ready, itemback->url_sav, itemback);
|
||||
coucal_add_pvoid(sback->ready, itemback->url_sav, itemback);
|
||||
nclean++;
|
||||
#endif
|
||||
}
|
||||
@@ -347,8 +349,8 @@ int back_cleanup_background(httrackp * opt, cache_back * cache,
|
||||
}
|
||||
|
||||
// nombre d'entrées libres dans le backing
|
||||
int back_available(struct_back * sback) {
|
||||
lien_back *const back = sback->lnk;
|
||||
int back_available(const struct_back * sback) {
|
||||
const lien_back *const back = sback->lnk;
|
||||
const int back_max = sback->count;
|
||||
int i;
|
||||
int nb = 0;
|
||||
@@ -360,8 +362,8 @@ int back_available(struct_back * sback) {
|
||||
}
|
||||
|
||||
// retourne estimation de la taille des html et fichiers stockés en mémoire
|
||||
LLint back_incache(struct_back * sback) {
|
||||
lien_back *const back = sback->lnk;
|
||||
LLint back_incache(const struct_back * sback) {
|
||||
const lien_back *const back = sback->lnk;
|
||||
const int back_max = sback->count;
|
||||
int i;
|
||||
LLint sum = 0;
|
||||
@@ -373,10 +375,10 @@ LLint back_incache(struct_back * sback) {
|
||||
// stored (ready) slots
|
||||
#ifdef HTS_NO_BACK_ON_DISK
|
||||
if (sback->ready != NULL) {
|
||||
struct_inthash_enum e = inthash_enum_new(sback->ready);
|
||||
inthash_chain *item;
|
||||
struct_coucal_enum e = coucal_enum_new(sback->ready);
|
||||
coucal_item *item;
|
||||
|
||||
while((item = inthash_enum_next(&e))) {
|
||||
while((item = coucal_enum_next(&e))) {
|
||||
lien_back *ritem = (lien_back *) item->value.ptr;
|
||||
|
||||
if (ritem->status != -1)
|
||||
@@ -389,8 +391,8 @@ LLint back_incache(struct_back * sback) {
|
||||
}
|
||||
|
||||
// retourne estimation de la taille des html et fichiers stockés en mémoire
|
||||
int back_done_incache(struct_back * sback) {
|
||||
lien_back *const back = sback->lnk;
|
||||
int back_done_incache(const struct_back * sback) {
|
||||
const lien_back *const back = sback->lnk;
|
||||
const int back_max = sback->count;
|
||||
int i;
|
||||
int n = 0;
|
||||
@@ -401,12 +403,12 @@ int back_done_incache(struct_back * sback) {
|
||||
// stored (ready) slots
|
||||
if (sback->ready != NULL) {
|
||||
#ifndef HTS_NO_BACK_ON_DISK
|
||||
n += (int) inthash_nitems(sback->ready);
|
||||
n += (int) coucal_nitems(sback->ready);
|
||||
#else
|
||||
struct_inthash_enum e = inthash_enum_new(sback->ready);
|
||||
inthash_chain *item;
|
||||
struct_coucal_enum e = coucal_enum_new(sback->ready);
|
||||
coucal_item *item;
|
||||
|
||||
while((item = inthash_enum_next(&e))) {
|
||||
while((item = coucal_enum_next(&e))) {
|
||||
lien_back *ritem = (lien_back *) item->value.ptr;
|
||||
|
||||
if (ritem->status == STATUS_READY)
|
||||
@@ -418,14 +420,14 @@ int back_done_incache(struct_back * sback) {
|
||||
}
|
||||
|
||||
// le lien a-t-il été mis en backing?
|
||||
HTS_INLINE int back_exist(struct_back * sback, httrackp * opt, char *adr,
|
||||
char *fil, char *sav) {
|
||||
HTS_INLINE int back_exist(struct_back * sback, httrackp * opt, const char *adr,
|
||||
const char *fil, const char *sav) {
|
||||
return (back_index_fetch(opt, sback, adr, fil, sav, /*don't fetch */ 0) >= 0);
|
||||
}
|
||||
|
||||
// nombre de sockets en tâche de fond
|
||||
int back_nsoc(struct_back * sback) {
|
||||
lien_back *const back = sback->lnk;
|
||||
int back_nsoc(const struct_back * sback) {
|
||||
const lien_back *const back = sback->lnk;
|
||||
const int back_max = sback->count;
|
||||
int n = 0;
|
||||
int i;
|
||||
@@ -436,8 +438,8 @@ int back_nsoc(struct_back * sback) {
|
||||
|
||||
return n;
|
||||
}
|
||||
int back_nsoc_overall(struct_back * sback) {
|
||||
lien_back *const back = sback->lnk;
|
||||
int back_nsoc_overall(const struct_back * sback) {
|
||||
const lien_back *const back = sback->lnk;
|
||||
const int back_max = sback->count;
|
||||
int n = 0;
|
||||
int i;
|
||||
@@ -513,7 +515,7 @@ int back_finalize(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
&& (back[p].r.statuscode > 0) // not internal error
|
||||
) {
|
||||
if (!back[p].testmode) { // not test mode
|
||||
char *state = "unknown";
|
||||
const char *state = "unknown";
|
||||
|
||||
/* décompression */
|
||||
#if HTS_USEZLIB
|
||||
@@ -526,7 +528,7 @@ int back_finalize(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
if (!back[p].r.is_write) {
|
||||
// do not use tempnam() but a regular filename
|
||||
if (create_back_tmpfile(opt, &back[p]) == 0) {
|
||||
assert(back[p].tmpfile != NULL);
|
||||
assertf(back[p].tmpfile != NULL);
|
||||
/* note: tmpfile is utf-8 */
|
||||
back[p].r.out = FOPEN(back[p].tmpfile, "wb");
|
||||
if (back[p].r.out) {
|
||||
@@ -624,7 +626,7 @@ int back_finalize(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
FILE *fp = FOPEN(back[p].url_sav, "rb");
|
||||
|
||||
if (fp) {
|
||||
back[p].r.adr = malloct((int) sz + 2);
|
||||
back[p].r.adr = malloct((size_t) sz + 1);
|
||||
if (back[p].r.adr) {
|
||||
if (fread(back[p].r.adr, 1, sz, fp) == sz) {
|
||||
back[p].r.size = sz;
|
||||
@@ -640,7 +642,7 @@ int back_finalize(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
fclose(fp);
|
||||
fp = NULL;
|
||||
// remove (temporary) file!
|
||||
UNLINK(fconv(catbuff, back[p].url_sav));
|
||||
UNLINK(fconv(catbuff, sizeof(catbuff), back[p].url_sav));
|
||||
}
|
||||
if (fp)
|
||||
fclose(fp);
|
||||
@@ -664,7 +666,7 @@ int back_finalize(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
if (A == NULL) {
|
||||
int localtime_returned_null = 0;
|
||||
|
||||
assert(localtime_returned_null);
|
||||
assertf(localtime_returned_null);
|
||||
}
|
||||
strftime(s, 250, "%H:%M:%S", A);
|
||||
|
||||
@@ -765,27 +767,27 @@ int back_finalize(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
}
|
||||
}
|
||||
if (cache->txt) {
|
||||
#undef ESC_URL
|
||||
#define ESC_URL(S) escape_check_url_addr(S, OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt))
|
||||
fprintf(cache->txt,
|
||||
"%d\t" "%s ('%s')\t" "%s\t" "%s%s\t" "%s%s%s\t%s\t"
|
||||
"(from %s%s%s)" LF, back[p].r.statuscode, state,
|
||||
escape_check_url_addr(OPT_GET_BUFF(opt), back[p].r.msg),
|
||||
escape_check_url_addr(OPT_GET_BUFF(opt),
|
||||
back[p].r.contenttype),
|
||||
((back[p].r.
|
||||
etag[0]) ? "etag:" : ((back[p].r.
|
||||
ESC_URL(back[p].r.msg),
|
||||
ESC_URL(back[p].r.contenttype),
|
||||
((back[p].r.etag[0]) ? "etag:" : ((back[p].r.
|
||||
lastmodified[0]) ? "date:" : "")),
|
||||
escape_check_url_addr(OPT_GET_BUFF(opt),
|
||||
(back[p].r.etag[0]) ? back[p].r.
|
||||
ESC_URL((back[p].r.etag[0]) ? back[p].r.
|
||||
etag : (back[p].r.lastmodified)),
|
||||
(link_has_authority(back[p].url_adr) ? "" : "http://"),
|
||||
escape_check_url_addr(OPT_GET_BUFF(opt), back[p].url_adr),
|
||||
escape_check_url_addr(OPT_GET_BUFF(opt), back[p].url_fil),
|
||||
escape_check_url_addr(OPT_GET_BUFF(opt), back[p].url_sav),
|
||||
ESC_URL(back[p].url_adr),
|
||||
ESC_URL(back[p].url_fil),
|
||||
ESC_URL(back[p].url_sav),
|
||||
(link_has_authority(back[p].referer_adr)
|
||||
|| !back[p].referer_adr[0]) ? "" : "http://",
|
||||
escape_check_url_addr(OPT_GET_BUFF(opt), back[p].referer_adr),
|
||||
escape_check_url_addr(OPT_GET_BUFF(opt), back[p].referer_fil)
|
||||
ESC_URL(back[p].referer_adr),
|
||||
ESC_URL(back[p].referer_fil)
|
||||
);
|
||||
#undef ESC_URL
|
||||
if (opt->flush)
|
||||
fflush(cache->txt);
|
||||
}
|
||||
@@ -969,27 +971,28 @@ int back_unserialize(FILE * fp, lien_back ** dst) {
|
||||
if ((*dst)->r.adr != NULL)
|
||||
freet((*dst)->r.adr);
|
||||
}
|
||||
if (dst != NULL)
|
||||
freet(dst);
|
||||
*dst = NULL;
|
||||
if (dst != NULL) {
|
||||
freet(*dst);
|
||||
*dst = NULL;
|
||||
}
|
||||
return 1; /* error */
|
||||
}
|
||||
|
||||
/* serialize a reference ; used to store references of files being downloaded in case of broken download */
|
||||
/* Note: NOT utf-8 */
|
||||
int back_serialize_ref(httrackp * opt, const lien_back * src) {
|
||||
char *filename =
|
||||
const 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))
|
||||
(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), CACHE_REFNAME))
|
||||
== 0)
|
||||
#else
|
||||
if (mkdir
|
||||
(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), CACHE_REFNAME),
|
||||
(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), CACHE_REFNAME),
|
||||
S_IRWXU | S_IRWXG | S_IRWXO) == 0)
|
||||
#endif
|
||||
{
|
||||
@@ -1010,7 +1013,7 @@ int back_serialize_ref(httrackp * opt, const lien_back * src) {
|
||||
/* 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);
|
||||
const char *filename = url_savename_refname_fullpath(opt, adr, fil);
|
||||
FILE *fp = FOPEN(filename, "rb");
|
||||
|
||||
if (fp != NULL) {
|
||||
@@ -1058,7 +1061,7 @@ int back_maydelete(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
strcpybuff(back[p].url_adr, tmp.url_adr);
|
||||
back[p].ka_time_start = tmp.ka_time_start;
|
||||
back[p].status = STATUS_ALIVE; // alive & waiting
|
||||
assert(back[p].ka_time_start != 0);
|
||||
assertf(back[p].ka_time_start != 0);
|
||||
hts_log_print(opt, LOG_DEBUG,
|
||||
"(Keep-Alive): successfully saved #%d (%s)",
|
||||
back[p].r.debugid, back[p].url_adr);
|
||||
@@ -1112,7 +1115,7 @@ void back_maydeletehttp(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
strcpybuff(back[q].url_adr, tmp.url_adr); // address
|
||||
back[q].ka_time_start = tmp.ka_time_start;
|
||||
back[q].status = STATUS_ALIVE; // alive & waiting
|
||||
assert(back[q].ka_time_start != 0);
|
||||
assertf(back[q].ka_time_start != 0);
|
||||
hts_log_print(opt, LOG_DEBUG,
|
||||
"(Keep-Alive): successfully preserved #%d (%s)",
|
||||
back[q].r.debugid, back[q].url_adr);
|
||||
@@ -1146,7 +1149,7 @@ int back_trylive(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
}
|
||||
|
||||
/* search for a live position, or, if not possible, try to return a new one */
|
||||
int back_searchlive(httrackp * opt, struct_back * sback, char *search_addr) {
|
||||
int back_searchlive(httrackp * opt, struct_back * sback, const char *search_addr) {
|
||||
lien_back *const back = sback->lnk;
|
||||
const int back_max = sback->count;
|
||||
int i;
|
||||
@@ -1398,8 +1401,8 @@ int back_stack_available(struct_back * sback) {
|
||||
|
||||
// ajouter un lien en backing
|
||||
int back_add_if_not_exists(struct_back * sback, httrackp * opt,
|
||||
cache_back * cache, char *adr, char *fil, char *save,
|
||||
char *referer_adr, char *referer_fil, int test) {
|
||||
cache_back * cache, const char *adr, const char *fil, const char *save,
|
||||
const char *referer_adr, const char *referer_fil, int test) {
|
||||
back_clean(opt, cache, sback); /* first cleanup the backlog to ensure that we have some entry left */
|
||||
if (!back_exist(sback, opt, adr, fil, save)) {
|
||||
return back_add(sback, opt, cache, adr, fil, save, referer_adr, referer_fil,
|
||||
@@ -1408,8 +1411,8 @@ int back_add_if_not_exists(struct_back * sback, httrackp * opt,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr,
|
||||
char *fil, char *save, char *referer_adr, char *referer_fil,
|
||||
int back_add(struct_back * sback, httrackp * opt, cache_back * cache, const char *adr,
|
||||
const char *fil, const char *save, const char *referer_adr, const char *referer_fil,
|
||||
int test) {
|
||||
lien_back *const back = sback->lnk;
|
||||
const int back_max = sback->count;
|
||||
@@ -1504,7 +1507,8 @@ int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr,
|
||||
if (cache->cached_tests != NULL) {
|
||||
intptr_t ptr = 0;
|
||||
|
||||
if (inthash_read(cache->cached_tests, concat(OPT_GET_BUFF(opt), adr, fil), &ptr)) { // gotcha
|
||||
if (coucal_read(cache->cached_tests,
|
||||
concat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), adr, fil), &ptr)) { // gotcha
|
||||
if (ptr != 0) {
|
||||
char *text = (char *) ptr;
|
||||
char *lf = strchr(text, '\n');
|
||||
@@ -1541,7 +1545,7 @@ int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr,
|
||||
#if HTS_FAST_CACHE
|
||||
strcpybuff(buff, adr);
|
||||
strcatbuff(buff, fil);
|
||||
hash_pos_return = inthash_read(cache->hashtable, buff, &hash_pos);
|
||||
hash_pos_return = coucal_read(cache->hashtable, buff, &hash_pos);
|
||||
#else
|
||||
buff[0] = '\0';
|
||||
strcatbuff(buff, "\n");
|
||||
@@ -1571,7 +1575,7 @@ int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr,
|
||||
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 (save[0] != '\0' && !IS_DELAYED_EXT(save) && fsize_utf8(fconv(catbuff, save)) <= 0) { // fichier final n'existe pas ou est vide!
|
||||
if (save[0] != '\0' && !IS_DELAYED_EXT(save) && fsize_utf8(fconv(catbuff, sizeof(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 */
|
||||
@@ -1589,10 +1593,10 @@ int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr,
|
||||
if (r.is_write && previous_save[0] != '\0') {
|
||||
/* Exists, but with another (old) filename: rename (almost) silently */
|
||||
if (strcmp(previous_save, save) != 0
|
||||
&& fexist_utf8(fconv(catbuff, previous_save))) {
|
||||
rename(fconv(catbuff, previous_save),
|
||||
fconv(catbuff2, save));
|
||||
if (fexist_utf8(fconv(catbuff, save))) {
|
||||
&& fexist_utf8(fconv(catbuff, sizeof(catbuff), previous_save))) {
|
||||
rename(fconv(catbuff, sizeof(catbuff), previous_save),
|
||||
fconv(catbuff2, sizeof(catbuff2), save));
|
||||
if (fexist_utf8(fconv(catbuff, sizeof(catbuff), save))) {
|
||||
found = 1;
|
||||
hts_log_print(opt, LOG_DEBUG,
|
||||
"File '%s' has been renamed since last mirror to '%s' ; applying changes",
|
||||
@@ -1618,8 +1622,8 @@ int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr,
|
||||
// sinon, le fichier est ok à priori, mais on renverra un if-modified-since pour
|
||||
// en être sûr
|
||||
if (opt->norecatch) { // tester norecatch
|
||||
if (!fexist_utf8(fconv(catbuff, save))) { // fichier existe pas mais déclaré: on l'a effacé
|
||||
FILE *fp = FOPEN(fconv(catbuff, save), "wb");
|
||||
if (!fexist_utf8(fconv(catbuff, sizeof(catbuff), save))) { // fichier existe pas mais déclaré: on l'a effacé
|
||||
FILE *fp = FOPEN(fconv(catbuff, sizeof(catbuff), save), "wb");
|
||||
|
||||
if (fp)
|
||||
fclose(fp);
|
||||
@@ -1971,7 +1975,7 @@ int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr,
|
||||
printf("ok, dns cache ready..\n");
|
||||
#endif
|
||||
soc =
|
||||
http_xfopen(opt, 0, 0, 0, back[p].send_too, adr, fil, &(back[p].r));
|
||||
http_xfopen(opt, 0, 0, 0, back[p].send_too, adr, fil, &back[p].r);
|
||||
if (soc == INVALID_SOCKET) {
|
||||
back[p].status = STATUS_READY; // fini, erreur
|
||||
back_set_finished(sback, p);
|
||||
@@ -2128,7 +2132,7 @@ void back_solve(httrackp * opt, lien_back * back) {
|
||||
else
|
||||
a = back->r.req.proxy.name;
|
||||
assertf(a != NULL);
|
||||
a = jump_protocol(a);
|
||||
a = jump_protocol_const(a);
|
||||
if (check_hostname_dns(a)) {
|
||||
hts_log_print(opt, LOG_DEBUG, "resolved: %s", a);
|
||||
} else {
|
||||
@@ -2260,7 +2264,7 @@ void back_clean(httrackp * opt, cache_back * cache, struct_back * sback) {
|
||||
} else if (back[i].r.keep_alive_max < 1) {
|
||||
reason = "keep-alive-max reached";
|
||||
} else if (time_local() >= back[i].ka_time_start + back[i].r.keep_alive_t) {
|
||||
assert(back[i].ka_time_start != 0);
|
||||
assertf(back[i].ka_time_start != 0);
|
||||
snprintf(buffer, sizeof(buffer), "keep-alive timeout = %ds)",
|
||||
(int) back[i].r.keep_alive_t);
|
||||
reason = buffer;
|
||||
@@ -2455,7 +2459,7 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
#if HTS_WIDE_DEBUG
|
||||
DEBUG_W("select\n");
|
||||
#endif
|
||||
select(nfds, &fds, &fds_c, &fds_e, &tv);
|
||||
select((int) nfds, &fds, &fds_c, &fds_e, &tv);
|
||||
#if HTS_WIDE_DEBUG
|
||||
DEBUG_W("select done\n");
|
||||
#endif
|
||||
@@ -2533,7 +2537,7 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
back[i].r.ssl_con = SSL_new(openssl_ctx);
|
||||
if (back[i].r.ssl_con) {
|
||||
SSL_clear(back[i].r.ssl_con);
|
||||
if (SSL_set_fd(back[i].r.ssl_con, back[i].r.soc) == 1) {
|
||||
if (SSL_set_fd(back[i].r.ssl_con, (int) back[i].r.soc) == 1) {
|
||||
SSL_set_connect_state(back[i].r.ssl_con);
|
||||
back[i].status = STATUS_SSL_WAIT_HANDSHAKE; /* handshake wait */
|
||||
} else
|
||||
@@ -2777,11 +2781,11 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
back[i].r.is_write = 1; // écrire
|
||||
if (back[i].r.compressed &&
|
||||
/* .gz are *NOT* depacked!! */
|
||||
(strfield
|
||||
(get_ext(catbuff, back[i].url_sav), "gz") == 0)
|
||||
strfield(get_ext(catbuff, sizeof(catbuff), back[i].url_sav), "gz") == 0
|
||||
&& strfield(get_ext(catbuff, sizeof(catbuff), back[i].url_sav), "tgz") == 0
|
||||
) {
|
||||
if (create_back_tmpfile(opt, &back[i]) == 0) {
|
||||
assert(back[i].tmpfile != NULL);
|
||||
assertf(back[i].tmpfile != NULL);
|
||||
/* note: tmpfile is utf-8 */
|
||||
if ((back[i].r.out =
|
||||
FOPEN(back[i].tmpfile, "wb")) == NULL) {
|
||||
@@ -3237,7 +3241,7 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
fprintf(ioinfo,
|
||||
"[%d] response for %s%s:\r\ncode=%d\r\n",
|
||||
back[i].r.debugid,
|
||||
jump_identification(back[i].url_adr),
|
||||
jump_identification_const(back[i].url_adr),
|
||||
back[i].url_fil, back[i].r.statuscode);
|
||||
fprintfio(ioinfo, back[i].r.adr, ">>> ");
|
||||
fprintf(ioinfo, "\r\n");
|
||||
@@ -3656,7 +3660,7 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
file_notify(opt, back[i].url_adr, back[i].url_fil,
|
||||
back[i].url_sav, 0, 1,
|
||||
back[i].r.notmodified);
|
||||
back[i].r.out = FOPEN(fconv(catbuff, back[i].url_sav), "ab"); // append
|
||||
back[i].r.out = FOPEN(fconv(catbuff, sizeof(catbuff), back[i].url_sav), "ab"); // append
|
||||
if (back[i].r.out && opt->cache != 0) {
|
||||
back[i].r.is_write = 1; // écrire
|
||||
back[i].r.size = sz; // déja écrit
|
||||
@@ -3682,7 +3686,7 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
}
|
||||
} else { // mémoire
|
||||
FILE *fp =
|
||||
FOPEN(fconv(catbuff, back[i].url_sav), "rb");
|
||||
FOPEN(fconv(catbuff, sizeof(catbuff), back[i].url_sav), "rb");
|
||||
if (fp) {
|
||||
LLint alloc_mem = sz + 1;
|
||||
|
||||
@@ -3975,10 +3979,10 @@ LLint back_transferred(LLint nb, struct_back * sback) {
|
||||
#ifndef HTS_NO_BACK_ON_DISK
|
||||
nb += sback->ready_size_bytes;
|
||||
#else
|
||||
struct_inthash_enum e = inthash_enum_new(sback->ready);
|
||||
inthash_chain *item;
|
||||
struct_coucal_enum e = coucal_enum_new(sback->ready);
|
||||
coucal_item *item;
|
||||
|
||||
while((item = inthash_enum_next(&e))) {
|
||||
while((item = coucal_enum_next(&e))) {
|
||||
lien_back *ritem = (lien_back *) item->value.ptr;
|
||||
|
||||
if ((ritem->status > 0) && (ritem->status < 99 || ritem->status >= 1000))
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -68,27 +68,27 @@ typedef struct htsblk htsblk;
|
||||
#ifdef HTS_INTERNAL_BYTECODE
|
||||
|
||||
// create/destroy
|
||||
struct_back *back_new(int back_max);
|
||||
struct_back *back_new(httrackp *opt, int back_max);
|
||||
void back_free(struct_back ** sback);
|
||||
|
||||
// backing
|
||||
#define BACK_ADD_TEST "(dummy)"
|
||||
#define BACK_ADD_TEST2 "(dummy2)"
|
||||
int back_index(httrackp * opt, struct_back * sback, char *adr, char *fil,
|
||||
char *sav);
|
||||
int back_available(struct_back * sback);
|
||||
LLint back_incache(struct_back * sback);
|
||||
int back_done_incache(struct_back * sback);
|
||||
HTS_INLINE int back_exist(struct_back * sback, httrackp * opt, char *adr,
|
||||
char *fil, char *sav);
|
||||
int back_nsoc(struct_back * sback);
|
||||
int back_nsoc_overall(struct_back * sback);
|
||||
int back_add(struct_back * sback, httrackp * opt, cache_back * cache, char *adr,
|
||||
char *fil, char *save, char *referer_adr, char *referer_fil,
|
||||
int back_index(httrackp * opt, struct_back * sback, const char *adr, const char *fil,
|
||||
const char *sav);
|
||||
int back_available(const struct_back * sback);
|
||||
LLint back_incache(const struct_back * sback);
|
||||
int back_done_incache(const struct_back * sback);
|
||||
HTS_INLINE int back_exist(struct_back * sback, httrackp * opt, const char *adr,
|
||||
const char *fil, const char *sav);
|
||||
int back_nsoc(const struct_back * sback);
|
||||
int back_nsoc_overall(const struct_back * sback);
|
||||
int back_add(struct_back * sback, httrackp * opt, cache_back * cache, const char *adr,
|
||||
const char *fil, const char *save, const char *referer_adr, const char *referer_fil,
|
||||
int test);
|
||||
int back_add_if_not_exists(struct_back * sback, httrackp * opt,
|
||||
cache_back * cache, char *adr, char *fil, char *save,
|
||||
char *referer_adr, char *referer_fil, int test);
|
||||
cache_back * cache, const char *adr, const char *fil, const char *save,
|
||||
const char *referer_adr, const char *referer_fil, int test);
|
||||
int back_stack_available(struct_back * sback);
|
||||
int back_search(httrackp * opt, struct_back * sback);
|
||||
int back_search_quick(struct_back * sback);
|
||||
@@ -99,7 +99,7 @@ void back_wait(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
TStamp stat_timestart);
|
||||
int back_letlive(httrackp * opt, cache_back * cache, struct_back * sback,
|
||||
const int p);
|
||||
int back_searchlive(httrackp * opt, struct_back * sback, char *search_addr);
|
||||
int back_searchlive(httrackp * opt, struct_back * sback, const char *search_addr);
|
||||
void back_connxfr(htsblk * src, htsblk * dst);
|
||||
void back_move(lien_back * src, lien_back * dst);
|
||||
void back_copy_static(const lien_back * src, lien_back * dst);
|
||||
|
||||
227
src/htsbase.h
227
src/htsbase.h
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -40,6 +40,7 @@ extern "C" {
|
||||
|
||||
#include "htsglobal.h"
|
||||
#include "htsstrings.h"
|
||||
#include "htssafe.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
@@ -106,230 +107,6 @@ extern "C" {
|
||||
#define DynamicGet(handle, sym) dlsym(handle, sym)
|
||||
#endif
|
||||
|
||||
// emergency log
|
||||
typedef void (*t_abortLog) (char *msg, char *file, int line);
|
||||
extern HTSEXT_API t_abortLog abortLog__;
|
||||
#define abortLog(a) abortLog__(a, __FILE__, __LINE__)
|
||||
#define _ ,
|
||||
#define abortLogFmt(a) do { \
|
||||
FILE* fp = fopen("CRASH.TXT", "wb"); \
|
||||
if (!fp) fp = fopen("/tmp/CRASH.TXT", "wb"); \
|
||||
if (!fp) fp = fopen("C:\\CRASH.TXT", "wb"); \
|
||||
if (!fp) fp = fopen("\\Temp\\CRASH.TXT", "wb"); \
|
||||
if (!fp) fp = fopen("\\CRASH.TXT", "wb"); \
|
||||
if (!fp) fp = fopen("CRASH.TXT", "wb"); \
|
||||
if (fp) { \
|
||||
fprintf(fp, "HTTrack " HTTRACK_VERSIONID " closed at '" __FILE__ "', line %d\r\n", __LINE__); \
|
||||
fprintf(fp, "Reason:\r\n"); \
|
||||
fprintf(fp, a); \
|
||||
fprintf(fp, "\r\n"); \
|
||||
fflush(fp); \
|
||||
fclose(fp); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define assertf(exp) do { \
|
||||
if (! ( exp ) ) { \
|
||||
abortLog("assert failed: " #exp); \
|
||||
if (htsCallbackErr != NULL) { \
|
||||
htsCallbackErr("assert failed: " #exp, __FILE__ , __LINE__ ); \
|
||||
} \
|
||||
abort(); \
|
||||
} \
|
||||
} while(0)
|
||||
/* non-fatal assert */
|
||||
#define assertnf(exp) do { \
|
||||
if (! ( exp ) ) { \
|
||||
abortLog("assert failed: " #exp); \
|
||||
if (htsCallbackErr != NULL) { \
|
||||
htsCallbackErr("assert failed: " #exp, __FILE__ , __LINE__ ); \
|
||||
} \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
/* regular malloc's() */
|
||||
#ifndef HTS_TRACE_MALLOC
|
||||
#define malloct(A) malloc(A)
|
||||
#define calloct(A,B) calloc((A), (B))
|
||||
#define freet(A) do { assertnf((A) != NULL); if ((A) != NULL) { free(A); (A) = NULL; } } while(0)
|
||||
#define strdupt(A) strdup(A)
|
||||
#define realloct(A,B) ( ((A) != NULL) ? realloc((A), (B)) : malloc(B) )
|
||||
#define memcpybuff(A, B, N) memcpy((A), (B), (N))
|
||||
#else
|
||||
/* debug version */
|
||||
#define malloct(A) hts_malloc(A)
|
||||
#define calloct(A,B) hts_calloc(A,B)
|
||||
#define strdupt(A) hts_strdup(A)
|
||||
#define freet(A) do { hts_free(A); (A) = NULL; } while(0)
|
||||
#define realloct(A,B) hts_realloc(A,B)
|
||||
void hts_freeall();
|
||||
void *hts_malloc(size_t);
|
||||
void *hts_calloc(size_t, size_t);
|
||||
char *hts_strdup(char *);
|
||||
void *hts_xmalloc(size_t, size_t);
|
||||
void hts_free(void *);
|
||||
void *hts_realloc(void *, size_t);
|
||||
mlink *hts_find(char *adr);
|
||||
/* protected memcpy */
|
||||
#define memcpybuff(A, B, N) do { \
|
||||
mlink* lnk = hts_find((void*)(A)); \
|
||||
if (lnk != NULL) { \
|
||||
assertf(lnk != NULL); \
|
||||
assertf( * ( (t_htsboundary*) ( ((char*) lnk->adr) - sizeof(htsboundary) ) ) == htsboundary ); \
|
||||
assertf( * ( (t_htsboundary*) ( ((char*) lnk->adr) + lnk->len ) ) == htsboundary ); \
|
||||
assertf( ( ((char*)(A)) + (N)) < (char*) (lnk->adr + lnk->len) ); \
|
||||
} \
|
||||
memcpy(A, B, N); \
|
||||
} while(0)
|
||||
|
||||
#endif
|
||||
|
||||
typedef void (*htsErrorCallback) (char *msg, char *file, int line);
|
||||
extern HTSEXT_API htsErrorCallback htsCallbackErr;
|
||||
extern HTSEXT_API int htsMemoryFastXfr;
|
||||
|
||||
/*
|
||||
*/
|
||||
|
||||
#define stringdup()
|
||||
|
||||
#ifdef STRDEBUG
|
||||
|
||||
/* protected strcat, strncat and strcpy - definitely useful */
|
||||
#define strcatbuff(A, B) do { \
|
||||
assertf( (A) != NULL ); \
|
||||
assertf( (B) != NULL ); \
|
||||
if (htsMemoryFastXfr) { \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
(A)[sizeof(A) - 1] = '\0'; \
|
||||
} \
|
||||
strcat(A, B); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf((A)[sizeof(A) - 1] == '\0'); \
|
||||
} \
|
||||
} else { \
|
||||
unsigned int sz = (unsigned int) strlen(A); \
|
||||
unsigned int szf = (unsigned int) strlen(B); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf(sz + szf + 1 < sizeof(A)); \
|
||||
if (szf > 0) { \
|
||||
if (sz + szf + 1 < sizeof(A)) { \
|
||||
memcpy((A) + sz, (B), szf + 1); \
|
||||
} \
|
||||
} \
|
||||
} else if (szf > 0) { \
|
||||
memcpybuff((A) + sz, (B), szf + 1); \
|
||||
} \
|
||||
} \
|
||||
} while(0)
|
||||
#define strncatbuff(A, B, N) do { \
|
||||
assertf( (A) != NULL ); \
|
||||
assertf( (B) != NULL ); \
|
||||
if (htsMemoryFastXfr) { \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
(A)[sizeof(A) - 1] = '\0'; \
|
||||
} \
|
||||
strncat(A, B, N); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf((A)[sizeof(A) - 1] == '\0'); \
|
||||
} \
|
||||
} else { \
|
||||
unsigned int sz = (unsigned int) strlen(A); \
|
||||
unsigned int szf = (unsigned int) strlen(B); \
|
||||
if (szf > (unsigned int) (N)) szf = (unsigned int) (N); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf(sz + szf + 1 < sizeof(A)); \
|
||||
if (szf > 0) { \
|
||||
if (sz + szf + 1 < sizeof(A)) { \
|
||||
memcpy((A) + sz, (B), szf); \
|
||||
* ( (A) + sz + szf) = '\0'; \
|
||||
} \
|
||||
} \
|
||||
} else if (szf > 0) { \
|
||||
memcpybuff((A) + sz, (B), szf); \
|
||||
* ( (A) + sz + szf) = '\0'; \
|
||||
} \
|
||||
} \
|
||||
} while(0)
|
||||
#define strcpybuff(A, B) do { \
|
||||
assertf( (A) != NULL ); \
|
||||
assertf( (const char*) (B) != NULL ); \
|
||||
if (htsMemoryFastXfr) { \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
(A)[sizeof(A) - 1] = '\0'; \
|
||||
} \
|
||||
strcpy(A, B); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf((A)[sizeof(A) - 1] == '\0'); \
|
||||
} \
|
||||
} else { \
|
||||
unsigned int szf = (unsigned int) strlen(B); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf(szf + 1 < sizeof(A)); \
|
||||
if (szf > 0) { \
|
||||
if (szf + 1 < sizeof(A)) { \
|
||||
memcpy((A), (B), szf + 1); \
|
||||
} else { \
|
||||
* (A) = '\0'; \
|
||||
} \
|
||||
} else { \
|
||||
* (A) = '\0'; \
|
||||
} \
|
||||
} else { \
|
||||
memcpybuff((A), (B), szf + 1); \
|
||||
} \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#else
|
||||
|
||||
#ifdef STRDEBUGFAST
|
||||
|
||||
/* protected strcat, strncat and strcpy - definitely useful */
|
||||
#define strcatbuff(A, B) do { \
|
||||
assertf( (A) != NULL ); \
|
||||
assertf( (B) != NULL ); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
(A)[sizeof(A) - 1] = '\0'; \
|
||||
} \
|
||||
strcat(A, B); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf((A)[sizeof(A) - 1] == '\0'); \
|
||||
} \
|
||||
} while(0)
|
||||
#define strncatbuff(A, B, N) do { \
|
||||
assertf( (A) != NULL ); \
|
||||
assertf( (B) != NULL ); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
(A)[sizeof(A) - 1] = '\0'; \
|
||||
} \
|
||||
strncat(A, B, N); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf((A)[sizeof(A) - 1] == '\0'); \
|
||||
} \
|
||||
} while(0)
|
||||
#define strcpybuff(A, B) do { \
|
||||
assertf( (A) != NULL ); \
|
||||
assertf( (B) != NULL ); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
(A)[sizeof(A) - 1] = '\0'; \
|
||||
} \
|
||||
strcpy(A, B); \
|
||||
if (sizeof(A) != sizeof(char*)) { \
|
||||
assertf((A)[sizeof(A) - 1] == '\0'); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#else
|
||||
|
||||
#define strcatbuff strcat
|
||||
#define strncatbuff strncat
|
||||
#define strcpybuff strcpy
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -54,12 +54,13 @@ Please visit our Website: http://www.httrack.com
|
||||
|
||||
#endif
|
||||
|
||||
typedef struct hostent FAR t_hostent;
|
||||
|
||||
#else
|
||||
#define HTS_USESCOPEID
|
||||
#define INVALID_SOCKET -1
|
||||
typedef struct hostent t_hostent;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#if HTS_USEOPENSSL
|
||||
@@ -157,4 +158,8 @@ typedef enum HTTrackStatus {
|
||||
STATUS_FTP_READY = 1001
|
||||
} HTTrackStatus;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -38,14 +38,15 @@ Please visit our Website: http://www.httrack.com
|
||||
/* specific definitions */
|
||||
#include "htsglobal.h"
|
||||
#include "htslib.h"
|
||||
#include "htscore.h"
|
||||
|
||||
/* END specific definitions */
|
||||
|
||||
// gestion des cookie
|
||||
// ajoute, dans l'ordre
|
||||
// !=0 : erreur
|
||||
int cookie_add(t_cookie * cookie, char *cook_name, char *cook_value,
|
||||
char *domain, char *path) {
|
||||
int cookie_add(t_cookie * cookie, const char *cook_name, const char *cook_value,
|
||||
const char *domain, const char *path) {
|
||||
char buffer[8192];
|
||||
char *a = cookie->data;
|
||||
char *insert;
|
||||
@@ -53,20 +54,20 @@ int cookie_add(t_cookie * cookie, char *cook_name, char *cook_value,
|
||||
|
||||
// effacer éventuel cookie en double
|
||||
cookie_del(cookie, cook_name, domain, path);
|
||||
if ((int) strlen(cook_value) > 1024)
|
||||
if (strlen(cook_value) > 1024)
|
||||
return -1; // trop long
|
||||
if ((int) strlen(cook_name) > 256)
|
||||
if (strlen(cook_name) > 256)
|
||||
return -1; // trop long
|
||||
if ((int) strlen(domain) > 256)
|
||||
if (strlen(domain) > 256)
|
||||
return -1; // trop long
|
||||
if ((int) strlen(path) > 256)
|
||||
if (strlen(path) > 256)
|
||||
return -1; // trop long
|
||||
if ((int) (strlen(cookie->data)
|
||||
if (strlen(cookie->data)
|
||||
+ strlen(cook_value)
|
||||
+ strlen(cook_name)
|
||||
+ strlen(domain)
|
||||
+ strlen(path)
|
||||
+ 256) > cookie->max_len)
|
||||
+ 256 > cookie->max_len)
|
||||
return -1; // impossible d'ajouter
|
||||
|
||||
insert = a; // insérer ici
|
||||
@@ -99,7 +100,7 @@ int cookie_add(t_cookie * cookie, char *cook_name, char *cook_value,
|
||||
strcatbuff(cook, "\t");
|
||||
strcatbuff(cook, cook_value);
|
||||
strcatbuff(cook, "\n");
|
||||
if (!(((int) strlen(cookie->data) + (int) strlen(cook)) < cookie->max_len))
|
||||
if (!((strlen(cookie->data) + strlen(cook)) < cookie->max_len))
|
||||
return -1; // impossible d'ajouter
|
||||
cookie_insert(insert, cook);
|
||||
#if DEBUG_COOK
|
||||
@@ -111,13 +112,13 @@ int cookie_add(t_cookie * cookie, char *cook_name, char *cook_value,
|
||||
}
|
||||
|
||||
// effacer cookie si existe
|
||||
int cookie_del(t_cookie * cookie, char *cook_name, char *domain, char *path) {
|
||||
int cookie_del(t_cookie * cookie, const char *cook_name, const char *domain, const char *path) {
|
||||
char *a, *b;
|
||||
|
||||
b = cookie_find(cookie->data, cook_name, domain, path);
|
||||
if (b) {
|
||||
a = cookie_nextfield(b);
|
||||
cookie_delete(b, (int) (a - b));
|
||||
cookie_delete(b, a - b);
|
||||
#if DEBUG_COOK
|
||||
printf("deleted old cookie: %s %s %s\n", cook_name, domain, path);
|
||||
#endif
|
||||
@@ -128,11 +129,11 @@ int cookie_del(t_cookie * cookie, char *cook_name, char *domain, char *path) {
|
||||
// Matches wildcard cookie domains that start with a dot
|
||||
// chk_dom: the domain stored in the cookie (potentially wildcard).
|
||||
// domain: query domain
|
||||
static int cookie_cmp_wildcard_domain(char *chk_dom, char *domain) {
|
||||
int n = strlen(chk_dom);
|
||||
int m = strlen(domain);
|
||||
int l = n < m ? n : m;
|
||||
int i;
|
||||
static int cookie_cmp_wildcard_domain(const char *chk_dom, const char *domain) {
|
||||
const size_t n = strlen(chk_dom);
|
||||
const size_t m = strlen(domain);
|
||||
const size_t l = n < m ? n : m;
|
||||
size_t i;
|
||||
for (i = l - 1; i >= 0; i--) {
|
||||
if (chk_dom[n - i - 1] != domain[m - i - 1]) {
|
||||
return 1;
|
||||
@@ -152,7 +153,7 @@ static int cookie_cmp_wildcard_domain(char *chk_dom, char *domain) {
|
||||
// renvoie pointeur sur ligne, ou NULL si introuvable
|
||||
// path est aligné à droite et cook_name peut être vide (chercher alors tout cookie)
|
||||
// .doubleclick.net TRUE / FALSE 1999999999 id A
|
||||
char *cookie_find(char *s, char *cook_name, char *domain, char *path) {
|
||||
char *cookie_find(char *s, const char *cook_name, const char *domain, const char *path) {
|
||||
char buffer[8192];
|
||||
char *a = s;
|
||||
|
||||
@@ -165,15 +166,15 @@ char *cookie_find(char *s, char *cook_name, char *domain, char *path) {
|
||||
t = (strcmp(cookie_get(buffer, a, 5), cook_name) == 0); // tester si même nom
|
||||
if (t) { // même nom ou nom qualconque
|
||||
//
|
||||
char *chk_dom = cookie_get(buffer, a, 0); // domaine concerné par le cookie
|
||||
const char *chk_dom = cookie_get(buffer, a, 0); // domaine concerné par le cookie
|
||||
|
||||
if (((int) strlen(chk_dom) <= (int) strlen(domain) &&
|
||||
if ((strlen(chk_dom) <= strlen(domain) &&
|
||||
strcmp(chk_dom, domain + strlen(domain) - strlen(chk_dom)) == 0) ||
|
||||
!cookie_cmp_wildcard_domain(chk_dom, domain)) { // même domaine
|
||||
//
|
||||
char *chk_path = cookie_get(buffer, a, 2); // chemin concerné par le cookie
|
||||
const char *chk_path = cookie_get(buffer, a, 2); // chemin concerné par le cookie
|
||||
|
||||
if ((int) strlen(chk_path) <= (int) strlen(path)) {
|
||||
if (strlen(chk_path) <= strlen(path)) {
|
||||
if (strncmp(path, chk_path, strlen(chk_path)) == 0) { // même chemin
|
||||
return a;
|
||||
}
|
||||
@@ -222,7 +223,7 @@ int cookie_load(t_cookie * cookie, const char *fpath, const char *name) {
|
||||
do {
|
||||
if (!(find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
|
||||
if (!(find.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)) {
|
||||
FILE *fp = fopen(fconcat(catbuff, fpath, find.cFileName), "rb");
|
||||
FILE *fp = fopen(fconcat(catbuff, sizeof(catbuff), fpath, find.cFileName), "rb");
|
||||
|
||||
if (fp) {
|
||||
char cook_name[256];
|
||||
@@ -231,15 +232,14 @@ int cookie_load(t_cookie * cookie, const char *fpath, const char *name) {
|
||||
char dummy[512];
|
||||
|
||||
//
|
||||
char domain[256]; // domaine cookie (.netscape.com)
|
||||
char path[256]; // chemin (/)
|
||||
lien_adrfil af; // chemin (/)
|
||||
int cookie_merged = 0;
|
||||
|
||||
//
|
||||
// Read all cookies
|
||||
while(!feof(fp)) {
|
||||
cook_name[0] = cook_value[0] = domainpathpath[0]
|
||||
= dummy[0] = domain[0] = path[0] = '\0';
|
||||
= dummy[0] = af.adr[0] = af.fil[0] = '\0';
|
||||
linput(fp, cook_name, 250);
|
||||
if (!feof(fp)) {
|
||||
linput(fp, cook_value, 250);
|
||||
@@ -254,8 +254,8 @@ int cookie_load(t_cookie * cookie, const char *fpath, const char *name) {
|
||||
if (strnotempty(cook_name)
|
||||
&& strnotempty(cook_value)
|
||||
&& strnotempty(domainpathpath)) {
|
||||
if (ident_url_absolute(domainpathpath, domain, path) >= 0) {
|
||||
cookie_add(cookie, cook_name, cook_value, domain, path);
|
||||
if (ident_url_absolute(domainpathpath, &af) >= 0) {
|
||||
cookie_add(cookie, cook_name, cook_value, af.adr, af.fil);
|
||||
cookie_merged = 1;
|
||||
}
|
||||
}
|
||||
@@ -264,7 +264,7 @@ int cookie_load(t_cookie * cookie, const char *fpath, const char *name) {
|
||||
}
|
||||
fclose(fp);
|
||||
if (cookie_merged)
|
||||
remove(fconcat(catbuff, fpath, find.cFileName));
|
||||
remove(fconcat(catbuff, sizeof(catbuff), fpath, find.cFileName));
|
||||
} // if fp
|
||||
}
|
||||
} while(FindNextFileA(h, &find));
|
||||
@@ -275,7 +275,7 @@ int cookie_load(t_cookie * cookie, const char *fpath, const char *name) {
|
||||
|
||||
// Ensuite, cookies.txt
|
||||
{
|
||||
FILE *fp = fopen(fconcat(catbuff, fpath, name), "rb");
|
||||
FILE *fp = fopen(fconcat(catbuff, sizeof(catbuff), fpath, name), "rb");
|
||||
|
||||
if (fp) {
|
||||
char BIGSTK line[8192];
|
||||
@@ -311,12 +311,12 @@ int cookie_load(t_cookie * cookie, const char *fpath, const char *name) {
|
||||
|
||||
// écrire cookies.txt
|
||||
// !=0 : erreur
|
||||
int cookie_save(t_cookie * cookie, char *name) {
|
||||
int cookie_save(t_cookie * cookie, const char *name) {
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
|
||||
if (strnotempty(cookie->data)) {
|
||||
char BIGSTK line[8192];
|
||||
FILE *fp = fopen(fconv(catbuff, name), "wb");
|
||||
FILE *fp = fopen(fconv(catbuff, sizeof(catbuff), name), "wb");
|
||||
|
||||
if (fp) {
|
||||
char *a = cookie->data;
|
||||
@@ -337,13 +337,13 @@ int cookie_save(t_cookie * cookie, char *name) {
|
||||
}
|
||||
|
||||
// insertion chaine ins avant s
|
||||
void cookie_insert(char *s, char *ins) {
|
||||
void cookie_insert(char *s, const char *ins) {
|
||||
char *buff;
|
||||
|
||||
if (strnotempty(s) == 0) { // rien à faire, juste concat
|
||||
strcatbuff(s, ins);
|
||||
} else {
|
||||
buff = (char *) malloct(strlen(s) + 2);
|
||||
buff = (char *) malloct(strlen(s) + 1);
|
||||
if (buff) {
|
||||
strcpybuff(buff, s); // copie temporaire
|
||||
strcpybuff(s, ins); // insérer
|
||||
@@ -354,13 +354,13 @@ void cookie_insert(char *s, char *ins) {
|
||||
}
|
||||
|
||||
// destruction chaine dans s position pos
|
||||
void cookie_delete(char *s, int pos) {
|
||||
void cookie_delete(char *s, size_t pos) {
|
||||
char *buff;
|
||||
|
||||
if (strnotempty(s + pos) == 0) { // rien à faire, effacer
|
||||
s[0] = '\0';
|
||||
} else {
|
||||
buff = (char *) malloct(strlen(s + pos) + 2);
|
||||
buff = (char *) malloct(strlen(s + pos) + 1);
|
||||
if (buff) {
|
||||
strcpybuff(buff, s + pos); // copie temporaire
|
||||
strcpybuff(s, buff); // copier
|
||||
@@ -371,8 +371,8 @@ void cookie_delete(char *s, int pos) {
|
||||
|
||||
// renvoie champ param de la chaine cookie_base
|
||||
// ex: cookie_get("ceci est<tab>un<tab>exemple",1) renvoi "un"
|
||||
char *cookie_get(char *buffer, char *cookie_base, int param) {
|
||||
char *limit;
|
||||
const char *cookie_get(char *buffer, const char *cookie_base, int param) {
|
||||
const char *limit;
|
||||
|
||||
while(*cookie_base == '\n')
|
||||
cookie_base++;
|
||||
@@ -393,7 +393,7 @@ char *cookie_get(char *buffer, char *cookie_base, int param) {
|
||||
}
|
||||
if (cookie_base) {
|
||||
if (cookie_base < limit) {
|
||||
char *a = cookie_base;
|
||||
const char *a = cookie_base;
|
||||
|
||||
while((*a) && (*a != '\t') && (*a != '\n'))
|
||||
a++;
|
||||
@@ -413,7 +413,7 @@ char *cookie_get(char *buffer, char *cookie_base, int param) {
|
||||
// -- basic auth --
|
||||
|
||||
/* déclarer un répertoire comme possédant une authentification propre */
|
||||
int bauth_add(t_cookie * cookie, char *adr, char *fil, char *auth) {
|
||||
int bauth_add(t_cookie * cookie, const char *adr, const char *fil, const char *auth) {
|
||||
char buffer[HTS_URLMAXSIZE * 2];
|
||||
|
||||
if (cookie) {
|
||||
@@ -439,7 +439,7 @@ int bauth_add(t_cookie * cookie, char *adr, char *fil, char *auth) {
|
||||
|
||||
/* tester adr et fil, et retourner authentification si nécessaire */
|
||||
/* sinon, retourne NULL */
|
||||
char *bauth_check(t_cookie * cookie, char *adr, char *fil) {
|
||||
char *bauth_check(t_cookie * cookie, const char *adr, const char *fil) {
|
||||
char buffer[HTS_URLMAXSIZE * 2];
|
||||
|
||||
if (cookie) {
|
||||
@@ -458,10 +458,10 @@ char *bauth_check(t_cookie * cookie, char *adr, char *fil) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *bauth_prefix(char *prefix, char *adr, char *fil) {
|
||||
char *bauth_prefix(char *prefix, const char *adr, const char *fil) {
|
||||
char *a;
|
||||
|
||||
strcpybuff(prefix, jump_identification(adr));
|
||||
strcpybuff(prefix, jump_identification_const(adr));
|
||||
strcatbuff(prefix, fil);
|
||||
a = strchr(prefix, '?');
|
||||
if (a)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -34,6 +34,8 @@ Please visit our Website: http://www.httrack.com
|
||||
#ifndef HTSBAUTH_DEFH
|
||||
#define HTSBAUTH_DEFH
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
// robots wizard
|
||||
#ifndef HTS_DEF_FWSTRUCT_bauth_chain
|
||||
#define HTS_DEF_FWSTRUCT_bauth_chain
|
||||
@@ -60,21 +62,21 @@ struct t_cookie {
|
||||
#ifdef HTS_INTERNAL_BYTECODE
|
||||
|
||||
// cookies
|
||||
int cookie_add(t_cookie * cookie, char *cook_name, char *cook_value,
|
||||
char *domain, char *path);
|
||||
int cookie_del(t_cookie * cookie, char *cook_name, char *domain, char *path);
|
||||
int cookie_add(t_cookie * cookie, const char *cook_name, const char *cook_value,
|
||||
const char *domain, const char *path);
|
||||
int cookie_del(t_cookie * cookie, const char *cook_name, const char *domain, const char *path);
|
||||
int cookie_load(t_cookie * cookie, const char *path, const char *name);
|
||||
int cookie_save(t_cookie * cookie, char *name);
|
||||
void cookie_insert(char *s, char *ins);
|
||||
void cookie_delete(char *s, int pos);
|
||||
char *cookie_get(char *buffer, char *cookie_base, int param);
|
||||
char *cookie_find(char *s, char *cook_name, char *domain, char *path);
|
||||
int cookie_save(t_cookie * cookie, const char *name);
|
||||
void cookie_insert(char *s, const char *ins);
|
||||
void cookie_delete(char *s, size_t pos);
|
||||
const char *cookie_get(char *buffer, const char *cookie_base, int param);
|
||||
char *cookie_find(char *s, const char *cook_name, const char *domain, const char *path);
|
||||
char *cookie_nextfield(char *a);
|
||||
|
||||
// basic auth
|
||||
int bauth_add(t_cookie * cookie, char *adr, char *fil, char *auth);
|
||||
char *bauth_check(t_cookie * cookie, char *adr, char *fil);
|
||||
char *bauth_prefix(char *buffer, char *adr, char *fil);
|
||||
int bauth_add(t_cookie * cookie, const char *adr, const char *fil, const char *auth);
|
||||
char *bauth_check(t_cookie * cookie, const char *adr, const char *fil);
|
||||
char *bauth_prefix(char *buffer, const char *adr, const char *fil);
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
226
src/htscache.c
226
src/htscache.c
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -145,9 +145,9 @@ void cache_mayadd(httrackp * opt, cache_back * cache, htsblk * r,
|
||||
// we just store statuscode + location (if any)
|
||||
if (url_save == NULL && r->statuscode / 100 >= 3) {
|
||||
// cached "fast" header doesn't yet exists
|
||||
if (inthash_read
|
||||
if (coucal_read
|
||||
(cache->cached_tests,
|
||||
concat(OPT_GET_BUFF(opt), url_adr, url_fil), NULL) == 0) {
|
||||
concat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), url_adr, url_fil), NULL) == 0) {
|
||||
char BIGSTK tempo[HTS_URLMAXSIZE * 2];
|
||||
|
||||
sprintf(tempo, "%d", (int) r->statuscode);
|
||||
@@ -158,8 +158,8 @@ void cache_mayadd(httrackp * opt, cache_back * cache, htsblk * r,
|
||||
hts_log_print(opt, LOG_DEBUG,
|
||||
"Cached fast-header response: %s%s is %d",
|
||||
url_adr, url_fil, (int) r->statuscode);
|
||||
inthash_add(cache->cached_tests,
|
||||
concat(OPT_GET_BUFF(opt), url_adr, url_fil),
|
||||
coucal_add(cache->cached_tests,
|
||||
concat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), url_adr, url_fil),
|
||||
(intptr_t) strdupt(tempo));
|
||||
}
|
||||
}
|
||||
@@ -366,10 +366,10 @@ void cache_add(httrackp * opt, cache_back * cache, const htsblk * r,
|
||||
FILE *fp;
|
||||
|
||||
// On recopie le fichier->.
|
||||
off_t file_size = fsize_utf8(fconv(catbuff, url_save));
|
||||
off_t file_size = fsize_utf8(fconv(catbuff, sizeof(catbuff), url_save));
|
||||
|
||||
if (file_size >= 0) {
|
||||
fp = FOPEN(fconv(catbuff, url_save), "rb");
|
||||
fp = FOPEN(fconv(catbuff, sizeof(catbuff), url_save), "rb");
|
||||
if (fp != NULL) {
|
||||
char BIGSTK buff[32768];
|
||||
size_t nl;
|
||||
@@ -646,7 +646,7 @@ static htsblk cache_readex_new(httrackp * opt, cache_back * cache,
|
||||
strcpybuff(r.location, "");
|
||||
strcpybuff(buff, adr);
|
||||
strcatbuff(buff, fil);
|
||||
hash_pos_return = inthash_read(cache->hashtable, buff, &hash_pos);
|
||||
hash_pos_return = coucal_read(cache->hashtable, buff, &hash_pos);
|
||||
/* avoid errors on data entries */
|
||||
if (adr[0] == '/' && adr[1] == '/' && adr[2] == '[') {
|
||||
#if HTS_FAST_CACHE
|
||||
@@ -751,7 +751,7 @@ static htsblk cache_readex_new(httrackp * opt, cache_back * cache,
|
||||
|
||||
/* Ensure the file is present, because returning a reference to a missing file is useless! */
|
||||
if (!dataincache) { /* Data are supposed to be on disk */
|
||||
if (!fexist_utf8(fconv(catbuff, previous_save))) { // un fichier existe déja
|
||||
if (!fexist_utf8(fconv(catbuff, sizeof(catbuff), previous_save))) { // un fichier existe déja
|
||||
if (!opt->norecatch) {
|
||||
hts_log_print(opt, LOG_DEBUG, "Cache: could not find %s",
|
||||
previous_save);
|
||||
@@ -775,10 +775,10 @@ static htsblk cache_readex_new(httrackp * opt, cache_back * cache,
|
||||
r.msg[0] = '\0';
|
||||
|
||||
// File exists on disk with declared cache name (this is expected!)
|
||||
if (fexist_utf8(fconv(catbuff, previous_save))) { // un fichier existe déja
|
||||
if (fexist_utf8(fconv(catbuff, sizeof(catbuff), previous_save))) { // un fichier existe déja
|
||||
// Expected size ?
|
||||
const size_t fsize =
|
||||
fsize_utf8(fconv(catbuff, previous_save));
|
||||
fsize_utf8(fconv(catbuff, sizeof(catbuff), previous_save));
|
||||
if (fsize == r.size) {
|
||||
// Target name is the previous name, and the file looks good: nothing to do!
|
||||
if (strcmp(previous_save, target_save) == 0) {
|
||||
@@ -790,8 +790,8 @@ static htsblk cache_readex_new(httrackp * opt, cache_back * cache,
|
||||
char catbuff2[CATBUFF_SIZE];
|
||||
|
||||
if (RENAME
|
||||
(fconv(catbuff, previous_save),
|
||||
fconv(catbuff2, target_save)) == 0) {
|
||||
(fconv(catbuff, sizeof(catbuff), previous_save),
|
||||
fconv(catbuff2, sizeof(catbuff2), target_save)) == 0) {
|
||||
// So far so good
|
||||
ok = 1; // plus rien à faire
|
||||
|
||||
@@ -812,9 +812,9 @@ static htsblk cache_readex_new(httrackp * opt, cache_back * cache,
|
||||
}
|
||||
// File exists with the target name and not previous one ?
|
||||
// Suppose a broken mirror, with a file being renamed: OK
|
||||
else if (fexist_utf8(fconv(catbuff, target_save))) {
|
||||
else if (fexist_utf8(fconv(catbuff, sizeof(catbuff), target_save))) {
|
||||
// Expected size ?
|
||||
const size_t fsize = fsize_utf8(fconv(catbuff, target_save));
|
||||
const size_t fsize = fsize_utf8(fconv(catbuff, sizeof(catbuff), target_save));
|
||||
|
||||
if (fsize == r.size) {
|
||||
// So far so good
|
||||
@@ -927,7 +927,7 @@ static htsblk cache_readex_new(httrackp * opt, cache_back * cache,
|
||||
"Previous cache file not found (empty filename)");
|
||||
}
|
||||
} else { /* Read in memory from disk */
|
||||
FILE *const fp = FOPEN(fconv(catbuff, previous_save), "rb");
|
||||
FILE *const fp = FOPEN(fconv(catbuff, sizeof(catbuff), previous_save), "rb");
|
||||
|
||||
if (fp != NULL) {
|
||||
r.adr = (char *) malloct((int) r.size + 4);
|
||||
@@ -1029,7 +1029,7 @@ static htsblk cache_readex_old(httrackp * opt, cache_back * cache,
|
||||
#if HTS_FAST_CACHE
|
||||
strcpybuff(buff, adr);
|
||||
strcatbuff(buff, fil);
|
||||
hash_pos_return = inthash_read(cache->hashtable, buff, &hash_pos);
|
||||
hash_pos_return = coucal_read(cache->hashtable, buff, &hash_pos);
|
||||
#else
|
||||
buff[0] = '\0';
|
||||
strcatbuff(buff, "\n");
|
||||
@@ -1159,7 +1159,7 @@ static htsblk cache_readex_old(httrackp * opt, cache_back * cache,
|
||||
int ok = 0;
|
||||
|
||||
r.is_write = 1; // écrire
|
||||
if (fexist_utf8(fconv(catbuff, save))) { // un fichier existe déja
|
||||
if (fexist_utf8(fconv(catbuff, sizeof(catbuff), save))) { // un fichier existe déja
|
||||
//if (fsize_utf8(fconv(save))==r.size) { // même taille -- NON tant pis (taille mal declaree)
|
||||
ok = 1; // plus rien à faire
|
||||
filenote(&opt->state.strc, save, NULL); // noter comme connu
|
||||
@@ -1229,7 +1229,7 @@ static htsblk cache_readex_old(httrackp * opt, cache_back * cache,
|
||||
strcpybuff(r.msg, "Previous cache file not found (2)");
|
||||
} else { /* Read in memory from cache */
|
||||
if (strnotempty(return_save) && fexist_utf8(return_save)) {
|
||||
FILE *fp = FOPEN(fconv(catbuff, return_save), "rb");
|
||||
FILE *fp = FOPEN(fconv(catbuff, sizeof(catbuff), return_save), "rb");
|
||||
|
||||
if (fp != NULL) {
|
||||
r.adr = (char *) malloct((size_t) r.size + 4);
|
||||
@@ -1349,7 +1349,7 @@ int cache_readdata(cache_back * cache, const char *str1, const char *str2,
|
||||
|
||||
strcpybuff(buff, str1);
|
||||
strcatbuff(buff, str2);
|
||||
if (inthash_read(cache->hashtable, buff, &pos)) {
|
||||
if (coucal_read(cache->hashtable, buff, &pos)) {
|
||||
if (fseek(cache->olddat, (long) ((pos > 0) ? pos : (-pos)), SEEK_SET) ==
|
||||
0) {
|
||||
INTsys len;
|
||||
@@ -1397,7 +1397,7 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
// ---
|
||||
// utilisation du cache: renommer ancien éventuel et charger index
|
||||
hts_log_print(opt, LOG_DEBUG, "Cache: enabled=%d, base=%s, ro=%d",
|
||||
(int) opt->cache, fconcat(OPT_GET_BUFF(opt),
|
||||
(int) opt->cache, fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/"), (int) cache->ro);
|
||||
if (opt->cache) {
|
||||
@@ -1406,40 +1406,40 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
#endif
|
||||
if (!cache->ro) {
|
||||
#ifdef _WIN32
|
||||
mkdir(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache"));
|
||||
mkdir(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache"));
|
||||
#else
|
||||
mkdir(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache"),
|
||||
mkdir(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache"),
|
||||
HTS_PROTECT_FOLDER);
|
||||
#endif
|
||||
if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.zip")))) { // il existe déja un cache précédent.. renommer
|
||||
if ((fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache/new.zip")))) { // il existe déja un cache précédent.. renommer
|
||||
/* Previous cache from the previous cache version */
|
||||
#if 0
|
||||
/* No.. reuse with old httrack releases! */
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"));
|
||||
#endif
|
||||
/* Previous cache version */
|
||||
if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.dat"))) && (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer
|
||||
if ((fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache/new.dat"))) && (fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"));
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"));
|
||||
}
|
||||
@@ -1447,11 +1447,11 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
/* Remove OLD cache */
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"))) {
|
||||
if (remove
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip")) != 0) {
|
||||
hts_log_print(opt, LOG_WARNING | LOG_ERRNO,
|
||||
"Cache: error while moving previous cache");
|
||||
@@ -1461,8 +1461,8 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
/* Rename */
|
||||
if (hts_rename
|
||||
(opt,
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"), fconcat(OPT_GET_BUFF(opt),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip")) != 0) {
|
||||
hts_log_print(opt, LOG_WARNING | LOG_ERRNO,
|
||||
@@ -1470,33 +1470,33 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
} else {
|
||||
hts_log_print(opt, LOG_DEBUG, "Cache: successfully renamed");
|
||||
}
|
||||
} else if ((fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.dat"))) && (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer
|
||||
} else if ((fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache/new.dat"))) && (fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache/new.ndx")))) { // il existe déja un cache précédent.. renommer
|
||||
#if DEBUGCA
|
||||
printf("work with former cache\n");
|
||||
#endif
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"));
|
||||
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"));
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"));
|
||||
} else { // un des deux (ou les deux) fichiers cache absents: effacer l'autre éventuel
|
||||
@@ -1505,17 +1505,17 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
#endif
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
}
|
||||
} else {
|
||||
@@ -1524,30 +1524,30 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
hts_log_print(opt, LOG_DEBUG, "Cache: size %d",
|
||||
(int)
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip")));
|
||||
|
||||
// charger index cache précédent
|
||||
if ((!cache->ro
|
||||
&&
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip")) > 0)
|
||||
|| (cache->ro
|
||||
&&
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip")) > 0)
|
||||
) {
|
||||
if (!cache->ro) {
|
||||
cache->zipInput =
|
||||
unzOpen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"));
|
||||
} else {
|
||||
cache->zipInput =
|
||||
unzOpen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"));
|
||||
}
|
||||
|
||||
@@ -1559,25 +1559,25 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
|
||||
if (!cache->ro) {
|
||||
name =
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip");
|
||||
} else {
|
||||
name =
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip");
|
||||
}
|
||||
hts_log_print(opt, LOG_WARNING,
|
||||
"Cache: damaged cache, trying to repair");
|
||||
if (unzRepair
|
||||
(name,
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/repair.zip"), fconcat(OPT_GET_BUFF(opt),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/repair.zip"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/repair.tmp"),
|
||||
&repaired, &repairedBytes) == Z_OK) {
|
||||
unlink(name);
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/repair.zip"), name);
|
||||
cache->zipInput = unzOpen(name);
|
||||
hts_log_print(opt, LOG_WARNING,
|
||||
@@ -1642,9 +1642,9 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
}
|
||||
}
|
||||
if (dataincache)
|
||||
inthash_add(cache->hashtable, filenameIndex, pos);
|
||||
coucal_add(cache->hashtable, filenameIndex, pos);
|
||||
else
|
||||
inthash_add(cache->hashtable, filenameIndex, -pos);
|
||||
coucal_add(cache->hashtable, filenameIndex, -pos);
|
||||
} else {
|
||||
hts_log_print(opt, LOG_WARNING,
|
||||
"Corrupted cache meta entry #%d",
|
||||
@@ -1679,20 +1679,20 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
if ((!cache->ro
|
||||
&&
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat")) >= 0
|
||||
&&
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx")) > 0)
|
||||
|| (cache->ro
|
||||
&&
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat")) >= 0
|
||||
&&
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx")) > 0)
|
||||
) {
|
||||
FILE *oldndx = NULL;
|
||||
@@ -1703,20 +1703,20 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
if (!cache->ro) {
|
||||
cache->olddat =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"), "rb");
|
||||
oldndx =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"), "rb");
|
||||
} else {
|
||||
cache->olddat =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"), "rb");
|
||||
oldndx =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"), "rb");
|
||||
}
|
||||
// les deux doivent être ouvrables
|
||||
@@ -1738,20 +1738,20 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
if (!cache->ro) {
|
||||
buffl =
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"));
|
||||
cache->use =
|
||||
readfile(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"));
|
||||
} else {
|
||||
buffl =
|
||||
fsize(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
cache->use =
|
||||
readfile(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
}
|
||||
if (cache->use != NULL) {
|
||||
@@ -1810,7 +1810,7 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
/* read position */
|
||||
a += binput(a, linepos, 200);
|
||||
sscanf(linepos, "%d", &pos);
|
||||
inthash_add(cache->hashtable, line, pos);
|
||||
coucal_add(cache->hashtable, line, pos);
|
||||
}
|
||||
}
|
||||
/* Not needed anymore! */
|
||||
@@ -1822,7 +1822,7 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
}
|
||||
} else {
|
||||
hts_log_print(opt, LOG_DEBUG, "Cache: no cache found in %s",
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/"));
|
||||
}
|
||||
|
||||
@@ -1832,39 +1832,39 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
if (!cache->ro) {
|
||||
// ouvrir caches actuels
|
||||
structcheck(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/"));
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache/"));
|
||||
|
||||
if (1) {
|
||||
/* Create ZIP file cache */
|
||||
cache->zipOutput =
|
||||
(void *)
|
||||
zipOpen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"), 0);
|
||||
|
||||
if (cache->zipOutput != NULL) {
|
||||
// supprimer old.lst
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.lst")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.lst"));
|
||||
// renommer
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst")))
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.lst"));
|
||||
// ouvrir
|
||||
cache->lst =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst"), "wb");
|
||||
strcpybuff(opt->state.strc.path, StringBuff(opt->path_html));
|
||||
opt->state.strc.lst = cache->lst;
|
||||
@@ -1878,25 +1878,25 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
// supprimer old.txt
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.txt")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.txt"));
|
||||
// renommer
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt")))
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.txt"));
|
||||
// ouvrir
|
||||
cache->txt =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt"), "wb");
|
||||
if (cache->txt) {
|
||||
fprintf(cache->txt,
|
||||
@@ -1909,11 +1909,11 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
} else {
|
||||
cache->dat =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"), "wb");
|
||||
cache->ndx =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"), "wb");
|
||||
// les deux doivent être ouvrables
|
||||
if ((cache->dat == NULL) && (cache->ndx != NULL)) {
|
||||
@@ -1940,25 +1940,25 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
// supprimer old.lst
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.lst")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.lst"));
|
||||
// renommer
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst")))
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.lst"));
|
||||
// ouvrir
|
||||
cache->lst =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst"), "wb");
|
||||
strcpybuff(opt->state.strc.path, StringBuff(opt->path_html));
|
||||
opt->state.strc.lst = cache->lst;
|
||||
@@ -1972,25 +1972,25 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
// supprimer old.txt
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.txt")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.txt"));
|
||||
// renommer
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt")))
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.txt"));
|
||||
// ouvrir
|
||||
cache->txt =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt"), "wb");
|
||||
if (cache->txt) {
|
||||
fprintf(cache->txt,
|
||||
@@ -2016,12 +2016,12 @@ void cache_init(cache_back * cache, httrackp * opt) {
|
||||
|
||||
// lire un fichier.. (compatible \0)
|
||||
/* Note: NOT utf-8 */
|
||||
char *readfile(char *fil) {
|
||||
char *readfile(const char *fil) {
|
||||
return readfile2(fil, NULL);
|
||||
}
|
||||
|
||||
/* Note: NOT utf-8 */
|
||||
char *readfile2(char *fil, LLint * size) {
|
||||
char *readfile2(const char *fil, LLint * size) {
|
||||
char *adr = NULL;
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
INTsys len = 0;
|
||||
@@ -2030,7 +2030,7 @@ char *readfile2(char *fil, LLint * size) {
|
||||
if (len >= 0) { // exists
|
||||
FILE *fp;
|
||||
|
||||
fp = fopen(fconv(catbuff, fil), "rb");
|
||||
fp = fopen(fconv(catbuff, sizeof(catbuff), fil), "rb");
|
||||
if (fp != NULL) { // n'existe pas (!)
|
||||
adr = (char *) malloct(len + 1);
|
||||
if (size != NULL)
|
||||
@@ -2049,13 +2049,13 @@ char *readfile2(char *fil, LLint * size) {
|
||||
}
|
||||
|
||||
/* Note: utf-8 */
|
||||
char *readfile_utf8(char *fil) {
|
||||
char *readfile_utf8(const char *fil) {
|
||||
char *adr = NULL;
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
const off_t len = fsize_utf8(fil);
|
||||
|
||||
if (len >= 0) { // exists
|
||||
FILE *const fp = FOPEN(fconv(catbuff, fil), "rb");
|
||||
FILE *const fp = FOPEN(fconv(catbuff, sizeof(catbuff), fil), "rb");
|
||||
|
||||
if (fp != NULL) { // n'existe pas (!)
|
||||
adr = (char *) malloct(len + 1);
|
||||
@@ -2074,18 +2074,18 @@ char *readfile_utf8(char *fil) {
|
||||
}
|
||||
|
||||
/* Note: NOT utf-8 */
|
||||
char *readfile_or(char *fil, char *defaultdata) {
|
||||
char *realfile = fil;
|
||||
char *readfile_or(const char *fil, const char *defaultdata) {
|
||||
const char *realfile = fil;
|
||||
char *ret;
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
|
||||
if (!fexist(fil))
|
||||
realfile = fconcat(catbuff, hts_rootdir(NULL), fil);
|
||||
realfile = fconcat(catbuff, sizeof(catbuff), hts_rootdir(NULL), fil);
|
||||
ret = readfile(realfile);
|
||||
if (ret)
|
||||
return ret;
|
||||
else {
|
||||
char *adr = malloct(strlen(defaultdata) + 2);
|
||||
char *adr = malloct(strlen(defaultdata) + 1);
|
||||
|
||||
if (adr) {
|
||||
strcpybuff(adr, defaultdata);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -40,6 +40,7 @@ Please visit our Website: http://www.httrack.com
|
||||
#include "htsbase.h"
|
||||
#include "htsnet.h"
|
||||
#include "htslib.h"
|
||||
#include "htscore.h"
|
||||
#include <fcntl.h>
|
||||
#ifdef _WIN32
|
||||
#else
|
||||
@@ -77,40 +78,25 @@ HTSEXT_API T_SOC catch_url_init_std(int *port_prox, char *adr_prox) {
|
||||
// 1- Init the URL catcher
|
||||
|
||||
// catch_url_init(&port,&return_host);
|
||||
HTSEXT_API T_SOC catch_url_init(int *port, char *adr) {
|
||||
HTSEXT_API T_SOC catch_url_init(int *port, /* 128 bytes */ char *adr) {
|
||||
T_SOC soc = INVALID_SOCKET;
|
||||
char h_loc[256 + 2];
|
||||
char h_loc[256];
|
||||
|
||||
if (gethostname(h_loc, 256) == 0) { // host name
|
||||
if (gethostname(h_loc, sizeof(h_loc)) == 0) { // host name
|
||||
SOCaddr server;
|
||||
int server_size = sizeof(server);
|
||||
t_hostent *hp_loc;
|
||||
t_fullhostent buffer;
|
||||
|
||||
// effacer structure
|
||||
memset(&server, 0, sizeof(server));
|
||||
|
||||
if ((hp_loc = vxgethostbyname(h_loc, &buffer))) { // notre host
|
||||
|
||||
// copie adresse
|
||||
SOCaddr_copyaddr(server, server_size, hp_loc->h_addr_list[0],
|
||||
hp_loc->h_length);
|
||||
|
||||
if (hts_dns_resolve_nocache(h_loc, &server) != NULL) { // notre host
|
||||
if ((soc =
|
||||
(T_SOC) socket(SOCaddr_sinfamily(server), SOCK_STREAM,
|
||||
0)) != INVALID_SOCKET) {
|
||||
SOCaddr_initport(server, *port);
|
||||
if (bind(soc, (struct sockaddr *) &server, server_size) == 0) {
|
||||
if (bind(soc, &SOCaddr_sockaddr(server), SOCaddr_size(server)) == 0) {
|
||||
SOCaddr server2;
|
||||
SOClen len;
|
||||
SOClen len = SOCaddr_capacity(server2);
|
||||
|
||||
len = sizeof(server2);
|
||||
// effacer structure
|
||||
memset(&server2, 0, sizeof(server2));
|
||||
if (getsockname(soc, (struct sockaddr *) &server2, &len) == 0) {
|
||||
if (getsockname(soc, &SOCaddr_sockaddr(server2), &len) == 0) {
|
||||
*port = ntohs(SOCaddr_sinport(server)); // récupérer port
|
||||
if (listen(soc, 10) >= 0) { // au pif le 10
|
||||
SOCaddr_inetntoa(adr, 128, server2, len);
|
||||
if (listen(soc, 1) >= 0) {
|
||||
SOCaddr_inetntoa(adr, 128, server2);
|
||||
} else {
|
||||
#ifdef _WIN32
|
||||
closesocket(soc);
|
||||
@@ -168,15 +154,13 @@ HTSEXT_API int catch_url(T_SOC soc, char *url, char *method, char *data) {
|
||||
/* INFOS */
|
||||
{
|
||||
SOCaddr server2;
|
||||
SOClen len = sizeof(server2);
|
||||
SOClen len = SOCaddr_capacity(server2);
|
||||
|
||||
// effacer structure
|
||||
memset(&server2, 0, sizeof(server2));
|
||||
if (getpeername(soc, (struct sockaddr *) &server2, &len) == 0) {
|
||||
if (getpeername(soc, &SOCaddr_sockaddr(server2), &len) == 0) {
|
||||
char dot[256 + 2];
|
||||
|
||||
SOCaddr_inetntoa(dot, 256, server2, sizeof(server2));
|
||||
sprintf(url, "%s:%d", dot, htons(SOCaddr_sinport(server2)));
|
||||
SOCaddr_inetntoa(dot, sizeof(dot), server2);
|
||||
sprintf(url, "%s:%d", dot, ntohs(SOCaddr_sinport(server2)));
|
||||
}
|
||||
}
|
||||
/* INFOS */
|
||||
@@ -191,21 +175,20 @@ HTSEXT_API int catch_url(T_SOC soc, char *url, char *method, char *data) {
|
||||
socinput(soc, line, 1000);
|
||||
if (strnotempty(line)) {
|
||||
if (sscanf(line, "%s %s %s", method, url, protocol) == 3) {
|
||||
char BIGSTK url_adr[HTS_URLMAXSIZE * 2];
|
||||
char BIGSTK url_fil[HTS_URLMAXSIZE * 2];
|
||||
lien_adrfil af;
|
||||
|
||||
// méthode en majuscule
|
||||
size_t i;
|
||||
int r = 0;
|
||||
|
||||
url_adr[0] = url_fil[0] = '\0';
|
||||
af.adr[0] = af.fil[0] = '\0';
|
||||
//
|
||||
for(i = 0; method[i] != '\0'; i++) {
|
||||
if ((method[i] >= 'a') && (method[i] <= 'z'))
|
||||
method[i] -= ('a' - 'A');
|
||||
}
|
||||
// adresse du lien
|
||||
if (ident_url_absolute(url, url_adr, url_fil) >= 0) {
|
||||
if (ident_url_absolute(url, &af) >= 0) {
|
||||
// Traitement des en-têtes
|
||||
char BIGSTK loc[HTS_URLMAXSIZE * 2];
|
||||
htsblk blkretour;
|
||||
@@ -214,7 +197,7 @@ HTSEXT_API int catch_url(T_SOC soc, char *url, char *method, char *data) {
|
||||
//memset(&blkretour, 0, sizeof(htsblk)); // effacer
|
||||
blkretour.location = loc; // si non nul, contiendra l'adresse véritable en cas de moved xx
|
||||
// Lire en têtes restants
|
||||
sprintf(data, "%s %s %s\r\n", method, url_fil, protocol);
|
||||
sprintf(data, "%s %s %s\r\n", method, af.fil, protocol);
|
||||
while(strnotempty(line)) {
|
||||
socinput(soc, line, 1000);
|
||||
treathead(NULL, NULL, NULL, &blkretour, line); // traiter
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -43,12 +43,6 @@ Please visit our Website: http://www.httrack.com
|
||||
// Fonctions
|
||||
void socinput(T_SOC soc, char *s, int max);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API T_SOC catch_url_init_std(int *port_prox, char *adr_prox);
|
||||
HTSEXT_API T_SOC catch_url_init(int *port, char *adr);
|
||||
HTSEXT_API int catch_url(T_SOC soc, char *url, char *method, char *data);
|
||||
#endif
|
||||
|
||||
#define CATCH_RESPONSE \
|
||||
"HTTP/1.0 200 OK\r\n"\
|
||||
"Content-type: text/html\r\n"\
|
||||
|
||||
119
src/htscharset.c
119
src/htscharset.c
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -33,8 +33,19 @@ Please visit our Website: http://www.httrack.com
|
||||
#include "htscharset.h"
|
||||
#include "htsbase.h"
|
||||
#include "punycode.h"
|
||||
#include "htssafe.h"
|
||||
|
||||
#include <assert.h>
|
||||
#ifdef _WIN32
|
||||
#include <stddef.h>
|
||||
typedef unsigned __int32 uint32_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#elif (defined(SOLARIS) || defined(sun) || defined(HAVE_INTTYPES_H) \
|
||||
|| defined(BSD) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD_kernel__))
|
||||
#include <inttypes.h>
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
#include <stdarg.h>
|
||||
|
||||
int hts_isStringAscii(const char *s, size_t size) {
|
||||
size_t i;
|
||||
@@ -415,7 +426,7 @@ static char* hts_codepageToUTF8(const char *codepage, const char *s) {
|
||||
if (dest != NULL) {
|
||||
const size_t len = hts_writeUTF8(uc, &dest[k], MAX_UTF);
|
||||
k += len;
|
||||
assert(k < capa);
|
||||
assertf(k < capa);
|
||||
}
|
||||
}
|
||||
dest[k] = '\0';
|
||||
@@ -442,7 +453,7 @@ static char *hts_convertStringCharset(const char *s, size_t size,
|
||||
const iconv_t cp = iconv_open(to, from);
|
||||
|
||||
if (cp != (iconv_t) - 1) {
|
||||
char *inbuf = (char *) s;
|
||||
char *inbuf = (char*) (uintptr_t) s; /* ugly iconv api, sheesh */
|
||||
size_t inbytesleft = size;
|
||||
size_t outbufCapa = 0;
|
||||
char *outbuf = NULL;
|
||||
@@ -724,43 +735,21 @@ static unsigned int nlz8(unsigned char x) {
|
||||
26 U+200000 U+3FFFFFF 5 111110xx
|
||||
31 U+4000000 U+7FFFFFFF 6 1111110x
|
||||
*/
|
||||
#define ADD_SEQ(UC, BITS, EMITTER) do { \
|
||||
/* number of data bits in first octet */ \
|
||||
const int bits = BITS % 6; \
|
||||
/* shift for first octet */ \
|
||||
const int shift0 = BITS - bits; \
|
||||
/* first octet */ \
|
||||
const unsigned char lead = \
|
||||
/* leading bits */ \
|
||||
( 0xff ^ ( ( 1 << ( bits + 1 ) ) - 1 ) ) \
|
||||
/* encoded bits */ \
|
||||
| ( ( (UC) >> shift0 ) & ( ( 1 << ( bits + 1 ) ) - 1 ) ) \
|
||||
; \
|
||||
/* further bytes are encoding 6 bits */ \
|
||||
const unsigned char second = \
|
||||
0x80 | ( ( (UC) >> ( shift0 - 6 ) ) & 0x3f ); \
|
||||
EMITTER(lead); \
|
||||
EMITTER(second); \
|
||||
if (BITS > 6*2) { \
|
||||
const unsigned char next = \
|
||||
0x80 | ( ( (UC) >> ( shift0 - 6*2 ) ) & 0x3f ); \
|
||||
EMITTER(next); \
|
||||
if (BITS > 6*3) { \
|
||||
const unsigned char next = \
|
||||
0x80 | ( ( (UC) >> ( shift0 - 6*3 ) ) & 0x3f ); \
|
||||
EMITTER(next); \
|
||||
if (BITS > 6*4) { \
|
||||
const unsigned char next = \
|
||||
0x80 | ( ( (UC) >> ( shift0 - 6*4 ) ) & 0x3f ); \
|
||||
EMITTER(next); \
|
||||
if (BITS > 6*5) { \
|
||||
const unsigned char next = \
|
||||
0x80 | ( ( (UC) >> ( shift0 - 6*5 ) ) & 0x3f ); \
|
||||
EMITTER(next); \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
} \
|
||||
#define ADD_FIRST_SEQ(UC, LEN, EMITTER) do { \
|
||||
/* first octet */ \
|
||||
const unsigned char lead = \
|
||||
/* leading bits: LEN "1" bits */ \
|
||||
~ ( ( 1 << (unsigned) ( 8 - LEN ) ) - 1 ) \
|
||||
/* encoded bits */ \
|
||||
| ( (UC) >> (unsigned) ( ( LEN - 1 ) * 6 ) ); \
|
||||
EMITTER(lead); \
|
||||
} while(0)
|
||||
|
||||
#define ADD_NEXT_SEQ(UC, SHIFT, EMITTER) do { \
|
||||
/* further bytes are encoding 6 bits */ \
|
||||
const unsigned char next = \
|
||||
0x80 | ( ( (UC) >> SHIFT ) & 0x3f ); \
|
||||
EMITTER(next); \
|
||||
} while(0)
|
||||
|
||||
/* UC is a constant. EMITTER is a macro function taking an unsigned int. */
|
||||
@@ -768,15 +757,30 @@ static unsigned int nlz8(unsigned char x) {
|
||||
if ((UC) < 0x80) { \
|
||||
EMITTER(((unsigned char) (UC))); \
|
||||
} else if ((UC) < 0x0800) { \
|
||||
ADD_SEQ(UC, 11, EMITTER); \
|
||||
ADD_FIRST_SEQ(UC, 2, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 0, EMITTER); \
|
||||
} else if ((UC) < 0x10000) { \
|
||||
ADD_SEQ(UC, 16, EMITTER); \
|
||||
ADD_FIRST_SEQ(UC, 3, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 6, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 0, EMITTER); \
|
||||
} else if ((UC) < 0x200000) { \
|
||||
ADD_SEQ(UC, 21, EMITTER); \
|
||||
ADD_FIRST_SEQ(UC, 4, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 12, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 6, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 0, EMITTER); \
|
||||
} else if ((UC) < 0x4000000) { \
|
||||
ADD_SEQ(UC, 26, EMITTER); \
|
||||
ADD_FIRST_SEQ(UC, 5, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 18, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 12, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 6, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 0, EMITTER); \
|
||||
} else { \
|
||||
ADD_SEQ(UC, 31, EMITTER); \
|
||||
ADD_FIRST_SEQ(UC, 6, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 24, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 18, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 12, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 6, EMITTER); \
|
||||
ADD_NEXT_SEQ(UC, 0, EMITTER); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
@@ -967,31 +971,36 @@ char *hts_convertStringUTF8ToIDNA(const char *s, size_t size) {
|
||||
if (HTS_IS_LEADING_UTF8(c)) {
|
||||
/* commit sequence ? */
|
||||
if (utfSeq != (size_t) -1) {
|
||||
/* unicode character */
|
||||
punycode_uint uc = 0;
|
||||
|
||||
/* Reader: can read bytes up to j */
|
||||
#define RD ( utfSeq < j ? segData[utfSeq++] : -1 )
|
||||
|
||||
/* Writer: upon error, return FFFD (replacement character) */
|
||||
#define WR(C) uc = C != -1 ? (punycode_uint) C : (punycode_uint) 0xfffd
|
||||
#define WR(C) do { \
|
||||
if ((C) != -1) { \
|
||||
/* copy character */ \
|
||||
assertf(segOutputSize < segSize); \
|
||||
segInt[segOutputSize++] = (C); \
|
||||
} \
|
||||
/* In case of error, abort. */ \
|
||||
else { \
|
||||
FREE_BUFFER(); \
|
||||
return NULL; \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
/* Read Unicode character. */
|
||||
/* Read/Write Unicode character. */
|
||||
READ_UNICODE(RD, WR);
|
||||
#undef RD
|
||||
#undef WR
|
||||
|
||||
/* copy character */
|
||||
assert(segOutputSize < segSize);
|
||||
segInt[segOutputSize++] = uc;
|
||||
|
||||
/* not anymore in sequence */
|
||||
utfSeq = (size_t) -1;
|
||||
}
|
||||
|
||||
/* ascii ? */
|
||||
if (c < 0x80) {
|
||||
assert(segOutputSize < segSize);
|
||||
assertf(segOutputSize < segSize);
|
||||
segInt[segOutputSize] = c;
|
||||
if (c != 0) {
|
||||
segOutputSize++;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
|
||||
128
src/htsconcat.c
Normal file
128
src/htsconcat.c
Normal file
@@ -0,0 +1,128 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Important notes:
|
||||
|
||||
- We hereby ask people using this source NOT to use it in purpose of grabbing
|
||||
emails addresses, or collecting any other private information on persons.
|
||||
This would disgrace our work, and spoil the many hours we spent on it.
|
||||
|
||||
Please visit our Website: http://www.httrack.com
|
||||
*/
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/* File: Subroutines */
|
||||
/* Author: Xavier Roche */
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "httrack.h"
|
||||
#include "httrack-library.h"
|
||||
|
||||
// concat, concatène deux chaines et renvoi le résultat
|
||||
// permet d'alléger grandement le code
|
||||
#undef concat
|
||||
HTSEXT_API char *concat(char *catbuff, size_t size, const char *a, const char *b) {
|
||||
size_t max = 0;
|
||||
|
||||
RUNTIME_TIME_CHECK_SIZE(size);
|
||||
|
||||
catbuff[0] = '\0';
|
||||
if (a != NULL && a[0] != '\0') {
|
||||
max += strlen(a);
|
||||
if (max + 1 >= size) {
|
||||
return catbuff;
|
||||
}
|
||||
strcat(catbuff, a);
|
||||
}
|
||||
if (b != NULL && b[0] != '\0') {
|
||||
max += strlen(b);
|
||||
if (max + 1 >= size) {
|
||||
return catbuff;
|
||||
}
|
||||
strcat(catbuff, b);
|
||||
}
|
||||
return catbuff;
|
||||
}
|
||||
|
||||
// conversion fichier / -> antislash
|
||||
static char *__fconv(char *a) {
|
||||
#if HTS_DOSNAME
|
||||
int i;
|
||||
|
||||
for(i = 0; a[i] != 0; i++)
|
||||
if (a[i] == '/') // Unix-to-DOS style
|
||||
a[i] = '\\';
|
||||
#endif
|
||||
return a;
|
||||
}
|
||||
|
||||
#undef fconcat
|
||||
#undef concat
|
||||
HTSEXT_API char *fconcat(char *catbuff, size_t size, const char *a, const char *b) {
|
||||
RUNTIME_TIME_CHECK_SIZE(size);
|
||||
return __fconv(concat(catbuff, size, a, b));
|
||||
}
|
||||
|
||||
#undef fconv
|
||||
HTSEXT_API char *fconv(char *catbuff, size_t size, const char *a) {
|
||||
RUNTIME_TIME_CHECK_SIZE(size);
|
||||
return __fconv(concat(catbuff, size, a, ""));
|
||||
}
|
||||
|
||||
/* / et \\ en / */
|
||||
static char *__fslash(char *a) {
|
||||
int i;
|
||||
|
||||
for(i = 0; a[i] != 0; i++)
|
||||
if (a[i] == '\\') // convertir
|
||||
a[i] = '/';
|
||||
return a;
|
||||
}
|
||||
|
||||
#undef fslash
|
||||
char *fslash(char *catbuff, size_t size, const char *a) {
|
||||
RUNTIME_TIME_CHECK_SIZE(size);
|
||||
return __fslash(concat(catbuff, size, a, NULL));
|
||||
}
|
||||
|
||||
// extension : html,gif..
|
||||
HTSEXT_API const char *get_ext(char *catbuff, size_t size, const char *fil) {
|
||||
size_t i, last;
|
||||
|
||||
RUNTIME_TIME_CHECK_SIZE(size);
|
||||
|
||||
for(i = 0, last = 0 ; fil[i] != '\0' && fil[i] != '?' ; i++) {
|
||||
if (fil[i] == '.') {
|
||||
last = i + 1;
|
||||
}
|
||||
}
|
||||
|
||||
if (last != 0 && i > last) {
|
||||
const size_t len = i - last;
|
||||
if (len < size) {
|
||||
catbuff[0] = '\0';
|
||||
strncat(catbuff, &fil[last], size);
|
||||
return catbuff;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
|
||||
921
src/htscore.c
921
src/htscore.c
File diff suppressed because it is too large
Load Diff
182
src/htscore.h
182
src/htscore.h
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -123,84 +123,30 @@ typedef struct filecreate_params filecreate_params;
|
||||
|
||||
// gestion hashage
|
||||
#include "htshash.h"
|
||||
#include "htsinthash.h"
|
||||
#include "coucal.h"
|
||||
|
||||
#include "htsdefines.h"
|
||||
|
||||
#include "hts-indextmpl.h"
|
||||
|
||||
// structure d'un lien
|
||||
#ifndef HTS_DEF_FWSTRUCT_lien_url
|
||||
#define HTS_DEF_FWSTRUCT_lien_url
|
||||
typedef struct lien_url lien_url;
|
||||
// adr, fil
|
||||
#ifndef HTS_DEF_FWSTRUCT_lien_adrfil
|
||||
#define HTS_DEF_FWSTRUCT_lien_adrfil
|
||||
typedef struct lien_adrfil lien_adrfil;
|
||||
#endif
|
||||
struct lien_url {
|
||||
char firstblock; // flag 1=premier malloc
|
||||
char link_import; // lien importé à la suite d'un moved - ne pas appliquer les règles classiques up/down
|
||||
int depth; // profondeur autorisée lien ; >0 forte 0=faible
|
||||
int pass2; // traiter après les autres, seconde passe. si == -1, lien traité en background
|
||||
int premier; // pointeur sur le premier lien qui a donné lieu aux autres liens du domaine
|
||||
int precedent; // pointeur sur le lien qui a donné lieu à ce lien précis
|
||||
//int moved; // pointeur sur moved
|
||||
int retry; // nombre de retry restants
|
||||
int testmode; // mode test uniquement, envoyer juste un head!
|
||||
char *adr; // adresse
|
||||
char *fil; // nom du fichier distant
|
||||
char *sav; // nom à sauver sur disque (avec chemin éventuel)
|
||||
char *cod; // chemin codebase éventuel si classe java
|
||||
char *former_adr; // adresse initiale (avant éventuel moved), peut être nulle
|
||||
char *former_fil; // nom du fichier distant initial (avant éventuel moved), peut être nul
|
||||
struct lien_adrfil {
|
||||
char adr[HTS_URLMAXSIZE * 2]; // adresse
|
||||
char fil[HTS_URLMAXSIZE * 2]; // nom du fichier distant
|
||||
};
|
||||
|
||||
// chargement de fichiers en 'arrière plan'
|
||||
#ifndef HTS_DEF_FWSTRUCT_lien_back
|
||||
#define HTS_DEF_FWSTRUCT_lien_back
|
||||
typedef struct lien_back lien_back;
|
||||
#endif
|
||||
struct lien_back {
|
||||
#if DEBUG_CHECKINT
|
||||
char magic;
|
||||
#endif
|
||||
char url_adr[HTS_URLMAXSIZE * 2]; // adresse
|
||||
char url_fil[HTS_URLMAXSIZE * 2]; // nom du fichier distant
|
||||
char url_sav[HTS_URLMAXSIZE * 2]; // nom à sauver sur disque (avec chemin éventuel)
|
||||
char referer_adr[HTS_URLMAXSIZE * 2]; // adresse host page referer
|
||||
char referer_fil[HTS_URLMAXSIZE * 2]; // fichier page referer
|
||||
char location_buffer[HTS_URLMAXSIZE * 2]; // "location" en cas de "moved" (302,..)
|
||||
char *tmpfile; // nom à sauver temporairement (compressé)
|
||||
char tmpfile_buffer[HTS_URLMAXSIZE * 2]; // buffer pour le nom à sauver temporairement
|
||||
char send_too[1024]; // données à envoyer en même temps que le header
|
||||
int status; // status (-1=non utilisé, 0: prêt, >0: opération en cours)
|
||||
int locked; // locked (to be used soon)
|
||||
int testmode; // mode de test
|
||||
int timeout; // gérer des timeouts? (!=0 : nombre de secondes)
|
||||
TStamp timeout_refresh; // si oui, time refresh
|
||||
int rateout; // timeout refresh? (!=0 : taux minimum toléré en octets/s)
|
||||
TStamp rateout_time; // si oui, date de départ
|
||||
LLint maxfile_nonhtml; // taille max d'un fichier non html
|
||||
LLint maxfile_html; // idem pour un ficheir html
|
||||
htsblk r; // structure htsblk de chaque objet en background
|
||||
int is_update; // mode update
|
||||
int head_request; // requète HEAD?
|
||||
LLint range_req_size; // range utilisé
|
||||
TStamp ka_time_start; // refresh time for KA
|
||||
//
|
||||
int http11; // L'en tête doit être signé HTTP/1.1 et non HTTP/1.0
|
||||
int is_chunk; // chunk?
|
||||
char *chunk_adr; // adresse chunk en cours de chargement
|
||||
LLint chunk_size; // taille chunk en cours de chargement
|
||||
LLint chunk_blocksize; // taille data declaree par le chunk
|
||||
LLint compressed_size; // taille compressés (stats uniquement)
|
||||
//
|
||||
//int links_index; // to access liens[links_index]
|
||||
//
|
||||
char info[256]; // éventuel status pour le ftp
|
||||
int stop_ftp; // flag stop pour ftp
|
||||
int finalized; // finalized (optim memory)
|
||||
int early_add; // was added before link heap saw it
|
||||
#if DEBUG_CHECKINT
|
||||
char magic2;
|
||||
// adr, fil, save
|
||||
#ifndef HTS_DEF_FWSTRUCT_lien_adrfilsave
|
||||
#define HTS_DEF_FWSTRUCT_lien_adrfilsave
|
||||
typedef struct lien_adrfilsave lien_adrfilsave;
|
||||
#endif
|
||||
struct lien_adrfilsave {
|
||||
lien_adrfil af;
|
||||
char save[HTS_URLMAXSIZE * 2]; // nom à sauver sur disque (avec chemin éventuel)
|
||||
};
|
||||
|
||||
#ifndef HTS_DEF_FWSTRUCT_struct_back
|
||||
@@ -210,7 +156,7 @@ typedef struct struct_back struct_back;
|
||||
struct struct_back {
|
||||
lien_back *lnk;
|
||||
int count;
|
||||
inthash ready;
|
||||
coucal ready;
|
||||
LLint ready_size_bytes;
|
||||
};
|
||||
|
||||
@@ -232,9 +178,9 @@ struct cache_back {
|
||||
FILE *txt; // liste des fichiers (info)
|
||||
char lastmodified[256];
|
||||
// HASH
|
||||
inthash hashtable;
|
||||
coucal hashtable;
|
||||
// HASH for tests (naming subsystem)
|
||||
inthash cached_tests;
|
||||
coucal cached_tests;
|
||||
// fichiers log optionnels
|
||||
FILE *log;
|
||||
FILE *errlog;
|
||||
@@ -255,13 +201,13 @@ typedef struct hash_struct hash_struct;
|
||||
#endif
|
||||
struct hash_struct {
|
||||
/* Links big array reference */
|
||||
const lien_url **liens;
|
||||
const lien_url *const*const*liens;
|
||||
/* Savename (case insensitive ; lowercased) */
|
||||
inthash sav;
|
||||
coucal sav;
|
||||
/* Address and path */
|
||||
inthash adrfil;
|
||||
coucal adrfil;
|
||||
/* Former address and path */
|
||||
inthash former_adrfil;
|
||||
coucal former_adrfil;
|
||||
/** Buffers **/
|
||||
int normalized;
|
||||
char normfil[HTS_URLMAXSIZE * 2];
|
||||
@@ -278,6 +224,20 @@ struct filecreate_params {
|
||||
char path[HTS_URLMAXSIZE * 2];
|
||||
};
|
||||
|
||||
/* Access macros. */
|
||||
#define heap(N) (opt->liens[N])
|
||||
#define heap_top_index() (opt->lien_tot - 1)
|
||||
#define heap_top() (heap(heap_top_index()))
|
||||
#define urladr() (heap(ptr)->adr)
|
||||
#define urlfil() (heap(ptr)->fil)
|
||||
#define savename() (heap(ptr)->sav)
|
||||
#define parenturladr() (heap(heap(ptr)->precedent)->adr)
|
||||
#define parenturlfil() (heap(heap(ptr)->precedent)->fil)
|
||||
#define parentsavename() (heap(heap(ptr)->precedent)->sav)
|
||||
#define relativeurladr() ((!parent_relative)?urladr():parenturladr())
|
||||
#define relativeurlfil() ((!parent_relative)?urlfil():parenturlfil())
|
||||
#define relativesavename() ((!parent_relative)?savename():parentsavename())
|
||||
|
||||
/* Library internal definictions */
|
||||
#ifdef HTS_INTERNAL_BYTECODE
|
||||
|
||||
@@ -298,31 +258,25 @@ HTS_STATIC int cache_readable(cache_back * cache) {
|
||||
/* Library internal definictions */
|
||||
#ifdef HTS_INTERNAL_BYTECODE
|
||||
|
||||
//
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API int hts_is_parsing(httrackp * opt, int flag);
|
||||
HTSEXT_API int hts_is_testing(httrackp * opt);
|
||||
HTSEXT_API int hts_addurl(httrackp * opt, char **url);
|
||||
HTSEXT_API int hts_resetaddurl(httrackp * opt);
|
||||
HTSEXT_API int copy_htsopt(const httrackp * from, httrackp * to);
|
||||
HTSEXT_API char *hts_errmsg(httrackp * opt);
|
||||
HTSEXT_API int hts_setpause(httrackp * opt, int);
|
||||
|
||||
//
|
||||
HTSEXT_API int hts_is_exiting(httrackp * opt);
|
||||
HTSEXT_API int hts_request_stop(httrackp * opt, int force);
|
||||
|
||||
//
|
||||
HTSEXT_API int hts_cancel_file_push(httrackp * opt, const char *url);
|
||||
HTSEXT_API void hts_cancel_test(httrackp * opt);
|
||||
HTSEXT_API void hts_cancel_parsing(httrackp * opt);
|
||||
#endif
|
||||
|
||||
char *hts_cancel_file_pop(httrackp * opt);
|
||||
|
||||
#endif
|
||||
|
||||
//
|
||||
// add a link on the heap
|
||||
int hts_record_link(httrackp * opt,
|
||||
const char *address, const char *file, const char *save,
|
||||
const char *ref_address, const char *ref_file,
|
||||
const char *codebase);
|
||||
|
||||
// index of the latest added link
|
||||
size_t hts_record_link_latest(httrackp *opt);
|
||||
|
||||
// invalidate an entry
|
||||
void hts_invalidate_link(httrackp * opt, int lpos);
|
||||
|
||||
// wipe all records
|
||||
void hts_record_init(httrackp *opt);
|
||||
void hts_record_free(httrackp *opt);
|
||||
|
||||
//int httpmirror(char* url,int level,httrackp opt);
|
||||
int httpmirror(char *url1, httrackp * opt);
|
||||
@@ -332,8 +286,7 @@ int filesave(httrackp * opt, const char *adr, int len, const char *s,
|
||||
char *hts_cancel_file_pop(httrackp * opt);
|
||||
int check_fatal_io_errno(void);
|
||||
int engine_stats(void);
|
||||
void host_ban(httrackp * opt, lien_url ** liens, int ptr, int lien_tot,
|
||||
struct_back * sback, char *host);
|
||||
void host_ban(httrackp * opt, int ptr, struct_back * sback, const char *host);
|
||||
FILE *filecreate(filenote_strc * strct, const char *s);
|
||||
FILE *fileappend(filenote_strc * strct, const char *s);
|
||||
int filecreateempty(filenote_strc * strct, const char *filename);
|
||||
@@ -345,19 +298,14 @@ void usercommand(httrackp * opt, int exe, const char *cmd, const char *file,
|
||||
void usercommand_exe(const char *cmd, const char *file);
|
||||
int filters_init(char ***ptrfilters, int maxfilter, int filterinc);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API int structcheck(const char *path);
|
||||
HTSEXT_API int structcheck_utf8(const char *path);
|
||||
HTSEXT_API int dir_exists(const char *path);
|
||||
#endif
|
||||
int fspc(httrackp * opt, FILE * fp, const char *type);
|
||||
char *next_token(char *p, int flag);
|
||||
|
||||
//
|
||||
char *readfile(char *fil);
|
||||
char *readfile2(char *fil, LLint * size);
|
||||
char *readfile_utf8(char *fil);
|
||||
char *readfile_or(char *fil, char *defaultdata);
|
||||
char *readfile(const char *fil);
|
||||
char *readfile2(const char *fil, LLint * size);
|
||||
char *readfile_utf8(const char *fil);
|
||||
char *readfile_or(const char *fil, const char *defaultdata);
|
||||
|
||||
#if 0
|
||||
void check_rate(TStamp stat_timestart, int maxrate);
|
||||
@@ -371,18 +319,11 @@ int liens_record(char *adr, char *fil, char *save, char *former_adr,
|
||||
int back_pluggable_sockets(struct_back * sback, httrackp * opt);
|
||||
int back_pluggable_sockets_strict(struct_back * sback, httrackp * opt);
|
||||
int back_fill(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
lien_url ** liens, int ptr, int numero_passe, int lien_tot);
|
||||
int backlinks_done(struct_back * sback, lien_url ** liens, int lien_tot,
|
||||
int ptr);
|
||||
int ptr, int numero_passe);
|
||||
int backlinks_done(const struct_back * sback, lien_url ** liens,
|
||||
int lien_tot, int ptr);
|
||||
int back_fillmax(struct_back * sback, httrackp * opt, cache_back * cache,
|
||||
lien_url ** liens, int ptr, int numero_passe, int lien_tot);
|
||||
|
||||
// cancel file
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API int hts_cancel_file_push(httrackp * opt, const char *url);
|
||||
HTSEXT_API void hts_cancel_test(httrackp * opt);
|
||||
HTSEXT_API void hts_cancel_parsing(httrackp * opt);
|
||||
#endif
|
||||
int ptr, int numero_passe);
|
||||
|
||||
int ask_continue(httrackp * opt);
|
||||
int nombre_digit(int n);
|
||||
@@ -406,7 +347,6 @@ int htsAddLink(htsmoduleStruct * str, char *link);
|
||||
|
||||
// Void
|
||||
void voidf(void);
|
||||
|
||||
#define HTS_TOPINDEX "TOP_INDEX_HTTRACK"
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -45,6 +45,7 @@ Please visit our Website: http://www.httrack.com
|
||||
#include "htszlib.h"
|
||||
#include "htscharset.h"
|
||||
#include "htsencoding.h"
|
||||
#include "htsmd5.h"
|
||||
|
||||
#include <ctype.h>
|
||||
#if USE_BEGINTHREAD
|
||||
@@ -85,7 +86,11 @@ extern int IPV6_resolver;
|
||||
ptr += (int) (strlen(argv[0])+2); \
|
||||
argc++
|
||||
|
||||
#define htsmain_free() do { if (url != NULL) { free(url); } } while(0)
|
||||
#define htsmain_free() do { \
|
||||
if (url != NULL) { \
|
||||
free(url); \
|
||||
} \
|
||||
} while(0)
|
||||
|
||||
#define ensureUrlCapacity(url, urlsize, size) do { \
|
||||
if (urlsize < size || url == NULL) { \
|
||||
@@ -125,8 +130,38 @@ HTSEXT_API int hts_main(int argc, char **argv) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
// very minimalistic internal tests
|
||||
static void basic_selftests(void) {
|
||||
// BUG 756328
|
||||
const char *const source = "/intent/tweet?url=https%3A%2F%2Fwww.httrack.com%2Fvacatures%2F1562519%2Fmedewerker-data-services&text=Medewerker+Data+Services&via=httrackcom";
|
||||
char buffer[1024];
|
||||
fil_normalized(source, buffer);
|
||||
// MD5 selftests
|
||||
md5selftest();
|
||||
}
|
||||
|
||||
static int hts_main_internal(int argc, char **argv, httrackp * opt);
|
||||
|
||||
// Main, récupère les paramètres et appelle le robot
|
||||
HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
int code;
|
||||
|
||||
// Set ended state (3.48-14)
|
||||
hts_mutexlock(&opt->state.lock);
|
||||
opt->state.is_ended = 0;
|
||||
hts_mutexrelease(&opt->state.lock);
|
||||
|
||||
code = hts_main_internal(argc, argv, opt);
|
||||
|
||||
// Set ended state (3.48-14)
|
||||
hts_mutexlock(&opt->state.lock);
|
||||
opt->state.is_ended = 1;
|
||||
hts_mutexrelease(&opt->state.lock);
|
||||
|
||||
return code;
|
||||
}
|
||||
|
||||
static int hts_main_internal(int argc, char **argv, httrackp * opt) {
|
||||
char **x_argv = NULL; // Patch pour argv et argc: en cas de récupération de ligne de commande
|
||||
char *x_argvblk = NULL; // (reprise ou update)
|
||||
int x_ptr = 0; // offset
|
||||
@@ -180,7 +215,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
#ifndef HTS_HTTRACKDIR
|
||||
{
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
char *path = fslash(catbuff, argv[0]);
|
||||
char *path = fslash(catbuff, sizeof(catbuff), argv[0]);
|
||||
char *a;
|
||||
|
||||
if ((a = strrchr(path, '/'))) {
|
||||
@@ -451,15 +486,18 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
else {
|
||||
if ((!fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/doit.log"))) || (argv_url > 0)) {
|
||||
if (!optinclude_file
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), HTS_HTTRACKRC),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), HTS_HTTRACKRC),
|
||||
&argc, argv, x_argvblk, &x_ptr))
|
||||
if (!optinclude_file(HTS_HTTRACKRC, &argc, argv, x_argvblk, &x_ptr)) {
|
||||
if (!optinclude_file
|
||||
(fconcat(OPT_GET_BUFF(opt), hts_gethome(), "/" HTS_HTTRACKRC),
|
||||
(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
hts_gethome(), "/" HTS_HTTRACKRC),
|
||||
&argc, argv, x_argvblk, &x_ptr)) {
|
||||
#ifdef HTS_HTTRACKCNF
|
||||
optinclude_file(HTS_HTTRACKCNF, &argc, argv, x_argvblk, &x_ptr);
|
||||
@@ -478,11 +516,13 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
/* load doit.log and insert in current command line */
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/doit.log"))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-cache/doit.log"))
|
||||
&& (argv_url <= 0)) {
|
||||
FILE *fp =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/doit.log"), "rb");
|
||||
if (fp) {
|
||||
int insert_after = 1; /* insérer après nom au début */
|
||||
@@ -529,48 +569,58 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
#endif
|
||||
if (!fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.zip"))) {
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-cache/new.zip"))) {
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/old.zip"))) {
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-cache/old.zip"))) {
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"));
|
||||
}
|
||||
} else
|
||||
if ((!fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.dat")))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-cache/new.dat")))
|
||||
||
|
||||
(!fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx")))) {
|
||||
if ((fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/old.dat")))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-cache/old.dat")))
|
||||
&&
|
||||
(fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx")))) {
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"));
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
//remove(fconcat(StringBuff(opt->path_log),"hts-cache/new.lst"));
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"));
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
//rename(fconcat(StringBuff(opt->path_log),"hts-cache/old.lst"),fconcat(StringBuff(opt->path_log),"hts-cache/new.lst"));
|
||||
@@ -581,17 +631,20 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
if (!opt->quiet) {
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-in_progress.lock"))) {
|
||||
/* Old cache */
|
||||
if ((fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat")))
|
||||
&&
|
||||
(fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx")))) {
|
||||
if (opt->log != NULL) {
|
||||
fprintf(opt->log, "Warning!\n");
|
||||
@@ -623,109 +676,109 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
strcpybuff(argv[i] + 1, "");
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-log.txt")))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-log.txt")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-log.txt"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-err.txt")))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-err.txt")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-err.txt"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_html), "index.html")))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_html), "index.html")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_html),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_html),
|
||||
"index.html"));
|
||||
/* */
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.lst"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.lst")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.lst"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.txt"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.txt")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.txt"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/doit.log")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/doit.log"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-in_progress.lock")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-in_progress.lock"));
|
||||
rmdir(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache"));
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache"));
|
||||
//
|
||||
} else if (strfield2(argv[i] + 2, "catchurl")) { // capture d'URL via proxy temporaire!
|
||||
argv_url = 1; // forcer a passer les parametres
|
||||
@@ -879,22 +932,27 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
// Présence d'un cache, que faire?..
|
||||
if ((fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.zip")))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-cache/new.zip")))
|
||||
||
|
||||
(fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/new.dat"))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-cache/new.dat"))
|
||||
&&
|
||||
fexist(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx")))
|
||||
) { // il existe déja un cache précédent.. renommer
|
||||
if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache/doit.log"))) { // un cache est présent
|
||||
if (fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-cache/doit.log"))) { // un cache est présent
|
||||
if (x_argvblk != NULL) {
|
||||
int m;
|
||||
|
||||
// établir mode - mode cache: 1 (cache valide) 2 (cache à vérifier)
|
||||
if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-in_progress.lock"))) { // cache prioritaire
|
||||
if (fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-in_progress.lock"))) { // cache prioritaire
|
||||
m = 1;
|
||||
} else {
|
||||
m = 2;
|
||||
@@ -952,23 +1010,24 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
}
|
||||
} else { // plus de 2 paramètres
|
||||
// un fichier log existe?
|
||||
if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-in_progress.lock"))) { // fichier lock?
|
||||
if (fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log), "hts-in_progress.lock"))) { // fichier lock?
|
||||
//char s[32];
|
||||
|
||||
opt->cache = 1; // cache prioritaire
|
||||
if (opt->quiet == 0) {
|
||||
if ((fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip")))
|
||||
||
|
||||
(fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"))
|
||||
&&
|
||||
fexist(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx")))
|
||||
) {
|
||||
HT_REQUEST_START;
|
||||
@@ -987,22 +1046,22 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
} else
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_html), "index.html"))) {
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_html), "index.html"))) {
|
||||
//char s[32];
|
||||
opt->cache = 2; // cache vient après test de validité
|
||||
if (opt->quiet == 0) {
|
||||
if ((fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip")))
|
||||
||
|
||||
(fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"))
|
||||
&&
|
||||
fexist(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx")))
|
||||
) {
|
||||
HT_REQUEST_START;
|
||||
@@ -1959,8 +2018,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
int found = 0;
|
||||
char *filter = NULL;
|
||||
cache_back cache;
|
||||
inthash cache_hashtable = inthash_new(0);
|
||||
int backupXFR = htsMemoryFastXfr;
|
||||
coucal cache_hashtable = coucal_new(0);
|
||||
int sendb = 0;
|
||||
|
||||
if (isdigit((unsigned char) *(com + 1))) {
|
||||
@@ -1974,7 +2032,6 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
hasFilter = 1;
|
||||
filter = argv[na];
|
||||
}
|
||||
htsMemoryFastXfr = 1; /* fast load */
|
||||
|
||||
memset(&cache, 0, sizeof(cache_back));
|
||||
cache.type = 1; // cache?
|
||||
@@ -1984,14 +2041,13 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
cache.hashtable = (void *) cache_hashtable; /* copy backcache hash */
|
||||
cache.ro = 1; /* read only */
|
||||
if (cache.hashtable) {
|
||||
char BIGSTK adr[HTS_URLMAXSIZE * 2];
|
||||
char BIGSTK fil[HTS_URLMAXSIZE * 2];
|
||||
lien_adrfilsave afs;
|
||||
char BIGSTK url[HTS_URLMAXSIZE * 2];
|
||||
char linepos[256];
|
||||
int pos;
|
||||
char *cacheNdx =
|
||||
readfile(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
cache_init(&cache, opt); /* load cache */
|
||||
if (cacheNdx != NULL) {
|
||||
@@ -2008,52 +2064,50 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
/* */
|
||||
a++;
|
||||
/* read "host/file" */
|
||||
a += binput(a, adr, HTS_URLMAXSIZE);
|
||||
a += binput(a, fil, HTS_URLMAXSIZE);
|
||||
a += binput(a, afs.af.adr, HTS_URLMAXSIZE);
|
||||
a += binput(a, afs.af.fil, HTS_URLMAXSIZE);
|
||||
url[0] = '\0';
|
||||
if (!link_has_authority(adr))
|
||||
if (!link_has_authority(afs.af.adr))
|
||||
strcatbuff(url, "http://");
|
||||
strcatbuff(url, adr);
|
||||
strcatbuff(url, fil);
|
||||
strcatbuff(url, afs.af.adr);
|
||||
strcatbuff(url, afs.af.fil);
|
||||
/* read position */
|
||||
a += binput(a, linepos, 200);
|
||||
sscanf(linepos, "%d", &pos);
|
||||
if (!hasFilter
|
||||
|| (strjoker(url, filter, NULL, NULL) != NULL)
|
||||
) {
|
||||
r = cache_read_ro(opt, &cache, adr, fil, "", NULL); // lire entrée cache + data
|
||||
r = cache_read_ro(opt, &cache, afs.af.adr, afs.af.fil, "", NULL); // lire entrée cache + data
|
||||
if (r.statuscode != -1) { // No errors
|
||||
found++;
|
||||
if (!hasFilter) {
|
||||
fprintf(stdout, "%s%s%s\r\n",
|
||||
(link_has_authority(adr)) ? "" :
|
||||
"http://", adr, fil);
|
||||
(link_has_authority(afs.af.adr)) ? "" :
|
||||
"http://", afs.af.adr, afs.af.fil);
|
||||
} else {
|
||||
char msg[256], cdate[256];
|
||||
char BIGSTK sav[HTS_URLMAXSIZE * 2];
|
||||
|
||||
infostatuscode(msg, r.statuscode);
|
||||
time_gmt_rfc822(cdate);
|
||||
|
||||
fprintf(stdout, "HTTP/1.1 %d %s\r\n",
|
||||
r.statuscode, r.msg[0] ? r.msg : msg);
|
||||
fprintf(stdout, "X-Host: %s\r\n", adr);
|
||||
fprintf(stdout, "X-File: %s\r\n", fil);
|
||||
fprintf(stdout, "X-Host: %s\r\n", afs.af.adr);
|
||||
fprintf(stdout, "X-File: %s\r\n", afs.af.fil);
|
||||
fprintf(stdout, "X-URL: %s%s%s\r\n",
|
||||
(link_has_authority(adr)) ? "" :
|
||||
"http://", adr, fil);
|
||||
(link_has_authority(afs.af.adr)) ? "" :
|
||||
"http://", afs.af.adr, afs.af.fil);
|
||||
if (url_savename
|
||||
(adr, fil, sav, /*former_adr */ NULL,
|
||||
/*former_fil */ NULL, /*referer_adr */
|
||||
(&afs, /*former */ NULL,
|
||||
/*referer_adr */
|
||||
NULL, /*referer_fil */ NULL,
|
||||
/*opt */ opt, /*liens */ NULL,
|
||||
/*lien_tot */ 0, /*sback */ NULL,
|
||||
/*opt */ opt, /*sback */ NULL,
|
||||
/*cache */ &cache, /*hash */ NULL, /*ptr */
|
||||
0, /*numero_passe */ 0, /*mime_type */
|
||||
NULL) != -1) {
|
||||
if (fexist(sav)) {
|
||||
if (fexist(afs.save)) {
|
||||
fprintf(stdout, "Content-location: %s\r\n",
|
||||
sav);
|
||||
afs.save);
|
||||
}
|
||||
}
|
||||
fprintf(stdout, "Date: %s\r\n", cdate);
|
||||
@@ -2126,7 +2180,6 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
(hasFilter) ? " for '" : "",
|
||||
(hasFilter) ? filter : "", (hasFilter) ? "'" : "");
|
||||
}
|
||||
htsMemoryFastXfr = backupXFR;
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
@@ -2139,13 +2192,8 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
return 0;
|
||||
break;
|
||||
case 'X':
|
||||
#ifndef STRDEBUG
|
||||
fprintf(stderr,
|
||||
"warning: no string debugging support built, option has no effect\n");
|
||||
#endif
|
||||
htsMemoryFastXfr = 1;
|
||||
fprintf(stderr, "warning: option has no effect\n");
|
||||
if (*(com + 1) == '0') {
|
||||
htsMemoryFastXfr = 0;
|
||||
com++;
|
||||
}
|
||||
break;
|
||||
@@ -2157,22 +2205,22 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"))) {
|
||||
name =
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip");
|
||||
} else
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"))) {
|
||||
name =
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip");
|
||||
} else {
|
||||
fprintf(stderr, "* error: no cache found in %s\n",
|
||||
fconcat(OPT_GET_BUFF(opt),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"));
|
||||
return 1;
|
||||
@@ -2180,14 +2228,14 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
fprintf(stderr, "Cache: trying to repair %s\n", name);
|
||||
if (unzRepair
|
||||
(name,
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/repair.zip"),
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/repair.tmp"), &repaired,
|
||||
&repairedBytes) == Z_OK) {
|
||||
unlink(name);
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/repair.zip"), name);
|
||||
fprintf(stderr,
|
||||
"Cache: %d bytes successfully recovered in %d entries\n",
|
||||
@@ -2394,6 +2442,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
return 0;
|
||||
break;
|
||||
case '7': // hashtable selftest: httrack -#7 nb_entries
|
||||
basic_selftests();
|
||||
if (++na < argc) {
|
||||
char *const snum = strdup(argv[na]);
|
||||
unsigned long count = 0;
|
||||
@@ -2487,7 +2536,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
} else {
|
||||
capa <<= 1;
|
||||
}
|
||||
strings = realloc(strings, capa*sizeof(char*));
|
||||
strings = (const char **) realloc((void*) strings, capa*sizeof(char*));
|
||||
}
|
||||
strings[count++] = &buff[last];
|
||||
last = i + 1;
|
||||
@@ -2500,7 +2549,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
|
||||
/* successfully read */
|
||||
if (count > 0) {
|
||||
inthash hashtable = inthash_new(0);
|
||||
coucal hashtable = coucal_new(0);
|
||||
size_t loop;
|
||||
for(loop = 0 ; bench[loop].type != DO_END ; loop++) {
|
||||
size_t i;
|
||||
@@ -2510,7 +2559,11 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
FMT();
|
||||
if (bench[loop].type == DO_ADD
|
||||
|| bench[loop].type == DO_DRY_ADD) {
|
||||
result = inthash_write(hashtable, name, (uintptr_t) expected);
|
||||
size_t k;
|
||||
result = coucal_write(hashtable, name, (uintptr_t) expected);
|
||||
for(k = 0 ; k < /* stash_size*2 */ 32 ; k++) {
|
||||
(void) coucal_write(hashtable, name, (uintptr_t) expected);
|
||||
}
|
||||
/* revert logic */
|
||||
if (bench[loop].type == DO_DRY_ADD) {
|
||||
result = result ? 0 : 1;
|
||||
@@ -2518,7 +2571,11 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
}
|
||||
else if (bench[loop].type == DO_DEL
|
||||
|| bench[loop].type == DO_DRY_DEL) {
|
||||
result = inthash_remove(hashtable, name);
|
||||
size_t k;
|
||||
result = coucal_remove(hashtable, name);
|
||||
for(k = 0 ; k < /* stash_size*2 */ 32 ; k++) {
|
||||
(void) coucal_remove(hashtable, name);
|
||||
}
|
||||
/* revert logic */
|
||||
if (bench[loop].type == DO_DRY_DEL) {
|
||||
result = result ? 0 : 1;
|
||||
@@ -2527,7 +2584,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
else if (bench[loop].type == TEST_ADD
|
||||
|| bench[loop].type == TEST_DEL) {
|
||||
intptr_t value = -1;
|
||||
result = inthash_readptr(hashtable, name, &value);
|
||||
result = coucal_readptr(hashtable, name, &value);
|
||||
if (bench[loop].type == TEST_ADD && result
|
||||
&& value != expected) {
|
||||
fprintf(stderr, "value failed for %s (expected %ld, got %ld)\n",
|
||||
@@ -2550,10 +2607,10 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
}
|
||||
}
|
||||
}
|
||||
inthash_delete(&hashtable);
|
||||
coucal_delete(&hashtable);
|
||||
fprintf(stderr, "all hashtable tests were successful!\n");
|
||||
} else {
|
||||
fprintf(stderr, "Malformed number");
|
||||
fprintf(stderr, "Malformed number\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
#undef FMT
|
||||
@@ -2684,7 +2741,6 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
|
||||
} else { // URL/filters
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
char BIGSTK tempo[CATBUFF_SIZE];
|
||||
const int urlSize = (int) strlen(argv[na]);
|
||||
const int capa = (int) (strlen(url) + urlSize + 32);
|
||||
|
||||
@@ -2693,9 +2749,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
ensureUrlCapacity(url, url_sz, capa);
|
||||
if (strnotempty(url))
|
||||
strcatbuff(url, " "); // espace de séparation
|
||||
strcpybuff(tempo, unescape_http_unharm(catbuff, argv[na], 1));
|
||||
escape_spc_url(tempo);
|
||||
strcatbuff(url, tempo);
|
||||
append_escape_spc_url(unescape_http_unharm(catbuff, sizeof(catbuff), argv[na], 1), url, url_sz);
|
||||
}
|
||||
} // if argv=- etc.
|
||||
|
||||
@@ -2737,37 +2791,37 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
// en cas de présence des deux versions, garder la version la plus avancée,
|
||||
// cad la version contenant le plus de fichiers
|
||||
if (opt->cache) {
|
||||
if (fexist(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-in_progress.lock"))) { // problemes..
|
||||
if (fexist(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-in_progress.lock"))) { // problemes..
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"))) {
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"))) {
|
||||
if (fsize
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip")) < 32768) {
|
||||
if (fsize
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip")) > 65536) {
|
||||
if (fsize
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip")) > fsize(fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip")) > fsize(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->
|
||||
path_log),
|
||||
"hts-cache/new.zip")))
|
||||
{
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"));
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.zip"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.zip"));
|
||||
}
|
||||
@@ -2777,53 +2831,53 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
} else
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"))
|
||||
&&
|
||||
fexist(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"))) {
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"))
|
||||
&&
|
||||
fexist(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"))) {
|
||||
// switcher si new<32Ko et old>65Ko (tailles arbitraires) ?
|
||||
// ce cas est peut être une erreur ou un crash d'un miroir ancien, prendre
|
||||
// alors l'ancien cache
|
||||
if (fsize
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat")) < 32768) {
|
||||
if (fsize
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat")) > 65536) {
|
||||
if (fsize
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat")) > fsize(fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat")) > fsize(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->
|
||||
path_log),
|
||||
"hts-cache/new.dat")))
|
||||
{
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"));
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.dat"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.dat"));
|
||||
rename(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"), fconcat(OPT_GET_BUFF(opt),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/old.ndx"), fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt),
|
||||
StringBuff(opt->path_log),
|
||||
"hts-cache/new.ndx"));
|
||||
//} else { // ne rien faire
|
||||
@@ -2840,7 +2894,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
if (_DEBUG_HEAD) {
|
||||
ioinfo =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-ioinfo.txt"),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-ioinfo.txt"),
|
||||
"wb");
|
||||
}
|
||||
|
||||
@@ -2857,26 +2911,26 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
structcheck(StringBuff(opt->path_log));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-log.txt")))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-log.txt")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-log.txt"));
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-log.txt"));
|
||||
if (fexist
|
||||
(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-err.txt")))
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-err.txt")))
|
||||
remove(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-err.txt"));
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-err.txt"));
|
||||
|
||||
/* Check FS directory structure created */
|
||||
structcheck(StringBuff(opt->path_log));
|
||||
|
||||
opt->log =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-log.txt"),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-log.txt"),
|
||||
"w");
|
||||
if (httrack_logmode == 2)
|
||||
opt->errlog =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-err.txt"),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-err.txt"),
|
||||
"w");
|
||||
else
|
||||
opt->errlog = opt->log;
|
||||
@@ -2884,7 +2938,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
char s[HTS_CDLMAXSIZE + 256];
|
||||
|
||||
sprintf(s, "Unable to create log file %s",
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-log.txt"));
|
||||
HTS_PANIC_PRINTF(s);
|
||||
htsmain_free();
|
||||
@@ -2893,7 +2947,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
char s[HTS_CDLMAXSIZE + 256];
|
||||
|
||||
sprintf(s, "Unable to create log file %s",
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-err.txt"));
|
||||
HTS_PANIC_PRINTF(s);
|
||||
htsmain_free();
|
||||
@@ -2918,7 +2972,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
{
|
||||
FILE *fp =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/readme.txt"), "wb");
|
||||
if (fp) {
|
||||
fprintf(fp, "What's in this folder?" LF);
|
||||
@@ -2943,7 +2997,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
}
|
||||
|
||||
strcpy(n_lock,
|
||||
fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-in_progress.lock"));
|
||||
//sprintf(n_lock,fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log),"hts-in_progress.lock"),n);
|
||||
/*do {
|
||||
@@ -2960,8 +3014,8 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
} */
|
||||
|
||||
// vérifier existence de la structure
|
||||
structcheck(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_html), "/"));
|
||||
structcheck(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "/"));
|
||||
structcheck(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_html), "/"));
|
||||
structcheck(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "/"));
|
||||
|
||||
// reprise/update
|
||||
if (opt->cache) {
|
||||
@@ -2970,15 +3024,15 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
|
||||
#ifdef _WIN32
|
||||
mkdir(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache"));
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache"));
|
||||
#else
|
||||
mkdir(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), "hts-cache"),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), "hts-cache"),
|
||||
HTS_PROTECT_FOLDER);
|
||||
#endif
|
||||
fp =
|
||||
fopen(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
"hts-cache/doit.log"), "wb");
|
||||
if (fp) {
|
||||
for(i = 0 + 1; i < argc; i++) {
|
||||
@@ -3189,7 +3243,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
|
||||
for(dir =
|
||||
opendir(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log),
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log),
|
||||
CACHE_REFNAME));
|
||||
dir != NULL && (entry = readdir(dir)) != NULL;) {
|
||||
if (entry->d_name[0] != '\0' && entry->d_name[0] != '.') {
|
||||
@@ -3197,7 +3251,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
|
||||
sprintf(f, "%s/%s", CACHE_REFNAME, entry->d_name);
|
||||
(void)
|
||||
unlink(fconcat(OPT_GET_BUFF(opt), StringBuff(opt->path_log), f));
|
||||
unlink(fconcat(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), f));
|
||||
}
|
||||
}
|
||||
if (dir != NULL) {
|
||||
@@ -3205,7 +3259,7 @@ HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt) {
|
||||
}
|
||||
(void)
|
||||
rmdir(fconcat
|
||||
(OPT_GET_BUFF(opt), StringBuff(opt->path_log), CACHE_REFNAME));
|
||||
(OPT_GET_BUFF(opt), OPT_GET_BUFF_SIZE(opt), StringBuff(opt->path_log), CACHE_REFNAME));
|
||||
}
|
||||
|
||||
/* Info for wrappers */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -43,11 +43,6 @@ Please visit our Website: http://www.httrack.com
|
||||
|
||||
/* Library internal definictions */
|
||||
#ifdef HTS_INTERNAL_BYTECODE
|
||||
// Main, récupère les paramètres et appelle le robot
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API int hts_main(int argc, char **argv);
|
||||
HTSEXT_API int hts_main2(int argc, char **argv, httrackp * opt);
|
||||
#endif
|
||||
|
||||
int cmdl_opt(char *s);
|
||||
int check_path(String * s, char *defaultname);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -231,8 +231,15 @@ struct t_hts_callback_ref {
|
||||
size_t offset;
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
extern const t_hts_htmlcheck_callbacks default_callbacks;
|
||||
extern const t_hts_callback_ref default_callbacks_ref[];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#define HT_PRINT(A) strcatbuff(opt->state.HTbuff,A);
|
||||
#define HT_REQUEST_START opt->state.HTbuff[0]='\0';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -30,10 +30,9 @@ Please visit our Website: http://www.httrack.com
|
||||
/* Author: Xavier Roche */
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include "htscharset.h"
|
||||
#include "htsencoding.h"
|
||||
#include "htssafe.h"
|
||||
|
||||
/* static int decode_entity(const unsigned int hash, const size_t len);
|
||||
*/
|
||||
@@ -67,7 +66,7 @@ int hts_unescapeEntitiesWithCharset(const char *src, char *dest, const size_t ma
|
||||
int hex;
|
||||
unsigned int hash;
|
||||
|
||||
assert(max != 0);
|
||||
assertf(max != 0);
|
||||
for(i = 0, j = 0, ampStart = (size_t) -1, ampStartDest = 0,
|
||||
uc = -1, hex = 0, hash = 0 ; src[i] != '\0' ; i++) {
|
||||
/* start of entity */
|
||||
@@ -209,8 +208,8 @@ int hts_unescapeUrlSpecial(const char *src, char *dest, const size_t max,
|
||||
int seenQuery = 0;
|
||||
char utfBuffer[32];
|
||||
|
||||
assert(src != dest);
|
||||
assert(max != 0);
|
||||
assertf(src != dest);
|
||||
assertf(max != 0);
|
||||
|
||||
for(i = 0, j = 0, k = 0, utfBufferJ = 0, utfBufferSize = 0,
|
||||
lastI = (size_t) -1, lastJ = (size_t) -1
|
||||
@@ -271,7 +270,7 @@ int hts_unescapeUrlSpecial(const char *src, char *dest, const size_t max,
|
||||
/* First character */
|
||||
if (k == 0) {
|
||||
/* New destination-centric offset of utf-8 buffer beginning */
|
||||
if (i == lastI + 2) { /* just read a %xx */
|
||||
if (lastI != (size_t) -1 && i == lastI + 2) { /* just read a %xx */
|
||||
utfBufferJ = lastJ; /* position of % */
|
||||
} else {
|
||||
utfBufferJ = j; /* current position otherwise */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -86,8 +86,7 @@ extern int hts_unescapeUrl(const char *src, char *dest, const size_t max);
|
||||
* Note: source and destination MUST NOT be the same.
|
||||
* Returns 0 upon success, -1 upon overflow or error.
|
||||
**/
|
||||
extern int hts_unescapeUrlSpecial(const char *src,
|
||||
char *dest, const size_t max,
|
||||
int flags);
|
||||
extern int hts_unescapeUrlSpecial(const char *src, char *dest, const size_t max,
|
||||
const int flags);
|
||||
|
||||
#endif
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -56,7 +56,7 @@ EOF
|
||||
i=$[${i}+1]
|
||||
done
|
||||
echo -e " /* $A */"
|
||||
echo -e " case ${hash}:"
|
||||
echo -e " case ${hash}u:"
|
||||
echo -e " if (len == ${#ent} /* && strncmp(ent, \"${ent}\") == 0 */) {"
|
||||
echo -e " return ${code};"
|
||||
echo -e " }"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -54,7 +54,7 @@ Please visit our Website: http://www.httrack.com
|
||||
// optionnel: taille à contrôller (ou numéro, etc) en pointeur
|
||||
// (en de détection de *size, la taille limite est écrite par dessus *size)
|
||||
// exemple: +-*.gif*[<5] == supprimer GIF si <5KB
|
||||
int fa_strjoker(int type, char **filters, int nfil, char *nom, LLint * size,
|
||||
int fa_strjoker(int type, char **filters, int nfil, const char *nom, LLint * size,
|
||||
int *size_flag, int *depth) {
|
||||
int verdict = 0; // on sait pas
|
||||
int i;
|
||||
@@ -101,7 +101,7 @@ int fa_strjoker(int type, char **filters, int nfil, char *nom, LLint * size,
|
||||
// cet algo est 'un peu' récursif mais ne consomme pas trop de tm
|
||||
// * = toute lettre
|
||||
// --?-- : spécifique à HTTrack et aux ?
|
||||
HTS_INLINE char *strjoker(char *chaine, char *joker, LLint * size,
|
||||
HTS_INLINE const char *strjoker(const char *chaine, const char *joker, LLint * size,
|
||||
int *size_flag) {
|
||||
//int err=0;
|
||||
if (strnotempty(joker) == 0) { // fin de chaine joker
|
||||
@@ -262,7 +262,7 @@ HTS_INLINE char *strjoker(char *chaine, char *joker, LLint * size,
|
||||
|
||||
{
|
||||
int i, max;
|
||||
char *adr;
|
||||
const char *adr;
|
||||
|
||||
// la chaine doit se terminer exactement
|
||||
if (cut) {
|
||||
@@ -335,8 +335,8 @@ HTS_INLINE char *strjoker(char *chaine, char *joker, LLint * size,
|
||||
// exemple: find dans un texte de strcpybuff(*[A-Z,a-z],"*[0-9]"); va rechercher la première occurence
|
||||
// d'un strcpy sur une variable ayant un nom en lettres et copiant une chaine de chiffres
|
||||
// ATTENTION!! Eviter les jokers en début, où gare au temps machine!
|
||||
char *strjokerfind(char *chaine, char *joker) {
|
||||
char *adr;
|
||||
const char *strjokerfind(const char *chaine, const char *joker) {
|
||||
const char *adr;
|
||||
|
||||
while(*chaine) {
|
||||
if ((adr = strjoker(chaine, joker, NULL, NULL))) { // ok trouvé
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -39,11 +39,11 @@ Please visit our Website: http://www.httrack.com
|
||||
|
||||
#include "htsbase.h"
|
||||
|
||||
int fa_strjoker(int type, char **filters, int nfil, char *nom, LLint * size,
|
||||
int fa_strjoker(int type, char **filters, int nfil, const char *nom, LLint * size,
|
||||
int *size_flag, int *depth);
|
||||
HTS_INLINE char *strjoker(char *chaine, char *joker, LLint * size,
|
||||
HTS_INLINE const char *strjoker(const char *chaine, const char *joker, LLint * size,
|
||||
int *size_flag);
|
||||
char *strjokerfind(char *chaine, char *joker);
|
||||
const char *strjokerfind(const char *chaine, const char *joker);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
90
src/htsftp.c
90
src/htsftp.c
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -142,21 +142,17 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
#endif
|
||||
char BIGSTK adr_ip[1024];
|
||||
char *adr, *real_adr;
|
||||
char *ftp_filename = "";
|
||||
const char *ftp_filename = "";
|
||||
int timeout = 300; // timeout
|
||||
int timeout_onfly = 8; // attente réponse supplémentaire
|
||||
int transfer_list = 0; // directory
|
||||
int rest_understood = 0; // rest command understood
|
||||
t_fullhostent fullhostent_buffer; // buffer pour resolver
|
||||
|
||||
//
|
||||
T_SOC soc_ctl = INVALID_SOCKET;
|
||||
T_SOC soc_servdat = INVALID_SOCKET;
|
||||
T_SOC soc_dat = INVALID_SOCKET;
|
||||
|
||||
//
|
||||
SOCaddr server_data;
|
||||
int server_data_size = sizeof(server_data);
|
||||
|
||||
//
|
||||
line_retr[0] = adr_ip[0] = '\0';
|
||||
@@ -217,7 +213,7 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
ftp_filename = a;
|
||||
if (strnotempty(a)) {
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
char *ua = unescape_http(catbuff, a);
|
||||
char *ua = unescape_http(catbuff, sizeof(catbuff), a);
|
||||
int len_a = (int) strlen(ua);
|
||||
|
||||
if (len_a > 0 && ua[len_a - 1] == '/') { /* obviously a directory listing */
|
||||
@@ -249,8 +245,6 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
// connexion
|
||||
{
|
||||
SOCaddr server;
|
||||
int server_size = sizeof(server);
|
||||
t_hostent *hp;
|
||||
char *a;
|
||||
char _adr[256];
|
||||
const char *error = "unknown error";
|
||||
@@ -270,8 +264,7 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
|
||||
// récupérer adresse résolue
|
||||
strcpybuff(back->info, "host name");
|
||||
hp = hts_gethostbyname2(opt, _adr, &fullhostent_buffer, &error);
|
||||
if (hp == NULL) {
|
||||
if (hts_dns_resolve2(opt, _adr, &server, &error) == NULL) {
|
||||
snprintf(back->r.msg, sizeof(back->r.msg),
|
||||
"Unable to get server's address: %s", error);
|
||||
// back->status=STATUS_FTP_READY; // fini
|
||||
@@ -280,12 +273,8 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
}
|
||||
_CHECK_HALT_FTP;
|
||||
|
||||
// copie adresse
|
||||
SOCaddr_copyaddr(server, server_size, hp->h_addr_list[0], hp->h_length);
|
||||
// copie adresse pour cnx data
|
||||
SOCaddr_copyaddr(server_data, server_data_size, hp->h_addr_list[0],
|
||||
hp->h_length);
|
||||
// memcpy(&server.sin_addr, hp->h_addr, hp->h_length);
|
||||
SOCaddr_copy_SOCaddr(server_data, server);
|
||||
|
||||
// créer ("attachement") une socket (point d'accès) internet,en flot
|
||||
soc_ctl = (T_SOC) socket(SOCaddr_sinfamily(server), SOCK_STREAM, 0);
|
||||
@@ -302,12 +291,7 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
// connexion (bloquante, on est en thread)
|
||||
strcpybuff(back->info, "connect");
|
||||
|
||||
#ifdef _WIN32
|
||||
if (connect(soc_ctl, (const struct sockaddr FAR *) &server, server_size) !=
|
||||
0) {
|
||||
#else
|
||||
if (connect(soc_ctl, (struct sockaddr *) &server, server_size) == -1) {
|
||||
#endif
|
||||
if (connect(soc_ctl, &SOCaddr_sockaddr(server), SOCaddr_size(server)) != 0) {
|
||||
strcpybuff(back->r.msg, "Unable to connect to the server");
|
||||
// back->status=STATUS_FTP_READY; // fini
|
||||
back->r.statuscode = STATUSCODE_INVALID;
|
||||
@@ -419,7 +403,7 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
// Pré-REST
|
||||
//
|
||||
#if FTP_PASV
|
||||
if (SOCaddr_getproto(server, server_size) == '1') {
|
||||
if (SOCaddr_getproto(server) == '1') {
|
||||
strcpybuff(back->info, "pasv");
|
||||
snprintf(line, sizeof(line), "PASV");
|
||||
send_line(soc_ctl, line);
|
||||
@@ -528,7 +512,7 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
if (back->r.statuscode != -1) {
|
||||
if (!transfer_list) {
|
||||
char catbuff[CATBUFF_SIZE];
|
||||
char *ua = unescape_http(catbuff, ftp_filename);
|
||||
char *ua = unescape_http(catbuff, sizeof(catbuff), ftp_filename);
|
||||
|
||||
if ((strchr(ua, ' '))
|
||||
|| (strchr(ua, '\"'))
|
||||
@@ -581,7 +565,6 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
if (port_pasv) {
|
||||
SOCaddr server;
|
||||
int server_size = sizeof(server);
|
||||
t_hostent *hp;
|
||||
const char *error = "unknown error";
|
||||
|
||||
// effacer structure
|
||||
@@ -592,16 +575,9 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
|
||||
// résoudre
|
||||
if (adr_ip[0]) {
|
||||
hp = hts_gethostbyname2(opt, adr_ip, &fullhostent_buffer, &error);
|
||||
if (hp) {
|
||||
SOCaddr_copyaddr(server, server_size, hp->h_addr_list[0],
|
||||
hp->h_length);
|
||||
} else {
|
||||
server_size = 0;
|
||||
}
|
||||
hts_dns_resolve2(opt, adr_ip, &server, &error);
|
||||
} else {
|
||||
memcpy(&server, &server_data, sizeof(server_data));
|
||||
server_size = server_data_size;
|
||||
SOCaddr_copy_SOCaddr(server, server_data);
|
||||
}
|
||||
|
||||
// infos
|
||||
@@ -615,15 +591,7 @@ int run_launch_ftp(FTPDownloadStruct * pStruct) {
|
||||
if (soc_dat != INVALID_SOCKET) {
|
||||
// structure: connexion au domaine internet, port 80 (ou autre)
|
||||
SOCaddr_initport(server, port_pasv);
|
||||
// server.sin_port = htons((unsigned short int) port_pasv);
|
||||
#ifdef _WIN32
|
||||
if (connect
|
||||
(soc_dat, (const struct sockaddr FAR *) &server,
|
||||
server_size) == 0) {
|
||||
#else
|
||||
if (connect(soc_dat, (struct sockaddr *) &server, server_size) !=
|
||||
-1) {
|
||||
#endif
|
||||
if (connect(soc_dat, &SOCaddr_sockaddr(server), SOCaddr_size(server)) == 0) {
|
||||
strcpybuff(back->info, "retr");
|
||||
strcpybuff(line, line_retr);
|
||||
send_line(soc_ctl, line);
|
||||
@@ -856,33 +824,19 @@ T_SOC get_datasocket(char *to_send, size_t to_send_size) {
|
||||
to_send[0] = '\0';
|
||||
if (gethostname(h_loc, 256) == 0) { // host name
|
||||
SOCaddr server;
|
||||
int server_size = sizeof(server);
|
||||
t_hostent *hp_loc;
|
||||
t_fullhostent buffer;
|
||||
|
||||
// effacer structure
|
||||
memset(&server, 0, sizeof(server));
|
||||
|
||||
if ((hp_loc = vxgethostbyname(h_loc, &buffer))) { // notre host
|
||||
|
||||
// copie adresse
|
||||
SOCaddr_copyaddr(server, server_size, hp_loc->h_addr_list[0],
|
||||
hp_loc->h_length);
|
||||
|
||||
if (hts_dns_resolve_nocache(h_loc, &server) != NULL) { // notre host
|
||||
if ((soc =
|
||||
(T_SOC) socket(SOCaddr_sinfamily(server), SOCK_STREAM,
|
||||
0)) != INVALID_SOCKET) {
|
||||
|
||||
if (bind(soc, (struct sockaddr *) &server, server_size) == 0) {
|
||||
if (bind(soc, &SOCaddr_sockaddr(server), SOCaddr_size(server)) == 0) {
|
||||
SOCaddr server2;
|
||||
SOClen len;
|
||||
SOClen len = SOCaddr_capacity(server2);
|
||||
|
||||
len = sizeof(server2);
|
||||
// effacer structure
|
||||
memset(&server2, 0, sizeof(server2));
|
||||
if (getsockname(soc, (struct sockaddr *) &server2, &len) == 0) {
|
||||
if (getsockname(soc, &SOCaddr_sockaddr(server2), &len) == 0) {
|
||||
// *port=ntohs(server.sin_port); // récupérer port
|
||||
if (listen(soc, 10) >= 0) { // au pif le 10
|
||||
if (listen(soc, 1) >= 0) {
|
||||
#if HTS_INET6==0
|
||||
unsigned short int a, n1, n2;
|
||||
|
||||
@@ -895,7 +849,7 @@ T_SOC get_datasocket(char *to_send, size_t to_send_size) {
|
||||
char dot[256 + 2];
|
||||
char *a;
|
||||
|
||||
SOCaddr_inetntoa(dot, 256, server2, sizeof(server2));
|
||||
SOCaddr_inetntoa(dot, 256, server2);
|
||||
//
|
||||
dots[0] = '\0';
|
||||
strncatbuff(dots, dot, 128);
|
||||
@@ -913,9 +867,9 @@ T_SOC get_datasocket(char *to_send, size_t to_send_size) {
|
||||
{
|
||||
char dot[256 + 2];
|
||||
|
||||
SOCaddr_inetntoa(dot, 256, server2, len);
|
||||
SOCaddr_inetntoa(dot, 256, server2);
|
||||
snprintf(to_send, to_send_size, "EPRT |%c|%s|%d|",
|
||||
SOCaddr_getproto(server2, len), dot,
|
||||
SOCaddr_getproto(server2), dot,
|
||||
SOCaddr_sinport(server2));
|
||||
}
|
||||
#endif
|
||||
@@ -959,7 +913,7 @@ FILE *dd = NULL;
|
||||
|
||||
// routines de réception/émission
|
||||
// 0 = ERROR
|
||||
int send_line(T_SOC soc, char *data) {
|
||||
int send_line(T_SOC soc, const char *data) {
|
||||
char BIGSTK line[1024];
|
||||
|
||||
if (_DEBUG_HEAD) {
|
||||
@@ -1093,7 +1047,7 @@ int check_socket(T_SOC soc) {
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 0;
|
||||
// poll!
|
||||
select(soc + 1, &fds, NULL, &fds_e, &tv);
|
||||
select((int) soc + 1, &fds, NULL, &fds_e, &tv);
|
||||
if (FD_ISSET(soc, &fds_e)) { // error detected
|
||||
return -1;
|
||||
} else if (FD_ISSET(soc, &fds)) {
|
||||
@@ -1116,7 +1070,7 @@ int check_socket_connect(T_SOC soc) {
|
||||
tv.tv_sec = 0;
|
||||
tv.tv_usec = 0;
|
||||
// poll!
|
||||
select(soc + 1, NULL, &fds, &fds_e, &tv);
|
||||
select((int) soc + 1, NULL, &fds, &fds_e, &tv);
|
||||
if (FD_ISSET(soc, &fds_e)) { // error detected
|
||||
return -1;
|
||||
} else if (FD_ISSET(soc, &fds)) {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -68,7 +68,7 @@ int back_launch_ftp(FTPDownloadStruct * params);
|
||||
#endif
|
||||
|
||||
int run_launch_ftp(FTPDownloadStruct * params);
|
||||
int send_line(T_SOC soc, char *data);
|
||||
int send_line(T_SOC soc, const char *data);
|
||||
int get_ftp_line(T_SOC soc, char *line, size_t line_size, int timeout);
|
||||
T_SOC get_datasocket(char *to_send, size_t to_send_size);
|
||||
int stop_ftp(lien_back * back);
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -36,8 +36,8 @@ Please visit our Website: http://www.httrack.com
|
||||
#define HTTRACK_GLOBAL_DEFH
|
||||
|
||||
// Version (also check external version information)
|
||||
#define HTTRACK_VERSION "3.48-3"
|
||||
#define HTTRACK_VERSIONID "3.48.3"
|
||||
#define HTTRACK_VERSION "3.48-20"
|
||||
#define HTTRACK_VERSIONID "3.48.20"
|
||||
#define HTTRACK_AFF_VERSION "3.x"
|
||||
#define HTTRACK_LIB_VERSION "2.0"
|
||||
|
||||
@@ -57,6 +57,19 @@ Please visit our Website: http://www.httrack.com
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* GCC extension */
|
||||
#ifndef HTS_UNUSED
|
||||
#ifdef __GNUC__
|
||||
#define HTS_UNUSED __attribute__ ((unused))
|
||||
#define HTS_STATIC static __attribute__ ((unused))
|
||||
#define HTS_PRINTF_FUN(fmt, arg) __attribute__ ((format (printf, fmt, arg)))
|
||||
#else
|
||||
#define HTS_UNUSED
|
||||
#define HTS_STATIC static
|
||||
#define HTS_PRINTF_FUN(fmt, arg)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// config.h
|
||||
#ifdef _WIN32
|
||||
|
||||
@@ -119,11 +132,6 @@ Please visit our Website: http://www.httrack.com
|
||||
|
||||
#endif
|
||||
|
||||
// don't spare memory usage by default
|
||||
#ifndef HTS_SPARE_MEMORY
|
||||
#define HTS_SPARE_MEMORY 0
|
||||
#endif
|
||||
|
||||
#ifndef BIGSTK
|
||||
#define BIGSTK
|
||||
#endif
|
||||
@@ -193,20 +201,13 @@ Please visit our Website: http://www.httrack.com
|
||||
|
||||
#endif
|
||||
|
||||
#if HTS_SPARE_MEMORY==0
|
||||
/* Taille max d'une URL */
|
||||
#define HTS_URLMAXSIZE 1024
|
||||
/* Taille max ligne de commande (>=HTS_URLMAXSIZE*2) */
|
||||
#define HTS_CDLMAXSIZE 1024
|
||||
#else
|
||||
/* Taille max d'une URL */
|
||||
#define HTS_URLMAXSIZE 256
|
||||
/* Taille max ligne de commande (>=HTS_URLMAXSIZE*2) */
|
||||
#define HTS_CDLMAXSIZE 1024
|
||||
#endif
|
||||
|
||||
/* Copyright (C) 1998-2013 Xavier Roche and other contributors */
|
||||
#define HTTRACK_AFF_AUTHORS "[XR&CO'2013]"
|
||||
/* Copyright (C) 1998-2014 Xavier Roche and other contributors */
|
||||
#define HTTRACK_AFF_AUTHORS "[XR&CO'2014]"
|
||||
#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"
|
||||
@@ -244,8 +245,14 @@ Please visit our Website: http://www.httrack.com
|
||||
#define HTSEXT_API __declspec(dllimport)
|
||||
#endif
|
||||
#else
|
||||
/* See <http://gcc.gnu.org/wiki/Visibility> */
|
||||
#if ( ( defined(__GNUC__) && ( __GNUC__ >= 4 ) ) \
|
||||
|| ( defined(HAVE_VISIBILITY) && HAVE_VISIBILITY ) )
|
||||
#define HTSEXT_API __attribute__ ((visibility ("default")))
|
||||
#else
|
||||
#define HTSEXT_API
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef HTS_LONGLONG
|
||||
#ifdef HTS_NO_64_BIT
|
||||
@@ -316,11 +323,6 @@ typedef unsigned __int32 T_SOC;
|
||||
typedef int T_SOC;
|
||||
#endif
|
||||
|
||||
/* Default alignement */
|
||||
#ifndef HTS_ALIGN
|
||||
#define HTS_ALIGN (sizeof(void*))
|
||||
#endif
|
||||
|
||||
/* IPV4, IPV6 and various unified structures */
|
||||
#define HTS_MAXADDRLEN 64
|
||||
|
||||
@@ -365,11 +367,7 @@ typedef int T_SOC;
|
||||
#define LOCAL_SOCKET_ID -2
|
||||
|
||||
// taille de chaque buffer (10 sockets 650 ko)
|
||||
#if HTS_SPARE_MEMORY==0
|
||||
#define TAILLE_BUFFER 65536
|
||||
#else
|
||||
#define TAILLE_BUFFER 8192
|
||||
#endif
|
||||
|
||||
#ifdef HTS_DO_NOT_USE_PTHREAD
|
||||
#error needs threads support
|
||||
|
||||
157
src/htshash.c
157
src/htshash.c
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -34,15 +34,15 @@ Please visit our Website: http://www.httrack.com
|
||||
/* Internal engine bytecode */
|
||||
#define HTS_INTERNAL_BYTECODE
|
||||
|
||||
#include "htsopt.h"
|
||||
#include "htshash.h"
|
||||
|
||||
/* specific definitions */
|
||||
#include "htsbase.h"
|
||||
#include "htsopt.h"
|
||||
#include "htsglobal.h"
|
||||
#include "htsmd5.h"
|
||||
#include "htscore.h"
|
||||
#include "htsinthash.h"
|
||||
#include "coucal.h"
|
||||
/* END specific definitions */
|
||||
|
||||
/* Specific macros */
|
||||
@@ -60,40 +60,55 @@ Please visit our Website: http://www.httrack.com
|
||||
// recherche dans la table selon nom1,nom2 et le no d'enregistrement
|
||||
|
||||
/* Key free handler (NOOP) ; addresses are kept */
|
||||
static void key_freehandler(void *arg, void *value) {
|
||||
static void key_freehandler(void *arg, coucal_key value) {
|
||||
}
|
||||
|
||||
/* Key strdup (pointer copy) */
|
||||
static char* key_duphandler(void *arg, const char *name) {
|
||||
static coucal_key key_duphandler(void *arg, coucal_key_const name) {
|
||||
union {
|
||||
const char *roname;
|
||||
char *name;
|
||||
coucal_key_const roname;
|
||||
coucal_key name;
|
||||
} u;
|
||||
u.roname = name;
|
||||
return u.name;
|
||||
}
|
||||
|
||||
/* Key sav hashes are using case-insensitive version */
|
||||
static inthash_keys key_sav_hashes(void *arg, const char *value) {
|
||||
static coucal_hashkeys key_sav_hashes(void *arg, coucal_key_const key) {
|
||||
hash_struct *const hash = (hash_struct*) arg;
|
||||
convtolower(hash->catbuff, value);
|
||||
return inthash_hash_value(hash->catbuff);
|
||||
convtolower(hash->catbuff, (const char*) key);
|
||||
return coucal_hash_string(hash->catbuff);
|
||||
}
|
||||
|
||||
/* Key sav comparison is case-insensitive */
|
||||
static int key_sav_equals(void *arg, const char *a, const char *b) {
|
||||
static int key_sav_equals(void *arg,
|
||||
coucal_key_const a_,
|
||||
coucal_key_const b_) {
|
||||
const char *const a = (const char*) a_;
|
||||
const char *const b = (const char*) b_;
|
||||
return strcasecmp(a, b) == 0;
|
||||
}
|
||||
|
||||
static const char* key_sav_debug_print(void *arg,
|
||||
coucal_key_const a) {
|
||||
return (const char*) a;
|
||||
}
|
||||
|
||||
static const char* value_sav_debug_print(void *arg, coucal_value_const a) {
|
||||
return (char*) a.ptr;
|
||||
}
|
||||
|
||||
/* Pseudo-key (lien_url structure) hash function */
|
||||
static inthash_keys key_adrfil_hashes_generic(void *arg, const char *value_,
|
||||
static coucal_hashkeys key_adrfil_hashes_generic(void *arg,
|
||||
coucal_key_const value,
|
||||
const int former) {
|
||||
hash_struct *const hash = (hash_struct*) arg;
|
||||
const lien_url*const lien = (lien_url*) value_;
|
||||
const lien_url*const lien = (const lien_url*) value;
|
||||
const char *const adr = !former ? lien->adr : lien->former_adr;
|
||||
const char *const fil = !former ? lien->fil : lien->former_fil;
|
||||
const char *const adr_norm = adr != NULL ?
|
||||
( hash->normalized ? jump_normalized(adr) : jump_identification(adr) )
|
||||
( hash->normalized ? jump_normalized_const(adr)
|
||||
: jump_identification_const(adr) )
|
||||
: NULL;
|
||||
|
||||
// copy address
|
||||
@@ -109,16 +124,18 @@ static inthash_keys key_adrfil_hashes_generic(void *arg, const char *value_,
|
||||
}
|
||||
|
||||
// hash
|
||||
return inthash_hash_value(hash->normfil);
|
||||
return coucal_hash_string(hash->normfil);
|
||||
}
|
||||
|
||||
/* Pseudo-key (lien_url structure) comparison function */
|
||||
static int key_adrfil_equals_generic(void *arg, const char *a_, const char *b_,
|
||||
static int key_adrfil_equals_generic(void *arg,
|
||||
coucal_key_const a_,
|
||||
coucal_key_const b_,
|
||||
const int former) {
|
||||
hash_struct *const hash = (hash_struct*) arg;
|
||||
const int normalized = hash->normalized;
|
||||
const lien_url*const a = (lien_url*) a_;
|
||||
const lien_url*const b = (lien_url*) b_;
|
||||
const lien_url*const a = (const lien_url*) a_;
|
||||
const lien_url*const b = (const lien_url*) b_;
|
||||
const char *const a_adr = !former ? a->adr : a->former_adr;
|
||||
const char *const b_adr = !former ? b->adr : b->former_adr;
|
||||
const char *const a_fil = !former ? a->fil : a->former_fil;
|
||||
@@ -133,8 +150,10 @@ static int key_adrfil_equals_generic(void *arg, const char *a_, const char *b_,
|
||||
assertf(b_fil != NULL);
|
||||
|
||||
// skip scheme and authentication to the domain (possibly without www.)
|
||||
ja = normalized ? jump_normalized(a_adr) : jump_identification(a_adr);
|
||||
jb = normalized ? jump_normalized(b_adr) : jump_identification(b_adr);
|
||||
ja = normalized
|
||||
? jump_normalized_const(a_adr) : jump_identification_const(a_adr);
|
||||
jb = normalized
|
||||
? jump_normalized_const(b_adr) : jump_identification_const(b_adr);
|
||||
assertf(ja != NULL);
|
||||
assertf(jb != NULL);
|
||||
if (strcasecmp(ja, jb) != 0) {
|
||||
@@ -151,34 +170,74 @@ static int key_adrfil_equals_generic(void *arg, const char *a_, const char *b_,
|
||||
}
|
||||
}
|
||||
|
||||
static const char* key_adrfil_debug_print_(void *arg,
|
||||
coucal_key_const a_,
|
||||
const int former) {
|
||||
hash_struct *const hash = (hash_struct*) arg;
|
||||
const lien_url*const a = (const lien_url*) a_;
|
||||
const char *const a_adr = !former ? a->adr : a->former_adr;
|
||||
const char *const a_fil = !former ? a->fil : a->former_fil;
|
||||
snprintf(hash->normfil, sizeof(hash->normfil), "%s%s", a_adr, a_fil);
|
||||
return hash->normfil;
|
||||
}
|
||||
|
||||
static const char* key_adrfil_debug_print(void *arg,
|
||||
coucal_key_const a_) {
|
||||
return key_adrfil_debug_print_(arg, a_, 0);
|
||||
}
|
||||
|
||||
static const char* key_former_adrfil_debug_print(void *arg,
|
||||
coucal_key_const a_) {
|
||||
return key_adrfil_debug_print_(arg, a_, 1);
|
||||
}
|
||||
|
||||
static const char* value_adrfil_debug_print(void *arg,
|
||||
coucal_value_const value) {
|
||||
hash_struct *const hash = (hash_struct*) arg;
|
||||
snprintf(hash->normfil2, sizeof(hash->normfil2), "%d", (int) value.intg);
|
||||
return hash->normfil2;
|
||||
}
|
||||
|
||||
/* "adr"/"fil" lien_url structure members hashing function */
|
||||
static inthash_keys key_adrfil_hashes(void *arg, const char *value_) {
|
||||
static coucal_hashkeys key_adrfil_hashes(void *arg, coucal_key_const value_) {
|
||||
return key_adrfil_hashes_generic(arg, value_, 0);
|
||||
}
|
||||
|
||||
/* "adr"/"fil" lien_url structure members comparison function */
|
||||
static int key_adrfil_equals(void *arg, const char *a, const char *b) {
|
||||
static int key_adrfil_equals(void *arg,
|
||||
coucal_key_const a,
|
||||
coucal_key_const b) {
|
||||
return key_adrfil_equals_generic(arg, a, b, 0);
|
||||
}
|
||||
|
||||
/* "former_adr"/"former_fil" lien_url structure members hashing function */
|
||||
static inthash_keys key_former_adrfil_hashes(void *arg, const char *value_) {
|
||||
static coucal_hashkeys key_former_adrfil_hashes(void *arg, coucal_key_const value_) {
|
||||
return key_adrfil_hashes_generic(arg, value_, 1);
|
||||
}
|
||||
|
||||
/* "former_adr"/"former_fil" lien_url structure members comparison function */
|
||||
static int key_former_adrfil_equals(void *arg, const char *a, const char *b) {
|
||||
static int key_former_adrfil_equals(void *arg,
|
||||
coucal_key_const a,
|
||||
coucal_key_const b) {
|
||||
return key_adrfil_equals_generic(arg, a, b, 1);
|
||||
}
|
||||
|
||||
void hash_init(hash_struct * hash, int normalized) {
|
||||
hash->sav = inthash_new(0);
|
||||
hash->adrfil = inthash_new(0);
|
||||
hash->former_adrfil = inthash_new(0);
|
||||
void hash_init(httrackp *opt, hash_struct * hash, int normalized) {
|
||||
hash->sav = coucal_new(0);
|
||||
hash->adrfil = coucal_new(0);
|
||||
hash->former_adrfil = coucal_new(0);
|
||||
hash->normalized = normalized;
|
||||
|
||||
hts_set_hash_handler(hash->sav, opt);
|
||||
hts_set_hash_handler(hash->adrfil, opt);
|
||||
hts_set_hash_handler(hash->former_adrfil, opt);
|
||||
|
||||
coucal_set_name(hash->sav, "hash->sav");
|
||||
coucal_set_name(hash->adrfil, "hash->adrfil");
|
||||
coucal_set_name(hash->former_adrfil, "hash->former_adrfil");
|
||||
|
||||
/* Case-insensitive comparison ; keys are direct char* filenames */
|
||||
inthash_value_set_key_handler(hash->sav,
|
||||
coucal_value_set_key_handler(hash->sav,
|
||||
key_duphandler,
|
||||
key_freehandler,
|
||||
key_sav_hashes,
|
||||
@@ -187,25 +246,39 @@ void hash_init(hash_struct * hash, int normalized) {
|
||||
|
||||
/* URL-style comparison ; keys are lien_url structure pointers casted
|
||||
to char* */
|
||||
inthash_value_set_key_handler(hash->adrfil,
|
||||
coucal_value_set_key_handler(hash->adrfil,
|
||||
key_duphandler,
|
||||
key_freehandler,
|
||||
key_adrfil_hashes,
|
||||
key_adrfil_equals,
|
||||
hash);
|
||||
inthash_value_set_key_handler(hash->former_adrfil,
|
||||
coucal_value_set_key_handler(hash->former_adrfil,
|
||||
key_duphandler,
|
||||
key_freehandler,
|
||||
key_former_adrfil_hashes,
|
||||
key_former_adrfil_equals,
|
||||
hash);
|
||||
|
||||
/* pretty-printing */
|
||||
coucal_set_print_handler(hash->sav,
|
||||
key_sav_debug_print,
|
||||
value_sav_debug_print,
|
||||
NULL);
|
||||
coucal_set_print_handler(hash->adrfil,
|
||||
key_adrfil_debug_print,
|
||||
value_adrfil_debug_print,
|
||||
hash);
|
||||
coucal_set_print_handler(hash->former_adrfil,
|
||||
key_former_adrfil_debug_print,
|
||||
value_adrfil_debug_print,
|
||||
hash);
|
||||
}
|
||||
|
||||
void hash_free(hash_struct *hash) {
|
||||
if (hash != NULL) {
|
||||
inthash_delete(&hash->sav);
|
||||
inthash_delete(&hash->adrfil);
|
||||
inthash_delete(&hash->former_adrfil);
|
||||
coucal_delete(&hash->sav);
|
||||
coucal_delete(&hash->adrfil);
|
||||
coucal_delete(&hash->former_adrfil);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,7 +291,7 @@ int hash_read(const hash_struct * hash, const char *nom1, const char *nom2,
|
||||
/* read */
|
||||
switch(type) {
|
||||
case HASH_STRUCT_FILENAME:
|
||||
if (inthash_read(hash->sav, nom1, &intvalue)) {
|
||||
if (coucal_read(hash->sav, nom1, &intvalue)) {
|
||||
return (int) intvalue;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -228,7 +301,7 @@ int hash_read(const hash_struct * hash, const char *nom1, const char *nom2,
|
||||
memset(&lien, 0, sizeof(lien));
|
||||
lien.adr = key_duphandler(NULL, nom1);
|
||||
lien.fil = key_duphandler(NULL, nom2);
|
||||
if (inthash_read(hash->adrfil, (char*) &lien, &intvalue)) {
|
||||
if (coucal_read(hash->adrfil, (char*) &lien, &intvalue)) {
|
||||
return (int) intvalue;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -238,7 +311,7 @@ int hash_read(const hash_struct * hash, const char *nom1, const char *nom2,
|
||||
memset(&lien, 0, sizeof(lien));
|
||||
lien.former_adr = key_duphandler(NULL, nom1);
|
||||
lien.former_fil = key_duphandler(NULL, nom2);
|
||||
if (inthash_read(hash->former_adrfil, (char*) &lien, &intvalue)) {
|
||||
if (coucal_read(hash->former_adrfil, (char*) &lien, &intvalue)) {
|
||||
return (int) intvalue;
|
||||
} else {
|
||||
return -1;
|
||||
@@ -252,15 +325,15 @@ int hash_read(const hash_struct * hash, const char *nom1, const char *nom2,
|
||||
}
|
||||
|
||||
// enregistrement lien lpos dans les 3 tables hash1..3
|
||||
void hash_write(hash_struct * hash, int lpos) {
|
||||
void hash_write(hash_struct * hash, size_t lpos) {
|
||||
/* first entry: destination filename (lowercased) */
|
||||
inthash_write(hash->sav, hash->liens[lpos]->sav, lpos);
|
||||
coucal_write(hash->sav, (*hash->liens)[lpos]->sav, lpos);
|
||||
|
||||
/* second entry: URL address and path */
|
||||
inthash_write(hash->adrfil, (char*) hash->liens[lpos], lpos);
|
||||
coucal_write(hash->adrfil, (*hash->liens)[lpos], lpos);
|
||||
|
||||
/* third entry: URL address and path before redirect */
|
||||
if (hash->liens[lpos]->former_adr) { // former_adr existe?
|
||||
inthash_write(hash->former_adrfil, (char*) hash->liens[lpos], lpos);
|
||||
if ((*hash->liens)[lpos]->former_adr) { // former_adr existe?
|
||||
coucal_write(hash->former_adrfil, (*hash->liens)[lpos], lpos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -51,11 +51,11 @@ typedef enum hash_struct_type {
|
||||
} hash_struct_type;
|
||||
|
||||
// tables de hachage
|
||||
void hash_init(hash_struct *hash, int normalized);
|
||||
void hash_init(httrackp *opt, hash_struct *hash, int normalized);
|
||||
void hash_free(hash_struct *hash);
|
||||
int hash_read(const hash_struct * hash, const char *nom1, const char *nom2,
|
||||
hash_struct_type type);
|
||||
void hash_write(hash_struct * hash, int lpos);
|
||||
void hash_write(hash_struct * hash, size_t lpos);
|
||||
int *hash_calc_chaine(hash_struct * hash, hash_struct_type type, int pos);
|
||||
unsigned long int hash_cle(const char *nom1, const char *nom2);
|
||||
#endif
|
||||
|
||||
101
src/htshelp.c
101
src/htshelp.c
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -52,7 +52,7 @@ Please visit our Website: http://www.httrack.com
|
||||
/* END specific definitions */
|
||||
|
||||
#define waitkey if (more) { char s[4]; printf("\nMORE.. q to quit\n"); linput(stdin,s,4); if (strcmp(s,"q")==0) quit=1; else printf("Page %d\n\n",++m); }
|
||||
void infomsg(char *msg) {
|
||||
void infomsg(const char *msg) {
|
||||
int l = 0;
|
||||
int m = 0;
|
||||
int more = 0;
|
||||
@@ -116,16 +116,51 @@ void infomsg(char *msg) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct help_wizard_buffers {
|
||||
char urls[HTS_URLMAXSIZE * 2];
|
||||
char mainpath[256];
|
||||
char projname[256];
|
||||
char stropt[2048]; // options
|
||||
char stropt2[2048]; // options longues
|
||||
char strwild[2048]; // wildcards
|
||||
char cmd[4096];
|
||||
char str[256];
|
||||
char *argv[256];
|
||||
} help_wizard_buffers;
|
||||
|
||||
void help_wizard(httrackp * opt) {
|
||||
char *urls = (char *) malloct(HTS_URLMAXSIZE * 2);
|
||||
char *mainpath = (char *) malloct(256);
|
||||
char *projname = (char *) malloct(256);
|
||||
char *stropt = (char *) malloct(2048); // options
|
||||
char *stropt2 = (char *) malloct(2048); // options longues
|
||||
char *strwild = (char *) malloct(2048); // wildcards
|
||||
char *cmd = (char *) malloct(4096);
|
||||
char *str = (char *) malloct(256);
|
||||
char **argv = (char **) malloct(256 * sizeof(char *));
|
||||
help_wizard_buffers *buffers = malloct(sizeof(help_wizard_buffers));
|
||||
|
||||
#undef urls
|
||||
#undef mainpath
|
||||
#undef projname
|
||||
#undef stropt
|
||||
#undef stropt2
|
||||
#undef strwild
|
||||
#undef cmd
|
||||
#undef str
|
||||
#undef argv
|
||||
|
||||
#define urls (buffers->urls)
|
||||
#define mainpath (buffers->mainpath)
|
||||
#define projname (buffers->projname)
|
||||
#define stropt (buffers->stropt)
|
||||
#define stropt2 (buffers->stropt2)
|
||||
#define strwild (buffers->strwild)
|
||||
#define cmd (buffers->cmd)
|
||||
#define str (buffers->str)
|
||||
#define argv (buffers->argv)
|
||||
|
||||
//char *urls = (char *) malloct(HTS_URLMAXSIZE * 2);
|
||||
//char *mainpath = (char *) malloct(256);
|
||||
//char *projname = (char *) malloct(256);
|
||||
//char *stropt = (char *) malloct(2048); // options
|
||||
//char *stropt2 = (char *) malloct(2048); // options longues
|
||||
//char *strwild = (char *) malloct(2048); // wildcards
|
||||
//char *cmd = (char *) malloct(4096);
|
||||
//char *str = (char *) malloct(256);
|
||||
//char **argv = (char **) malloct(256 * sizeof(char *));
|
||||
|
||||
//
|
||||
char *a;
|
||||
@@ -147,7 +182,7 @@ void help_wizard(httrackp * opt) {
|
||||
printf("\n");
|
||||
printf("Welcome to HTTrack Website Copier (Offline Browser) " HTTRACK_VERSION
|
||||
"%s\n", hts_get_version_info(opt));
|
||||
printf("Copyright (C) 1998-2013 Xavier Roche and other contributors\n");
|
||||
printf("Copyright (C) 1998-2014 Xavier Roche and other contributors\n");
|
||||
#ifdef _WIN32
|
||||
printf("Note: You are running the commandline version,\n");
|
||||
printf("run 'WinHTTrack.exe' to get the GUI version.\n");
|
||||
@@ -237,7 +272,7 @@ void help_wizard(httrackp * opt) {
|
||||
if (strnotempty(str)) {
|
||||
while((a = strchr(str, ' ')))
|
||||
*a = ':'; // port
|
||||
if (!strchr(jump_identification(str), ':')) {
|
||||
if (!strchr(jump_identification_const(str), ':')) {
|
||||
char str2[256];
|
||||
|
||||
printf("\nProxy port (return=8080) :");
|
||||
@@ -297,7 +332,7 @@ void help_wizard(httrackp * opt) {
|
||||
printf("\n");
|
||||
|
||||
// couper en morceaux
|
||||
argv[0] = "winhttrack";
|
||||
argv[0] = strdup("winhttrack");
|
||||
argv[1] = cmd;
|
||||
argc++;
|
||||
while(cmd[i]) {
|
||||
@@ -318,24 +353,26 @@ void help_wizard(httrackp * opt) {
|
||||
}
|
||||
|
||||
/* Free buffers */
|
||||
freet(urls);
|
||||
freet(mainpath);
|
||||
freet(projname);
|
||||
freet(stropt);
|
||||
freet(stropt2);
|
||||
freet(strwild);
|
||||
freet(cmd);
|
||||
freet(str);
|
||||
free(buffers);
|
||||
#undef urls
|
||||
#undef mainpath
|
||||
#undef projname
|
||||
#undef stropt
|
||||
#undef stropt2
|
||||
#undef strwild
|
||||
#undef cmd
|
||||
#undef str
|
||||
#undef argv
|
||||
}
|
||||
int help_query(char *list, int def) {
|
||||
int help_query(const char *list, int def) {
|
||||
char s[256];
|
||||
char *a;
|
||||
const char *a;
|
||||
int opt;
|
||||
int n = 1;
|
||||
|
||||
a = list;
|
||||
while(strnotempty(a)) {
|
||||
char *b = strchr(a, '|');
|
||||
const char *b = strchr(a, '|');
|
||||
|
||||
if (b) {
|
||||
char str[256];
|
||||
@@ -401,7 +438,7 @@ void help_catchurl(const char *dest_path) {
|
||||
{
|
||||
char BIGSTK finalurl[HTS_URLMAXSIZE * 2];
|
||||
|
||||
escape_check_url(dest);
|
||||
inplace_escape_check_url(dest, sizeof(dest));
|
||||
sprintf(finalurl, "%s" POSTTOK "file:%s", url, dest);
|
||||
printf("\nThe URL is: \"%s\"\n", finalurl);
|
||||
printf("You can capture it through: httrack \"%s\"\n", finalurl);
|
||||
@@ -418,7 +455,7 @@ void help_catchurl(const char *dest_path) {
|
||||
}
|
||||
|
||||
// Créer un index.html vide
|
||||
void make_empty_index(char *str) {
|
||||
void make_empty_index(const char *str) {
|
||||
#if 0
|
||||
if (!fexist(fconcat(str, "index.html"))) {
|
||||
FILE *fp = fopen(fconcat(str, "index.html"), "wb");
|
||||
@@ -436,7 +473,7 @@ void make_empty_index(char *str) {
|
||||
|
||||
// mini-aide (h: help)
|
||||
// y
|
||||
void help(char *app, int more) {
|
||||
void help(const char *app, int more) {
|
||||
char info[2048];
|
||||
|
||||
infomsg("");
|
||||
@@ -444,7 +481,7 @@ void help(char *app, int more) {
|
||||
infomsg("1");
|
||||
if (more != 2) {
|
||||
sprintf(info,
|
||||
"HTTrack version " HTTRACK_VERSION "%s (compiled " __DATE__ ")",
|
||||
"HTTrack version " HTTRACK_VERSION "%s",
|
||||
hts_is_available());
|
||||
infomsg(info);
|
||||
#ifdef HTTRACK_AFF_WARNING
|
||||
@@ -568,7 +605,7 @@ void help(char *app, int more) {
|
||||
infomsg
|
||||
(" %F footer string in Html code (-%F \"Mirrored [from host %s [file %s [at %s]]]\"");
|
||||
infomsg(" %l preffered language (-%l \"fr, en, jp, *\"");
|
||||
infomsg(" %a accepted formats (-%l \"text/html,image/png,image/jpeg,image/gif;q=0.9,*/*;q=0.1\"");
|
||||
infomsg(" %a accepted formats (-%a \"text/html,image/png;q=0.9,*/*;q=0.1\"");
|
||||
infomsg(" %X additional HTTP header line (-%X \"X-Magic: 42\"");
|
||||
infomsg("");
|
||||
infomsg("Log, index, cache");
|
||||
@@ -755,10 +792,10 @@ void help(char *app, int more) {
|
||||
infomsg("example: httrack --continue");
|
||||
infomsg("continues a mirror in the current folder");
|
||||
infomsg("");
|
||||
sprintf(info, "HTTrack version " HTTRACK_VERSION "%s (compiled " __DATE__ ")",
|
||||
sprintf(info, "HTTrack version " HTTRACK_VERSION "%s",
|
||||
hts_is_available());
|
||||
infomsg(info);
|
||||
infomsg("Copyright (C) 1998-2013 Xavier Roche and other contributors");
|
||||
infomsg("Copyright (C) 1998-2014 Xavier Roche and other contributors");
|
||||
#ifdef HTS_PLATFORM_NAME
|
||||
infomsg("[compiled: " HTS_PLATFORM_NAME "]");
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -43,11 +43,11 @@ Please visit our Website: http://www.httrack.com
|
||||
typedef struct httrackp httrackp;
|
||||
#endif
|
||||
|
||||
void infomsg(char *msg);
|
||||
void help(char *app, int more);
|
||||
void make_empty_index(char *str);
|
||||
void infomsg(const char *msg);
|
||||
void help(const char *app, int more);
|
||||
void make_empty_index(const char *str);
|
||||
void help_wizard(httrackp * opt);
|
||||
int help_query(char *list, int def);
|
||||
int help_query(const char *list, int def);
|
||||
void help_catchurl(const char *dest_path);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -40,7 +40,7 @@ Please visit our Website: http://www.httrack.com
|
||||
|
||||
#if HTS_MAKE_KEYWORD_INDEX
|
||||
#include "htshash.h"
|
||||
#include "htsinthash.h"
|
||||
#include "coucal.h"
|
||||
|
||||
/* Keyword Indexer Parameters */
|
||||
|
||||
@@ -103,7 +103,7 @@ Please visit our Website: http://www.httrack.com
|
||||
|
||||
/* End of Keyword Indexer Parameters */
|
||||
|
||||
int strcpos(char *adr, char c);
|
||||
int strcpos(const char *adr, char c);
|
||||
int mystrcmp(const void *_e1, const void *_e2);
|
||||
|
||||
// Global variables
|
||||
@@ -144,7 +144,7 @@ int index_keyword(const char *html_data, LLint size, const char *mime,
|
||||
|
||||
//
|
||||
//int WordIndexSize = 1024;
|
||||
inthash WordIndexHash = NULL;
|
||||
coucal WordIndexHash = NULL;
|
||||
FILE *tmpfp = NULL;
|
||||
|
||||
//
|
||||
@@ -161,8 +161,8 @@ int index_keyword(const char *html_data, LLint size, const char *mime,
|
||||
|
||||
// Init ?
|
||||
if (hts_index_init) {
|
||||
UNLINK(concat(catbuff, indexpath, "index.txt"));
|
||||
UNLINK(concat(catbuff, indexpath, "sindex.html"));
|
||||
UNLINK(concat(catbuff, sizeof(catbuff), indexpath, "index.txt"));
|
||||
UNLINK(concat(catbuff, sizeof(catbuff), indexpath, "sindex.html"));
|
||||
hts_index_init = 0;
|
||||
}
|
||||
// Check MIME type
|
||||
@@ -190,7 +190,7 @@ int index_keyword(const char *html_data, LLint size, const char *mime,
|
||||
|
||||
// Create hash structure
|
||||
// Hash tables rulez da world!
|
||||
WordIndexHash = inthash_new(0);
|
||||
WordIndexHash = coucal_new(0);
|
||||
if (!WordIndexHash)
|
||||
return 0;
|
||||
|
||||
@@ -252,7 +252,7 @@ int index_keyword(const char *html_data, LLint size, const char *mime,
|
||||
/* Store it ? */
|
||||
if (len >= KEYW_MIN_LEN) {
|
||||
hts_primindex_words++;
|
||||
if (inthash_inc(WordIndexHash, keyword)) { /* added new */
|
||||
if (coucal_inc(WordIndexHash, keyword)) { /* added new */
|
||||
fprintf(tmpfp, "%s\n", keyword);
|
||||
}
|
||||
}
|
||||
@@ -285,13 +285,13 @@ int index_keyword(const char *html_data, LLint size, const char *mime,
|
||||
if (strnotempty(line)) {
|
||||
intptr_t e = 0;
|
||||
|
||||
if (inthash_read(WordIndexHash, line, &e)) {
|
||||
if (coucal_read(WordIndexHash, line, &e)) {
|
||||
//if (e) {
|
||||
char BIGSTK savelst[HTS_URLMAXSIZE * 2];
|
||||
|
||||
e++; /* 0 means "once" */
|
||||
|
||||
if (strncmp((const char *) fslash(catbuff, (char *) indexpath), filename, strlen(indexpath)) == 0) // couper
|
||||
if (strncmp((const char *) fslash(catbuff, sizeof(catbuff), (const char *) indexpath), filename, strlen(indexpath)) == 0) // couper
|
||||
strcpybuff(savelst, filename + strlen(indexpath));
|
||||
else
|
||||
strcpybuff(savelst, filename);
|
||||
@@ -313,7 +313,7 @@ int index_keyword(const char *html_data, LLint size, const char *mime,
|
||||
tmpfp = NULL;
|
||||
|
||||
// Clear hash table
|
||||
inthash_delete(&WordIndexHash);
|
||||
coucal_delete(&WordIndexHash);
|
||||
#endif
|
||||
return 1;
|
||||
}
|
||||
@@ -358,9 +358,9 @@ void index_finish(const char *indexpath, int mode) {
|
||||
|
||||
// Write new file
|
||||
if (mode == 1) // TEXT
|
||||
fp = fopen(concat(catbuff, indexpath, "index.txt"), "wb");
|
||||
fp = fopen(concat(catbuff, sizeof(catbuff), indexpath, "index.txt"), "wb");
|
||||
else // HTML
|
||||
fp = fopen(concat(catbuff, indexpath, "sindex.html"), "wb");
|
||||
fp = fopen(concat(catbuff, sizeof(catbuff), indexpath, "sindex.html"), "wb");
|
||||
if (fp) {
|
||||
char current_word[KEYW_LEN + 32];
|
||||
char word[KEYW_LEN + 32];
|
||||
@@ -468,8 +468,8 @@ void index_finish(const char *indexpath, int mode) {
|
||||
/* Subroutines */
|
||||
|
||||
#if HTS_MAKE_KEYWORD_INDEX
|
||||
int strcpos(char *adr, char c) {
|
||||
char *apos = strchr(adr, c);
|
||||
int strcpos(const char *adr, char c) {
|
||||
const char *apos = strchr(adr, c);
|
||||
|
||||
if (apos)
|
||||
return (int) (apos - adr);
|
||||
@@ -478,8 +478,8 @@ int strcpos(char *adr, char c) {
|
||||
}
|
||||
|
||||
int mystrcmp(const void *_e1, const void *_e2) {
|
||||
char **e1 = (char **) _e1;
|
||||
char **e2 = (char **) _e2;
|
||||
const char *const*const e1 = (const char *const*) _e1;
|
||||
const char *const*const e2 = (const char *const*) _e2;
|
||||
|
||||
return strcmp(*e1, *e2);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
|
||||
1263
src/htsinthash.c
1263
src/htsinthash.c
File diff suppressed because it is too large
Load Diff
314
src/htsinthash.h
314
src/htsinthash.h
@@ -1,314 +0,0 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 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 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Important notes:
|
||||
|
||||
- We hereby ask people using this source NOT to use it in purpose of grabbing
|
||||
emails addresses, or collecting any other private information on persons.
|
||||
This would disgrace our work, and spoil the many hours we spent on it.
|
||||
|
||||
Please visit our Website: http://www.httrack.com
|
||||
*/
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/* File: httrack.c subroutines: */
|
||||
/* hash table system (fast index) */
|
||||
/* Author: Xavier Roche */
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
/**
|
||||
* Library notes:
|
||||
* This small hashtable library provides key/value hashtable, with a string
|
||||
* key, and integer/pointer value (with an associated optional allocator)
|
||||
* It features O(1) average insertion, O(1) lookup, and O(1) delete.
|
||||
*
|
||||
* Implementation notes:
|
||||
* Implementation is auto-rehashable, and uses cuckoo hashing of size 2**n
|
||||
* with a MD5 or FNV-1 hash function, with one additional auxiliary hash
|
||||
* function.
|
||||
* It also uses a small stash area to handle rare cases of collisions.
|
||||
* Enumeration of all key/values is possible, deletion is also possible, but
|
||||
* currently without any auto-shrinking (ie. table will never shrink).
|
||||
* Overall, two main blocks are allocated: one for the items, and one for
|
||||
* the keys (pool).
|
||||
*
|
||||
* References:
|
||||
* Cuckoo Hashing http://en.wikipedia.org/wiki/Cuckoo_hashing
|
||||
* Cuckoo Stash http://research.microsoft.com/pubs/73856/stash-full.9-30.pdf
|
||||
* FNV http://www.isthe.com/chongo/tech/comp/fnv/
|
||||
* MD5 http://en.wikipedia.org/wiki/MD5
|
||||
**/
|
||||
|
||||
#ifndef HTSINTHASH_DEFH
|
||||
#define HTSINTHASH_DEFH
|
||||
|
||||
/* Includes */
|
||||
#ifdef _WIN32
|
||||
#include <stddef.h>
|
||||
typedef unsigned __int32 uint32_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#elif (defined(SOLARIS) || defined(sun) || defined(HAVE_INTTYPES_H) \
|
||||
|| defined(BSD) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__) || defined(__FreeBSD_kernel__))
|
||||
#include <inttypes.h>
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
/** Value. **/
|
||||
typedef union inthash_value {
|
||||
/** Integer value. **/
|
||||
intptr_t intg;
|
||||
|
||||
/** Unsigned integer value. **/
|
||||
uintptr_t uintg;
|
||||
|
||||
/** Pointer value. **/
|
||||
void *ptr;
|
||||
} inthash_value;
|
||||
|
||||
/** NULL Value. **/
|
||||
#define INTHASH_VALUE_NULL { 0 }
|
||||
|
||||
#ifndef HTS_DEF_FWSTRUCT_inthash_item
|
||||
#define HTS_DEF_FWSTRUCT_inthash_item
|
||||
typedef struct inthash_item inthash_item;
|
||||
#endif
|
||||
|
||||
/** Hash key (32-bit) **/
|
||||
typedef uint32_t inthash_key;
|
||||
|
||||
/** Pair of hashes **/
|
||||
typedef struct inthash_keys {
|
||||
inthash_key hash1;
|
||||
inthash_key hash2;
|
||||
} inthash_keys;
|
||||
|
||||
/** NULL pair of hashes. **/
|
||||
#define INTHASH_KEYS_NULL { 0, 0 }
|
||||
|
||||
/** Item holding a value. **/
|
||||
struct inthash_item {
|
||||
/** Key. **/
|
||||
char *name;
|
||||
|
||||
/** Value. **/
|
||||
inthash_value value;
|
||||
|
||||
/** Hashes of the key. **/
|
||||
inthash_keys hashes;
|
||||
};
|
||||
|
||||
/** Alias for legacy code. **/
|
||||
typedef inthash_item inthash_chain;
|
||||
|
||||
/** Value free handler **/
|
||||
typedef void (*t_inthash_freehandler) (void *arg, void *value);
|
||||
|
||||
/** Name dup handler. **/
|
||||
typedef char* (*t_inthash_duphandler) (void *arg, const char *name);
|
||||
|
||||
/** Hash computation handler. **/
|
||||
typedef inthash_keys (*t_inthash_hasheshandler)(void *arg, const char *value);
|
||||
|
||||
/**
|
||||
* Value comparison handler (returns non-zero value if strings are equal).
|
||||
**/
|
||||
typedef int (*t_inthash_cmphandler)(void *arg, const char *a, const char *b);
|
||||
|
||||
/** Hashtable (opaque structure). **/
|
||||
#ifndef HTS_DEF_FWSTRUCT_struct_inthash
|
||||
#define HTS_DEF_FWSTRUCT_struct_inthash
|
||||
typedef struct struct_inthash struct_inthash, *inthash;
|
||||
#endif
|
||||
|
||||
/** Hashtable enumeration (opaque structure). **/
|
||||
#ifndef HTS_DEF_FWSTRUCT_struct_inthash_enum
|
||||
#define HTS_DEF_FWSTRUCT_struct_inthash_enum
|
||||
typedef struct struct_inthash_enum struct_inthash_enum;
|
||||
#endif
|
||||
|
||||
/** Enumeration. **/
|
||||
struct struct_inthash_enum {
|
||||
inthash table;
|
||||
size_t index;
|
||||
};
|
||||
|
||||
/* Library internal definictions */
|
||||
#ifdef HTS_INTERNAL_BYTECODE
|
||||
|
||||
/**
|
||||
* Create a new hashtable, with initial bucket size of 'size'.
|
||||
* If size is 0, use the default minimal bucket size.
|
||||
* Return a non-NULL pointer upon success.
|
||||
**/
|
||||
inthash inthash_new(size_t size);
|
||||
|
||||
/**
|
||||
* Was the hashtable successfully created ?
|
||||
* Return non-zero value if the hashtable is valid.
|
||||
**/
|
||||
int inthash_created(inthash hashtable);
|
||||
|
||||
/**
|
||||
* Delete a hashtable, freeing all entries.
|
||||
**/
|
||||
void inthash_delete(inthash * hashtable);
|
||||
|
||||
/**
|
||||
* Return the number of items in the hashtable.
|
||||
**/
|
||||
size_t inthash_nitems(inthash hashtable);
|
||||
|
||||
/**
|
||||
* Return the memory size taken by the hashtable.
|
||||
* (This does not take account of the possible memory taken by values)
|
||||
**/
|
||||
size_t inthash_memory_size(inthash hashtable);
|
||||
|
||||
/**
|
||||
* If 'flag' is non-zero, calls inthash_value_set_value_handler() with
|
||||
* default system free() handler function, otherwise, free the value handlers.
|
||||
**/
|
||||
void inthash_value_is_malloc(inthash hashtable, int flag);
|
||||
|
||||
/**
|
||||
* Set handlers for values.
|
||||
* free: this handler will be called when a value is to be removed from
|
||||
* the hashtable. if NULL, values won't be free'd.
|
||||
* arg: opaque custom argument to be used by functions.
|
||||
* Handler(s) MUST NOT be changed once elements have been added.
|
||||
**/
|
||||
void inthash_value_set_value_handler(inthash hashtable,
|
||||
t_inthash_freehandler free,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* Set handlers for keys.
|
||||
* dup: handler called to duplicate a key. if NULL, the internal pool is used.
|
||||
* free: handler called to free a key. if NULL, the internal pool is used.
|
||||
* hash: hashing handler, called to hash a key. if NULL, the default hash
|
||||
* function is used.
|
||||
* equals: comparison handler, returning non-zero value when two keys are
|
||||
* identical. if NULL, the default comparison function is used.
|
||||
* arg: opaque custom argument to be used by functions.
|
||||
* Handler(s) MUST NOT be changed once elements have been added.
|
||||
**/
|
||||
void inthash_value_set_key_handler(inthash hashtable,
|
||||
t_inthash_duphandler dup,
|
||||
t_inthash_freehandler free,
|
||||
t_inthash_hasheshandler hash,
|
||||
t_inthash_cmphandler equals,
|
||||
void *arg);
|
||||
|
||||
/**
|
||||
* Read an integer entry from the hashtable.
|
||||
* Return non-zero value upon success and sets intvalue.
|
||||
**/
|
||||
int inthash_read(inthash hashtable, const char *name, intptr_t * intvalue);
|
||||
|
||||
/**
|
||||
* Same as inthash_read(), but return 0 is the value was zero.
|
||||
**/
|
||||
int inthash_readptr(inthash hashtable, const char *name, intptr_t * intvalue);
|
||||
|
||||
/**
|
||||
* Return non-zero value if the given entry exists.
|
||||
**/
|
||||
int inthash_exists(inthash hashtable, const char *name);
|
||||
|
||||
/**
|
||||
* Read an entry from the hashtable.
|
||||
* Return non-zero value upon success and sets value.
|
||||
**/
|
||||
int inthash_read_value(inthash hashtable, const char *name,
|
||||
inthash_value * value);
|
||||
|
||||
/**
|
||||
* Write an entry to the hashtable.
|
||||
* Return non-zero value if the entry was added, zero if it was replaced.
|
||||
**/
|
||||
int inthash_write_value(inthash hashtable, const char *name,
|
||||
inthash_value value);
|
||||
/**
|
||||
* Read a pointer entry from the hashtable.
|
||||
* Return non-zero value upon success and sets value.
|
||||
**/
|
||||
int inthash_read_pvoid(inthash hashtable, const char *name, void **value);
|
||||
|
||||
/**
|
||||
* Write a pointer entry to the hashtable.
|
||||
* Return non-zero value if the entry was added, zero if it was replaced.
|
||||
**/
|
||||
int inthash_write_pvoid(inthash hashtable, const char *name, void *value);
|
||||
|
||||
/**
|
||||
* Alias to inthash_write_pvoid()
|
||||
**/
|
||||
void inthash_add_pvoid(inthash hashtable, const char *name, void *value);
|
||||
|
||||
/**
|
||||
* Write an integer entry to the hashtable.
|
||||
* Return non-zero value if the entry was added, zero if it was replaced.
|
||||
**/
|
||||
int inthash_write(inthash hashtable, const char *name, intptr_t value);
|
||||
|
||||
/**
|
||||
* Alias to inthash_write()
|
||||
**/
|
||||
void inthash_add(inthash hashtable, const char *name, intptr_t value);
|
||||
|
||||
/**
|
||||
* Increment an entry value in the hashtable
|
||||
* (or create a new entry with value 1 if it does not yet exist)
|
||||
* Return non-zero value if the entry was added, zero if it was changed.
|
||||
**/
|
||||
int inthash_inc(inthash hashtable, const char *name);
|
||||
|
||||
/**
|
||||
* Decrement an entry value in the hashtable
|
||||
* (or create a new entry with value -1 if it does not yet exist)
|
||||
* Return non-zero value if the entry was added, zero if it was changed.
|
||||
**/
|
||||
int inthash_dec(inthash hashtable, const char *name);
|
||||
|
||||
/**
|
||||
* Remove an entry from the hashtable
|
||||
* Return non-zero value if the entry was removed, zero otherwise.
|
||||
**/
|
||||
int inthash_remove(inthash hashtable, const char *name);
|
||||
|
||||
/**
|
||||
* Return a new enumerator.
|
||||
* Note: deleting entries is safe while enumerating, but adding entries
|
||||
* lead to undefined enumeration behavior (yet safe).
|
||||
**/
|
||||
struct_inthash_enum inthash_enum_new(inthash hashtable);
|
||||
|
||||
/**
|
||||
* Enumerate the next entry.
|
||||
**/
|
||||
inthash_item *inthash_enum_next(struct_inthash_enum * e);
|
||||
|
||||
/**
|
||||
* Compute a hash, given a string value.
|
||||
**/
|
||||
inthash_keys inthash_hash_value(const char *value);
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -172,7 +172,7 @@ static int hts_parse_java(t_hts_callbackarg * carg, httrackp * opt,
|
||||
#if JAVADEBUG
|
||||
printf("fopen\n");
|
||||
#endif
|
||||
if ((fpout = FOPEN(fconv(catbuff, file), "r+b")) == NULL) {
|
||||
if ((fpout = FOPEN(fconv(catbuff, sizeof(catbuff), file), "r+b")) == NULL) {
|
||||
//fprintf(stderr, "Cannot open input file.\n");
|
||||
sprintf(str->err_msg, "Unable to open file %s", file);
|
||||
return 0; // une erreur..
|
||||
@@ -477,7 +477,7 @@ static int tris(httrackp * opt, char *buffer) {
|
||||
if (strnotempty(type)) // type reconnu!
|
||||
return 1;
|
||||
// ajout RX 05/2001
|
||||
else if (is_dyntype(get_ext(catbuff, buffer))) // asp,cgi...
|
||||
else if (is_dyntype(get_ext(catbuff, sizeof(catbuff), buffer))) // asp,cgi...
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
@@ -493,8 +493,9 @@ static char *printname(char rname[1024], char name[1024]) {
|
||||
|
||||
p = &name[0];
|
||||
|
||||
if (*p != '[')
|
||||
return "";
|
||||
if (*p != '[') {
|
||||
return rname; // ""
|
||||
}
|
||||
p += 2;
|
||||
//rname=(char*)calloct(strlen(name)+8,sizeof(char));
|
||||
p1 = rname;
|
||||
@@ -504,13 +505,13 @@ static char *printname(char rname[1024], char name[1024]) {
|
||||
if (*p == ';') {
|
||||
*p1 = '\0';
|
||||
strcat(rname, ".class");
|
||||
return (rname);
|
||||
return rname;
|
||||
} else
|
||||
*p1 = *p;
|
||||
p1++;
|
||||
}
|
||||
p1 -= 3;
|
||||
*p1 = '\0';
|
||||
return (rname);
|
||||
return rname;
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
|
||||
1302
src/htslib.c
1302
src/htslib.c
File diff suppressed because it is too large
Load Diff
334
src/htslib.h
334
src/htslib.h
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -35,6 +35,8 @@ Please visit our Website: http://www.httrack.com
|
||||
#ifndef HTS_DEFH
|
||||
#define HTS_DEFH
|
||||
|
||||
#include "httrack-library.h"
|
||||
|
||||
/* Forward definitions */
|
||||
#ifndef HTS_DEF_FWSTRUCT_htsrequest
|
||||
#define HTS_DEF_FWSTRUCT_htsrequest
|
||||
@@ -48,6 +50,14 @@ typedef struct htsblk htsblk;
|
||||
#define HTS_DEF_FWSTRUCT_t_dnscache
|
||||
typedef struct t_dnscache t_dnscache;
|
||||
#endif
|
||||
#ifndef HTS_DEF_FWSTRUCT_lien_adrfil
|
||||
#define HTS_DEF_FWSTRUCT_lien_adrfil
|
||||
typedef struct lien_adrfil lien_adrfil;
|
||||
#endif
|
||||
#ifndef HTS_DEF_FWSTRUCT_lien_adrfilsave
|
||||
#define HTS_DEF_FWSTRUCT_lien_adrfilsave
|
||||
typedef struct lien_adrfilsave lien_adrfilsave;
|
||||
#endif
|
||||
|
||||
/* définitions globales */
|
||||
#include "htsglobal.h"
|
||||
@@ -92,87 +102,8 @@ MSVC2003INLINEBUG HTS_STATIC char *getHtsOptBuff_(httrackp * opt) {
|
||||
}
|
||||
|
||||
#undef MSVC2003INLINEBUG
|
||||
#define OPT_GET_BUFF(OPT) ( getHtsOptBuff_(OPT) )
|
||||
|
||||
// structure pour paramètres supplémentaires lors de la requête
|
||||
#ifndef HTS_DEF_FWSTRUCT_htsrequest_proxy
|
||||
#define HTS_DEF_FWSTRUCT_htsrequest_proxy
|
||||
typedef struct htsrequest_proxy htsrequest_proxy;
|
||||
#endif
|
||||
struct htsrequest_proxy {
|
||||
int active;
|
||||
const char* name;
|
||||
int port;
|
||||
const char* bindhost; // bind this host
|
||||
};
|
||||
|
||||
#ifndef HTS_DEF_FWSTRUCT_htsrequest
|
||||
#define HTS_DEF_FWSTRUCT_htsrequest
|
||||
typedef struct htsrequest htsrequest;
|
||||
#endif
|
||||
struct htsrequest {
|
||||
short int user_agent_send; // user agent (ex: httrack/1.0 [sun])
|
||||
short int http11; // l'en tête peut (doit) être signé HTTP/1.1 et non HTTP/1.0
|
||||
short int nokeepalive; // pas de keep-alive
|
||||
short int range_used; // Range utilisé
|
||||
short int nocompression; // Pas de compression
|
||||
short int flush_garbage; // recycled
|
||||
const char* user_agent;
|
||||
const char* referer;
|
||||
const char* from;
|
||||
const char* lang_iso;
|
||||
const char* accept;
|
||||
const char* headers;
|
||||
htsrequest_proxy proxy; // proxy
|
||||
};
|
||||
|
||||
// structure pour retour d'une connexion/prise d'en tête
|
||||
#ifndef HTS_DEF_FWSTRUCT_htsblk
|
||||
#define HTS_DEF_FWSTRUCT_htsblk
|
||||
typedef struct htsblk htsblk;
|
||||
#endif
|
||||
struct htsblk {
|
||||
int statuscode; // status-code, -1=erreur, 200=OK,201=..etc (cf RFC1945)
|
||||
short int notmodified; // page ou fichier NON modifié (transféré)
|
||||
short int is_write; // sortie sur disque (out) ou en mémoire (adr)
|
||||
short int is_chunk; // mode chunk
|
||||
short int compressed; // compressé?
|
||||
short int empty; // vide?
|
||||
short int keep_alive; // Keep-Alive?
|
||||
short int keep_alive_trailers; // ..with trailers extension
|
||||
int keep_alive_t; // KA timeout
|
||||
int keep_alive_max; // KA number of requests
|
||||
char *adr; // adresse du bloc de mémoire, NULL=vide
|
||||
char *headers; // adresse des en têtes si présents
|
||||
FILE *out; // écriture directe sur disque (si is_write=1)
|
||||
LLint size; // taille fichier
|
||||
char msg[80]; // message éventuel si échec ("\0"=non précisé)
|
||||
char contenttype[64]; // content-type ("text/html" par exemple)
|
||||
char charset[64]; // charset ("iso-8859-1" par exemple)
|
||||
char contentencoding[64]; // content-encoding ("gzip" par exemple)
|
||||
char *location; // on copie dedans éventuellement la véritable 'location'
|
||||
LLint totalsize; // taille totale à télécharger (-1=inconnue)
|
||||
short int is_file; // ce n'est pas une socket mais un descripteur de fichier si 1
|
||||
T_SOC soc; // ID socket
|
||||
SOCaddr address; // IP address
|
||||
int address_size; // IP address structure length
|
||||
FILE *fp; // fichier pour file://
|
||||
#if HTS_USEOPENSSL
|
||||
short int ssl; // is this connection a SSL one? (https)
|
||||
// BIO* ssl_soc; // SSL structure
|
||||
SSL *ssl_con; // connection structure
|
||||
#endif
|
||||
char lastmodified[64]; // Last-Modified
|
||||
char etag[256]; // Etag
|
||||
char cdispo[256]; // Content-Disposition coupé
|
||||
LLint crange; // Content-Range
|
||||
LLint crange_start; // Content-Range
|
||||
LLint crange_end; // Content-Range
|
||||
int debugid; // debug connection
|
||||
/* */
|
||||
htsrequest req; // paramètres pour la requête
|
||||
/*char digest[32+2]; // digest md5 généré par le moteur ("" si non généré) */
|
||||
};
|
||||
#define OPT_GET_BUFF(OPT) ( getHtsOptBuff_(OPT) )
|
||||
#define OPT_GET_BUFF_SIZE(OPT) ( sizeof(opt->state.concat.buff[0]) )
|
||||
|
||||
/* ANCIENNE STURCTURE pour cache 1.0 */
|
||||
#ifndef HTS_DEF_FWSTRUCT_OLD_t_proxy
|
||||
@@ -217,12 +148,10 @@ struct OLD_htsblk {
|
||||
typedef struct t_dnscache t_dnscache;
|
||||
#endif
|
||||
struct t_dnscache {
|
||||
struct t_dnscache *n;
|
||||
int host_length; // 4 normalement - ==0 alors en cours de résolution
|
||||
char host_addr[HTS_MAXADDRLEN]; // 4 octets (v4), ou 16 octets (v6)
|
||||
// ou >16 si sockaddr
|
||||
// ==-1 alors erreur (host n'éxiste pas)
|
||||
char iadr[1024];
|
||||
struct t_dnscache *next;
|
||||
const char *iadr;
|
||||
size_t host_length; // length ; (4 or 16) ; 0 for error
|
||||
char host_addr[HTS_MAXADDRLEN];
|
||||
};
|
||||
|
||||
/* Library internal definictions */
|
||||
@@ -231,6 +160,9 @@ struct t_dnscache {
|
||||
// initialize an htsblk structure
|
||||
void hts_init_htsblk(htsblk * r);
|
||||
|
||||
// attach specific project log to hachtable logger
|
||||
void hts_set_hash_handler(coucal hashtable, httrackp *opt);
|
||||
|
||||
// version
|
||||
HTSEXT_API const char* hts_version(void);
|
||||
|
||||
@@ -240,31 +172,15 @@ int hts_read(htsblk * r, char *buff, int size);
|
||||
//int HTS_TOTAL_RECV_CHECK(int var);
|
||||
LLint check_downloadable_bytes(int rate);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API int hts_init(void);
|
||||
HTSEXT_API int hts_uninit(void);
|
||||
HTSEXT_API int hts_uninit_module(void);
|
||||
HTSEXT_API int hts_resetvar(void); /* dummy */
|
||||
HTSEXT_API void hts_debug(int level);
|
||||
HTSEXT_API httrackp *hts_create_opt(void);
|
||||
HTSEXT_API void hts_free_opt(httrackp * opt);
|
||||
HTSEXT_API const hts_stat_struct* hts_get_stats(httrackp * opt);
|
||||
HTSEXT_API void set_wrappers(httrackp * opt); /* LEGACY */
|
||||
HTSEXT_API int plug_wrapper(httrackp * opt, const char *moduleName,
|
||||
const char *argv);
|
||||
|
||||
HTSEXT_API char *hts_strdup(const char *string);
|
||||
HTSEXT_API void *hts_malloc(size_t size);
|
||||
HTSEXT_API void *hts_realloc(void *data, size_t size);
|
||||
HTSEXT_API void hts_free(void *data);
|
||||
#endif
|
||||
|
||||
// fonctions principales
|
||||
T_SOC http_fopen(httrackp * opt, char *adr, char *fil, htsblk * retour);
|
||||
T_SOC http_fopen(httrackp * opt, const char *adr, const char *fil, htsblk * retour);
|
||||
T_SOC http_xfopen(httrackp * opt, int mode, int treat, int waitconnect,
|
||||
char *xsend, char *adr, char *fil, htsblk * retour);
|
||||
int http_sendhead(httrackp * opt, t_cookie * cookie, int mode, char *xsend,
|
||||
char *adr, char *fil, char *referer_adr, char *referer_fil,
|
||||
const char *xsend, const char *adr, const char *fil, htsblk * retour);
|
||||
int http_sendhead(httrackp * opt, t_cookie * cookie, int mode, const char *xsend,
|
||||
const char *adr, const char *fil,
|
||||
const char *referer_adr, const char *referer_fil,
|
||||
htsblk * retour);
|
||||
|
||||
//int newhttp(char* iadr,char* err=NULL);
|
||||
@@ -274,47 +190,39 @@ HTS_INLINE void deletehttp(htsblk * r);
|
||||
HTS_INLINE int deleteaddr(htsblk * r);
|
||||
HTS_INLINE void deletesoc(T_SOC soc);
|
||||
HTS_INLINE void deletesoc_r(htsblk * r);
|
||||
htsblk http_location(httrackp * opt, char *adr, char *fil, char *loc);
|
||||
htsblk http_test(httrackp * opt, char *adr, char *fil, char *loc);
|
||||
htsblk http_test(httrackp * opt, const char *adr, const char *fil, char *loc);
|
||||
int check_readinput(htsblk * r);
|
||||
int check_readinput_t(T_SOC soc, int timeout);
|
||||
void treathead(t_cookie * cookie, char *adr, char *fil, htsblk * retour,
|
||||
void treathead(t_cookie * cookie, const char *adr, const char *fil, htsblk * retour,
|
||||
char *rcvd);
|
||||
void treatfirstline(htsblk * retour, char *rcvd);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API void infostatuscode(char *msg, int statuscode);
|
||||
#endif
|
||||
void treatfirstline(htsblk * retour, const char *rcvd);
|
||||
|
||||
// sous-fonctions
|
||||
LLint http_xfread1(htsblk * r, int bufl);
|
||||
HTS_INLINE t_hostent *hts_gethostbyname2(httrackp * opt, const char *iadr,
|
||||
void *v_buffer, const char **error);
|
||||
HTS_INLINE t_hostent *hts_gethostbyname(httrackp * opt, const char *iadr,
|
||||
void *v_buffer);
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API t_hostent *vxgethostbyname2(char *hostname, void *v_buffer, const char **error);
|
||||
HTSEXT_API t_hostent *vxgethostbyname(char *hostname, void *v_buffer);
|
||||
HTSEXT_API int check_hostname_dns(char *hostname);
|
||||
#endif
|
||||
HTS_INLINE SOCaddr* hts_dns_resolve2(httrackp * opt, const char *iadr,
|
||||
SOCaddr *const addr,
|
||||
const char **error);
|
||||
HTS_INLINE SOCaddr* hts_dns_resolve(httrackp * opt, const char *iadr,
|
||||
SOCaddr *const addr);
|
||||
HTSEXT_API SOCaddr* hts_dns_resolve_nocache2(const char *const hostname,
|
||||
SOCaddr *const addr,
|
||||
const char **error);
|
||||
HTSEXT_API SOCaddr* hts_dns_resolve_nocache(const char *const hostname,
|
||||
SOCaddr *const addr);
|
||||
HTSEXT_API int check_hostname_dns(const char *const hostname);
|
||||
|
||||
int ftp_available(void);
|
||||
|
||||
#if HTS_DNSCACHE
|
||||
void hts_cache_free(t_dnscache * cache);
|
||||
t_dnscache *_hts_cache(httrackp * opt);
|
||||
void hts_cache_free(t_dnscache *const cache);
|
||||
t_dnscache *hts_cache(httrackp * opt);
|
||||
#endif
|
||||
|
||||
// outils divers
|
||||
HTS_INLINE TStamp time_local(void);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API HTS_INLINE TStamp mtime_local(void);
|
||||
#endif
|
||||
void sec2str(char *s, TStamp t);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API void qsec2str(char *st, TStamp t);
|
||||
#endif
|
||||
void time_gmt_rfc822(char *s);
|
||||
void time_local_rfc822(char *s);
|
||||
struct tm *convert_time_rfc822(struct tm *buffer, const char *s);
|
||||
@@ -324,14 +232,8 @@ int get_filetime_rfc822(const char *file, char *date);
|
||||
HTS_INLINE void time_rfc822(char *s, struct tm *A);
|
||||
HTS_INLINE void time_rfc822_local(char *s, struct tm *A);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API char *int2char(strc_int2bytes2 * strc, int n);
|
||||
HTSEXT_API char *int2bytes(strc_int2bytes2 * strc, LLint n);
|
||||
HTSEXT_API char *int2bytessec(strc_int2bytes2 * strc, long int n);
|
||||
HTSEXT_API char **int2bytes2(strc_int2bytes2 * strc, LLint n);
|
||||
#endif
|
||||
HTS_INLINE int sendc(htsblk * r, const char *s);
|
||||
int finput(int fd, char *s, int max);
|
||||
int finput(T_SOC fd, char *s, int max);
|
||||
int binput(char *buff, char *s, int max);
|
||||
int linput(FILE * fp, char *s, int max);
|
||||
int linputsoc(T_SOC soc, char *s, int max);
|
||||
@@ -339,136 +241,81 @@ int linputsoc_t(T_SOC soc, char *s, int max, int timeout);
|
||||
int linput_trim(FILE * fp, char *s, int max);
|
||||
int linput_cpp(FILE * fp, char *s, int max);
|
||||
void rawlinput(FILE * fp, char *s, int max);
|
||||
char *strstrcase(char *s, char *o);
|
||||
int ident_url_absolute(const char *url, char *adr, char *fil);
|
||||
const char *strstrcase(const char *s, const char *o);
|
||||
int ident_url_absolute(const char *url, lien_adrfil *adrfil);
|
||||
void fil_simplifie(char *f);
|
||||
int is_unicode_utf8(const char *buffer, size_t size);
|
||||
int is_unicode_utf8(const char *buffer, const size_t size);
|
||||
void map_characters(unsigned char *buffer, unsigned int size,
|
||||
unsigned int *map);
|
||||
int ishtml(httrackp * opt, const char *urlfil);
|
||||
int ishtml_ext(const char *a);
|
||||
int ishttperror(int err);
|
||||
void guess_httptype(httrackp * opt, char *s, const char *fil);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API void get_httptype(httrackp * opt, char *s, const char *fil,
|
||||
int flag);
|
||||
#endif
|
||||
int get_userhttptype(httrackp * opt, char *s, const char *fil);
|
||||
void give_mimext(char *s, const char *st);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API int is_knowntype(httrackp * opt, const char *fil);
|
||||
HTSEXT_API int is_userknowntype(httrackp * opt, const char *fil);
|
||||
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 *);
|
||||
HTSEXT_API char *jump_toport(const char *);
|
||||
HTSEXT_API char *fil_normalized(const char *source, char *dest);
|
||||
HTSEXT_API char *adr_normalized(const char *source, char *dest);
|
||||
#endif
|
||||
char *strrchr_limit(const char *s, char c, const char *limit);
|
||||
char *strstr_limit(const char *s, const char *sub, const char *limit);
|
||||
HTS_INLINE char *jump_protocol(const char *source);
|
||||
const char *strrchr_limit(const char *s, char c, const char *limit);
|
||||
char *jump_protocol(char *source);
|
||||
const char *jump_protocol_const(const char *source);
|
||||
void code64(unsigned char *a, int size_a, unsigned char *b, int crlf);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API void unescape_amp(char *s);
|
||||
HTSEXT_API void escape_spc_url(char *s);
|
||||
HTSEXT_API void escape_in_url(char *s);
|
||||
HTSEXT_API void escape_uri(char *s);
|
||||
HTSEXT_API void escape_uri_utf(char *s);
|
||||
HTSEXT_API void escape_check_url(char *s);
|
||||
HTSEXT_API char *escape_check_url_addr(char *catbuff, const char *s);
|
||||
HTSEXT_API void x_escape_http(char *s, int mode);
|
||||
HTSEXT_API void x_escape_html(char *s);
|
||||
HTSEXT_API void escape_remove_control(char *s);
|
||||
HTSEXT_API void escape_for_html_print(char *s, char *d);
|
||||
HTSEXT_API void escape_for_html_print_full(char *s, char *d);
|
||||
#endif
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API char *unescape_http(char *catbuff, const char *s);
|
||||
HTSEXT_API char *unescape_http_unharm(char *catbuff, const char *s,
|
||||
int no_high);
|
||||
HTSEXT_API char *antislash_unescaped(char *catbuff, const char *s);
|
||||
HTSEXT_API char *concat(char *catbuff, const char *a, const char *b);
|
||||
HTSEXT_API char *fconcat(char *catbuff, const char *a, const char *b);
|
||||
HTSEXT_API char *fconv(char *catbuff, const char *a);
|
||||
#endif
|
||||
#define copychar(catbuff,a) concat(catbuff,(a),NULL)
|
||||
char *fslash(char *catbuff, const char *a);
|
||||
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API int hts_log(httrackp * opt, const char *prefix, const char *msg);
|
||||
HTSEXT_API void hts_log_print(httrackp * opt, int type, const char *format,
|
||||
...) HTS_PRINTF_FUN(3, 4);
|
||||
#endif
|
||||
char *convtolower(char *catbuff, const char *a);
|
||||
void hts_lowcase(char *s);
|
||||
void hts_replace(char *s, char from, char to);
|
||||
int multipleStringMatch(const char *s, const char *match);
|
||||
|
||||
char *convtolower(char *catbuff, const char *a);
|
||||
void hts_lowcase(char *s);
|
||||
void hts_replace(char *s, char from, char to);
|
||||
int multipleStringMatch(const char *s, const char *match);
|
||||
|
||||
void fprintfio(FILE * fp, char *buff, char *prefix);
|
||||
void fprintfio(FILE * fp, const char *buff, const char *prefix);
|
||||
|
||||
#ifdef _WIN32
|
||||
#else
|
||||
int sig_ignore_flag(int setflag); // flag ignore
|
||||
int sig_ignore_flag(int setflag); // flag ignore
|
||||
#endif
|
||||
|
||||
void cut_path(char *fullpath, char *path, char *pname);
|
||||
int fexist(const char *s);
|
||||
int fexist_utf8(const char *s);
|
||||
void cut_path(char *fullpath, char *path, char *pname);
|
||||
int fexist(const char *s);
|
||||
int fexist_utf8(const char *s);
|
||||
|
||||
/*LLint fsize(const char* s); */
|
||||
off_t fpsize(FILE * fp);
|
||||
off_t fsize(const char *s);
|
||||
off_t fsize_utf8(const char *s);
|
||||
|
||||
/* root dir */
|
||||
#ifndef HTTRACK_DEFLIB
|
||||
HTSEXT_API char *hts_rootdir(char *file);
|
||||
#endif
|
||||
off_t fpsize(FILE * fp);
|
||||
off_t fsize(const char *s);
|
||||
off_t fsize_utf8(const char *s);
|
||||
|
||||
// Threads
|
||||
typedef void *(*beginthread_type) (void *);
|
||||
typedef void *(*beginthread_type) (void *);
|
||||
|
||||
/*unsigned long _beginthread( beginthread_type start_address, unsigned stack_size, void *arglist );*/
|
||||
|
||||
/* variables globales */
|
||||
extern HTSEXT_API hts_stat_struct HTS_STAT;
|
||||
extern int _DEBUG_HEAD;
|
||||
extern FILE *ioinfo;
|
||||
extern HTSEXT_API hts_stat_struct HTS_STAT;
|
||||
extern int _DEBUG_HEAD;
|
||||
extern FILE *ioinfo;
|
||||
|
||||
/* constantes */
|
||||
extern const char *hts_mime_keep[];
|
||||
extern const char *hts_mime[][2];
|
||||
extern const char *hts_main_mime[];
|
||||
extern const char *hts_detect[];
|
||||
extern const char *hts_detectbeg[];
|
||||
extern const char *hts_nodetect[];
|
||||
extern const char *hts_detectURL[];
|
||||
extern const char *hts_detectandleave[];
|
||||
extern const char *hts_detect_js[];
|
||||
extern const char *hts_mime_keep[];
|
||||
extern const char *hts_mime[][2];
|
||||
extern const char *hts_main_mime[];
|
||||
extern const char *hts_detect[];
|
||||
extern const char *hts_detectbeg[];
|
||||
extern const char *hts_nodetect[];
|
||||
extern const char *hts_detectURL[];
|
||||
extern const char *hts_detectandleave[];
|
||||
extern const char *hts_detect_js[];
|
||||
|
||||
// htsmodule.c definitions
|
||||
extern void *openFunctionLib(const char *file_);
|
||||
extern void *getFunctionPtr(void *handle, const char *fncname);
|
||||
extern void closeFunctionLib(void *handle);
|
||||
extern void *openFunctionLib(const char *file_);
|
||||
extern void *getFunctionPtr(void *handle, const char *fncname);
|
||||
extern void closeFunctionLib(void *handle);
|
||||
|
||||
extern void clearCallbacks(htscallbacks * chain);
|
||||
extern size_t hts_get_callback_offs(const char *name);
|
||||
int hts_set_callback(t_hts_htmlcheck_callbacks * callbacks,
|
||||
const char *name, void *function);
|
||||
void *hts_get_callback(t_hts_htmlcheck_callbacks * callbacks,
|
||||
const char *name);
|
||||
extern void clearCallbacks(htscallbacks * chain);
|
||||
int hts_set_callback(t_hts_htmlcheck_callbacks * callbacks,
|
||||
const char *name, void *function);
|
||||
void *hts_get_callback(t_hts_htmlcheck_callbacks * callbacks,
|
||||
const char *name);
|
||||
|
||||
#define CBSTRUCT(OPT) ((t_hts_htmlcheck_callbacks*) ((OPT)->callbacks_fun))
|
||||
#define GET_USERCALLBACK(OPT, NAME) ( CBSTRUCT(OPT)-> NAME .fun )
|
||||
@@ -581,7 +428,7 @@ HTSEXT_API void hts_log_print(httrackp * opt, int type, const char *format,
|
||||
|
||||
// compare le début de f avec s et retourne la position de la fin
|
||||
// 'A=a' (case insensitive)
|
||||
HTS_STATIC int strfield(const char *f, const char *s) {
|
||||
HTS_STATIC int strfield(const char *f, const char *s) {
|
||||
int r = 0;
|
||||
|
||||
while(streql(*f, *s) && ((*f) != 0) && ((*s) != 0)) {
|
||||
@@ -593,8 +440,9 @@ HTSEXT_API void hts_log_print(httrackp * opt, int type, const char *format,
|
||||
return r;
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
HTS_STATIC int strcmpnocase(char *a, char *b) {
|
||||
}
|
||||
|
||||
HTS_STATIC int strcmpnocase(const char *a, const char *b) {
|
||||
while(*a) {
|
||||
int cmp = hichar(*a) - hichar(*b);
|
||||
|
||||
@@ -689,6 +537,16 @@ HTS_STATIC int compare_mime(httrackp * opt, const char *mime, const char *file,
|
||||
|
||||
#endif
|
||||
|
||||
// returns (size_t) -1 upon error
|
||||
static HTS_UNUSED size_t off_t_to_size_t(off_t o) {
|
||||
const size_t so = (size_t) o;
|
||||
if ((off_t) so == o) {
|
||||
return so;
|
||||
} else {
|
||||
return (size_t) -1;
|
||||
}
|
||||
}
|
||||
|
||||
/* dirent() compatibility */
|
||||
#ifdef _WIN32
|
||||
#define HTS_DIRENT_SIZE 256
|
||||
|
||||
30
src/htsmd5.c
30
src/htsmd5.c
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -41,13 +41,15 @@ Please visit our Website: http://www.httrack.com
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include "htsmd5.h"
|
||||
#include "md5.h"
|
||||
#include "htssafe.h"
|
||||
|
||||
int domd5mem(const char *buf, size_t len, char *digest, int asAscii) {
|
||||
int endian = 1;
|
||||
unsigned char bindigest[16];
|
||||
MD5_CTX ctx;
|
||||
struct MD5Context ctx;
|
||||
|
||||
MD5Init(&ctx, *((char *) &endian));
|
||||
MD5Update(&ctx, (const unsigned char *) buf, (unsigned int) len);
|
||||
@@ -77,3 +79,25 @@ unsigned long int md5sum32(const char *buff) {
|
||||
domd5mem(buff, strlen(buff), u.md5digest, 0);
|
||||
return u.hash;
|
||||
}
|
||||
|
||||
void md5selftest(void) {
|
||||
static const char str1[] = "The quick brown fox jumps over the lazy dog\n";
|
||||
static const char str1m[] = "37c4b87edffc5d198ff5a185cee7ee09";
|
||||
static const char str2[] = "Hello";
|
||||
static const char str2m[] = "8b1a9953c4611296a827abf8c47804d7";
|
||||
char digest[64];
|
||||
#define MDCHECK(VAR, VARMD) do { \
|
||||
memset(digest, 0xCC, sizeof(digest)); \
|
||||
domd5mem(VAR, sizeof(VAR) - 1, digest, 1); \
|
||||
if (strcmp(digest, VARMD) != 0) { \
|
||||
fprintf(stderr, \
|
||||
"error: md5 selftest failed: '%s' => '%s' (!= '%s')\n", \
|
||||
VAR, digest, VARMD); \
|
||||
assert(! "md5 selftest failed"); \
|
||||
} \
|
||||
} while(0)
|
||||
MDCHECK(str1, str1m);
|
||||
MDCHECK(str2, str2m);
|
||||
#undef MDCHECK
|
||||
fprintf(stderr, "md5 selftest succeeded\n");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -42,6 +42,7 @@ Please visit our Website: http://www.httrack.com
|
||||
#ifdef HTS_INTERNAL_BYTECODE
|
||||
int domd5mem(const char *buf, size_t len, char *digest, int asAscii);
|
||||
unsigned long int md5sum32(const char *buff);
|
||||
void md5selftest(void);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -89,30 +89,6 @@ HTSEXT_API const char *hts_get_version_info(httrackp * opt) {
|
||||
return opt->state.HTbuff;
|
||||
}
|
||||
|
||||
/* memory checks */
|
||||
HTSEXT_API htsErrorCallback htsCallbackErr = NULL;
|
||||
HTSEXT_API int htsMemoryFastXfr = 1; /* fast xfr by default */
|
||||
void abortLog__fnc(char *msg, char *file, int line);
|
||||
void abortLog__fnc(char *msg, char *file, int line) {
|
||||
FILE *fp = fopen("CRASH.TXT", "wb");
|
||||
|
||||
if (!fp)
|
||||
fp = fopen("/tmp/CRASH.TXT", "wb");
|
||||
if (!fp)
|
||||
fp = fopen("C:\\CRASH.TXT", "wb");
|
||||
if (!fp)
|
||||
fp = fopen("CRASH.TXT", "wb");
|
||||
if (fp) {
|
||||
fprintf(fp, "HTTrack " HTTRACK_VERSIONID " closed at '%s', line %d\r\n",
|
||||
file, line);
|
||||
fprintf(fp, "Reason:\r\n%s\r\n", msg);
|
||||
fflush(fp);
|
||||
fclose(fp);
|
||||
}
|
||||
}
|
||||
|
||||
HTSEXT_API t_abortLog abortLog__ = abortLog__fnc; /* avoid VC++ inlining */
|
||||
|
||||
static void htspe_log(htsmoduleStruct * str, const char *msg);
|
||||
|
||||
int hts_parse_externals(htsmoduleStruct * str) {
|
||||
@@ -242,17 +218,17 @@ void htspe_init(void) {
|
||||
/* See CVE-2010-5252 */
|
||||
#if (defined(_WIN32) && (!defined(_DEBUG)))
|
||||
{
|
||||
/* >= Windows Server 2003 (Andy Hewitt) */
|
||||
const DWORD dwVersion = GetVersion();
|
||||
const DWORD dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
|
||||
const DWORD dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
|
||||
const int hasSetDllDirectory =
|
||||
dwMajorVersion >= 6 || ( dwMajorVersion == 5 && dwMinorVersion >= 2 );
|
||||
/* See KB 2389418
|
||||
"If this parameter is an empty string (""), the call removes the
|
||||
current directory from the default DLL search order" */
|
||||
if (hasSetDllDirectory && !SetDllDirectory("")) {
|
||||
BOOL (WINAPI*const k32_SetDllDirectoryA)(LPCSTR) =
|
||||
(BOOL (WINAPI *)(LPCSTR))
|
||||
GetProcAddress(GetModuleHandle("kernel32.dll"), "SetDllDirectoryA");
|
||||
if (k32_SetDllDirectoryA != NULL && !k32_SetDllDirectoryA("")) {
|
||||
/* Do no choke on NT or 98SE with KernelEx NT API (James Blough) */
|
||||
const DWORD dwVersion = GetVersion();
|
||||
const DWORD dwMajorVersion = (DWORD)(LOBYTE(LOWORD(dwVersion)));
|
||||
const DWORD dwMinorVersion = (DWORD)(HIBYTE(LOWORD(dwVersion)));
|
||||
if (dwMajorVersion >= 5) {
|
||||
assertf(!"SetDllDirectory failed");
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* ------------------------------------------------------------ */
|
||||
/*
|
||||
HTTrack Website Copier, Offline Browser for Windows and Unix
|
||||
Copyright (C) 1998-2013 Xavier Roche and other contributors
|
||||
Copyright (C) 1998-2014 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
|
||||
@@ -104,22 +104,21 @@ struct htsmoduleStruct {
|
||||
httrackp *opt;
|
||||
|
||||
/* Internal use - please don't touch */
|
||||
lien_url **liens;
|
||||
struct_back *sback;
|
||||
cache_back *cache;
|
||||
hash_struct *hashptr;
|
||||
int numero_passe;
|
||||
int add_tab_alloc;
|
||||
/* */
|
||||
int *lien_tot_;
|
||||
int *ptr_;
|
||||
size_t *lien_size_;
|
||||
char **lien_buffer_;
|
||||
const char *page_charset_;
|
||||
/* Internal use - please don't touch */
|
||||
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Used to wrap module initialization */
|
||||
/* return 1 if init was ok */
|
||||
typedef int (*t_htsWrapperInit) (char *fn, char *args);
|
||||
@@ -138,4 +137,8 @@ extern int hts_parse_externals(htsmoduleStruct * str);
|
||||
extern int V6_is_available;
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user