valknut-0.4.9/0000775000076400007640000000000011144264664011356 5ustar ejsejsvalknut-0.4.9/PkgInfo.in0000664000076400007640000000001610650417661013236 0ustar ejsejsAPPL‚∂çQtvalknut-0.4.9/config.h.in0000664000076400007640000000364711144264650013406 0ustar ejsejs/* config.h.in. Generated from configure.in by autoheader. */ /* enable the /pretend command */ #undef ENABLE_PRETEND_TESTING_COMMAND /* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `mallinfo' function. */ #undef HAVE_MALLINFO /* Define to 1 if you have the header file. */ #undef HAVE_MALLOC_H /* Define to 1 if you have the `malloc_stats' function. */ #undef HAVE_MALLOC_STATS /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* The date valknut was built, and if from svn, the svn revision */ #undef VALKNUT_BUILD_INFO /* Version number of package */ #undef VERSION valknut-0.4.9/valknut.lsm.in0000664000076400007640000000100111074164043014144 0ustar ejsejsBegin3 Title: @PACKAGE@ Version: @PACKAGE_VERSION@ Entered-date: Description: This is a client for the direct connect file sharing protocol with a nice GUI. Keywords: Author: Mathias Küster Maintained-by: Mathias Küster Primary-site: http://dcgui.berlios.de Home-page: http://dcgui.berlios.de Original-site: http://dcgui.berlios.de Platforms: Linux and other Unices Copying-policy: GNU Public License End valknut-0.4.9/Info.plist.in0000664000076400007640000000177611035725452013742 0ustar ejsejs CFBundleDevelopmentRegion English CFBundleDisplayName Valknut CFBundleExecutable valknut CFBundleIconFile Valknut.icns CFBundleIdentifier wxdcgui.sourceforge.net CFBundleLongVersionString Valknut @PACKAGE_VERSION@ CFBundleName Valknut CFBundlePackageType APPL CFBundleShortVersionString @PACKAGE_VERSION@ CFBundleSignature ∂çQt CFBundleVersion @SERIAL@ NSAppleScriptEnabled NSHumanReadableCopyright Copyright 2001-2006 Mathias Küster, ejs valknut-0.4.9/configure.in0000664000076400007640000001002011144264230013645 0ustar ejsejsAC_INIT([valknut], [0.4.9], [http://sourceforge.net/tracker/?group_id=181579&atid=897767]) # the required version of dclib, checked for by pkg-config # remember to change version in valknut.spec.in also DCLIB_PKGCONFIG_VERSION="dclib >= 0.3.23" AC_CONFIG_SRCDIR([COPYING.OpenSSL]) AC_CONFIG_AUX_DIR([admin]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_HEADERS([config.h]) AC_CANONICAL_HOST AM_INIT_AUTOMAKE AC_LANG([C++]) LINK_STATIC="" AC_ARG_ENABLE([link-static], [AS_HELP_STRING([--enable-link-static],[enable static link (default disabled)])], [ if test x$enableval = "xyes" then LINK_STATIC="-static" fi ] ) LARGEFILESUPPORT="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" AC_ARG_ENABLE([lfs], [AS_HELP_STRING([--disable-lfs],[disable largefile (files larger than 2GiB) support (default enabled)])], [ if test x$enableval = "xno" then LARGEFILESUPPORT="" fi ] ) dnl these have changed but I do not want to start doing dnl 1000 tests of "does -Wsome-unusual-option-only-in-gcc-4.3 work?" WARNINGFLAGS="-Wall -W -pedantic -Wno-long-long -Wundef -Wconversion" AC_ARG_ENABLE([warnings], [AS_HELP_STRING([--disable-warnings],[disable compiler warnings (default enabled)])], [ if test "x$enableval" = "xno" then WARNINGFLAGS="" fi ] ) DEBUGFLAGS="" DEBUGCOMPILE="" AC_ARG_ENABLE([debug], [AS_HELP_STRING([--enable-debug],[enable debugging support (default disabled)])], [ if test "x$enableval" = "xyes" then DEBUGFLAGS="-DDEBUG" DEBUGCOMPILE="-g" fi ] ) PACKAGE_FLAGS="$DEBUGFLAGS $WARNINGFLAGS $LARGEFILESUPPORT -D_REENTRANT" case $host in *-*-linux-gnu) PACKAGE_FLAGS="$PACKAGE_FLAGS -D_XOPEN_SOURCE=600 -D_BSD_SOURCE" esac AC_SUBST(PACKAGE_FLAGS) AC_SUBST(DEBUGCOMPILE) AC_PROG_CXX AC_PROG_CXXCPP AC_PROG_LIBTOOL PKG_PROG_PKG_CONFIG([0.9.0]) VALKNUT_FIND_QT4 AC_MSG_CHECKING([if this is mingw32]) is_mingw32="false" case $host in *mingw32) is_mingw32="true" AC_MSG_RESULT([yes]) ;; *) AC_MSG_RESULT([no]) ;; esac AM_CONDITIONAL([WIN32], [test x$is_mingw32 = "xtrue"]) AC_MSG_NOTICE([Looking for $DCLIB_PKGCONFIG_VERSION via pkg-config...]) PKG_CHECK_MODULES([DCLIB],[$DCLIB_PKGCONFIG_VERSION]) DCLIB_LIBS="${DCLIB_LIBS} ${LINK_STATIC}" AC_SUBST(DCLIB_LIBS) AC_SUBST(DCLIB_CFLAGS) AC_CHECK_HEADERS([malloc.h]) AC_CHECK_FUNCS([mallinfo malloc_stats]) dnl /pretend command AC_ARG_ENABLE([pretend-command], [AS_HELP_STRING([--enable-pretend-command],[enable the /pretend chat command (default=yes for svn, no for release)])], [ PRETEND_COMMAND=$enableval ], [ PRETEND_COMMAND="auto"] ) AC_MSG_CHECKING([for the /pretend command]) if test "x${PRETEND_COMMAND}" = "xauto" then if echo "$PACKAGE_VERSION" | grep svn >/dev/null 2>&1 then AC_DEFINE(ENABLE_PRETEND_TESTING_COMMAND,1,[enable the /pretend command]) AC_MSG_RESULT([enabled for svn build]) else AC_MSG_RESULT([disabled for release build]) fi elif test "x${PRETEND_COMMAND}" = "xyes" then AC_DEFINE(ENABLE_PRETEND_TESTING_COMMAND,1,[enable the /pretend command]) AC_MSG_RESULT([manually enabled]) elif test "x${PRETEND_COMMAND}" = "xno" then AC_MSG_RESULT([manually disabled]) fi AC_MSG_CHECKING([for build date and svn revision]) SERIAL="`date +%Y%m%d`" AC_SUBST(SERIAL) VALKNUT_BUILD_INFO="Build date: $SERIAL" if echo "$PACKAGE_VERSION" | grep svn >/dev/null 2>&1 then VALKNUT_BUILD_INFO="$VALKNUT_BUILD_INFO svn: `svnversion`" else VALKNUT_BUILD_INFO="$VALKNUT_BUILD_INFO release" fi AC_MSG_RESULT([$VALKNUT_BUILD_INFO]) AC_DEFINE_UNQUOTED([VALKNUT_BUILD_INFO],["$VALKNUT_BUILD_INFO"],[The date valknut was built, and if from svn, the svn revision]) dnl add here all your Makefiles. This are created by configure AC_CONFIG_FILES([ Makefile ]) AC_CONFIG_FILES([ valknut.spec ]) AC_CONFIG_FILES([ valknut.lsm ]) AC_CONFIG_FILES([ Info.plist ]) AC_CONFIG_FILES([ valknut/Makefile ]) AC_CONFIG_FILES([ valknut/docs/Makefile ]) AC_CONFIG_FILES([ valknut/docs/en/Makefile ]) AC_CONFIG_FILES([ valknut/icons/Makefile ]) AC_CONFIG_FILES([ valknut/sounds/Makefile ]) AC_CONFIG_FILES([ valknut/ui/Makefile ]) AC_CONFIG_FILES([ valknut/ts/Makefile ]) AC_OUTPUT valknut-0.4.9/configure0000775000076400007640000220720011144264647013271 0ustar ejsejs#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63 for valknut 0.4.9. # # Report bugs to . # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi : (as_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME='valknut' PACKAGE_TARNAME='valknut' PACKAGE_VERSION='0.4.9' PACKAGE_STRING='valknut 0.4.9' PACKAGE_BUGREPORT='http://sourceforge.net/tracker/?group_id=181579&atid=897767' ac_unique_file="COPYING.OpenSSL" # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='LTLIBOBJS LIBOBJS SERIAL DCLIB_LIBS DCLIB_CFLAGS WIN32_FALSE WIN32_TRUE LUPDATE LRELEASE MOC UIC QT3SUPPORT_LIBS QT3SUPPORT_CFLAGS QTNETWORK_LIBS QTNETWORK_CFLAGS QTGUI_LIBS QTGUI_CFLAGS QTCORE_LIBS QTCORE_CFLAGS FRAMEWORK_DIR USE_FRAMEWORKS_FALSE USE_FRAMEWORKS_TRUE PKG_CONFIG CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE ac_ct_CC CFLAGS CC LIBTOOL CXXCPP am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CXX CPPFLAGS LDFLAGS CXXFLAGS CXX DEBUGCOMPILE PACKAGE_FLAGS am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_link_static enable_lfs enable_warnings enable_debug enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld enable_libtool_lock enable_frameworks with_framework_dir enable_pretend_command ' ac_precious_vars='build_alias host_alias target_alias CXX CXXFLAGS LDFLAGS LIBS CPPFLAGS CCC CXXCPP CC CFLAGS CPP PKG_CONFIG QTCORE_CFLAGS QTCORE_LIBS QTGUI_CFLAGS QTGUI_LIBS QTNETWORK_CFLAGS QTNETWORK_LIBS QT3SUPPORT_CFLAGS QT3SUPPORT_LIBS DCLIB_CFLAGS DCLIB_LIBS' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) { $as_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` { $as_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || { $as_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures valknut 0.4.9 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/valknut] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of valknut 0.4.9:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-link-static enable static link (default disabled) --disable-lfs disable largefile (files larger than 2GiB) support (default enabled) --disable-warnings disable compiler warnings (default enabled) --enable-debug enable debugging support (default disabled) --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) --enable-frameworks Use OS X frameworks for QT4 (default=disabled) --enable-pretend-command enable the /pretend chat command (default=yes for svn, no for release) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-framework-dir=DIR Specify the directory containing QtCore.framework (default=/Library/Frameworks) Some influential environment variables: CXX C++ compiler command CXXFLAGS C++ compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory CXXCPP C++ preprocessor CC C compiler command CFLAGS C compiler flags CPP C preprocessor PKG_CONFIG path to pkg-config utility QTCORE_CFLAGS C compiler flags for QTCORE, overriding pkg-config QTCORE_LIBS linker flags for QTCORE, overriding pkg-config QTGUI_CFLAGS C compiler flags for QTGUI, overriding pkg-config QTGUI_LIBS linker flags for QTGUI, overriding pkg-config QTNETWORK_CFLAGS C compiler flags for QTNETWORK, overriding pkg-config QTNETWORK_LIBS linker flags for QTNETWORK, overriding pkg-config QT3SUPPORT_CFLAGS C compiler flags for QT3SUPPORT, overriding pkg-config QT3SUPPORT_LIBS linker flags for QT3SUPPORT, overriding pkg-config DCLIB_CFLAGS C compiler flags for DCLIB, overriding pkg-config DCLIB_LIBS linker flags for DCLIB, overriding pkg-config Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF valknut configure 0.4.9 generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by valknut $as_me 0.4.9, which was generated by GNU Autoconf 2.63. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$ac_configure_args1 '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then ac_site_file1=$CONFIG_SITE elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test -r "$ac_site_file"; then { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special # files actually), so we avoid doing that. if test -f "$cache_file"; then { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # the required version of dclib, checked for by pkg-config # remember to change version in valknut.spec.in also DCLIB_PKGCONFIG_VERSION="dclib >= 0.3.23" ac_aux_dir= for ac_dir in admin "$srcdir"/admin; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in admin \"$srcdir\"/admin" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in admin \"$srcdir\"/admin" >&2;} { (exit 1); exit 1; }; } fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. ac_config_headers="$ac_config_headers config.h" # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; then $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; then $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac am__api_version='1.10' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in ./ | .// | /cC/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if test "${ac_cv_path_mkdir+set}" = set; then $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='valknut' VERSION='0.4.9' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu LINK_STATIC="" # Check whether --enable-link-static was given. if test "${enable_link_static+set}" = set; then enableval=$enable_link_static; if test x$enableval = "xyes" then LINK_STATIC="-static" fi fi LARGEFILESUPPORT="-D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE" # Check whether --enable-lfs was given. if test "${enable_lfs+set}" = set; then enableval=$enable_lfs; if test x$enableval = "xno" then LARGEFILESUPPORT="" fi fi WARNINGFLAGS="-Wall -W -pedantic -Wno-long-long -Wundef -Wconversion" # Check whether --enable-warnings was given. if test "${enable_warnings+set}" = set; then enableval=$enable_warnings; if test "x$enableval" = "xno" then WARNINGFLAGS="" fi fi DEBUGFLAGS="" DEBUGCOMPILE="" # Check whether --enable-debug was given. if test "${enable_debug+set}" = set; then enableval=$enable_debug; if test "x$enableval" = "xyes" then DEBUGFLAGS="-DDEBUG" DEBUGCOMPILE="-g" fi fi PACKAGE_FLAGS="$DEBUGFLAGS $WARNINGFLAGS $LARGEFILESUPPORT -D_REENTRANT" case $host in *-*-linux-gnu) PACKAGE_FLAGS="$PACKAGE_FLAGS -D_XOPEN_SOURCE=600 -D_BSD_SOURCE" esac ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:$LINENO: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5 $as_echo_n "checking for C++ compiler default output file name... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { (ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C++ compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C++ compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5 $as_echo_n "checking whether the C++ compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C++ compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { $as_echo "$as_me:$LINENO: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CXX" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.2.6' macro_revision='1.3012' ltmain="$ac_aux_dir/ltmain.sh" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CC" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if test "${ac_cv_path_SED+set}" = set; then $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed $as_unset ac_script || ac_script= if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then { { $as_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if test "${ac_cv_path_GREP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; then $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break ac_count=`expr $ac_count + 1` if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then { { $as_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if test "${lt_cv_path_NM+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:$LINENO: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in "dumpbin -symbols" "link -dump -symbols" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:5185: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:5188: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:5191: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; then $as_echo_n "(cached) " >&6 else i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n $lt_cv_sys_max_cmd_len ; then { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$LINENO: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} { $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in darwin*) if test "$GCC" = yes; then reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # `unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # which responds to the $file_magic_cmd with a given extended regex. # If you have `file' or equivalent on your system and you're not sure # whether `pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '#line 6397 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; then $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:$LINENO: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:$LINENO: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:$LINENO: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[012]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if test "${ac_cv_prog_CPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:$LINENO: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF rm -f conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu if test -z "$CXX"; then if test -n "$CCC"; then CXX=$CCC else if test -n "$ac_tool_prefix"; then for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$CXX"; then ac_cv_prog_CXX="$CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CXX=$ac_cv_prog_CXX if test -n "$CXX"; then { $as_echo "$as_me:$LINENO: result: $CXX" >&5 $as_echo "$CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CXX" && break done fi if test -z "$CXX"; then ac_ct_CXX=$CXX for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CXX"; then ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CXX=$ac_cv_prog_ac_ct_CXX if test -n "$ac_ct_CXX"; then { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 $as_echo "$ac_ct_CXX" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CXX" && break done if test "x$ac_ct_CXX" = x; then CXX="g++" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CXX=$ac_ct_CXX fi fi fi fi # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 $as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } if test "${ac_cv_cxx_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_cxx_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 $as_echo "$ac_cv_cxx_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GXX=yes else GXX= fi ac_test_CXXFLAGS=${CXXFLAGS+set} ac_save_CXXFLAGS=$CXXFLAGS { $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 $as_echo_n "checking whether $CXX accepts -g... " >&6; } if test "${ac_cv_prog_cxx_g+set}" = set; then $as_echo_n "(cached) " >&6 else ac_save_cxx_werror_flag=$ac_cxx_werror_flag ac_cxx_werror_flag=yes ac_cv_prog_cxx_g=no CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CXXFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cxx_werror_flag=$ac_save_cxx_werror_flag CXXFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cxx_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cxx_werror_flag=$ac_save_cxx_werror_flag fi { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 $as_echo "$ac_cv_prog_cxx_g" >&6; } if test "$ac_test_CXXFLAGS" = set; then CXXFLAGS=$ac_save_CXXFLAGS elif test $ac_cv_prog_cxx_g = yes; then if test "$GXX" = yes; then CXXFLAGS="-g -O2" else CXXFLAGS="-g" fi else if test "$GXX" = yes; then CXXFLAGS="-O2" else CXXFLAGS= fi fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu depcc="$CXX" am_compiler_list= { $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CXX_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CXX_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CXX_dependencies_compiler_type=none fi fi { $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 $as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then am__fastdepCXX_TRUE= am__fastdepCXX_FALSE='#' else am__fastdepCXX_TRUE='#' am__fastdepCXX_FALSE= fi if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu { $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 $as_echo_n "checking how to run the C++ preprocessor... " >&6; } if test -z "$CXXCPP"; then if test "${ac_cv_prog_CXXCPP+set}" = set; then $as_echo_n "(cached) " >&6 else # Double quotes because CXXCPP needs to be expanded for CXXCPP in "$CXX -E" "/lib/cpp" do ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then break fi done ac_cv_prog_CXXCPP=$CXXCPP fi CXXCPP=$ac_cv_prog_CXXCPP else ac_cv_prog_CXXCPP=$CXXCPP fi { $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 $as_echo "$CXXCPP" >&6; } ac_preproc_ok=false for ac_cxx_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} _lt_caught_CXX_error=yes; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu else _lt_caught_CXX_error=yes fi # Set options enable_dlopen=no enable_win32_dll=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then withval=$with_pic; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac else enable_fast_install=yes fi # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; then $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/${ac_tool_prefix}file; then lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; then $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/file; then lt_cv_path_MAGIC_CMD="$ac_dir/file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac fi MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC="$CC" ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:8973: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:8977: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if test "${lt_cv_prog_compiler_pic_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:9312: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:9316: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:9417: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:9421: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:9472: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:9476: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test "$ld_shlibs" = no; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' ${wl}-bernotok' allow_undefined_flag=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; freebsd1*) ld_shlibs=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat >conftest.$ac_ext <<_ACEOF int foo(void) {} _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' export_dynamic_flag_spec='${wl}-E' else case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='${wl}-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='${wl}-z,text' allow_undefined_flag='${wl}-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='${wl}-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 12272 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line 12368 "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$LINENO: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu CC="$lt_save_CC" ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu archive_cmds_need_lc_CXX=no allow_undefined_flag_CXX= always_export_symbols_CXX=no archive_expsym_cmds_CXX= compiler_needs_object_CXX=no export_dynamic_flag_spec_CXX= hardcode_direct_CXX=no hardcode_direct_absolute_CXX=no hardcode_libdir_flag_spec_CXX= hardcode_libdir_flag_spec_ld_CXX= hardcode_libdir_separator_CXX= hardcode_minus_L_CXX=no hardcode_shlibpath_var_CXX=unsupported hardcode_automatic_CXX=no inherit_rpath_CXX=no module_cmds_CXX= module_expsym_cmds_CXX= link_all_deplibs_CXX=unknown old_archive_cmds_CXX=$old_archive_cmds no_undefined_flag_CXX= whole_archive_flag_spec_CXX= enable_shared_with_static_runtimes_CXX=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o objext_CXX=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC compiler_CXX=$CC for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' else lt_prog_compiler_no_builtin_flag_CXX= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; then $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; then $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else whole_archive_flag_spec_CXX= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } ld_shlibs_CXX=yes case $host_os in aix3*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aix[4-9]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds_CXX='' hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes file_list_spec_CXX='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct_CXX=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L_CXX=yes hardcode_libdir_flag_spec_CXX='-L$libdir' hardcode_libdir_separator_CXX= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi export_dynamic_flag_spec_CXX='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. always_export_symbols_CXX=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag_CXX='-berok' # Determine the default libpath from the value encoded in an empty # executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' allow_undefined_flag_CXX="-z nodefs" archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag_CXX=' ${wl}-bernotok' allow_undefined_flag_CXX=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec_CXX='$convenience' archive_cmds_need_lc_CXX=yes # This is similar to how AIX traditionally builds its shared # libraries. archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag_CXX=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else ld_shlibs_CXX=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec_CXX='-L$libdir' allow_undefined_flag_CXX=unsupported always_export_symbols_CXX=no enable_shared_with_static_runtimes_CXX=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs_CXX=no fi ;; darwin* | rhapsody*) archive_cmds_need_lc_CXX=no hardcode_direct_CXX=no hardcode_automatic_CXX=yes hardcode_shlibpath_var_CXX=unsupported whole_archive_flag_spec_CXX='' link_all_deplibs_CXX=yes allow_undefined_flag_CXX="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" if test "$lt_cv_apple_cc_single_mod" != "yes"; then archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi else ld_shlibs_CXX=no fi ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; freebsd[12]*) # C++ shared libraries reported to be fairly broken before # switch to ELF ld_shlibs_CXX=no ;; freebsd-elf*) archive_cmds_need_lc_CXX=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions ld_shlibs_CXX=yes ;; gnu*) ;; hpux9*) hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: export_dynamic_flag_spec_CXX='${wl}-E' hardcode_direct_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' hardcode_libdir_separator_CXX=: case $host_cpu in hppa*64*|ia64*) ;; *) export_dynamic_flag_spec_CXX='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no ;; *) hardcode_direct_CXX=yes hardcode_direct_absolute_CXX=yes hardcode_minus_L_CXX=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; aCC*) case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; interix[3-9]*) hardcode_direct_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi link_all_deplibs_CXX=yes ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: inherit_rpath_CXX=yes ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac archive_cmds_need_lc_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [1-5]* | *pgcpp\ [1-5]*) prelink_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' old_archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' archive_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec_CXX='-rpath $libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' export_dynamic_flag_spec_CXX='${wl}--export-dynamic' archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' hardcode_libdir_flag_spec_CXX='-R$libdir' whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' compiler_needs_object_CXX=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; m88k*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) ld_shlibs_CXX=yes ;; openbsd2*) # C++ shared libraries are fairly broken ld_shlibs_CXX=no ;; openbsd*) if test -f /usr/libexec/ld.so; then hardcode_direct_CXX=yes hardcode_shlibpath_var_CXX=no hardcode_direct_absolute_CXX=yes archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' export_dynamic_flag_spec_CXX='${wl}-E' whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else ld_shlibs_CXX=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' hardcode_libdir_separator_CXX=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; cxx*) case $host in osf3*) allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' ;; *) allow_undefined_flag_CXX=' -expect_unresolved \*' archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' hardcode_libdir_flag_spec_CXX='-rpath $libdir' ;; esac hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' hardcode_libdir_separator_CXX=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support ld_shlibs_CXX=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ archive_cmds_need_lc_CXX=yes no_undefined_flag_CXX=' -zdefs' archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' hardcode_libdir_flag_spec_CXX='-R$libdir' hardcode_shlibpath_var_CXX=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' ;; esac link_all_deplibs_CXX=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then no_undefined_flag_CXX=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag_CXX='${wl}-z,text' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag_CXX='${wl}-z,text' allow_undefined_flag_CXX='${wl}-z,nodefs' archive_cmds_need_lc_CXX=no hardcode_shlibpath_var_CXX=no hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' hardcode_libdir_separator_CXX=':' link_all_deplibs_CXX=yes export_dynamic_flag_spec_CXX='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; *) # FIXME: insert proper C++ library support ld_shlibs_CXX=no ;; esac { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no GCC_CXX="$GXX" LD_CXX="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... # Dependencies to place before and after the object being linked: predep_objects_CXX= postdep_objects_CXX= predeps_CXX= postdeps_CXX= compiler_lib_search_path_CXX= cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$compiler_lib_search_path_CXX"; then compiler_lib_search_path_CXX="${prev}${p}" else compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$postdeps_CXX"; then postdeps_CXX="${prev}${p}" else postdeps_CXX="${postdeps_CXX} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$predep_objects_CXX"; then predep_objects_CXX="$p" else predep_objects_CXX="$predep_objects_CXX $p" fi else if test -z "$postdep_objects_CXX"; then postdep_objects_CXX="$p" else postdep_objects_CXX="$postdep_objects_CXX $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling CXX test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken case $host_os in interix[3-9]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. predep_objects_CXX= postdep_objects_CXX= postdeps_CXX= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then postdeps_CXX='-library=Cstd -library=Crun' fi ;; esac ;; esac case " $postdeps_CXX " in *" -lc "*) archive_cmds_need_lc_CXX=no ;; esac compiler_lib_search_dirs_CXX= if test -n "${compiler_lib_search_path_CXX}"; then compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi lt_prog_compiler_wl_CXX= lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic_CXX='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic_CXX='-DDLL_EXPORT' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic_CXX='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all lt_prog_compiler_pic_CXX= ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic_CXX=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; *) lt_prog_compiler_pic_CXX='-fPIC' ;; esac else case $host_os in aix[4-9]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static_CXX='-Bstatic' else lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) lt_prog_compiler_pic_CXX='-KPIC' ;; ghcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then lt_prog_compiler_pic_CXX='+Z' fi ;; aCC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic_CXX='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_static_CXX='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler lt_prog_compiler_wl_CXX='--backend -Wl,' lt_prog_compiler_pic_CXX='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fPIC' lt_prog_compiler_static_CXX='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-fpic' lt_prog_compiler_static_CXX='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-qpic' lt_prog_compiler_static_CXX='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) lt_prog_compiler_pic_CXX='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic_CXX='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) lt_prog_compiler_wl_CXX='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 lt_prog_compiler_pic_CXX='-pic' ;; cxx*) # Digital/Compaq C++ lt_prog_compiler_wl_CXX='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. lt_prog_compiler_pic_CXX= lt_prog_compiler_static_CXX='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' lt_prog_compiler_wl_CXX='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler lt_prog_compiler_pic_CXX='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x lt_prog_compiler_pic_CXX='-pic' lt_prog_compiler_static_CXX='-Bstatic' ;; lcc*) # Lucid lt_prog_compiler_pic_CXX='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) lt_prog_compiler_wl_CXX='-Wl,' lt_prog_compiler_pic_CXX='-KPIC' lt_prog_compiler_static_CXX='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 lt_prog_compiler_pic_CXX='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) lt_prog_compiler_can_build_shared_CXX=no ;; esac fi case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic_CXX= ;; *) lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" ;; esac { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 $as_echo "$lt_prog_compiler_pic_CXX" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic_CXX"; then { $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works_CXX=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14388: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:14392: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works_CXX=yes fi fi $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then case $lt_prog_compiler_pic_CXX in "" | " "*) ;; *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; esac else lt_prog_compiler_pic_CXX= lt_prog_compiler_can_build_shared_CXX=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" { $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works_CXX=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works_CXX=yes fi else lt_cv_prog_compiler_static_works_CXX=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 $as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then : else lt_prog_compiler_static_CXX= fi { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14487: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14491: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } { $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o_CXX=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:14539: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:14543: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o_CXX=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 $as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[4-9]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) export_symbols_cmds_CXX="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' { $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 $as_echo "$ld_shlibs_CXX" >&6; } test "$ld_shlibs_CXX" = no && can_build_shared=no with_gnu_ld_CXX=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc_CXX" in x|xyes) # Assume -lc should be added archive_cmds_need_lc_CXX=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $archive_cmds_CXX in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl_CXX pic_flag=$lt_prog_compiler_pic_CXX compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag_CXX allow_undefined_flag_CXX= if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\"") >&5 (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc_CXX=no else archive_cmds_need_lc_CXX=yes fi allow_undefined_flag_CXX=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 $as_echo "$archive_cmds_need_lc_CXX" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[4-9]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[123]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[3-9]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action_CXX= if test -n "$hardcode_libdir_flag_spec_CXX" || test -n "$runpath_var_CXX" || test "X$hardcode_automatic_CXX" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct_CXX" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && test "$hardcode_minus_L_CXX" != no; then # Linking always hardcodes the temporary library directory. hardcode_action_CXX=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action_CXX=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action_CXX=unsupported fi { $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 $as_echo "$hardcode_action_CXX" >&6; } if test "$hardcode_action_CXX" = relink || test "$inherit_rpath_CXX" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes ac_ext=cpp ac_cpp='$CXXCPP $CPPFLAGS' ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_cxx_compiler_gnu ac_config_commands="$ac_config_commands libtool" # Only expand once: if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi PKG_CONFIG=$ac_cv_path_PKG_CONFIG if test -n "$PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5 $as_echo "$PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_path_PKG_CONFIG"; then ac_pt_PKG_CONFIG=$PKG_CONFIG # Extract the first word of "pkg-config", so it can be a program name with args. set dummy pkg-config; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then $as_echo_n "(cached) " >&6 else case $ac_pt_PKG_CONFIG in [\\/]* | ?:[\\/]*) ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG if test -n "$ac_pt_PKG_CONFIG"; then { $as_echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5 $as_echo "$ac_pt_PKG_CONFIG" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_pt_PKG_CONFIG" = x; then PKG_CONFIG="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac PKG_CONFIG=$ac_pt_PKG_CONFIG fi else PKG_CONFIG="$ac_cv_path_PKG_CONFIG" fi fi if test -n "$PKG_CONFIG"; then _pkg_min_version=0.9.0 { $as_echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5 $as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } PKG_CONFIG="" fi fi # Check whether --enable-frameworks was given. if test "${enable_frameworks+set}" = set; then enableval=$enable_frameworks; USE_FRAMEWORKS="$enableval" else USE_FRAMEWORKS="no" fi if test x$USE_FRAMEWORKS = "xyes"; then USE_FRAMEWORKS_TRUE= USE_FRAMEWORKS_FALSE='#' else USE_FRAMEWORKS_TRUE='#' USE_FRAMEWORKS_FALSE= fi # Check whether --with-framework-dir was given. if test "${with_framework_dir+set}" = set; then withval=$with_framework_dir; FRAMEWORK_DIR="$withval" else FRAMEWORK_DIR="/Library/Frameworks" fi { $as_echo "$as_me:$LINENO: checking how to find QT4 libraries" >&5 $as_echo_n "checking how to find QT4 libraries... " >&6; } if test "x${USE_FRAMEWORKS}" = "xyes" then { $as_echo "$as_me:$LINENO: result: in OS X frameworks" >&5 $as_echo "in OS X frameworks" >&6; } else { $as_echo "$as_me:$LINENO: result: normal libraries" >&5 $as_echo "normal libraries" >&6; } fi if test "x${USE_FRAMEWORKS}" = "xyes" then { $as_echo "$as_me:$LINENO: Assuming QT >= 4.3 development frameworks are installed" >&5 $as_echo "$as_me: Assuming QT >= 4.3 development frameworks are installed" >&6;} QTCORE_LIBS="-Wl,-framework,CoreFoundation,-framework,QtCore" QTCORE_CFLAGS="-I${FRAMEWORK_DIR}/QtCore.framework/Versions/Current/Headers" QTGUI_LIBS="-Wl,-framework,QtGui" QTGUI_CFLAGS="-I${FRAMEWORK_DIR}/QtGui.framework/Versions/Current/Headers" QTNETWORK_LIBS="-Wl,-framework,QtNetwork" QTNETWORK_CFLAGS="-I${FRAMEWORK_DIR}/QtNetwork.framework/Versions/Current/Headers" QT3SUPPORT_LIBS="-Wl,-framework,Qt3Support" QT3SUPPORT_CFLAGS="-I${FRAMEWORK_DIR}/Qt3Support.framework/Versions/Current/Headers -DQT3_SUPPORT_WARNINGS" else pkg_failed=no { $as_echo "$as_me:$LINENO: checking for QTCORE" >&5 $as_echo_n "checking for QTCORE... " >&6; } if test -n "$QTCORE_CFLAGS"; then pkg_cv_QTCORE_CFLAGS="$QTCORE_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"QtCore >= 4.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "QtCore >= 4.3.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_QTCORE_CFLAGS=`$PKG_CONFIG --cflags "QtCore >= 4.3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$QTCORE_LIBS"; then pkg_cv_QTCORE_LIBS="$QTCORE_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"QtCore >= 4.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "QtCore >= 4.3.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_QTCORE_LIBS=`$PKG_CONFIG --libs "QtCore >= 4.3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then QTCORE_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "QtCore >= 4.3.0" 2>&1` else QTCORE_PKG_ERRORS=`$PKG_CONFIG --print-errors "QtCore >= 4.3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$QTCORE_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements (QtCore >= 4.3.0) were not met: $QTCORE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables QTCORE_CFLAGS and QTCORE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements (QtCore >= 4.3.0) were not met: $QTCORE_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables QTCORE_CFLAGS and QTCORE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables QTCORE_CFLAGS and QTCORE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 $as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables QTCORE_CFLAGS and QTCORE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else QTCORE_CFLAGS=$pkg_cv_QTCORE_CFLAGS QTCORE_LIBS=$pkg_cv_QTCORE_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for QTGUI" >&5 $as_echo_n "checking for QTGUI... " >&6; } if test -n "$QTGUI_CFLAGS"; then pkg_cv_QTGUI_CFLAGS="$QTGUI_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"QtGui >= 4.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "QtGui >= 4.3.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_QTGUI_CFLAGS=`$PKG_CONFIG --cflags "QtGui >= 4.3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$QTGUI_LIBS"; then pkg_cv_QTGUI_LIBS="$QTGUI_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"QtGui >= 4.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "QtGui >= 4.3.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_QTGUI_LIBS=`$PKG_CONFIG --libs "QtGui >= 4.3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then QTGUI_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "QtGui >= 4.3.0" 2>&1` else QTGUI_PKG_ERRORS=`$PKG_CONFIG --print-errors "QtGui >= 4.3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$QTGUI_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements (QtGui >= 4.3.0) were not met: $QTGUI_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables QTGUI_CFLAGS and QTGUI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements (QtGui >= 4.3.0) were not met: $QTGUI_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables QTGUI_CFLAGS and QTGUI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables QTGUI_CFLAGS and QTGUI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 $as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables QTGUI_CFLAGS and QTGUI_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else QTGUI_CFLAGS=$pkg_cv_QTGUI_CFLAGS QTGUI_LIBS=$pkg_cv_QTGUI_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for QTNETWORK" >&5 $as_echo_n "checking for QTNETWORK... " >&6; } if test -n "$QTNETWORK_CFLAGS"; then pkg_cv_QTNETWORK_CFLAGS="$QTNETWORK_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"QtNetwork >= 4.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "QtNetwork >= 4.3.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_QTNETWORK_CFLAGS=`$PKG_CONFIG --cflags "QtNetwork >= 4.3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$QTNETWORK_LIBS"; then pkg_cv_QTNETWORK_LIBS="$QTNETWORK_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"QtNetwork >= 4.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "QtNetwork >= 4.3.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_QTNETWORK_LIBS=`$PKG_CONFIG --libs "QtNetwork >= 4.3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then QTNETWORK_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "QtNetwork >= 4.3.0" 2>&1` else QTNETWORK_PKG_ERRORS=`$PKG_CONFIG --print-errors "QtNetwork >= 4.3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$QTNETWORK_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements (QtNetwork >= 4.3.0) were not met: $QTNETWORK_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables QTNETWORK_CFLAGS and QTNETWORK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements (QtNetwork >= 4.3.0) were not met: $QTNETWORK_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables QTNETWORK_CFLAGS and QTNETWORK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables QTNETWORK_CFLAGS and QTNETWORK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 $as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables QTNETWORK_CFLAGS and QTNETWORK_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else QTNETWORK_CFLAGS=$pkg_cv_QTNETWORK_CFLAGS QTNETWORK_LIBS=$pkg_cv_QTNETWORK_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi pkg_failed=no { $as_echo "$as_me:$LINENO: checking for QT3SUPPORT" >&5 $as_echo_n "checking for QT3SUPPORT... " >&6; } if test -n "$QT3SUPPORT_CFLAGS"; then pkg_cv_QT3SUPPORT_CFLAGS="$QT3SUPPORT_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"Qt3Support >= 4.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "Qt3Support >= 4.3.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_QT3SUPPORT_CFLAGS=`$PKG_CONFIG --cflags "Qt3Support >= 4.3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$QT3SUPPORT_LIBS"; then pkg_cv_QT3SUPPORT_LIBS="$QT3SUPPORT_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"Qt3Support >= 4.3.0\"") >&5 ($PKG_CONFIG --exists --print-errors "Qt3Support >= 4.3.0") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_QT3SUPPORT_LIBS=`$PKG_CONFIG --libs "Qt3Support >= 4.3.0" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then QT3SUPPORT_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "Qt3Support >= 4.3.0" 2>&1` else QT3SUPPORT_PKG_ERRORS=`$PKG_CONFIG --print-errors "Qt3Support >= 4.3.0" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$QT3SUPPORT_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements (Qt3Support >= 4.3.0) were not met: $QT3SUPPORT_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables QT3SUPPORT_CFLAGS and QT3SUPPORT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements (Qt3Support >= 4.3.0) were not met: $QT3SUPPORT_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables QT3SUPPORT_CFLAGS and QT3SUPPORT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables QT3SUPPORT_CFLAGS and QT3SUPPORT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 $as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables QT3SUPPORT_CFLAGS and QT3SUPPORT_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else QT3SUPPORT_CFLAGS=$pkg_cv_QT3SUPPORT_CFLAGS QT3SUPPORT_LIBS=$pkg_cv_QT3SUPPORT_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi QT3SUPPORT_CFLAGS="$QT3SUPPORT_CFLAGS -DQT3_SUPPORT_WARNINGS" fi ac_save_LIBS="$LIBS" ac_save_CPPFLAGS="$CPPFLAGS" { $as_echo "$as_me:$LINENO: checking if the QtCore flags work" >&5 $as_echo_n "checking if the QtCore flags work... " >&6; } LIBS="$LIBS $QTCORE_LIBS" CPPFLAGS="$CPPFLAGS $QTCORE_CFLAGS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main() { QStringList * list = new QStringList(); delete list; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: no - the test QtCore program failed to link, check config.log for details" >&5 $as_echo "$as_me: error: no - the test QtCore program failed to link, check config.log for details" >&2;} { (exit 1); exit 1; }; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking if the QtGui flags work" >&5 $as_echo_n "checking if the QtGui flags work... " >&6; } LIBS="$LIBS $QTGUI_LIBS" CPPFLAGS="$CPPFLAGS $QTGUI_CFLAGS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main() { QDialog * dialog = new QDialog(); delete dialog; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: no - the test QtGui program failed to link, check config.log for details" >&5 $as_echo "$as_me: error: no - the test QtGui program failed to link, check config.log for details" >&2;} { (exit 1); exit 1; }; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking if the QtNetwork flags work" >&5 $as_echo_n "checking if the QtNetwork flags work... " >&6; } LIBS="$LIBS $QTNETWORK_LIBS" CPPFLAGS="$CPPFLAGS $QTNETWORK_CFLAGS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main() { QHttp * http = new QHttp(); delete http; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: no - the test QtNetwork program failed to link, check config.log for details" >&5 $as_echo "$as_me: error: no - the test QtNetwork program failed to link, check config.log for details" >&2;} { (exit 1); exit 1; }; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext { $as_echo "$as_me:$LINENO: checking if the Qt3Support flags work" >&5 $as_echo_n "checking if the Qt3Support flags work... " >&6; } LIBS="$LIBS $QT3SUPPORT_LIBS" CPPFLAGS="$CPPFLAGS $QT3SUPPORT_CFLAGS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include int main() { Q3ListView * listview = new Q3ListView(); delete listview; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: no - the test Qt3Support program failed to link, check config.log for details" >&5 $as_echo "$as_me: error: no - the test Qt3Support program failed to link, check config.log for details" >&2;} { (exit 1); exit 1; }; } fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS="$ac_save_LIBS" CPPFLAGS="$ac_save_CPPFLAGS" if test "x${USE_FRAMEWORKS}" = "xyes" then QTPREFIX="/Developer/Tools" else QTPREFIX="`pkg-config --variable=prefix QtCore`/bin" fi for ac_prog in uic-qt4 uic do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_UIC+set}" = set; then $as_echo_n "(cached) " >&6 else case $UIC in [\\/]* | ?:[\\/]*) ac_cv_path_UIC="$UIC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$QTPREFIX:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_UIC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi UIC=$ac_cv_path_UIC if test -n "$UIC"; then { $as_echo "$as_me:$LINENO: result: $UIC" >&5 $as_echo "$UIC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$UIC" && break done for ac_prog in moc-qt4 moc do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_MOC+set}" = set; then $as_echo_n "(cached) " >&6 else case $MOC in [\\/]* | ?:[\\/]*) ac_cv_path_MOC="$MOC" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$QTPREFIX:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_MOC="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi MOC=$ac_cv_path_MOC if test -n "$MOC"; then { $as_echo "$as_me:$LINENO: result: $MOC" >&5 $as_echo "$MOC" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$MOC" && break done for ac_prog in lrelease-qt4 lrelease do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_LRELEASE+set}" = set; then $as_echo_n "(cached) " >&6 else case $LRELEASE in [\\/]* | ?:[\\/]*) ac_cv_path_LRELEASE="$LRELEASE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$QTPREFIX:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LRELEASE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LRELEASE=$ac_cv_path_LRELEASE if test -n "$LRELEASE"; then { $as_echo "$as_me:$LINENO: result: $LRELEASE" >&5 $as_echo "$LRELEASE" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LRELEASE" && break done for ac_prog in lupdate-qt4 lupdate do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_path_LUPDATE+set}" = set; then $as_echo_n "(cached) " >&6 else case $LUPDATE in [\\/]* | ?:[\\/]*) ac_cv_path_LUPDATE="$LUPDATE" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_dummy="$QTPREFIX:$PATH" for as_dir in $as_dummy do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_LUPDATE="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS ;; esac fi LUPDATE=$ac_cv_path_LUPDATE if test -n "$LUPDATE"; then { $as_echo "$as_me:$LINENO: result: $LUPDATE" >&5 $as_echo "$LUPDATE" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$LUPDATE" && break done { $as_echo "$as_me:$LINENO: checking if this is mingw32" >&5 $as_echo_n "checking if this is mingw32... " >&6; } is_mingw32="false" case $host in *mingw32) is_mingw32="true" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac if test x$is_mingw32 = "xtrue"; then WIN32_TRUE= WIN32_FALSE='#' else WIN32_TRUE='#' WIN32_FALSE= fi { $as_echo "$as_me:$LINENO: Looking for $DCLIB_PKGCONFIG_VERSION via pkg-config..." >&5 $as_echo "$as_me: Looking for $DCLIB_PKGCONFIG_VERSION via pkg-config..." >&6;} pkg_failed=no { $as_echo "$as_me:$LINENO: checking for DCLIB" >&5 $as_echo_n "checking for DCLIB... " >&6; } if test -n "$DCLIB_CFLAGS"; then pkg_cv_DCLIB_CFLAGS="$DCLIB_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$DCLIB_PKGCONFIG_VERSION\"") >&5 ($PKG_CONFIG --exists --print-errors "$DCLIB_PKGCONFIG_VERSION") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_DCLIB_CFLAGS=`$PKG_CONFIG --cflags "$DCLIB_PKGCONFIG_VERSION" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test -n "$DCLIB_LIBS"; then pkg_cv_DCLIB_LIBS="$DCLIB_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { ($as_echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"\$DCLIB_PKGCONFIG_VERSION\"") >&5 ($PKG_CONFIG --exists --print-errors "$DCLIB_PKGCONFIG_VERSION") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then pkg_cv_DCLIB_LIBS=`$PKG_CONFIG --libs "$DCLIB_PKGCONFIG_VERSION" 2>/dev/null` else pkg_failed=yes fi else pkg_failed=untried fi if test $pkg_failed = yes; then if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then DCLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$DCLIB_PKGCONFIG_VERSION" 2>&1` else DCLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors "$DCLIB_PKGCONFIG_VERSION" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$DCLIB_PKG_ERRORS" >&5 { { $as_echo "$as_me:$LINENO: error: Package requirements ($DCLIB_PKGCONFIG_VERSION) were not met: $DCLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables DCLIB_CFLAGS and DCLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&5 $as_echo "$as_me: error: Package requirements ($DCLIB_PKGCONFIG_VERSION) were not met: $DCLIB_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables DCLIB_CFLAGS and DCLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. " >&2;} { (exit 1); exit 1; }; } elif test $pkg_failed = untried; then { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables DCLIB_CFLAGS and DCLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&5 $as_echo "$as_me: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables DCLIB_CFLAGS and DCLIB_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see . See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } else DCLIB_CFLAGS=$pkg_cv_DCLIB_CFLAGS DCLIB_LIBS=$pkg_cv_DCLIB_LIBS { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } : fi DCLIB_LIBS="${DCLIB_LIBS} ${LINK_STATIC}" for ac_header in malloc.h do as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 $as_echo_n "checking $ac_header usability... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext if { (ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_header_compiler=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 $as_echo_n "checking $ac_header presence... " >&6; } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF if { (ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || test ! -s conftest.err }; then ac_header_preproc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_header_preproc=no fi rm -f conftest.err conftest.$ac_ext { $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_cxx_preproc_warn_flag in yes:no: ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} ac_header_preproc=yes ;; no:yes:* ) { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 $as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 $as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} ( cat <<\_ASBOX ## -------------------------------------------------------------------------- ## ## Report this to http://sourceforge.net/tracker/?group_id=181579&atid=897767 ## ## -------------------------------------------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else eval "$as_ac_Header=\$ac_header_preproc" fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_func in mallinfo malloc_stats do as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 $as_echo_n "checking for $ac_func... " >&6; } if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define $ac_func to an innocuous variant, in case declares $ac_func. For example, HP-UX 11i declares gettimeofday. */ #define $ac_func innocuous_$ac_func /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $ac_func (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $ac_func /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $ac_func (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$ac_func || defined __stub___$ac_func choke me #endif int main () { return $ac_func (); ; return 0; } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext if { (ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then eval "$as_ac_var=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_var'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done # Check whether --enable-pretend-command was given. if test "${enable_pretend_command+set}" = set; then enableval=$enable_pretend_command; PRETEND_COMMAND=$enableval else PRETEND_COMMAND="auto" fi { $as_echo "$as_me:$LINENO: checking for the /pretend command" >&5 $as_echo_n "checking for the /pretend command... " >&6; } if test "x${PRETEND_COMMAND}" = "xauto" then if echo "$PACKAGE_VERSION" | grep svn >/dev/null 2>&1 then cat >>confdefs.h <<\_ACEOF #define ENABLE_PRETEND_TESTING_COMMAND 1 _ACEOF { $as_echo "$as_me:$LINENO: result: enabled for svn build" >&5 $as_echo "enabled for svn build" >&6; } else { $as_echo "$as_me:$LINENO: result: disabled for release build" >&5 $as_echo "disabled for release build" >&6; } fi elif test "x${PRETEND_COMMAND}" = "xyes" then cat >>confdefs.h <<\_ACEOF #define ENABLE_PRETEND_TESTING_COMMAND 1 _ACEOF { $as_echo "$as_me:$LINENO: result: manually enabled" >&5 $as_echo "manually enabled" >&6; } elif test "x${PRETEND_COMMAND}" = "xno" then { $as_echo "$as_me:$LINENO: result: manually disabled" >&5 $as_echo "manually disabled" >&6; } fi { $as_echo "$as_me:$LINENO: checking for build date and svn revision" >&5 $as_echo_n "checking for build date and svn revision... " >&6; } SERIAL="`date +%Y%m%d`" VALKNUT_BUILD_INFO="Build date: $SERIAL" if echo "$PACKAGE_VERSION" | grep svn >/dev/null 2>&1 then VALKNUT_BUILD_INFO="$VALKNUT_BUILD_INFO svn: `svnversion`" else VALKNUT_BUILD_INFO="$VALKNUT_BUILD_INFO release" fi { $as_echo "$as_me:$LINENO: result: $VALKNUT_BUILD_INFO" >&5 $as_echo "$VALKNUT_BUILD_INFO" >&6; } cat >>confdefs.h <<_ACEOF #define VALKNUT_BUILD_INFO "$VALKNUT_BUILD_INFO" _ACEOF ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files valknut.spec" ac_config_files="$ac_config_files valknut.lsm" ac_config_files="$ac_config_files Info.plist" ac_config_files="$ac_config_files valknut/Makefile" ac_config_files="$ac_config_files valknut/docs/Makefile" ac_config_files="$ac_config_files valknut/docs/en/Makefile" ac_config_files="$ac_config_files valknut/icons/Makefile" ac_config_files="$ac_config_files valknut/sounds/Makefile" ac_config_files="$ac_config_files valknut/ui/Makefile" ac_config_files="$ac_config_files valknut/ts/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) $as_unset $ac_var ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes (double-quote # substitution turns \\\\ into \\, and sed turns \\ into \). sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${USE_FRAMEWORKS_TRUE}" && test -z "${USE_FRAMEWORKS_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"USE_FRAMEWORKS\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"USE_FRAMEWORKS\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${WIN32_TRUE}" && test -z "${WIN32_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"WIN32\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"WIN32\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi : ${CONFIG_STATUS=./config.status} ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ## --------------------- ## ## M4sh Initialization. ## ## --------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # PATH needs CR # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. case $0 in *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 { (exit 1); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi # Name of the executable. as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. Blame Lee # E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 { (exit 1); exit 1; }; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 # Save the log message, to keep $[0] and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by valknut $as_me 0.4.9, which was generated by GNU Autoconf 2.63. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ valknut config.status 0.4.9 configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header { $as_echo "$as_me: error: ambiguous option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; };; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) { $as_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$ac_config_targets $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_dirs='`$ECHO "X$compiler_lib_search_dirs" | $Xsed -e "$delay_single_quote_subst"`' predep_objects='`$ECHO "X$predep_objects" | $Xsed -e "$delay_single_quote_subst"`' postdep_objects='`$ECHO "X$postdep_objects" | $Xsed -e "$delay_single_quote_subst"`' predeps='`$ECHO "X$predeps" | $Xsed -e "$delay_single_quote_subst"`' postdeps='`$ECHO "X$postdeps" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_path='`$ECHO "X$compiler_lib_search_path" | $Xsed -e "$delay_single_quote_subst"`' LD_CXX='`$ECHO "X$LD_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds_CXX='`$ECHO "X$old_archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_CXX='`$ECHO "X$compiler_CXX" | $Xsed -e "$delay_single_quote_subst"`' GCC_CXX='`$ECHO "X$GCC_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "X$lt_prog_compiler_no_builtin_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl_CXX='`$ECHO "X$lt_prog_compiler_wl_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic_CXX='`$ECHO "X$lt_prog_compiler_pic_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static_CXX='`$ECHO "X$lt_prog_compiler_static_CXX" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o_CXX='`$ECHO "X$lt_cv_prog_compiler_c_o_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc_CXX='`$ECHO "X$archive_cmds_need_lc_CXX" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes_CXX='`$ECHO "X$enable_shared_with_static_runtimes_CXX" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec_CXX='`$ECHO "X$export_dynamic_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec_CXX='`$ECHO "X$whole_archive_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object_CXX='`$ECHO "X$compiler_needs_object_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds_CXX='`$ECHO "X$old_archive_from_new_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds_CXX='`$ECHO "X$old_archive_from_expsyms_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_CXX='`$ECHO "X$archive_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds_CXX='`$ECHO "X$archive_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' module_cmds_CXX='`$ECHO "X$module_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds_CXX='`$ECHO "X$module_expsym_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld_CXX='`$ECHO "X$with_gnu_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag_CXX='`$ECHO "X$allow_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag_CXX='`$ECHO "X$no_undefined_flag_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_CXX='`$ECHO "X$hardcode_libdir_flag_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld_CXX='`$ECHO "X$hardcode_libdir_flag_spec_ld_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator_CXX='`$ECHO "X$hardcode_libdir_separator_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_CXX='`$ECHO "X$hardcode_direct_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute_CXX='`$ECHO "X$hardcode_direct_absolute_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L_CXX='`$ECHO "X$hardcode_minus_L_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var_CXX='`$ECHO "X$hardcode_shlibpath_var_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic_CXX='`$ECHO "X$hardcode_automatic_CXX" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath_CXX='`$ECHO "X$inherit_rpath_CXX" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs_CXX='`$ECHO "X$link_all_deplibs_CXX" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path_CXX='`$ECHO "X$fix_srcfile_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols_CXX='`$ECHO "X$always_export_symbols_CXX" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds_CXX='`$ECHO "X$export_symbols_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms_CXX='`$ECHO "X$exclude_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms_CXX='`$ECHO "X$include_expsyms_CXX" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds_CXX='`$ECHO "X$prelink_cmds_CXX" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec_CXX='`$ECHO "X$file_list_spec_CXX" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action_CXX='`$ECHO "X$hardcode_action_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_dirs_CXX='`$ECHO "X$compiler_lib_search_dirs_CXX" | $Xsed -e "$delay_single_quote_subst"`' predep_objects_CXX='`$ECHO "X$predep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' postdep_objects_CXX='`$ECHO "X$postdep_objects_CXX" | $Xsed -e "$delay_single_quote_subst"`' predeps_CXX='`$ECHO "X$predeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' postdeps_CXX='`$ECHO "X$postdeps_CXX" | $Xsed -e "$delay_single_quote_subst"`' compiler_lib_search_path_CXX='`$ECHO "X$compiler_lib_search_path_CXX" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib \ compiler_lib_search_dirs \ predep_objects \ postdep_objects \ predeps \ postdeps \ compiler_lib_search_path \ LD_CXX \ compiler_CXX \ lt_prog_compiler_no_builtin_flag_CXX \ lt_prog_compiler_wl_CXX \ lt_prog_compiler_pic_CXX \ lt_prog_compiler_static_CXX \ lt_cv_prog_compiler_c_o_CXX \ export_dynamic_flag_spec_CXX \ whole_archive_flag_spec_CXX \ compiler_needs_object_CXX \ with_gnu_ld_CXX \ allow_undefined_flag_CXX \ no_undefined_flag_CXX \ hardcode_libdir_flag_spec_CXX \ hardcode_libdir_flag_spec_ld_CXX \ hardcode_libdir_separator_CXX \ fix_srcfile_path_CXX \ exclude_expsyms_CXX \ include_expsyms_CXX \ file_list_spec_CXX \ compiler_lib_search_dirs_CXX \ predep_objects_CXX \ postdep_objects_CXX \ predeps_CXX \ postdeps_CXX \ compiler_lib_search_path_CXX; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec \ old_archive_cmds_CXX \ old_archive_from_new_cmds_CXX \ old_archive_from_expsyms_cmds_CXX \ archive_cmds_CXX \ archive_expsym_cmds_CXX \ module_cmds_CXX \ module_expsym_cmds_CXX \ export_symbols_cmds_CXX \ prelink_cmds_CXX; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "valknut.spec") CONFIG_FILES="$CONFIG_FILES valknut.spec" ;; "valknut.lsm") CONFIG_FILES="$CONFIG_FILES valknut.lsm" ;; "Info.plist") CONFIG_FILES="$CONFIG_FILES Info.plist" ;; "valknut/Makefile") CONFIG_FILES="$CONFIG_FILES valknut/Makefile" ;; "valknut/docs/Makefile") CONFIG_FILES="$CONFIG_FILES valknut/docs/Makefile" ;; "valknut/docs/en/Makefile") CONFIG_FILES="$CONFIG_FILES valknut/docs/en/Makefile" ;; "valknut/icons/Makefile") CONFIG_FILES="$CONFIG_FILES valknut/icons/Makefile" ;; "valknut/sounds/Makefile") CONFIG_FILES="$CONFIG_FILES valknut/sounds/Makefile" ;; "valknut/ui/Makefile") CONFIG_FILES="$CONFIG_FILES valknut/ui/Makefile" ;; "valknut/ts/Makefile") CONFIG_FILES="$CONFIG_FILES valknut/ts/Makefile" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=' ' ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\).*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\).*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_t=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_t"; then break elif $ac_last_try; then { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 $as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} { (exit 1); exit 1; }; } else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 $as_echo "$as_me: error: could not setup config headers machinery" >&2;} { (exit 1); exit 1; }; } fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$ac_file_inputs '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir="$ac_dir" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p ' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined." >&2;} rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" } >"$tmp/config.h" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$tmp/config.h" "$ac_file" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 $as_echo "$as_me: error: could not create -" >&2;} { (exit 1); exit 1; }; } fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` { as_dir=$dirpart/$fdir case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; "libtool":C) # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="CXX " # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method == "file_magic". file_magic_cmd=$lt_file_magic_cmd # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects postdep_objects=$lt_postdep_objects predeps=$lt_predeps postdeps=$lt_postdeps # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain="$ac_aux_dir/ltmain.sh" # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" cat <<_LT_EOF >> "$ofile" # ### BEGIN LIBTOOL TAG CONFIG: CXX # The linker used to build libraries. LD=$lt_LD_CXX # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds_CXX # A language specific compiler. CC=$lt_compiler_CXX # Is the compiler the GNU compiler? with_gcc=$GCC_CXX # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl_CXX # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic_CXX # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static_CXX # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc_CXX # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object_CXX # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds_CXX archive_expsym_cmds=$lt_archive_expsym_cmds_CXX # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds_CXX module_expsym_cmds=$lt_module_expsym_cmds_CXX # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld_CXX # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag_CXX # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag_CXX # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct_CXX # Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \${shlibpath_var} if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute_CXX # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L_CXX # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic_CXX # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath_CXX # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs_CXX # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path_CXX # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols_CXX # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds_CXX # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms_CXX # Symbols that must always be exported. include_expsyms=$lt_include_expsyms_CXX # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds_CXX # Specify filename containing input files. file_list_spec=$lt_file_list_spec_CXX # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action_CXX # The directories searched by this compiler when creating a shared library. compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX # Dependencies to place before and after the objects being linked to # create a shared library. predep_objects=$lt_predep_objects_CXX postdep_objects=$lt_postdep_objects_CXX predeps=$lt_predeps_CXX postdeps=$lt_postdeps_CXX # The library search path used internally by the compiler when linking # a shared library. compiler_lib_search_path=$lt_compiler_lib_search_path_CXX # ### END LIBTOOL TAG CONFIG: CXX _LT_EOF ;; esac done # for ac_tag { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi valknut-0.4.9/aclocal.m40000664000076400007640000007772311144264643013233 0ustar ejsejs# generated automatically by aclocal 1.10.2 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, [m4_warning([this file was generated for autoconf 2.63. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.10.2], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10.2])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; none) break ;; esac # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 4 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [# Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 13 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.60])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) ]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 3 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t $srcdir/configure conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) m4_include([m4/pkg.m4]) m4_include([m4/valknut-qt4.m4]) valknut-0.4.9/valknut.desktop0000664000076400007640000000034111045024246014421 0ustar ejsejs[Desktop Entry] Version=1.0 Type=Application Exec=valknut Icon=valknut Terminal=false Name=Valknut GenericName=Direct Connect client Comment=Share files over the Direct Connect network Categories=Network;FileTransfer;P2P;Qt; valknut-0.4.9/INSTALL0000644000076400007640000002622211144264654012410 0ustar ejsejsInstallation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== Briefly, the shell commands `./configure; make; make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the `README' file for instructions specific to this package. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. Running `configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 6. Often, you can also type `make uninstall' to remove the installed files again. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. With a non-GNU `make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple `-arch' options to the compiler but only a single `-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the `lipo' tool if you have problems. Installation Names ================== By default, `make install' installs the package's commands under `/usr/local/bin', include files under `/usr/local/include', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PREFIX'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option `--exec-prefix=PREFIX' to `configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=DIR' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae" and if that doesn't work, install pre-built binaries of GCC for HP-UX. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its `' header file. The option `-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option `--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified `gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for `CONFIG_SHELL' due to an Autoconf bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of all of the options to `configure', and exit. `--help=short' `--help=recursive' Print a summary of the options unique to this package's `configure', and exit. The `short' variant lists options used only in the top level, while the `recursive' variant lists options also present in any nested packages. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `--prefix=DIR' Use DIR as the installation prefix. *Note Installation Names:: for more details, including other options available for fine-tuning the installation locations. `--no-create' `-n' Run the configure checks, but stop before creating any output files. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. valknut-0.4.9/AUTHORS0000664000076400007640000000031711074164043012417 0ustar ejsejsMathias Küster Mario Boikov Stephen Leaf François Gannaz Edward Sheldrake valknut-0.4.9/valknut/0000775000076400007640000000000011144264653013040 5ustar ejsejsvalknut-0.4.9/valknut/dchubprofile.h0000664000076400007640000000323211074173623015655 0ustar ejsejs/*************************************************************************** dchubprofile.h - description ------------------- begin : Fre Sep 20 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCHUBPROFILE_H #define DCHUBPROFILE_H #include #include "DCDialogHubProfile.h" /** *@author Mathias Küster */ class DCHubProfile : public QDialog, private Ui::DCDialogHubProfile { Q_OBJECT public: /** construtor */ DCHubProfile( QWidget * parent = 0 ); /** destructor */ virtual ~DCHubProfile(); /** */ void InitDocument(); private: /** */ void SaveProfile( QString profilename ); /** */ QString m_sOldName; private slots: /** */ void slotClickedOK(); /** */ void slotProfileActiveted( const QString & ); /** Called when the Delete button is pressed to delete a profile */ void slotProfileDelete(); }; #endif valknut-0.4.9/valknut/dctranslator.h0000664000076400007640000000465411136672645015727 0ustar ejsejs/*************************************************************************** dctranslator.h - description ------------------- begin : Die Nov 19 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCTRANSLATOR_H #define DCTRANSLATOR_H #include #include #include class QHttp; class QWidget; class DC_TranslationEvent; /** *@author Mathias Küster */ class DCTranslator : public QObject { Q_OBJECT public: /** construtor */ DCTranslator( QObject * parent = 0 ); /** destructor */ virtual ~DCTranslator(); /** */ QString SelectLanguage( QString lang, QWidget * parent = 0 ); /** */ bool Translate( QObject * sender, QString lang, QString text ); private: /** */ static QString GetUserAgent(); /** */ QHttp * pHttp; /** It maps QHttp request IDs to the DC_TranslationEvent object */ QHash m_RequestHash; /** */ QString m_sLanguage; /** Just in case you need to GET a page before you are allowed to do a POST request */ /* int m_nGetRequestID; */ /** Just in case you need to GET a page before you are allowed to do a POST request */ /* bool m_bReady; */ /** */ QString provider; /** */ QStringList langs_ys; /** */ QStringList langs_y; /** */ QStringList langs_gs_from; /** */ QStringList langs_g_from; /** */ QStringList langs_gs_to; /** */ QStringList langs_g_to; private slots: /** */ /* void slotDataReadProgress( int bytesDone, int bytesTotal ); */ /** */ /* void slotGetRequestFinished( int id, bool error ); */ /** */ void slotPostRequestFinished( int id, bool error ); }; extern DCTranslator * g_pTranslator; #endif valknut-0.4.9/valknut/dcqtextedit.cpp0000664000076400007640000000301211134203612016045 0ustar ejsejs/*************************************************************************** dcqtextedit.cpp - description ------------------- begin : Don Aug 21 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcqtextedit.h" /** */ DCQTextEdit::DCQTextEdit( QWidget * parent ) : QTextEdit( parent ) { } /** */ DCQTextEdit::~DCQTextEdit() { } /** */ void DCQTextEdit::mouseReleaseEvent( QMouseEvent * event ) { QTextEdit::mouseReleaseEvent( event ); if ( event->button() == Qt::LeftButton ) { emit clicked(); } } /** */ void DCQTextEdit::mouseDoubleClickEvent( QMouseEvent * event ) { QTextEdit::mouseDoubleClickEvent( event ); if ( event->button() == Qt::LeftButton ) { emit doubleClicked(); } } valknut-0.4.9/valknut/dchublistmanager.h0000664000076400007640000001125411130750045016516 0ustar ejsejs/*************************************************************************** dchublistmanager.h - description ------------------- begin : Mon Oct 1 2001 copyright : (C) 2001-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCHUBLISTMANAGER_H #define DCHUBLISTMANAGER_H /** *@author Mathias Küster */ #include #include #include #include #include #include "DCDialogHubListManager.h" #include class QEvent; class QCloseEvent; class QResizeEvent; class QShowEvent; class QMdiSubWindow; class PublicHubsModel; class PublicHubsProxy; class QTreeWidgetItem; class DC_HubFilterObject; class CDCMessage; /* filtered hub list for search dialog not yet re-written */ #include class DCHubListManager : public QWidget, private Ui::DCDialogHubListManager, public CHubListManager { Q_OBJECT public: /** construtor */ DCHubListManager( QWidget * parent = 0 ); /** destructor */ virtual ~DCHubListManager(); /** Get the MDI subwindow we are in */ QMdiSubWindow * GetMdiSubWindow() { return m_pContainerWindow; }; /** */ void InitDocument(); /** */ void DeInitDocument(); /** */ void ShowPublicHubList(); /** */ void ShowBookmarkList(); /** */ void AddBookmark( QString hubname, QString hubhost, QString description ); /** */ void RemoveBookmark( QTreeWidgetItem * item ); /** */ void UpdateBookmark( QString hubname, QString hubhost, QString description ); /** */ CStringList * GetFilteredHubList(); /** callback function */ virtual int DC_CallBack( CDCMessage * ); protected: /** Adjust column sizes preserving user set size ratios */ void SizeColumnsPreservingRatios(); /** event filter */ virtual bool eventFilter( QObject * object, QEvent * event ); /** resize event handler */ virtual void resizeEvent( QResizeEvent * ); /** overridden so that the column widths are initialized on first show() */ virtual void showEvent( QShowEvent * event ); /** for removing mdi sub window from mdi area */ virtual void closeEvent( QCloseEvent * event ); private: /** */ void SetToolBar( QFrame * frame1, QFrame * frame2, bool vis ); /** * Update CConfig with the new sorted order of the bookmarks. */ void updateBookmarkOrder(); /** * Show the "Remove bookmarks" confirmation unless it's been disabled. * 0 = remove, 1 = cancel */ int queryRemoveBookmarks(); /** */ QMutex m_HLMMutex; /** */ QMap m_HubFilterMap; /** */ QTimer m_Timer; /** */ QList * m_pMessageList; /** */ QMdiSubWindow * m_pContainerWindow; /** */ PublicHubsModel * model; /** */ PublicHubsProxy * proxy; /** The last width that we adjusted the size of the public hubs columns for */ int lastPublicHubsWidth; /** The last width that we adjusted the size of the bookmark hubs columns for */ int lastBookmarkHubsWidth; private slots: /** reload public hub list */ void slotReloadPublicHubList(); /** update public hub list */ void slotUpdatePublicHubList(); /** */ void slotItemActivatedPublic( const QModelIndex & index ); /** */ void slotItemActivatedBookmarks( QTreeWidgetItem * item, int column ); /** */ void slotConnect(); /** */ void slotContextMenuPublicList( const QPoint & ); /** */ void slotContextMenuBookmarkList( const QPoint & ); /** current tab widget change slot */ void slotTabWidgetCurrentChange( QWidget * ); /** */ void slotAddFilter(); /** */ void slotEditFilter(); /** */ void slotDelFilter(); /** */ void slotFilterChange( const QString & ); /** */ void timerDone(); /** */ void slotMoveBookmarkUp(); /** */ void slotMoveBookmarkDown(); /** */ void slotEnableBookmarkSorting(); /** */ void slotSaveBookmarks(); /** */ void slotAltRowColors( bool enable ); /** */ void slotAddBookmark(); /** */ void slotEditBookmark(); /** */ void slotDelBookmark(); }; /** */ extern DCHubListManager * g_pHubListManager; #endif valknut-0.4.9/valknut/dchubprofile.cpp0000664000076400007640000001771511074173623016223 0ustar ejsejs/*************************************************************************** dchubprofile.cpp - description ------------------- begin : Fre Sep 20 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dchubprofile.h" #include #include #include #include #include #include "dcconfig.h" #include "dcguiutils.h" /** */ DCHubProfile::DCHubProfile( QWidget * parent ) : QDialog( parent ) { setupUi(this); ComboBox_REMOTE_ENCODING->addItem(QString()); DCGuiUtils::AddEncodings( ComboBox_REMOTE_ENCODING ); ComboBox_REMOTE_ENCODING->setCurrentIndex(0); InitDocument(); } /** */ DCHubProfile::~DCHubProfile() { } /** */ void DCHubProfile::InitDocument() { ComboBox_PROFILE->clear(); std::list * names = g_pConfig->GetHubProfileNames(); for ( std::list::const_iterator it = names->begin(); it != names->end(); ++it ) { if ( (*it).NotEmpty() ) { ComboBox_PROFILE->addItem(QString::fromAscii((*it).Data())); } } delete names; connect( DialogButtonBox, SIGNAL(accepted()), this, SLOT(slotClickedOK()) ); connect( DialogButtonBox, SIGNAL(rejected()), this, SLOT(reject()) ); connect( ComboBox_PROFILE, SIGNAL(currentIndexChanged( const QString & )), this, SLOT(slotProfileActiveted( const QString & )) ); connect( PushButton_DELETE, SIGNAL(clicked()), this, SLOT(slotProfileDelete()) ); slotProfileActiveted(QString()); } /** */ void DCHubProfile::SaveProfile( QString profilename ) { DCConfigHubProfile pConfigHubProfile; if ( !profilename.isEmpty() ) { pConfigHubProfile.m_sName = profilename.toAscii().constData(); pConfigHubProfile.m_sNick = LineEdit_NICK->text().replace( " ", "\xa0").toAscii().constData(); pConfigHubProfile.m_sPassword = LineEdit_PASSWORD->text().toAscii().constData(); pConfigHubProfile.m_bAutoConnect = CheckBox_AUTOCONNECT->isChecked(); pConfigHubProfile.m_bTag = CheckBox_DESCRIPTIONTAG->isChecked(); pConfigHubProfile.m_bExtHubCount = CheckBox_EXT_HUB_COUNT->isChecked(); pConfigHubProfile.m_sComment = LineEdit_PROF_DESCRIPTION->text().toAscii().constData(); pConfigHubProfile.m_bComment = CheckBox_DESCRIPTION->isChecked(); pConfigHubProfile.m_sEMail = LineEdit_EMAIL->text().toAscii().constData(); pConfigHubProfile.m_bEMail = CheckBox_EMAIL->isChecked(); pConfigHubProfile.m_bSSL = CheckBox_SSL->isChecked(); pConfigHubProfile.m_sSuppressedNicks = LineEdit_SUPPRESS_NICKS->text().toAscii().constData(); pConfigHubProfile.m_sRemoteEncoding = ComboBox_REMOTE_ENCODING->currentText().toAscii().constData(); g_pConfig->AddHubProfile( &pConfigHubProfile ); } g_pConfig->SaveHubProfile(); } /** */ void DCHubProfile::slotClickedOK() { SaveProfile(ComboBox_PROFILE->currentText()); accept(); } /** */ void DCHubProfile::slotProfileActiveted( const QString & /*s*/ ) { DCConfigHubProfile pConfigHubProfile; // save old profile if ( !m_sOldName.isEmpty() ) { // check for changes if ( g_pConfig->GetHubProfile( m_sOldName.toAscii().constData(), &pConfigHubProfile ) ) { if ( (pConfigHubProfile.m_sNick != LineEdit_NICK->text().replace( " ", "\xa0").toAscii().constData()) || (pConfigHubProfile.m_sPassword != LineEdit_PASSWORD->text().toAscii().constData()) || (pConfigHubProfile.m_bAutoConnect != CheckBox_AUTOCONNECT->isChecked()) || (pConfigHubProfile.m_bTag != CheckBox_DESCRIPTIONTAG->isChecked()) || (pConfigHubProfile.m_bExtHubCount != CheckBox_EXT_HUB_COUNT->isChecked()) || (pConfigHubProfile.m_sEMail != LineEdit_EMAIL->text().toAscii().constData()) || (pConfigHubProfile.m_sComment != LineEdit_PROF_DESCRIPTION->text().toAscii().constData()) || (pConfigHubProfile.m_bComment != CheckBox_DESCRIPTION->isChecked()) || (pConfigHubProfile.m_bEMail != CheckBox_EMAIL->isChecked()) || (pConfigHubProfile.m_bSSL != CheckBox_SSL->isChecked()) || (pConfigHubProfile.m_sSuppressedNicks != LineEdit_SUPPRESS_NICKS->text().toAscii().constData()) || (pConfigHubProfile.m_sRemoteEncoding != ComboBox_REMOTE_ENCODING->currentText().toAscii().constData()) ) { // ask user to save changes switch( QMessageBox::warning( this, tr("Save profile"), tr("Do you want to save your changes?"), QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Cancel) ) { case QMessageBox::Cancel: { int index = ComboBox_PROFILE->findText(m_sOldName); if ( index != -1 ) { disconnect( ComboBox_PROFILE, SIGNAL(currentIndexChanged( const QString & )), this, SLOT(slotProfileActiveted( const QString & )) ); ComboBox_PROFILE->setCurrentIndex(index); connect( ComboBox_PROFILE, SIGNAL(currentIndexChanged( const QString & )), this, SLOT(slotProfileActiveted( const QString & )) ); } return; } case QMessageBox::Discard: // The user clicked Discard break; default: SaveProfile(m_sOldName); break; } } } } // set new profile name m_sOldName = ComboBox_PROFILE->currentText(); // reset values LineEdit_NICK->clear(); LineEdit_PASSWORD->clear(); CheckBox_AUTOCONNECT->setChecked(false); CheckBox_DESCRIPTIONTAG->setChecked(false); CheckBox_EXT_HUB_COUNT->setChecked(false); LineEdit_EMAIL->clear(); LineEdit_PROF_DESCRIPTION->clear(); LineEdit_SUPPRESS_NICKS->clear(); ComboBox_REMOTE_ENCODING->setCurrentIndex(0); if ( !m_sOldName.isEmpty() ) { if ( g_pConfig->GetHubProfile( m_sOldName.toAscii().constData(), &pConfigHubProfile ) ) { LineEdit_NICK->setText( pConfigHubProfile.m_sNick.Data() ); LineEdit_PASSWORD->setText( pConfigHubProfile.m_sPassword.Data() ); CheckBox_AUTOCONNECT->setChecked( pConfigHubProfile.m_bAutoConnect ); CheckBox_DESCRIPTIONTAG->setChecked( pConfigHubProfile.m_bTag ); CheckBox_EXT_HUB_COUNT->setChecked( pConfigHubProfile.m_bExtHubCount ); LineEdit_EMAIL->setText( pConfigHubProfile.m_sEMail.Data() ); CheckBox_EMAIL->setChecked( pConfigHubProfile.m_bEMail ); LineEdit_PROF_DESCRIPTION->setText( pConfigHubProfile.m_sComment.Data() ); CheckBox_DESCRIPTION->setChecked( pConfigHubProfile.m_bComment ); CheckBox_SSL->setChecked(pConfigHubProfile.m_bSSL); LineEdit_SUPPRESS_NICKS->setText( pConfigHubProfile.m_sSuppressedNicks.Data() ); ComboBox_REMOTE_ENCODING->setEditText( pConfigHubProfile.m_sRemoteEncoding.Data() ); } } } /** Deletes the selected profile, asking for confirmation */ void DCHubProfile::slotProfileDelete() { // get currently selected profile name CString profname = ComboBox_PROFILE->currentText().toAscii().constData(); // ask for confirmation int ret = QMessageBox::question(this, tr("Are you sure?"), tr("Delete profile for ") + QString(profname.Data()), QMessageBox::Yes | QMessageBox::No, QMessageBox::No ); if (ret == QMessageBox::Yes) { // remove profile from list ComboBox_PROFILE->removeItem( ComboBox_PROFILE->currentIndex() ); slotProfileActiveted(QString()); // delete profile g_pConfig->DelHubProfile(profname); // save changes (saving is also done after adding a profile) g_pConfig->SaveHubProfile(); } } valknut-0.4.9/valknut/dcconnectionmanager.h0000664000076400007640000000614211074173623017213 0ustar ejsejs/*************************************************************************** dcconnectionmanager.h - description ------------------- begin : Mon Oct 1 2001 copyright : (C) 2001-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCCONNECTIONMANAGER_H #define DCCONNECTIONMANAGER_H /** *@author Mathias Küster */ #include #include //Added by qt3to4: #include #include #include class QMdiArea; class QMdiSubWindow; class QToolBar; class QTabBar; class DCClient; class CDCMessage; class DCConnectionManager : public QObject, public CConnectionManager { Q_OBJECT public: /** construtor */ DCConnectionManager( QObject * parent = 0 ); /** destructor */ virtual ~DCConnectionManager(); /** */ void InitDocument(); /** */ void AutoConnect(); /** */ void Connect( CString hubname, CString server, bool sslconnect = false ); /** */ void OPKick( QString hubname, QString hubhost, QString nick, QString message ); /** */ void OPForceMove( QString hubname, QString hubhost, QString nick, QString message, QString host ); /** */ void OpenPrivateChat( QString hubname, QString hubhost, QString nick ); /** */ void CloseAllChats( bool onlyOffline ); /** */ void DisconnectAllClients(); /** */ void CloseDisconnectedHubs(); /** */ void InitTabBar( QToolBar * toolbar ); /** callback function */ virtual int DC_CallBack( CDCMessage * ); /** */ void HubEvent( DCClient * client ); /** */ void CaptionChanged( DCClient * client ); /** */ void HubClosing( DCClient * client ); /** * Finds the DCClient for a hub. * Needed for User Commands in Filelist browser, transfer list * and search. */ DCClient * GetClientForHub( CString hubname, CString hubhost ); /** * Just to stop every window having it's own pointer. */ QMdiArea * GetMdiArea() { return m_pMdiArea; }; private: /** */ QTimer m_Timer; /** */ QTabBar * m_pTabBar; /** */ QList * m_pMessageList; /** */ QMdiArea * m_pMdiArea; /** */ int m_nSelectedTab; /** */ QList m_ClientsInTabOrder; private slots: /** */ void timerDone(); /** */ void slotTabSelected( int ); /** widget from mdi area activated */ void slotMdiSubWindowActivated( QMdiSubWindow * w ); }; /** */ extern DCConnectionManager * g_pConnectionManager; #endif valknut-0.4.9/valknut/publichubsmodel.cpp0000664000076400007640000001250711100432522016712 0ustar ejsejs/*************************************************************************** publichubsmodel.cpp - Public Hubs Model implementation ------------------- begin : Mon Nov 5 2007 copyright : (C) 2007 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "publichubsmodel.h" // for byte size strings #include "dcguiutils.h" /** Sets values */ PublicHubItem::PublicHubItem( const QString n, const QString addr, const QString desc, const ulonglong u, const QString c, const ulonglong s, const ulonglong ms, const QString e ) { name = n; server = addr; description = desc; users = u; country = c; shared = s; minshare = ms; extra = e; } /** */ PublicHubItem::~PublicHubItem() { } /** */ PublicHubsModel::PublicHubsModel( QObject * parent ) : QAbstractItemModel( parent ) { /* nothing */ } /** delete all items in model */ PublicHubsModel::~PublicHubsModel() { clear(); } /** */ int PublicHubsModel::rowCount( const QModelIndex & /* index */ ) const { return itemList.size(); } /** */ int PublicHubsModel::columnCount( const QModelIndex & /* index */ ) const { return 8; } /** */ QVariant PublicHubsModel::data( const QModelIndex & index, int role ) const { if ( !index.isValid() ) { return QVariant(); } PublicHubItem * item = itemList[index.row()]; if ( item != 0 ) { if ( role == Qt::DisplayRole ) { switch ( index.column() ) { case 0: return item->name; case 1: return item->server; case 2: return item->description; case 3: return item->users; case 4: return item->country; case 5: return DCGuiUtils::GetSizeString( item->shared ); case 6: return DCGuiUtils::GetSizeString( item->minshare ); case 7: return item->extra; default: return QVariant(); } } else if ( role == PublicHubsProxyRole ) { switch ( index.column() ) { case 0: return item->name; case 1: return item->server; case 2: return item->description; case 3: return item->users; case 4: return item->country; case 5: return item->shared; case 6: return item->minshare; case 7: return item->extra; default: return QVariant(); } } else if ( role == Qt::ToolTipRole ) // tooltip { if ( index.column() == 5 ) { return QString().setNum(item->shared); } else if ( index.column() == 6 ) { return QString().setNum(item->minshare); } else { return data( index, Qt::DisplayRole ); } } else if ( role == Qt::TextAlignmentRole ) { if ( (index.column() == 3) || (index.column() == 5) || (index.column() == 6) ) { return Qt::AlignRight; } } } return QVariant(); } /** */ QVariant PublicHubsModel::headerData( int section, Qt::Orientation orientation, int role ) const { if ( (orientation == Qt::Horizontal) && (role == Qt::DisplayRole) ) { switch ( section ) { case 0: return tr("Name"); case 1: return tr("Server"); case 2: return tr("Description"); case 3: return tr("Users"); case 4: return tr("Country"); case 5: return tr("Shared"); case 6: return tr("Minimum share"); case 7: return tr("Extra"); } } return QVariant(); } /** */ QModelIndex PublicHubsModel::index( int row, int column, const QModelIndex & parent ) const { if ( !hasIndex( row, column, parent ) ) { return QModelIndex(); } return createIndex( row, column ); } /** */ QModelIndex PublicHubsModel::parent( const QModelIndex & /* parent */ ) const { return QModelIndex(); } /** add hub */ void PublicHubsModel::addHub( const QString name, const QString address, const QString desc, const ulonglong users, const QString country, const ulonglong shared, const ulonglong minshare, const QString extra ) { itemList.append( new PublicHubItem( name, address, desc, users, country, shared, minshare, extra ) ); } /** delete all hubs */ void PublicHubsModel::clear() { emit layoutAboutToBeChanged(); QList tmp = itemList; itemList.clear(); for ( QList::const_iterator it = tmp.constBegin(); it != tmp.constEnd(); ++it ) { delete *it; } emit layoutChanged(); } /** delete a hub */ bool PublicHubsModel::deleteHub( PublicHubItem * hub ) { bool res = false; emit layoutAboutToBeChanged(); int index = itemList.indexOf(hub); if ( index != -1 ) { itemList.removeAt(index); delete hub; emit layoutChanged(); res = true; } return res; } /** */ QList PublicHubsModel::getAll() { return itemList; } /** */ PublicHubItem * PublicHubsModel::getItem( const QModelIndex & index ) { if ( index.isValid() && (index.row() >= 0) && (index.row() < itemList.size()) ) { return itemList.at( index.row() ); } return 0; } valknut-0.4.9/valknut/dcusercommandeditor.cpp0000664000076400007640000001560211077651674017613 0ustar ejsejs/*************************************************************************** dcusercommandedit.h - Valknut User Command Editor Dialog ------------------- begin : Sun May 25 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcusercommandeditor.h" #include #include "dcconfig.h" #include /** */ DCUserCommandEditor::DCUserCommandEditor( QWidget * parent ) : QDialog ( parent ) { setupUi(this); connect( RadioButton_SEPARATOR, SIGNAL(toggled(bool)), this, SLOT(slotTypeChanged(bool)) ); connect( RadioButton_RAW, SIGNAL(toggled(bool)), this, SLOT(slotTypeChanged(bool)) ); connect( RadioButton_CHAT, SIGNAL(toggled(bool)), this, SLOT(slotTypeChanged(bool)) ); connect( RadioButton_PM, SIGNAL(toggled(bool)), this, SLOT(slotTypeChanged(bool)) ); connect( LineEdit_COMMAND, SIGNAL(textChanged(const QString &)), this, SLOT(slotCommandChanged(const QString &)) ); connect( LineEdit_TO, SIGNAL(textChanged(const QString &)), this, SLOT(slotCommandChanged(const QString &)) ); } /** */ DCUserCommandEditor::~DCUserCommandEditor() { } /** */ void DCUserCommandEditor::accept() { if ( (RadioButton_SEPARATOR->isChecked() == false) && ((LineEdit_NAME->text().isEmpty()) || (LineEdit_COMMAND->text().isEmpty()) || (LineEdit_NAME->text().right(1) == "\\")) ) { QMessageBox::information( this, tr("User Command Editor"), tr("Name and command must not be empty.") ); return; } else { QDialog::accept(); } } /** */ void DCUserCommandEditor::SetUMC( DC_UserMenuCommand * umc ) { if ( umc == 0 ) { return; } /* Load values that don't need any processing */ LineEdit_NAME->setText( umc->m_sName ); LineEdit_HUBIP->setText( umc->m_sHubIP ); if ( umc->m_nType == euctRawOnce ) { CheckBox_ONCE_PER_NICK->setChecked(true); } /* Set context */ if ( umc->m_nContext & euccHub ) { CheckBox_CONTEXT_HUB->setChecked(true); } if ( umc->m_nContext & euccChat ) { CheckBox_CONTEXT_USER->setChecked(true); } if ( umc->m_nContext & euccSearch ) { CheckBox_CONTEXT_SEARCH->setChecked(true); } if ( umc->m_nContext & euccFilelist ) { CheckBox_CONTEXT_FILELIST->setChecked(true); } QString s = umc->m_sCommand; /** Check for common NMDC public chat or private message commands */ if ( (s.startsWith("<%[mynick]> ")) || (s.startsWith("<%[myNI]> ")) ) { RadioButton_CHAT->setChecked(true); if ( s.startsWith("<%[mynick]> ") ) { s = s.mid(12); } else { s = s.mid(10); } if ( s.right(1) == "|" ) { s = s.left( s.length() - 1 ); } } else if ( s.startsWith("$To: ") ) { RadioButton_PM->setChecked(true); s = s.mid(5); int pos = s.indexOf(" From: "); QString target = s.left( pos ); if ( (target == "%[usernick]") || (target == "%[userNI]") ) { // nothing } else { LineEdit_TO->setText(target); } pos = s.indexOf(">"); s = s.mid(pos+2); if ( s.right(1) == "|" ) { s = s.left( s.length() - 1 ); } } else { RadioButton_RAW->setChecked(true); } /* Analyse type */ if ( umc->m_nType == euctSeparator ) { RadioButton_SEPARATOR->setChecked(true); } LineEdit_COMMAND->setText(s); slotTypeChanged(false); slotCommandChanged(s); } /** */ DC_UserMenuCommand * DCUserCommandEditor::GetUMC() { DC_UserMenuCommand * umc = new DC_UserMenuCommand(); umc->m_sName = LineEdit_NAME->text(); umc->m_sHubIP = LineEdit_HUBIP->text(); if ( RadioButton_SEPARATOR->isChecked() ) { umc->m_nType = euctSeparator; if ( LineEdit_NAME->text().isEmpty() ) { umc->m_sName = tr("Separator"); } } else if ( CheckBox_ONCE_PER_NICK->isChecked() ) { umc->m_nType = euctRawOnce; } else { umc->m_nType = euctRaw; } umc->m_nContext = 0; if ( CheckBox_CONTEXT_HUB->isChecked() ) { umc->m_nContext = umc->m_nContext | euccHub; } if ( CheckBox_CONTEXT_USER->isChecked() ) { umc->m_nContext = umc->m_nContext | euccChat; } if ( CheckBox_CONTEXT_SEARCH->isChecked() ) { umc->m_nContext = umc->m_nContext | euccSearch; } if ( CheckBox_CONTEXT_FILELIST->isChecked() ) { umc->m_nContext = umc->m_nContext | euccFilelist; } slotCommandChanged(LineEdit_COMMAND->text()); umc->m_sCommand = LineEdit_PREVIEW->text(); return umc; } /** */ QString DCUserCommandEditor::getCurrentPrefix() { if ( RadioButton_CHAT->isChecked() ) { return QString("<%[myNI]> "); } else if ( RadioButton_PM->isChecked() ) { if ( LineEdit_TO->text().isEmpty() ) { return QString("$To: %[userNI] From: %[myNI] $<%[myNI]> "); } else { return QString("$To: ") + LineEdit_TO->text() + QString(" From: %[myNI] $<%[myNI]> "); } } else { return QString(); } } /** */ QString DCUserCommandEditor::getCurrentSuffix() { if ( RadioButton_CHAT->isChecked() || RadioButton_PM->isChecked() ) { return QString("|"); } else { return QString(); } } /** */ void DCUserCommandEditor::slotTypeChanged( bool /* checked */ ) { if ( RadioButton_SEPARATOR->isChecked() ) { LineEdit_COMMAND->setEnabled(false); LineEdit_HUBIP->setEnabled(false); LineEdit_TO->setEnabled(false); CheckBox_ONCE_PER_NICK->setEnabled(false); } else if ( RadioButton_RAW->isChecked() ) { LineEdit_COMMAND->setEnabled(true); LineEdit_HUBIP->setEnabled(true); LineEdit_TO->setEnabled(false); CheckBox_ONCE_PER_NICK->setEnabled(true); } else if ( RadioButton_CHAT->isChecked() ) { LineEdit_COMMAND->setEnabled(true); LineEdit_HUBIP->setEnabled(false); LineEdit_TO->setEnabled(false); CheckBox_ONCE_PER_NICK->setEnabled(true); } else if ( RadioButton_PM->isChecked() ) { LineEdit_COMMAND->setEnabled(true); LineEdit_HUBIP->setEnabled(true); LineEdit_TO->setEnabled(true); CheckBox_ONCE_PER_NICK->setEnabled(true); } slotCommandChanged(LineEdit_COMMAND->text()); } /** */ void DCUserCommandEditor::slotCommandChanged( const QString & /* text */ ) { if ( RadioButton_SEPARATOR->isChecked() ) { LineEdit_PREVIEW->setText(QString()); return; } QString s = LineEdit_COMMAND->text(); if ( (RadioButton_CHAT->isChecked()) || (RadioButton_PM->isChecked()) ) { s.replace("$","$"); s.replace("|","|"); } LineEdit_PREVIEW->setText( getCurrentPrefix() + s + getCurrentSuffix() ); } valknut-0.4.9/valknut/dcoptions.h0000664000076400007640000002003711126257360015212 0ustar ejsejs/*************************************************************************** dcoptions.h - description ------------------- begin : Sun Feb 24 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCOPTIONS_H #define DCOPTIONS_H /** *@author Mathias Küster */ #include "dcconfig.h" #include "DCDialogOptions.h" #include class QHttp; class QComboBox; class DCOptions : public QDialog, private Ui::DCDialogOptions { Q_OBJECT public: /** construtor */ DCOptions( QWidget * parent = 0 ); /** destructor */ virtual ~DCOptions(); /** */ void InitDocument(); /** */ void SetValues(); /** */ void GetValues(); /** * Needed to reset the theme if one is tested and dialog cancelled. * Or if you test some other theme, but then save the theme that's already in g_pConfig. * And to avoid setting it again if it's already been set with the test button. */ QString GetTestedTheme() const { return m_sTestedTheme; }; public slots: /** checks/warns about various settings */ virtual void accept(); private: /** */ void BrowseSoundFile(eUserSound); /** */ void PreviewSoundFile(eUserSound); /** */ void SaveSharedFolders(); /** */ void SaveUserChatCommands(); /** */ void SaveAutoResponses(); /** */ void SetUserPhoto( QString filename ); /** */ void setupIconThemeComboBoxes(); /** */ void setupIconThemeComboBox( QComboBox * box, QString icontype ); /** */ void connectOptionsTreeWidget(); /** */ void disconnectOptionsTreeWidget(); /** */ void editSharedFolder( QTreeWidgetItem * item ); /** */ void editHubListUrl( QListWidgetItem * item ); /** */ QTreeWidgetItem * plviIdentify; /** */ QTreeWidgetItem * plviConnection; /** */ QTreeWidgetItem * plviConnectionMode; /** */ QTreeWidgetItem * plviConnectionSettings; /** */ QTreeWidgetItem * plviTransfer; /** */ QTreeWidgetItem * plviTransferShares; /** */ QTreeWidgetItem * plviTransferDownloads; /** */ QTreeWidgetItem * plviTransferUploads; /** */ QTreeWidgetItem * plviTransferSettings; /** */ QTreeWidgetItem * plviGUI; /** */ QTreeWidgetItem * plviGUIClient; /** */ QTreeWidgetItem * plviGUIChat; /** */ QTreeWidgetItem * plviGUIColors; /** */ QTreeWidgetItem * plviGUICommands; /** */ QTreeWidgetItem * plviGUIMenus; /** */ QTreeWidgetItem * plviGUITransfer; /** */ QTreeWidgetItem * plviGUIGeneral; /** */ QTreeWidgetItem * plviGUIIcons; /** */ QTreeWidgetItem * plviGUIFilelistBrowser; /** */ QTreeWidgetItem * plviSound; /** */ QTreeWidgetItem * plviLog; /** */ QTreeWidgetItem * plviHubLists; /** */ QTreeWidgetItem * plviSecurity; /** List view item for auto responses tab */ QTreeWidgetItem * plviAutoResponse; /** List view item for other tab */ QTreeWidgetItem * plviOther; /** QHttp for getting external IP */ QHttp * m_pHttp; /** List of user menu commands */ QMap usercommands; /** Last tested theme, or configured theme if test button never used. */ QString m_sTestedTheme; private slots: /** */ void slotBrowseSoundFileConnect(); /** */ void slotBrowseSoundFileDisconnect(); /** */ void slotBrowseSoundFileSend(); /** */ void slotBrowseSoundFileReceive(); /** */ void slotBrowseSoundFileFirstReceive(); /** */ void slotBrowseSoundFileNickMentioned(); /** */ void slotLogChatAddNickNameFilter(); /** */ void slotLogChatDelNickNameFilter(); /** */ void slotDisableSound(); /** */ void slotPreviewSoundFileConnect(); /** */ void slotPreviewSoundFileDisconnect(); /** */ void slotPreviewSoundFileSend(); /** */ void slotPreviewSoundFileReceive(); /** */ void slotPreviewSoundFileFirstReceive(); /** */ void slotPreviewSoundFileNickMentioned(); /** */ void slotBrowseSoundPlayer(); /** */ void slotBrowseDownloadFolder(); /** */ void slotBrowseDownloadFinishedFolder(); /** */ void slotBrowseShareList(); /** */ void slotBrowseDataFolder(); /** */ void slotSharedFoldersSelectionChanged(); /** */ void slotAddSharedFolder(); /** */ void slotRemoveSharedFolder(); /** */ void slotEditSharedFolder(); /** */ void slotDoubleClickedSharedFolder( QTreeWidgetItem * item, int col ); /** */ void slotContextMenuSharedFolder( const QPoint & pos ); /** */ void slotCreateShareList(); /** */ void slotShareListInfo(); /** */ void slotTestHost(); /** */ void slotGetInterface(); /** */ void slotGetInternetIP(); /** */ void slotGotInternetIP( bool error ); /** */ void slotSetTheme(); /** */ void slotBrowseLanguageFile(); /** */ void slotSelectLanguage(); /** */ void slotBrowseAppFont(); /** */ void slotBrowseTransferCert(); /** */ void slotBrowseTransferKey(); /** */ void slotBrowseDclibPluginFolder(); /** */ void slotHubListUrlsSelectionChanged(); /** */ void slotAddHubListUrl(); /** */ void slotEditHubListUrl(); /** */ void slotRemoveHubListUrl(); /** */ void slotDoubleClickedHubListUrl( QListWidgetItem * item ); /** */ void slotContextMenuHubListUrl( const QPoint & pos ); /** */ void slotBrowseLogFile(); /** */ void slotBrowseBrowser(); /** */ void slotTreeWidgetOptionTreeCurrentChanged( QTreeWidgetItem * current, QTreeWidgetItem * previous ); /** */ void slotTabWidgetDCGUICurrentChanged( int index ); /** */ void slotTabWidgetTransferCurrentChanged( int index ); /** */ void slotTabWidgetConnectionCurrentChanged( int index ); /** */ void slotTabWidgetGUICurrentChanged( int index ); /** */ void slotDoubleClickedChatColor( QListWidgetItem * ); /** */ void slotChangePhoto(); /** */ void slotAddUserMenuCommand(); /** */ void slotEditUserMenuCommand(); /** */ void slotRemoveUserMenuCommand(); /** */ void slotUpUserMenuCommand(); /** */ void slotDownUserMenuCommand(); /** */ void slotUserMenuCommandsSelectionChanged(); /** */ void slotUserMenuCommandsDoubleClicked( QTreeWidgetItem * item, int column ); /** */ void slotContextMenuUserChatCommands( const QPoint & pos ); /** */ void slotContextMenuAutoResponses( const QPoint & pos ); /** Generates a new key and certificate for SSL transfers */ void slotGenerateKeyCert(); /** Open color dialog for background color */ void slotBackgroundColorDialog(); /** Reverse all chat colors */ void slotReverseChatColors(); }; /** */ inline void DCOptions::slotBrowseSoundFileConnect() { BrowseSoundFile(eusCONNECT); } /** */ inline void DCOptions::slotBrowseSoundFileDisconnect() { BrowseSoundFile(eusDISCONNECT); } /** */ inline void DCOptions::slotBrowseSoundFileSend() { BrowseSoundFile(eusSEND); } /** */ inline void DCOptions::slotBrowseSoundFileReceive() { BrowseSoundFile(eusRECEIVE); } /** */ inline void DCOptions::slotBrowseSoundFileFirstReceive() { BrowseSoundFile(eusFIRSTRECEIVE); } /** */ inline void DCOptions::slotBrowseSoundFileNickMentioned() { BrowseSoundFile(eusNICKMENTIONED); } /** */ inline void DCOptions::slotPreviewSoundFileConnect() { PreviewSoundFile(eusCONNECT); } /** */ inline void DCOptions::slotPreviewSoundFileDisconnect() { PreviewSoundFile(eusDISCONNECT); } /** */ inline void DCOptions::slotPreviewSoundFileSend() { PreviewSoundFile(eusSEND); } /** */ inline void DCOptions::slotPreviewSoundFileReceive() { PreviewSoundFile(eusRECEIVE); } /** */ inline void DCOptions::slotPreviewSoundFileFirstReceive() { PreviewSoundFile(eusFIRSTRECEIVE); } /** */ inline void DCOptions::slotPreviewSoundFileNickMentioned() { PreviewSoundFile(eusNICKMENTIONED); } #endif valknut-0.4.9/valknut/dcsigterm.cpp0000664000076400007640000000472411103627327015530 0ustar ejsejs/*************************************************************************** dcsigterm.cpp - Turn SIGTERM into a QCloseEvent properly ------------------- begin : Mon Sep 08 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcsigterm.h" #include #include #include #ifndef WIN32 #include #include #endif #include #include int DCSigTerm::sigtermsfd[2] = { -1, -1 }; /** */ DCSigTerm::DCSigTerm( QObject * parent ) : QObject( parent ) { #ifndef WIN32 if ( socketpair( AF_UNIX, SOCK_STREAM, 0, sigtermsfd ) == 0 ) { notifier = new QSocketNotifier( sigtermsfd[1], QSocketNotifier::Read, this ); connect( notifier, SIGNAL(activated(int)), this, SLOT(slotSocketReadyRead(int)) ); } else { perror("DCSigTerm: socketpair"); sigtermsfd[0] = -1; sigtermsfd[1] = -1; notifier = 0; } #else sigtermsfd[0] = -1; sigtermsfd[1] = -1; notifier = 0; #endif } /** */ DCSigTerm::~DCSigTerm() { #ifndef WIN32 if ( notifier ) { delete notifier; } if ( sigtermsfd[0] != -1 ) { if ( close( sigtermsfd[0] ) == -1 ) { perror("~DCSigTerm: close sigtermsfd[0]"); } } if ( sigtermsfd[1] != -1 ) { if ( close( sigtermsfd[1] ) == -1 ) { perror("~DCSigTerm: close sigtermsfd[1]"); } } #endif } /** */ void DCSigTerm::signal_handler( int /* signum */ ) { char q = 'q'; if ( write( sigtermsfd[0], &q, sizeof(q) ) != 1 ) { /* ignored */ } } /** */ void DCSigTerm::slotSocketReadyRead( int /* unused */ ) { char q = 'p'; if ( read( sigtermsfd[1], &q, sizeof(q) ) == 1 ) { if ( q == 'q' ) { QApplication::postEvent( parent(), new QCloseEvent() ); } } } valknut-0.4.9/valknut/dcfilelistdecompressor.cpp0000664000076400007640000001472711120023540020305 0ustar ejsejs/*************************************************************************** dcfilelistdecompressor.cpp - Valknut Filelist Processing Thread ------------------- begin : Thu Jul 3 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcfilelistdecompressor.h" // dclib classes not QT classes are used to decompress the filelist... #include #include #include #include // ...except processing and old valknut filelist uses QT classes #include #include #include // for attempting to undo what dclib <= 0.3.13 did to downloaded text lists #include #include "dcconfig.h" /** */ DCFilelistDecompressor::DCFilelistDecompressor( QObject * parent, CString file ) : QThread( parent ) { filename = file; data = 0; compressed = 0; recompressed = 0; } /** */ DCFilelistDecompressor::DCFilelistDecompressor( QObject * parent, CByteArray * memory ) : QThread( parent ) { data = 0; compressed = memory; recompressed = 0; } /** */ DCFilelistDecompressor::~DCFilelistDecompressor() { /* It is DCFileBrowsers's responsibility to delete things */ if ( isRunning() ) { printf("~DCFilelistDecompressor: waiting for thread to finish\n"); wait(); } } /** */ CString * DCFilelistDecompressor::getData() { return data; } /** */ void DCFilelistDecompressor::run() { bool ok = false; bool oldvalknut = false; CByteArray out; if ( filename.NotEmpty() ) { compressed = new CByteArray(); if ( (compressed->LoadFromFile(filename) == false) || (compressed->Size() == 0) ) { delete compressed; compressed = 0; emit finished( false ); return; } // enable saving of lists... recompressed = compressed; } CString test; // check for uncompressed xml if ( compressed->Size() > 10 ) { test.Set( (const char*)compressed->Data(), 9 ); } if ( test.Find("Set( (const char*)compressed->Data(), compressed->Size() ); // create compressed data to save recompressed = new CByteArray(); CBZ::Compress(compressed,recompressed); if ( filename.NotEmpty() ) { delete compressed; compressed = 0; } ok = true; emit finished( ok ); return; } if ( compressed->Size() > 3 ) { test.Set( (const char*)compressed->Data(), 2 ); } else { test.Empty(); } if ( test == "BZ" ) { if ( CBZ::Decompress( compressed, &out ) ) { ok = true; } } else { if ( compressed->Size() > 4 ) { test.Set( (const char*)compressed->Data(), 3 ); } else { test.Empty(); } if ( test == "HE3" ) { CHE3 * he3 = new CHE3(); CString * s = he3->decode_he3_data( compressed ); if ( s != 0 ) { out.Append( s->Data(), s->Length() ); delete s; ok = true; } delete he3; } else { if ( compressed->Size() > 20 ) { test.Set( (const char*)compressed->Data(), 18 ); } else { test.Empty(); } if ( test == "---HEADER START---" ) { if ( LoadOldValknutList( &out ) ) { if ( out.Size() > 0 ) { oldvalknut = true; ok = true; } } delete compressed; compressed = 0; } } } if ( (ok == false) || (out.Size() == 0) ) { if ( (compressed != 0) && (compressed == recompressed) ) { delete compressed; compressed = 0; recompressed = 0; } emit finished( false ); return; } data = new CString(); // there may be a byte order mark which is up to 4 bytes at the start of the file if ( out.Size() > 10 ) { test.Set( (const char*)out.Data(), 9 ); } else { test.Empty(); } if ( test.Find("Set( (const char*)out.Data(), out.Size() ); if ( oldvalknut ) { recompressed = new CByteArray(); CBZ::Compress(&out,recompressed); } } else { /* must NULL terminate the CByteArray */ if ( out.Realloc(out.Size()+1) ) { out.Data()[out.Size()-1] = 0; if ( oldvalknut ) { *data = CXml().FromUtf8( (const char*)out.Data() ); CIconv * to_remote = new CIconv( g_pConfig->GetLocalEncoding(), g_pConfig->GetRemoteEncoding() ); test = to_remote->encode( *data ); delete to_remote; recompressed = new CByteArray(); out.SetSize(0); out.Append(test.Data(),test.Length()); CBZ::Compress(&out,recompressed); } else { CIconv * ciconv = new CIconv( g_pConfig->GetRemoteEncoding(), g_pConfig->GetLocalEncoding() ); *data = ciconv->encode( (const char*)out.Data() ); delete ciconv; } } } emit finished( ok ); } /** */ bool DCFilelistDecompressor::LoadOldValknutList( CByteArray * dest ) { bool res = false; if ( !dest ) { return res; } QFile file( filename.Data() ); if ( file.open( IO_ReadOnly ) ) { QString line = QString::fromUtf8(file.readLine(255)); if ( line == "---HEADER START---\n" ) { // read header while ( !(line.isEmpty()) && line!="---HEADER END---\n" ) { line = QString::fromUtf8(file.readLine(255)); #if 0 if ( line.startsWith("TYPE=") ) { m_sType = line.mid(5).simplified(); if ( m_sType == "XMLFILELIST" ) { m_sType = "xml"; } else { m_sType = "text"; } } else if ( line.startsWith("NICK=") ) { m_sNick = line.mid(5).simplified(); } else if ( line.startsWith("HUBNAME=") ) { m_sHubName = line.mid(8).simplified(); } else if ( line.startsWith("HUBHOST=") ) { m_sHubHost = line.mid(8).simplified(); } #endif } QByteArray ba = file.readAll(); if ( ba.size() > 0 ) { dest->Append( ba.constData(), ba.size() ); res = true; } } file.close(); } return res; } valknut-0.4.9/valknut/about.h0000664000076400007640000000550211074173623014323 0ustar ejsejsconst QString g_sAboutAuthors = QString::fromUtf8("\ Developer

\ Mathias Küster
\ Core developer & maintainer

\ Stephen Leaf
\ Core developer

\ Jernej Simoncic
\ Developer & http-plugin maintainer

\ François Gannaz
\ Developer

\ Edward Sheldrake
\ Developer 0.3.8 and later

\ Documentation

\ Andrew Greig
\ Doc writer

\ Packagers

\ Ralph Slooten
\ http://axljab.homelinux.org/
\ Mandrake packager

\ Philippe Lucas
\ http://perso.wanadoo.fr/philippe.lucas33/
\ Mandrake packager

\ Pasi Savilaakso
\ Debian packager

\ Hanspeter Niederstrasser
\ http://snaggledworks.com/software/valknut/
\ Mac OS X packager

\ Logo

\ Frank Weiss
\ Version 0.1.X & 0.2.X

\ Gabe Gendreau
\ Version 0.3.x

\ \ Splash Screen Logo

\ Mathias Küster

\ Translators
\
\ \ Bosnian translation
\
\ Adis Beglerovic
\
\ \ Czech translation
\
\ Jan Navratil
\ Radek Vybíral
\
\ \ Danish translation
\
\ Jack Joergensen
\
\ \ German translation
\
\ Matthias Krüger
\ Mathias Küster
\
\ \ Greek translation
\
\ Chris Maltezos
\
\ \ Spanish translation
\
\ Juan Pablo Feria Gomez
\ Juan Martin
\
\ \ Finnish translation
\
\ Pasi Savilaakso
\
\ \ French translation
\
\ Lionel Van Winnendaele
\ Damien Cassou
\ Lucas Philippe
\
\ \ Hungarian translation
\
\ Kapcsandi Istvan
\ Farkas Barnabás
\ sourceforge user osod88 (for 0.3.14 and later)
\
\ \ Icelandic translation
\
\ Friðjón Guðjohnsen
\
\ \ Italian translation
\
\ Alessandro De Maria
\ Davide Lemma
\
\ \ Latvian translation
\
\ Maris Paupe
\
\ \ Norwegian translation
\
\ Øyvind Sæther
\ Stian Hole
\
\ \ Dutch translation
\
\ Tom Verschueren
\
\ \ Polish translation
\
\ Cezary Biele
\ Mateusz Kurtas (for 0.3.14 and later)
\
\ \ Brazilian Portuguese translation
\
\ André Luiz
\
\ \ Romanian translation
\
\ Radu Dineiu
\
\ \ Russian translation
\
\ Stan Novogorudski
\ Ilya Kurikhin (for 0.3.12 and later)
\
\ \ Slovakian translation
\
\ Jozef Riha
\
\ \ Swedish translation
\
\ Henrik Sankala
\ Boban Jelica
\ Erik Englund
\
\ \ Serbian translation
\
\ Urosevic Aleksandar
\
\ "); valknut-0.4.9/valknut/dcevent.h0000664000076400007640000000645611074173623014652 0ustar ejsejs/*************************************************************************** dcevent.h - description ------------------- begin : Sun Dec 15 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCEVENT_H #define DCEVENT_H /** *@author Mathias Küster */ #include // user events #define EVENT_UPDATE_DM_STATUSBAR QEvent::Type(QEvent::User+1) #define EVENT_TRANSLATION QEvent::Type(QEvent::User+2) #define EVENT_UPDATE_FM_STATUSBAR QEvent::Type(QEvent::User+3) #define EVENT_UPDATE_TR_STATUSBAR QEvent::Type(QEvent::User+4) #define EVENT_UPDATE_FRIEND QEvent::Type(QEvent::User+5) #define EVENT_OPEN_FILELIST_FOLDER QEvent::Type(QEvent::User+8) class CDownloadManagerInfo; class CFileManagerInfo; class DCMessageTraffic; class DCFriendObject; class DCFileBrowserListItem; // friend event class DC_FriendEvent : public QEvent { public: /** construtor */ DC_FriendEvent( DCFriendObject * friendobject ); /** destructor */ virtual ~DC_FriendEvent(); /** */ DCFriendObject * m_pFriendObject; }; // dl manager event class DC_DownloadManagerEvent : public QEvent { public: /** construtor */ DC_DownloadManagerEvent( CDownloadManagerInfo * info ); /** destructor */ virtual ~DC_DownloadManagerEvent(); /** */ CDownloadManagerInfo * m_pDownloadManagerInfo; }; // fm manager event class DC_FileManagerEvent : public QEvent { public: /** construtor */ DC_FileManagerEvent( CFileManagerInfo * info ); /** destructor */ virtual ~DC_FileManagerEvent(); /** */ CFileManagerInfo * m_pFileManagerInfo; }; // tr manager event class DC_TrafficInfoEvent : public QEvent { public: /** construtor */ DC_TrafficInfoEvent( DCMessageTraffic * info ); /** destructor */ virtual ~DC_TrafficInfoEvent(); /** */ DCMessageTraffic * m_pTrafficInfo; }; // translator event class DC_TranslationEvent : public QEvent { public: /** construtor */ DC_TranslationEvent() : QEvent( EVENT_TRANSLATION ) { }; /** destructor */ virtual ~DC_TranslationEvent() {}; /** */ bool m_bTranslate; /** */ QString m_sOriginal; /** */ QString m_sTranslation; /** */ QObject * m_pReceiver; }; /* hack to be able to open a folder in the right pane by double clicking it */ class DC_OpenFilelistFolderEvent : public QEvent { public: /** constructor */ DC_OpenFilelistFolderEvent( DCFileBrowserListItem * item ) : QEvent( EVENT_OPEN_FILELIST_FOLDER ) { m_pItem = item; } ; /** destructor */ virtual ~DC_OpenFilelistFolderEvent() {}; /** The left pane folder item to open */ DCFileBrowserListItem * m_pItem; }; #endif valknut-0.4.9/valknut/dcevent.cpp0000664000076400007640000000471011123550316015165 0ustar ejsejs/*************************************************************************** dcevent.cpp - description ------------------- begin : Sun Dec 15 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcevent.h" #include #include #include #include "dcfriendobject.h" #include // friend event /** */ DC_FriendEvent::DC_FriendEvent( DCFriendObject * friendobject ) : QEvent( EVENT_UPDATE_FRIEND ) { m_pFriendObject = new DCFriendObject(); m_pFriendObject->m_sName = friendobject->m_sName; m_pFriendObject->m_sDescription = friendobject->m_sDescription; m_pFriendObject->m_sHubName = friendobject->m_sHubName; m_pFriendObject->m_sHubHost = friendobject->m_sHubHost; m_pFriendObject->m_eAwayMode = friendobject->m_eAwayMode; m_pFriendObject->m_bPermSlot = friendobject->m_bPermSlot; } /** */ DC_FriendEvent::~DC_FriendEvent() { if ( m_pFriendObject ) delete m_pFriendObject; } /** */ DC_DownloadManagerEvent::DC_DownloadManagerEvent( CDownloadManagerInfo * info ) : QEvent( EVENT_UPDATE_DM_STATUSBAR ) { m_pDownloadManagerInfo = info; } /** */ DC_DownloadManagerEvent::~DC_DownloadManagerEvent() { delete m_pDownloadManagerInfo; } /** */ DC_FileManagerEvent::DC_FileManagerEvent( CFileManagerInfo * info ) : QEvent( EVENT_UPDATE_FM_STATUSBAR ) { m_pFileManagerInfo = info; } /** */ DC_FileManagerEvent::~DC_FileManagerEvent() { delete m_pFileManagerInfo; } /** */ DC_TrafficInfoEvent::DC_TrafficInfoEvent( DCMessageTraffic * info ) : QEvent( EVENT_UPDATE_TR_STATUSBAR ) { m_pTrafficInfo = info; } /** */ DC_TrafficInfoEvent::~DC_TrafficInfoEvent() { delete m_pTrafficInfo; } valknut-0.4.9/valknut/dcedittransfer.cpp0000664000076400007640000000430411074173623016544 0ustar ejsejs/*************************************************************************** dcedittransfer.cpp - description ------------------- begin : Don Dez 5 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcedittransfer.h" #include #include #include /** */ DCEditTransfer::DCEditTransfer( QWidget * parent ) : QDialog( parent ) { setupUi(this); m_pHubObjectList = 0; connect( ComboBox_KNOWNHUBS, SIGNAL(activated( const QString & )), this, SLOT(slotKnownHubsChange( const QString &)) ); } /** */ DCEditTransfer::~DCEditTransfer() { } /** */ void DCEditTransfer::slotKnownHubsChange( const QString & s ) { DCHubObject * HubObject=0; while( (HubObject=m_pHubObjectList->Next(HubObject)) != 0 ) { if ( s == QString::fromAscii(HubObject->m_sHubName.Data()) ) { LineEdit_HUBNAME->setText(HubObject->m_sHubName.Data()); LineEdit_HUBHOST->setText(HubObject->m_sHubHost.Data()); break; } } } /** */ void DCEditTransfer::Init(QString & nick, QString & hubname, QString & hubhost, CList * list ) { DCHubObject * HubObject; m_pHubObjectList = list; LineEdit_NICK->setText(nick); LineEdit_HUBNAME->setText(hubname); LineEdit_HUBHOST->setText(hubhost); HubObject = 0; while( (HubObject=m_pHubObjectList->Next(HubObject)) != 0 ) { ComboBox_KNOWNHUBS->addItem(QString::fromAscii(HubObject->m_sHubName.Data())); } } valknut-0.4.9/valknut/dcfiletransferinfo.h0000664000076400007640000000314411074173623017060 0ustar ejsejs/*************************************************************************** dcfiletransferinfo.h - description ------------------- begin : Sam Jul 13 2002 copyright : (C) 2002-2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCFILETRANSFERINFO_H #define DCFILETRANSFERINFO_H /** *@author Mathias Küster */ #include #include #include "DCDialogFileTransferInfo.h" class DCFileChunkObject; class DCFileTransferInfo : public QWidget, private Ui::DCDialogFileTransferInfo { Q_OBJECT public: /** construtor */ DCFileTransferInfo( CString filename, QWidget * parent ); /** destructor */ virtual ~DCFileTransferInfo(); private: /** */ void InitDocument(); /** */ QTimer m_Timer; /** */ CString m_sFileName; private slots: /** */ void timerDone(); }; #endif valknut-0.4.9/valknut/cdialogmessage.cpp0000664000076400007640000000555111100336602016503 0ustar ejsejs/*************************************************************************** cdialogmessage.cpp - description ------------------- begin : Don Sep 18 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "cdialogmessage.h" #include #include #include #include #include /** */ CDialogMessage::CDialogMessage( QWidget *parent, enum QMessageBox::Icon icon, QString caption, QString text, const QString & button0Text, const QString & button1Text, const QString & button2Text ) : QDialog(parent) { setupUi(this); setWindowTitle(caption); TextLabel_TEXT->setText(text); if ( button0Text == QString::null ) { PushButton0->hide(); } else { PushButton0->setText(button0Text); connect( PushButton0, SIGNAL(clicked()), this, SLOT(slotPushButton0Clicked()) ); } if ( button1Text == QString::null ) { PushButton1->hide(); } else { PushButton1->setText(button1Text); connect( PushButton1, SIGNAL(clicked()), this, SLOT(slotPushButton1Clicked()) ); } if ( button2Text == QString::null ) { PushButton2->hide(); } else { PushButton2->setText(button2Text); connect( PushButton2, SIGNAL(clicked()), this, SLOT(slotPushButton2Clicked()) ); } switch(icon) { case QMessageBox::Information: PixmapLabel_ICON->setPixmap(QApplication::style()->standardPixmap(QStyle::SP_MessageBoxInformation)); break; case QMessageBox::Warning: PixmapLabel_ICON->setPixmap(QApplication::style()->standardPixmap(QStyle::SP_MessageBoxWarning)); break; case QMessageBox::Critical: PixmapLabel_ICON->setPixmap(QApplication::style()->standardPixmap(QStyle::SP_MessageBoxCritical)); break; default: break; } adjustSize(); } /** */ CDialogMessage::~CDialogMessage() { } /** */ bool CDialogMessage::GetCheckBoxStatus() { return CheckBox_SHOW->isChecked(); } /** */ void CDialogMessage::slotPushButton0Clicked() { done(0); } /** */ void CDialogMessage::slotPushButton1Clicked() { done(1); } /** */ void CDialogMessage::slotPushButton2Clicked() { done(2); } valknut-0.4.9/valknut/dcuserslist.cpp0000664000076400007640000003632611074173623016120 0ustar ejsejs/*************************************************************************** dcuserslist.cpp - description ------------------- begin : Thu Nov 21 2002 copyright : (C) 2002 by François Gannaz ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcuserslist.h" #include #include #include #include #include #include #include #include #include #include #include "dcconfig.h" #include "dcevent.h" #include "dcconnectionmanager.h" #include "dcmenuhandler.h" #include "dciconloader.h" #include "dctransferview.h" #include "dcguiutils.h" #include #include DCUsersList * g_pUsersList = 0; /** */ DCUsersList::DCUsersList( QWidget * parent ) : QWidget( parent ) { setupUi(this); setWindowIcon( g_pIconLoader->GetPixmap(eiUSERS) ); lastFriendsWidth = -1; /* * disable this, we are adjusting the column widths because * QTreeView only resizes the last column */ TreeWidget_FRIENDS->header()->setStretchLastSection(false); /* I have no idea why QT4 defaults to descending order */ TreeWidget_FRIENDS->sortByColumn( 0, Qt::AscendingOrder ); if ( (parent != 0) && (qobject_cast(parent) != 0) ) { m_pContainerWindow = new QMdiSubWindow(); m_pContainerWindow->setWidget(this); } else { m_pContainerWindow = 0; } InitDocument(); g_pUsersList = this; } /** */ DCUsersList::~DCUsersList() { g_pUsersList = NULL; for ( FriendMap::const_iterator it = m_FriendMap.constBegin(); it != m_FriendMap.constEnd(); ++it ) { delete it.value(); } m_FriendMap.clear(); if ( m_pContainerWindow ) { m_pContainerWindow->setWidget(0); // otherwise the QMdiSubWindow will delete this again delete m_pContainerWindow; m_pContainerWindow = 0; } } /** */ void DCUsersList::showEvent( QShowEvent * event ) { QWidget::showEvent( event ); if ( isVisible() ) { SizeColumnsPreservingRatios(); } } /** */ void DCUsersList::resizeEvent( QResizeEvent * ) { SizeColumnsPreservingRatios(); } /** */ void DCUsersList::closeEvent( QCloseEvent * e ) { QWidget::closeEvent( e ); if ( m_pContainerWindow && m_pContainerWindow->parent() ) { /* Using QMdiArea::removeSubWindow() breaks tabs mode but this works */ m_pContainerWindow->setParent(0); } } /** */ void DCUsersList::SizeColumnsPreservingRatios() { if ( TreeWidget_FRIENDS->isVisible() ) { int width = TreeWidget_FRIENDS->width(); if ( width > 0 ) { if ( lastFriendsWidth == -1 ) { TreeWidget_FRIENDS->setColumnWidth( 0, width/4 ); TreeWidget_FRIENDS->setColumnWidth( 1, width/4 ); TreeWidget_FRIENDS->setColumnWidth( 2, width/4 ); TreeWidget_FRIENDS->setColumnWidth( 3, width/4 ); lastFriendsWidth = TreeWidget_FRIENDS->width(); } else if ( lastFriendsWidth != width ) { DCGuiUtils::AdjustColumnWidths( TreeWidget_FRIENDS, lastFriendsWidth ); lastFriendsWidth = TreeWidget_FRIENDS->width(); } } } } /** */ void DCUsersList::InitDocument() { StringMap * map; // restore settings if ( g_pConfig->GetMap("USERVIEW",map) ) { if ( ((*map)["WIDTH"].toInt() > 0) && ((*map)["HEIGHT"].toInt() > 0) ) { if ( m_pContainerWindow != 0 ) { m_pContainerWindow->setGeometry( (*map)["X"].toInt(), (*map)["Y"].toInt(), (*map)["WIDTH"].toInt(), (*map)["HEIGHT"].toInt() ); } } } connect( TreeWidget_FRIENDS, SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotRightButtonClickedFriendList( const QPoint & )) ); // load friends list g_pConfig->LoadDCFriendList( &m_FriendMap ); ShowFriendsList(); } /** */ void DCUsersList::DeInitDocument() { if ( m_pContainerWindow == 0 ) { return; } StringMap * map; // save search view settings g_pConfig->GetMap("USERVIEW",map); (*map)["X"] = QString().setNum(m_pContainerWindow->x()); (*map)["Y"] = QString().setNum(m_pContainerWindow->y()); (*map)["WIDTH"] = QString().setNum(m_pContainerWindow->width()); (*map)["HEIGHT"] = QString().setNum(m_pContainerWindow->height()); (*map)["VISIBLE"] = QString().setNum(m_pContainerWindow->isVisible()); (*map)["MAXIMIZED"] = QString().setNum(m_pContainerWindow->isMaximized()); (*map)["MINIMIZED"] = QString().setNum(m_pContainerWindow->isMinimized()); } /** friend event handling */ void DCUsersList::customEvent( QEvent * event ) { if ( event->type() == EVENT_UPDATE_FRIEND ) { DCFriendObject * FriendObject; eUserAwayMode awaymode; DC_FriendEvent * e = (DC_FriendEvent*)event; if ( (e->m_pFriendObject->m_sName.isEmpty()) && (g_pConnectionManager) ) { // check all friends online state for ( FriendMap::const_iterator it = m_FriendMap.constBegin(); it != m_FriendMap.constEnd(); ++it ) { FriendObject = it.value(); CString empty; if ( g_pConnectionManager->IsUserOnline( FriendObject->m_sName.toAscii().constData(), empty, empty, 0 ) ) { awaymode = euamONLINE; } else { awaymode = euamOFFLINE; } SetAwayMode( FriendObject, awaymode ); } } else { FriendObject = m_FriendMap.value(e->m_pFriendObject->m_sName); if ( FriendObject != 0 ) { SetAwayMode( FriendObject, e->m_pFriendObject->m_eAwayMode ); } } event->accept(); } else { event->ignore(); } } /** */ void DCUsersList::ShowFriendsList() { QImage im; DCFriendObject * FriendObject; for ( FriendMap::const_iterator it = m_FriendMap.constBegin(); it != m_FriendMap.constEnd(); ++it ) { FriendObject = it.value(); FriendObject->m_pItem = new QTreeWidgetItem( TreeWidget_FRIENDS ); FriendObject->m_pItem->setText( 0, FriendObject->m_sName ); FriendObject->m_pItem->setIcon(0,QIcon(g_pIconLoader->GetPixmap(eiBALL_RED))); if ( !(FriendObject->m_sImageFileName.isEmpty()) ) { if ( im.load(FriendObject->m_sImageFileName) ) { im = im.scaled(32,32,Qt::KeepAspectRatio,Qt::SmoothTransformation); FriendObject->m_pItem->setIcon(1,QIcon(QPixmap::fromImage(im))); } } if ( FriendObject->m_bPermSlot ) { FriendObject->m_pItem->setText(2, tr("Permanent slot")); } else { FriendObject->m_pItem->setText(2, QString()); } if ( FriendObject->m_bIgnore ) { FriendObject->m_pItem->setText(3, tr("Ignore")); } else { FriendObject->m_pItem->setText(3, QString()); } } } /** */ void DCUsersList::DelFriend( QString name ) { DCFriendObject * FriendObject = m_FriendMap.value(name); if ( FriendObject != 0 ) { // remove slot if necessary if ( FriendObject->m_bPermSlot ) { g_pTransferView->DLM_AddUserSlot(FriendObject->m_sName.toAscii().constData(), FriendObject->m_sHubName.toAscii().constData(), 0); } delete FriendObject->m_pItem; // remove from list m_FriendMap.remove(name); delete FriendObject; // save list g_pConfig->SaveDCFriendList( &m_FriendMap ); } } /** */ void DCUsersList::AddFriend( QString name, QString hubname, QString hubhost, QString description ) { DCFriendObject * FriendObject = m_FriendMap.value(name); if ( FriendObject == 0 ) { FriendObject = new DCFriendObject(); FriendObject->m_sName = name; FriendObject->m_sHubName = hubname; FriendObject->m_sHubHost = hubhost; FriendObject->m_sDescription = description; FriendObject->m_pItem = new QTreeWidgetItem( TreeWidget_FRIENDS ); FriendObject->m_pItem->setText( 0, FriendObject->m_sName ); m_FriendMap.insert(name,FriendObject); eUserAwayMode awaymode = euamNONE; if ( g_pConnectionManager ) { CString empty; if ( g_pConnectionManager->IsUserOnline( FriendObject->m_sName.toAscii().constData(), empty, empty, 0 ) ) { awaymode = euamONLINE; } } SetAwayMode( FriendObject, awaymode ); // add permanent slot if granted if (FriendObject->m_bPermSlot) { g_pTransferView->DLM_AddUserSlot( name.toAscii().constData(), hubname.toAscii().constData(), 0, true ); } // save friendlist g_pConfig->SaveDCFriendList( &m_FriendMap ); } } /** */ void DCUsersList::UpdateFriend( QString /*name*/, QString /*host*/, QString /*description*/ ) { } /** */ bool DCUsersList::AddFriendPhoto( QString name, CByteArray * data ) { bool res = false; QFile f; QString s; int i; DCFriendObject * FriendObject = m_FriendMap.value(name); if ( FriendObject != 0 ) { s = FriendObject->m_sImageFileName; if ( !s.isEmpty() ) { f.setFileName(s); if ( f.open( QIODevice::WriteOnly | QIODevice::Truncate ) ) { f.write((const char*)data->Data(),data->Size()); f.close(); } else { s = QString(); } } if ( s.isEmpty() ) { // create new image for(i=0;i<200;i++) { s = QString::fromAscii(g_pConfig->GetImagePath().Data()) + QString().setNum(i) + ".png"; if ( f.exists(s) == false ) { break; } } if ( i < 200 ) { f.setFileName(s); if ( f.open( QIODevice::WriteOnly ) ) { f.write((const char*)data->Data(),data->Size()); f.close(); FriendObject->m_sImageFileName = s; } else { printf("AddFriendPhoto: can't open file '%s'\n",s.toAscii().constData()); } } } // save friendlist g_pConfig->SaveDCFriendList( &m_FriendMap ); QImage im; if ( !(FriendObject->m_sImageFileName.isEmpty()) ) { if ( im.load(FriendObject->m_sImageFileName) ) { im = im.scaled(32,32,Qt::KeepAspectRatio,Qt::SmoothTransformation); FriendObject->m_pItem->setIcon(1,QIcon(QPixmap::fromImage(im))); } } } return res; } /** */ void DCUsersList::SetAwayMode( DCFriendObject * obj, eUserAwayMode e ) { if ( !obj || !obj->m_pItem ) { return; } if ( obj->m_eAwayMode != e ) { obj->m_eAwayMode = e; switch(obj->m_eAwayMode) { case euamNORMAL: case euamONLINE: obj->m_pItem->setIcon(0,QIcon(g_pIconLoader->GetPixmap(eiBALL_GREEN))); // add a permanent slot for friend if granted if (obj->m_bPermSlot) { g_pTransferView->DLM_AddUserSlot(obj->m_sName.toAscii().constData(), obj->m_sHubName.toAscii().constData(), 0, true ); } break; case euamAWAY: obj->m_pItem->setIcon(0,QIcon(g_pIconLoader->GetPixmap(eiBALL_YELLOW))); // add a permanent slot for friend if granted if (obj->m_bPermSlot) { g_pTransferView->DLM_AddUserSlot(obj->m_sName.toAscii().constData(), obj->m_sHubName.toAscii().constData(), 0, true ); } break; // case euamNONE: // case euamOFFLINE: default: obj->m_pItem->setIcon(0,QIcon(g_pIconLoader->GetPixmap(eiBALL_RED))); // remove the permanent slot for the friend if one is granted if (obj->m_bPermSlot) { g_pTransferView->DLM_AddUserSlot(obj->m_sName.toAscii().constData(), obj->m_sHubName.toAscii().constData(), 0); } break; } } } /** */ void DCUsersList::slotRightButtonClickedFriendList( const QPoint & ) { QAction * chosen = 0; QMenu *m; QList selitems = TreeWidget_FRIENDS->selectedItems(); QTreeWidgetItem * curitem; DCFriendObject * FriendObject; if ( selitems.size() == 0 ) { return; } m = new QMenu(this); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE ); QAction * addSlot = m->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITADD) ), tr("Grant permanent slot") ); QAction * removeSlot = m->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITDELETE) ), tr("Remove permanent slot") ); QAction * ignore = m->addAction(tr("Ignore chat messages")); QAction * unignore = m->addAction(tr("Show chat messages")); chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } if ( chosen == remove ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); DelFriend(curitem->text(0)); } } else if ( chosen == addSlot ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->text(2).isEmpty() ) { curitem->setText(2, tr("Permanent slot")); FriendObject = m_FriendMap.value(curitem->text(0)); if ( FriendObject != 0 ) { //printf("Adding permanment slot for %s\n", FriendObject->m_sName.toAscii().constData()); FriendObject->m_bPermSlot = true; CString empty; if (g_pConnectionManager->IsUserOnline( FriendObject->m_sName.toAscii().constData(), empty, empty, 0 )) { g_pTransferView->DLM_AddUserSlot(FriendObject->m_sName.toAscii().constData(), FriendObject->m_sHubName.toAscii().constData(), 0, true ); } } } } g_pConfig->SaveDCFriendList( &m_FriendMap ); } else if ( chosen == removeSlot ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if (curitem->text(2) == tr("Permanent slot")) { curitem->setText(2, QString()); FriendObject = m_FriendMap.value(curitem->text(0)); if ( FriendObject != 0 ) { //printf("Removing permanment slot for %s\n", FriendObject->m_sName.toAscii().constData()); FriendObject->m_bPermSlot = false; CString empty; if (g_pConnectionManager->IsUserOnline( FriendObject->m_sName.toAscii().constData(), empty, empty, 0 )) { g_pTransferView->DLM_AddUserSlot(FriendObject->m_sName.toAscii().constData(), FriendObject->m_sHubName.toAscii().constData(), 0); } } } } g_pConfig->SaveDCFriendList( &m_FriendMap ); } else if ( chosen == ignore ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); curitem->setText(3, tr("Ignore")); FriendObject = m_FriendMap.value(curitem->text(0)); if ( FriendObject != 0 ) { FriendObject->m_bIgnore = true; } } g_pConfig->SaveDCFriendList( &m_FriendMap ); } else if ( chosen == unignore ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); curitem->setText(3, QString()); FriendObject = m_FriendMap.value(curitem->text(0)); if ( FriendObject != 0 ) { FriendObject->m_bIgnore = false; } } g_pConfig->SaveDCFriendList( &m_FriendMap ); } } /** Returns true if the nick is in the friend list */ bool DCUsersList::isNickInList( QString name ) { return m_FriendMap.contains(name); } /** Returns true if the nick is on ignore */ bool DCUsersList::ignoreNick( QString nick ) { DCFriendObject * FriendObject = m_FriendMap.value(nick); if ( FriendObject != 0 ) { return FriendObject->m_bIgnore; } else { return false; } } /** Sets the ignore status of a nick*/ void DCUsersList::setIgnore( QString nick, bool ignore ) { DCFriendObject * FriendObject = m_FriendMap.value(nick); if ( FriendObject != 0 ) { FriendObject->m_bIgnore = ignore; if ( ignore ) { FriendObject->m_pItem->setText(3, tr("Ignore")); } else { FriendObject->m_pItem->setText(3, QString()); } g_pConfig->SaveDCFriendList( &m_FriendMap ); } } valknut-0.4.9/valknut/userlistmodel.cpp0000664000076400007640000005261311131661212016432 0ustar ejsejs/*************************************************************************** userlistmodel.cpp - User List Model implementation ------------------- begin : Sun Nov 18 2007 copyright : (C) 2007 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "userlistmodel.h" #include /* need to convert shared bytes to size string */ #include "dcguiutils.h" /** */ UserListModel::UserListModel( QObject * parent ) : QAbstractItemModel( parent ) { sortColumn = COLUMN_NICK; sortOrder = Qt::AscendingOrder; stripper.setPattern("\\[.*\\]"); stripper.setMinimal(true); } /** delete all items in model */ UserListModel::~UserListModel() { clear(); } /** */ int UserListModel::rowCount( const QModelIndex & /* index */ ) const { return itemList.size(); } /** */ int UserListModel::columnCount( const QModelIndex & /* index */ ) const { return 9; } /** */ QVariant UserListModel::data( const QModelIndex & index, int role ) const { if ( !index.isValid() ) { return QVariant(); } UserListItem * item = itemList[index.row()]; if ( item == 0 ) { return QVariant(); } if ( role == Qt::DisplayRole ) // text { switch ( index.column() ) { case COLUMN_NICK: return item->nick; case COLUMN_COMMENT: return item->comment; case COLUMN_TAG: return item->tag; case COLUMN_SPEED: return item->speed; case COLUMN_EMAIL: return item->email; case COLUMN_SHARE: return DCGuiUtils::GetSizeString( item->shared ); case COLUMN_IP: return item->ip; case COLUMN_LOCKPK: return item->lockpk; case COLUMN_SUPPORTS: return item->supports; } } else if ( role == Qt::DecorationRole ) // icon { if ( index.column() == COLUMN_NICK ) { // to check icons are being cached properly // printf("row=%d column=%d cacheKey=%llu\n",index.row(),index.column(),item->pixmap.cacheKey()); return item->pixmap; } } else if ( role == Qt::ToolTipRole ) // tool tip { if ( index.column() == COLUMN_SHARE ) { return QString::number( item->shared ); } } else if ( role == Qt::TextAlignmentRole ) // text alignment { if ( index.column() == COLUMN_SHARE ) { return Qt::AlignRight; } } else if ( role == Qt::ForegroundRole) // text colour { if ( (index.column() == COLUMN_NICK) && (item->highlight) ) { return QColor( 255, 0, 0 ); } } return QVariant(); } /** */ QVariant UserListModel::headerData( int section, Qt::Orientation orientation, int role ) const { if ( (orientation == Qt::Horizontal) && (role == Qt::DisplayRole) ) { switch ( section ) { case COLUMN_NICK: return tr("Nick"); case COLUMN_COMMENT: return tr("Comment"); case COLUMN_TAG: return tr("Tag"); case COLUMN_SPEED: return tr("Speed"); case COLUMN_EMAIL: return tr("Email"); case COLUMN_SHARE: return tr("Share"); case COLUMN_IP: return tr("IP"); case COLUMN_LOCKPK: return tr("Lock/PK"); case COLUMN_SUPPORTS: return tr("Supports"); } } return QVariant(); } /** */ bool UserListItemNickLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->nick_lc, r->nick_lc ) < 0; } else { return l->sorttop; } } /** */ bool UserListItemCommentLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->comment_lc, r->comment_lc ) < 0; } else { return l->sorttop; } } /** */ bool UserListItemTagLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->tag_lc, r->tag_lc ) < 0; } else { return l->sorttop; } } /** */ bool UserListItemSpeedLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->speed_lc, r->speed_lc ) < 0; } else { return l->sorttop; } } /** */ bool UserListItemEmailLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->email_lc, r->email_lc ) < 0; } else { return l->sorttop; } } /** */ bool UserListItemShareLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return l->shared < r->shared; } else { return l->sorttop; } } /** */ bool UserListItemIPLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->ip, r->ip ) < 0; } else { return l->sorttop; } } /** */ bool UserListItemLockPKLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->lockpk, r->lockpk ) < 0; } else { return l->sorttop; } } /** */ bool UserListItemSupportsLessThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->supports, r->supports ) < 0; } else { return l->sorttop; } } /** */ bool UserListItemNickGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->nick_lc, r->nick_lc ) > 0; } else { return r->sorttop; } } /** */ bool UserListItemCommentGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->comment_lc, r->comment_lc ) > 0; } else { return r->sorttop; } } /** */ bool UserListItemTagGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->tag_lc, r->tag_lc ) > 0; } else { return r->sorttop; } } /** */ bool UserListItemSpeedGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->speed_lc, r->speed_lc ) > 0; } else { return r->sorttop; } } /** */ bool UserListItemEmailGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->email_lc, r->email_lc ) > 0; } else { return r->sorttop; } } /** */ bool UserListItemShareGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return l->shared > r->shared; } else { return r->sorttop; } } /** */ bool UserListItemIPGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->ip, r->ip ) > 0; } else { return r->sorttop; } } /** */ bool UserListItemLockPKGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->lockpk, r->lockpk ) > 0; } else { return r->sorttop; } } /** */ bool UserListItemSupportsGreaterThan( const UserListItem * l, const UserListItem * r ) { if ( l->sorttop == r->sorttop ) { return QString::localeAwareCompare( l->supports, r->supports ) > 0; } else { return r->sorttop; } } /** */ void UserListModel::sort( int column, Qt::SortOrder order ) { sortColumn = column; sortOrder = order; if ( column == -1 ) // sorting disabled { return; } emit layoutAboutToBeChanged(); if ( order == Qt::AscendingOrder ) { switch ( column ) { case COLUMN_NICK: qStableSort( itemList.begin(), itemList.end(), UserListItemNickLessThan ); break; case COLUMN_COMMENT: qStableSort( itemList.begin(), itemList.end(), UserListItemCommentLessThan ); break; case COLUMN_TAG: qStableSort( itemList.begin(), itemList.end(), UserListItemTagLessThan ); break; case COLUMN_SPEED: qStableSort( itemList.begin(), itemList.end(), UserListItemSpeedLessThan ); break; case COLUMN_EMAIL: qStableSort( itemList.begin(), itemList.end(), UserListItemEmailLessThan ); break; case COLUMN_SHARE: qStableSort( itemList.begin(), itemList.end(), UserListItemShareLessThan ); break; case COLUMN_IP: qStableSort( itemList.begin(), itemList.end(), UserListItemIPLessThan ); break; case COLUMN_LOCKPK: qStableSort( itemList.begin(), itemList.end(), UserListItemLockPKLessThan ); break; case COLUMN_SUPPORTS: qStableSort( itemList.begin(), itemList.end(), UserListItemSupportsLessThan ); break; } } else if ( order == Qt::DescendingOrder ) { switch ( column ) { case COLUMN_NICK: qStableSort( itemList.begin(), itemList.end(), UserListItemNickGreaterThan ); break; case COLUMN_COMMENT: qStableSort( itemList.begin(), itemList.end(), UserListItemCommentGreaterThan ); break; case COLUMN_TAG: qStableSort( itemList.begin(), itemList.end(), UserListItemTagGreaterThan ); break; case COLUMN_SPEED: qStableSort( itemList.begin(), itemList.end(), UserListItemSpeedGreaterThan ); break; case COLUMN_EMAIL: qStableSort( itemList.begin(), itemList.end(), UserListItemEmailGreaterThan ); break; case COLUMN_SHARE: qStableSort( itemList.begin(), itemList.end(), UserListItemShareGreaterThan ); break; case COLUMN_IP: qStableSort( itemList.begin(), itemList.end(), UserListItemIPGreaterThan ); break; case COLUMN_LOCKPK: qStableSort( itemList.begin(), itemList.end(), UserListItemLockPKGreaterThan ); break; case COLUMN_SUPPORTS: qStableSort( itemList.begin(), itemList.end(), UserListItemSupportsGreaterThan ); break; } } for ( int i = 0; i < itemList.size(); ++i ) { itemList.at(i)->index = i; } emit layoutChanged(); } /** */ QModelIndex UserListModel::index( int row, int column, const QModelIndex & parent ) const { if ( !hasIndex( row, column, parent ) ) { return QModelIndex(); } return createIndex( row, column ); } /** */ QModelIndex UserListModel::parent( const QModelIndex & /* parent */ ) const { return QModelIndex(); } /** */ void UserListModel::clear() { emit layoutAboutToBeChanged(); QList tmp = itemList; itemList.clear(); itemHash.clear(); for ( QList::const_iterator it = tmp.constBegin(); it != tmp.constEnd(); ++it ) { delete *it; } emit layoutChanged(); } /** */ bool UserListModel::hasNick( const QString & nick ) const { return itemHash.contains( nick ); } /** */ void UserListModel::removeUser( const QString & nick ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } emit layoutAboutToBeChanged(); itemHash.remove( nick ); itemList.removeAt( item->index ); // fix indexes for( int i = item->index; i < itemList.size(); ++i ) { itemList.at(i)->index--; } // destroy item delete item; emit layoutChanged(); } /** */ void UserListModel::addUser( const QString nick, const QPixmap icon, const QString comment, const QString tag, const QString speed, const QString email, const ulonglong share, const QString ip, const QString lockpk, const QString supports ) { UserListItem * item = itemHash.value( nick ); if ( item != 0 ) { item->pixmap = icon; item->comment = comment; item->tag = tag; item->speed = speed; item->email = email; item->shared = share; item->ip = ip; item->lockpk = lockpk; item->supports = supports; item->nick_lc = nick.toLower(); item->nick_stripped = nick.toLower().remove( stripper ); item->comment_lc = comment.toLower(); item->tag_lc = tag.toLower(); item->speed_lc = speed.toLower(); item->email_lc = email.toLower(); QModelIndex topLeft = createIndex( item->index, COLUMN_NICK ); QModelIndex bottomRight = createIndex( item->index, COLUMN_SUPPORTS ); emit dataChanged( topLeft, bottomRight ); if ( sortColumn != COLUMN_NICK ) { sort( sortColumn, sortOrder ); } return; } emit layoutAboutToBeChanged(); item = new UserListItem(); item->nick = nick; item->pixmap = icon; item->comment = comment; item->tag = tag; item->speed = speed; item->email = email; item->shared = share; item->ip = ip; item->lockpk = lockpk; item->supports = supports; item->nick_lc = nick.toLower(); item->nick_stripped = nick.toLower().remove( stripper ); item->comment_lc = comment.toLower(); item->tag_lc = tag.toLower(); item->speed_lc = speed.toLower(); item->email_lc = email.toLower(); itemHash[ nick ] = item; if ( sortColumn == -1 ) // if sorting disabled { item->index = itemList.size(); itemList.append( item ); emit layoutChanged(); return; } // find position in list for new item QList::iterator it; if ( sortOrder == Qt::AscendingOrder ) { switch ( sortColumn ) { case COLUMN_NICK: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemNickLessThan ); break; case COLUMN_COMMENT: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemCommentLessThan ); break; case COLUMN_TAG: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemTagLessThan ); break; case COLUMN_SPEED: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemSpeedLessThan ); break; case COLUMN_EMAIL: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemEmailLessThan ); break; case COLUMN_SHARE: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemShareLessThan ); break; case COLUMN_IP: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemIPLessThan ); break; case COLUMN_LOCKPK: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemLockPKLessThan ); break; case COLUMN_SUPPORTS: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemSupportsLessThan ); break; } } else if ( sortOrder == Qt::DescendingOrder ) { switch ( sortColumn ) { case COLUMN_NICK: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemNickGreaterThan ); break; case COLUMN_COMMENT: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemCommentGreaterThan ); break; case COLUMN_TAG: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemTagGreaterThan ); break; case COLUMN_SPEED: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemSpeedGreaterThan ); break; case COLUMN_EMAIL: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemEmailGreaterThan ); break; case COLUMN_SHARE: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemShareGreaterThan ); break; case COLUMN_IP: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemIPGreaterThan ); break; case COLUMN_LOCKPK: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemLockPKGreaterThan ); break; case COLUMN_SUPPORTS: it = qLowerBound( itemList.begin(), itemList.end(), item, UserListItemSupportsGreaterThan ); break; } } int i; if ( it == itemList.begin() ) { i = 0; } else if ( it == itemList.end() ) { i = itemList.size(); } else { i = (*it++)->index; } item->index = i; itemList.insert( i, item ); i++; // fix remaining indexes for ( ; i < itemList.size(); i++ ) { itemList.at(i)->index++; } emit layoutChanged(); } /** */ void UserListModel::updateIcon( const QString & nick, const QPixmap icon ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->pixmap = icon; QModelIndex position = createIndex( item->index, COLUMN_NICK ); emit dataChanged( position, position ); } /** */ void UserListModel::updateComment( const QString & nick, const QString comment ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->comment = comment; item->comment_lc = comment.toLower(); QModelIndex position = createIndex( item->index, COLUMN_COMMENT ); emit dataChanged( position, position ); if ( sortColumn == COLUMN_COMMENT ) { sort( sortColumn, sortOrder ); } } /** */ void UserListModel::updateTag( const QString & nick, const QString tag ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->tag = tag; item->tag_lc = tag.toLower(); QModelIndex position = createIndex( item->index, COLUMN_TAG ); emit dataChanged( position, position ); if ( sortColumn == COLUMN_TAG ) { sort( sortColumn, sortOrder ); } } /** */ void UserListModel::updateSpeed( const QString & nick, const QString speed ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->speed = speed; item->speed_lc = speed.toLower(); QModelIndex position = createIndex( item->index, COLUMN_SPEED ); emit dataChanged( position, position ); if ( sortColumn == COLUMN_SPEED ) { sort( sortColumn, sortOrder ); } } /** */ void UserListModel::updateEmail( const QString & nick, const QString email ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->email = email; item->email_lc = email.toLower(); QModelIndex position = createIndex( item->index, COLUMN_EMAIL ); emit dataChanged( position, position ); if ( sortColumn == COLUMN_EMAIL ) { sort( sortColumn, sortOrder ); } } /** */ void UserListModel::updateShare( const QString & nick, const ulonglong share ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->shared = share; QModelIndex position = createIndex( item->index, COLUMN_SHARE ); emit dataChanged( position, position ); if ( sortColumn == COLUMN_SHARE ) { sort( sortColumn, sortOrder ); } } /** */ void UserListModel::updateIP( const QString & nick, const QString ip ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->ip = ip; QModelIndex position = createIndex( item->index, COLUMN_IP ); emit dataChanged( position, position ); if ( sortColumn == COLUMN_IP ) { sort( sortColumn, sortOrder ); } } /** */ void UserListModel::updateLockPK( const QString & nick, const QString lockpk ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->lockpk = lockpk; QModelIndex position = createIndex( item->index, COLUMN_LOCKPK ); emit dataChanged( position, position ); if ( sortColumn == COLUMN_LOCKPK ) { sort( sortColumn, sortOrder ); } } /** */ void UserListModel::updateSupports( const QString & nick, const QString supports ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->supports = supports; QModelIndex position = createIndex( item->index, COLUMN_SUPPORTS ); emit dataChanged( position, position ); if ( sortColumn == COLUMN_SUPPORTS ) { sort( sortColumn, sortOrder ); } } /** */ void UserListModel::setSortTop( const QString & nick, const bool top ) { UserListItem * item = itemHash.value( nick ); if ( !item || (item->sorttop == top) ) { return; } item->sorttop = top; sort( sortColumn, sortOrder ); } /** */ void UserListModel::setHighlight( const QString & nick, const bool highlight ) { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return; } item->highlight = highlight; QModelIndex position = createIndex( item->index, COLUMN_NICK ); emit dataChanged( position, position ); } /** */ QModelIndex UserListModel::indexForNick( const QString & nick ) const { UserListItem * item = itemHash.value( nick ); if ( item == 0 ) { return QModelIndex(); } return createIndex( item->index, COLUMN_NICK ); } /** */ QStringList UserListModel::matchNicksContaining( const QString & part, bool stripTags ) const { QStringList matches; if ( part.isEmpty() ) { return matches; } if ( stripTags ) { for ( QList::const_iterator it = itemList.constBegin(); it != itemList.constEnd(); ++it ) { if ( (*it)->nick_stripped.contains(part) ) { matches << (*it)->nick; } } } else { for ( QList::const_iterator it = itemList.constBegin(); it != itemList.constEnd(); ++it ) { if ( (*it)->nick_lc.contains(part) ) { matches << (*it)->nick; } } } return matches; } /** */ QStringList UserListModel::matchNicksStartingWith( const QString & part, bool stripTags ) const { QStringList matches; if ( part.isEmpty() ) { return matches; } if ( stripTags ) { for ( QList::const_iterator it = itemList.constBegin(); it != itemList.constEnd(); ++it ) { if ( (*it)->nick_stripped.startsWith(part) ) { matches << (*it)->nick; } } } else { for ( QList::const_iterator it = itemList.constBegin(); it != itemList.constEnd(); ++it ) { if ( (*it)->nick_lc.startsWith(part) ) { matches << (*it)->nick; } } } return matches; } valknut-0.4.9/valknut/dcapplicationevents.cpp0000664000076400007640000000334411074173623017605 0ustar ejsejs/*************************************************************************** dcapplicationevents.cpp - description ------------------- begin : Don Aug 21 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcapplicationevents.h" /** */ DCApplicationEvents::DCApplicationEvents() { m_nNoUserInputTimer = 0; } /** */ DCApplicationEvents::~DCApplicationEvents() { } /** */ bool DCApplicationEvents::eventFilter(QObject* object, QEvent* event) { // away handling if ( (event->type() == QEvent::MouseButtonPress) || (event->type() == QEvent::MouseButtonRelease) || (event->type() == QEvent::MouseButtonDblClick) || (event->type() == QEvent::MouseMove) || (event->type() == QEvent::KeyPress) || (event->type() == QEvent::KeyRelease) || (event->type() == QEvent::Wheel) ) { m_nNoUserInputTimer = 0; } return QObject::eventFilter( object, event ); // standard event processing } valknut-0.4.9/valknut/dcchat.cpp0000664000076400007640000021600311135727620014772 0ustar ejsejs/*************************************************************************** dcchat.cpp - description ------------------- begin : Don Mär 28 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcchat.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //Added by qt3to4: #include #include #include #include #include #include #include #include #include #include "dcevent.h" #include "dcclient.h" #include "dcmenuhandler.h" #include "dcconfig.h" #include "dctranslator.h" #include "cdialogpicturemap.h" #include "dcfiletool.h" #include "dchublistmanager.h" #include "dcconnectionmanager.h" #include "dcuserslist.h" #include "dciconloader.h" #include "dctransferview.h" #include "dchubsearch.h" #include "dcshellcommandrunner.h" #include "dcguiutils.h" #include "dcqtextedit.h" #include "ui/DCDialogMagnet.h" #include #include #include #include #include #include #include #include /* to enabled the /pretend command */ #ifdef HAVE_CONFIG_H #include #endif /** the link list */ const QStringList DCChat::g_LinkList = QString("HTTP://,HTTPS://,NEWS://,FILE://,WWW.,FTP://,FTP.,HKP://,LDAP://,DCFILE://,DCHUB://,DCHUBS://,DCCMD://,MAGNET:").split(','); #define DCFILE_LINK_INDEX 9 #define DCHUB_LINK_INDEX 10 #define DCHUBS_LINK_INDEX 11 #define DCCMD_LINK_INDEX 12 #define MAGNET_LINK_INDEX 13 #define MAX_HISTORY_COUNT 25 /** */ DCChat::DCChat( QWidget * parent, DCClient * client, bool bprivate ) : QWidget( parent ) { // ASSERT(client); setupUi(this); // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiGLOBE) ); m_pParent = parent; m_bPrivateChat = bprivate; m_pClient = client; m_bSendAway = true; m_eSecureState = esecsNONE; m_nCurrentHistoryIndex = -1; m_sTimeStamp = QDateTime::currentDateTime().toString("yyyyMMdd-hhmmss"); m_nTabStart = -1; m_nTabEnd = -1; m_nTabPressed = 0; m_sTabSaved = ""; m_sTabNick = ""; m_pShellRunners = new QList(); InitDocument(); } /** */ DCChat::~DCChat() { /* * Call delete on all running shell commands. * The DCShellCommand destructor will wait * for the thread to finish. */ for ( int i = 0; i < m_pShellRunners->count(); i++ ) { delete m_pShellRunners->at(i); } m_pShellRunners->clear(); delete m_pShellRunners; } /** */ void DCChat::QT3TranslationSync() { QString qt31 = tr("Shell command event not found in list"); QString qt32 = tr("Failed to start shell command."); } /** */ void DCChat::InitDocument() { //int i; m_pStatusBar = new QStatusBar(this); m_pStatusBar->setSizeGripEnabled(false); layout()->addWidget( m_pStatusBar ); m_pStatusCrypt = new QLabel(m_pStatusBar); m_pStatusBar->addWidget(m_pStatusCrypt); SetCrypt(esecsNONE); if ( !m_bPrivateChat ) { m_pStatusBar->hide(); } else { m_pStatusBar->show(); } /* if ( g_pConfig->ShowChatStatusBar() == false ) { m_pStatusBar->hide(); } */ if ( g_pConfig->GetShowChatSendButton() ) { connect( PushButton_SEND, SIGNAL(clicked()), this, SLOT(slotSendChat()) ); slotTextChangedChatInput(); } else { // remove send button and QT will notice delete PushButton_SEND; PushButton_SEND = NULL; } m_pTextEdit_CHATOUTPUT = new DCQTextEdit( Frame_OUTPUT ); // QSizePolicy::Preferred is the default anyway... QSizePolicy policy = m_pTextEdit_CHATOUTPUT->sizePolicy(); policy.setHorizontalPolicy( QSizePolicy::Preferred ); policy.setVerticalPolicy( QSizePolicy::Preferred ); policy.setHorizontalStretch( 0 ); policy.setVerticalStretch( 0 ); m_pTextEdit_CHATOUTPUT->setSizePolicy( policy ); m_pTextEdit_CHATOUTPUT->setMinimumSize( QSize( 0, 60 ) ); //m_pTextEdit_CHATOUTPUT->setTextFormat( Qt::RichText ); m_pTextEdit_CHATOUTPUT->setLineWrapMode( QTextEdit::WidgetWidth ); m_pTextEdit_CHATOUTPUT->setWordWrapMode( QTextOption::WrapAtWordBoundaryOrAnywhere ); m_pTextEdit_CHATOUTPUT->setReadOnly( true ); m_pTextEdit_CHATOUTPUT->setContextMenuPolicy( Qt::CustomContextMenu ); if ( g_pConfig->GetChatMaxParagraph() != 0 ) { m_pTextEdit_CHATOUTPUT->document()->setMaximumBlockCount( g_pConfig->GetChatMaxParagraph() ); } slotLoadEmoticons(); Frame_OUTPUT->layout()->addWidget(m_pTextEdit_CHATOUTPUT); connect( m_pTextEdit_CHATOUTPUT, SIGNAL(customContextMenuRequested( const QPoint& )), this, SLOT(slotRightButtonClickedChatOutput( const QPoint& )) ); connect( m_pTextEdit_CHATOUTPUT, SIGNAL(clicked()), this, SLOT(slotClickedChatOutput()) ); connect( m_pTextEdit_CHATOUTPUT, SIGNAL(doubleClicked()), this, SLOT(slotDoubleClickedChatOutput()) ); connect( g_pConfig, SIGNAL(emoticonThemeChanged()), this, SLOT(slotLoadEmoticons()) ); connect( g_pConfig, SIGNAL(chatBackgroundColorChanged()), this, SLOT(slotBGColorChanged()) ); if ( g_pConfig->GetChatBackgroundColorEnabled() ) { /* using QTextCharFormat or style sheets did not work */ QPalette palette = m_pTextEdit_CHATOUTPUT->palette(); palette.setColor( QPalette::Base, g_pConfig->GetChatBackgroundColor() ); m_pTextEdit_CHATOUTPUT->setAutoFillBackground(true); m_pTextEdit_CHATOUTPUT->setPalette(palette); palette = TextEdit_CHATINPUT->palette(); palette.setColor( QPalette::Base, g_pConfig->GetChatBackgroundColor() ); TextEdit_CHATINPUT->setAutoFillBackground(true); TextEdit_CHATINPUT->setPalette(palette); } if ( PushButton_SEND ) { connect( TextEdit_CHATINPUT, SIGNAL(textChanged()), this, SLOT(slotTextChangedChatInput()) ); } m_pTextEdit_CHATOUTPUT->installEventFilter(this); TextEdit_CHATINPUT->installEventFilter(this); TextEdit_CHATINPUT->setFocus(); } /** * FIXME Old icons are not unloaded, using clear() or even setPlainText("") * seems to remove the icons, so now setHtml("") is used to * preserve them when clearing the chat. */ void DCChat::slotLoadEmoticons() { if ( g_pConfig->GetEnableEmoticons() ) { g_pConfig->AddEmoticons( m_pTextEdit_CHATOUTPUT->document() ); } } /** event filter */ bool DCChat::eventFilter( QObject * object, QEvent * event ) { if ((event->type() == QEvent::KeyPress)&&((QTextEdit*)object==TextEdit_CHATINPUT)) { QKeyEvent * e = (QKeyEvent*)event; bool send = false; if ( g_pConfig->GetSendChat() == 1 ) { if ( (e->modifiers() != Qt::ControlModifier) && ((e->key() == Qt::Key_Enter) || (e->key() == Qt::Key_Return)) ) { send = true; } } else if ( g_pConfig->GetSendChat() == 0 ) { if ( (e->modifiers() == Qt::ControlModifier) && ((e->key() == Qt::Key_Enter) || (e->key() == Qt::Key_Return)) ) { send = true; } } else if ( g_pConfig->GetSendChat() == 2 ) { if ( (e->modifiers() == Qt::AltModifier) && ((e->key() == Qt::Key_Enter) || (e->key() == Qt::Key_Return )) ) { send = true; } } else if ( g_pConfig->GetSendChat() == 3 ) { if ( (e->modifiers() == Qt::AltModifier) && (e->key() == Qt::Key_S) ) { send = true; } } if ( send ) { SendChat(); e->accept(); return true; } else if ( e->modifiers() == Qt::ControlModifier ) { int histindex = -1; // check for history if ( (e->key() == Qt::Key_Down) && (m_nCurrentHistoryIndex != -1) ) { histindex = m_nCurrentHistoryIndex - 1; } else if ( e->key() == Qt::Key_Up ) { if ( m_nCurrentHistoryIndex == -1 ) { histindex = 0; // save current text m_sHistoryTempString = TextEdit_CHATINPUT->toPlainText(); // save current cursor position // QT3 TextEdit_CHATINPUT->getCursorPosition( &m_nHistoryTempPara, &m_nHistoryTempIndex ); m_nHistoryTempIndex = TextEdit_CHATINPUT->textCursor().position(); } else { histindex = m_nCurrentHistoryIndex + 1; if ( histindex >= m_lHistory.size() ) { histindex = -1; } } } if ( (histindex >= 0) && (histindex < m_lHistory.size()) ) { m_nCurrentHistoryIndex = histindex; TextEdit_CHATINPUT->setPlainText(m_lHistory[histindex]); } else if (e->key() == Qt::Key_Down) { m_nCurrentHistoryIndex = -1; TextEdit_CHATINPUT->setPlainText(m_sHistoryTempString); // QT3 TextEdit_CHATINPUT->setCursorPosition( m_nHistoryTempPara, m_nHistoryTempIndex ); QTextCursor cursor = TextEdit_CHATINPUT->textCursor(); cursor.setPosition( m_nHistoryTempIndex ); TextEdit_CHATINPUT->setTextCursor( cursor ); } } if ( e->key() == Qt::Key_Tab ) { NickCompletion(); e->accept(); return true; } else if ( m_nTabPressed != 0 ) { // reset tab settings m_nTabStart = -1; m_nTabEnd = -1; m_nTabPressed = 0; m_sTabSaved = ""; //m_sTabNick = ""; } } else if ( (event->type() == QEvent::Resize) && (object == m_pTextEdit_CHATOUTPUT) ) { bool bscroll, b; if ( m_pTextEdit_CHATOUTPUT->verticalScrollBar()->maximum() == m_pTextEdit_CHATOUTPUT->verticalScrollBar()->value() ) { bscroll = true; } else { bscroll = false; } b = QWidget::eventFilter( object, event ); if ( bscroll ) { // QT3 m_pTextEdit_CHATOUTPUT->scrollToBottom(); // QT3 m_pTextEdit_CHATOUTPUT->moveCursor( Q3TextEdit::MoveEnd, false ); m_pTextEdit_CHATOUTPUT->moveCursor( QTextCursor::End, QTextCursor::MoveAnchor ); } return b; } return QWidget::eventFilter( object, event ); // standard event processing } /** handle translation event */ void DCChat::customEvent( QEvent * event ) { if ( event->type() == EVENT_TRANSLATION ) { DC_TranslationEvent *e = (DC_TranslationEvent*)event; if ( e->m_bTranslate ) { AddStatus( tr("Translation: ") + "'" + e->m_sOriginal + "' -> '" + e->m_sTranslation + "'" ); } else { AddStatus( tr("Translation failed: ") + "'" + e->m_sOriginal + "'" + " ( " +tr("Error was: ") + "'" + e->m_sTranslation + "' )" ); } event->accept(); } else { event->ignore(); } } /** */ void DCChat::AddHistory( QString message ) { if ( m_lHistory.size() == MAX_HISTORY_COUNT ) { m_lHistory.pop_back(); } m_nCurrentHistoryIndex = -1; m_lHistory.prepend(message); } /** */ void DCChat::SetCrypt( eSecureState e ) { if ( e == esecsENCRYPTED ) { m_pStatusCrypt->setToolTip(tr("Line is encrypted.")); m_pStatusCrypt->setPixmap( g_pIconLoader->GetPixmap(eiSSL_YES) ); } else { m_pStatusCrypt->setToolTip(tr("Line is not encrypted.")); m_pStatusCrypt->setPixmap( g_pIconLoader->GetPixmap(eiSSL_NO) ); } m_eSecureState = e; } /** */ void DCChat::slotTextChangedChatInput() { if ( PushButton_SEND ) { if ( TextEdit_CHATINPUT->toPlainText().isEmpty() ) { PushButton_SEND->setEnabled(false); } else { PushButton_SEND->setEnabled(true); } } } /** */ void DCChat::slotClickedChatOutput() { QPoint p = m_pTextEdit_CHATOUTPUT->mapFromGlobal(QCursor::pos()); QString pressedLink = m_pTextEdit_CHATOUTPUT->anchorAt(p); //printf("pressedLink=\"%s\"\n",pressedLink.Data()); for( int i = 0; i < g_LinkList.size(); ++i ) { if ( pressedLink.startsWith(g_LinkList[i], Qt::CaseInsensitive) ) { if ( i == DCFILE_LINK_INDEX ) { // DC-File-Link CString hubhost,hubname,nick,file,tth; ulonglong size; if ( CUtils::ConvertDCLink( pressedLink.toAscii().constData(), hubhost, hubname, nick, size, file, tth ) == false ) { return; } QMenu * m = new QMenu(this); QAction * dl = DCMenuHandler::addAction( m, emiDOWNLOAD ); QAction * dl_to = DCMenuHandler::addAction( m, emiDOWNLOAD_TO ); QAction * dl_as = DCMenuHandler::addAction( m, emiDOWNLOAD_AS ); QAction * dl_in = DCMenuHandler::addAction( m, emiDOWNLOAD_IN ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( (chosen == dl) || (chosen == dl_as) || (chosen == dl_to) ) { QString localrootpath; QString localname; // select downloadfolder for all selected files if ( chosen == dl_to ) { localrootpath = QFileDialog::getExistingDirectory( this, tr("Select download folder"), g_pConfig->GetDownloadFolder().Data(), QFileDialog::ShowDirsOnly ); if ( localrootpath.isEmpty() ) return; } CDir d; d.SetPath(file); QFileInfo fi(d.DirName().Data()); localname = fi.fileName(); if ( chosen == dl_as ) { localrootpath = QFileDialog::getSaveFileName( this, tr("Select file for") + " " + localname, localname ); if ( localrootpath.isEmpty() ) return; QFileInfo fi(localrootpath); localrootpath = fi.path(); localname = fi.fileName(); if ( (localrootpath.isEmpty()) || (localname.isEmpty()) ) return; } // add transfer to the waitlist DCFileTool::CheckFile( this, nick, hubname, hubhost, file, localname.toAscii().constData(), CString(), localrootpath.toAscii().constData(), eltFILE, size, tth ); } else if ( chosen == dl_in ) { QString localrootpath; QString localname; QString localpath; if ( DCFileTool::SelectFileSource( this, size, QString(tth.Data()), localname, localrootpath, localpath ) == false ) { return; } // add transfer to the waitlist DCFileTool::CheckFile( this, nick, hubname, hubhost, file, localname.toAscii().constData(), localpath.toAscii().constData(), localrootpath.toAscii().constData(), eltFILE, size, tth, true); } } else if ( i == DCHUB_LINK_INDEX ) { pressedLink = pressedLink.right( pressedLink.length()-8 ); // remove all '/' chars pressedLink.remove('/'); g_pConnectionManager->Connect( pressedLink.toAscii().constData(), pressedLink.toAscii().constData() ); } else if ( i == DCHUBS_LINK_INDEX ) { pressedLink = pressedLink.right( pressedLink.length()-9 ); // remove all '/' chars pressedLink.remove('/'); g_pConnectionManager->Connect( pressedLink.toAscii().constData(), pressedLink.toAscii().constData(), true ); } /* else if ( i == DCCMD_LINK_INDEX ) { pressedLink = pressedLink.right( pressedLink.length()-8 ); } */ else if ( i == MAGNET_LINK_INDEX ) { //magnet:?xt=urn:tree:tiger:EOSA5AGTL5SD3VWCF3R2OH2WMGXV3S3R7SYN4YA&xl=708780032&dn=FC-6-i386-disc1.iso QString key = QString::fromAscii("xt=urn:tree:tiger:"); int i = pressedLink.indexOf(key); if (i == -1) { key = QString::fromAscii("xt.1=urn:tree:tiger:"); i = pressedLink.indexOf(key); } int end = pressedLink.indexOf("&",i+1); QString tth; if ( i != -1 ) { i += key.length(); if ( end == -1 ) { tth = pressedLink.mid( i ); } else { tth = pressedLink.mid( i, end - i ); } } switch ( g_pConfig->GetMagnetAction(eChatMagnet) ) { case eMagnetPrompt: { QDialog * dialog = new QDialog(this); Ui::DCDialogMagnet ui; ui.setupUi(dialog); ui.LineEdit_LINK->setText(pressedLink); ui.LineEdit_TTH->setText(tth); key = QString::fromAscii("dn="); i = pressedLink.indexOf(key); if ( i != -1 ) { end = pressedLink.indexOf("&",i+1); i += key.length(); QString dispname; if ( end == -1 ) { dispname = pressedLink.mid( i ); } else { dispname = pressedLink.mid( i, end - i ); } dispname.replace("+","%20"); dispname = QUrl::fromPercentEncoding( dispname.toUtf8() ); ui.LineEdit_NAME->setText(dispname); } key = QString::fromAscii("xl="); i = pressedLink.indexOf(key); if ( i != -1 ) { end = pressedLink.indexOf("&",i+1); i += key.length(); ulonglong size; if ( end == -1 ) { size = pressedLink.mid( i ).toULongLong(); } else { size = pressedLink.mid( i , end - i ).toULongLong(); } ui.LineEdit_SIZE->setText( DCGuiUtils::GetSizeString(size) ); ui.LineEdit_EXACT_SIZE->setText( QString::number(size) ); } if ( dialog->exec() == QDialog::Accepted ) { if ( ui.CheckBox_SET_DEFAULT->isChecked() ) { if ( ui.RadioButton_SEARCH->isChecked() ) { g_pConfig->SetMagnetAction( eMagnetSearch, eChatMagnet ); } else if ( ui.RadioButton_DO_NOTHING->isChecked() ) { g_pConfig->SetMagnetAction( eMagnetNothing, eChatMagnet ); } } if ( ui.RadioButton_SEARCH->isChecked() ) { DCHubSearch * hubsearch = new DCHubSearch( g_pConnectionManager->GetMdiArea() ); hubsearch->SetSearchForFile( tth, eftHASH ); hubsearch->show(); hubsearch->StartSearchWithPrompt(); } } delete dialog; break; } case eMagnetSearch: { DCHubSearch * hubsearch = new DCHubSearch( g_pConnectionManager->GetMdiArea() ); hubsearch->SetSearchForFile( tth, eftHASH ); hubsearch->show(); hubsearch->StartSearchWithPrompt(); break; } case eMagnetDownload: /* not supported */ break; case eMagnetNothing: break; default: break; } } else { g_pConfig->OpenURL(pressedLink); } } } } /** */ void DCChat::slotRightButtonClickedChatOutput( const QPoint& ) { //int para; QString pressedPara, pressedNick, userCommand; CString cPressedNick; QPoint p; //int x,y int nickStart, nickLen; QAction * chosen; bool isNickOnline; QMenu *m,*muser,*mslot; QString s; QMap addedcommands; DC_UserMenuCommand * umc = 0; // get the paragraph of text where the right click was // Qt3 m_pTextEdit_CHATOUTPUT->viewportToContents(p.x(),p.y(),x,y); // QT3 p.setX(x); // QT3 p.setY(y); // QT3 para = m_pTextEdit_CHATOUTPUT->paragraphAt(p); // QT3 pressedPara = m_pTextEdit_CHATOUTPUT->text(para); p = m_pTextEdit_CHATOUTPUT->mapFromGlobal(QCursor::pos()); QTextCursor cursor = m_pTextEdit_CHATOUTPUT->cursorForPosition(p); pressedPara = cursor.block().text(); //printf("pressedPara=\"%s\"\n", pressedPara.toAscii().constData()); // cut out the nick nickStart = 1 + pressedPara.indexOf("<"); nickLen = pressedPara.indexOf(">") - nickStart; // sanity check if ( (nickStart == 0) || (nickLen < 0) ) { if (m_bPrivateChat) { pressedNick = m_sNick; } else { // assume a /me line if ( g_pConfig->GetTimeStamp(etsHUBCHAT) ) { nickStart = QString("[hh.mm.ss] ").length(); } else { nickStart = 0; } nickLen = pressedPara.indexOf(" ", nickStart) - nickStart; pressedNick = pressedPara.mid(nickStart, nickLen); /* [10:57:15] * somenick does something */ if ( pressedNick == "*" ) { nickStart = pressedPara.indexOf(" ", nickStart + 1 ) + 1; if ( nickStart > 0 ) { nickLen = pressedPara.indexOf(" ", nickStart) - nickStart; pressedNick = pressedPara.mid( nickStart, nickLen ); } } } } else { pressedNick = pressedPara.mid(nickStart, nickLen); } // check for joins / parts message if ( pressedNick == "VALKNUT" ) { int lenJoin = tr("Joins: ").length(); int lenPart = tr("Parts: ").length(); int joinPos = pressedPara.indexOf(tr("Joins: ")); int partPos = pressedPara.indexOf(tr("Parts: ")); if ( joinPos == -1 ) { nickStart = lenPart + partPos; } else { nickStart = lenJoin + joinPos; } if ( (joinPos != -1) || (partPos != -1) ) { nickLen = pressedPara.length() - nickStart; pressedNick = pressedPara.mid(nickStart, nickLen); } } // check for private chat if ( (pressedNick == "VALKNUT") && m_bPrivateChat ) { pressedNick = m_sNick; } //printf("Debug pressedNick: %s\n",pressedNick.toAscii().constData()); cPressedNick = pressedNick.toAscii().constData(); isNickOnline = m_pClient->UserList()->IsUserOnline(cPressedNick); // select the user in the userlist if (isNickOnline) { m_pClient->jumpToNick( pressedNick ); } m = new QMenu(this); muser = DCMenuHandler::addMenu( m , emisCHAT_RIGHTCLICK_USER, true, pressedNick ); QAction * privchat = DCMenuHandler::addAction( muser, emiPRIVATE_CHAT, isNickOnline ); QAction * addfriend = DCMenuHandler::addAction( muser, emiADD_FRIEND, isNickOnline ); QAction * browseuser = DCMenuHandler::addAction( muser, emiBROWSE_USER_FILES, isNickOnline ); DCMenuHandler::addAction( muser, emiSEPARATOR ); mslot = DCMenuHandler::addMenu( muser, emiUPLOAD_SLOT, true); QAction * addslot = DCMenuHandler::addAction( mslot, emiADD, true); QAction * addpermslot = DCMenuHandler::addAction( mslot, emiADD_PERMANENT, true); QAction * removeslot = DCMenuHandler::addAction( mslot, emiREMOVE, true); DCMenuHandler::addAction( muser, emiSEPARATOR ); QAction * kick = 0; QAction * forcemove = 0; if ( m_pClient->UserList()->IsAdmin(m_pClient->GetNick()) ) { kick = DCMenuHandler::addAction( muser, emiKICK, isNickOnline ); forcemove = DCMenuHandler::addAction( muser, emiFORCE_MOVE, isNickOnline ); } addedcommands = m_pClient->AddMenuCommands( muser, euccChat ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * smiley = DCMenuHandler::addAction( m, emiINSERTSMILEY, g_pConfig->GetEnableEmoticons() ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * copy = DCMenuHandler::addAction( m, emiCOPY, m_pTextEdit_CHATOUTPUT->textCursor().hasSelection() ); QAction * clear = DCMenuHandler::addAction( m, emiCLEAR, true ); QAction * selectall = DCMenuHandler::addAction( m, emiSELECT_ALL, true ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * zoomin = DCMenuHandler::addAction( m, emiZOOM_IN ); QAction * zoomout = DCMenuHandler::addAction( m, emiZOOM_OUT ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * translate = DCMenuHandler::addAction( m, emiTRANSLATE, m_pTextEdit_CHATOUTPUT->textCursor().hasSelection() ); QAction * translator = DCMenuHandler::addAction( m, emiTRANSLATOR ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * refresh = DCMenuHandler::addAction( m, emiREFRESH ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * reqsecchat = 0; QAction * closesecchat = 0; if ( m_bPrivateChat ) { // insert request/close secure chat if ( m_eSecureState == esecsNONE ) reqsecchat = DCMenuHandler::addAction( m, emiREQUEST_SECURE_CHAT, dclibSupportsSSL() ); else closesecchat = DCMenuHandler::addAction( m, emiCLOSE_SECURE_CHAT ); } QAction * save = DCMenuHandler::addAction( m, emiSAVE ); QAction * dock = 0; if ( parentWidget() == 0 ) dock = DCMenuHandler::addAction( m, emiDOCK ); else dock = DCMenuHandler::addAction( m, emiUNDOCK ); QAction * hidepriv = 0; QAction * closepriv = 0; if ( m_bPrivateChat ) { if ( !g_pConfig->GetShowChatInTab() ) { hidepriv = DCMenuHandler::addAction( m, emiHIDE ); } closepriv = DCMenuHandler::addAction( m, emiCLOSE ); } else { addedcommands.unite( m_pClient->AddMenuCommands( m, euccHub ) ); } chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } else if ( chosen == smiley ) { int x,y; QList * elist = g_pConfig->EmoticonList(); if ( elist ) { CDialogPictureMap * dialog = new CDialogPictureMap(this); QPixmap p = QPixmap::fromImage(g_pConfig->GetEmoticonImage()); dialog->SetPixmap(p); if ( dialog->exec() == QDialog::Accepted ) { dialog->GetXY(x,y); DC_EmoticonObject * EmoticonObject = 0; for ( QList::const_iterator it = elist->constBegin(); it != elist->constEnd(); ++it ) { EmoticonObject = *it; if ( ((EmoticonObject->leftright>x)) && ((EmoticonObject->topbottom>y)) ) { // damn hacks QString smiley = EmoticonObject->m_Text; smiley.replace( "<", "<" ); smiley.replace( ">", ">" ); smiley.replace( "&", "&" ); smiley.replace( "'", "\'" ); smiley.replace( """, "\"" ); smiley += " "; TextEdit_CHATINPUT->insertPlainText(smiley); break; } } } delete dialog; } } else if ( chosen == translate ) { QString sc; QClipboard * cb = QApplication::clipboard(); // save old text sc = cb->text(); // copy to cb m_pTextEdit_CHATOUTPUT->copy(); // get new text s = cb->text(); // save old text cb->setText(sc); s.remove(""); g_pTranslator->Translate( this, m_sLanguage, s ); } else if ( chosen == translator ) { m_sLanguage = g_pTranslator->SelectLanguage( m_sLanguage, this ); } else if ( chosen == copy ) { m_pTextEdit_CHATOUTPUT->copy(); } else if ( chosen == clear ) { m_pTextEdit_CHATOUTPUT->setHtml(""); AddStatus( tr("Chat Cleared.") ); } else if ( chosen == selectall ) { m_pTextEdit_CHATOUTPUT->selectAll(); } else if ( chosen == reqsecchat ) { m_pClient->SendPrivateMessage( m_pClient->GetNick(), m_sNick.toAscii().constData(), "" ); } else if ( chosen == closesecchat ) { m_pClient->SendPrivateMessage( m_pClient->GetNick(), m_sNick.toAscii().constData(), "" ); } else if ( chosen == dock ) { if ( parentWidget() == 0 ) { setParent( m_pParent ); if ( !m_bPrivateChat || g_pConfig->GetShowChatInTab() ) { QTabWidget * p = (QTabWidget*)m_pParent; int index = p->addTab(this,m_sLabel); p->setCurrentIndex(index); } else { g_pConnectionManager->GetMdiArea()->addSubWindow(this); } show(); } else { if ( !m_bPrivateChat || g_pConfig->GetShowChatInTab() ) { QTabWidget * p = (QTabWidget*)m_pParent; int index = p->indexOf(this); m_sLabel = p->tabText(index); p->removeTab(index); } else { /* doesn't seem to work */ /* g_pConnectionManager->GetMdiArea()->removeSubWindow(this); */ #if QT_VERSION >= 0x040400 QList subwinlist = g_pConnectionManager->GetMdiArea()->subWindowList( QMdiArea::ActivationHistoryOrder ); #else QList subwinlist = g_pConnectionManager->GetMdiArea()->subWindowList( QMdiArea::StackingOrder ); #endif for ( QList::const_iterator subwin_it = subwinlist.constBegin(); subwin_it != subwinlist.constEnd(); ++subwin_it ) { if ( (*subwin_it)->widget() == this ) { (*subwin_it)->setWidget(0); delete *subwin_it; break; } } } setParent(0); show(); // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiGLOBE) ); } } else if ( chosen == save ) { QString s = QFileDialog::getSaveFileName( this, tr("Choose a filename to save under"), QString(), "HTML (*.html *.htm)" ); if ( !s.isEmpty() ) { QFile f(s); if ( f.open(QIODevice::WriteOnly) ) { f.write(m_pTextEdit_CHATOUTPUT->toHtml().toAscii()); f.close(); } } } else if ( chosen == refresh ) { if ( CFileManager::Instance()->CreateShareList() ) s = tr("Refresh share in progress."); else s = tr("Refresh share already in progress."); AddStatus(s); } else if ( chosen == closepriv ) { close(); } else if ( chosen == hidepriv ) { setEnabled(false); hide(); /* there must be a better way... */ #if QT_VERSION >= 0x040400 QList subwinlist = g_pConnectionManager->GetMdiArea()->subWindowList( QMdiArea::ActivationHistoryOrder ); #else QList subwinlist = g_pConnectionManager->GetMdiArea()->subWindowList( QMdiArea::StackingOrder ); #endif for ( QList::const_iterator subwin_it = subwinlist.constBegin(); subwin_it != subwinlist.constEnd(); ++subwin_it ) { if ( (*subwin_it)->widget() == this ) { (*subwin_it)->setWidget(0); delete *subwin_it; break; } } } else if ( chosen == privchat ) { m_pClient->DC_PrivateChat( pressedNick, QString(), QString(), true ); } else if ( chosen == addfriend ) { g_pUsersList->AddFriend( pressedNick, QString::fromAscii(m_pClient->GetHubName().Data()), QString::fromAscii(m_pClient->GetHost().Data()), QString() ); } else if ( chosen == browseuser ) { CString empty; g_pTransferView->DLM_QueueAdd( cPressedNick, m_pClient->GetHubName(), m_pClient->GetHost(), DC_USER_FILELIST, DC_USER_FILELIST, empty, empty, eltBUFFER, 0, 0, 0, empty ); } else if ( chosen == kick ) { QString kickMessage; if ( !m_pClient->GetOPKickMessage(kickMessage,this) ) { return; } m_pClient->OPKick( pressedNick, kickMessage ); } else if ( chosen == forcemove ) { QString host, message; if ( !m_pClient->GetOPForceMoveMessage(message,host,this) ) { return; } m_pClient->OPForceMove(pressedNick, message, host); } else if ( chosen == addslot ) { g_pTransferView->DLM_AddUserSlot(cPressedNick, m_pClient->GetHubName(), 1); } else if ( chosen == addpermslot ) { g_pTransferView->DLM_AddUserSlot(cPressedNick, m_pClient->GetHubName(), 0, true); } else if ( chosen == removeslot ) { g_pTransferView->DLM_AddUserSlot(cPressedNick, m_pClient->GetHubName(), 0); } else if ( chosen == zoomin ) { m_pTextEdit_CHATOUTPUT->zoomIn(); } else if ( chosen == zoomout ) { m_pTextEdit_CHATOUTPUT->zoomOut(); } else if ( addedcommands.contains( chosen ) ) { umc = addedcommands[chosen]; QString origcommand = umc->m_sCommand; userCommand = m_pClient->replaceCommandTags( origcommand, pressedNick ); if ( !userCommand.isEmpty() ) { AddStatus(userCommand); m_pClient->SendString(userCommand.toAscii().constData()); } } } /** */ bool DCChat::close() { // re-set the wflags ... //QWidget::setWindowFlags(WDestructiveClose); QWidget::setAttribute(Qt::WA_DeleteOnClose); return QWidget::close(); } /** */ void DCChat::slotSendChat() { SendChat(); } /** */ void DCChat::SetNick( QString nick, QString hubname ) { m_sNick = nick; if ( nick.isEmpty() ) { setWindowTitle(tr("Chat:")+QString(" [")+hubname+QString("]")); } else { setWindowTitle(tr("Private Chat:")+QString(" ")+nick+QString(" [")+hubname+QString("]")); } } /** */ QString DCChat::GetTimeStamp() { QString ts; if ( m_bPrivateChat ) { if ( g_pConfig->GetTimeStamp(etsPRIVATECHAT) ) { ts = "GetChatColor(eccPUBLICCHATTIMESTAMP); ts += "\">"; ts += QTime::currentTime().toString("[hh:mm:ss]"); ts += " "; } } else if ( g_pConfig->GetTimeStamp(etsHUBCHAT) ) { ts = "GetChatColor(eccCHATTIMESTAMP); ts += "\">"; ts += QTime::currentTime().toString("[hh:mm:ss]"); ts += " "; } return ts; } /** */ void DCChat::AddOutput( QString message ) { bool bscroll; if ( m_pTextEdit_CHATOUTPUT->verticalScrollBar()->maximum() == m_pTextEdit_CHATOUTPUT->verticalScrollBar()->value() ) { bscroll = true; } else { bscroll = false; } // convert newline message.replace( "\n", "
" ); // convert tabs to spaces message.replace( "\t", "    " ); // QT3 - replaced with QTextDocument::setMaximumBlockCount in QT4 /* if ( (g_pConfig->GetChatMaxParagraph()!= 0) && (m_pTextEdit_CHATOUTPUT->paragraphs() > (g_pConfig->GetChatMaxParagraph()+5)) ) { m_pTextEdit_CHATOUTPUT->removeParagraph(0); m_pTextEdit_CHATOUTPUT->removeParagraph(0); m_pTextEdit_CHATOUTPUT->removeParagraph(0); m_pTextEdit_CHATOUTPUT->removeParagraph(0); m_pTextEdit_CHATOUTPUT->removeParagraph(0); } */ m_pTextEdit_CHATOUTPUT->append( message ); if ( bscroll ) { // QT3 m_pTextEdit_CHATOUTPUT->scrollToBottom(); // QT3 m_pTextEdit_CHATOUTPUT->moveCursor( Q3TextEdit::MoveEnd, false ); m_pTextEdit_CHATOUTPUT->moveCursor( QTextCursor::End, QTextCursor::MoveAnchor ); } message += "
"; // save to logfile if ( g_pConfig->GetLogChatOption(elcoENABLELOGGING) ) { if ( !(g_pConfig->GetLogChatOption(elcoDISABLEPUBLICCHAT) && !m_bPrivateChat) ) { if ( g_pConfig->CheckLogChatNickNameFilter(m_sNick) ) { QString s = m_sNick; if ( g_pConfig->GetLogChatOption(elcoAPPENDHUBNAME) ) { s += "_"; s += QString::fromAscii(m_pClient->GetHubName().Data()); } if ( g_pConfig->GetLogChatOption(elcoAPPENDHUBHOST) ) { s += "_"; s += QString::fromAscii(m_pClient->GetIP().Data()); } if ( g_pConfig->GetLogChatOption(elcoAPPENDDATE) ) { s += "_"; s += m_sTimeStamp; } // damn hacking ;-) s.remove('/'); s.remove('\\'); s.remove(':'); s = QString::fromAscii(g_pConfig->GetChatLogPath().Data()) + s + ".html"; QFile f(s); if ( f.open(QIODevice::WriteOnly | QIODevice::Append) ) { // add newline message += "\n"; f.write(message.toAscii()); f.close(); } } } } } /** */ void DCChat::AddStatus( QString message, bool show ) { if ( g_pConfig->GetShowStatusMessage() || show ) { // convert special chars ... damn hacking ;-) message.replace( "<", "<" ); message.replace( ">", ">" ); QString html = GetTimeStamp(); if ( m_bPrivateChat ) { html += "GetChatColor(eccCHATSTATUSNICK); html += "\"><VALKNUT> GetChatColor(eccCHATSTATUSTEXT); html += "\">"; html += message; html += ""; } else { html += "GetChatColor(eccPUBLICCHATSTATUSNICK); html += "\"><VALKNUT> GetChatColor(eccPUBLICCHATSTATUSTEXT); html += "\">"; html += message; html += ""; } AddOutput( html ); } } /** */ void DCChat::AddMessage( CMessagePrivateChat * msg, bool bremote, bool forward ) { if ( msg->m_eSecureState != m_eSecureState ) { SetCrypt(msg->m_eSecureState); } if ( msg->m_sSrcNick.IsEmpty() ) AddMessage( QString::fromAscii(msg->m_sSrcNick.Data()), QString::fromAscii(msg->m_sMessage.Data()), bremote, forward ); else AddMessage( QString::fromAscii(msg->m_sMultiSrcNick.Data()), QString::fromAscii(msg->m_sMessage.Data()), bremote, forward ); } /** */ void DCChat::AddMessage( QString nick, QString message, bool bremote, bool forward ) { QString msg,s,s1; int index; int i1,i2; bool b1,b2; bool bSay = false; bool bMe = false; bool isOP = m_pClient->UserList()->IsAdmin( nick.toAscii().constData() ); QString clientnick = QString::fromAscii( m_pClient->GetNick().Data() ); //printf("ADD MESSAGE '%s'\n",message.Data()); if ( message.isEmpty() ) { return; } if ( CheckForData(message) ) { return; } // check for nick - but avoid string searching if not enabled if ( !m_bPrivateChat && g_pConfig->GetSoundEnabled(eusNICKMENTIONED) ) { if ( message.indexOf(clientnick) != -1 ) { g_pConfig->PlaySound(eusNICKMENTIONED); } } // convert special chars ... damn hacking ;-) message.replace( "<", "<" ); message.replace( ">", ">" ); // convert special chars in nick ... damn hacking ;-) nick.replace( "<", "<" ); nick.replace( ">", ">" ); s1 = clientnick; s1 += ": "; if ( ( message.left(4).toUpper() == "/ME " ) || ( message.left(4).toUpper() == "+ME " ) ) { bMe = true; message = message.right( message.length() - 4 ); } if ( message.startsWith(s1) ) { bSay = true; // message = message.right( message.length() - s1.length() ); } msg = message; s1 = ""; b1 = b2 = true; while ( !msg.isEmpty() ) { if (b1) { if ( (i1 = FindFirstLink(msg)) == -1 ) { b1 = false; } } else { i1 = -1; } if (b2) { if ( (i2 = FindFirstEmoticon(msg)) == -1 ) { b2 = false; } } else { i2 = -1; } if ( ((i1 < i2) || (i2 == -1)) && (i1 != -1) ) { // convert link s1 += msg.left(i1); msg = msg.right(msg.length()-i1); index = ConvertLinks( msg, s ); } else if ( ((i2 < i1) || (i1 == -1)) && (i2 != -1) ) { // convert emot s1 += msg.left(i2); msg = msg.right(msg.length()-i2); index = ConvertEmoticons( msg, s ); } else { // no link & no emot found s1 += msg; msg = ""; break; } if ( index > 1 ) { s1 += s; msg = msg.right(msg.length()-index); continue; } if ( index == 1 ) { s1 += msg.left(1); } msg = msg.right(msg.length()-index); } message = s1; QString html = GetTimeStamp(); if ( !nick.isEmpty() ) { html += "GetChatColor(eccPUBLICCHATMENICK); } else if ( nick != clientnick ) { if ( isOP ) { html += g_pConfig->GetChatColor(eccOPNICK); } else { html += g_pConfig->GetChatColor(eccCHATREMOTENICK); } } else { html += g_pConfig->GetChatColor(eccCHATLOCALNICK); } html += "\">"; html += nick; if ( bMe ) { html += " "; } else { html += ": "; } } else { if ( forward ) { html += g_pConfig->GetChatColor(eccPUBLICPRIVATECHATNICK); if ( bMe ) { html += "\">"; html += nick; html += " "; } else { html += "\"><"; html += nick; html += "> "; } } else if ( bMe ) { html += g_pConfig->GetChatColor(eccPUBLICCHATMENICK); html += "\">"; html += nick; html += " "; } else if ( nick != clientnick ) { if ( isOP ) { html += g_pConfig->GetChatColor(eccOPNICK); } else { html += g_pConfig->GetChatColor(eccPUBLICCHATREMOTENICK); } html += "\"><"; html += nick; html += "> "; } else { html += g_pConfig->GetChatColor(eccPUBLICCHATLOCALNICK); html += "\"><"; html += nick; html += "> "; } } } html += "GetChatColor(eccCHATSAY); } else { html += g_pConfig->GetChatColor(eccCHATREMOTETEXT); } } else { html += g_pConfig->GetChatColor(eccCHATLOCALTEXT); } } else { if ( forward ) { html += g_pConfig->GetChatColor(eccPUBLICPRIVATECHATTEXT); } else if ( bremote && (nick != clientnick) ) { if ( bSay ) { html += g_pConfig->GetChatColor(eccCHATSAY); } else { html += g_pConfig->GetChatColor(eccPUBLICCHATREMOTETEXT); } } else { html += g_pConfig->GetChatColor(eccPUBLICCHATLOCALTEXT); } } html += "\">"; html += message; html += ""; AddOutput( html ); if ( bremote && m_bPrivateChat ) { g_pConfig->PlaySound(eusRECEIVE); // send away message if ( g_pConfig->GetAwayMode() == euamAWAY ) { CString awaymsg = g_pConfig->GetAwayMessage(); if ( !(awaymsg.IsEmpty()) && (m_bSendAway) ) { m_pClient->SendPrivateMessage( m_pClient->GetNick(), m_sNick.toAscii().constData(), awaymsg ); m_bSendAway = false; AddStatus(tr("Sent away message: ") + QString::fromAscii(awaymsg.Data())); } } else { m_bSendAway = true; } } } /** */ void DCChat::SendChat( QString message ) { int err; QString s; bool local = false; bool cmd = false; if ( !m_pClient ) { return; } if ( message.isEmpty() ) { message = TextEdit_CHATINPUT->toPlainText(); } else { local = true; } if ( !message.isEmpty() ) { if ( local == false ) { // add history AddHistory(message); m_sHistoryTempString = QString(); if ( message.at(0) == '/' ) { cmd = CheckForCommand(); } } if ( cmd == false ) { // convert the newlines // any windows to unix then all unix to windows // so windows do not become double newlines message.replace( "\r\n", "\n" ); message.replace( "\n", "\r\n" ); if ( m_bPrivateChat ) err = m_pClient->SendPrivateMessage( m_pClient->GetNick(), m_sNick.toAscii().constData(), message.toAscii().constData() ); else err = m_pClient->SendChat( m_pClient->GetNick(), message.toAscii().constData() ); if ( err == 0 ) { if ( m_bPrivateChat ) AddMessage( QString::fromAscii(m_pClient->GetNick().Data()), message, false ); g_pConfig->PlaySound(eusSEND); } else { AddStatus( tr("Message not sent!") ); } } if ( local == false ) { TextEdit_CHATINPUT->clear(); } } } /** */ int DCChat::FindFirstLink( QString msg ) { int current = -1; int first = -1; for ( int i = 0; i < g_LinkList.size(); ++i ) { current = msg.indexOf(g_LinkList[i],0,Qt::CaseInsensitive); if ( current != -1 ) { if ( (first == -1) || (first > current) ) { first = current; } } } return first; } /** */ int DCChat::ConvertLinks( QString msg, QString & s ) { int ret = 1; int i1,i2,i3; // convert links for ( int i = 0; i < g_LinkList.size(); ++i ) { if ( msg.startsWith(g_LinkList[i], Qt::CaseInsensitive) ) { // link end at space or newline i1 = msg.indexOf(' ',0,Qt::CaseInsensitive); i2 = msg.indexOf('\xa',0,Qt::CaseInsensitive); i3 = msg.indexOf('\xd',0,Qt::CaseInsensitive); if ( i1 == -1 ) i1 = msg.length(); if ( (i1 > i2) && (i2 != -1) ) i1 = i2; if ( (i1 > i3) && (i3 != -1) ) i1 = i3; s = msg.left(i1); s = ""+s+""; ret = i1; break; } } return ret; } /** */ int DCChat::FindFirstEmoticon( QString msg ) { int i1 = -1, i2 = -1; QList * elist = g_pConfig->EmoticonList(); if ( g_pConfig->GetEnableEmoticons() && (elist != 0) ) { DC_EmoticonObject * EmoticonObject = 0; for ( QList::const_iterator it = elist->constBegin(); it != elist->constEnd(); ++it ) { EmoticonObject = *it; if ( (i1 = msg.indexOf( EmoticonObject->m_Text, 0 )) != -1 ) { if ( (i2 == -1) || (i2 > i1) ) { i2 = i1; } } } } return i2; } /** */ int DCChat::ConvertEmoticons( QString msg, QString & s ) { int ret = 1; QList * elist = g_pConfig->EmoticonList(); // convert emoticons if ( g_pConfig->GetEnableEmoticons() && (elist != 0) ) { DC_EmoticonObject * EmoticonObject = 0; for ( QList::const_iterator it = elist->constBegin(); it != elist->constEnd(); ++it ) { EmoticonObject = *it; if ( msg.startsWith(EmoticonObject->m_Text) ) { s = "\"";m_Text; s += "\" title=\""; s += EmoticonObject->m_Text; s += "\" align=\"center\" source=\""; s += g_pConfig->GetEmoticonTheme(); s += "/emoticon"; s += QString().setNum(EmoticonObject->m_nID); s += "\" />"; ret = EmoticonObject->m_Text.length(); break; } } } return ret; } /** */ bool DCChat::CheckForCommand() { bool res = false; QString s; QString cmd = g_pConfig->ReplaceUserChatCommands( TextEdit_CHATINPUT->toPlainText() ); if ( cmd.isEmpty() ) { return res; } if ( cmd.at(0) == '/' ) { /* * Extract command and remaining arguments. * More complicated commands need to * extract their arguments themselves but * most commands just take a nick. * * Commands whose first argument is * not a nick should not use theRest * because it gets set to the nick * if private chat. */ int firstspace = cmd.indexOf( ' ' ); QString cmdOnly; QString theRest; if ( firstspace == -1 ) { cmdOnly = cmd; if ( m_bPrivateChat ) { theRest = m_sNick; } } else { cmdOnly = cmd.left( firstspace ); theRest = cmd.mid( firstspace + 1 ); } // AddStatus( "cmdOnly ='" + cmdOnly + "'", true ); // AddStatus( "theRest = '" + theRest + "'", true ); // help if ( cmdOnly == "/dchelp" ) { s = tr("Help:"); s += "\n"; s += tr("/clear - clears the chat window"); s += "\n"; s += tr("/mode - shows the current mode"); s += "\n"; s += tr("/refresh - refresh share"); s += "\n"; s += tr("/rebuild - remove no longer present files from hash database"); s += "\n"; s += tr("/validate - check hash database for errors"); s += "\n"; s += tr("/slots <N> - set number of upload slots to N"); s += "\n"; s += tr("/ts - switch time display in chat on/off"); s += "\n"; s += tr("/adv - send an advertisment to the hub"); s += "\n"; s += tr("/join <address> - disconnect from currently connected hub and connect to another hub"); s += "\n"; s += tr("/msg <nick> <message> - send private message"); s += "\n"; s += tr("/away <message> - toggle away mode, optionally set message"); s += "\n"; s += tr("/back - disable away mode"); s += "\n"; s += tr("/awaymsg <message> - set automatic response for private messages; if the message is empty, disable it"); s += "\n"; s += tr("/bye <message> - disconnect from channel with an optional message"); s += "\n"; s += tr("/uptime [show] - show valknut uptime [to other users]"); s += "\n"; s += tr("/ls <nick> - get share list from user"); s += "\n"; s += tr("/grant <nick> - grant user a slot"); s += "\n"; s += tr("/grantp <nick> - grant user a permanent slot"); s += "\n"; s += tr("/friend <nick> - add user to friend list"); s += "\n"; s += tr("/fav - add hub to bookmark list"); s += "\n"; s += tr("/info <nick> - show user info"); s += "\n"; s += tr("/now - send current time to the chat"); s += "\n"; s += tr("/sh <command> <args...> - send output of shell command to chat"); s += "\n"; s += tr("/raw - send raw message"); s += "\n"; s += tr("/disablesorting - disable sorting of the user list"); s += "\n"; s += tr("/enablesorting - enable sorting of the user list"); s += "\n"; s += tr("/ignore <nick> - do not show chat messages from the user"); s += "\n"; s += tr("/unignore <nick> - show chat messages from the user again"); s += "\n"; s += tr("/ratio [show] - show share ratio [to other users]"); s += "\n"; s += tr("/newlog - start a new logfile"); s += "\n"; AddStatus( s, true ); res = true; } // /clear - clear the chat window else if ( cmdOnly == "/clear" ) { m_pTextEdit_CHATOUTPUT->setHtml(""); AddStatus( tr("Chat Cleared."), true ); res = true; } // /info - show user info else if ( cmdOnly == "/info" ) { CMessageMyInfo myinfo; if ( theRest.isEmpty() ) { s = tr("No nick, try /dchelp"); } else if (m_pClient->UserList()->GetUserMyInfo( theRest.toAscii().constData(), &myinfo ) == false) { s = tr("Get info failed."); } else { s = tr("Info:"); s += "\n"; s += tr("Nick:"); s += ' '; s += QString::fromAscii(myinfo.m_sNick.Data()); s += "\n"; s += tr("Operator:"); s += ' '; if ( myinfo.m_bOperator ) { s += tr("yes"); } else { s += tr("no"); } s += "\n"; s += tr("Comment:"); s += ' '; s += QString::fromAscii(myinfo.m_sComment.Data()); s += "\n"; s += tr("Speed:"); s += ' '; s += QString::fromAscii(myinfo.m_sUserSpeed.Data()); s += "\n"; s += tr("EMail:"); s += ' '; s += QString::fromAscii(myinfo.m_sEMail.Data()); s += "\n"; s += tr("Shared:"); s += ' '; s += QString().setNum(myinfo.m_nShared); s += ' '; s += tr("Bytes"); s += "\n"; s += tr("Away:"); s += ' '; switch(myinfo.m_eAwayMode) { case euamAWAY: s += tr("on"); break; default: s += tr("off"); break; } s += "\n"; s += tr("Version:"); s += ' '; switch(myinfo.m_eClientVersion) { case eucvDCPP: s += "DC++"; break; case eucvDCGUI: s += "Valknut"; break; case eucvMICRODC: s += "microdc"; break; case eucvSHAKESPEER: s += "ShakesPeer"; break; default: s += tr("Unknown"); break; } s += "\n"; s += tr("Tag:"); s += ' '; s += QString::fromAscii(myinfo.m_sVerComment.Data()); s += "\n"; s += tr("Supports encryption:"); s += ' '; if ( myinfo.m_bTLSFlag ) { s += tr("yes"); } else { s += tr("no"); } s += "\n"; } AddStatus( s, true ); res = true; } // /uptime - show valknut uptime else if ( cmdOnly == "/uptime" ) { int d,h,m; int i = time(0)-dclibUptime(); d = i/(60*60*24); i = i%(60*60*24); h = i/(60*60); i = i%(60*60); m = i/60; s = tr("Valknut uptime"); s += ": "; if ( d > 0 ) { s += QString().setNum(d); s += ' '; if ( d == 1 ) s += tr("day"); else s += tr("days"); s += ','; } if ( h > 0 ) { s += QString().setNum(h); s += ' '; if ( h == 1 ) s += tr("hour"); else s += tr("hours"); s += ','; } s += QString().setNum(m); s += ' '; if ( m == 1 ) s += tr("minute"); else s += tr("minutes"); if ( cmd.mid( 8 ).toLower() == "show" ) SendChat(s); else AddStatus( s, true ); res = true; } // /mode - show current mode else if ( cmdOnly == "/mode" ) { s = tr("Current mode: "); if ( g_pConfig->GetMode() == ecmACTIVE ) s += tr("active"); else s += tr("passive"); // get listen manager status if ( CListenManager::Instance() ) { CString lms = CListenManager::Instance()->GetSocketErrorMsg(); if ( lms.NotEmpty() ) { s += " ("; s += QString::fromAscii(lms.Data()); s += ')'; } } s += '.'; AddStatus( s, true ); res = true; } // /refresh - refresh share else if ( cmdOnly == "/refresh" ) { if ( CFileManager::Instance()->CreateShareList() ) { s = tr("Refresh share in progress."); } else { s = tr("A share operation is already in progress."); } AddStatus( s, true ); res = true; } // /rebuild - clean up share databases else if ( cmdOnly == "/rebuild" ) { if ( CFileManager::Instance()->RebuildLists() ) { s = tr("Rebuild share in progress."); } else { s = tr("A share operation is already in progress."); } AddStatus( s, true ); res = true; } else if ( cmdOnly == "/validate" ) { if ( CFileManager::Instance()->ValidateLeaves() ) { s = tr("Validate hash database in progress."); } else { s = tr("A share operation is already in progress."); } AddStatus( s, true ); res = true; } // /slots - set number of slots else if ( cmdOnly == "/slots" ) { s = cmd.mid(7); if ( s.isEmpty() ) { AddStatus( tr("Upload slots: ") + QString().setNum(g_pConfig->GetMaxUpload()), true ); } else { bool valid = false; int i = s.toInt(&valid); if ( valid && (i >= 0) && (i <= 99) ) { g_pConfig->SetMaxUpload(i); AddStatus( tr("Setting upload slots to") + " " + QString::number(i), true ); } else { AddStatus( tr("Invalid number of upload slots specified."), true ); } } res = true; } // /ts - switch time display in chat on/off else if ( cmdOnly == "/ts" ) { bool b; if ( m_bPrivateChat ) { b = !g_pConfig->GetTimeStamp(etsPRIVATECHAT); g_pConfig->SetTimeStamp(etsPRIVATECHAT,b); } else { b = !g_pConfig->GetTimeStamp(etsHUBCHAT); g_pConfig->SetTimeStamp(etsHUBCHAT,b); } s = tr("Switch timestamp "); if ( b ) s += tr("on."); else s += tr("off."); AddStatus( s, true ); res = true; } // /adv - send an advertisment to the hub else if ( cmdOnly == "/adv" ) { AddStatus( tr("Send advertisment."), true ); s = tr("\nDownload Valknut from http://wxdcgui.sourceforge.net\nIt does everything !\nWorks on almost any platform you can think of and makes you coffee.\n"); SendChat(s); res = true; } // /now - send current time to the chat else if ( cmdOnly == "/now" ) { s = QTime::currentTime().toString("hh:mm:ss"); if ( cmd.length() > 5 ) { s += " "; s += cmd.mid(5,cmd.length()-5); } SendChat(s); res = true; } // /raw - send raw message else if ( cmdOnly == "/raw" ) { s = cmd.mid( 5 ); if ( !(s.isEmpty()) ) { AddStatus( cmd, true ); m_pClient->SendString(s.toAscii().constData()); } else { AddStatus( tr("Wrong parameter for '/raw'"), true ); } res = true; } #ifdef ENABLE_PRETEND_TESTING_COMMAND else if ( cmdOnly == "/pretend" ) { AddStatus( cmd, true ); /* no attempt is made to make encoding correct */ QByteArray ba = cmd.mid(9).toAscii(); m_pClient->DataAvailable(ba.constData(),ba.size()); res = true; } #endif // /join
- disconnect from currently connected hub and connect to another hub else if ( cmdOnly == "/join" ) { QString address = cmd.mid(6,cmd.length()-6); if ( address.isEmpty() ) { s = tr("Wrong parameter for '/join'"); } else { s = tr("Join to: ") + address; CString caddress = address.toAscii().constData(); m_pClient->SetHubName(caddress); m_pClient->setWindowTitle(address); m_pClient->Connect(caddress); } AddStatus( s, true ); res = true; } // /ls - get share list from user else if ( cmdOnly == "/ls" ) { if ( theRest.isEmpty() ) { s = tr("No nick, try /dchelp"); } else { /** add transfer to the waitlist */ CString empty; g_pTransferView->DLM_QueueAdd( theRest.toAscii().constData(), m_pClient->GetHubName(), m_pClient->GetHost(), DC_USER_FILELIST, DC_USER_FILELIST, empty, empty, eltBUFFER, 0, 0, 0, empty ); s = tr("Download sharelist from"); s += " '"; s += theRest; s += '\''; } AddStatus( s, true ); res = true; } // /grantp - grant perm. slot to user else if ( cmdOnly == "/grantp" ) { if ( theRest.isEmpty() ) { s = tr("No nick, try /dchelp"); } else { g_pTransferView->DLM_AddUserSlot( theRest.toAscii().constData(), m_pClient->GetHubName(), 0, true ); s = tr("Permanent slot added for"); s += " '"; s += theRest; s += '\''; } AddStatus( s, true ); res = true; } // /grant - grant slot to user else if ( cmdOnly == "/grant" ) { if ( theRest.isEmpty() ) { s = tr("No nick, try /dchelp"); } else { g_pTransferView->DLM_AddUserSlot( theRest.toAscii().constData(), m_pClient->GetHubName(), 1 ); s = tr("Slot added for"); s += " '"; s += theRest; s += '\''; } AddStatus( s, true ); res = true; } // /friend - add user to friend list else if ( cmdOnly == "/friend" ) { if ( theRest.isEmpty() ) { s = tr("No nick, try /dchelp"); } else { g_pUsersList->AddFriend( theRest, QString::fromAscii(m_pClient->GetHubName().Data()), QString::fromAscii(m_pClient->GetHost().Data()), QString() ); s = tr("Added to friend list "); s += " '"; s += theRest; s + '\''; } AddStatus( s, true ); res = true; } // /fav - add hub to bookmarks else if ( cmdOnly == "/fav" ) { QString qhubname = QString::fromAscii( m_pClient->GetHubName().Data() ); g_pHubListManager->AddBookmark( qhubname, QString::fromAscii(m_pClient->GetHost().Data()), QString() ); s = tr("Add bookmark hub"); s += " '"; s += qhubname; s += '\''; AddStatus( s, true ); res = true; } // /bye - disconnect from channel else if ( cmdOnly == "/bye" ) { s = cmd.mid( 5 ); if ( !(s.isEmpty()) ) { SendChat(s); } m_pClient->Disconnect(true); res = true; } // /msg - send private message else if ( cmdOnly == "/msg" ) { QString nick,message; AddStatus( cmd, true ); int i = theRest.indexOf(' '); if ( i != -1 ) { nick = theRest.left(i); message = theRest.mid(i+1); } if ( nick.isEmpty() || message.isEmpty() ) { s = tr("Wrong parameter for '/msg'"); } else { if ( m_pClient->SendPrivateMessage( m_pClient->GetNick(), nick.toAscii().constData(), message.toAscii().constData() ) == 0 ) { s = tr("Private message sent."); g_pConfig->PlaySound(eusSEND); } else { s = tr("Private message not sent!"); } } AddStatus( s, true ); res = true; } // /away - set automatic response for private messages; if the message is empty, disable it else if ( cmdOnly == "/awaymsg" ) { s = cmd.mid(9); g_pConfig->SetAwayMessage(s.toAscii().constData()); if ( s.isEmpty() ) s = tr("Away message disabled."); else s = tr("Away message set."); AddStatus( s, true ); res = true; } else if ( cmdOnly == "/away" ) { if ( g_pConfig->GetAwayMode() == euamAWAY ) { g_pConfig->SetAwayMode( euamNORMAL ); s = tr("Away mode off."); } else { s = cmd.mid(6); if ( s.isEmpty() ) { s = QString::fromAscii( g_pConfig->GetAwayMessage().Data() ); } else { g_pConfig->SetAwayMessage( s.toAscii().constData() ); } g_pConfig->SetAwayMode( euamAWAY ); s.prepend( tr("Away mode on: ") ); } AddStatus( s, true ); res = true; } else if ( cmdOnly == "/back" ) { g_pConfig->SetAwayMode( euamNORMAL ); s = tr("Away mode off."); AddStatus( s, true ); res = true; } else if ( cmdOnly == "/sh" ) { // display the command the user entered AddStatus( cmd, true ); // actually this is better - more portable, doesn't depend on /bin/sh QString args = cmd.mid(4, cmd.length() - 4); if ( args.isEmpty() ) { AddStatus( tr("No command entered."), true ); return true; } if ( g_pConfig->GetThreadsForShellCommands() ) { DCShellCommandRunner * runner = new DCShellCommandRunner( args, this ); m_pShellRunners->append(runner); connect( runner, SIGNAL(finished(bool,QString)), this, SLOT(slotShellCommandFinished(bool,QString)) ); runner->start(); } else { QProcess shellproc( this ); shellproc.start( args ); shellproc.closeWriteChannel(); shellproc.waitForFinished( g_pConfig->GetShellCommandTimeout() * 1000 ); if ( (shellproc.state() == QProcess::NotRunning) ) { if ( shellproc.exitStatus() == QProcess::NormalExit ) { int exitcode = shellproc.exitCode(); if ( exitcode == 0 ) { s = QString( shellproc.readAllStandardOutput() ).trimmed(); if ( s.isEmpty() ) { AddStatus( tr("Command produced no visible output."), true ); } else { SendChat(s); } } else { AddStatus( tr("Process exited with status") + " " + QString::number(exitcode), true ); } } else { AddStatus( tr("Process was killed or crashed."), true); } } else { AddStatus( tr("Process still running after") + " " + QString().setNum(g_pConfig->GetShellCommandTimeout()) + " " + tr("seconds, killing process..."), true ); shellproc.terminate(); shellproc.waitForFinished( 1000 ); if ( shellproc.state() != QProcess::NotRunning ) { shellproc.kill(); } } } res = true; } else if ( cmdOnly == "/sendphoto" ) { if ( !m_bPrivateChat ) { s = tr("Only allowed in private chat."); } else if ( m_pClient->UserList()->GetUserClientVersion(m_sNick.toAscii().constData()) != eucvDCGUI ) { s = tr("The user is using an old version or not using Valknut"); } else { CString fn = g_pConfig->GetUserPhotoFileName().toAscii().constData(); CByteArray bas,bad; if ( CDir().IsFile( fn, false ) ) { if ( (bas.LoadFromFile(fn) == false) || (bas.Size() == 0) ) { s = tr("Can't read your photo."); } else { CBase64::Encode( &bad, &bas ); if ( bad.Size() == 0 ) { s = tr("Photo encode error."); } else { CString se; se.Set((char*)bad.Data(),bad.Size()); se = ""; if ( m_pClient->SendPrivateMessage( m_pClient->GetNick(), m_sNick.toAscii().constData(), se ) != 0 ) { s = tr("Photo not sent."); } else { s = tr("Photo sent."); } } } } else { s = tr("Photo not found."); } } AddStatus( s, true ); res = true; } else if ( cmdOnly == "/disablesorting" ) { m_pClient->disableUserListSorting(); s = tr("Disabled user list sorting."); AddStatus( s, true ); res = true; } else if ( cmdOnly == "/enablesorting" ) { m_pClient->enableUserListSorting(); s = tr("Enabled user list sorting."); AddStatus( s, true ); res = true; } else if ( cmdOnly == "/ignore" ) { if ( theRest.isEmpty() ) { s = tr("No nick, try /dchelp"); } else { if ( g_pUsersList->isNickInList(theRest) == false ) { g_pUsersList->AddFriend( theRest, QString::fromAscii(m_pClient->GetHubName().Data()), QString::fromAscii(m_pClient->GetHost().Data()), QString() ); } g_pUsersList->setIgnore( theRest, true ); s = tr("Ignoring chat from "); s += theRest; } AddStatus( s, true ); res = true; } else if ( cmdOnly == "/unignore" ) { if ( theRest.isEmpty() ) { s = tr("No nick, try /dchelp"); } else { if ( g_pUsersList->ignoreNick( theRest ) ) { g_pUsersList->setIgnore( theRest, false ); s = tr("Showing chat from "); s += theRest; } else { s = theRest; s += tr(" is not in ignore list"); } } AddStatus( s, true ); res = true; } else if ( cmdOnly == "/ratio" ) { ulonglong up = CSocket::m_Traffic.GetTraffic(ettTX); ulonglong down = CSocket::m_Traffic.GetTraffic(ettRX); double ratio = 0; if ( down > 0 ) { ratio = (double) up / (double) down; } s = tr("ratio: overall: "); s += QString().setNum( ratio, 'f', 2 ); s += " ("; s += tr("uploads"); s += ": "; s += DCGuiUtils::GetSizeString( up ); s += " | "; s += tr("downloads"); s += ": "; s += DCGuiUtils::GetSizeString( down ); s += ")\n"; up -= g_pConfig->GetStartUploaded(); down -= g_pConfig->GetStartDownloaded(); if ( down > 0 ) { ratio = (double) up / (double) down; } else { ratio = 0; } s += tr("this session: "); s += QString().setNum( ratio, 'f', 2 ); s += " ("; s += tr("uploads"); s += ": "; s += DCGuiUtils::GetSizeString( up ); s += " | "; s += tr("downloads"); s += ": "; s += DCGuiUtils::GetSizeString( down ); s += ")"; if ( cmd.mid(7).toLower() == "show" ) { SendChat( s ); } else { AddStatus( s, true ); } res = true; } else if ( cmdOnly == "/newlog" ) { m_sTimeStamp = QDateTime::currentDateTime().toString("yyyyMMdd-hhmmss"); s = tr("New log timestamp: "); s += m_sTimeStamp; if ( g_pConfig->GetLogChatOption(elcoAPPENDDATE) == false ) { s += "\n"; s += tr("Warning: log timestamp not enabled."); } AddStatus( s, true ); res = true; } else if ( g_pConfig->GetSendUnknownCommandsAsChat() == false ) { bool isAllowed = false; QString allowedstring = g_pConfig->GetAllowedUnknownCommands(); if ( !allowedstring.isEmpty() ) { QStringList allowed = allowedstring.split( ",", QString::SkipEmptyParts ); for ( int i = 0; i < allowed.count(); i++ ) { // e.g. allow "/me" and "/me waves" but not "/mediqjdoh" QString tail = cmd.mid(allowed[i].length(),1); if ( cmd.startsWith(allowed[i]) && ((tail == " ") || (tail.isEmpty())) ) { isAllowed = true; break; } } } if ( !isAllowed ) { AddStatus( cmd ); AddStatus( tr("Unknown command, try /dchelp") ); res = true; } } } else { /* A custom chat command was replaced with a message, send it */ AddStatus( TextEdit_CHATINPUT->toPlainText(), true ); SendChat( cmd ); res = true; } return res; } /** */ bool DCChat::CheckForData( QString message ) { bool res = false; // now we check for special private messages if ( m_bPrivateChat ) { // remote send a photo if ( message.startsWith("") ) { CString s; CByteArray ba; //printf("CheckForData message='%s'\n",message.toAscii().constData()); s = message.mid(13,message.length()-15).toAscii().constData(); //printf("CheckForData s='%s'\n",s.Data()); if ( CBase64::Decode( &ba, &s ) > 0 ) { g_pUsersList->AddFriendPhoto(m_sNick,&ba); AddStatus(tr("Photo received."), true ); res = true; } } } return res; } /** */ void DCChat::NickCompletion() { // shameles stolen from ksirc int start, end; int i; QString s; if ( m_nTabPressed > 0 ) { s = m_sTabSaved; start = m_nTabStart; end = m_nTabEnd; } else { // QT3 TextEdit_CHATINPUT->getCursorPosition(&p,&i); i = TextEdit_CHATINPUT->textCursor().position(); s = TextEdit_CHATINPUT->toPlainText(); m_sTabSaved = s; if ( i == 0 ) end = 0; else end = i - 1; start = s.lastIndexOf(QRegExp("\\s"), end); m_nTabStart = start; m_nTabEnd = end; } if ( s.isEmpty() && (m_sTabNick.isEmpty() == false) ) { // use the saved nick QString line = m_sTabNick + ": "; TextEdit_CHATINPUT->setPlainText(line); // QT3 TextEdit_CHATINPUT->setCursorPosition( 0,line.length() ); QTextCursor cursor = TextEdit_CHATINPUT->textCursor(); cursor.setPosition( line.length() ); TextEdit_CHATINPUT->setTextCursor( cursor ); } else { int cpos = 1; if ( start == -1 ) { m_sTabNick = m_pClient->findNick( s.mid(0, end+1), m_nTabPressed ); if ( m_sTabNick.isNull() ) { m_nTabPressed = 0; m_sTabNick = m_pClient->findNick( s.mid(0, end+1), m_nTabPressed ); } s.replace(0, end + 1, m_sTabNick + ": " ); cpos += 2; } else { m_sTabNick = m_pClient->findNick( s.mid(start + 1, end - start), m_nTabPressed ); if ( m_sTabNick.isNull() ) { m_nTabPressed = 0; m_sTabNick = m_pClient->findNick( s.mid(start + 1, end - start), m_nTabPressed ); } s.replace(start + 1, end - start, m_sTabNick); } if ( m_sTabNick.isEmpty() == false ) { TextEdit_CHATINPUT->setPlainText(s); // QT3 TextEdit_CHATINPUT->setCursorPosition(0,start + m_sTabNick.length() + cpos); QTextCursor cursor = TextEdit_CHATINPUT->textCursor(); cursor.setPosition( start + m_sTabNick.length() + cpos ); TextEdit_CHATINPUT->setTextCursor( cursor ); m_nTabPressed++; } } } /** insert double clicked word into chat input box */ void DCChat::slotDoubleClickedChatOutput() { // double clicking already selects the text QString selected = m_pTextEdit_CHATOUTPUT->textCursor().selectedText(); //printf("selected=%s\n", selected.toAscii().constData()); // replace all emoticon special characters with the proper text // WARNING: the whole thing could break if QT changes its internal HTML if ( selected.contains("\ufffc") && g_pConfig->GetEnableEmoticons() ) { // get the html QString html = m_pTextEdit_CHATOUTPUT->textCursor().selection().toHtml(); QStringList smileys; int start = 0; QString src = "src=\"" + g_pConfig->GetEmoticonTheme() + "/emoticon"; const int len = src.length(); QList * elist = g_pConfig->EmoticonList(); while ( start != -1 ) { // crap, the html doesn't include the title=":-)", only src="theme/emoticon5" //printf("html=%s\n", html.toAscii().constData()); start = html.indexOf( src ); if ( start == -1 ) { break; } start = start + len; int end = html.indexOf( "\"", start ); if ( end == -1 ) { break; } int id = html.mid( start, end - start ).toInt(); html = html.right( html.length() - (end+1) ); //printf( "start=%d end=%d id=%d\n", start, end, id ); DC_EmoticonObject * EmoticonObject = 0; QString smiley; for ( QList::const_iterator it = elist->constBegin(); it != elist->constEnd(); ++it ) { EmoticonObject = *it; if ( EmoticonObject->m_nID == id ) { smiley = EmoticonObject->m_Text; smiley.replace( "<", "<" ); smiley.replace( ">", ">" ); smiley.replace( "&", "&" ); smiley.replace( "'", "\'" ); smiley.replace( """, "\"" ); break; } } smileys << smiley; } // finally replace those stupid characters for( int i = 0; i < smileys.size(); i++ ) { int pos = selected.indexOf("\ufffc"); if ( pos == -1 ) { break; } selected.replace( pos, 1, smileys[i] ); } selected.replace( "\ufffc", "???" ); } // do noting on no selection if ( selected.isEmpty() ) { return; } // remove all html tags - not needed in QT4 /* QRegExp re; re.setMinimal(true); re.setPattern("<.*>"); selected = selected.remove( re ); // "NICK> " gets selected, trim "> " off nick if ( selected.right(5) == "> " ) { selected = selected.left( selected.length() - 5 ); } */ // trim any white space off ends selected = selected.trimmed(); // add space on end selected += " "; if ( TextEdit_CHATINPUT->toPlainText().isEmpty() ) { TextEdit_CHATINPUT->insertPlainText( selected ); } else { if ( TextEdit_CHATINPUT->toPlainText().right(1) != " " ) { selected.prepend(" "); } // not using TextEdit_CHATINPUT->append(), that would add a new line TextEdit_CHATINPUT->insertPlainText( selected ); } } /** */ void DCChat::slotShellCommandFinished( bool ok, QString output ) { DCShellCommandRunner * runner = qobject_cast(sender()); int pos = m_pShellRunners->indexOf(runner); if ( pos == -1 ) { AddStatus( tr("Shell command event not found in list") ); AddStatus( output ); } else { if ( ok ) { SendChat( output ); } else { AddStatus( output ); } m_pShellRunners->removeAt(pos); disconnect( runner, SIGNAL(finished(bool,QString)), this, SLOT(slotShellCommandFinished(bool,QString)) ); delete runner; } } /** */ void DCChat::slotBGColorChanged() { if ( g_pConfig->GetChatBackgroundColorEnabled() ) { /* * strangely trying to change the text background colour using QTextFormat * or style sheets does not appear to work, this method could be applied to * any widget */ QPalette palette = m_pTextEdit_CHATOUTPUT->palette(); palette.setColor( QPalette::Base, g_pConfig->GetChatBackgroundColor() ); m_pTextEdit_CHATOUTPUT->setAutoFillBackground(true); m_pTextEdit_CHATOUTPUT->setPalette(palette); palette = TextEdit_CHATINPUT->palette(); palette.setColor( QPalette::Base, g_pConfig->GetChatBackgroundColor() ); TextEdit_CHATINPUT->setAutoFillBackground(true); TextEdit_CHATINPUT->setPalette(palette); } else { QTextEdit te; m_pTextEdit_CHATOUTPUT->setAutoFillBackground(te.autoFillBackground()); m_pTextEdit_CHATOUTPUT->setPalette(te.palette()); TextEdit_CHATINPUT->setAutoFillBackground(te.autoFillBackground()); TextEdit_CHATINPUT->setPalette(te.palette()); } } valknut-0.4.9/valknut/dchubfilter.h0000664000076400007640000000274611074173623015513 0ustar ejsejs/*************************************************************************** dchubfilter.h - description ------------------- begin : Mit Okt 30 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCHUBFILTER_H #define DCHUBFILTER_H #include #include "DCDialogHubFilter.h" class DC_HubFilterObject; /** *@author Mathias Küster */ class DCHubFilter : public QDialog, private Ui::DCDialogHubFilter { Q_OBJECT public: /** construtor */ DCHubFilter( QWidget * parent = 0 ); /** destructor */ virtual ~DCHubFilter(); /** */ void Edit( DC_HubFilterObject * HubFilterObject ); /** */ void Get( DC_HubFilterObject * HubFilterObject ); }; #endif valknut-0.4.9/valknut/dcwidget.h0000664000076400007640000000734111131664734015010 0ustar ejsejs/*************************************************************************** dcwidget.h - description ------------------- begin : Don Mai 30 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCWIDGET_H #define DCWIDGET_H #include // it's for ulonglong #include class QProgressBar; /** *@author Mathias Küster */ class DC_QNumericSortItem { public: /** */ int mycol; /** */ ulonglong myvalue; /** construtor */ DC_QNumericSortItem() { mycol=-1;myvalue=0; }; /** destructor */ virtual ~DC_QNumericSortItem() {}; /** */ int mycompare( ulonglong other ) const; }; class DC_QListViewItem : public Q3ListViewItem, public DC_QNumericSortItem { public: /** construtor */ DC_QListViewItem( Q3ListView * parent ) : Q3ListViewItem(parent) {}; /** construtor */ DC_QListViewItem( Q3ListViewItem * parent ) : Q3ListViewItem(parent) {}; /** destructor */ virtual ~DC_QListViewItem() {}; /** */ virtual int compare( Q3ListViewItem * i, int col, bool ascending ) const; /** */ virtual QString key( int column, bool ascending ) const; }; class DC_ListResult : public DC_QListViewItem { public: /** construtor */ DC_ListResult ( Q3ListView * parent ) : DC_QListViewItem (parent) { }; /** construtor */ DC_ListResult ( Q3ListViewItem * parent ) : DC_QListViewItem (parent) { }; /** destructor */ virtual ~DC_ListResult() { }; /** */ void paintCell( QPainter * p, const QColorGroup & cg, int column, int width, int align ); /** Re-implemented to fix sorting by slots */ QString key( int n, bool ascending ) const; }; class DC_QProgressListItem : public Q3ListViewItem { public: /** construtor */ DC_QProgressListItem( DC_QProgressListItem * parent, int column = 0 ); /** construtor */ DC_QProgressListItem( Q3ListViewItem * parent, int column = 0 ); /** construtor */ DC_QProgressListItem( Q3ListView * parent, int column = 0 ); /** destructor */ virtual ~DC_QProgressListItem(); /** */ virtual void paintCell( QPainter *, const QColorGroup & cg, int column, int width, int alignment ); /** */ virtual void paintFocus( QPainter *, const QColorGroup & cg, const QRect & r ); /** */ virtual int width( const QFontMetrics&, const Q3ListView*, int column) const; /** */ virtual void setup(); /** */ virtual int rtti() const; /** */ void SetProgressEnable( bool b ) { m_bProgressEnable=b; } /** */ void setProgress( int i ); /** */ void resetProgress(); /** Reimplemented so sorting is by download/upload + percentage complete */ virtual QString key( int n, bool ascending ) const; /** Set transfer state letter to d for download, u for upload etc. for sorting */ void setTransferState( QString s ); private: /** */ void init(); /** */ int m_nColumn; /** */ bool m_bProgressEnable; /** */ QProgressBar * m_ProgressBar; /** Needed for sorting transfers by upload/download */ QString sTransferState; }; #endif valknut-0.4.9/valknut/dcconnectionmanager.cpp0000664000076400007640000002425411104630167017545 0ustar ejsejs/*************************************************************************** dcconnectionmanager.cpp - description ------------------- begin : Mon Oct 1 2001 copyright : (C) 2001-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcconnectionmanager.h" #include #include #include //Added by qt3to4: #include #include #include #include "dcclient.h" #include "dciconloader.h" #include "dcconfig.h" #include DCConnectionManager * g_pConnectionManager = 0; /** */ DCConnectionManager::DCConnectionManager( QObject * parent ) : QObject( parent ) { m_pMdiArea = qobject_cast(parent); m_pMessageList = new QList(); InitDocument(); g_pConnectionManager = this; } /** */ DCConnectionManager::~DCConnectionManager() { CClient * Client = 0; g_pConnectionManager = NULL; m_Mutex.Lock(); while( (Client=m_pClientList->Next(0)) != 0 ) { m_pClientList->Remove(Client); Client->Disconnect(); } if ( m_pMessageList ) { QList * tmp = m_pMessageList; m_pMessageList = 0; for ( QList::const_iterator it = tmp->constBegin(); it != tmp->constEnd(); ++it ) { delete *it; } delete tmp; } m_ClientsInTabOrder.clear(); m_Mutex.UnLock(); } /** */ void DCConnectionManager::InitDocument() { m_pTabBar = 0; m_nSelectedTab = -1; connect( &m_Timer, SIGNAL(timeout()), this, SLOT(timerDone()) ); connect( m_pMdiArea, SIGNAL(subWindowActivated(QMdiSubWindow *)), this, SLOT(slotMdiSubWindowActivated( QMdiSubWindow *)) ); m_Timer.setSingleShot( true ); m_Timer.start( 500 ); } /** */ void DCConnectionManager::InitTabBar( QToolBar * toolbar ) { m_pTabBar = new QTabBar(toolbar); //toolbar->setStretchableWidget(m_pTabBar); toolbar->addWidget(m_pTabBar); connect(m_pTabBar, SIGNAL(currentChanged(int)), this, SLOT(slotTabSelected(int))); // hide empty tabbar m_pTabBar->hide(); } /** */ void DCConnectionManager::slotTabSelected( int id ) { if ( (m_nSelectedTab != id) && (id >= 0) && (id < m_ClientsInTabOrder.size()) ) { DCClient * client = m_ClientsInTabOrder.at(id); m_pTabBar->setTabIcon(id,QIcon()); m_pMdiArea->setActiveSubWindow(client->GetMdiSubWindow()); } m_nSelectedTab = id; } /** widget from mdi area activated */ void DCConnectionManager::slotMdiSubWindowActivated( QMdiSubWindow * w ) { if ( w && w->widget() ) { DCClient * client = qobject_cast(w->widget()); if ( client ) { const int index = m_ClientsInTabOrder.indexOf( client ); if ( index != m_nSelectedTab ) { m_nSelectedTab = index; m_pTabBar->setCurrentIndex( index ); m_pTabBar->setTabIcon( index, QIcon() ); } } } } /** */ void DCConnectionManager::HubEvent( DCClient * client ) { if ( !client ) return; int i = m_ClientsInTabOrder.indexOf(client); if ( (i != -1) && (i != m_pTabBar->currentIndex()) ) { m_pTabBar->setTabIcon( i, QIcon(g_pIconLoader->GetPixmap(eiMESSAGE)) ); } } /** */ void DCConnectionManager::CaptionChanged( DCClient * client ) { if ( client ) { const int i = m_ClientsInTabOrder.indexOf( client ); if ( (i >= 0) && (i < m_pTabBar->count()) ) { QString s = QString::fromAscii( client->GetHubName().Data() ); if ( s.length() > 20 ) { s = s.left(20) + "..."; } m_pTabBar->setTabText( i, s ); } } } /** */ void DCConnectionManager::HubClosing( DCClient * client ) { /* * Strangely, hubs are not deleted in dclib CConnectionManager * but are deleted by QT after being closed because the delete * on close flag is set. */ if ( client ) { const int i = m_ClientsInTabOrder.indexOf( client ); if ( i != -1 ) { m_ClientsInTabOrder.removeAt(i); /* * FIXME disconnect/connect to stop QT 4.3 crashing. * The crash was before slotTabSelected got called. * QT 4.4 did not crash. * So possibly there is some other bug or it's a QT bug that's already fixed. */ disconnect( m_pTabBar, SIGNAL(currentChanged(int)), this, SLOT(slotTabSelected(int)) ); m_pTabBar->removeTab(i); connect( m_pTabBar, SIGNAL(currentChanged(int)), this, SLOT(slotTabSelected(int)) ); } if ( m_pTabBar->count() == 0 ) { m_pTabBar->hide(); } RemoveHub( client ); // do not change m_nSelectedTab , tab is not selected anymore } } /** callback function */ int DCConnectionManager::DC_CallBack( CDCMessage * DCMessage ) { int err = -1; m_Mutex.Lock(); if ( DCMessage && m_pMessageList ) { m_pMessageList->append(DCMessage); err = 0; } m_Mutex.UnLock(); return err; } /** */ void DCConnectionManager::timerDone() { CDCMessage * DCMsg; int i; for(i=0;i<50;i++) { if ( m_Mutex.TryLock() == false ) { break; } if ( m_pMessageList && !m_pMessageList->isEmpty() ) { DCMsg = m_pMessageList->takeFirst(); } else { DCMsg = 0; } m_Mutex.UnLock(); if ( DCMsg == 0 ) { break; } switch ( DCMsg->m_eType ) { case DC_MESSAGE_CONNECT_CLIENT: { DCMessageConnectClient *msg = (DCMessageConnectClient*)DCMsg; Connect( msg->m_sHubName, msg->m_sHubHost ); break; } default: { break; } } if ( DCMsg ) { delete DCMsg; } } m_Timer.setSingleShot( true ); m_Timer.start( 500 ); } /** */ void DCConnectionManager::AutoConnect() { DCConfigHubItem * hubitem = 0; CList list; DCConfigHubProfile ConfigHubProfile; g_pConfig->GetBookmarkHubList(&list); while( (hubitem=list.Next(hubitem)) != 0 ) { // check for autoconnect if ( g_pConfig->GetHubProfile( hubitem->m_sProfile, &ConfigHubProfile ) ) { if ( ConfigHubProfile.m_bAutoConnect ) { Connect( hubitem->m_sName, hubitem->m_sHost ); } } } } /** */ void DCConnectionManager::Connect( CString hubname, CString server, bool sslconnect ) { if ( server.IsEmpty() ) { return; } if ( hubname.IsEmpty() ) { hubname = server; } m_Mutex.Lock(); DCClient * client = dynamic_cast(GetHub(hubname,server)); if ( client ) { client->setFocus(); } m_Mutex.UnLock(); if ( client ) { return; } QString s; int i = server.Find(':'); if ( i >= 0 ) { s = QString::fromAscii( server.Left(i).Data() ); } else { s = QString::fromAscii( server.Data() ); } client = new DCClient(m_pMdiArea,g_pConfig->GetRemoteEncoding(hubname,server)); client->setObjectName(s); client->setAttribute(Qt::WA_DeleteOnClose); s = QString::fromAscii(client->GetHubName().Data()); if ( s.length() > 20 ) s = s.left(20) + "..."; if ( m_pTabBar->count() == 0 ) m_pTabBar->show(); m_pTabBar->addTab( QIcon(), s ); m_ClientsInTabOrder.append(client); client->setWindowTitle(QString::fromAscii(hubname.Data())); if ( g_pConfig->GetOpenClientWindows() == 0 ) { client->showMinimized(); } else if ( g_pConfig->GetOpenClientWindows() == 2 ) { client->showMaximized(); client->GetMdiSubWindow()->showMaximized(); // update tabbar slotMdiSubWindowActivated(client->GetMdiSubWindow()); } else { client->show(); client->GetMdiSubWindow()->show(); client->centreOnMdiArea(); // update tabbar slotMdiSubWindowActivated(client->GetMdiSubWindow()); } CConnectionManager::Connect(hubname,server,client,sslconnect); } /** */ void DCConnectionManager::OpenPrivateChat( QString hubname, QString hubhost, QString nick ) { m_Mutex.Lock(); DCClient * Client = dynamic_cast(GetHub(hubname.toAscii().constData(),hubhost.toAscii().constData())); if ( Client ) { Client->DC_PrivateChat(nick,QString(),QString(),true); } m_Mutex.UnLock(); } /** */ void DCConnectionManager::CloseAllChats( bool onlyOffline ) { CClient * Client = 0; m_Mutex.Lock(); while( (Client=m_pClientList->Next(Client)) != 0 ) { DCClient * dcc = dynamic_cast(Client); if ( dcc ) { dcc->CloseAllChats( onlyOffline ); } } m_Mutex.UnLock(); } /** */ void DCConnectionManager::DisconnectAllClients() { CClient * Client = 0; m_Mutex.Lock(); while( (Client=m_pClientList->Next(Client)) != 0 ) { m_Mutex.UnLock(); Client->Disconnect(true); m_Mutex.Lock(); } m_Mutex.UnLock(); } /** */ void DCConnectionManager::CloseDisconnectedHubs() { CClient * Client = 0, * oClient = 0; m_Mutex.Lock(); while( (Client=m_pClientList->Next(Client)) != 0 ) { if ( Client->GetConnectionState() == estNONE ) { m_Mutex.UnLock(); DCClient * dcc = dynamic_cast(Client); if ( dcc ) { dcc->GetMdiSubWindow()->close(); } m_Mutex.Lock(); Client = oClient; } else { oClient = Client; } } m_Mutex.UnLock(); } /** */ void DCConnectionManager::OPKick( QString hubname, QString hubhost, QString nick, QString message ) { m_Mutex.Lock(); DCClient * Client = dynamic_cast(GetHub(hubname.toAscii().constData(),hubhost.toAscii().constData())); if ( Client ) { Client->OPKick( nick, message ); } m_Mutex.UnLock(); } /** */ void DCConnectionManager::OPForceMove( QString hubname, QString hubhost, QString nick, QString message, QString host ) { m_Mutex.Lock(); DCClient * Client = dynamic_cast(GetHub(hubname.toAscii().constData(),hubhost.toAscii().constData())); if ( Client ) { Client->OPForceMove( nick, message, host ); } m_Mutex.UnLock(); } /** */ DCClient * DCConnectionManager::GetClientForHub( CString hubname, CString hubhost ) { /* using dynamic_cast because there could be non gui CClients * present if doing bookmark/public hub search */ return dynamic_cast(GetHub( hubname, hubhost )); } valknut-0.4.9/valknut/dcconfig.cpp0000664000076400007640000021777211133210065015322 0ustar ejsejs/*************************************************************************** dcconfig.cpp - description ------------------- begin : Fri Mar 1 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcconfig.h" #include /* * Memset for crazy new user icon cache system. * It would be much easier to just load all the icons * but that would be 384 QPixmaps. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dciconloader.h" #include /* CMessageMyInfo for user list icon */ #include // mac stuff #if defined(Q_OS_MACX) #include #endif #include "dcguiutils.h" // config files #define DCGUI_CONFIG "dcgui.cfg" #define DCGUI_HUBFILTER "dchubfilter.cfg" #define DCGUI_FRIENDLIST "dcfriendlist.cfg" #define XML_DCGUI_CONFIG "dcgui" #define XML_DCGUI_HUBFILTER "dchubfilter" #define XML_DCGUI_FRIENDLIST "dcfriendlist" #define XML_GUI "gui" #define XML_OPENPRIVATECHATWIN "openprivatechatwindow" #define XML_UNIT "unit" #define XML_THEME "theme" #define XML_THEME_QT4 "theme_qt4" #define XML_LANGUAGEFILE "languagefile" #define XML_APP_FONT "appfont" #define XML_USE_CUSTOM_FONT "use_custom_font" #define XML_APP_WIDTH "appwidth" #define XML_APP_HEIGHT "appheight" #define XML_TABBAR "tabbar" #define XML_TOOLBAR "toolbar" #define XML_STATUSBAR "statusbar" #define XML_EXTERNAL_SOUND_PLAYER "externalsoundplayer" #define XML_EXTERNAL_PLAYER "externalplayer" #define XML_SOUND_FILE_CONNECT "soundfileconnect" #define XML_SOUND_FILE_DISCONNECT "soundfiledisconnect" #define XML_SOUND_FILE_SEND "soundfilesend" #define XML_SOUND_FILE_RECEIVE "soundfilereceive" #define XML_SOUND_FILE_FIRSTRECEIVE "soundfilefirstreceive" #define XML_SOUND_FILE_NICK_MENTIONED "soundnickmentioned" #define XML_SOUND_ENABLED_CONNECT "soundenabledconnect" #define XML_SOUND_ENABLED_DISCONNECT "soundenableddisconnect" #define XML_SOUND_ENABLED_SEND "soundenabledsend" #define XML_SOUND_ENABLED_RECEIVE "soundenabledreceive" #define XML_SOUND_ENABLED_FIRSTRECEIVE "soundenabledfirstreceive" #define XML_SOUND_ENABLED_NICK_MENTIONED "soundenablednickmentioned" #define XML_SOUND_DISABLED "sounddisabled" #define XML_SOUND_DISABLED_AWAY "sounddisabledaway" #define XML_TIMESTAMP_PRIVATECHAT "timestampprivatechat" #define XML_TIMESTAMP_HUBCHAT "timestamphubchat" #define XML_SHOW_STATUS_MESSAGE "showstatusmessage" #define XML_SHOW_TRANSFER_WIN "showtransferwin" #define XML_SEND_HIDE_PRIVATE_CHAT_TO_PUBLIC_CHAT "sendhideprivatechattopublicchat" #define XML_CHAT_MESSAGE_MAX_LINES "chatmessagemaxlines" #define XML_DEFAULTDOWNLOADMODE "defaultdownloadmode" #define XML_EMOTICONS "emoticons" #define XML_SENDCHATINDEX "sendchatindex" #define XML_ENABLETRAY "enabletray" #define XML_QUERYONEXIT "queryonexit" #define XML_QUERYONFILEDELETE "queryonfiledelete" #define XML_SHOWCHATSENDBUTTON "showchatsendbutton" #define XML_CHATMAXPARAGRAPH "chatmaxparagraph" #define XML_VALKNUT_DATA_PATH "valknutdatapath" #define XML_QMAINWINDOW_STATE "qmainwindowstate" #define XML_APP_ICON_THEME "appicontheme" #define XML_EMOTICON_THEME "emoticontheme" #define XML_USER_ICON_THEME "userlisticontheme" #define XML_TV_CHUNKPERCENT "tvchunkpercent" #define XML_TV_FILEPERCENT "tvfilepercent" #define XML_TV_CHUNKSIZE "tvchunksize" #define XML_TV_FILESIZE "tvfilesize" #define XML_TV_DOWNLOADRATESINGLE "tvdownloadratesingle" #define XML_TV_ELAPSEDTIMESINGLE "tvelapsedtimesingle" #define XML_TV_DOWNLOADRATEMULTI "tvdownloadratemulti" #define XML_TV_ELAPSEDTIMEMULTI "tvelapsedtimemulti" #define XML_NAME "name" #define XML_ENTRY "entry" #define XML_SECTION "section" #define XML_SIZE "size" #define XML_POS "pos" #define XML_FILTER "filter" #define XML_FILTERNAME "filtername" #define XML_CONTAINS "contains" #define XML_USER "user" #define XML_SERVER "server" #define XML_DESCRIPTION "description" #define XML_USERLISTRIGHTALIGNMENT "userlistrightalignment" #define XML_BACKGROUNDPIXMAP "backgroundpixmap" #define XML_BROWSER "browser" #define XML_CUSTOM_BROWSER "custom_browser" #define XML_SHOWCHATINTAB "showchatintab" #define XML_OPENCLIENTWINDOWS "openclientwindows" #define XML_FLOODCOUNT "floodcount" #define XML_FLOODOPKICK "floodopkick" #define XML_FLOODKICKMESSAGE "floodkickmessage" #define XML_LCO_ENABLELOGGING "LCO_ENABLELOGGING" #define XML_LCO_APPENDDATE "LCO_APPENDDATE" #define XML_LCO_APPENDHUBNAME "LCO_APPENDHUBNAME" #define XML_LCO_APPENDHUBHOST "LCO_APPENDHUBHOST" #define XML_LCO_DISABLEPUBLICCHAT "LCO_DISABLEPUBLICCHAT" #define XML_LCO_ENABLENICKNAMEFILTER "LCO_ENABLENICKNAMEFILTER" #define XML_LCO_NICKNAMEFILTER_ENABLELOGGING "LCO_NICKNAMEFILTER_ENABLELOGGING" #define XML_CC_CHATTIMESTAMP "CC_CHATTIMESTAMP" #define XML_CC_CHATLOCALNICK "CC_CHATLOCALNICK" #define XML_CC_CHATLOCALTEXT "CC_CHATLOCALTEXT" #define XML_CC_CHATREMOTENICK "CC_CHATREMOTENICK" #define XML_CC_CHATREMOTETEXT "CC_CHATREMOTETEXT" #define XML_CC_CHATSTATUSNICK "CC_CHATSTATUSNICK" #define XML_CC_CHATSTATUSTEXT "CC_CHATSTATUSTEXT" #define XML_CC_PUBLICCHATTIMESTAMP "CC_PUBLICCHATTIMESTAMP" #define XML_CC_PUBLICCHATLOCALNICK "CC_PUBLICCHATLOCALNICK" #define XML_CC_PUBLICCHATLOCALTEXT "CC_PUBLICCHATLOCALTEXT" #define XML_CC_PUBLICCHATREMOTENICK "CC_PUBLICCHATREMOTENICK" #define XML_CC_PUBLICCHATREMOTETEXT "CC_PUBLICCHATREMOTETEXT" #define XML_CC_PUBLICCHATSTATUSNICK "CC_PUBLICCHATSTATUSNICK" #define XML_CC_PUBLICCHATSTATUSTEXT "CC_PUBLICCHATSTATUSTEXT" #define XML_CC_PUBLICPRIVATECHATNICK "CC_PUBLICPRIVATECHATNICK" #define XML_CC_PUBLICPRIVATECHATTEXT "CC_PUBLICPRIVATECHATTEXT" #define XML_CC_CHATSAY "CC_CHATSAY" #define XML_CC_PUBLICCHATMENICK "CC_PUBLICCHATMENICK" #define XML_CC_OPNICK "CC_OPNICK" #define XML_CHAT_BG_COLOR_ENABLED "custom_chat_bg_enabled" #define XML_CHAT_BG_COLOR "chat_bg_color" #define XML_AUTO_AWAY_MODE "autoawaymode" #define XML_AUTO_AWAY_TIME "autoawaytime" #define XML_CHAT_SHOW_JOINS_AND_PARTS "chatshowjoinsandparts" #define XML_CHAT_SHOW_JOINS_AND_PARTS_ONLY_FAV "chatshowjoinsandpartsonlyfav" #define XML_CHAT_SUPPRESSED_NICKS "suppressednicks" #define XML_DOUBLE_CLICK_ACTION "doubleclickactionindex" #define XML_FRIEND "friend" #define XML_IMAGE "image" #define XML_SEND_IMAGE "sendimage" #define XML_AUTO_SEC "autosec" #define XML_USER_PHOTO "userphoto" #define XML_PERM_SLOT "permslot" #define XML_IGNORE "ignore" #define XML_USERCHATCOMMAND "userchatcommand" #define XML_USERCHATCOMMAND_NAME "command_name" #define XML_USERCHATCOMMAND_ACT "command_action" #define XML_SHELL_COMMAND_THREADS "shell_command_threads" #define XML_SHELL_COMMAND_TIMEOUT "shell_command_timeout" #define XML_UNIT_AUTO "auto" #define XML_UNIT_BYTE "byte" #define XML_UNIT_KBYTE "kbyte" #define XML_UNIT_MBYTE "mbyte" #define XML_UNIT_GBYTE "gbyte" #define XML_USERMENUCOMMAND "usermenucommand" #define XML_USERMENUCOMMAND_NAME "command_name" #define XML_USERMENUCOMMAND_ACT "command_action" #define XML_USERMENUCOMMAND_CONTEXT "command_context" #define XML_USERMENUCOMMAND_TYPE "command_type" #define XML_USERMENUCOMMAND_HUBIP "command_hub" #define XML_USERMENUCOMMAND_POSITION "command_position" #define XML_AUTORESPONSE_ENABLED "autoresponse_enabled" #define XML_AUTORESPONSE_ENABLED_PM "autoresponse_enabled_pm" #define XML_AUTORESPONSE "autoresponse" #define XML_AUTORESPONSE_TRIGGER "trigger" #define XML_AUTORESPONSE_RESPONSE "response" #define XML_AUTORESPONSE_CASE_SENS "case_sensitive" #define XML_AUTORESPONSE_DELAY "autoresponse_delay" #define XML_AUTORESPONSE_IGNORES "autoresponse_ignores" #define XML_FILELIST_NAMING_SCHEME "filelist_naming_scheme" #define XML_FOLDERS_RIGHT_PANE "folders_in_right_pane" #define XML_SIZES_IN_LEFT_PANE "sizes_in_left_pane" #define XML_FOLDERS_RIGHT_PANE_ON_TOP "folders_in_right_pane_on_top" #define XML_OPEN_FOLDERS_RIGHT_PANE "open_folders_in_right_pane" #define XML_SEND_UNKNOWN_COMMANDS "unknown_commands_as_chat" #define XML_ALLOWED_UNKNOWN_COMMANDS "allowed_unknown_commands" #define XML_ADJUST_SR "adjust_hub_details_in_sr" #define XML_REMOVE_PUBLIC_HUB "remove_public_hub" #define XML_TAB_COMPLETE_MODE "tab_complete_mode" #define XML_TAB_COMPLETE_STRIP "tab_complete_strip" #define XML_USER_COMMAND_SUBMENU "user_command_submenu" /* * maybe different action for external magnet links * but they are not supported anyway */ #define XML_MAGNET_ACTION_CHAT "magnet_action_chat" /* these were removed from dclib cconfig.h */ #define XML_HUBNAME "hubname" #define XML_HUBHOST "hubhost" #define XML_ALTERNATING_ROW_COLORS "alternating_row_colors" DCConfig * g_pConfig = 0; DCConfig::DCConfig( CString configpath ) : CConfig(configpath) { // gui defaults bOpenPrivateChatWindow = true; m_eUnit = euAUTO; #if defined(Q_OS_MACX) sTheme = "Mac"; #else sTheme = ""; #endif sThemeQT3 = ""; sLanguageFile = ""; sAppFont = DEFAULT_APP_FONT; /* The system default font is best */ m_bUseCustomFont = false; iAppHeight = 480; iAppWidth = 640; bTabBar = true; bToolBar = true; bStatusBar = true; sSoundFileConnect = ""; sSoundFileDisconnect = ""; sSoundFileSend = ""; sSoundFileReceive = ""; sSoundFileFirstReceive = ""; sSoundFileNickMentioned = ""; bSoundDisabled = true; bSoundDisabledAway = true; bSoundEnabledConnect = true; bSoundEnabledDisconnect = true; bSoundEnabledSend = true; bSoundEnabledReceive = true; bSoundEnabledFirstReceive = true; bSoundEnabledNickMentioned = true; bEnableEmoticons = true; bTimeStampPrivateChat = true; bTimeStampHubChat = true; bShowStatusMessage = true; bShowTransferWin = false; m_nSendChat = 1; bExternalSoundPlayer = false; sExternalPlayer = ""; bTVChunkPercent = false; bTVFilePercent = true; bTVChunkSize = false; bTVFileSize = true; bTVDownloadRateSingle = false; bTVElapsedTimeSingle = false; bTVDownloadRateMulti = true; bTVElapsedTimeMulti = true; bThemeSupport = true; bUserListRightAlignment = true; m_bAutoAwayMode = false; m_nAutoAwayTime = 300; m_bChatShowJoinsAndParts = false; m_bChatShowJoinsAndPartsOnlyFav = false; bSendHidePrivateChatToPublicChat = true; memset( m_UserIconCache, 0, sizeof(m_UserIconCache) ); iChatMessageMaxLines = 0; iFloodCount = 3; m_bFloodOpKick = false; pProcess = new QProcess(); iDefaultDownloadMode = 0; m_bEnableTray = true; bQueryOnExit = false; bQueryOnFileDelete = true; bShowChatSendButton = true; sBackgroundPixmap = ""; #if defined(Q_OS_MACX) sBrowser = "open"; #elif defined(Q_WS_WIN) sBrowser = "start"; #else sBrowser = "xdg-open"; #endif /* false to use QDesktopServices */ m_bCustomBrowser = false; bShowChatInTab = true; m_nChatMaxParagraph = 0; m_nOpenClientWindows = 1; // normal, not minimized nor maximized m_pEmoticons = 0; m_bLogChatOption_1 = false; m_bLogChatOption_2 = false; m_bLogChatOption_3 = false; m_bLogChatOption_4 = false; m_bLogChatOption_5 = false; m_bLogChatOption_6 = false; m_bLogChatOption_7 = false; m_sChatColor_1 = "#000000"; m_sChatColor_2 = "#005500"; m_sChatColor_3 = "#000000"; m_sChatColor_4 = "#ac0000"; m_sChatColor_5 = "#000000"; m_sChatColor_6 = "#ff0000"; m_sChatColor_7 = "#000000"; m_sChatColor_8 = "#000000"; m_sChatColor_9 = "#005500"; m_sChatColor_10 = "#000000"; m_sChatColor_11 = "#ac0000"; m_sChatColor_12 = "#000000"; m_sChatColor_13 = "#ff0000"; m_sChatColor_14 = "#000000"; m_sChatColor_15 = "#ffff00"; m_sChatColor_16 = "#000000"; m_sChatColor_17 = "#0000ff"; m_sChatColor_18 = "#ff0c52"; m_sChatColor_19 = "#000000"; /* default false to use theme color */ m_bChatBackgroundColorEnabled = false; /* white */ m_sChatBackgroundColor = "#ffffff"; /* * The simple emoticon theme both looks nicer * and the list has 35 entries while the list * for default has 209 entries so simple will * be faster. */ m_sApplicationIconTheme = "default"; m_sEmoticonTheme = "simple"; m_sUserListIconTheme = "default"; m_sSuppressedNicks = ""; // auto responder defaults to disabled m_bAutoResponderEnabled = false; m_bAutoResponderEnabledForPM = false; m_nAutoResponseDelay = 5; m_sAutoResponseIgnores = ""; m_nFilelistNamingSchemeVersion = 0; m_bFoldersInRightPane = false; m_bFolderSizesInLeftPane = true; m_bFoldersInRightPaneOnTop = false; m_bOpenFoldersInRightPane = true; m_bSendUnknownCommandsAsChat = true; m_sAllowedUnknownCommands = "/me,/ME"; m_bAdjustSearchResultHubNames = false; m_bRemovePublicHubEnabled = false; m_baQMainWindowState = ""; m_nTabCompleteMatchMode = 0; m_bTabCompleteStripTags = false; m_bThreadsForShellCommands = true; m_nShellCommandTimeout = 5; m_bUserCommandSubmenu = true; /* * somehow the default for this was missing * and would have been an empty CString/QString */ m_nDoubleClickAction = 0; m_eMagnetActionChat = eMagnetPrompt; m_bAlternatingRowColors = true; #if defined(Q_OS_MACX) CFURLRef pluginRef = CFBundleCopyBundleURL(CFBundleGetMainBundle()); CFStringRef macPath = CFURLCopyFileSystemPath(pluginRef, kCFURLPOSIXPathStyle); const char *pathPtr = CFStringGetCStringPtr(macPath, CFStringGetSystemEncoding()); SetValknutDataPath(pathPtr); #endif if ( m_sValknutDataPath.isEmpty() ) #ifdef WIN32 m_sValknutDataPath = QApplication::applicationDirPath(); #else m_sValknutDataPath = VALKNUT_DATAPATH; #endif g_pConfig = this; } DCConfig::~DCConfig() { g_pConfig = NULL; delete pProcess; if ( m_pEmoticons ) { for ( QList::const_iterator it = m_pEmoticons->constBegin(); it != m_pEmoticons->constEnd(); ++it ) { delete *it; } m_pEmoticons->clear(); delete m_pEmoticons; m_pEmoticons = 0; } // delete the maps, fix memory leak on shutdown for ( SettingMap::const_iterator it = m_guiSettingMap.constBegin(); it != m_guiSettingMap.constEnd(); ++it ) { delete it.value(); } m_guiSettingMap.clear(); for ( QMap::const_iterator it = m_UserMenuCommands.constBegin(); it != m_UserMenuCommands.constEnd(); ++it ) { delete it.value(); } m_UserMenuCommands.clear(); for ( int x = 0; x < USERLIST_XPM_COLUMNS; ++x ) { for ( int y = 0; y < USERLIST_XPM_ROWS; ++y ) { if ( m_UserIconCache[x][y] ) { delete m_UserIconCache[x][y]; m_UserIconCache[x][y] = 0; } } } for ( QList::const_iterator it = m_lUserChatCommands.constBegin(); it != m_lUserChatCommands.constEnd(); ++it ) { delete *it; } m_lUserChatCommands.clear(); for ( QList::const_iterator it = m_lAutoResponses.constBegin(); it != m_lAutoResponses.constEnd(); ++it ) { delete *it; } m_lAutoResponses.clear(); } /** */ void DCConfig::ParseDCGuiConfig( CXml * xml ) { CString xml_name, xml_tmp; do { /* gui entrys */ if ( (xml->Name() == XML_GUI) && xml->FirstChild() ) { do { xml_name = xml->Name(); if ( xml_name == XML_OPENCLIENTWINDOWS ) m_nOpenClientWindows = xml->Content().asINT(); else if ( xml_name == XML_OPENPRIVATECHATWIN ) bOpenPrivateChatWindow = xml->GetBoolChild(); else if ( xml_name == XML_CHATMAXPARAGRAPH ) m_nChatMaxParagraph = xml->Content().asLONG(); else if ( xml_name == XML_EMOTICONS ) bEnableEmoticons = xml->GetBoolChild(); else if ( xml_name == XML_USER_PHOTO ) m_sUserPhotoFileName = xml->Content().Data(); else if ( xml_name == XML_TABBAR ) bTabBar = xml->GetBoolChild(); else if ( xml_name == XML_TOOLBAR ) bToolBar = xml->GetBoolChild(); else if ( xml_name == XML_STATUSBAR ) bStatusBar = xml->GetBoolChild(); else if ( xml_name == XML_USERLISTRIGHTALIGNMENT ) bUserListRightAlignment = xml->GetBoolChild(); else if ( xml_name == XML_SHOWCHATSENDBUTTON ) bShowChatSendButton = xml->GetBoolChild(); else if ( xml_name == XML_UNIT ) { xml_tmp = xml->Content(); if ( xml_tmp == XML_UNIT_AUTO ) m_eUnit = euAUTO; else if ( xml_tmp == XML_UNIT_BYTE ) m_eUnit = euBYTE; else if ( xml_tmp == XML_UNIT_KBYTE ) m_eUnit = euKBYTE; else if ( xml_tmp == XML_UNIT_MBYTE ) m_eUnit = euMBYTE; else if ( xml_tmp == XML_UNIT_GBYTE ) m_eUnit = euGBYTE; } else if ( xml_name == XML_THEME_QT4 ) sTheme = xml->Content().Data(); else if ( xml_name == XML_THEME ) sThemeQT3 = xml->Content().Data(); else if ( xml_name == XML_BACKGROUNDPIXMAP ) sBackgroundPixmap = xml->Content().Data(); else if ( xml_name == XML_BROWSER ) sBrowser = xml->Content().Data(); else if ( xml_name == XML_CUSTOM_BROWSER ) m_bCustomBrowser = xml->GetBoolChild(); else if ( xml_name == XML_LANGUAGEFILE ) sLanguageFile = xml->Content().Data(); else if ( xml_name == XML_APP_FONT ) sAppFont = xml->Content().Data(); else if ( xml_name == XML_USE_CUSTOM_FONT ) m_bUseCustomFont = xml->GetBoolChild(); else if ( xml_name == XML_APP_WIDTH ) iAppWidth = xml->Content().asINT(); else if ( xml_name == XML_APP_HEIGHT ) iAppHeight = xml->Content().asINT(); else if ( xml_name == XML_SOUND_FILE_CONNECT ) sSoundFileConnect = xml->Content().Data(); else if ( xml_name == XML_SOUND_FILE_DISCONNECT ) sSoundFileDisconnect = xml->Content().Data(); else if ( xml_name == XML_SOUND_FILE_SEND ) sSoundFileSend = xml->Content().Data(); else if ( xml_name == XML_SOUND_FILE_RECEIVE ) sSoundFileReceive = xml->Content().Data(); else if ( xml_name == XML_SOUND_FILE_FIRSTRECEIVE ) sSoundFileFirstReceive = xml->Content().Data(); else if ( xml_name == XML_SOUND_FILE_NICK_MENTIONED ) sSoundFileNickMentioned = xml->Content().Data(); else if ( xml_name == XML_EXTERNAL_SOUND_PLAYER ) bExternalSoundPlayer = xml->GetBoolChild(); else if ( xml_name == XML_EXTERNAL_PLAYER ) sExternalPlayer = xml->Content().Data(); else if ( xml_name == XML_SOUND_DISABLED ) bSoundDisabled = xml->GetBoolChild(); else if ( xml_name == XML_SOUND_DISABLED_AWAY ) bSoundDisabledAway = xml->GetBoolChild(); else if ( xml_name == XML_SOUND_ENABLED_CONNECT ) bSoundEnabledConnect = xml->GetBoolChild(); else if ( xml_name == XML_SOUND_ENABLED_DISCONNECT ) bSoundEnabledDisconnect = xml->GetBoolChild(); else if ( xml_name == XML_SOUND_ENABLED_SEND ) bSoundEnabledSend = xml->GetBoolChild(); else if ( xml_name == XML_SOUND_ENABLED_RECEIVE ) bSoundEnabledReceive = xml->GetBoolChild(); else if ( xml_name == XML_SOUND_ENABLED_FIRSTRECEIVE ) bSoundEnabledFirstReceive = xml->GetBoolChild(); else if ( xml_name == XML_SOUND_ENABLED_NICK_MENTIONED ) bSoundEnabledNickMentioned = xml->GetBoolChild(); else if ( xml_name == XML_TIMESTAMP_PRIVATECHAT ) bTimeStampPrivateChat = xml->GetBoolChild(); else if ( xml_name == XML_TIMESTAMP_HUBCHAT ) bTimeStampHubChat = xml->GetBoolChild(); else if ( xml_name == XML_SHOW_STATUS_MESSAGE ) bShowStatusMessage = xml->GetBoolChild(); else if ( xml_name == XML_SENDCHATINDEX ) m_nSendChat = xml->Content().asINT(); else if ( xml_name == XML_SHOW_TRANSFER_WIN ) bShowTransferWin = xml->GetBoolChild(); else if ( xml_name == XML_TV_CHUNKPERCENT ) bTVChunkPercent = xml->GetBoolChild(); else if ( xml_name == XML_TV_FILEPERCENT ) bTVFilePercent = xml->GetBoolChild(); else if ( xml_name == XML_TV_CHUNKSIZE ) bTVChunkSize = xml->GetBoolChild(); else if ( xml_name == XML_TV_FILESIZE ) bTVFileSize = xml->GetBoolChild(); else if ( xml_name == XML_TV_DOWNLOADRATESINGLE ) bTVDownloadRateSingle = xml->GetBoolChild(); else if ( xml_name == XML_TV_ELAPSEDTIMESINGLE ) bTVElapsedTimeSingle = xml->GetBoolChild(); else if ( xml_name == XML_TV_DOWNLOADRATEMULTI ) bTVDownloadRateMulti = xml->GetBoolChild(); else if ( xml_name == XML_TV_ELAPSEDTIMEMULTI ) bTVElapsedTimeMulti = xml->GetBoolChild(); else if ( xml_name == XML_SEND_HIDE_PRIVATE_CHAT_TO_PUBLIC_CHAT ) bSendHidePrivateChatToPublicChat = xml->GetBoolChild(); else if ( xml_name == XML_CHAT_MESSAGE_MAX_LINES ) iChatMessageMaxLines = xml->Content().asINT(); else if ( xml_name == XML_FLOODCOUNT ) iFloodCount = xml->Content().asINT(); else if ( xml_name == XML_FLOODOPKICK ) m_bFloodOpKick = xml->GetBoolChild(); else if ( xml_name == XML_DEFAULTDOWNLOADMODE ) iDefaultDownloadMode = xml->Content().asUINT(); else if ( xml_name == XML_QUERYONEXIT ) bQueryOnExit = xml->GetBoolChild(); else if ( xml_name == XML_ENABLETRAY ) m_bEnableTray = xml->GetBoolChild(); else if ( xml_name == XML_QUERYONFILEDELETE ) bQueryOnFileDelete = xml->GetBoolChild(); else if ( xml_name == XML_SHOWCHATINTAB ) bShowChatInTab = xml->GetBoolChild(); else if ( xml_name == XML_AUTO_AWAY_MODE ) m_bAutoAwayMode = xml->GetBoolChild(); else if ( xml_name == XML_AUTO_AWAY_TIME ) m_nAutoAwayTime = xml->Content().asUINT(); else if ( xml_name == XML_CHAT_SHOW_JOINS_AND_PARTS ) m_bChatShowJoinsAndParts = xml->GetBoolChild(); else if ( xml_name == XML_CHAT_SHOW_JOINS_AND_PARTS_ONLY_FAV ) m_bChatShowJoinsAndPartsOnlyFav = xml->GetBoolChild(); else if ( xml_name == XML_CHAT_SUPPRESSED_NICKS ) m_sSuppressedNicks = xml->Content().Data(); else if ( xml_name == XML_SEND_UNKNOWN_COMMANDS ) m_bSendUnknownCommandsAsChat = xml->GetBoolChild(); else if ( xml_name == XML_ALLOWED_UNKNOWN_COMMANDS ) m_sAllowedUnknownCommands = xml->Content().Data(); else if ( xml_name == XML_DOUBLE_CLICK_ACTION ) m_nDoubleClickAction = xml->Content().asINT(); else if ( xml_name == XML_MAGNET_ACTION_CHAT ) m_eMagnetActionChat = eMagnetAction( xml->Content().asINT() ); else if ( xml_name == XML_VALKNUT_DATA_PATH ) m_sValknutDataPath = xml->Content().Data(); else if ( (xml_name == "MAP") && xml->FirstChild() ) { StringMap * map = new StringMap(); do { xml_tmp = xml->Name(); if ( xml_tmp == "KEY" ) m_guiSettingMap[xml->Content().Data()] = map; else if ( (xml_tmp == XML_ENTRY) && xml->FirstChild() ) { CString key,name; do { xml_tmp = xml->Name(); if ( xml_tmp == "KEY" ) key = xml->Content(); else if ( xml_tmp == "NAME" ) name = xml->Content(); } while ( xml->NextNode() ); xml->Parent(); (*map)[key.Data()]=name.Data(); } } while ( xml->NextNode() ); xml->Parent(); } else if ( xml_name == XML_LCO_ENABLELOGGING ) SetLogChatOption( elcoENABLELOGGING, xml->GetBoolChild() ); else if ( xml_name == XML_LCO_APPENDDATE ) SetLogChatOption( elcoAPPENDDATE, xml->GetBoolChild() ); else if ( xml_name == XML_LCO_APPENDHUBNAME ) SetLogChatOption( elcoAPPENDHUBNAME, xml->GetBoolChild() ); else if ( xml_name == XML_LCO_APPENDHUBHOST ) SetLogChatOption( elcoAPPENDHUBHOST, xml->GetBoolChild() ); else if ( xml_name == XML_LCO_DISABLEPUBLICCHAT ) SetLogChatOption( elcoDISABLEPUBLICCHAT, xml->GetBoolChild() ); else if ( xml_name == XML_LCO_ENABLENICKNAMEFILTER ) SetLogChatOption( elcoENABLENICKNAMEFILTER, xml->GetBoolChild() ); else if ( xml_name == XML_LCO_NICKNAMEFILTER_ENABLELOGGING ) SetLogChatOption( elcoNICKNAMEFILTER_ENABLELOGGING, xml->GetBoolChild() ); else if ( xml_name == "NICKNAMEFILTER" ) { xml_tmp = xml->Content(); if ( xml_tmp.NotEmpty() ) m_LogChatNickNameFilter << QString::fromAscii(xml_tmp.Data()); } else if ( xml_name == XML_CC_CHATTIMESTAMP ) SetChatColor( eccCHATTIMESTAMP, xml->Content().Data() ); else if ( xml_name == XML_CC_CHATLOCALNICK ) SetChatColor( eccCHATLOCALNICK, xml->Content().Data() ); else if ( xml_name == XML_CC_CHATLOCALTEXT ) SetChatColor( eccCHATLOCALTEXT, xml->Content().Data() ); else if ( xml_name == XML_CC_CHATREMOTENICK ) SetChatColor( eccCHATREMOTENICK, xml->Content().Data() ); else if ( xml_name == XML_CC_CHATREMOTETEXT ) SetChatColor( eccCHATREMOTETEXT, xml->Content().Data() ); else if ( xml_name == XML_CC_CHATSTATUSNICK ) SetChatColor( eccCHATSTATUSNICK, xml->Content().Data() ); else if ( xml_name == XML_CC_CHATSTATUSTEXT ) SetChatColor( eccCHATSTATUSTEXT, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICCHATTIMESTAMP ) SetChatColor( eccPUBLICCHATTIMESTAMP, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICCHATLOCALNICK ) SetChatColor( eccPUBLICCHATLOCALNICK, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICCHATLOCALTEXT ) SetChatColor( eccPUBLICCHATLOCALTEXT, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICCHATREMOTENICK ) SetChatColor( eccPUBLICCHATREMOTENICK, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICCHATREMOTETEXT ) SetChatColor( eccPUBLICCHATREMOTETEXT, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICCHATSTATUSNICK ) SetChatColor( eccPUBLICCHATSTATUSNICK, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICCHATSTATUSTEXT ) SetChatColor( eccPUBLICCHATSTATUSTEXT, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICPRIVATECHATNICK ) SetChatColor( eccPUBLICPRIVATECHATNICK, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICPRIVATECHATTEXT ) SetChatColor( eccPUBLICPRIVATECHATTEXT, xml->Content().Data() ); else if ( xml_name == XML_CC_CHATSAY ) SetChatColor( eccCHATSAY, xml->Content().Data() ); else if ( xml_name == XML_CC_PUBLICCHATMENICK ) SetChatColor( eccPUBLICCHATMENICK, xml->Content().Data() ); else if ( xml_name == XML_CC_OPNICK ) SetChatColor( eccOPNICK, xml->Content().Data() ); else if ( xml_name == XML_CHAT_BG_COLOR_ENABLED ) m_bChatBackgroundColorEnabled = xml->GetBoolChild(); else if ( xml_name == XML_CHAT_BG_COLOR ) m_sChatBackgroundColor = QString::fromAscii(xml->Content().Data()); else if ( xml_name == XML_USER_COMMAND_SUBMENU ) m_bUserCommandSubmenu = xml->GetBoolChild(); else if ( (xml_name == XML_USERMENUCOMMAND) && xml->FirstChild() ) { DC_UserMenuCommand * umc = new DC_UserMenuCommand(); do { xml_tmp = xml->Name(); if ( xml_tmp == XML_USERMENUCOMMAND_NAME ) umc->m_sName = QString::fromAscii(xml->Content().Data()); else if ( xml_tmp == XML_USERMENUCOMMAND_ACT ) umc->m_sCommand = QString::fromAscii(xml->Content().Data()); else if ( xml_tmp == XML_USERMENUCOMMAND_CONTEXT ) umc->m_nContext = xml->Content().asINT(); else if ( xml_tmp == XML_USERMENUCOMMAND_TYPE ) umc->m_nType = xml->Content().asINT(); else if ( xml_tmp == XML_USERMENUCOMMAND_HUBIP ) umc->m_sHubIP = QString::fromAscii(xml->Content().Data()); } while ( xml->NextNode() ); xml->Parent(); if ( umc->m_nType == -1 ) { umc->m_nType = euctRaw; } m_UserMenuCommands.insert( m_UserMenuCommands.size(), umc ); } else if ( xml_name == XML_SHELL_COMMAND_THREADS ) m_bThreadsForShellCommands = xml->GetBoolChild(); else if ( xml_name == XML_SHELL_COMMAND_TIMEOUT ) m_nShellCommandTimeout = xml->Content().asINT(); else if ( (xml_name == XML_USERCHATCOMMAND) && xml->FirstChild() ) { DC_UserChatCommand * ucc = new DC_UserChatCommand(); do { xml_tmp = xml->Name(); if ( xml_tmp == XML_USERCHATCOMMAND_NAME ) ucc->m_sName = QString::fromAscii(xml->Content().Data()); else if ( xml_tmp == XML_USERCHATCOMMAND_ACT ) ucc->m_sCommand = QString::fromAscii(xml->Content().Data()); } while ( xml->NextNode() ); xml->Parent(); if ( ucc->m_sName.isEmpty() || ucc->m_sCommand.isEmpty() ) delete ucc; else m_lUserChatCommands.append( ucc ); } else if ( xml_name == XML_AUTORESPONSE_ENABLED ) SetAutoResponderEnabled( xml->GetBoolChild() ); else if ( xml_name == XML_AUTORESPONSE_ENABLED_PM ) SetAutoResponderEnabledForPM( xml->GetBoolChild() ); else if ( (xml_name == XML_AUTORESPONSE) && xml->FirstChild() ) { DC_AutoResponseObject * aro = new DC_AutoResponseObject(); do { xml_tmp = xml->Name(); if ( xml_tmp == XML_AUTORESPONSE_TRIGGER ) aro->m_sTrigger = QString::fromAscii(xml->Content().Data()); else if ( xml_tmp == XML_AUTORESPONSE_RESPONSE ) aro->m_sResponse = QString::fromAscii(xml->Content().Data()); else if ( xml_tmp == XML_AUTORESPONSE_CASE_SENS ) aro->m_bCaseSensitive = xml->GetBoolChild(); } while ( xml->NextNode() ); xml->Parent(); if ( aro->m_sTrigger.isEmpty() || aro->m_sResponse.isEmpty() ) { delete aro; } else { m_lAutoResponses.append( aro ); } } else if ( xml_name == XML_AUTORESPONSE_DELAY ) SetAutoResponseDelay( xml->Content().asLONG() ); else if ( xml_name == XML_AUTORESPONSE_IGNORES ) m_sAutoResponseIgnores = xml->Content().Data(); else if ( xml_name == XML_APP_ICON_THEME ) m_sApplicationIconTheme = xml->Content().Data(); else if ( xml_name == XML_EMOTICON_THEME ) m_sEmoticonTheme = xml->Content().Data(); else if ( xml_name == XML_USER_ICON_THEME ) m_sUserListIconTheme = xml->Content().Data(); else if ( xml_name == XML_FILELIST_NAMING_SCHEME ) m_nFilelistNamingSchemeVersion = xml->Content().asINT(); else if ( xml_name == XML_QMAINWINDOW_STATE ) m_baQMainWindowState = QByteArray::fromBase64(xml->Content().Data()); else if ( xml_name == XML_FOLDERS_RIGHT_PANE ) SetFoldersInRightPane( xml->GetBoolChild() ); else if ( xml_name == XML_SIZES_IN_LEFT_PANE ) SetFolderSizesInLeftPane( xml->GetBoolChild() ); else if ( xml_name == XML_FOLDERS_RIGHT_PANE_ON_TOP ) SetFoldersInRightPaneOnTop( xml->GetBoolChild() ); else if ( xml_name == XML_OPEN_FOLDERS_RIGHT_PANE ) SetOpenFoldersInRightPane( xml->GetBoolChild() ); else if ( xml_name == XML_ADJUST_SR ) SetAdjustSearchResultHubNames( xml->GetBoolChild() ); else if ( xml_name == XML_REMOVE_PUBLIC_HUB ) SetRemovePublicHubEnabled( xml->GetBoolChild() ); else if ( xml_name == XML_TAB_COMPLETE_MODE ) SetTabCompleteMatchMode( xml->Content().asINT() ); else if ( xml_name == XML_TAB_COMPLETE_STRIP ) SetTabCompleteStripTags( xml->GetBoolChild() ); else if ( xml_name == XML_ALTERNATING_ROW_COLORS ) m_bAlternatingRowColors = xml->GetBoolChild(); } while ( xml->NextNode() ); xml->Parent(); } } while ( xml->NextNode() ); } /** */ int DCConfig::Load() { LoadHubProfile(); LoadDCLib(); return LoadDCGui(); } /** */ int DCConfig::Save() { SaveDCLib(); return SaveDCGui(); } /** */ int DCConfig::LoadDCGui() { int err = 0; CString s; CXml * xml = new CXml(); s = sConfigPath + DCGUI_CONFIG; if ( xml->ParseFile(s) && xml->DocFirstChild() ) { do { if ( (xml->Name() == XML_DCGUI_CONFIG) && xml->FirstChild() ) { ParseDCGuiConfig(xml); xml->Parent(); } } while ( xml->NextNode() ); } else { err = -1; } delete xml; if ( sTheme.isEmpty() ) { sTheme = DCGuiUtils::DetectAppStyleKey(); } // check datapath exists QDir dir( GetValknutDataPath() ); if ( !dir.exists() ) { printf("Data path specified does not exist, resetting.\n"); #if defined(Q_OS_MACX) CFURLRef pluginRef = CFBundleCopyBundleURL(CFBundleGetMainBundle()); CFStringRef macPath = CFURLCopyFileSystemPath(pluginRef, kCFURLPOSIXPathStyle); const char *pathPtr = CFStringGetCStringPtr(macPath, CFStringGetSystemEncoding()); SetValknutDataPath(pathPtr); #elif defined(WIN32) SetValknutDataPath(QApplication::applicationDirPath()); #else SetValknutDataPath(VALKNUT_DATAPATH); #endif } /* load user list icons, theme either from config file or default */ QString actualtheme = m_sUserListIconTheme; m_sUserListIconTheme += "forceload"; SetUserListIconTheme( actualtheme ); InitMimeSourceFactory(); return err; } /** */ int DCConfig::SaveDCGui() { int err=0; CString s; CXml xml; xml.NewDoc( XML_DCGUI_CONFIG ); // gui xml.StartNewChild( XML_GUI ); xml.NewNumericChild( XML_OPENCLIENTWINDOWS, m_nOpenClientWindows ); xml.NewBoolChild( XML_OPENPRIVATECHATWIN, bOpenPrivateChatWindow ); xml.NewBoolChild( XML_EMOTICONS, bEnableEmoticons ); xml.NewBoolChild( XML_TABBAR, bTabBar ); xml.NewBoolChild( XML_TOOLBAR, bToolBar ); xml.NewBoolChild( XML_STATUSBAR, bStatusBar ); xml.NewBoolChild( XML_USERLISTRIGHTALIGNMENT, bUserListRightAlignment ); xml.NewBoolChild( XML_SHOWCHATSENDBUTTON, bShowChatSendButton ); xml.NewBoolChild( XML_SHOWCHATINTAB, bShowChatInTab ); xml.NewNumericChild( XML_CHATMAXPARAGRAPH, m_nChatMaxParagraph ); xml.NewStringChild( XML_USER_PHOTO, m_sUserPhotoFileName.toAscii().constData() ); switch(m_eUnit) { case euBYTE: s = XML_UNIT_BYTE; break; case euKBYTE: s = XML_UNIT_KBYTE; break; case euMBYTE: s = XML_UNIT_MBYTE; break; case euGBYTE: s = XML_UNIT_GBYTE; break; default: s = XML_UNIT_AUTO; break; } xml.NewStringChild( XML_UNIT, s ); xml.NewStringChild( XML_THEME, sThemeQT3.toAscii().constData() ); xml.NewStringChild( XML_THEME_QT4, sTheme.toAscii().constData() ); xml.NewStringChild( XML_BACKGROUNDPIXMAP, sBackgroundPixmap.toAscii().constData() ); xml.NewStringChild( XML_BROWSER, sBrowser.toAscii().constData() ); xml.NewBoolChild( XML_CUSTOM_BROWSER, m_bCustomBrowser ); xml.NewNumericChild( XML_SENDCHATINDEX, m_nSendChat ); xml.NewStringChild( XML_LANGUAGEFILE, sLanguageFile.toAscii().constData() ); xml.NewStringChild( XML_APP_FONT, sAppFont.toAscii().constData() ); xml.NewBoolChild( XML_USE_CUSTOM_FONT, m_bUseCustomFont ); xml.NewNumericChild( XML_APP_WIDTH, iAppWidth ); xml.NewNumericChild( XML_APP_HEIGHT, iAppHeight ); xml.NewBoolChild( XML_ENABLETRAY, m_bEnableTray ); xml.NewBoolChild( XML_QUERYONEXIT, bQueryOnExit ); xml.NewBoolChild( XML_QUERYONFILEDELETE, bQueryOnFileDelete ); xml.NewStringChild( XML_QMAINWINDOW_STATE, m_baQMainWindowState.toBase64().constData() ); xml.NewBoolChild( XML_FOLDERS_RIGHT_PANE, m_bFoldersInRightPane ); xml.NewBoolChild( XML_SIZES_IN_LEFT_PANE, m_bFolderSizesInLeftPane ); xml.NewBoolChild( XML_FOLDERS_RIGHT_PANE_ON_TOP, m_bFoldersInRightPaneOnTop ); xml.NewBoolChild( XML_OPEN_FOLDERS_RIGHT_PANE, m_bOpenFoldersInRightPane ); xml.NewBoolChild( XML_ADJUST_SR, m_bAdjustSearchResultHubNames ); xml.NewBoolChild( XML_REMOVE_PUBLIC_HUB, m_bRemovePublicHubEnabled ); xml.NewNumericChild( XML_TAB_COMPLETE_MODE, m_nTabCompleteMatchMode ); xml.NewBoolChild( XML_TAB_COMPLETE_STRIP, m_bTabCompleteStripTags ); xml.NewBoolChild( XML_ALTERNATING_ROW_COLORS, m_bAlternatingRowColors ); // sound settings xml.NewStringChild( XML_SOUND_FILE_CONNECT, sSoundFileConnect.toAscii().constData() ); xml.NewStringChild( XML_SOUND_FILE_DISCONNECT, sSoundFileDisconnect.toAscii().constData() ); xml.NewStringChild( XML_SOUND_FILE_SEND, sSoundFileSend.toAscii().constData() ); xml.NewStringChild( XML_SOUND_FILE_RECEIVE, sSoundFileReceive.toAscii().constData() ); xml.NewStringChild( XML_SOUND_FILE_FIRSTRECEIVE, sSoundFileFirstReceive.toAscii().constData() ); xml.NewStringChild( XML_SOUND_FILE_NICK_MENTIONED, sSoundFileNickMentioned.toAscii().constData() ); xml.NewStringChild( XML_EXTERNAL_PLAYER, sExternalPlayer.toAscii().constData() ); xml.NewBoolChild( XML_SOUND_ENABLED_CONNECT, bSoundEnabledConnect ); xml.NewBoolChild( XML_SOUND_ENABLED_DISCONNECT, bSoundEnabledDisconnect ); xml.NewBoolChild( XML_SOUND_ENABLED_SEND, bSoundEnabledSend ); xml.NewBoolChild( XML_SOUND_ENABLED_RECEIVE, bSoundEnabledReceive ); xml.NewBoolChild( XML_SOUND_ENABLED_FIRSTRECEIVE, bSoundEnabledFirstReceive ); xml.NewBoolChild( XML_SOUND_ENABLED_NICK_MENTIONED, bSoundEnabledNickMentioned ); xml.NewBoolChild( XML_EXTERNAL_SOUND_PLAYER, bExternalSoundPlayer ); xml.NewBoolChild( XML_SOUND_DISABLED, bSoundDisabled ); xml.NewBoolChild( XML_SOUND_DISABLED_AWAY, bSoundDisabledAway ); // log settings xml.NewBoolChild( XML_TIMESTAMP_PRIVATECHAT, bTimeStampPrivateChat ); xml.NewBoolChild( XML_TIMESTAMP_HUBCHAT, bTimeStampHubChat ); xml.NewBoolChild( XML_SHOW_STATUS_MESSAGE, bShowStatusMessage ); xml.NewBoolChild( XML_LCO_ENABLELOGGING, GetLogChatOption( elcoENABLELOGGING ) ); xml.NewBoolChild( XML_LCO_APPENDDATE, GetLogChatOption( elcoAPPENDDATE ) ); xml.NewBoolChild( XML_LCO_APPENDHUBNAME, GetLogChatOption( elcoAPPENDHUBNAME ) ); xml.NewBoolChild( XML_LCO_APPENDHUBHOST, GetLogChatOption( elcoAPPENDHUBHOST ) ); xml.NewBoolChild( XML_LCO_DISABLEPUBLICCHAT, GetLogChatOption( elcoDISABLEPUBLICCHAT ) ); xml.NewBoolChild( XML_LCO_ENABLENICKNAMEFILTER, GetLogChatOption( elcoENABLENICKNAMEFILTER ) ); xml.NewBoolChild( XML_LCO_NICKNAMEFILTER_ENABLELOGGING, GetLogChatOption( elcoNICKNAMEFILTER_ENABLELOGGING ) ); for ( QStringList::const_iterator slit = m_LogChatNickNameFilter.constBegin(); slit != m_LogChatNickNameFilter.constEnd(); ++slit ) { xml.NewStringChild( "NICKNAMEFILTER", (*slit).toAscii().constData() ); } // valknut data path xml.NewStringChild( XML_VALKNUT_DATA_PATH, m_sValknutDataPath.toAscii().constData() ); xml.NewStringChild( XML_CC_CHATTIMESTAMP, GetChatColor(eccCHATTIMESTAMP).toAscii().constData() ); xml.NewStringChild( XML_CC_CHATLOCALNICK, GetChatColor(eccCHATLOCALNICK).toAscii().constData() ); xml.NewStringChild( XML_CC_CHATLOCALTEXT, GetChatColor(eccCHATLOCALTEXT).toAscii().constData() ); xml.NewStringChild( XML_CC_CHATREMOTENICK, GetChatColor(eccCHATREMOTENICK).toAscii().constData() ); xml.NewStringChild( XML_CC_CHATREMOTETEXT, GetChatColor(eccCHATREMOTETEXT).toAscii().constData() ); xml.NewStringChild( XML_CC_CHATSTATUSNICK, GetChatColor(eccCHATSTATUSNICK).toAscii().constData() ); xml.NewStringChild( XML_CC_CHATSTATUSTEXT, GetChatColor(eccCHATSTATUSTEXT).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICCHATTIMESTAMP, GetChatColor(eccPUBLICCHATTIMESTAMP).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICCHATLOCALNICK, GetChatColor(eccPUBLICCHATLOCALNICK).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICCHATLOCALTEXT, GetChatColor(eccPUBLICCHATLOCALTEXT).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICCHATREMOTENICK, GetChatColor(eccPUBLICCHATREMOTENICK).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICCHATREMOTETEXT, GetChatColor(eccPUBLICCHATREMOTETEXT).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICCHATSTATUSNICK, GetChatColor(eccPUBLICCHATSTATUSNICK).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICCHATSTATUSTEXT, GetChatColor(eccPUBLICCHATSTATUSTEXT).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICPRIVATECHATNICK, GetChatColor(eccPUBLICPRIVATECHATNICK).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICPRIVATECHATTEXT, GetChatColor(eccPUBLICPRIVATECHATTEXT).toAscii().constData() ); xml.NewStringChild( XML_CC_CHATSAY, GetChatColor(eccCHATSAY).toAscii().constData() ); xml.NewStringChild( XML_CC_PUBLICCHATMENICK, GetChatColor(eccPUBLICCHATMENICK).toAscii().constData() ); xml.NewStringChild( XML_CC_OPNICK, GetChatColor(eccOPNICK).toAscii().constData() ); xml.NewBoolChild( XML_CHAT_BG_COLOR_ENABLED, m_bChatBackgroundColorEnabled ); xml.NewStringChild( XML_CHAT_BG_COLOR, m_sChatBackgroundColor.toAscii().constData() ); // transfer view settings xml.NewBoolChild( XML_TV_CHUNKPERCENT, bTVChunkPercent ); xml.NewBoolChild( XML_TV_FILEPERCENT, bTVFilePercent ); xml.NewBoolChild( XML_TV_CHUNKSIZE, bTVChunkSize ); xml.NewBoolChild( XML_TV_FILESIZE, bTVFileSize ); xml.NewBoolChild( XML_TV_DOWNLOADRATESINGLE, bTVDownloadRateSingle ); xml.NewBoolChild( XML_TV_ELAPSEDTIMESINGLE, bTVElapsedTimeSingle ); xml.NewBoolChild( XML_TV_DOWNLOADRATEMULTI, bTVDownloadRateMulti ); xml.NewBoolChild( XML_TV_ELAPSEDTIMEMULTI, bTVElapsedTimeMulti ); xml.NewBoolChild( XML_SHOW_TRANSFER_WIN, bShowTransferWin ); xml.NewNumericChild( XML_FLOODCOUNT, iFloodCount ); xml.NewBoolChild( XML_FLOODOPKICK, m_bFloodOpKick ); xml.NewBoolChild( XML_SEND_HIDE_PRIVATE_CHAT_TO_PUBLIC_CHAT, bSendHidePrivateChatToPublicChat ); xml.NewNumericChild( XML_CHAT_MESSAGE_MAX_LINES, iChatMessageMaxLines ); xml.NewNumericChild( XML_DEFAULTDOWNLOADMODE, iDefaultDownloadMode ); xml.NewBoolChild( XML_AUTO_AWAY_MODE, m_bAutoAwayMode ); xml.NewNumericChild( XML_AUTO_AWAY_TIME, m_nAutoAwayTime ); xml.NewBoolChild( XML_CHAT_SHOW_JOINS_AND_PARTS, m_bChatShowJoinsAndParts ); xml.NewBoolChild( XML_CHAT_SHOW_JOINS_AND_PARTS_ONLY_FAV, m_bChatShowJoinsAndPartsOnlyFav ); xml.NewStringChild( XML_CHAT_SUPPRESSED_NICKS, m_sSuppressedNicks.toAscii().constData() ); xml.NewBoolChild( XML_SEND_UNKNOWN_COMMANDS, m_bSendUnknownCommandsAsChat ); xml.NewStringChild( XML_ALLOWED_UNKNOWN_COMMANDS, m_sAllowedUnknownCommands.toAscii().constData() ); xml.NewNumericChild( XML_DOUBLE_CLICK_ACTION, m_nDoubleClickAction ); xml.NewNumericChild( XML_MAGNET_ACTION_CHAT, m_eMagnetActionChat ); xml.NewBoolChild( XML_USER_COMMAND_SUBMENU, m_bUserCommandSubmenu ); // user menu commands DC_UserMenuCommand * umc = 0; for ( QMap::const_iterator umcit = m_UserMenuCommands.constBegin(); umcit != m_UserMenuCommands.constEnd(); ++umcit ) { umc = umcit.value(); xml.StartNewChild( XML_USERMENUCOMMAND ); xml.NewStringChild( XML_USERMENUCOMMAND_NAME, umc->m_sName.toAscii().constData() ); xml.NewStringChild( XML_USERMENUCOMMAND_ACT, umc->m_sCommand.toAscii().constData() ); xml.NewNumericChild( XML_USERMENUCOMMAND_CONTEXT, umc->m_nContext ); xml.NewNumericChild( XML_USERMENUCOMMAND_TYPE, umc->m_nType ); xml.NewStringChild( XML_USERMENUCOMMAND_HUBIP, umc->m_sHubIP.toAscii().constData() ); xml.NewNumericChild( XML_USERMENUCOMMAND_POSITION, umcit.key() ); /* ignored, position in file is used */ xml.Parent(); } // shell command settings xml.NewBoolChild( XML_SHELL_COMMAND_THREADS, m_bThreadsForShellCommands ); xml.NewNumericChild( XML_SHELL_COMMAND_TIMEOUT, m_nShellCommandTimeout ); // user chat commands for ( QList::const_iterator uccit = m_lUserChatCommands.constBegin(); uccit != m_lUserChatCommands.constEnd(); ++uccit ) { xml.StartNewChild( XML_USERCHATCOMMAND ); xml.NewStringChild( XML_USERCHATCOMMAND_NAME, (*uccit)->m_sName.toAscii().constData() ); xml.NewStringChild( XML_USERCHATCOMMAND_ACT, (*uccit)->m_sCommand.toAscii().constData() ); xml.Parent(); } // icon themes xml.NewStringChild( XML_APP_ICON_THEME, GetApplicationIconTheme().toAscii().constData() ); xml.NewStringChild( XML_EMOTICON_THEME, GetEmoticonTheme().toAscii().constData() ); xml.NewStringChild( XML_USER_ICON_THEME, GetUserListIconTheme().toAscii().constData() ); // filelist naming scheme version xml.NewNumericChild( XML_FILELIST_NAMING_SCHEME, GetFilelistNamingSchemeVersion() ); // auto responses xml.NewBoolChild( XML_AUTORESPONSE_ENABLED, GetAutoResponderEnabled() ); xml.NewBoolChild( XML_AUTORESPONSE_ENABLED_PM, GetAutoResponderEnabledForPM() ); for ( QList::const_iterator arit = m_lAutoResponses.constBegin(); arit != m_lAutoResponses.constEnd(); ++arit ) { xml.StartNewChild( XML_AUTORESPONSE ); xml.NewStringChild( XML_AUTORESPONSE_TRIGGER, (*arit)->m_sTrigger.toAscii().constData() ); xml.NewStringChild( XML_AUTORESPONSE_RESPONSE, (*arit)->m_sResponse.toAscii().constData() ); xml.NewBoolChild( XML_AUTORESPONSE_CASE_SENS, (*arit)->m_bCaseSensitive ); xml.Parent(); } xml.NewNumericChild( XML_AUTORESPONSE_DELAY, GetAutoResponseDelay() ); xml.NewStringChild( XML_AUTORESPONSE_IGNORES, GetAutoResponseIgnores().toAscii().constData() ); // save map settings SettingMap::Iterator it; StringMap::Iterator it1; for(it=m_guiSettingMap.begin();it!=m_guiSettingMap.end();++it) { xml.StartNewChild("MAP"); xml.NewStringChild( "KEY", it.key().toAscii().constData() ); for(it1=it.value()->begin();it1!=it.value()->end();++it1) { xml.StartNewChild( XML_ENTRY ); xml.NewStringChild( "KEY", it1.key().toAscii().constData() ); xml.NewStringChild( "NAME", it1.value().toAscii().constData() ); xml.Parent(); } xml.Parent(); } // save file s = sConfigPath + DCGUI_CONFIG; if ( xml.SaveConfigXmlViaTemp(s) == -1 ) { err = -1; } return err; } /** */ int DCConfig::LoadDCHubFilter( QMap * map ) { CString s, xml_name; CXml xml; DC_HubFilterObject * HubFilterObject; s = sConfigPath + DCGUI_HUBFILTER; if ( xml.ParseFile(s) && xml.DocFirstChild() ) { do { if ( (xml.Name() == XML_DCGUI_HUBFILTER) && xml.FirstChild() ) { do { if ( (xml.Name() == XML_FILTER) && xml.FirstChild() ) { HubFilterObject = new DC_HubFilterObject(); do { xml_name = xml.Name(); if ( xml_name == XML_FILTERNAME ) HubFilterObject->m_sFilterName = QString::fromAscii(xml.Content().Data()); else if ( xml_name == XML_CONTAINS ) HubFilterObject->m_sContains = QString::fromAscii(xml.Content().Data()); else if ( xml_name == XML_USER ) HubFilterObject->m_nUser = xml.Content().asUINT(); else if ( xml_name == XML_NAME ) HubFilterObject->m_bName = xml.GetBoolChild(); else if ( xml_name == XML_SERVER ) HubFilterObject->m_bServer = xml.GetBoolChild(); else if ( xml_name == XML_DESCRIPTION ) HubFilterObject->m_bDescription = xml.GetBoolChild(); } while ( xml.NextNode() ); xml.Parent(); if ( HubFilterObject->m_sFilterName.isEmpty() ) { delete HubFilterObject; } else { if ( map->contains(HubFilterObject->m_sFilterName) ) { delete HubFilterObject; } else { map->insert( HubFilterObject->m_sFilterName, HubFilterObject ); } } } } while ( xml.NextNode() ); xml.Parent(); } } while ( xml.NextNode() ); } return 0; } /** */ int DCConfig::SaveDCHubFilter( QMap * map ) { int err=0; CString s; DC_HubFilterObject * HubFilterObject; CXml xml; xml.NewDoc( XML_DCGUI_HUBFILTER ); for ( QMap::const_iterator it = map->constBegin(); it != map->constEnd(); ++it ) { HubFilterObject = it.value(); xml.StartNewChild( XML_FILTER ); xml.NewStringChild( XML_FILTERNAME, HubFilterObject->m_sFilterName.toAscii().constData() ); xml.NewStringChild( XML_CONTAINS, HubFilterObject->m_sContains.toAscii().constData() ); xml.NewNumericChild( XML_USER, HubFilterObject->m_nUser ); xml.NewBoolChild( XML_NAME, HubFilterObject->m_bName ); xml.NewBoolChild( XML_SERVER, HubFilterObject->m_bServer ); xml.NewBoolChild( XML_DESCRIPTION, HubFilterObject->m_bDescription ); xml.Parent(); } // save file s = sConfigPath + DCGUI_HUBFILTER; if ( xml.SaveConfigXmlViaTemp(s) == -1 ) { err = -1; } return err; } /** */ int DCConfig::LoadDCFriendList( FriendMap * map ) { CString s, xml_name; CXml xml; DCFriendObject * FriendObject; s = sConfigPath + DCGUI_FRIENDLIST; if ( xml.ParseFile(s) && xml.DocFirstChild() ) { do { if ( (xml.Name() == XML_DCGUI_FRIENDLIST) && xml.FirstChild() ) { do { if ( (xml.Name() == XML_FRIEND) && xml.FirstChild() ) { FriendObject = new DCFriendObject(); do { xml_name = xml.Name(); if ( xml_name == XML_NAME ) FriendObject->m_sName = QString::fromAscii(xml.Content().Data()); else if ( xml_name == XML_DESCRIPTION ) FriendObject->m_sDescription = QString::fromAscii(xml.Content().Data()); else if ( xml_name == XML_HUBNAME ) FriendObject->m_sHubName = QString::fromAscii(xml.Content().Data()); else if ( xml_name == XML_HUBHOST ) FriendObject->m_sHubHost = QString::fromAscii(xml.Content().Data()); else if ( xml_name == XML_IMAGE ) FriendObject->m_sImageFileName = QString::fromAscii(xml.Content().Data()); else if ( xml_name == XML_SEND_IMAGE ) FriendObject->m_bSendImage = xml.GetBoolChild(); else if ( xml_name == XML_AUTO_SEC ) FriendObject->m_bAutoSec = xml.GetBoolChild(); else if ( xml_name == XML_PERM_SLOT ) FriendObject->m_bPermSlot = xml.GetBoolChild(); else if ( xml_name == XML_IGNORE ) FriendObject->m_bIgnore = xml.GetBoolChild(); } while ( xml.NextNode() ); xml.Parent(); if ( FriendObject->m_sName.isEmpty() ) delete FriendObject; else map->insert( FriendObject->m_sName, FriendObject ); } } while ( xml.NextNode() ); xml.Parent(); } } while ( xml.NextNode() ); } return 0; } /** */ int DCConfig::SaveDCFriendList( FriendMap * map ) { int err=0; CString s; DCFriendObject * FriendObject; CXml xml; xml.NewDoc( XML_DCGUI_FRIENDLIST ); for ( FriendMap::const_iterator it = map->constBegin(); it != map->constEnd(); ++it ) { FriendObject = it.value(); xml.StartNewChild( XML_FRIEND ); xml.NewStringChild( XML_NAME, FriendObject->m_sName.toAscii().constData() ); xml.NewStringChild( XML_DESCRIPTION, FriendObject->m_sDescription.toAscii().constData() ); xml.NewStringChild( XML_HUBNAME, FriendObject->m_sHubName.toAscii().constData() ); xml.NewStringChild( XML_HUBHOST, FriendObject->m_sHubHost.toAscii().constData() ); xml.NewStringChild( XML_IMAGE, FriendObject->m_sImageFileName.toAscii().constData() ); xml.NewBoolChild( XML_SEND_IMAGE, FriendObject->m_bSendImage ); xml.NewBoolChild( XML_AUTO_SEC, FriendObject->m_bAutoSec ); xml.NewBoolChild( XML_PERM_SLOT, FriendObject->m_bPermSlot ); xml.NewBoolChild( XML_IGNORE, FriendObject->m_bIgnore ); xml.Parent(); } // save file s = sConfigPath + DCGUI_FRIENDLIST; if ( xml.SaveConfigXmlViaTemp(s) == -1 ) { err = -1; } return err; } /** */ QPixmap * DCConfig::GetUserIcon( CMessageMyInfo * myinfo ) { int x,y; y = 0; if ( myinfo->m_bFireballFlag ) { x = 7; } else if ( myinfo->m_bServerFlag ) { x = 6; } else { switch( myinfo->m_eUserSpeed ) { case eusMODEM: case eus288KBPS: case eus336KBPS: case eus56KBPS: case eus0005: case eus001: case eus002: case eus005: x = 0; break; case eusISDN: case eus01: x = 1; break; case eusSATELLITE: x = 2; break; case eusDSL: case eus05: case eus1: x = 3; break; case eusCABLE: case eus02: x = 4; break; case eusLANT1: case eusLANT3: case eus2: case eus5: case eus10: case eus20: case eus50: case eus100: x = 5; break; case eus1000: x = 6; break; default: x = 8; break; } } if ( myinfo->m_eAwayMode == euamAWAY ) { y += 1; } if ( myinfo->m_bTLSFlag ) { y += 2; } if ( myinfo->m_eClientVersion == eucvDCGUI ) { y += 4; } if ( myinfo->m_bOperator ) { y += 8; } if ( myinfo->m_eClientMode == ecmPASSIVE ) { y += 16; } if ( m_UserIconCache[x][y] == 0 ) { m_UserIconCache[x][y] = new QPixmap( QPixmap::fromImage( m_UserIcons.copy( x * USERLIST_ICON_SIZE, y * USERLIST_ICON_SIZE, USERLIST_ICON_SIZE, USERLIST_ICON_SIZE ) ) ); } return m_UserIconCache[x][y]; } /** */ QString DCConfig::GetSoundFile( eUserSound usersound ) { QString s; switch (usersound) { case eusCONNECT: s = sSoundFileConnect; break; case eusDISCONNECT: s = sSoundFileDisconnect; break; case eusSEND: s = sSoundFileSend; break; case eusRECEIVE: s = sSoundFileReceive; break; case eusFIRSTRECEIVE: s = sSoundFileFirstReceive; break; case eusNICKMENTIONED: s = sSoundFileNickMentioned; break; default: break; } return s; } /** */ void DCConfig::SetSoundFile( eUserSound usersound, QString soundfile ) { switch (usersound) { case eusCONNECT: sSoundFileConnect = soundfile; break; case eusDISCONNECT: sSoundFileDisconnect = soundfile; break; case eusSEND: sSoundFileSend = soundfile; break; case eusRECEIVE: sSoundFileReceive = soundfile; break; case eusFIRSTRECEIVE: sSoundFileFirstReceive = soundfile; break; case eusNICKMENTIONED: sSoundFileNickMentioned = soundfile; break; default: break; } } /** */ bool DCConfig::GetSoundEnabled( eUserSound usersound ) { bool b; switch (usersound) { case eusCONNECT: b = bSoundEnabledConnect; break; case eusDISCONNECT: b = bSoundEnabledDisconnect; break; case eusSEND: b = bSoundEnabledSend; break; case eusRECEIVE: b = bSoundEnabledReceive; break; case eusFIRSTRECEIVE: b = bSoundEnabledFirstReceive; break; case eusNICKMENTIONED: b = bSoundEnabledNickMentioned; break; default: b = false; break; } return b; } /** */ void DCConfig::SetSoundEnabled( eUserSound usersound, bool enabled ) { switch (usersound) { case eusCONNECT: bSoundEnabledConnect = enabled; break; case eusDISCONNECT: bSoundEnabledDisconnect = enabled; break; case eusSEND: bSoundEnabledSend = enabled; break; case eusRECEIVE: bSoundEnabledReceive = enabled; break; case eusFIRSTRECEIVE: bSoundEnabledFirstReceive = enabled; break; case eusNICKMENTIONED: bSoundEnabledNickMentioned = enabled; break; default: break; } } /** */ void DCConfig::PlaySound( eUserSound usersound ) { QString s; if ( bSoundDisabled ) { return; } if ( (GetAwayMode() == euamAWAY) && bSoundDisabledAway ) { return; } switch(usersound) { case eusCONNECT: if ( bSoundEnabledConnect ) s = sSoundFileConnect; break; case eusDISCONNECT: if ( bSoundEnabledDisconnect ) s = sSoundFileDisconnect; break; case eusSEND: if ( bSoundEnabledSend ) s = sSoundFileSend; break; case eusRECEIVE: if ( bSoundEnabledReceive ) s = sSoundFileReceive; break; case eusFIRSTRECEIVE: if ( bSoundEnabledFirstReceive ) s = sSoundFileFirstReceive; break; case eusNICKMENTIONED: if ( bSoundEnabledNickMentioned ) s = sSoundFileNickMentioned; break; default: break; } PlaySound(s); } /** */ void DCConfig::PlaySound( QString file ) { if ( file.isEmpty() ) { return; } if ( bExternalSoundPlayer == false ) { QSound::play(file); } else { if ( pProcess->state() != QProcess::NotRunning ) { pProcess->kill(); } pProcess->start( sExternalPlayer + " " + file ); } } /** */ void DCConfig::SetTimeStamp( eTimeStamp timestamp, bool enabled ) { switch(timestamp) { case etsPRIVATECHAT: bTimeStampPrivateChat = enabled; break; case etsHUBCHAT: bTimeStampHubChat = enabled; break; default: break; } } /** */ bool DCConfig::GetTimeStamp( eTimeStamp timestamp ) { bool res; switch(timestamp) { case etsPRIVATECHAT : res = bTimeStampPrivateChat; break; case etsHUBCHAT: res = bTimeStampHubChat; break; default: res = false; break; } return res; } /** */ bool DCConfig::GetTransferViewOptions( eTransferViewOptions e ) const { switch(e) { case etvoCHUNKPERCENT: return bTVChunkPercent; break; case etvoFILEPERCENT: return bTVFilePercent; break; case etvoCHUNKSIZE: return bTVChunkSize; break; case etvoFILESIZE: return bTVFileSize; break; case etvoDOWNLOADRATESINGLE: return bTVDownloadRateSingle; break; case etvoELAPSEDTIMESINGLE: return bTVElapsedTimeSingle; break; case etvoDOWNLOADRATEMULTI: return bTVDownloadRateMulti; break; case etvoELAPSEDTIMEMULTI: return bTVElapsedTimeMulti; break; default: return false; break; } } /** */ void DCConfig::SetTransferViewOptions( eTransferViewOptions e, bool b ) { switch(e) { case etvoCHUNKPERCENT: bTVChunkPercent = b; break; case etvoFILEPERCENT: bTVFilePercent = b; break; case etvoCHUNKSIZE: bTVChunkSize = b; break; case etvoFILESIZE: bTVFileSize = b; break; case etvoDOWNLOADRATESINGLE: bTVDownloadRateSingle = b; break; case etvoELAPSEDTIMESINGLE: bTVElapsedTimeSingle = b; break; case etvoDOWNLOADRATEMULTI: bTVDownloadRateMulti = b; break; case etvoELAPSEDTIMEMULTI: bTVElapsedTimeMulti = b; break; default: break; } } /** */ bool DCConfig::InitMimeSourceFactory() { DC_EmoticonObject * EmoticonObject; CString s,imagename; CXml xml; int id = 0; bool res = false; QList * newemotes = new QList(); // load emoticons // first we check if a local icon present s = GetConfigPath()+DIRSEPARATOR; if ( !(xml.ParseFile(s+"emoticons.xml") && xml.DocFirstChild()) ) { // get global icons s = GetValknutDataPath().toAscii().constData(); s += DIRSEPARATOR; s += "icons"; s += DIRSEPARATOR; s += "emot"; s += DIRSEPARATOR; s += GetEmoticonTheme().toAscii().constData(); s += DIRSEPARATOR; if ( !(xml.ParseFile(s+"emoticons.xml") && xml.DocFirstChild()) ) { delete newemotes; return res; } } // parse the list do { if ( (xml.Name() == "emoticons") && xml.FirstChild() ) { do { if ( xml.Name() == "emoticon" ) { EmoticonObject = new DC_EmoticonObject(); EmoticonObject->m_Text = QString::fromAscii(xml.Prop("text").Data()); if ( xml.FirstChild() ) { do { if ( xml.Name() == "source" ) { EmoticonObject->left = xml.Prop("left").asINT(); EmoticonObject->top = xml.Prop("top").asINT(); EmoticonObject->right = xml.Prop("right").asINT(); EmoticonObject->bottom = xml.Prop("bottom").asINT(); imagename = xml.Prop("name"); } } while ( xml.NextNode() ); xml.Parent(); } if ( !(EmoticonObject->m_Text.isEmpty()) ) { EmoticonObject->m_nID = id; ++id; newemotes->append(EmoticonObject); // printf("%s\n",EmoticonObject->m_Text.toAscii().constData()); } else { delete EmoticonObject; } } } while ( xml.NextNode() ); xml.Parent(); } } while ( xml.NextNode() ); if ( m_EmoticonImage.load((s+imagename).Data()) || m_EmoticonImage.load((s+imagename+".png").Data()) || m_EmoticonImage.load((s+imagename+".xpm").Data()) ) { res = true; } else { for ( QList::const_iterator it = newemotes->constBegin(); it != newemotes->constEnd(); ++it ) { delete *it; } newemotes->clear(); delete newemotes; } if ( res ) { if ( m_pEmoticons ) { QList * oldemotes = m_pEmoticons; m_pEmoticons = newemotes; for ( QList::const_iterator it = oldemotes->constBegin(); it != oldemotes->constEnd(); ++it ) { delete *it; } oldemotes->clear(); delete oldemotes; } else { m_pEmoticons = newemotes; } emit emoticonThemeChanged(); } return res; } /** */ QList * DCConfig::EmoticonList() { return m_pEmoticons; } /** */ QImage & DCConfig::GetEmoticonImage() { return m_EmoticonImage; } /** */ bool DCConfig::AddEmoticons( QTextDocument * document ) { bool res = false; DC_EmoticonObject * EmoticonObject = 0; if ( m_pEmoticons ) { for ( QList::const_iterator it = m_pEmoticons->constBegin(); it != m_pEmoticons->constEnd(); ++it ) { EmoticonObject = *it; document->addResource( QTextDocument::ImageResource, QUrl(GetEmoticonTheme() + QString("/emoticon") + QString().setNum(EmoticonObject->m_nID)), m_EmoticonImage.copy( EmoticonObject->left, EmoticonObject->top, EmoticonObject->right-EmoticonObject->left, EmoticonObject->bottom-EmoticonObject->top ) ); } res = true; } return res; } /** */ bool DCConfig::GetMap( QString name, StringMap *& map ) { bool res = true; if ( m_guiSettingMap.find(name) == m_guiSettingMap.end() ) { m_guiSettingMap[name] = new StringMap(); res = false; } map = m_guiSettingMap[name]; return res; } /** */ QString DCConfig::GetChatColor( eChatColor type ) const { switch (type) { case eccCHATTIMESTAMP: return m_sChatColor_1; case eccCHATLOCALNICK: return m_sChatColor_2; case eccCHATLOCALTEXT: return m_sChatColor_3; case eccCHATREMOTENICK: return m_sChatColor_4; case eccCHATREMOTETEXT: return m_sChatColor_5; case eccCHATSTATUSNICK: return m_sChatColor_6; case eccCHATSTATUSTEXT: return m_sChatColor_7; case eccPUBLICCHATTIMESTAMP: return m_sChatColor_8; case eccPUBLICCHATLOCALNICK: return m_sChatColor_9; case eccPUBLICCHATLOCALTEXT: return m_sChatColor_10; case eccPUBLICCHATREMOTENICK: return m_sChatColor_11; case eccPUBLICCHATREMOTETEXT: return m_sChatColor_12; case eccPUBLICCHATSTATUSNICK: return m_sChatColor_13; case eccPUBLICCHATSTATUSTEXT: return m_sChatColor_14; case eccPUBLICPRIVATECHATNICK: return m_sChatColor_15; case eccPUBLICPRIVATECHATTEXT: return m_sChatColor_16; case eccCHATSAY: return m_sChatColor_17; case eccPUBLICCHATMENICK: return m_sChatColor_18; case eccOPNICK: return m_sChatColor_19; default: break; } return QString(); } /** */ void DCConfig::SetChatColor( eChatColor type, QString s ) { switch (type) { case eccCHATTIMESTAMP: m_sChatColor_1 = s; break; case eccCHATLOCALNICK: m_sChatColor_2 = s; break; case eccCHATLOCALTEXT: m_sChatColor_3 = s; break; case eccCHATREMOTENICK: m_sChatColor_4 = s; break; case eccCHATREMOTETEXT: m_sChatColor_5 = s; break; case eccCHATSTATUSNICK: m_sChatColor_6 = s; break; case eccCHATSTATUSTEXT: m_sChatColor_7 = s; break; case eccPUBLICCHATTIMESTAMP: m_sChatColor_8 = s; break; case eccPUBLICCHATLOCALNICK: m_sChatColor_9 = s; break; case eccPUBLICCHATLOCALTEXT: m_sChatColor_10 = s; break; case eccPUBLICCHATREMOTENICK: m_sChatColor_11 = s; break; case eccPUBLICCHATREMOTETEXT: m_sChatColor_12 = s; break; case eccPUBLICCHATSTATUSNICK: m_sChatColor_13 = s; break; case eccPUBLICCHATSTATUSTEXT: m_sChatColor_14 = s; break; case eccPUBLICPRIVATECHATNICK: m_sChatColor_15 = s; break; case eccPUBLICPRIVATECHATTEXT: m_sChatColor_16 = s; break; case eccCHATSAY: m_sChatColor_17 = s; break; case eccPUBLICCHATMENICK: m_sChatColor_18 = s; break; case eccOPNICK: m_sChatColor_19 = s; break; default: break; } } /** */ void DCConfig::SetLogChatOption( eLogChatOptions elco, bool enabled ) { switch(elco) { case elcoENABLELOGGING: m_bLogChatOption_1 = enabled; break; case elcoAPPENDDATE: m_bLogChatOption_2 = enabled; break; case elcoAPPENDHUBNAME: m_bLogChatOption_3 = enabled; break; case elcoDISABLEPUBLICCHAT: m_bLogChatOption_4 = enabled; break; case elcoENABLENICKNAMEFILTER: m_bLogChatOption_5 = enabled; break; case elcoNICKNAMEFILTER_ENABLELOGGING: m_bLogChatOption_6 = enabled; break; case elcoAPPENDHUBHOST: m_bLogChatOption_7 = enabled; break; default: break; } } /** */ bool DCConfig::GetLogChatOption( eLogChatOptions elco ) { switch(elco) { case elcoENABLELOGGING: return m_bLogChatOption_1; break; case elcoAPPENDDATE: return m_bLogChatOption_2; break; case elcoAPPENDHUBNAME: return m_bLogChatOption_3; break; case elcoDISABLEPUBLICCHAT: return m_bLogChatOption_4; break; case elcoENABLENICKNAMEFILTER: return m_bLogChatOption_5; break; case elcoNICKNAMEFILTER_ENABLELOGGING: return m_bLogChatOption_6; break; case elcoAPPENDHUBHOST: return m_bLogChatOption_7; break; default: break; } return false; } /** */ void DCConfig::SetLogChatNickNameFilter( QStringList list ) { /* due to QT's implicit sharing this is OK */ m_LogChatNickNameFilter = list; } /** */ QStringList DCConfig::GetLogChatNickNameFilter() { /* due to QT's implicit sharing this is OK */ return m_LogChatNickNameFilter; } /** */ bool DCConfig::CheckLogChatNickNameFilter( QString nick ) { if ( GetLogChatOption(elcoENABLENICKNAMEFILTER) == false ) { return true; } if ( m_LogChatNickNameFilter.contains(nick) ) { if ( GetLogChatOption(elcoNICKNAMEFILTER_ENABLELOGGING) ) { return true; } else { return false; } } // nick not found if ( !GetLogChatOption(elcoNICKNAMEFILTER_ENABLELOGGING) ) return true; return false; } /** */ void DCConfig::SetUserMenuCommands( QMap * list ) { if ( !list ) { return; } /* clear map first delete objects second */ QList tmp = m_UserMenuCommands.values(); m_UserMenuCommands.clear(); for ( QList::const_iterator it = tmp.constBegin(); it != tmp.constEnd(); ++it ) { delete *it; } for ( QMap::const_iterator it = list->constBegin(); it != list->constEnd(); ++it ) { m_UserMenuCommands.insert( it.key(), it.value() ); } list->clear(); } /** */ long DCConfig::GetUserMenuCommands( QMap * list ) { if ( !list ) { return 0; } for ( QMap::const_iterator it = m_UserMenuCommands.constBegin(); it != m_UserMenuCommands.constEnd(); ++it ) { /* default copy constructor does member by member copy */ list->insert( it.key(), new DC_UserMenuCommand( *(it.value()) ) ); } return list->size(); } /** */ long DCConfig::GetUserMenuCommandsDirect( QMap * list ) { if ( !list ) { return 0; } for ( QMap::const_iterator it = m_UserMenuCommands.constBegin(); it != m_UserMenuCommands.constEnd(); ++it ) { list->insert( it.key(), it.value() ); } return list->size(); } /** */ void DCConfig::SetUserChatCommands( QList * list ) { if ( !list ) { return; } QList tmp = m_lUserChatCommands; m_lUserChatCommands.clear(); for ( QList::const_iterator it = tmp.constBegin(); it != tmp.constEnd(); ++it ) { delete *it; } for ( QList::const_iterator it = list->constBegin(); it != list->constEnd(); ++it ) { m_lUserChatCommands.append( *it ); } list->clear(); } /** */ long DCConfig::GetUserChatCommands( QList * list ) { if ( !list ) { return 0; } for ( QList::const_iterator it = m_lUserChatCommands.constBegin(); it != m_lUserChatCommands.constEnd(); ++it ) { /* default copy constructor does member by member copy */ list->append( new DC_UserChatCommand( *(*it) ) ); } return list->size(); } /** */ QString DCConfig::ReplaceUserChatCommands( QString text ) { bool addedSpace = false; if ( text.right(1) != " " ) { text += ' '; addedSpace = true; } for ( QList::const_iterator it = m_lUserChatCommands.constBegin(); it != m_lUserChatCommands.constEnd(); ++it ) { DC_UserChatCommand * ucc = *it; if ( text.startsWith(ucc->m_sName + " ") ) { text.replace( 0, ucc->m_sName.length(), ucc->m_sCommand ); } } if ( addedSpace ) { text = text.left( text.length() - 1 ); } return text; } /** */ void DCConfig::SetAutoResponses( QList * list ) { if ( !list ) { return; } QList tmp = m_lAutoResponses; m_lAutoResponses.clear(); for ( QList::const_iterator it = tmp.constBegin(); it != tmp.constEnd(); ++it ) { delete *it; } for ( QList::const_iterator it = list->constBegin(); it != list->constEnd(); ++it ) { m_lAutoResponses.append( *it ); } list->clear(); } /** */ long DCConfig::GetAutoResponses( QList * list ) { if ( !list ) { return 0; } for ( QList::const_iterator it = m_lAutoResponses.constBegin(); it != m_lAutoResponses.constEnd(); ++it ) { /* default copy constructor does member by member copy */ list->append( new DC_AutoResponseObject( *(*it) ) ); } return list->size(); } void DCConfig::RenameStoredFilelists() { QDir dir; QStringList listing; QByteArray buffer; buffer.resize(2048); printf("Renaming stored filelists ...\n"); dir.setPath( g_pConfig->GetFileListPath().Data() ); listing = dir.entryList(); for (QStringList::Iterator it = listing.begin(); it != listing.end(); ++it) { QString filename = *it; if ( (filename == ".") || (filename == "..") ) { // skip } else { QFile file; file.setFileName( QString(g_pConfig->GetFileListPath().Data()) + filename ); if (file.open( QIODevice::ReadOnly )) { QString line, nick, hubhost; file.readLine( buffer.data(), buffer.size() ); line = buffer.constData(); if (line == "---HEADER START---\n") { while (line != "---HEADER END---\n") { file.readLine( buffer.data(), buffer.size() ); line = buffer.constData(); if (line.left(5) == "NICK=") { nick = line.mid(5); nick.remove("\n"); } else if (line.left(8) == "HUBHOST=") { hubhost = line.mid(8); hubhost.remove("\n"); } } } else { printf("%s is not a filelist from valknut <= 0.3.13\n", filename.toAscii().constData()); file.close(); continue; } file.close(); QString newname = nick; newname += "@"; newname += hubhost; newname += ".filelist"; newname.replace('/', "_"); newname.replace('\\', "_"); newname.replace(':', "_"); if ( filename == newname ) { continue; } printf("Renaming %s to %s ...", filename.toAscii().constData(), newname.toAscii().constData()); if ( dir.rename(filename, newname) ) { printf(" OK\n"); } else { printf(" renaming failed!\n"); } } else { printf("Couldn't open %s!\n", filename.toAscii().constData()); } } } // finished, set variable so renaming will not be done again SetFilelistNamingSchemeVersion(4); } /** */ void DCConfig::SetChatBackgroundColor( bool enabled, QString color ) { /* changing the color does not matter if it stays disabled */ bool changed = ( (enabled != m_bChatBackgroundColorEnabled) || (enabled && (color != m_sChatBackgroundColor)) ); m_bChatBackgroundColorEnabled = enabled; m_sChatBackgroundColor = color; if ( changed ) { emit chatBackgroundColorChanged(); } } /** */ void DCConfig::SetDefaultDownloadMode( unsigned int n, bool emitsig ) { if ( n != iDefaultDownloadMode ) { iDefaultDownloadMode = n; if ( emitsig ) { emit defaultDownloadModeChanged(); } } } /** */ void DCConfig::OpenURL( QString url ) { if ( m_bCustomBrowser && !sBrowser.isEmpty() ) { QProcess::startDetached( sBrowser + " " + url ); } else { QDesktopServices::openUrl( url ); } } /** */ void DCConfig::SetUserListIconTheme( QString theme ) { if ( theme != m_sUserListIconTheme ) { /* delete cached pixmaps */ for ( int x = 0; x < USERLIST_XPM_COLUMNS; ++x ) { for ( int y = 0; y < USERLIST_XPM_ROWS; ++y ) { if ( m_UserIconCache[x][y] ) { delete m_UserIconCache[x][y]; m_UserIconCache[x][y] = 0; } } } m_UserIcons.load( m_sValknutDataPath + "/icons/user/" + theme + "/" + "usericons.xpm" ); m_sUserListIconTheme = theme; } } /** */ eMagnetAction DCConfig::GetMagnetAction( eMagnetSource source ) const { if ( source == eChatMagnet ) { return m_eMagnetActionChat; } else { return eMagnetPrompt; } } /** */ void DCConfig::SetMagnetAction( eMagnetAction action, eMagnetSource source ) { if ( source == eChatMagnet ) { m_eMagnetActionChat = action; } } /** */ void DCConfig::SetAwayMode( eUserAwayMode mode ) { if ( mode != GetAwayMode() ) { CConfig::SetAwayMode( mode ); emit awayModeChanged( mode ); } } /** */ void DCConfig::SetAlternatingRowColors( bool b ) { if ( m_bAlternatingRowColors != b ) { m_bAlternatingRowColors = b; emit alternatingRowColorsChanged( b ); } } /** */ void DCConfig::SetAutoAwayMode( bool b ) { if ( m_bAutoAwayMode != b ) { m_bAutoAwayMode = b; emit autoAwayModeChanged( b ); } } valknut-0.4.9/valknut/userlistmodel.h0000664000076400007640000001431711106134503016076 0ustar ejsejs/*************************************************************************** userlistmodel.h - User List Model header ------------------- begin : Sun Nov 18 2007 copyright : (C) 2007 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef USERLISTMODEL_H #define USERLISTMODEL_H #include #include #include #include #include #include #include #include /** * @author Edward Sheldrake - inspired by dc-qt 0.2.0 alpha * * Using QSortFilterProxyModel for sorting and filtering * was far too CPU intensive, apparently. */ class UserListItem { public: /** Constructor */ UserListItem() { shared = 0; index = -1; sorttop = false; highlight = false; } /** Destructor */ ~UserListItem() {}; /** Icon in user list */ QPixmap pixmap; /** Nick */ QString nick; /** Comment/Description */ QString comment; /** Tag */ QString tag; /** Speed/Connection */ QString speed; /** Email address */ QString email; /** IP address */ QString ip; /** Lock/PK */ QString lockpk; /** $Supports */ QString supports; /** Lower cased nick for tab completion */ QString nick_lc; /** Lower cased nick with [TAG] s removed for tab completion */ QString nick_stripped; /** Lower cased comment for sorting */ QString comment_lc; /** Lower cased tag for sorting */ QString tag_lc; /** Lower cased speed for sorting */ QString speed_lc; /** Lower cased email for sorting */ QString email_lc; /** Share size in bytes */ ulonglong shared; /** * Position in list. Unfortunately index has to be updated * when people quit, assumes updating indexes is faster than * using QList::indexOf when updating existing users. */ int index; /** Sort on top (is operator) */ bool sorttop; /** Highlight nick in red (unopened message) */ bool highlight; }; #define COLUMN_NICK 0 #define COLUMN_COMMENT 1 #define COLUMN_TAG 2 #define COLUMN_SPEED 3 #define COLUMN_EMAIL 4 #define COLUMN_SHARE 5 #define COLUMN_IP 6 #define COLUMN_LOCKPK 7 #define COLUMN_SUPPORTS 8 class UserListModel : public QAbstractItemModel { Q_OBJECT public: /** Constructor */ UserListModel( QObject * parent = 0 ); /** Destructor */ virtual ~UserListModel(); /** number of rows */ virtual int rowCount( const QModelIndex & index = QModelIndex() ) const; /** number of columns */ virtual int columnCount( const QModelIndex & index = QModelIndex() ) const; /** gets data */ virtual QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const; /** gets headings */ virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; /** sort list */ virtual void sort( int column, Qt::SortOrder order = Qt::AscendingOrder ); /** */ virtual QModelIndex index( int row, int column, const QModelIndex & parent = QModelIndex() ) const; /** */ virtual QModelIndex parent( const QModelIndex & parent ) const; /** delete all data */ void clear(); /** Tests if the nick is in the list */ bool hasNick( const QString & nick ) const; /** Remove a user from the list */ void removeUser( const QString & nick ); /** Add a user to the list */ void addUser( const QString nick, const QPixmap icon = QPixmap(), const QString comment = "", const QString tag = "", const QString speed = "", const QString email = "", const ulonglong share = 0, const QString ip = "", const QString lockpk = "", const QString supports = "" ); /** Update icon */ void updateIcon( const QString & nick, const QPixmap icon ); /** Update comment */ void updateComment( const QString & nick, const QString comment ); /** Update tag */ void updateTag( const QString & nick, const QString tag ); /** Update speed */ void updateSpeed( const QString & nick, const QString speed ); /** Update email */ void updateEmail( const QString & nick, const QString email ); /** Update share */ void updateShare( const QString & nick, const ulonglong share ); /** Update IP address */ void updateIP( const QString & nick, const QString ip ); /** Update Lock/PK */ void updateLockPK( const QString & nick, const QString lockpk ); /** Update Supports */ void updateSupports( const QString & nick, const QString supports ); /** Set sorttop */ void setSortTop( const QString & nick, const bool top ); /** Set highlight */ void setHighlight( const QString & nick, const bool highlight ); /** Get index for nick */ QModelIndex indexForNick( const QString & nick ) const; /** Get sort column */ int getSortColumn() const { return sortColumn; }; /** Get sort order */ Qt::SortOrder getSortOrder() const { return sortOrder; }; /** Get the list of nicks that match the given string * stripTags means anything inside [] will be removed before matching * e.g. [BBB]xyzzy = xyzzy, but the nicks returned will include any tags */ QStringList matchNicksContaining( const QString & part, bool stripTags = false ) const; /** The same, but using startsWith not contains */ QStringList matchNicksStartingWith( const QString & part, bool stripTags = false ) const; private: /** Hash of items keyed on nick */ QHash itemHash; /** Sorted list of items */ QList itemList; /** Column sorted by */ int sortColumn; /** Sort order */ Qt::SortOrder sortOrder; /** regular expression to remove tags from nicks */ QRegExp stripper; }; #endif // USERLISTMODEL_H valknut-0.4.9/valknut/dchublistmanager.cpp0000664000076400007640000012040711130750045017052 0ustar ejsejs/*************************************************************************** dchublistmanager.cpp - description ------------------- begin : Mon Oct 1 2001 copyright : (C) 2001-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dchublistmanager.h" #include #include #include #include #include #include #include #include #include #include #include //Added by qt3to4: #include #include #include #include #include #include #include #include "dcmenuhandler.h" #include "dchubprofile.h" #include "dchubfilter.h" #include "dciconloader.h" #include "dcconnectionmanager.h" #include "dcconfig.h" #include "dchublistitems.h" #include "dcguiutils.h" #include #include #include #include "dceditserver.h" #include "cdialogmessage.h" #include "publichubsmodel.h" #include "publichubsproxy.h" DCHubListManager * g_pHubListManager = 0; /** */ DCHubListManager::DCHubListManager( QWidget * parent ) : QWidget( parent ) { setupUi(this); /* icons moved out of .ui files so that they can be themed */ ToolButton_ADDFILTER->setIcon( QIcon( g_pIconLoader->GetPixmap(eiEDITADD) ) ); ToolButton_EDITFILTER->setIcon( QIcon( g_pIconLoader->GetPixmap(eiEDIT) ) ); ToolButton_DELFILTER->setIcon( QIcon( g_pIconLoader->GetPixmap(eiEDITDELETE) ) ); ToolButton_RELOADPUBLICHUBLIST->setIcon( QIcon( g_pIconLoader->GetPixmap(eiRELOAD) ) ); ToolButton_UPDATEPUBLICHUBLIST->setIcon( QIcon( g_pIconLoader->GetPixmap(eiUPDATE) ) ); ToolButton_CONNECT->setIcon( QIcon( g_pIconLoader->GetPixmap(eiCONNECT) ) ); /* ... and for bookmark buttons */ ToolButton_BOOKMARK_SAVE->setIcon( QIcon( g_pIconLoader->GetPixmap(eiSAVE) ) ); ToolButton_BOOKMARK_ENABLE_SORT->setIcon( QIcon( g_pIconLoader->GetPixmap(eiSORT_DOWN_ARROW) ) ); ToolButton_BOOKMARK_ADD->setIcon( QIcon( g_pIconLoader->GetPixmap(eiEDITADD) ) ); ToolButton_BOOKMARK_EDIT->setIcon( QIcon( g_pIconLoader->GetPixmap(eiEDIT) ) ); ToolButton_BOOKMARK_DEL->setIcon( QIcon( g_pIconLoader->GetPixmap(eiEDITDELETE) ) ); lastPublicHubsWidth = -1; lastBookmarkHubsWidth = -1; /* we have custom column resizing code */ TreeView_PUBLIC->header()->setStretchLastSection(false); TreeWidget_BOOKMARKS->header()->setStretchLastSection(false); // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiSERVER) ); if ( (parent != 0) && (qobject_cast(parent) != 0) ) { m_pContainerWindow = new QMdiSubWindow(); m_pContainerWindow->setWidget(this); } else { m_pContainerWindow = 0; } model = new PublicHubsModel( this ); proxy = new PublicHubsProxy( this ); proxy->setSortRole( PublicHubsProxyRole ); proxy->setSortCaseSensitivity( Qt::CaseInsensitive ); proxy->setFilterRole( PublicHubsProxyRole ); proxy->setFilterCaseSensitivity( Qt::CaseInsensitive ); proxy->setSourceModel( model ); TreeView_PUBLIC->setModel( proxy ); m_pMessageList = new QList(); InitDocument(); g_pHubListManager = this; } /** */ DCHubListManager::~DCHubListManager() { g_pHubListManager = NULL; m_HLMMutex.lock(); if ( m_pMessageList ) { QList * tmp = m_pMessageList; m_pMessageList = 0; for ( QList::const_iterator it = tmp->constBegin(); it != tmp->constEnd(); ++it ) { delete *it; } delete tmp; } m_HLMMutex.unlock(); /* models deleted by QObject auto child deletion */ // we might have removed public hubs if ( g_pConfig->GetRemovePublicHubEnabled() ) { g_pConfig->SaveDCPublicHub(); } // bookmarks may have been sorted and the new order needs to be saved updateBookmarkOrder(); /* delete all hub filter objects */ for ( QMap::const_iterator it = m_HubFilterMap.constBegin(); it != m_HubFilterMap.constEnd(); ++it ) { delete it.value(); } m_HubFilterMap.clear(); if ( m_pContainerWindow ) { m_pContainerWindow->setWidget(0); // otherwise the QMdiSubWindow will delete this again delete m_pContainerWindow; m_pContainerWindow = 0; } } /** current tab widget change slot */ void DCHubListManager::slotTabWidgetCurrentChange(QWidget*) { SizeColumnsPreservingRatios(); } /** overridden so that the column widths are initialized on first show() */ void DCHubListManager::showEvent( QShowEvent * event ) { QWidget::showEvent( event ); if ( isVisible() ) { SizeColumnsPreservingRatios(); } } /** resize event handler */ void DCHubListManager::resizeEvent( QResizeEvent * ) { SizeColumnsPreservingRatios(); } /** */ void DCHubListManager::closeEvent( QCloseEvent * e ) { QWidget::closeEvent( e ); if ( m_pContainerWindow && m_pContainerWindow->parent() ) { /* Using QMdiArea::removeSubWindow() breaks tabs mode but this works */ m_pContainerWindow->setParent(0); } } /** Initialize or adjust widths of the ListView columns */ void DCHubListManager::SizeColumnsPreservingRatios() { int width; if ( TreeView_PUBLIC->isVisible() ) { width = TreeView_PUBLIC->width(); if ( width > 0 ) { if ( lastPublicHubsWidth == -1 ) { /* set initial widths using default ratios */ /* also expand the list view since we have lots of columns now */ TreeView_PUBLIC->setColumnWidth( 0, ((width*3)/10) ); TreeView_PUBLIC->setColumnWidth( 1, ((width*3)/10) ); TreeView_PUBLIC->setColumnWidth( 2, ((width*3)/10) ); TreeView_PUBLIC->setColumnWidth( 3, ((width*1)/10) ); TreeView_PUBLIC->setColumnWidth( 4, ((width*2)/10) ); TreeView_PUBLIC->setColumnWidth( 5, ((width*1)/10) ); TreeView_PUBLIC->setColumnWidth( 6, ((width*1)/10) ); TreeView_PUBLIC->setColumnWidth( 7, ((width*3)/10) ); lastPublicHubsWidth = TreeView_PUBLIC->width(); } else if ( lastPublicHubsWidth != width ) { DCGuiUtils::AdjustColumnWidths( TreeView_PUBLIC, lastPublicHubsWidth ); lastPublicHubsWidth = TreeView_PUBLIC->width(); } } } else if ( TreeWidget_BOOKMARKS->isVisible() ) { width = TreeWidget_BOOKMARKS->width(); if ( width > 0 ) { if ( lastBookmarkHubsWidth == -1 ) { TreeWidget_BOOKMARKS->setColumnWidth( 0, width/3 ); TreeWidget_BOOKMARKS->setColumnWidth( 1, width/3 ); TreeWidget_BOOKMARKS->setColumnWidth( 2, width/3 ); lastBookmarkHubsWidth = TreeWidget_BOOKMARKS->width(); } else if ( lastBookmarkHubsWidth != width ) { DCGuiUtils::AdjustColumnWidths( TreeWidget_BOOKMARKS, lastBookmarkHubsWidth ); lastBookmarkHubsWidth = TreeWidget_BOOKMARKS->width(); } } } } /** */ void DCHubListManager::SetToolBar( QFrame * frame1, QFrame * frame2, bool vis ) { if ( vis ) { frame1->hide(); frame1->setEnabled(false); frame2->show(); frame2->setEnabled(true); } else { frame2->hide(); frame2->setEnabled(false); frame1->show(); frame1->setEnabled(true); } } /** */ void DCHubListManager::InitDocument() { StringMap * map; bool btb1=true,btb2=true; bool bfilter=false; DC_HubFilterObject * HubFilterObject; // hide progressbar ProgressBar_LOADHUBLIST->setMinimum(0); ProgressBar_LOADHUBLIST->hide(); // set bookmark icon TabWidget_SERVERLIST->setTabIcon( 1, QIcon( g_pIconLoader->GetPixmap(eiBOOKMARK_FOLDER) ) ); // init the toolbars Frame_TOOLBAR1_HIDE->installEventFilter(this); Frame_TOOLBAR1_SHOW->installEventFilter(this); Frame_TOOLBAR2_HIDE->installEventFilter(this); Frame_TOOLBAR2_SHOW->installEventFilter(this); // restore settings if ( g_pConfig->GetMap("HUBVIEW",map) ) { if ( ((*map)["WIDTH"].toInt() > 0) && ((*map)["HEIGHT"].toInt() > 0) ) { if ( m_pContainerWindow != 0 ) { m_pContainerWindow->setGeometry( (*map)["X"].toInt(), (*map)["Y"].toInt(), (*map)["WIDTH"].toInt(), (*map)["HEIGHT"].toInt() ); } } if ( (!((*map)["TOOLBAR1"].isEmpty())) && ((*map)["TOOLBAR1"].toInt() == 0) ) { btb1 = false; } if ( (!((*map)["TOOLBAR2"].isEmpty())) && ((*map)["TOOLBAR2"].toInt() == 0) ) { btb2 = false; } // restore active page TabWidget_SERVERLIST->setCurrentIndex((*map)["ACTIVEPAGE"].toInt()); // restore linedit LineEdit_SERVER->setText((*map)["LE_SERVER"]); /* restore sorting parameters */ TreeView_PUBLIC->sortByColumn( (*map)["PUBLICSORTCOLUMN"].toInt(), DCGuiUtils::SortOrderFromName((*map)["PUBLICSORTORDER"]) ); if ( (!((*map)["BOOKMARKSORTINGENABLED"].isEmpty())) && ((*map)["BOOKMARKSORTINGENABLED"].toInt() == 0) ) { TreeWidget_BOOKMARKS->setSortingEnabled( false ); } else { TreeWidget_BOOKMARKS->setSortingEnabled( true ); } TreeWidget_BOOKMARKS->sortItems( (*map)["BOOKMARKSORTCOLUMN"].toInt(), DCGuiUtils::SortOrderFromName((*map)["BOOKMARKSORTORDER"]) ); } SetToolBar( Frame_TOOLBAR1_HIDE, Frame_TOOLBAR1_SHOW, btb1 ); SetToolBar( Frame_TOOLBAR2_HIDE, Frame_TOOLBAR2_SHOW, btb2 ); connect( LineEdit_SERVER, SIGNAL(returnPressed()), this, SLOT(slotConnect()) ); connect( ToolButton_RELOADPUBLICHUBLIST, SIGNAL(clicked()), this, SLOT(slotReloadPublicHubList()) ); connect( ToolButton_UPDATEPUBLICHUBLIST, SIGNAL(clicked()), this, SLOT(slotUpdatePublicHubList()) ); connect( ToolButton_CONNECT, SIGNAL(clicked()), this, SLOT(slotConnect()) ); // public list connect( TreeView_PUBLIC,SIGNAL(activated( const QModelIndex & )), this, SLOT(slotItemActivatedPublic( const QModelIndex & )) ); connect( TreeView_PUBLIC,SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuPublicList( const QPoint & )) ); // bookmark list connect( TreeWidget_BOOKMARKS,SIGNAL(itemActivated( QTreeWidgetItem *, int )), this, SLOT(slotItemActivatedBookmarks( QTreeWidgetItem *, int)) ); connect( TreeWidget_BOOKMARKS,SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuBookmarkList( const QPoint & )) ); connect( ToolButton_BOOKMARK_UP, SIGNAL(clicked()), this, SLOT(slotMoveBookmarkUp()) ); connect( ToolButton_BOOKMARK_DOWN, SIGNAL(clicked()), this, SLOT(slotMoveBookmarkDown()) ); connect( ToolButton_BOOKMARK_ENABLE_SORT, SIGNAL(clicked()), this, SLOT(slotEnableBookmarkSorting()) ); connect( ToolButton_BOOKMARK_SAVE, SIGNAL(clicked()), this, SLOT(slotSaveBookmarks()) ); connect( ToolButton_BOOKMARK_ADD, SIGNAL(clicked()), this, SLOT(slotAddBookmark()) ); connect( ToolButton_BOOKMARK_EDIT, SIGNAL(clicked()), this, SLOT(slotEditBookmark()) ); connect( ToolButton_BOOKMARK_DEL, SIGNAL(clicked()), this, SLOT(slotDelBookmark()) ); connect( TabWidget_SERVERLIST,SIGNAL(currentChanged(QWidget*)), this, SLOT(slotTabWidgetCurrentChange(QWidget*)) ); // filter connect( ToolButton_ADDFILTER, SIGNAL(clicked()), this, SLOT(slotAddFilter()) ); connect( ToolButton_EDITFILTER, SIGNAL(clicked()), this, SLOT(slotEditFilter()) ); connect( ToolButton_DELFILTER, SIGNAL(clicked()), this, SLOT(slotDelFilter()) ); connect( ComboBox_FILTER, SIGNAL(activated( const QString & )), this, SLOT(slotFilterChange( const QString &)) ); TreeWidget_BOOKMARKS->setAlternatingRowColors( g_pConfig->GetAlternatingRowColors() ); TreeView_PUBLIC->setAlternatingRowColors( g_pConfig->GetAlternatingRowColors() ); connect( g_pConfig, SIGNAL( alternatingRowColorsChanged( bool ) ), this, SLOT( slotAltRowColors( bool ) ) ); connect( &m_Timer, SIGNAL(timeout()), this, SLOT(timerDone()) ); // load filter g_pConfig->LoadDCHubFilter(&m_HubFilterMap); // create default if ( m_HubFilterMap.isEmpty() ) { HubFilterObject = new DC_HubFilterObject(); HubFilterObject->m_sFilterName = "Default"; m_HubFilterMap.insert( HubFilterObject->m_sFilterName, HubFilterObject ); g_pConfig->SaveDCHubFilter(&m_HubFilterMap); } for ( QMap::const_iterator it = m_HubFilterMap.constBegin(); it != m_HubFilterMap.constEnd(); ++it ) { HubFilterObject = it.value(); ComboBox_FILTER->addItem( HubFilterObject->m_sFilterName ); if ( (*map)["FILTER"] == HubFilterObject->m_sFilterName ) { bfilter = true; } } // restore filter if ( bfilter ) { int index = ComboBox_FILTER->findText((*map)["FILTER"]); if ( index != -1 ) { ComboBox_FILTER->setCurrentIndex(index); } } else { int index = ComboBox_FILTER->findText("Default"); if ( index != -1 ) { ComboBox_FILTER->setCurrentIndex(index); } } ShowBookmarkList(); ShowPublicHubList(); m_Timer.setSingleShot( true ); m_Timer.start( 500 ); } /** */ void DCHubListManager::DeInitDocument() { StringMap * map; // save hub view settings g_pConfig->GetMap("HUBVIEW",map); if ( m_pContainerWindow != 0 ) { (*map)["X"] = QString().setNum(m_pContainerWindow->x()); (*map)["Y"] = QString().setNum(m_pContainerWindow->y()); (*map)["WIDTH"] = QString().setNum(m_pContainerWindow->width()); (*map)["HEIGHT"] = QString().setNum(m_pContainerWindow->height()); (*map)["VISIBLE"] = QString().setNum(m_pContainerWindow->isVisible()); (*map)["MAXIMIZED"] = QString().setNum(m_pContainerWindow->isMaximized()); (*map)["MINIMIZED"] = QString().setNum(m_pContainerWindow->isMinimized()); } (*map)["ACTIVEPAGE"] = QString().setNum(TabWidget_SERVERLIST->currentIndex()); (*map)["LE_SERVER"] = LineEdit_SERVER->text(); (*map)["FILTER"] = ComboBox_FILTER->currentText(); if ( !isEnabled() ) { setEnabled(true); } (*map)["TOOLBAR1"] = QString().setNum(Frame_TOOLBAR1_SHOW->isEnabled()); (*map)["TOOLBAR2"] = QString().setNum(Frame_TOOLBAR2_SHOW->isEnabled()); (*map)["PUBLICSORTCOLUMN"] = QString().setNum( TreeView_PUBLIC->header()->sortIndicatorSection() ); (*map)["PUBLICSORTORDER"] = DCGuiUtils::SortOrderName( TreeView_PUBLIC->header()->sortIndicatorOrder() ); (*map)["BOOKMARKSORTCOLUMN"] = QString().setNum(TreeWidget_BOOKMARKS->sortColumn()); (*map)["BOOKMARKSORTORDER"] = DCGuiUtils::SortOrderName( TreeWidget_BOOKMARKS->header()->sortIndicatorOrder() ); (*map)["BOOKMARKSORTINGENABLED"] = QString().setNum(TreeWidget_BOOKMARKS->isSortingEnabled()); } /** event filter */ bool DCHubListManager::eventFilter(QObject* object, QEvent* event) { if ( event->type() == QEvent::MouseButtonDblClick ) { if ( object == Frame_TOOLBAR1_HIDE ) { SetToolBar( Frame_TOOLBAR1_HIDE, Frame_TOOLBAR1_SHOW, true ); } else if ( object == Frame_TOOLBAR1_SHOW ) { SetToolBar( Frame_TOOLBAR1_HIDE, Frame_TOOLBAR1_SHOW, false ); } else if ( object == Frame_TOOLBAR2_HIDE ) { SetToolBar( Frame_TOOLBAR2_HIDE, Frame_TOOLBAR2_SHOW, true ); // show progressbar if ( m_pHubListUrl != 0 ) ProgressBar_LOADHUBLIST->show(); } else if ( object == Frame_TOOLBAR2_SHOW ) { SetToolBar( Frame_TOOLBAR2_HIDE, Frame_TOOLBAR2_SHOW, false ); } } return QWidget::eventFilter( object, event ); // standard event processing } /** callback function */ int DCHubListManager::DC_CallBack( CDCMessage * DCMessage ) { int err = -1; m_HLMMutex.lock(); if ( DCMessage && m_pMessageList ) { m_pMessageList->append(DCMessage); err = 0; } m_HLMMutex.unlock(); return err; } /** */ void DCHubListManager::timerDone() { CDCMessage * DCMsg; int i; for(i=0;i<50;i++) { if ( m_HLMMutex.tryLock() == false ) { break; } if ( m_pMessageList && !m_pMessageList->isEmpty() ) { DCMsg = m_pMessageList->takeFirst(); } else { DCMsg = 0; } m_HLMMutex.unlock(); if ( DCMsg == 0 ) { break; } switch ( DCMsg->m_eType ) { case DC_MESSAGE_GETHUBLIST: { DCMessageGetHubList * msg = (DCMessageGetHubList*) DCMsg; if ( msg->m_bRun == false ) { // enable buttons ToolButton_RELOADPUBLICHUBLIST->setEnabled(true); ToolButton_UPDATEPUBLICHUBLIST->setEnabled(true); // hide progressbar ProgressBar_LOADHUBLIST->hide(); ShowPublicHubList(); } else { // disable buttons ToolButton_RELOADPUBLICHUBLIST->setEnabled(false); ToolButton_UPDATEPUBLICHUBLIST->setEnabled(false); // show progressbar ProgressBar_LOADHUBLIST->show(); } break; } case DC_MESSAGE_TRANSFER: { CMessageTransfer *msg = (CMessageTransfer*)DCMsg; ProgressBar_LOADHUBLIST->setMaximum(msg->m_nLength); ProgressBar_LOADHUBLIST->setValue(msg->m_nTransfered); break; } default: { break; } } if ( DCMsg ) { delete DCMsg; } } m_Timer.setSingleShot( true ); m_Timer.start( 500 ); } /** */ void DCHubListManager::ShowPublicHubList() { DCConfigHubItem * hubitem = 0; CList PublicHubList; int x = 0; // disable filter combo box ComboBox_FILTER->setEnabled(false); TabWidget_SERVERLIST->setTabText( 0, tr("Public")+" (0/0)" ); TreeView_PUBLIC->setUpdatesEnabled(false); TreeView_PUBLIC->setSortingEnabled(false); TreeView_PUBLIC->clearSelection(); model->clear(); g_pConfig->GetPublicHubList(&PublicHubList); while ( (hubitem=PublicHubList.Next(hubitem)) != 0 ) { ++x; if ( x == 100 ) { qApp->processEvents(); x = 0; } model->addHub( QString::fromAscii(hubitem->m_sName.Data()), QString::fromAscii(hubitem->m_sHost.Data()), QString::fromAscii(hubitem->m_sDescription.Data()), hubitem->m_nUserCount, QString::fromAscii(hubitem->m_sCountry.Data()), hubitem->m_nShared, hubitem->m_nMinShare, QString::fromAscii(hubitem->m_sExtra.Data()) ); } TreeView_PUBLIC->setSortingEnabled(true); proxy->invalidate(); slotFilterChange(ComboBox_FILTER->currentText()); TreeView_PUBLIC->setUpdatesEnabled(true); TabWidget_SERVERLIST->setTabText( 0, tr("Public")+" ("+QString().setNum(TreeView_PUBLIC->model()->rowCount())+"/"+QString().setNum(PublicHubList.Count())+")"); // enable filter combo box ComboBox_FILTER->setEnabled(true); } /** */ void DCHubListManager::ShowBookmarkList() { int x = 0; DCConfigHubItem * hubitem = 0; CList list; bool sortingenabled = TreeWidget_BOOKMARKS->isSortingEnabled(); g_pConfig->GetBookmarkHubList(&list); TreeWidget_BOOKMARKS->setSortingEnabled(false); TreeWidget_BOOKMARKS->setUpdatesEnabled(false); TreeWidget_BOOKMARKS->clear(); while( (hubitem=list.Next(hubitem)) != 0 ) { DCBookmarkHubItem * item = new DCBookmarkHubItem( TreeWidget_BOOKMARKS ); item->setText( 0, hubitem->m_sName.Data() ); item->setText( 1, hubitem->m_sHost.Data() ); item->setText( 2, hubitem->m_sDescription.Data() ); item->position = x; x++; if ( x == 100 ) { qApp->processEvents(); x = 0; } } if ( sortingenabled ) { TreeWidget_BOOKMARKS->setSortingEnabled(sortingenabled); } TreeWidget_BOOKMARKS->setUpdatesEnabled(true); TabWidget_SERVERLIST->setTabText( 1, tr("Bookmarks")+" ("+QString().setNum(TreeWidget_BOOKMARKS->model()->rowCount())+")" ); } /** */ void DCHubListManager::slotReloadPublicHubList() { g_pConfig->ClearPublicHubList(); GetPublicHubList(); } /** update public hub list */ void DCHubListManager::slotUpdatePublicHubList() { GetPublicHubList(); } /** */ void DCHubListManager::slotItemActivatedPublic( const QModelIndex & index ) { PublicHubItem * item = model->getItem( proxy->mapToSource( index ) ); if ( item ) g_pConnectionManager->Connect( item->name.toAscii().constData(), item->server.toAscii().constData() ); } /** */ void DCHubListManager::slotItemActivatedBookmarks( QTreeWidgetItem * item, int /* column */ ) { if ( item ) g_pConnectionManager->Connect( item->text(0).toAscii().constData(), item->text(1).toAscii().constData() ); } /** */ void DCHubListManager::slotConnect() { g_pConnectionManager->Connect( CString(), LineEdit_SERVER->text().toAscii().constData() ); } /** */ void DCHubListManager::slotAddFilter() { DC_HubFilterObject * HubFilterObject; DCHubFilter * hf; hf = new DCHubFilter(this); if ( hf->exec() == QDialog::Accepted ) { HubFilterObject = new DC_HubFilterObject(); // get the new data hf->Get( HubFilterObject ); if ( HubFilterObject->m_sFilterName.isEmpty() ) { // todo: error message delete HubFilterObject; } else if ( m_HubFilterMap.contains( HubFilterObject->m_sFilterName ) ) { QMessageBox::information( this, tr("Add hub filter"), tr("A filter with that name already exists") ); delete HubFilterObject; } else { m_HubFilterMap.insert( HubFilterObject->m_sFilterName, HubFilterObject ); ComboBox_FILTER->addItem( HubFilterObject->m_sFilterName ); } g_pConfig->SaveDCHubFilter(&m_HubFilterMap); delete hf; } } /** */ void DCHubListManager::slotEditFilter() { QString s; DC_HubFilterObject * HubFilterObject; DCHubFilter * hf; s = ComboBox_FILTER->currentText(); if ( (!(s.isEmpty())) && (s != "Default") ) { HubFilterObject = m_HubFilterMap.value( s ); if ( HubFilterObject != 0 ) { hf = new DCHubFilter(this); hf->Edit( HubFilterObject ); if ( hf->exec() == QDialog::Accepted ) { // get the new data hf->Get( HubFilterObject ); if ( HubFilterObject->m_sFilterName.isEmpty() ) { HubFilterObject->m_sFilterName = s; // todo: error message } else if ( s != HubFilterObject->m_sFilterName ) { if ( m_HubFilterMap.contains( HubFilterObject->m_sFilterName ) ) { QMessageBox::information( this, tr("Edit hub filter"), tr("A filter with that name already exists") ); HubFilterObject->m_sFilterName = s; } else { /* not deleted because it's the same pointer */ m_HubFilterMap.remove(s); m_HubFilterMap.insert( HubFilterObject->m_sFilterName, HubFilterObject ); ComboBox_FILTER->setItemText( ComboBox_FILTER->currentIndex(), HubFilterObject->m_sFilterName ); } } // update view slotFilterChange( HubFilterObject->m_sFilterName ); g_pConfig->SaveDCHubFilter(&m_HubFilterMap); } delete hf; } } } /** */ void DCHubListManager::slotDelFilter() { QString s = ComboBox_FILTER->currentText(); if ( (!(s.isEmpty())) && (s != "Default") ) { ComboBox_FILTER->removeItem(ComboBox_FILTER->currentIndex()); QMap::const_iterator it = m_HubFilterMap.find( s ); if ( it != m_HubFilterMap.constEnd() ) { delete it.value(); m_HubFilterMap.remove( s ); g_pConfig->SaveDCHubFilter(&m_HubFilterMap); } else { QMessageBox::warning( this, tr("Delete hub filter"), tr("Filter not found") ); } } } /** */ void DCHubListManager::slotFilterChange( const QString & s ) { if ( !s.isEmpty() ) { DC_HubFilterObject * filter = m_HubFilterMap.value(s); if ( filter ) { proxy->setFilter( filter ); TabWidget_SERVERLIST->setTabText( 0, tr("Public")+" ("+QString().setNum(TreeView_PUBLIC->model()->rowCount())+"/"+QString().setNum(g_pConfig->GetPublicHubListSize())+")"); } } } /** */ void DCHubListManager::RemoveBookmark( QTreeWidgetItem * item ) { if ( g_pConfig->RemoveBookmarkHub( item->text(0).toAscii().constData(), item->text(1).toAscii().constData(), item->text(2).toAscii().constData() ) ) { g_pConfig->SaveDCBookHub(); QTreeWidgetItemIterator it( TreeWidget_BOOKMARKS ); DCBookmarkHubItem * removed = (DCBookmarkHubItem*) item; for ( ; (*it); ++it ) { DCBookmarkHubItem * current = (DCBookmarkHubItem*) (*it); if ( current->position > removed->position ) { current->position--; } } delete item; // update tabbar TabWidget_SERVERLIST->setTabText( 1, tr("Bookmarks")+" ("+QString().setNum(TreeWidget_BOOKMARKS->model()->rowCount())+")" ); } } /** */ void DCHubListManager::AddBookmark( QString hubname, QString hubhost, QString description ) { if ( g_pConfig->AddBookmarkHub( hubname.toAscii().constData(), hubhost.toAscii().constData(), description.toAscii().constData() ) ) { g_pConfig->SaveDCBookHub(); DCBookmarkHubItem * item = new DCBookmarkHubItem( TreeWidget_BOOKMARKS ); item->setText( 0, hubname ); item->setText( 1, hubhost ); item->setText( 2, description ); item->position = TreeWidget_BOOKMARKS->topLevelItemCount() - 1; // update tabbar TabWidget_SERVERLIST->setTabText( 1, tr("Bookmarks")+" ("+QString().setNum(TreeWidget_BOOKMARKS->model()->rowCount())+")" ); } } /** */ void DCHubListManager::UpdateBookmark( QString hubname, QString hubhost, QString description ) { if ( g_pConfig->UpdateBookmarkHub( hubname.toAscii().constData(), hubhost.toAscii().constData(), description.toAscii().constData() ) ) { g_pConfig->SaveDCBookHub(); } } /** */ CStringList * DCHubListManager::GetFilteredHubList() { CStringList * list = new CStringList(); for ( int i = 0; i < proxy->rowCount(); ++i ) { CString addr = proxy->data( proxy->index(i,1) ).toString().toAscii().constData(); CString * string = 0; if ( list->Get( addr, &string ) != 0 ) { list->Add( addr, new CString( addr ) ); } } if ( list->Count() == 0 ) { delete list; list = 0; } return list; } /** */ void DCHubListManager::slotContextMenuBookmarkList( const QPoint & ) { QTreeWidgetItem * curitem; QList selitems = TreeWidget_BOOKMARKS->selectedItems(); QMenu * m = new QMenu(this); QAction * connect = DCMenuHandler::addAction( m, emiCONNECT, (selitems.count() > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * add = DCMenuHandler::addAction( m, emiADD ); QAction * edit = DCMenuHandler::addAction( m, emiEDIT, (selitems.count() == 1) ); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE, (selitems.count() > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * updserver = DCMenuHandler::addAction( m, emiUPDATE_SERVER, (selitems.count() > 0) ); QAction * updall = DCMenuHandler::addAction( m, emiUPDATE_ALL_SERVER ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * profiles = DCMenuHandler::addAction( m, emiHUB_PROFILE_EDITOR ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } if ( chosen == add ) { slotAddBookmark(); } else if ( chosen == edit ) { slotEditBookmark(); } else if ( chosen == remove ) { if ( queryRemoveBookmarks() == 1 ) { return; } DCConfigHubProfile hubprofile; for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); // remove profile for that entry if ( g_pConfig->GetHubProfile( curitem->text(0).toAscii().constData(), &hubprofile ) ) { g_pConfig->DelHubProfile( hubprofile.m_sName ); } // remove bookmark RemoveBookmark(curitem); } // save changes to profile list, some may have been deleted g_pConfig->SaveHubProfile(); // update myinfo g_pConnectionManager->SendMyInfoToConnectedServers(); } else if ( chosen == connect ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); g_pConnectionManager->Connect( curitem->text(0).toAscii().constData(), curitem->text(1).toAscii().constData() ); } } else if ( chosen == updserver ) { DCConfigHubItem hubitem; for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( g_pConfig->GetPublicHub( curitem->text(0).toAscii().constData(), &hubitem ) ) { UpdateBookmark( hubitem.m_sName.Data(), hubitem.m_sHost.Data(), hubitem.m_sDescription.Data() ); curitem->setText(1,hubitem.m_sHost.Data()); curitem->setText(2,hubitem.m_sDescription.Data()); } } } else if ( chosen == updall ) { DCConfigHubItem * hubitem = 0; DCConfigHubItem hubitem1; CList list; g_pConfig->GetBookmarkHubList(&list); while( (hubitem=list.Next(hubitem)) != 0 ) { if ( g_pConfig->GetPublicHub( hubitem->m_sName, &hubitem1 ) ) { g_pConfig->UpdateBookmarkHub( hubitem1.m_sName, hubitem1.m_sHost, hubitem1.m_sDescription ); } } g_pConfig->SaveDCBookHub(); ShowBookmarkList(); } else if ( chosen == profiles ) { DCHubProfile * dlg = new DCHubProfile(this); dlg->exec(); delete dlg; // update myinfo g_pConnectionManager->SendMyInfoToConnectedServers(); } } /** */ void DCHubListManager::slotContextMenuPublicList( const QPoint & pos ) { QList selitems; PublicHubItem * curitem = 0; QModelIndexList indexlist = TreeView_PUBLIC->selectionModel()->selectedIndexes(); for ( QModelIndexList::const_iterator it = indexlist.constBegin(); it != indexlist.constEnd(); ++it ) { curitem = model->getItem( proxy->mapToSource( *it ) ); if ( curitem && (selitems.contains( curitem ) == false) ) { selitems.append( curitem ); } } int numSelected = selitems.size(); if ( numSelected == 0 ) { return; } QMenu * m = new QMenu(this); QAction * connect = DCMenuHandler::addAction( m, emiCONNECT ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * remove = 0; if ( g_pConfig->GetRemovePublicHubEnabled() ) { remove = DCMenuHandler::addAction( m, emiREMOVE ); DCMenuHandler::addAction( m, emiSEPARATOR ); } QAction * bookmark = DCMenuHandler::addAction( m, emiADD_BOOKMARK ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * copycol = DCMenuHandler::addAction( m, emiCOPY_COLUMN_TO_CLIPBOARD, (numSelected == 1) ); QAction * copyrow = DCMenuHandler::addAction( m, emiCOPY_ROW_TO_CLIPBOARD, (numSelected == 1) ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } if ( chosen == connect ) { for ( QList::const_iterator it = selitems.constBegin(); it != selitems.constEnd(); ++it ) { curitem = *it; g_pConnectionManager->Connect( curitem->name.toAscii().constData(), curitem->server.toAscii().constData() ); } } else if ( chosen == remove ) { for ( QList::const_iterator it = selitems.constBegin(); it != selitems.constEnd(); ++it ) { curitem = *it; if ( g_pConfig->RemovePublicHub(curitem->name.toAscii().constData(),curitem->server.toAscii().constData(),curitem->description.toAscii().constData()) ) { model->deleteHub(curitem); // don't really need to check this return value too } else { QMessageBox::warning( this,tr("Remove public hub"), tr("Error removing hub \"") + curitem->name + "\" (" + curitem->server + ")" ); } } proxy->invalidate(); slotFilterChange( ComboBox_FILTER->currentText() ); TabWidget_SERVERLIST->setTabText( 0, tr("Public")+" ("+QString().setNum(TreeView_PUBLIC->model()->rowCount())+"/"+QString().setNum(g_pConfig->GetPublicHubListSize())+")"); } else if ( chosen == bookmark ) { for ( QList::const_iterator it = selitems.constBegin(); it != selitems.constEnd(); ++it ) { curitem = *it; AddBookmark( curitem->name, curitem->server, curitem->description ); } TabWidget_SERVERLIST->setTabText( 1, tr("Bookmarks")+" ("+QString().setNum(TreeWidget_BOOKMARKS->model()->rowCount())+")" ); } else if ( chosen == copycol ) { int column = TreeView_PUBLIC->columnAt( pos.x() ); curitem = selitems.first(); QString s; switch ( column ) { case 0: s = curitem->name; break; case 1: s = curitem->server; break; case 2: s = curitem->description; break; case 3: s = QString().setNum(curitem->users); break; case 4: s = curitem->country; break; case 5: s = DCGuiUtils::GetSizeString(curitem->shared); break; case 6: s = DCGuiUtils::GetSizeString(curitem->minshare); break; case 7: s = curitem->extra; break; default: break; } QApplication::clipboard()->setText( s ); } else if ( chosen == copyrow ) { QString s; curitem = selitems.first(); s = curitem->name + " " + curitem->server + " " + curitem->description + " " + QString().setNum(curitem->users) + " " + curitem->country + " " + DCGuiUtils::GetSizeString(curitem->shared) + " " + DCGuiUtils::GetSizeString(curitem->minshare) + " " + curitem->extra; QApplication::clipboard()->setText(s); } } /** update CConfig's sorted bookmarks map */ void DCHubListManager::updateBookmarkOrder() { if ( !(TreeWidget_BOOKMARKS->isSortingEnabled()) ) { //printf("updateBookmarkOrder cancelled, widget is not sorted\n"); return; } const int count = TreeWidget_BOOKMARKS->topLevelItemCount(); std::vector newpositions(count); int i = 0; QTreeWidgetItemIterator it( TreeWidget_BOOKMARKS ); for ( ; (*it); ++it ) { DCBookmarkHubItem * item = (DCBookmarkHubItem*) (*it); //printf("%s %d->%d\n",item->text(0).toAscii().constData(),item->position,i); if ( (item->position < 0) || (item->position >= count) ) { printf("updateBookmarkOrder: Existing key for %s out of range at %d\n", item->text(0).toAscii().constData(), item->position); return; } newpositions[item->position] = i; item->position = i; ++i; } //printf("call ReorderBookmarkHubs\n"); g_pConfig->ReorderBookmarkHubs( newpositions ); g_pConfig->SaveDCBookHub(); } /** */ void DCHubListManager::slotMoveBookmarkUp() { QTreeWidgetItem * item = TreeWidget_BOOKMARKS->currentItem(); if ( !item ) { return; } int oldindex = TreeWidget_BOOKMARKS->indexOfTopLevelItem( item ); if ( oldindex < 1 ) { return; } if ( TreeWidget_BOOKMARKS->isSortingEnabled() ) { updateBookmarkOrder(); TreeWidget_BOOKMARKS->setSortingEnabled(false); } int newindex = oldindex - 1; TreeWidget_BOOKMARKS->takeTopLevelItem( oldindex ); TreeWidget_BOOKMARKS->insertTopLevelItem( newindex, item ); TreeWidget_BOOKMARKS->setCurrentItem( item ); ((DCBookmarkHubItem*) item)->position = newindex; ((DCBookmarkHubItem*) TreeWidget_BOOKMARKS->topLevelItem( oldindex ))->position = oldindex; g_pConfig->MoveBookmarkHub( oldindex, newindex ); g_pConfig->SaveDCBookHub(); } /** */ void DCHubListManager::slotMoveBookmarkDown() { QTreeWidgetItem * item = TreeWidget_BOOKMARKS->currentItem(); if ( !item ) { return; } int oldindex = TreeWidget_BOOKMARKS->indexOfTopLevelItem( item ); if ( (oldindex == -1) || (oldindex > (TreeWidget_BOOKMARKS->topLevelItemCount() - 2)) ) { return; } if ( TreeWidget_BOOKMARKS->isSortingEnabled() ) { updateBookmarkOrder(); TreeWidget_BOOKMARKS->setSortingEnabled(false); } int newindex = oldindex + 1; TreeWidget_BOOKMARKS->takeTopLevelItem( oldindex ); TreeWidget_BOOKMARKS->insertTopLevelItem( newindex, item ); TreeWidget_BOOKMARKS->setCurrentItem( item ); ((DCBookmarkHubItem*) item)->position = newindex; ((DCBookmarkHubItem*) TreeWidget_BOOKMARKS->topLevelItem( oldindex ))->position = oldindex; g_pConfig->MoveBookmarkHub( oldindex, newindex ); g_pConfig->SaveDCBookHub(); } /** */ void DCHubListManager::slotEnableBookmarkSorting() { if ( TreeWidget_BOOKMARKS->isSortingEnabled() ) { return; } else { TreeWidget_BOOKMARKS->setSortingEnabled(true); // no updateBookmarkOrder() here } } /** */ void DCHubListManager::slotSaveBookmarks() { /* * Of couse updateBookmarkOrder() could just have been made a slot, but due to the large * number of problems encountered while attempting to have the code in updateBookmarkOrder * called automatically after the QTreeWidget has been sorted ( which appears to be impossible - * you can connect to QAbstractItemModel::layoutChanged() or various QHeaderView signals * but these are called either before the QTreeWidget has been sorted, or worse, during ) * so it is not a slot to indicate that it is not called automatically and updateBookmarkOrder() * must be called manually at various points and on shutdown. */ if ( TreeWidget_BOOKMARKS->isSortingEnabled() ) { updateBookmarkOrder(); } else { g_pConfig->SaveDCBookHub(); } } /** */ void DCHubListManager::slotAltRowColors( bool enable ) { TreeWidget_BOOKMARKS->setAlternatingRowColors( enable ); TreeView_PUBLIC->setAlternatingRowColors( enable ); } /** */ void DCHubListManager::slotAddBookmark() { DCEditServer * des = new DCEditServer(this); des->setWindowTitle(tr("Add Bookmark")); //reset values des->Reset(); // DCEditServer now checks name and host are not empty if ( des->exec() == QDialog::Accepted ) { // add bookmark to the list AddBookmark( des->LineEdit_NAME->text(), des->LineEdit_HOST->text(), des->LineEdit_DESCRIPTION->text() ); // check if profiling possible if ( des->CheckBox_PROFILE->isChecked() ) { // get profile from dialog DCConfigHubProfile hubprofile; des->GetProfile(&hubprofile); // add new profile g_pConfig->AddHubProfile( &hubprofile ); // save profile g_pConfig->SaveHubProfile(); // set bookmark for that hub g_pConfig->SetBookmarkHubProfile(des->LineEdit_NAME->text().toAscii().constData(),des->LineEdit_NAME->text().toAscii().constData()); } else { // clear profile from that hub g_pConfig->SetBookmarkHubProfile(des->LineEdit_NAME->text().toAscii().constData(),CString()); } // update myinfo g_pConnectionManager->SendMyInfoToConnectedServers(); } delete des; } /** */ void DCHubListManager::slotEditBookmark() { // edit only for one selected item QTreeWidgetItem * curitem = 0; QList selected = TreeWidget_BOOKMARKS->selectedItems(); if ( !selected.isEmpty() ) { curitem = selected.first(); } if ( !curitem ) { return; } bool prof = false; DCConfigHubProfile hubprofile; DCConfigHubItem ConfigHubItem; DCEditServer * des = new DCEditServer(this); des->setWindowTitle(tr("Edit Bookmark")); des->LineEdit_NAME->setText(curitem->text(0)); des->LineEdit_HOST->setText(curitem->text(1)); des->LineEdit_DESCRIPTION->setText(curitem->text(2)); // hubitem if ( g_pConfig->GetBookmarkHub( curitem->text(0).toAscii().constData(), &ConfigHubItem ) ) { if ( ConfigHubItem.m_sProfile.NotEmpty() ) { // get profile if ( g_pConfig->GetHubProfile( ConfigHubItem.m_sProfile, &hubprofile ) ) { des->SetProfile(&hubprofile); prof = true; } } } // DCEditServer now checks that name and host are not empty if ( des->exec() == QDialog::Accepted ) { RemoveBookmark( curitem ); if ( prof ) { // remove the profile g_pConfig->DelHubProfile( hubprofile.m_sName ); } // add as new bookmark AddBookmark( des->LineEdit_NAME->text(), des->LineEdit_HOST->text(), des->LineEdit_DESCRIPTION->text() ); // check if profiling possible if ( des->CheckBox_PROFILE->isChecked() ) { // get profile from dialog des->GetProfile(&hubprofile); // add new profile g_pConfig->AddHubProfile( &hubprofile ); // save profile g_pConfig->SaveHubProfile(); // set bookmark for that hub g_pConfig->SetBookmarkHubProfile(des->LineEdit_NAME->text().toAscii().constData(),des->LineEdit_NAME->text().toAscii().constData()); } else { // remove profile from that hub g_pConfig->SetBookmarkHubProfile(des->LineEdit_NAME->text().toAscii().constData(),CString()); } // update myinfo g_pConnectionManager->SendMyInfoToConnectedServers(); } delete des; } /** */ void DCHubListManager::slotDelBookmark() { QTreeWidgetItem * curitem = 0; QList selected = TreeWidget_BOOKMARKS->selectedItems(); if ( !selected.isEmpty() ) { curitem = selected.first(); } if ( !curitem || (queryRemoveBookmarks() == 1) ) { return; } // remove profile for that entry DCConfigHubProfile hubprofile; if ( g_pConfig->GetHubProfile( curitem->text(0).toAscii().constData(), &hubprofile ) ) { g_pConfig->DelHubProfile( hubprofile.m_sName ); } // remove bookmark RemoveBookmark(curitem); // save changes to profile list, some may have been deleted g_pConfig->SaveHubProfile(); // update myinfo g_pConnectionManager->SendMyInfoToConnectedServers(); } int DCHubListManager::queryRemoveBookmarks() { StringMap * map; int i; if ( g_pConfig->GetMap("DIALOG_REMOVE_BOOKMARK",map) == false ) { (*map)["SHOW"] = QString::number(1); (*map)["DEFAULT"] = QString::number(0); } if ( ((*map)["SHOW"].toInt() == 1) || ((*map)["DEFAULT"].toInt() == 1) ) { CDialogMessage * dlg = new CDialogMessage( this, QMessageBox::Warning, tr("Remove bookmarks"), tr("You are sure ?"), tr("Remove"), tr("Cancel") ); i = dlg->exec(); (*map)["SHOW"] = QString::number(!dlg->GetCheckBoxStatus()); (*map)["DEFAULT"] = QString::number(i); delete dlg; } else { i = (*map)["DEFAULT"].toInt(); } return i; } valknut-0.4.9/valknut/ui/0000775000076400007640000000000011144264654013456 5ustar ejsejsvalknut-0.4.9/valknut/ui/DCDialogSpy.ui0000664000076400007640000001415611136450450016116 0ustar ejsejs DCDialogSpy 0 0 431 263 Spy Qt::CustomContextMenu true QAbstractItemView::SingleSelection false true false true QFrame::StyledPanel QFrame::Raised Clear Spy Enabled Ignore TTH searches Statistic Active: false 0 false Reject: false Results: false 0 false Search Error: false 0 false Result Error: false 0 false 0 false Passive: false 0 false valknut-0.4.9/valknut/ui/DCDialogDebug.ui0000664000076400007640000000611411136450450016364 0ustar ejsejs DCDialogDebug 0 0 433 296 Valknut Crash Handler QFrame::NoFrame QFrame::Raised Comment false QFrame::NoFrame QFrame::Raised false Save to file. &Save Exit. E&xit Qt::Horizontal QSizePolicy::Expanding 211 20 QFrame::NoFrame QFrame::Raised true valknut-0.4.9/valknut/ui/DCDialogUserCommandLines.ui0000664000076400007640000000421711136450450020550 0ustar ejsejs DCDialogUserCommandLines User Command Lines For true On true 0 0 Use for all nicks QDialogButtonBox::Cancel|QDialogButtonBox::Ok DialogButtonBox accepted() DCDialogUserCommandLines accept() DialogButtonBox rejected() DCDialogUserCommandLines reject() valknut-0.4.9/valknut/ui/DCDialogHubListManager.ui0000664000076400007640000003372611136450450020214 0ustar ejsejs DCDialogHubListManager 0 0 510 261 0 0 Hub List 0 0 Public Qt::CustomContextMenu true QAbstractItemView::ExtendedSelection false true false true true 0 0 double click to hide the toolbar QFrame::NoFrame QFrame::Plain edit filter Qt::Horizontal QSizePolicy::Expanding 375 16 delete filter Filter false QFrame::VLine QFrame::Sunken Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. add filter Reload public hublist. Clears all public hubs then loads configured hublists. 0 0 double click to show the toolbar QFrame::HLine QFrame::Raised Bookmarks Qt::CustomContextMenu true QAbstractItemView::ExtendedSelection false true true true Name Server Description QFrame::NoFrame QFrame::Plain Add bookmark. Add Edit bookmark. Edit Remove bookmark. Remove Qt::Horizontal QSizePolicy::Expanding 20 0 Change the order of the bookmarks. Move up Qt::ToolButtonTextBesideIcon Qt::UpArrow Change the order of the bookmarks. Move down Qt::ToolButtonTextBesideIcon Qt::DownArrow Enable sorting of the bookmarks. Enable sorting Qt::ToolButtonTextBesideIcon Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Save Qt::ToolButtonTextBesideIcon 0 0 double click to hide the toolbar QFrame::NoFrame QFrame::Plain Qt::Horizontal QSizePolicy::Expanding 90 16 0 0 connect 0 0 double click to show the toolbar QFrame::HLine QFrame::Raised valknut-0.4.9/valknut/ui/DCDialogFileTransferInfo.ui0000664000076400007640000000620311136450450020535 0ustar ejsejs DCDialogFileTransferInfo 0 0 400 241 File Transfer Info true File false Size false 40 20 32000 16000 true false QFrame::HLine QFrame::Sunken Hash false true true Sources false true valknut-0.4.9/valknut/ui/DCDialogChat.ui0000664000076400007640000000547111136450450016222 0ustar ejsejs DCDialogChat 0 0 204 120 DCDialogChat Qt::Vertical 0 8 QFrame::NoFrame QFrame::Raised 0 1 QFrame::NoFrame QFrame::Raised 0 0 0 20 true false 0 0 &Send TextEdit_CHATINPUT PushButton_SEND valknut-0.4.9/valknut/ui/DCDialogOptions.ui0000664000076400007640000044224411136723755017014 0ustar ejsejs DCDialogOptions 0 0 920 657 Options QDialogButtonBox::Cancel|QDialogButtonBox::Save 1 0 false Tab Page 4 0 0 Identify Information Nick: false Description: false E-Mail: false Search Nick: false A little description. Add a tag to the description that show some information from you. Add Description Tag (<DCGUI ....>) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Extended hub count in tag (H:3/2/1) 0 0 Away Message: Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop false Your line speed. Speed: false Away Prefix: false Enable/Disable the Anti-spam option. Anti-Spam (email at home dot com) Your nick. The nick for hub searches. Your EMail. Photo 0 0 64 64 64 64 Transfer Shares Share Folders Qt::CustomContextMenu false true true Path Alias QFrame::VLine QFrame::Sunken Qt::Horizontal QSizePolicy::Expanding 380 20 0 0 Rebuild your sharelist. 0 0 Browse your own share list. 0 0 Show some information about your sharelist. 0 0 Add a folder to your sharelist. 0 0 Remove a folder from your sharelist. 0 0 Edit a folder from the sharelist. Share Settings If checked, files and folders starting with "." will not be shared. Do not share dot files and folders Check and recreate sharelist on startup Recreate every hour Disabled 0 Disable hash list Downloads Download Folder Open File Dialog. Move Finished Files to this Folder (empty = disabled) Open File Dialog. Download Queue Save Queue in minutes Disabled 0 Download Settings Maximum rate Unlimited KiB/s 1 0.000000000000000 99999999.000000000000000 0.100000000000000 Minimum segment size MiB 1 40960 Searching Auto-Search for new sources Search delay (seconds) 60 604800 60 1200 Qt::Vertical QSizePolicy::Expanding 10 50 Uploads Upload Settings Maximum upload slots Maximal upload connections. Unlimited 0 Maximum rate Unlimited KiB/s 1 0.000000000000000 99999999.000000000000000 0.100000000000000 Dynamic upload rate Maximum uploads to user Unlimited 0 Small file size (bytes) The maximum size of files for which extra upload slots will be granted. 1024 104857600 1024 65536 Open extra slots When total upload rate is below Disabled KiB/s 0 2147483647 0 Maximum extra slots to open 0 1000000 3 Qt::Vertical QSizePolicy::Expanding 10 50 Settings Transfer Request Timings Time to wait for a transfer response from the remote user. 5 600 5 Time to wait before a new transfer request is send to the remote user. 5 600 5 Resend Timeout (sec.) false Response Timeout (sec.) false If user quits hub, stop following transfers None Download Upload Both Compressed transfers Enable compressed transfers Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. 4096 20971520 1024 65536 Qt::Vertical QSizePolicy::Expanding 20 40 Connection 0 0 Mode 0 0 Mode Active Mode Passive Mode true Qt::Vertical QSizePolicy::Expanding 20 50 0 0 Passive Mode Settings Send warn message to remote user on active mode request No multi hub search ! No incoming connections ! false false 0 0 Active Mode Settings Transfers (TCP) Standard Listen Port: false The tcp listen port for standard incoming connections. 1 65535 1412 Encrypted Listen Port: The tcp listen port for incoming encrypted connections. 1 65535 19176 Hub Search UDP Listen Port: false The udp listen port for incoming search results. 1 65535 1412 Qt::Vertical QSizePolicy::Expanding 10 10 IP, Hostname or Interface Get the ip from the host. Test false Select a interface. Get Interface Get Internet IP Use IP address from the hub IP or Hostname true Network Interface Listen on IP Settings 0 0 Hub Connections Reconnect Counter false The time between a reconnect. Reconnect Timeout (sec.) false How often we reconnect to a hub. Never reconnect 0 9999 5 9999 Qt::Horizontal QSizePolicy::Expanding 20 0 Qt::Horizontal QSizePolicy::Expanding 20 0 Allow Force Move false Enable compressed hub to client communication (EXPERIMENTAL) Only used if searching a single connected hub. Adjust hub details in search results Qt::Vertical QSizePolicy::Expanding 10 90 Private Address Space (rfc1918) This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Ignore private address space connections Allow private address space connections only GUI 0 0 General Language File Open File Dialog. Select Language. Theme Test the new theme. Test 0 0 Units Auto true Byte GiB KiB MiB Application Font true false false true Open File Dialog. Data Folder Open File Dialog. Query Query on exit Query on File Delete Messages Show Status Messages Qt::Vertical QSizePolicy::Expanding 16 39 Transfer Transfer View Chunk Percent File Percent File Size Chunk Size Remaining Time Single Download Rate Single Remaining Time Multi Download Rate Multi Qt::Vertical QSizePolicy::Expanding 10 50 Chat Windows Open the chat window on incoming messages. Open Private Chat Window Use tab for every chat window 0 0 Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat options Enable emoticons in chat Show joins and parts Forward private to public chat false Joins and parts only for friends Allow sending chat to offline users Show chat from offline users Maximum paragraphs Unlimited 0 40000 Hide popups of more lines than Never hide popups 0 Send message Send message with Ctrl + Enter Enter Alt + Enter Alt + S Show send button Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Uncheck to use your default desktop web browser. Custom Browser true false Open File Dialog. Qt::Vertical QSizePolicy::Expanding 16 16 Colors Chat text Reverse chat colors Custom chat background true false Color Lists Alternating row colors Qt::Vertical QSizePolicy::Expanding 10 10 Commands Unknown chat commands If true, undefined chat commands will be sent to the hub. Send unknown /commands as chat Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads 1 60 Custom chat commands Qt::CustomContextMenu Right click to add or remove commands, double click on text to edit it. false true true Name Command Menus Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Custom menu commands 0 1 false false true Name Command Qt::Horizontal QSizePolicy::Expanding 30 0 Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Change the order of the commands. Move up Qt::ToolButtonTextBesideIcon Qt::UpArrow Change the order of the commands. Move down Qt::ToolButtonTextBesideIcon Qt::DownArrow 0 1 true %[mynick] = %[myNI] = Your nick %[mytag] = %[myTAG] = Your tag %[mydescription]= %[myDE] = Your description %[myemail] = %[myEM] = Your email %[myshare] = %[mySS] = Your share (exact) %[myshareshort] = %[mySSshort] = Your share (with units) %[myip] = %[myI4] = Your IP address %[nick] = %[userNI] = The user's nick %[tag] = %[userTAG] = The user's tag %[description] = %[userDE] = The user's description %[email] = %[userEM] = The user's email %[share] = %[userSS] = The user's exact share in bytes %[shareshort] = %[userSSshort] = The user's share with units %[ip] = %[userI4] = The user's IP address (if known) %[line:reason] = Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c = The default date and time %d = The day of the month as a number (01 to 31) %m = The month of the year as a number (01 to 12) %y = The year as a four digit number %H = The hour using 24-hour clock (00 to 23) %M = The minute as a number (00 to 59) %S = The second as a number (00 to 60) Client Client options Open new hub windows Minimized Normal Maximized Double clicking a user false Opens private chat Downloads filelist User-List right alignment Auto Away Mode false 0 0 QFrame::NoFrame QFrame::Plain 0 0 seconds false 0 0 999999999 0 0 Away after false Qt::Vertical QSizePolicy::Expanding 20 50 Icons Icon themes Application Icons false Emoticons false Userlist icons false To ensure all icons are changed, please restart valknut. false Qt::Vertical QSizePolicy::Expanding 20 50 Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Open folders in the right pane by double clicking them Qt::Vertical QSizePolicy::Expanding 20 50 Sound Sound Files Play a sound when connecting to a hub true Open File Dialog. Listen to the sound file. Play a sound when disconnecting from a hub true Open File Dialog. Listen to the sound file. Play a sound when sending a message true Open File Dialog. Listen to the sound file. Play a sound when receiving a message true Open File Dialog. Listen to the sound file. Play a sound when receiving first message true Open File Dialog. Listen to the sound file. Play a sound when your nick is mentioned in public chat true Open File Dialog Listen to the sound file. Qt::Vertical QSizePolicy::Expanding 20 20 Disable Sound Disable sound when away External Player true Open File Dialog. Log 0 0 Timestamp Private Chat Hub Chat 0 0 Logfile Logfile enabled Open File Dialog. Log completed downloads Log completed uploads Log all transfer details Qt::Vertical QSizePolicy::Expanding 20 20 Chat logging true false Append date to log file name Append hub name to log file name Append hub host to log file name Disable logging for public chat 0 0 Nick name filter true false Qt::Vertical QSizePolicy::Expanding 20 60 Enable logging 0 0 Qt::Horizontal QSizePolicy::Expanding 60 20 Qt::Vertical QSizePolicy::Expanding 20 70 Hub Lists Hub Lists Source Url's Qt::CustomContextMenu 2 true Qt::Horizontal QSizePolicy::Expanding 420 16 Add a URL to the list. 0 0 Edit hublist url. Remove a URL from the list. Store local Disabled 0 Update every hour false Qt::Horizontal QSizePolicy::Expanding 40 20 Enabling this option will slow closing valknut Include a menu item for removing public hubs Security Flood Protection Disabled 0 Don't Display Messages after X retry false 0 0 Kick the user for flooding (only for Operators) 0 0 Kick Message false Qt::Vertical QSizePolicy::Expanding 20 220 Transfer Cert/Key Certificate Private Key Open File Dialog. Open File Dialog. Create a new key and certificate pair. Generate Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Plugin folder Open File Dialog. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses false 0 3600 Ignore nicks false A QT regular expression of nicks to not auto respond to, case insensitive. Auto Responses Qt::CustomContextMenu false true true Trigger Case Sensitive Response Other Remote Encoding For a list of valid encodings, run "iconv -l" true true You must close and re-open each hub to use the new setting. false Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled Enable obsolete peer protocol extensions Qt::Vertical QSizePolicy::Expanding 20 50 TabWidget_DCGUI LineEdit_NICK LineEdit_SEARCHNICK LineEdit_EMAIL CheckBox_ANTISPAM LineEdit_DESCRIPTION ComboBox_SPEED TabWidget_GUI RadioButton_UNITAUTO RadioButton_UNITBYTE RadioButton_UNITKBYTE RadioButton_UNITMBYTE RadioButton_UNITGBYTE ComboBox_THEME PushButton_SETTHEME LineEdit_LANGUAGEFILE LineEdit_APPFONT CheckBox_SHOWSTATUSMESSAGE CheckBox_TV_PERCENTCHUNK CheckBox_TV_PERCENTFILE CheckBox_TV_CHUNKSIZE CheckBox_TV_FILESIZE CheckBox_TV_DOWNLOADRATESINGLE CheckBox_TV_ELAPSEDTIMESINGLE CheckBox_SOUNDDISABLED CheckBox_SOUNDDISABLEDAWAY GroupBox_EXTERNALPLAYER GroupBox_SOUNDPLAYCONNECT GroupBox_SOUNDPLAYDISCONNECT GroupBox_SOUNDPLAYSEND GroupBox_SOUNDPLAYRECEIVE GroupBox_SOUNDPLAYFIRSTRECEIVE GroupBox_SOUNDPLAYNICKMENTIONED LineEdit_EXTERNALPLAYER LineEdit_SOUNDFILECONNECT LineEdit_SOUNDFILEDISCONNECT LineEdit_SOUNDFILESEND LineEdit_SOUNDFILERECEIVE LineEdit_SOUNDFILEFIRSTRECEIVE LineEdit_SOUNDFILENICKMENTIONED CheckBox_TIMESTAMPPRIVATECHAT CheckBox_TIMESTAMPHUBCHAT CheckBox_AUTOAWAYMODE toggled(bool) Frame_AUTOAWAYTIME setEnabled(bool) CheckBox_CHATSHOWJOINSANDPARTS toggled(bool) CheckBox_CHATSHOWJOINSANDPARTSONLYFAV setEnabled(bool) RadioButton_ACTIVEMODE toggled(bool) ButtonGroup_ACTIVEMODESETTINGS setEnabled(bool) RadioButton_PASSIVEMODE toggled(bool) ButtonGroup_PASSIVEMODESETTINGS setEnabled(bool) RadioButton_IPHOSTNAME toggled(bool) PushButton_GETINTERNETIP setEnabled(bool) RadioButton_INTERFACE toggled(bool) PushButton_GETINTERFACE setEnabled(bool) DialogButtonBox accepted() DCDialogOptions accept() DialogButtonBox rejected() DCDialogOptions reject() CheckBox_SENDUNKNOWNCOMMANDS toggled(bool) LineEdit_ALLOWED_UNKNOWN_COMMANDS setDisabled(bool) CheckBox_ENABLE_ZPIPE toggled(bool) CheckBox_ENABLE_ZPIPE setEnabled(bool) valknut-0.4.9/valknut/ui/DCDialogSplash.ui0000664000076400007640000000663111136450450016574 0ustar ejsejs DCDialogSplash 0 0 300 278 230 222 202 230 222 202 230 222 202 Valknut true 230 222 202 230 222 202 230 222 202 Courier New true false 300 253 300 253 Courier New true true Qt::AlignCenter false valknut-0.4.9/valknut/ui/DCDialogMagnet.ui0000664000076400007640000001055411136450450016554 0ustar ejsejs DCDialogMagnet Magnet Link Details Link true TTH true Name true Size true Exact size true Action Start search true false Add to download queue Do nothing Do the same action next time without asking QDialogButtonBox::Cancel|QDialogButtonBox::Ok DialogButtonBox accepted() DCDialogMagnet accept() DialogButtonBox rejected() DCDialogMagnet reject() valknut-0.4.9/valknut/ui/DCDialogFileBrowser.ui0000664000076400007640000002174111136450450017564 0ustar ejsejs DCDialogFileBrowser 0 0 592 356 Filelist Browser 0 0 0 30 QFrame::StyledPanel QFrame::Raised Find Qt::ToolButtonTextBesideIcon Next Qt::ToolButtonTextBesideIcon Open Qt::ToolButtonTextBesideIcon Save Qt::ToolButtonTextBesideIcon Go to user Qt::ToolButtonTextBesideIcon Qt::Horizontal QSizePolicy::Expanding 220 20 Qt::Horizontal 0 0 QFrame::StyledPanel QFrame::Raised 0 0 Q3ListView::Extended true true false Folder true true Size true true QFrame::NoFrame QFrame::Plain false QFrame::StyledPanel QFrame::Raised Q3ScrollView::AlwaysOn Q3ScrollView::AlwaysOn Q3ListView::Extended true true Q3ListView::NoColumn Name true true Size true true Exact Size true true Type true true TTH true true QFrame::NoFrame QFrame::Plain false valknut-0.4.9/valknut/ui/DCDialogUserCommandEditor.ui0000664000076400007640000001277011136450450020727 0ustar ejsejs DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat true PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub true QDialogButtonBox::Cancel|QDialogButtonBox::Ok LineEdit_NAME LineEdit_COMMAND LineEdit_HUBIP LineEdit_TO DialogButtonBox accepted() DCDialogUserCommandEditor accept() DialogButtonBox rejected() DCDialogUserCommandEditor reject() valknut-0.4.9/valknut/ui/DCDialogTranslatorSettings.ui0000664000076400007640000000710411136450450021210 0ustar ejsejs DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish true Google Translate Settings for Yahoo Babelfish Choose the languages false Settings for Google Translate Input language Output language QDialogButtonBox::Cancel|QDialogButtonBox::Ok RadioButton_YAHOO toggled(bool) GroupBox_YAHOO setEnabled(bool) RadioButton_GOOGLE toggled(bool) GroupBox_GOOGLE setEnabled(bool) DialogButtonBox accepted() DCDialogTranslatorSettings accept() DialogButtonBox rejected() DCDialogTranslatorSettings reject() valknut-0.4.9/valknut/ui/Makefile.in0000664000076400007640000003177311144264654015536 0ustar ejsejs# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = valknut/ui DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/valknut-qt4.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DCLIB_CFLAGS = @DCLIB_CFLAGS@ DCLIB_LIBS = @DCLIB_LIBS@ DEBUGCOMPILE = @DEBUGCOMPILE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAMEWORK_DIR = @FRAMEWORK_DIR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LRELEASE = @LRELEASE@ LTLIBOBJS = @LTLIBOBJS@ LUPDATE = @LUPDATE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_FLAGS = @PACKAGE_FLAGS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ QT3SUPPORT_CFLAGS = @QT3SUPPORT_CFLAGS@ QT3SUPPORT_LIBS = @QT3SUPPORT_LIBS@ QTCORE_CFLAGS = @QTCORE_CFLAGS@ QTCORE_LIBS = @QTCORE_LIBS@ QTGUI_CFLAGS = @QTGUI_CFLAGS@ QTGUI_LIBS = @QTGUI_LIBS@ QTNETWORK_CFLAGS = @QTNETWORK_CFLAGS@ QTNETWORK_LIBS = @QTNETWORK_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SERIAL = @SERIAL@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UIC = @UIC@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ FORMS_UI = \ $(srcdir)/DCDialogAbout.ui \ $(srcdir)/DCDialogAskDownloadMode.ui \ $(srcdir)/DCDialogChat.ui \ $(srcdir)/DCDialogClient.ui \ $(srcdir)/DCDialogDebug.ui \ $(srcdir)/DCDialogDebugSettings.ui \ $(srcdir)/DCDialogEditServer.ui \ $(srcdir)/DCDialogEditSharePath.ui \ $(srcdir)/DCDialogEditTransfer.ui \ $(srcdir)/DCDialogFileBrowser.ui \ $(srcdir)/DCDialogFileTransferInfo.ui \ $(srcdir)/DCDialogForceMove.ui \ $(srcdir)/DCDialogHubFilter.ui \ $(srcdir)/DCDialogHubListManager.ui \ $(srcdir)/DCDialogHubProfile.ui \ $(srcdir)/DCDialogHubSearch.ui \ $(srcdir)/DCDialogMagnet.ui \ $(srcdir)/DCDialogMessage.ui \ $(srcdir)/DCDialogOptions.ui \ $(srcdir)/DCDialogSplash.ui \ $(srcdir)/DCDialogSpy.ui \ $(srcdir)/DCDialogTransfer.ui \ $(srcdir)/DCDialogTranslatorSettings.ui \ $(srcdir)/DCDialogUserCommandEditor.ui \ $(srcdir)/DCDialogUserCommandLines.ui \ $(srcdir)/DCDialogUsersList.ui FORMS_H = \ DCDialogAbout.h \ DCDialogAskDownloadMode.h \ DCDialogChat.h \ DCDialogClient.h \ DCDialogDebug.h \ DCDialogDebugSettings.h \ DCDialogEditServer.h \ DCDialogEditSharePath.h \ DCDialogEditTransfer.h \ DCDialogFileBrowser.h \ DCDialogFileTransferInfo.h \ DCDialogForceMove.h \ DCDialogHubFilter.h \ DCDialogHubListManager.h \ DCDialogHubProfile.h \ DCDialogHubSearch.h \ DCDialogMagnet.h \ DCDialogMessage.h \ DCDialogOptions.h \ DCDialogSplash.h \ DCDialogSpy.h \ DCDialogTransfer.h \ DCDialogTranslatorSettings.h \ DCDialogUserCommandEditor.h \ DCDialogUserCommandLines.h \ DCDialogUsersList.h # automake likes not bothering to run uic/moc BUILT_SOURCES = $(FORMS_H) DISTCLEANFILES = $(MOC_CPP) $(FORMS_H) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu valknut/ui/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu valknut/ui/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile installdirs: install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-dvi install-dvi-am \ install-exec install-exec-am install-html install-html-am \ install-info install-info-am install-man install-pdf \ install-pdf-am install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am DCDialogAbout.h : $(srcdir)/DCDialogAbout.ui $(UIC) -o $@ $< DCDialogAskDownloadMode.h : $(srcdir)/DCDialogAskDownloadMode.ui $(UIC) -o $@ $< DCDialogChat.h : $(srcdir)/DCDialogChat.ui $(UIC) -o $@ $< DCDialogClient.h : $(srcdir)/DCDialogClient.ui $(UIC) -o $@ $< DCDialogDebug.h : $(srcdir)/DCDialogDebug.ui $(UIC) -o $@ $< DCDialogDebugSettings.h : $(srcdir)/DCDialogDebugSettings.ui $(UIC) -o $@ $< DCDialogEditServer.h : $(srcdir)/DCDialogEditServer.ui $(UIC) -o $@ $< DCDialogEditSharePath.h : $(srcdir)/DCDialogEditSharePath.ui $(UIC) -o $@ $< DCDialogEditTransfer.h : $(srcdir)/DCDialogEditTransfer.ui $(UIC) -o $@ $< DCDialogFileBrowser.h : $(srcdir)/DCDialogFileBrowser.ui $(UIC) -o $@ $< DCDialogFileTransferInfo.h : $(srcdir)/DCDialogFileTransferInfo.ui $(UIC) -o $@ $< DCDialogForceMove.h : $(srcdir)/DCDialogForceMove.ui $(UIC) -o $@ $< DCDialogHubFilter.h : $(srcdir)/DCDialogHubFilter.ui $(UIC) -o $@ $< DCDialogHubListManager.h : $(srcdir)/DCDialogHubListManager.ui $(UIC) -o $@ $< DCDialogHubProfile.h : $(srcdir)/DCDialogHubProfile.ui $(UIC) -o $@ $< DCDialogHubSearch.h : $(srcdir)/DCDialogHubSearch.ui $(UIC) -o $@ $< DCDialogMagnet.h : $(srcdir)/DCDialogMagnet.ui $(UIC) -o $@ $< DCDialogMessage.h : $(srcdir)/DCDialogMessage.ui $(UIC) -o $@ $< DCDialogOptions.h : $(srcdir)/DCDialogOptions.ui $(UIC) -o $@ $< DCDialogSplash.h : $(srcdir)/DCDialogSplash.ui $(UIC) -o $@ $< DCDialogSpy.h : $(srcdir)/DCDialogSpy.ui $(UIC) -o $@ $< DCDialogTransfer.h : $(srcdir)/DCDialogTransfer.ui $(UIC) -o $@ $< DCDialogTranslatorSettings.h : $(srcdir)/DCDialogTranslatorSettings.ui $(UIC) -o $@ $< DCDialogUserCommandEditor.h : $(srcdir)/DCDialogUserCommandEditor.ui $(UIC) -o $@ $< DCDialogUserCommandLines.h : $(srcdir)/DCDialogUserCommandLines.ui $(UIC) -o $@ $< DCDialogUsersList.h : $(srcdir)/DCDialogUsersList.ui $(UIC) -o $@ $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: valknut-0.4.9/valknut/ui/DCDialogEditServer.ui0000664000076400007640000002462711136656514017434 0ustar ejsejs DCDialogEditServer 0 0 DCDialogEditServer 0 0 Settings 0 0 Host false 0 0 0 0 0 0 Description false 0 0 0 0 Name false Profile 0 0 Profile 0 0 Password false 0 0 Nick false Description EMail 0 0 0 0 0 0 Auto Connect Tag Extended hub count Secure Socket Layer Open chat exceptions false A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Remote encoding true &Profile true Qt::Horizontal QSizePolicy::Expanding 90 20 QDialogButtonBox::Cancel|QDialogButtonBox::Ok LineEdit_NAME LineEdit_HOST LineEdit_DESCRIPTION CheckBox_PROFILE LineEdit_NICK LineEdit_PASSWORD CheckBox_DESCRIPTION LineEdit_PROF_DESCRIPTION CheckBox_EMAIL LineEdit_EMAIL CheckBox_DESCRIPTIONTAG CheckBox_EXT_HUB_COUNT CheckBox_AUTOCONNECT CheckBox_SSL LineEdit_SUPPRESS_NICKS ComboBox_REMOTE_ENCODING DialogButtonBox accepted() DCDialogEditServer accept() DialogButtonBox rejected() DCDialogEditServer reject() valknut-0.4.9/valknut/ui/Makefile.am0000664000076400007640000000666411100337105015506 0ustar ejsejsFORMS_UI = \ $(srcdir)/DCDialogAbout.ui \ $(srcdir)/DCDialogAskDownloadMode.ui \ $(srcdir)/DCDialogChat.ui \ $(srcdir)/DCDialogClient.ui \ $(srcdir)/DCDialogDebug.ui \ $(srcdir)/DCDialogDebugSettings.ui \ $(srcdir)/DCDialogEditServer.ui \ $(srcdir)/DCDialogEditSharePath.ui \ $(srcdir)/DCDialogEditTransfer.ui \ $(srcdir)/DCDialogFileBrowser.ui \ $(srcdir)/DCDialogFileTransferInfo.ui \ $(srcdir)/DCDialogForceMove.ui \ $(srcdir)/DCDialogHubFilter.ui \ $(srcdir)/DCDialogHubListManager.ui \ $(srcdir)/DCDialogHubProfile.ui \ $(srcdir)/DCDialogHubSearch.ui \ $(srcdir)/DCDialogMagnet.ui \ $(srcdir)/DCDialogMessage.ui \ $(srcdir)/DCDialogOptions.ui \ $(srcdir)/DCDialogSplash.ui \ $(srcdir)/DCDialogSpy.ui \ $(srcdir)/DCDialogTransfer.ui \ $(srcdir)/DCDialogTranslatorSettings.ui \ $(srcdir)/DCDialogUserCommandEditor.ui \ $(srcdir)/DCDialogUserCommandLines.ui \ $(srcdir)/DCDialogUsersList.ui FORMS_H = \ DCDialogAbout.h \ DCDialogAskDownloadMode.h \ DCDialogChat.h \ DCDialogClient.h \ DCDialogDebug.h \ DCDialogDebugSettings.h \ DCDialogEditServer.h \ DCDialogEditSharePath.h \ DCDialogEditTransfer.h \ DCDialogFileBrowser.h \ DCDialogFileTransferInfo.h \ DCDialogForceMove.h \ DCDialogHubFilter.h \ DCDialogHubListManager.h \ DCDialogHubProfile.h \ DCDialogHubSearch.h \ DCDialogMagnet.h \ DCDialogMessage.h \ DCDialogOptions.h \ DCDialogSplash.h \ DCDialogSpy.h \ DCDialogTransfer.h \ DCDialogTranslatorSettings.h \ DCDialogUserCommandEditor.h \ DCDialogUserCommandLines.h \ DCDialogUsersList.h # automake likes not bothering to run uic/moc BUILT_SOURCES = $(FORMS_H) DISTCLEANFILES = $(MOC_CPP) $(FORMS_H) DCDialogAbout.h : $(srcdir)/DCDialogAbout.ui $(UIC) -o $@ $< DCDialogAskDownloadMode.h : $(srcdir)/DCDialogAskDownloadMode.ui $(UIC) -o $@ $< DCDialogChat.h : $(srcdir)/DCDialogChat.ui $(UIC) -o $@ $< DCDialogClient.h : $(srcdir)/DCDialogClient.ui $(UIC) -o $@ $< DCDialogDebug.h : $(srcdir)/DCDialogDebug.ui $(UIC) -o $@ $< DCDialogDebugSettings.h : $(srcdir)/DCDialogDebugSettings.ui $(UIC) -o $@ $< DCDialogEditServer.h : $(srcdir)/DCDialogEditServer.ui $(UIC) -o $@ $< DCDialogEditSharePath.h : $(srcdir)/DCDialogEditSharePath.ui $(UIC) -o $@ $< DCDialogEditTransfer.h : $(srcdir)/DCDialogEditTransfer.ui $(UIC) -o $@ $< DCDialogFileBrowser.h : $(srcdir)/DCDialogFileBrowser.ui $(UIC) -o $@ $< DCDialogFileTransferInfo.h : $(srcdir)/DCDialogFileTransferInfo.ui $(UIC) -o $@ $< DCDialogForceMove.h : $(srcdir)/DCDialogForceMove.ui $(UIC) -o $@ $< DCDialogHubFilter.h : $(srcdir)/DCDialogHubFilter.ui $(UIC) -o $@ $< DCDialogHubListManager.h : $(srcdir)/DCDialogHubListManager.ui $(UIC) -o $@ $< DCDialogHubProfile.h : $(srcdir)/DCDialogHubProfile.ui $(UIC) -o $@ $< DCDialogHubSearch.h : $(srcdir)/DCDialogHubSearch.ui $(UIC) -o $@ $< DCDialogMagnet.h : $(srcdir)/DCDialogMagnet.ui $(UIC) -o $@ $< DCDialogMessage.h : $(srcdir)/DCDialogMessage.ui $(UIC) -o $@ $< DCDialogOptions.h : $(srcdir)/DCDialogOptions.ui $(UIC) -o $@ $< DCDialogSplash.h : $(srcdir)/DCDialogSplash.ui $(UIC) -o $@ $< DCDialogSpy.h : $(srcdir)/DCDialogSpy.ui $(UIC) -o $@ $< DCDialogTransfer.h : $(srcdir)/DCDialogTransfer.ui $(UIC) -o $@ $< DCDialogTranslatorSettings.h : $(srcdir)/DCDialogTranslatorSettings.ui $(UIC) -o $@ $< DCDialogUserCommandEditor.h : $(srcdir)/DCDialogUserCommandEditor.ui $(UIC) -o $@ $< DCDialogUserCommandLines.h : $(srcdir)/DCDialogUserCommandLines.ui $(UIC) -o $@ $< DCDialogUsersList.h : $(srcdir)/DCDialogUsersList.ui $(UIC) -o $@ $< valknut-0.4.9/valknut/ui/DCDialogMessage.ui0000664000076400007640000001230011136450450016714 0ustar ejsejs DCDialogMessage 0 0 333 84 DCDialogMessage QFrame::NoFrame QFrame::Plain 0 0 true false 0 0 false 0 0 QFrame::NoFrame QFrame::Plain 0 0 0 0 0 0 Qt::Horizontal QSizePolicy::Expanding 50 20 0 0 QFrame::NoFrame QFrame::Plain Do not show this again. Qt::Horizontal QSizePolicy::Expanding 40 20 PushButton0 PushButton1 PushButton2 CheckBox_SHOW valknut-0.4.9/valknut/ui/DCDialogHubProfile.ui0000664000076400007640000001452311136655355017413 0ustar ejsejs DCDialogHubProfile Hub profile editor 0 0 Profile 0 0 Delete Qt::Horizontal QSizePolicy::Expanding 100 20 QDialogButtonBox::Cancel|QDialogButtonBox::Ok Settings Nick false Password false Description EMail 0 0 Auto Connect Tag Extended hub count Secure Socket Layer Open chat exceptions false A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Remote encoding true ComboBox_PROFILE PushButton_DELETE LineEdit_NICK LineEdit_PASSWORD CheckBox_DESCRIPTION LineEdit_PROF_DESCRIPTION CheckBox_EMAIL LineEdit_EMAIL CheckBox_DESCRIPTIONTAG CheckBox_EXT_HUB_COUNT CheckBox_AUTOCONNECT CheckBox_SSL LineEdit_SUPPRESS_NICKS ComboBox_REMOTE_ENCODING valknut-0.4.9/valknut/ui/DCDialogClient.ui0000664000076400007640000001516011136450450016555 0ustar ejsejs DCDialogClient 0 0 687 325 DCDialogClient Qt::Horizontal false false QFrame::VLine QFrame::Sunken QFrame::VLine QFrame::Sunken 0 0 32 0 User(s) 0 Qt::AlignCenter false 40 0 Share 0 Qt::AlignCenter false ... ... false Qt::Horizontal QSizePolicy::Expanding 70 20 Qt::CustomContextMenu true QAbstractItemView::ExtendedSelection false true false true true 0 0 Qt::CustomContextMenu Chat List valknut-0.4.9/valknut/ui/DCDialogHubFilter.ui0000664000076400007640000001106411136655355017235 0ustar ejsejs DCDialogHubFilter Hub Filter Settings Description 0 0 Min. User false Server 999999999 0 0 Filter false Name Qt::Horizontal QSizePolicy::Fixed 60 16 0 0 Contains false 0 0 QDialogButtonBox::Cancel|QDialogButtonBox::Ok LineEdit_FILTERNAME SpinBox_MINUSER LineEdit_CONTAINS CheckBox_NAME CheckBox_SERVER CheckBox_DESCRIPTION DialogButtonBox accepted() DCDialogHubFilter accept() DialogButtonBox rejected() DCDialogHubFilter reject() valknut-0.4.9/valknut/ui/DCDialogUsersList.ui0000664000076400007640000000266011136450450017275 0ustar ejsejs DCDialogUsersList 0 0 440 301 Users List Qt::CustomContextMenu QAbstractItemView::ExtendedSelection false true true User Photo Slot Ignore valknut-0.4.9/valknut/ui/DCDialogEditSharePath.ui0000664000076400007640000000457611136450450020035 0ustar ejsejs DCDialogEditSharePath 0 0 237 119 Edit share path Alias false 0 0 Path false QDialogButtonBox::Cancel|QDialogButtonBox::Ok LineEdit_PATH LineEdit_ALIAS DialogButtonBox accepted() DCDialogEditSharePath accept() DialogButtonBox rejected() DCDialogEditSharePath reject() LineEdit_PATH returnPressed() DCDialogEditSharePath accept() LineEdit_ALIAS returnPressed() DCDialogEditSharePath accept() valknut-0.4.9/valknut/ui/DCDialogEditTransfer.ui0000664000076400007640000000573011136450450017733 0ustar ejsejs DCDialogEditTransfer 0 0 307 192 Edit Transfer Settings Nick false Hub name false Hub address false Known hubs false QDialogButtonBox::Cancel|QDialogButtonBox::Ok LineEdit_NICK LineEdit_HUBNAME LineEdit_HUBHOST ComboBox_KNOWNHUBS DialogButtonBox accepted() DCDialogEditTransfer accept() DialogButtonBox rejected() DCDialogEditTransfer reject() valknut-0.4.9/valknut/ui/DCDialogForceMove.ui0000664000076400007640000000271311136450450017224 0ustar ejsejs DCDialogForceMove OP Force Move Please enter a host Please enter a message QDialogButtonBox::Cancel|QDialogButtonBox::Ok DialogButtonBox accepted() DCDialogForceMove accept() DialogButtonBox rejected() DCDialogForceMove reject() valknut-0.4.9/valknut/ui/DCDialogHubSearch.ui0000664000076400007640000010334211136450450017203 0ustar ejsejs DCDialogHubSearch 0 0 603 406 Hub Search Search Qt::CustomContextMenu QAbstractItemView::ExtendedSelection false true false true true Mode Search Results Q3ListView::Extended true true Q3ListView::NoColumn Count true true File true true Size true true TTH true true Path true true Nick true true Free Slots true true Total Slots true true IP true true Hub true true Host true true User QAbstractItemView::ExtendedSelection false true false true true Nick Hub Log true 0 0 QFrame::StyledPanel QFrame::Raised Results: false QFrame::Raised false 6 100 0 100 32767 QFrame::VLine QFrame::Sunken QFrame::VLine QFrame::Sunken Qt::Horizontal QSizePolicy::Expanding 40 10 Overall search status Ready 0 0 0 Qt::AlignHCenter true QFrame::VLine QFrame::Sunken 0 0 0/0 Qt::AlignHCenter true 0 0 Search 0 0 Search true QComboBox::NoInsert Start the search. Start Add a search to the searchqueue Add Clear search string and set search size, size mode and file type to default Reset Clear the search history Purge Type 1 User Any Audio Compressed Document Executable Picture Video Folder TTH Any size At least At most 0 0 0 11 B KiB MiB GiB Maximum results Unlimited 0 100000 20 Hubs 0 0 Hub Options Connected Hub false 0 0 Connected Hubs true 0 0 Refresh 0 0 0 0 Public Hubs Qt::Horizontal QSizePolicy::Expanding 200 20 0 0 Bookmark Hubs Filtered Hubs Filter 0 0 Live filters Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop Qt::Horizontal QSizePolicy::Expanding 30 10 0 0 Max Free Slots (0=off) 0 0 Search in path+file name only false 0 0 Free Slots false Qt::Horizontal QSizePolicy::Expanding 30 10 Include: false Exclude: false Apply Reset Qt::Horizontal QSizePolicy::Expanding 20 10 Qt::Horizontal QSizePolicy::Expanding 20 10 Expert 0 0 Expert 0 0 1 9999 20 0 0 Clients false Multi Search Qt::Horizontal QSizePolicy::Expanding 470 20 Qt::Horizontal QSizePolicy::Expanding 280 20 Enable Tag true TabWidget_SEARCH_PARAMETERS Combobox_SEARCH PushButton_SEARCH PushButton_ADDQUEUE LineEdit_SEARCHSIZE ComboBox_SEARCHUNIT ComboBox_SEARCHLIMIT ComboBox_SEARCHTYPE SpinBox_MAXRESULT RadioButton_CONNECTEDHUBS ComboBox_CONNECTEDHUBS PushButton_REFRESHCONNECTEDHUBS RadioButton_AVAILABLEHUBS RadioButton_BOOKMARKHUBS RadioButton_FILTEREDHUBS CheckBox_SEARCHFILEONLY SpinBox_FREESLOTS LineEdit_INCLUDE LineEdit_EXCLUDE PushButton_APPLYTEXTFILTER PushButton_RESETTEXTFILTER SpinBox_MAXTHREADS CheckBox_MULTISEARCH CheckBox_ENABLETAG TabWidget_HUBSEARCH TreeWidget_SEARCH LineEdit_LOGHUBS LineEdit_LOGTIME ListView_SEARCHRESULT TextEdit_LOG TreeWidget_SEARCHRESULTUSER valknut-0.4.9/valknut/ui/DCDialogDebugSettings.ui0000664000076400007640000000571611136450450020114 0ustar ejsejs DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Send Receive Both Qt::Horizontal QSizePolicy::Expanding 50 20 malloc info QDialogButtonBox::Cancel|QDialogButtonBox::Ok DialogButtonBox accepted() DCDialogDebugSettings accept() DialogButtonBox rejected() DCDialogDebugSettings reject() valknut-0.4.9/valknut/ui/DCDialogAbout.ui0000664000076400007640000000722411136450450016413 0ustar ejsejs DCDialogAbout 0 0 482 385 About QDialogButtonBox::Ok QFrame::NoFrame QFrame::Plain 0 0 true false false About Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Qt::AlignCenter false Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse Authors true License true DialogButtonBox accepted() DCDialogAbout accept() valknut-0.4.9/valknut/ui/DCDialogTransfer.ui0000664000076400007640000002415311136450450017125 0ustar ejsejs DCDialogTransfer 0 0 559 177 0 0 false Transfer List 0 0 Transfer true true Q3ListView::NoColumn Nick true true Hub true true Transfer true true File Name true true Remote File true true Local File true true TTH true true Wait Q3ListView::Extended true true true Q3ListView::NoColumn Nick true true Hub/File true true IP/Size true true State true true TTH true true Files true true true Q3ListView::NoColumn Local File / Nick true true Size / Hub true true Remote File true true State true true TTH true true Slots Qt::CustomContextMenu QAbstractItemView::SingleSelection false true false true true Nick Hub Slots Log Qt::CustomContextMenu true valknut-0.4.9/valknut/ui/DCDialogAskDownloadMode.ui0000664000076400007640000000403011136450450020344 0ustar ejsejs DCDialogAskDownloadMode File download Download mode? Multi Return Single Esc Download all files in this mode PushButton_MULTI PushButton_SINGLE CheckBox_SET_QUICK_OPTION PushButton_MULTI clicked() DCDialogAskDownloadMode accept() PushButton_SINGLE clicked() DCDialogAskDownloadMode reject() valknut-0.4.9/valknut/dceditserver.h0000664000076400007640000000327511077047132015677 0ustar ejsejs/*************************************************************************** dceditserver.h - description ------------------- begin : Fre Aug 29 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCEDITSERVER_H #define DCEDITSERVER_H #include #include "DCDialogEditServer.h" /** *@author Mathias Küster */ class DCConfigHubProfile; class DCEditServer : public QDialog, public Ui::DCDialogEditServer { Q_OBJECT public: /** construtor */ DCEditServer( QWidget * parent = 0 ); /** destructor */ virtual ~DCEditServer(); /** */ void Reset(); /** */ void SetProfile( DCConfigHubProfile * profile ); /** */ void GetProfile( DCConfigHubProfile * profile ); public slots: /** checks name and host are not empty */ virtual void accept(); private slots: /** */ void slotProfileButtonClicked(); /** */ void slotCheckBoxProfileToggled(bool); }; #endif valknut-0.4.9/valknut/dcshellcommandrunner.cpp0000664000076400007640000000600611142273466017755 0ustar ejsejs/*************************************************************************** dcshellcommandrunner.cpp - Valknut Shell Command Runner Implementation ------------------- begin : Wed Jul 2 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcshellcommandrunner.h" #include #include /** */ DCShellCommandRunner::DCShellCommandRunner( QString a, QObject * parent ) : QThread( parent ) { args = a; stop = false; } /** */ DCShellCommandRunner::~DCShellCommandRunner() { cancel(); /* the longest total sleep in run() is 1.1 seconds */ if ( !wait(1150) ) { printf("~DCShellCommandRunner: warning not finished\n"); } } /** */ void DCShellCommandRunner::run() { QString output; bool succeeded = false; QProcess process; process.start( args ); process.closeWriteChannel(); process.waitForFinished( 100 ); int i = 0; while ( ((process.state() == QProcess::Starting) || (process.state() == QProcess::Running)) && (i < 2400) && (stop == false) ) { process.waitForFinished( 50 ); i++; } if ( stop ) { /* just kill the damn process */ process.terminate(); QThread::msleep(100); process.close(); if ( process.state() != QProcess::NotRunning ) { process.kill(); QThread::msleep(100); } return; } if ( (process.state() == QProcess::NotRunning) ) { if ( process.exitStatus() == QProcess::NormalExit ) { int exitcode = process.exitCode(); if ( exitcode == 0 ) { output = QString( process.readAllStandardOutput() ).trimmed(); if ( output.isEmpty() ) { output = tr("Command produced no visible output."); } else { succeeded = true; } } else { output = tr("Process exited with status") + " " + QString::number(exitcode); } } else { output = tr("Process was killed or crashed."); } } else { output = tr("Process still running after 2 minutes, killing process..."); process.terminate(); QThread::msleep(1000); process.close(); if ( process.state() != QProcess::NotRunning ) { process.kill(); QThread::msleep(100); } } if ( stop == false ) // stop is only set to true when things are being deleted { emit finished( succeeded, output ); } } /** */ void DCShellCommandRunner::cancel() { stop = true; } valknut-0.4.9/valknut/cdialogpicturemap.cpp0000664000076400007640000000465611100336602017235 0ustar ejsejs/*************************************************************************** cdialogpicturemap.cpp - description ------------------- begin : Sat Apr 26 2003 copyright : (C) 2003-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "cdialogpicturemap.h" #include #include #include #include //Added by qt3to4: #include /** */ CDialogPictureMap::CDialogPictureMap( QWidget * parent, const char * name, bool modal, Qt::WFlags f ) #if QT_VERSION < 0x040000 : QDialog(parent,name,modal,f) #else : QDialog(parent,f) #endif { setModal(modal); setObjectName(name); m_pGridLayout = new QGridLayout(this); // Q3GridLayout is QGridLayout with margin and spacing set to zero m_pGridLayout->setMargin(0); m_pGridLayout->setSpacing(0); m_pLabel = new QLabel(this); m_pGridLayout->addWidget(m_pLabel,0,0); m_pLabel->show(); m_nX = m_nY = 0; m_pLabel->installEventFilter(this); } /** */ CDialogPictureMap::~CDialogPictureMap() { delete m_pGridLayout; delete m_pLabel; } /** */ void CDialogPictureMap::SetPixmap( QPixmap & pixmap ) { m_pLabel->setPixmap(pixmap); resize(pixmap.width(),pixmap.height()); } /** */ void CDialogPictureMap::GetXY( int & x, int & y ) { x = m_nX; y = m_nY; } /** event filter */ bool CDialogPictureMap::eventFilter( QObject * object, QEvent * event ) { if ((event->type() == QEvent::MouseButtonDblClick)&&((QLabel*)object==m_pLabel)) { QMouseEvent * e = (QMouseEvent*)event; m_nX = e->x(); m_nY = e->y(); //printf("EVENT %d %d!\n",e->x(),e->y()); accept(); } return QWidget::eventFilter( object, event ); // standard event processing } valknut-0.4.9/valknut/publichubsmodel.h0000664000076400007640000000733211100336602016361 0ustar ejsejs/*************************************************************************** publichubsmodel.h - Public Hub List Model header ------------------- begin : Mon Nov 5 2007 copyright : (C) 2007 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef PUBLICHUBSMODEL_H #define PUBLICHUBSMODEL_H #include #include #include #include /** * @author Edward Sheldrake * * This now doesn't really do anything since anything interesting * is done by PublicHubsProxy and probably QStandardItemModel * would be better, except you would need several QStandardItems * for each row (one for each column)? */ class PublicHubItem { public: /** Constructor */ PublicHubItem( const QString name, const QString server, const QString description, const ulonglong users, const QString country, const ulonglong shared, const ulonglong minshare, const QString extra ); /** Destructor */ ~PublicHubItem(); /** Hub name */ QString name; /** Hub address */ QString server; /** Hub description */ QString description; /** Hub geographic location */ QString country; /** Any extra fields from the XML hublist */ QString extra; /** Hub user count */ ulonglong users; /** Total shared on the hub */ ulonglong shared; /** Minimum shared needed to join the hub */ ulonglong minshare; }; /* it is the same for sorting and filtering */ #define PublicHubsProxyRole Qt::UserRole+6 class PublicHubsModel : public QAbstractItemModel { Q_OBJECT public: /** Constructor */ PublicHubsModel( QObject * parent = 0 ); /** Destructor */ virtual ~PublicHubsModel(); /** number of rows */ virtual int rowCount( const QModelIndex & index = QModelIndex() ) const; /** number of columns */ virtual int columnCount( const QModelIndex & index = QModelIndex() ) const; /** gets data */ virtual QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const; /** gets headings */ virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; /** */ virtual QModelIndex index( int row, int column, const QModelIndex & parent = QModelIndex() ) const; /** */ virtual QModelIndex parent( const QModelIndex & parent ) const; /** adds hub */ void addHub( const QString name, const QString address, const QString desc = "", const ulonglong users = 0, const QString country = "", const ulonglong shared = 0, const ulonglong minshare = 0, const QString extra = "" ); /** delete all data */ void clear(); /** * Delete the hub - the pointer given in the parameter will no longer be * valid after this is called. */ bool deleteHub( PublicHubItem * hub ); /** get all hubs */ QList getAll(); /** get a hub */ PublicHubItem * getItem( const QModelIndex & index ); private: /** list of all items */ QList itemList; }; #endif // PUBLICHUBSMODEL_H valknut-0.4.9/valknut/dchubsearch.h0000664000076400007640000001546511125260333015465 0ustar ejsejs/*************************************************************************** dchubsearch.h - description ------------------- begin : Fri Mar 15 2002 copyright : (C) 2002-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCHUBSEARCH_H #define DCHUBSEARCH_H /** *@author Mathias Küster */ #include #include #include #include #include "DCDialogHubSearch.h" class CMessageSearchResult; class CDCMessage; class CMessageLog; /* could also switch to QList */ #include #include /* _CCallback1 is a template class so forward decls don't really work */ #include class DC_ListResult; class QMdiSubWindow; class QEvent; class QResizeEvent; class QShowEvent; enum eGroupSearchResultType { egsrtNONE, egsrtFILE, egsrtSIZE, egsrtNICK, egsrtSLOTS_FREE, egsrtSLOTS_TOTAL, egsrtHUB, egsrtPATH, egsrtHOST, egsrtHASH, egsrtIP }; /** * Need to keep track of CSearchManager state which * may be changed by auto search or another search window. * * READY = no search is running (which window last used CSearchManager does not matter) * SEARCH = our search is running * OTHER = another search window is searching * AUTO = the auto search is running ("external" search) */ enum eGlobalSearchState { egssREADY, egssSEARCH, egssOTHER, egssAUTO }; class DC_QSearchTreeWidgetItem : public QTreeWidgetItem { public: /** constructor */ DC_QSearchTreeWidgetItem( QTreeWidget * parent ) : QTreeWidgetItem( parent ) { p_msg = 0; }; /** constructor */ DC_QSearchTreeWidgetItem( QTreeWidgetItem * parent ) : QTreeWidgetItem( parent ) { p_msg = 0; }; /** destructor */ virtual ~DC_QSearchTreeWidgetItem() {}; /** */ CDCMessage * p_msg; }; class DCHubSearch : public QWidget, private Ui::DCDialogHubSearch { Q_OBJECT public: /** construtor */ DCHubSearch( QWidget * parent = 0 ); /** destructor */ virtual ~DCHubSearch(); /** Get the MDI sub window we are in */ QMdiSubWindow * GetMdiSubWindow() { return m_pContainerWindow; } ; /** */ void InitDocument(); /** */ void DeInitDocument(); /** search result */ bool DC_SearchResult( CMessageSearchResult * MessageSearchResult ); /** callback function */ int DC_CallBack( CDCMessage * ); /** For searching from chat / transfer view */ void SetSearchForFile( QString file, eFileTypes filetype = eftALL, int sizepos = 0, ulonglong size = 0 ); /** To start search from another window prompting if another search is running */ void StartSearchWithPrompt(); protected: /** Adjust column sizes preserving user set size ratios */ void SizeColumnsPreservingRatios(); /** resize event handler */ virtual void resizeEvent( QResizeEvent * ); /** overridden so that the column widths are initialized on first show() */ virtual void showEvent( QShowEvent * event ); /** event filter */ virtual bool eventFilter( QObject * object, QEvent * event ); private: /** */ void DC_LogMessage( CMessageLog * MessageLog ); /** */ void AddLogMessage( QString message ); /** */ QString GetSearchQueryString(); /** show all search results */ void ShowResults( bool bClearList ); /** */ void SetSearchView( bool enabled ); /** get the search string with protocol */ CDCMessage * GetSearchObject(); /** */ void UpdateHidden( bool SearchFileOnly, int FreeSlots, bool Filter = false ); /** */ Q3ListViewItem * ShowSearchResult( CMessageSearchResult * MessageSearchResult, Q3ListView * parent ); /** */ Q3ListViewItem * ShowSearchResult( CMessageSearchResult * MessageSearchResult, DC_ListResult * parent ); /** */ bool AddSearchResult( CMessageSearchResult * MessageSearchResult, DC_ListResult * item ); /** */ void GroupSearchResults( eGroupSearchResultType type ); /** * Clearing the search results list also requires * clearing the hash used for grouping and zeroing the empty group pointer. */ void ClearSearchResults(); /** */ void RemoveSelectedSearch( QList * ); /** */ void startSearch(); /** */ void addHistory( CDCMessage * msg = 0 ); /** Needed both for right-click and double-click */ void DownloadFolder( Q3ListViewItem * item ); /** store all messages from udp socket */ CList * m_pMessageList; /** */ CList * m_pSearchQueryList; /** store all search results */ CList * m_pSearchResultList; /** search history */ CList * m_pSearchHistory; /** */ QMutex SocketCallbackMutex; /** */ QTimer m_Timer; /** current CSearchManager state */ eGlobalSearchState m_eSearchState; /** */ QMdiSubWindow * m_pContainerWindow; /** The last width that we adjusted the size of the file search result columns for */ int lastFileResultsWidth; /** The last width that we adjusted the size of the user search result columns for */ int lastUserResultsWidth; /** * Our callback function which we give to CSearchManager. * CSearchManager does not delete callback functions any more because * multiple search windows would not work with that. */ _CCallback1 * m_pOurCallback; /** Current grouping */ eGroupSearchResultType m_eCurrentGrouping; /** */ QHash m_GroupHash; /** */ DC_ListResult * m_pEmptyGroup; /** Keep count of number of results not shown */ int m_nFilteredResults; private slots: /** */ void timerDone(); /** */ void slotSearchReturnPressed(); /** */ void slotAddSearchQueue(); /** */ void slotReset(); /** */ void slotChangedFreeSlots( int free_slots ); /** */ void slotToggledSearchFileOnly( bool chkstate ); /** */ void slotDoubleClickedSearchResult( Q3ListViewItem * item ); /** */ void slotRightButtonClickedSearchResult( Q3ListViewItem *, const QPoint &, int ); /** current tab widget change slot */ void slotTabWidgetCurrentChange(QWidget*); /** */ void slotRefreshConnectedHubs(); /** */ void slotTextFilterResults(); /** */ void slotTextFilterReset(); /** */ void slotContextMenuSearch( const QPoint & ); /** */ void slotSearchSelected(int); /** */ void slotPurgeHistory(); /** */ void slotSizeLimitChanged(int index); }; #endif valknut-0.4.9/valknut/dceditserver.cpp0000664000076400007640000001141311077047132016223 0ustar ejsejs/*************************************************************************** dceditserver.cpp - description ------------------- begin : Fre Aug 29 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dceditserver.h" #include #include #include #include #include #include #include "dcguiutils.h" /** */ DCEditServer::DCEditServer( QWidget * parent ) : QDialog( parent ) { setupUi(this); ComboBox_REMOTE_ENCODING->addItem(QString()); DCGuiUtils::AddEncodings( ComboBox_REMOTE_ENCODING ); ComboBox_REMOTE_ENCODING->setCurrentIndex(0); GroupBox_PROFILE->hide(); adjustSize(); connect( PushButton_PROFILE, SIGNAL(clicked()), this, SLOT(slotProfileButtonClicked()) ); connect( CheckBox_PROFILE, SIGNAL(toggled(bool)), this, SLOT(slotCheckBoxProfileToggled(bool)) ); // reset values Reset(); } /** */ DCEditServer::~DCEditServer() { } /** */ void DCEditServer::accept() { if ( LineEdit_NAME->text().isEmpty() ) { QMessageBox::critical( this, windowTitle(), tr("Please enter a hubname.") ); return; } else if ( LineEdit_HOST->text().isEmpty() ) { QMessageBox::critical( this, windowTitle(), tr("Please enter a hubhost.") ); return; } else { QDialog::accept(); } } /** */ void DCEditServer::Reset() { LineEdit_PASSWORD->clear(); CheckBox_AUTOCONNECT->setChecked(false); CheckBox_SSL->setChecked(false); CheckBox_DESCRIPTIONTAG->setChecked(true); CheckBox_EXT_HUB_COUNT->setChecked(true); LineEdit_SUPPRESS_NICKS->clear(); ComboBox_REMOTE_ENCODING->setCurrentIndex(0); // disable profile slotCheckBoxProfileToggled(false); } /** */ void DCEditServer::SetProfile( DCConfigHubProfile * profile ) { LineEdit_NICK->setText( profile->m_sNick.Data() ); LineEdit_PASSWORD->setText( profile->m_sPassword.Data() ); CheckBox_AUTOCONNECT->setChecked( profile->m_bAutoConnect ); CheckBox_SSL->setChecked( profile->m_bSSL ); CheckBox_DESCRIPTIONTAG->setChecked( profile->m_bTag ); CheckBox_EXT_HUB_COUNT->setChecked( profile->m_bExtHubCount ); LineEdit_EMAIL->setText( profile->m_sEMail.Data() ); CheckBox_EMAIL->setChecked( profile->m_bEMail ); LineEdit_PROF_DESCRIPTION->setText( profile->m_sComment.Data() ); CheckBox_DESCRIPTION->setChecked( profile->m_bComment ); LineEdit_SUPPRESS_NICKS->setText( profile->m_sSuppressedNicks.Data() ); ComboBox_REMOTE_ENCODING->setEditText( profile->m_sRemoteEncoding.Data() ); // enable profile slotCheckBoxProfileToggled(true); } /** */ void DCEditServer::GetProfile( DCConfigHubProfile * profile ) { profile->m_sName = LineEdit_NAME->text().toAscii().constData(); profile->m_sNick = LineEdit_NICK->text().replace( " ", "\xa0").toAscii().constData(); profile->m_sPassword = LineEdit_PASSWORD->text().toAscii().constData(); profile->m_bAutoConnect = CheckBox_AUTOCONNECT->isChecked(); profile->m_bSSL = CheckBox_SSL->isChecked(); profile->m_bTag = CheckBox_DESCRIPTIONTAG->isChecked(); profile->m_bExtHubCount = CheckBox_EXT_HUB_COUNT->isChecked(); profile->m_bComment = CheckBox_DESCRIPTION->isChecked(); profile->m_sComment = LineEdit_PROF_DESCRIPTION->text().toAscii().constData(); profile->m_bEMail = CheckBox_EMAIL->isChecked(); profile->m_sEMail = LineEdit_EMAIL->text().toAscii().constData(); profile->m_sSuppressedNicks = LineEdit_SUPPRESS_NICKS->text().toAscii().constData(); profile->m_sRemoteEncoding = ComboBox_REMOTE_ENCODING->currentText().toAscii().constData(); } /** */ void DCEditServer::slotProfileButtonClicked() { if ( GroupBox_PROFILE->isVisible() ) { GroupBox_PROFILE->hide(); } else { GroupBox_PROFILE->show(); } } /** */ void DCEditServer::slotCheckBoxProfileToggled( bool on ) { CheckBox_PROFILE->setChecked(on); if ( !on ) { // hide profile window if disabled if ( GroupBox_PROFILE->isVisible() ) { PushButton_PROFILE->setChecked(false); slotProfileButtonClicked(); } } PushButton_PROFILE->setEnabled(on); } valknut-0.4.9/valknut/translations.pro0000664000076400007640000000627711106253045016306 0ustar ejsejsHEADERS = cdialogmessage.h \ cdialogpicturemap.h \ dcqtextedit.h \ dcwidget.h \ filteronlyproxy.h \ publichubsmodel.h \ publichubsproxy.h \ searchspymodel.h \ userlistmodel.h \ about.h \ dcapplicationevents.h \ dcchat.h \ dcclient.h \ dcconfig.h \ dcconnectionmanager.h \ dcdebug.h \ dceditserver.h \ dcedittransfer.h \ dcevent.h \ dcfilebrowser.h \ dcfilebrowseritems.h \ dcfilelistdecompressor.h \ dcfiletool.h \ dcfiletransferinfo.h \ dcfriendobject.h \ dcgui.h \ dcguiutils.h \ dchubfilter.h \ dchublistitems.h \ dchublistmanager.h \ dchubprofile.h \ dchubsearch.h \ dciconloader.h \ dcmenuhandler.h \ dcoptions.h \ dcpluginmanager.h \ dcshellcommandrunner.h \ dcsigterm.h \ dcsplash.h \ dcspy.h \ dctransferview.h \ dctransferviewitems.h \ dctranslator.h \ dcusercommandeditor.h \ dcuserslist.h SOURCES = cdialogmessage.cpp \ cdialogpicturemap.cpp \ dcqtextedit.cpp \ dcwidget.cpp \ filteronlyproxy.cpp \ publichubsmodel.cpp \ publichubsproxy.cpp \ searchspymodel.cpp \ userlistmodel.cpp \ dcapplicationevents.cpp \ dcchat.cpp \ dcclient.cpp \ dcconfig.cpp \ dcconnectionmanager.cpp \ dcdebug.cpp \ dceditserver.cpp \ dcedittransfer.cpp \ dcevent.cpp \ dcfilebrowser.cpp \ dcfilebrowseritems.cpp \ dcfilelistdecompressor.cpp \ dcfiletool.cpp \ dcfiletransferinfo.cpp \ dcgui.cpp \ dcguiutils.cpp \ dchubfilter.cpp \ dchublistmanager.cpp \ dchubprofile.cpp \ dchubsearch.cpp \ dciconloader.cpp \ dcmenuhandler.cpp \ dcoptions.cpp \ dcpluginmanager.cpp \ dcshellcommandrunner.cpp \ dcsigterm.cpp \ dcsplash.cpp \ dcspy.cpp \ dctransferview.cpp \ dctranslator.cpp \ dcusercommandeditor.cpp \ dcuserslist.cpp \ main.cpp FORMS = ui/DCDialogAbout.ui \ ui/DCDialogAskDownloadMode.ui \ ui/DCDialogChat.ui \ ui/DCDialogClient.ui \ ui/DCDialogDebugSettings.ui \ ui/DCDialogDebug.ui \ ui/DCDialogEditServer.ui \ ui/DCDialogEditSharePath.ui \ ui/DCDialogEditTransfer.ui \ ui/DCDialogFileBrowser.ui \ ui/DCDialogFileTransferInfo.ui \ ui/DCDialogForceMove.ui \ ui/DCDialogHubFilter.ui \ ui/DCDialogHubListManager.ui \ ui/DCDialogHubProfile.ui \ ui/DCDialogHubSearch.ui \ ui/DCDialogMagnet.ui \ ui/DCDialogMessage.ui \ ui/DCDialogOptions.ui \ ui/DCDialogSplash.ui \ ui/DCDialogSpy.ui \ ui/DCDialogTransfer.ui \ ui/DCDialogTranslatorSettings.ui \ ui/DCDialogUserCommandEditor.ui \ ui/DCDialogUserCommandLines.ui \ ui/DCDialogUsersList.ui TRANSLATIONS = ts/valknut.bs.ts \ ts/valknut.cs.ts \ ts/valknut.da.ts \ ts/valknut.de.ts \ ts/valknut.el.ts \ ts/valknut.en_GB.ts \ ts/valknut.es.ts \ ts/valknut.fi.ts \ ts/valknut.fr.ts \ ts/valknut.hu.ts \ ts/valknut.is.ts \ ts/valknut.it.ts \ ts/valknut.lv.ts \ ts/valknut.nb.ts \ ts/valknut.nl.ts \ ts/valknut.pl.ts \ ts/valknut.pt_br.ts \ ts/valknut.ro.ts \ ts/valknut.rus.ts \ ts/valknut.sk.ts \ ts/valknut.sr.ts \ ts/valknut.sr@latin.ts \ ts/valknut.sv.ts valknut-0.4.9/valknut/dcfiletransferinfo.cpp0000664000076400007640000001030511102701252017373 0ustar ejsejs/*************************************************************************** dcfiletransferinfo.cpp - description ------------------- begin : Sam Jul 13 2002 copyright : (C) 2002-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcfiletransferinfo.h" #include #include #include #include #include #include #include #include #include "dcconfig.h" #include "dctransferview.h" #include "dcguiutils.h" #include "dciconloader.h" #include /** */ DCFileTransferInfo::DCFileTransferInfo( CString filename, QWidget * parent ) : QWidget( parent ) { setupUi(this); setWindowIcon( g_pIconLoader->GetPixmap(eiDOWNLOAD) ); setAttribute(Qt::WA_DeleteOnClose); QFileInfo fi(QString::fromAscii(filename.Data())); setWindowTitle( fi.fileName() + " - " + tr("File Transfer Info") ); m_sFileName = filename; InitDocument(); connect( &m_Timer, SIGNAL(timeout()), SLOT(timerDone()) ); m_Timer.setSingleShot( true ); m_Timer.start( 0 ); } /** */ DCFileTransferInfo::~DCFileTransferInfo() { m_Timer.stop(); } /** */ void DCFileTransferInfo::InitDocument() { DCFileChunkObject * pFileChunk; if ( g_pTransferView ) { if ( (pFileChunk=g_pTransferView->DLM_QueueGetFileChunk(m_sFileName)) != 0 ) { LineEdit_FILENAME->setText( pFileChunk->m_sLocalFile.Data() ); LineEdit_HASH->setText( pFileChunk->m_sHash.Data() ); delete pFileChunk; } } progressBar1->setMinimum(0); } /** */ void DCFileTransferInfo::timerDone() { if ( g_pTransferView ) { DCFileChunkObject * pFileChunk; if ( (pFileChunk=g_pTransferView->DLM_QueueGetFileChunk(m_sFileName)) != 0 ) { LineEdit_FILESIZE->setText( DCGuiUtils::GetSizeString(pFileChunk->m_nSizeDone) + " / " + DCGuiUtils::GetSizeString(pFileChunk->m_nSize) ); LineEdit_SOURCES->setText( QString().setNum(pFileChunk->m_nReferenceCount) ); if ( pFileChunk->m_nSize > (ulonglong) INT_MAX ) { progressBar1->setMaximum((int) (pFileChunk->m_nSize/1048576)); progressBar1->setValue((int) (pFileChunk->m_nSizeDone/1048576)); } else { progressBar1->setMaximum((int) pFileChunk->m_nSize); progressBar1->setValue((int) pFileChunk->m_nSizeDone); } int x1,x2; DCChunkObject * ChunkObject; QPainter pa; QPixmap p(PixmapLabel_CHUNKINFO->size()); p.fill(Qt::white); int width = p.width(); int area = width * p.height(); pa.begin(&p); if ( pFileChunk->m_nSize != 0 ) { ChunkObject = 0; while( (ChunkObject=pFileChunk->m_Chunks.Next(ChunkObject)) != 0 ) { if ( ChunkObject->m_eChunkState == ecsFREE ) pa.setPen( Qt::red ); else pa.setPen( Qt::green ); x1 = (ChunkObject->m_nStart*area/pFileChunk->m_nSize); x2 = (ChunkObject->m_nEnd*area/pFileChunk->m_nSize); int ys,xs,ye,xe,y; xs = x1%width; ys = (x1-xs)/width; xe = x2%width; ye = (x2-xe)/width; // printf("%d %d %d %d\n",xs,xe,ys,ye); for(y=ys;y<=ye;y++) { if( (y==ys) && (y==ye) ) pa.drawLine( xs, y, xe, y ); else if ( y==ys ) pa.drawLine( xs, y, width, y ); else if ( y==ye ) pa.drawLine( 0, y, xe, y ); else pa.drawLine( 0, y, width, y ); } } } delete pFileChunk; pa.end(); PixmapLabel_CHUNKINFO->setPixmap(p); } } m_Timer.setSingleShot( true ); m_Timer.start( 5000 ); } valknut-0.4.9/valknut/search-result-columns.h0000664000076400007640000000305211134733357017451 0ustar ejsejs/*************************************************************************** search-result-columns.h - Column numbers for search results list ------------------- begin : Sun Jan 18 2009 copyright : (C) 2009 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* They are needed in dcwidget.cpp */ #ifndef SEARCH_RESULT_COLUMNS #define SEARCH_RESULT_COLUMNS /* column numbers for the search results listview */ #define RESULTS_COLUMN_COUNT 0 #define RESULTS_COLUMN_FILE 1 #define RESULTS_COLUMN_SIZE 2 #define RESULTS_COLUMN_TTH 3 #define RESULTS_COLUMN_PATH 4 #define RESULTS_COLUMN_NICK 5 #define RESULTS_COLUMN_FREESLOTS 6 #define RESULTS_COLUMN_TOTALSLOTS 7 #define RESULTS_COLUMN_IP 8 #define RESULTS_COLUMN_HUB 9 #define RESULTS_COLUMN_HOST 10 #endif /* SEARCH_RESULT_COLUMNS */ valknut-0.4.9/valknut/dcapplicationevents.h0000664000076400007640000000272511074173623017254 0ustar ejsejs/*************************************************************************** dcapplicationevents.h - description ------------------- begin : Don Aug 21 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCAPPLICATIONEVENTS_H #define DCAPPLICATIONEVENTS_H #include #include /** *@author Mathias Küster */ class DCApplicationEvents : public QObject { Q_OBJECT public: /** construtor */ DCApplicationEvents(); /** destructor */ virtual ~DCApplicationEvents(); /** user input event timer */ unsigned int m_nNoUserInputTimer; protected: /** */ virtual bool eventFilter( QObject* object, QEvent* event ); }; #endif valknut-0.4.9/valknut/dctransferview.h0000664000076400007640000001175311074173623016244 0ustar ejsejs/*************************************************************************** dctransferview.h - description ------------------- begin : Sat Feb 23 2002 copyright : (C) 2002-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCTRANSFERVIEW_H #define DCTRANSFERVIEW_H /** *@author Mathias Küster */ #include #include #include #include #include #include #include "DCDialogTransfer.h" class Q3ListViewItem; class DCTransferQueueParent; class DCTransferListItem; class DCFileBrowser; class QTimer; class QTextEdit; class QResizeEvent; class QShowEvent; typedef QMap ActiveTransferMap; typedef QMap QueueParentMap; typedef QMap TransferQueueMap; class DCTransferView : public QWidget, private Ui::DCDialogTransfer, public CDownloadManager { Q_OBJECT public: /** construtor */ DCTransferView( QWidget * parent = 0 ); /** destructor */ virtual ~DCTransferView(); /** */ void InitDocument(); /** */ void DeInitDocument(); /** */ void NewLocalFileBrowser( const bool lock ); /** */ void NewFileBrowser( QString nick, QString hubname, QString hubhost, QString share, QString jumpto = QString::null, QStringList dirs = QStringList() ); /** */ bool IsUserInQueue( QString Nick, QString Hubname ); /** returns the list of the local files names in the queue list. The path is included.*/ void GetLocalFilesList( QStringList & LocalFiles, ulonglong size = 0); /** * Returns the list of the local files names in the queue list that match the TTH * falling back to size if the queue TTH is empty. Use the method with just * size if you have an empty TTH. */ void GetLocalFilesList( QStringList & LocalFiles, QString tth, ulonglong size ); /** download manager callback function */ virtual int DC_DownloadManagerCallBack( CDCMessage * ); protected: /** Adjust column sizes preserving user set size ratios */ void SizeColumnsPreservingRatios(); /** overridden so that the column widths are initialized on first show() */ virtual void showEvent( QShowEvent * event ); /** resize event handler */ virtual void resizeEvent( QResizeEvent * ); private: /** */ void MessageSlot( CMessageDMSlotObject * msg ); /** */ void MessageLog( CMessageLog * msg ); /** */ void MessageTransfer( CMessageDMTransferObject * msg ); /** */ void ConnectToAllHubs(); /** */ void SearchFileClone(QString filename, ulonglong size); /** */ ulonglong FindTransferID( Q3ListViewItem * item ); /** */ eConnectionState GetTransferDirection( ulonglong sid ); /** */ bool GetTransferMessageObject( Q3ListViewItem * item, CMessageDMTransferObject * obj ); /** */ bool UpdateTransferWaitList( CMessageDMFileObject * msg ); /** */ bool UpdateLocalFileList( CMessageDMFileObject * msg ); /** */ void EditExistingTransfer( QString & nick, QString & hubname, QString & hubhost, CList * list ); /** */ QList * pMessageList; /** */ ActiveTransferMap m_ActiveTransferMap; /** */ QMutex m_ActiveTransferMapMutex; /** */ QMutex * m_pMessageQueueMutex; /** */ QTimer * Timer; /** */ TransferQueueMap m_QueueMap; /** */ QMutex m_QueueMapMutex; /** */ QueueParentMap m_QueueLocalMap; /** */ QMutex m_QueueLocalMapMutex; /** Last width the transfer list has been adjusted for */ int lastTransfersWidth; /** Last width the wait list has been adjusted for */ int lastWaitWidth; /** Last width the files list has been adjusted for */ int lastFilesWidth; /** Last width the slots list has been adjusted for */ int lastSlotsWidth; private slots: /** */ void timerDone(); /** */ void slotRightButtonClickedTransferList( Q3ListViewItem*, const QPoint &, int ); /** */ void slotRightButtonClickedTransferWaitList( Q3ListViewItem*, const QPoint &, int ); /** */ void slotRightButtonClickedLocalFilesList( Q3ListViewItem*, const QPoint &, int ); /** */ void slotTabWidgetCurrentChange(QWidget*); /** */ void slotDoubleClickedTransferWaitList( Q3ListViewItem* ); /** */ void slotContextMenuUserSlotList( const QPoint & ); /** */ void slotRightButtonClickedLog( const QPoint& ); }; /** */ extern DCTransferView * g_pTransferView; #endif valknut-0.4.9/valknut/icons/0000775000076400007640000000000011144264653014153 5ustar ejsejsvalknut-0.4.9/valknut/icons/ssl_no.png0000664000076400007640000000147111126705363016157 0ustar ejsejsPNG  IHDRasRGBbKGD pHYs  tIME  "JIDAT8mOhU?ohYԨ$( %ӓQ$V-"œA xZi9Ki꭫hmmJuۤl~}3a-ҹ̛|ofUPUr|oQ*kn4Z9abH/XZ*'P/[YVpPk'4>0?H8Q\^^|cNElL9>8s;Nq5W.W?˻'N >{>X7s}Je/P?wl6 6K7~ro&'[u6\׿ JY\LcvEcd%X ]四ۛ)\m"*YN]O3˘.Gwů5wuib89`fS-k'w+ So P'Vk2jty l tz3@66kpN.NO.@-ϠZW ltPmJ_@cV:!L$D{WYI H-Y4% &7m@A &*TH{A6?R1i=+(Bd7hnIENDB`valknut-0.4.9/valknut/icons/usericons.xpm0000664000076400007640000045571311046307162016724 0ustar ejsejs/* XPM */ static char * usericons_xpm[] = { "144 512 313 2", " c None", ". c #C6CAB6", "+ c #8A966E", "@ c #AAB292", "# c #4E563E", "$ c #626A4E", "% c #B2BA9E", "& c #9AA682", "* c #D2D6C6", "= c #767E5E", "- c #525642", "; c #DEE2D6", "> c #FAFAF6", ", c #9EA682", "' c #464E3A", ") c #EAEAE2", "! c #363A2A", "~ c #323626", "{ c #000000", "] c #C2CAB2", "^ c #AEB69A", "/ c #9AA27E", "( c #CED2C2", "_ c #76825E", ": c #DADECE", "< c #E6EADE", "[ c #F2F2EE", "} c #BAC2AA", "| c #DEDEDE", "1 c #727A5A", "2 c #6A7256", "3 c #969E7A", "4 c #2E2E22", "5 c #6E7656", "6 c #CACEBE", "7 c #828A66", "8 c #DCDCDC", "9 c #929A76", "0 c #868E6A", "a c #5E624A", "b c #666E52", "c c #C6CEBA", "d c #E2E6DA", "e c #4A523E", "f c #5A5E46", "g c #6A7252", "h c #BEC6AE", "i c #FFFFFF", "j c #8E9A72", "k c #5E664A", "l c #A6AE8E", "m c #FEFEFE", "n c #020202", "o c #B6BEA6", "p c #BEBEBE", "q c #BEC2AA", "r c #5A6246", "s c #A2AA88", "t c #7E8A66", "u c #B2BAA2", "v c #A2AE8E", "w c #3E4232", "x c #22261E", "y c #7A8662", "z c #828E66", "A c #1E221A", "B c #424636", "C c #323232", "D c #EEEEE6", "E c #D6DACA", "F c #2A2A22", "G c #F6F6F2", "H c #4A4A4A", "I c #12120E", "J c #AEB696", "K c #3A3E2E", "L c #0E0E0A", "M c #525252", "N c #0202FE", "O c #1A1AFE", "P c #1E1EFE", "Q c #2A2AFE", "R c #2626FE", "S c #3A3AFE", "T c #151515", "U c #4242FE", "V c #D7D7D7", "W c #434343", "X c #5252FE", "Y c #CDCDCD", "Z c #0B0B0B", "` c #5656FE", " . c #9FA19A", ".. c #D5D5D5", "+. c #6666FE", "@. c #6A6AFE", "#. c #F4F4F4", "$. c #6D6DFE", "%. c #CACACA", "&. c #EDEDED", "*. c #7070FE", "=. c #F6F6F6", "-. c #B2B2B2", ";. c #6F6FFE", ">. c #B1B1B1", ",. c #7171FE", "'. c #F5F5F5", "). c #5E5EFE", "!. c #C9C9C9", "~. c #ECECEC", "{. c #6262F5", "]. c #FDFDFD", "^. c #4646FE", "/. c #484AE8", "(. c #DADBDA", "_. c #161516", ":. c #D3D3D3", "<. c #5C585C", "[. c #595BEA", "}. c #C2C2C2", "|. c #828282", "1. c #9E9E9E", "2. c #6A4A5A", "3. c #AAAAAA", "4. c #929292", "5. c #CECECE", "6. c #6E6E6E", "7. c #A2A2A6", "8. c #969696", "9. c #424242", "0. c #524242", "a. c #FEE6CE", "b. c #621202", "c. c #42221A", "d. c #622A22", "e. c #523232", "f. c #868686", "g. c #BA7A02", "h. c #FEEEFE", "i. c #D6D6D6", "j. c #E6E6E6", "k. c #EEEEEE", "l. c #B6B6B6", "m. c #5A5A5A", "n. c #861A02", "o. c #FEC6B6", "p. c #D65202", "q. c #C64A02", "r. c #B67A62", "s. c #521A02", "t. c #B64A1A", "u. c #FEAE9E", "v. c #FEB686", "w. c #E64A0A", "x. c #565656", "y. c #CEBECE", "z. c #8E8E8E", "A. c #A64A2A", "B. c #FEC66A", "C. c #C64A0A", "D. c #863202", "E. c #FEBEB6", "F. c #A65222", "G. c #8E2202", "H. c #FE5202", "I. c #E6AE8E", "J. c #EEA696", "K. c #FE5A02", "L. c #520A02", "M. c #626262", "N. c #DE9202", "O. c #C6BEC6", "P. c #B63202", "Q. c #DE6232", "R. c #FEA68E", "S. c #EE8E72", "T. c #FE9E7A", "U. c #FE9662", "V. c #962A02", "W. c #A6A6A6", "X. c #FE5A12", "Y. c #FEAE86", "Z. c #EE5A12", "`. c #BE7A62", " + c #EE3A02", ".+ c #F6B69E", "++ c #B64202", "@+ c #EE8E7A", "#+ c #FE9E86", "$+ c #DE4A02", "%+ c #7A7A7A", "&+ c #966202", "*+ c #AEAEAE", "=+ c #3A3A3A", "-+ c #420A02", ";+ c #FECEC6", ">+ c #F6C6C6", ",+ c #D66242", "'+ c #CE7A62", ")+ c #8E624A", "!+ c #9E6A52", "~+ c #96523A", "{+ c #3A0202", "]+ c #FE8652", "^+ c #FEA686", "/+ c #D63A02", "(+ c #FEB6AE", "_+ c #8E2A02", ":+ c #C67242", "<+ c #9E7A62", "[+ c #FEAE7A", "}+ c #621A12", "|+ c #02FE02", "1+ c #4A2212", "2+ c #E6622A", "3+ c #AE4A12", "4+ c #BE5A2A", "5+ c #FEE6D6", "6+ c #FEAE96", "7+ c #9E5242", "8+ c #5A1A02", "9+ c #FEBEA6", "0+ c #722202", "a+ c #A63A02", "b+ c #EE7A3A", "c+ c #CEA696", "d+ c #96625A", "e+ c #7A1202", "f+ c #FEB696", "g+ c #FECECE", "h+ c #6A4242", "i+ c #FE0202", "j+ c #420202", "k+ c #622A12", "l+ c #C65A0A", "m+ c #C6520A", "n+ c #FE6212", "o+ c #9E421A", "p+ c #D65212", "q+ c #964A22", "r+ c #965A3A", "s+ c #FEA672", "t+ c #FED6B6", "u+ c #FEFE02", "v+ c #96A6A6", "w+ c #CE7A72", "x+ c #F65202", "y+ c #AE5A22", "z+ c #E69E7A", "A+ c #C6866A", "B+ c #5A525A", "C+ c #CE6A6A", "D+ c #C6C6C6", "E+ c #9E969E", "F+ c #262626", "G+ c #724A32", "H+ c #3A0A02", "I+ c #7A320A", "J+ c #8E3A02", "K+ c #FEB68E", "L+ c #DE5A12", "M+ c #AE7252", "N+ c #3E3E3E", "O+ c #EEF6F6", "P+ c #329E32", "Q+ c #6A626A", "R+ c #1A0A1A", "S+ c #864A32", "T+ c #72220A", "U+ c #BEB6BE", "V+ c #5A1A12", "W+ c #1A0202", "X+ c #222222", "Y+ c #2A2A2A", "Z+ c #FE520A", "`+ c #D64202", " @ c #FE5A1A", ".@ c #AE3A02", "+@ c #FEE2B2", "@@ c #0E0E0E", "#@ c #1A1C14", "$@ c #FEAA26", "%@ c #D4D6D1", "&@ c #EBECE8", "*@ c #010101", "=@ c #DFE1DB", "-@ c #EEEFE9", ";@ c #0F110C", ">@ c #040403", ",@ c #F2F3EF", "'@ c #FAFBF9", ")@ c #E5E6E1", "!@ c #E3E5DF", "~@ c #E5E8E1", "{@ c #DADADA", "]@ c #BDBFB8", "^@ c #B77801", "/@ c #C3943C", "(@ c #D9B777", "_@ c #CFA351", ":@ c #0F0F0F", "<@ c #F0F0F0", "[@ c #E9E9E9", "}@ c #E1E1E1", "|@ c #A4A4A4", "1@ c #CCCCCC", "2@ c #131313", "3@ c #BABABA", "4@ c #5556E7", "5@ c #B63A02", "6@ c #A65A2A", "7@ c #FE6202", "8@ c #3C3CDC", " . . . . . . . + + + @ # # $ ", " . % % & & & & & % . . . . + * * * + = @ @ # - ; > , ' # ) ! ~ ' ' { { { { ", " ] ^ / + % & & % % % + ( * * * * + _ = . $ $ $ $ @ @ # - > : ) < [ } $ ' | 1 2 3 4 5 * 6 7 { 8 8 8 8 { ", ". ^ % % & 9 + * ^ ^ 0 * * * * * . + = = a a . . . $ $ b b b $ $ @ @ # # > c < d : 3 e f e 5 } 1 ' : g e + h . + 4 { 8 i i i i 8 { ", ". ^ ^ ^ & j % % % % j * % % % & j + + * * * * * . _ = a k g g a a . . . = _ b $ $ $ $ @ l @ $ $ $ $ * * f - m [ ; [ . / f - 3 , n $ 9 } 6 $ o g h p q o # { 8 i i i i 8 { ", "% & & , / 9 + + + j 9 * ^ ^ ^ / q q j j + + + * * * * = = + a r g b r r g g a r ] _ = = = = $ b $ @ = b b b b $ $ * * } } * * $ m l s [ @ # # / 3 $ f n 9 c + / t ( $ } q c j = n { { 8 { i i { 8 { { { ", " % + 9 9 0 7 + + % & & & & q } & & q q j 9 + + 0 . * * _ = = c + a k 2 g k k 2 2 r k 2 2 a a = = + + + = _ = $ $ $ $ $ b - - * * } q % u } } * * g + f v w - 3 3 $ e # k n x + d : g d . 5 3 s ' 1 y 2 5 { 8 8 i { i i { 8 { 8 8 { ", " ^ 9 j z g k 0 9 9 + q q & & / ^ & & q } + 0 + + c * + = . . + k 0 r r b b r r 2 b r r g g a ! = + v s + 0 + + = = = $ # # # # * * } } % % q q % % } } u = k > ^ h l / $ # # f f $ n A ^ . > 1 : = # * + ~ + / ] B { 8 i i i i i i i 8 i 8 { ", " % j 9 0 r 7 z g 7 9 9 j q } & / / % % / / ^ / & g + + + . . c c q . . + k + + + k r 2 g k k 2 2 r k # ! = + + 0 + + + + + + = = - - - - * * } q % u o p % % q q % % 0 = 2 o . s v 3 B f f f f k n C % 9 b y D ( _ + ~ E 1 w C { 8 i i i i i i i 8 { ", " % + 9 + 7 2 0 0 r z j j 9 = q & & / % % / / % % & & / 2 + 0 + + c . q ^ } 6 + r g 0 + + + r r b b a r # e e ! 1 + + + + + 0 + 0 0 + = # # # # * v % % q q % % } q u % 0 0 + _ k [ s ] s 2 # f f f f $ n f & 3 E o ( t : B ( < f k { 8 i i i i i 8 { ", " % + 9 j j z r 2 z j + + 9 = b + ^ ^ / & % ^ / / / g b + + + + . 6 q } . + b b + + + + k r # # - - ! ! = + + + 0 + 0 j + + + = - - - - * s s s % % } o % % z 0 + z = = 2 } h l & & # f f f f f n x w 1 5 < 9 k y $ 5 $ h : A { 8 i i i i i 8 { ", " ^ 9 j j 9 j z 7 9 9 9 9 j _ g b 2 + % ^ / & & 2 2 + 0 + + + c . + b b + + + # - # ! ! = 1 + 0 + + + 0 + = + = # # # # l l l l s l % q 0 7 + z = = $ ) l } & 3 e f f f k k n $ l . 0 r g 5 5 o s ' - { 8 i i i i i 8 { ", " j = = = = = = = = = = = = = b b g g / b g + 0 + + 0 b b + e ~ ! _ = _ _ 0 + + + = = + = - - - - v l s l v 0 + 0 = = f m s 6 s & # f f k n 4 f A A ' ' _ 6 t 0 F 5 { 8 i 8 i i i 8 i 8 { ", "= B B B B B B B B B B B B B B F 2 2 g + = _ b ~ ! = _ = _ 0 + 0 = _ # # # # l l s z = = ' G 6 5 5 f k n 4 A H I 5 ) k $ B { 8 8 8 { 8 8 8 { 8 8 8 { ", "= B + B + B + B + B B B B B B 4 + = = _ = g _ = _ = = = - - s = n ' h J n 4 k K o L { { { { { { { { { { { ", " 4 F 4 F 4 F 4 x 4 4 F 4 4 4 g b g g b g g g _ = _ x 4 ", " ] ] ] c ] 0 + l # ", " . % ^ & & / % . . . E * * = # ; > , # ) ! ' { { { ", " ] & + % & % % + * * * * + _ = . $ $ $ @ @ # > : ) [ } $ ' 1 2 3 5 * 6 8 8 8 { ", " ^ % ^ 9 j ^ % + * * * . + = a a . . . $ $ b $ b @ @ # > 6 < : 3 # e 5 1 ' ; e + h + 4 { 8 i i i 8 ", ". ^ % & j % % ^ * % ^ & j + * * * * . = a k g a a . . . = _ $ $ b @ l @ $ $ $ * * f m [ d c & f 3 , n 9 } 6 o g h } o # { i i i 8 { ", " & & / 9 9 + 9 j * % % / q j j + + * * * = = + a a b a r g a r = = _ $ $ $ = $ b b $ $ * * } * * $ m l [ J M / 3 $ n 9 c + 7 ( $ q 6 + n { 8 { i { 8 { { ", " % + j z z 9 % / / & q & & q j 9 + + . * _ _ c + a k g k k 2 r k g a a = _ + + = = $ b $ $ b - * * } % u } * * 2 f s K 3 3 $ # k n x + ; g d 5 3 , 1 y 2 { 8 8 { i i 8 { 8 { ", " ^ + z 2 7 9 + q & & / & & q + + + c * = c . 0 a r b a r b a r g a ! + l l + + + = = b # - # * * } u % q u % } u = $ > J v & $ # f f n ^ c G : 1 # j ! + ] w { i i i i i i i 8 { ", " j 9 0 z z g j j j q & / / % / / & & g + + + c . . c c + k + + k k g k k 2 r k ! = + + + + + 0 + = - # - * * } % % } % % } % % = g ] s s ' f f f k n C J b y [ _ + C 1 w ~ { 8 i i i i i 8 ", " % j 9 7 g 0 r z 9 9 = & & / % & / % & / 2 + + + . q % q + g + + 0 a r b a r e # ! 0 + + 0 + + + + _ - - # v u % q u % q u % 0 + _ k [ s l g e f f f n f , 3 o ( y B ( D r { 8 i i i i { ", " ^ j j j a 2 0 j + 9 b + % / / % / / g b + + + c . q . + g + + + k k # - - ! _ + + + + + 0 + = # # - * l v % % } % % 0 + z = g ] s , - f f f f n x w 5 ) 3 y $ 1 h ; A { i i i i 8 { ", " % j 9 + j z + j 9 j = b g 0 % & / g g 0 + + + c c g + + e # - ~ = + + 0 + + = + _ - - # v v s l u q 0 + z = $ ) s , 3 # f f $ n $ @ c f 2 5 o s ' { 8 i i i i { ", " 9 = _ = = _ = = = _ g b b g 2 + 0 + + g + - ! = = = + + + = = = # # - l s l 0 + z = f l 6 s # f f n 4 f A ' e 6 y + 5 { 8 8 i i 8 i 8 ", " B B B B B B B B B B B F g g + = b ~ = = = + + = _ - - # v v z = ' G 5 5 f n 4 A I 5 D k B { 8 8 { 8 8 { 8 8 { ", "= B B + B B + B B B B F + = _ = = = _ = # # = n ' h n 4 a o L { { { { { { { { ", " 4 F 4 4 F 4 4 F 4 4 F b g g g g g = = _ x 4 ", " . . . . . . . N O N O + + + N O N O @ N O N O # # N O $ N O N O ", " . % % & & & & & % . . . P N P + * * * + N P N P @ N @ P N P # - ; > , ' P # ) ! ~ N ' P ' { { { { N P ", " ] ^ / + % & & % Q % N Q + ( * * * * + _ Q N Q . $ $ $ $ @ @ Q N Q # - > : ) < [ } Q ' | 1 2 3 4 5 * R 7 { 8 8 8 8 { Q ", ". ^ % % & 9 N + S ^ ^ N S 0 * * * * * . + = S a a N S . . . $ $ b b b $ $ @ @ S N S # # > c < d : 3 e S e 5 } 1 ' : g e + h S + 4 { 8 i i i i 8 T S ", ". ^ ^ ^ & j % % % % j * S % % & N U j + + * * * * * . _ = U a k g g a a . U . = _ b $ $ $ $ @ l @ $ $ U $ N * * U f - m [ ; [ . / f - 3 S n $ 9 } 6 $ o g h p q U # { 8 i i i i V W S ", "% & & , / 9 + + + j 9 X ^ ^ ^ / q q X j j + + + * * * * = = X a r g b r r g g a X ] _ = = = = $ b $ @ = b X b b $ $ * * } } * X $ m l s [ @ # # / 3 X f n 9 c + / t ( $ } q c X = n { { 8 { i i { Y X Z { ", " % + 9 9 0 7 + + ` & & & & q } & & q q ` 9 + + 0 . * * _ = = ` + a k 2 g k k 2 2 r k 2 ` a a = = + + + = _ = $ $ $ ` $ b - - * * } q % u } ` * * g + f v w - 3 3 $ e X k n x + d : g d . 5 3 s ' X y 2 5 { 8 8 i { i i { .X ..8 { ", " ^ 9 j z g k 0 +.9 + q q & & / ^ & +.q } + 0 + + c * + = +.. + k 0 r r b b r r 2 b +.r g g a ! = + v s + 0 + + = = +.$ # # # # * * } } % % q q +.% } } u = k > ^ h l / $ # # @.f $ n A ^ . > 1 : = # * + +.+ / ] B { 8 i i i i i #.$.%.i 8 { ", " % j 9 0 r 7 z g @.9 9 j q } & / / % % / / @./ & g + + + . . c c @.. . + k + + + k r 2 g k k @.2 r k # ! = + + 0 + + + + + + +.= - - - - * * } q % u o p % % @.q % % 0 = 2 o . s v 3 B f f @.f k n C % 9 b y D ( _ + ~ @.1 w C { 8 i i i i &.*.i 8 { ", " % + 9 + 7 2 0 0 r +.j j 9 = q & & / % % / / % % +.& / 2 + 0 + + c . q +.} 6 + r g 0 + + + r r b b +.r # e e ! 1 + + + + + 0 + 0 0 @.= # # # # * v % % q q % % } q +.% 0 0 + _ k [ s ] s 2 # f f +.f $ n f & 3 E o ( t : B +.< f k { 8 i i =.-.;.8 { ", " % + 9 j j z r 2 +.j + + 9 = b + ^ ^ / & % ^ / @./ g b + + + + . +.q } . + b b + + + + k @.# # - - ! ! = + + + 0 + 0 j + +.+ = - - - - * s s s % % } o % +.z 0 + z = = 2 } h l & & # f @.f f f n x w 1 5 < 9 k y $ +.$ h : A { 8 i m >.,.'.8 { ", " ^ 9 j j 9 j z ).9 9 9 9 j _ g b 2 + % ^ / & ).2 2 N + 0 + ).+ c . + b b + + ).# - # ! ! = 1 + 0 + + + 0 ).= + = # # # # l l l l s l % q ).7 + z = = $ ) l } & 3 e ).f f k k n $ l . 0 r g 5 ).o s ' - { 8 m !.).~.i 8 { ", " j = = = = = X = = = = = = = b b g g / X g N X 0 + + 0 N b X + e ~ ! _ = _ _ 0 + + X = = + = - - - - v l s l v X + 0 = = f m s 6 s & X f f k n 4 f A A ' ' _ {.t 0 F 5 { 8 i V X V ].8 i 8 { ", "= B B B B B B ^.B B B B B B B F N 2 2 g ^. N + /._ b N U ~ ! = _ = _ ^.+ 0 = _ # # # # N l l s ^.= = ' G 6 5 5 ^.k n 4 A N H I 5 U k $ B { 8 8 (._.^.:.8 { 8 8 8 { ", "= B + B + B S B + B B B B B B 4 N S N + S = _ = g N S N S = _ = = = - - N S = n ' h S n 4 N k S o L { n <.S { { { { { { { ", " 4 F 4 R Q F 4 x 4 4 F 4 4 4 R Q R Q g g b g g g R Q R Q _ = _ R Q R Q 4 R Q R Q ", " ] ] ] c ] N O N O 0 + N O N O l N O N O # N O N O N O ", " . % ^ & & / % . . P N P E * * N P N P N P N P # ; > , P # ) ! N P ' { { { N P ", " ] & + % & % Q N Q + * * * * + _ Q N Q . $ $ $ @ @ Q N Q # > : ) [ } Q ' 1 2 3 5 * R 8 8 8 { ", " ^ % ^ 9 j ^ % + * * * . + = a a . . . $ $ b $ b @ @ # > 6 < : 3 # e 5 1 ' ; e + h + 4 { 8 i i i 8 S ", ". ^ % & j % % ^ * S ^ & N U j + * * * * . = U a k g a a . U . = _ $ $ b @ l @ $ U $ N * * U f m [ d c & f 3 S n 9 } 6 o g h } U # { i i i V W S ", " & & / 9 9 + 9 j X % % / q X j j + + * * * = = X a a b a r g a X = = _ $ $ $ = $ X b $ $ * * } * X $ m l [ J M / 3 X n 9 c + 7 ( $ q 6 X n { 8 { i { Y Z { ", " % + j z z 9 ` / / & q & & q ` 9 + + . * _ _ ` + a k g k k 2 r k ` a a = _ + + = = $ b ` $ b - * * } % u ` * * 2 f s K 3 3 $ ` k n x + ; g d 5 3 , ` y 2 { 8 8 { i i .X .. { ", " ^ + z 2 7 +.+ q & & / & +.q + + + c * = +.. 0 a r b a r b +.r g a ! + l l + + + = +.b # - # * * } u % q +.% } u = $ > J v & $ # +.f n ^ c G : 1 # j +.+ ] w { i i i i #.$. i 8 { ", " j 9 0 z z g j j j q & / / % / / & & g + + + c . . c c + k + + k k g k k 2 r k ! = + + + + + 0 + = - # - * * } % % } % % } % % = g ] s s ' f f f k n C J b y [ _ + C 1 w ~ { 8 i i i *.i 8 ", " % j 9 7 g 0 r +.9 9 = & & / % & / % +./ 2 + + + . q +.q + g + + 0 a r b +.r e # ! 0 + + 0 + + + +._ - - # v u % q u % q +.% 0 + _ k [ s l g e f +.f n f , 3 o ( y B +.D r { 8 i =.-.;. { ", " ^ j j j a 2 @. j + 9 b + % / / % / @. g b + + + c @. q . + g + + + k @. # - - ! _ + + + + + 0 +. = # # - * l v % % } % @. 0 + z = g ] s , - f @. f f n x w 5 ) 3 y $ @. h ; A { i m >. '.8 { ", " % j 9 + j z + j 9 j = b g 0 % & / g g 0 + + + c c g + + e # - ~ = + + 0 + + = + _ - - # v v s l u q 0 + z = $ ) s , 3 # f f $ n $ @ c f 2 5 o s ' { 8 m ).~.i { ", " 9 = _ = X _ = = = _ g b b X 2 N [.0 + + N X + - ! = = = + + X = = = # # - l s l X + z = f l 6 s X f f n 4 f A ' e X y + 5 { 8 V X V 8 i 8 ", " B B B B B ^. B B B B B F N g g ^. N + U b N U ~ = = = ^. + = _ - - # N v v ^. = ' G 5 5 ^. n 4 A N I 5 ^. k B { 8 (._. :.8 { 8 8 { ", "= B B + B B + B B B B F N N + = _ = N N = = _ = # # N = n ' h n 4 N a o L { n S { { { { { ", " 4 F 4 Q F 4 4 F 4 4 F Q Q g g g g g Q Q = = _ Q Q 4 Q R Q ", " p }.p }.p }.p |.|.|. 1. H H 2. ", " }.3.3.4.4.4.4.4.3.}.}.}.}. |.5.5.5.|. 6. 7. 7. H H | =.8.9. 0.a.b.c. d. e. { { { { ", " }.3.4. f. 3.4.4.3.3.3. |.5.5.5.5.5.|. 6.6. }. g.g.g.g. 7. 1. H H h.i.) j.k.l.m. n.o.p.q.r.s.t.u.v.w. { 8 8 8 8 { ", "}.3.3.3.4.f. f. 5.3.3. |.5.5.5.5.5.}.|.6.6. x.x. }.}.p g.g.g.g.g.g.g.1.7. H H =.y.) | i.z.H M H A.B.C.D.E.F.G.H.I.J.K.L. { 8 i i i i 8 { ", "}.3.3.3.4.f.3.3.3.3.f.5.3.3.3.4. f. |.|.. 5.5.5.5.}.6.6. x.x.M.M.x.x. }.p p N.N.g.g.g.g.g.7.7.1.g.g.g.g. 5.5. M H m [ | k.O.4.M H f.8.n P.Q.B.R.P.S.q.T.B.B.U.V. { 8 i i i i 8 { ", "3.4.4.4.4.f.f.f.f.f.f.5.3.3.3.4. l.l. f.f. |.|.|.5.5.5.5.6.6.|. x.x.M.M.x.x.M.M.x.x.}. N.N.N.N.N.g.g.g.1.6.g.g.g.g.g.g. 5.5.l.l.5.5. m.m 1.1.k.W.H H z.z.m.M n X.Y.Z.`. +.+++@+B.#+H.$+n { { 8 { i i { 8 { { { ", " 3.f.f.f.%+%+f.f.3.4.4.4.4. l.l.4.4.l.l.f.f. |.%+|.p 5.5.6.6.6.}.|. x.x.M.M.x.x.M.M.x.x.M.M.x.x. N.N.|.|._ N.N.N.g.g.g.g.g.g.&+&+ 5.5.l.l.*+*+l.l.5.5. M.|.M 1.=+H z.f.m.H H m.n -+Z.;+o.q.>+#+A.,+'+D.)+!+F.~+ { 8 8 i { i i { 8 { 8 8 { ", " 3.f.f.%+M.x.%+f.f.f. l.l.4.4.4.3.4.4.l.l. |.|.|.|.}.. |.6.}.}.|. x.|.x.x.M.M.x.x.M.M.x.x.M.M.x.C N.|.8.1.|.|.%+|.N.N.N.g.&+&+&+&+ 5.5.l.l.*+3.l.l.*+*+l.l.*+6. m.=.7.p 1.4.m.H H x.M m.n {+]+^+h./+(+p._+u.:+b.<+r.[+}+ { 8 i i i i i i i 8 i 8 { ", " 3.f.f.%+x.%+%+M.%+f.f.f. l.l.4.4.4.3.3.4.4.3.4.4.M. |.|.|.}.}.}.}.l.}.}.|. x.|.|+|.x.x.M.M.x.x.M.M.x.x.H C N.|.%+|.%+|.|.%+|.|.N.N.&+&+&+&+5.5.l.l.*+3.l.l.3.3.l.l.3.*+%+6. M.l.p 1.1.z.9.M M M M m.n 1+]+2+3+4+5+6+7+Z.8+9+/+0+8+ { 8 i i i i i i i 8 { ", " 3.f.f.f.%+M.%+%+x.%+f.f.f.6. l.4.4.4.3.3.4.4.3.3.4.4.4.M. |.%+|.|.}.}.l.3.l.}.|. x.M.|.|.|+|.x.x.M.M.x.x.H H H C N.|.|.|.|.|.%+|.|.%+|.N.&+&+&+&+5.1.*+3.l.l.*+3.l.l.3.3.|.%+|+6. M.) 1.l.1.M.H M M M M m.n a+b+X.9+c+6+d+o.e+f+g+a+h+ { 8 i i i i i 8 { ", " 3.f.f.f.f.%+x.M.%+f.f.f.f.6. M.i+3.3.4.4.3.3.4.4.4.M.M. |.|.|.|.p }.l.l.}.|. M.M.|.|.|+|.x.x.H H H H C C N.%+|.%+|.|.|.%+|.%+|.N.&+&+&+&+5.1.1.1.3.3.l.l.*+*+%+%+|+%+6.6. M.l.p 1.4.8.H M M M M M n j+k+l+m+;+n+o+p+q+r+P.s+t+{+ { 8 i i i i i 8 { ", " 3.f.f.f.f.f.%+%+f.f.f.f.f.6. M.M.M.u+3.3.4.4.4.M.M. |.%+|.|.|.}.p |. M.m.|.|.|+H H H C C N.N.|.|.|.|.|.|.|.2 |.N.&+&+&+&+1.1.1.1.1.1.*+l.%+%+|+%+6.6. m.; v+l.4.z.H M M M m.m.n P.w+Y.x+a+F.y+F.z+A+_+_+ { 8 i i i i i 8 { ", " f.6.6.6.6.6.6.6.6.6.6.6.6.6. M.M.M.M.4.M.M. |.|.|.|.|. M.M.|.H C C N.N.N.N.%+|.%+|.6.6.|.N.&+&+&+&+ 1.1.1.1.1.%+|+%+6.6. B+m C+D+E+4.H M M m.n F+ G+H+{+I+J+$+K+L+M+j+C. { 8 i 8 i i i 8 i 8 { ", "6.N+N+N+N+N+N+N+N+N+N+N+N+N+N+F+ M.M.M. |.6.6.M. C C N.N.N.N.|.|.%+N.N.&+&+&+&+ 1.1.1.%+6.6. 9.O+y.P+Q+M m.n F+ {+ n.R+C.a.a+S+ T+ { 8 8 8 { 8 8 8 { 8 8 8 { ", "6.N+|+N+|+N+i+N+u+N+N+N+N+N+N+F+ |.6.6.6.6.M. N.N.N.N.N.N.&+&+ 1.6. n N+U+7.n F+ B+ V+S.W+ { { { { { { { { { { { ", " F+F+F+F+F+F+F+F+F+F+F+F+F+F+ M.M.M.M.M.M.M.M. N.N.N. X+Y+ ", " p }.p }.}. |. |. 1. H ", " }.3.3. 4.4.4. 3.}.}. }. 5.5.5. 6. H | =.8. 0.a.b. e. { { { ", " }. 4. f. 3. 4.3.3. |.5.5. 5.5.|. 6.6. }. g.g. g. 7. 7. H h.i.) k.l.m. n. p.q.r. t.u.v. 8 8 8 { ", " 3.3.3. f. f. 3.3. |. 5.5.5. }.|.6. x.x. }.}.p g.g. g.g.g. 1.7. H =.y.) i.z.H H A. C.D.E. G.H.I. K.L. { 8 i i i 8 ", "p 3. 3.4.f. 3.3.3. 5.3.3. 4. f. |.5.5. 5.5.}. 6. x.x. M.x.x. }.p p N.N. g.g.g. 7.7.1. g.g.g. 5.5. M m [ | O.4.M z.8.n Q.B.R. S.q.T. B.U.V. { i i i 8 { ", " 4.4.4. f.f.f. f.f.5. 3.3.4. l. f.f. |.|. 5.5.5. 6.6.|. x.x. M.x.x. M.x.x. N.N.N. g.g.g. 6.g.g. g.g.g. 5.5. l.5.5. m.m 1. k.W.H z.z.m. n X.Y.Z. +.+++ B.#+Z+ n { 8 { i { 8 { { ", " 3.f.f. %+%+f. 3.4.4. 4. l. 4.4.l. f.f. |.|.}. 5.6.6. }.|. x.x. M.x.x. M.x.x. M.x.x. N.N. |.|.N. N.g.g. g.g.g. &+ 5.5. l.*+*+ l.5.5. M. M 1.=+ z.f.m. H m.n -+Z. o.q.>+ A.,+'+ )+!+F. { 8 8 { i i 8 { 8 { ", " 3. f.%+M. %+f.f. l. 4.4.4. 4.4.l. |.|. |.}.5. 6.}.}. |.x.x. M.x.x. M.x.x. M.x.C |.1.1. |.|.|. N.N.g. &+&+&+ 5.5. l.*+*+ l.*+*+ l.*+6. m.=.W. 1.8.m. H M M n ]+^+h. (+p._+ :+b.<+ [+}+ { i i i i i i i 8 { ", " f.f.%+ %+%+M. f.f.f. l. 4.4.4. 3.4.4. 4.4.M. |.|.|. }.}.}. }.}.|. x.|. |.x.x. M.x.x. M.x.x. C N.|. |.|.|. |.|.|. N.&+&+ &+5.5. l.*+*+ l.3.*+ l.*+*+ 6. M. p 1.1. 9.M M M m.n 1+]+ 3+4+5+ 7+Z.8+ `+0+8+ { 8 i i i i i 8 ", " 3.f.f. %+M.%+ x.%+f. f.6. 4.4.4. 3.4.4. 3.4.4. M. |. |.|.}. l.3.l. |. m.|.|. |.x.x. M.x.x. H H C |.|.|. |.|.|. |.|.N. &+&+&+ 1.*+*+ l.*+*+ l.*+*+ %+|+6. m.k.1. 1.M.H M M M n a+b+ @ c+6+d+ e+f+g+ h+ { 8 i i i i { ", " 3. f.f.f. x.M.%+ f.f.f. M.i+ 3.4.4. 3.4.4. M.M. |.|. |.}.}. l.}.|. M.|.|. |.x.x. H H H C N.|. |.|.%+ |.|.%+ N.&+&+ &+5.1. 1.3.*+ l.3.*+ %+|+%+ 6. M. p 1.4. H M M M M n j+k+ m+;+n+ p+q+r+ s+t+H+ { i i i i 8 { ", " 3.f.f. f.f.%+ f.f.f. f.6. M.M.u+ 3.4.4. M.M. |.|.|. |.}.}. m.|.|. H H H C N.|.|. |.|.|. 6.|.N. &+&+&+ 1.1.1. 1.*+l. %+|+|. 6. m.j.v+ 8.z.H M M m. n P.w+v. a+F.y+ z+A+_+ { 8 i i i i { ", " f. 6.6.6. 6.6.6. 6.6.6. M.M.M. M.M. |.|.|. |. M.|.H C N.N. N.|.|. |.6.6. N.&+&+ &+ 1.1.1. %+|+%+ 6. M C+D+4. H M M n F+ G+ H+I+J+ K+L+M+ C. { 8 8 i i 8 i 8 ", " N+N+N+ N+N+N+ N+N+N+ N+N+F+ M.M. |.6. M. C N. N.N.|. |.N.N. &+&+&+ 1.1.|. 6. 9.O+ P+Q+M n Y+ {+ R+C.a. S+ 0+ { 8 8 { 8 8 { 8 8 { ", "6.N+ N+|+N+ N+u+N+ N+N+N+ F+ |. 6.6.6. N.N.N. N.&+&+ 6. n 9.U+ n F+ B+ S.W+ { { { { { { { { ", " F+F+F+ F+F+F+ F+F+F+ F+F+ M.M.M. M.M.M. N.N.N. X+Y+ ", " }.}.}.}.}.}.}. N O N O |.|.|. N O N O 1. N O N O H H N O 2. N O N O ", " }.3.3.4.4.4.4.4.3.}.p }.P N P |.5.5.5.|. N P N P 7. N 7.P N P H H | =.4.9.P 0.a.b.c. N d.P e. { { { { N P ", " p 3.4. f. 3.4.4.3.Q 3. N Q |.. 5.5.5.5.|. 6.Q N Q }. g.g.g.g. 1. 1. Q N Q H H h.i.) j.[ l.Q n.o.p.q.r.s.t.u.R w. { 8 8 8 8 { Q ", ". 3.3.3.4.f. N f. S 3.3. N S |.5.5.5.5.5.}.|.6.S x.x.N S p }.p g.g.g.g.g.g.g.7.7. S N S H H =.y.) | i.z.H S H A.B.C.D.E.F.G.H.I.S K.L. { 8 i i i i 8 T S ", ". 3.3.3.4.f.3.3.3.3.f.5.S 3.3.4. N U f. |.|.5.5.5.5.5.}.6.6.U x.x.M.M.x.x. p U p N.N.g.g.g.g.g.7.1.1.g.g.U g. N 5.5. U M H m [ | k.O.4.M H z.S n P.Q.B.R.P.S.q.T.B.B.U V. { 8 i i i i V W S ", "% 4.4.4.4.f.f.f.f.f.f.X *+3.3.4. l.l. X f.f. |.|.|.5.5.5.5.6.6.X x.x.M.M.x.x.M.M.x.X p N.N.N.N.N.g.g.g.7.6.g.X g.g.g.g. 5.5.l.l.5.X m.m 1.1.k.W.H H z.z.X x.n X.Y.Z.`. +.+++@+B.#+X $+n { { 8 { i i { Y X Z { ", " 3.f.f.f.%+%+f.f.` 4.4.4.4. l.l.4.4.l.l.` f. |.%+|.p 5.5.6.6.6.` |. x.x.M.M.x.x.M.M.x.x.M.` x.x. N.N.|.|._ N.N.N.g.g.g.` g.g.&+&+ 5.5.l.l.3.*+l.` 5.5. M.|.M 1.=+H z.z.x.B X m.n -+Z.;+o.q.>+#+A.,+'+D.X !+F.~+ { 8 8 i { i i { .X ..8 { ", " 3.f.f.%+M.x.%++.f.f. l.l.4.4.4.3.4.+.l.l. |.|.|.|.p 5.|.6.+.}.|. x.|.x.x.M.M.x.x.M.M.+.x.M.M.x.C N.%+1.1.|.%+|.%+N.N.+.g.&+&+&+&+ 5.5.l.l.3.3.l.l.+.*+l.l.*+6. m.=.7.p 1.4.x.H H @.M m.n {+]+^+h./+(+p._+u.:++.<+r.[+}+ { 8 i i i i i #.$.%.i 8 { ", " 3.f.f.%+x.%+%+M.@.f.f.f. l.l.4.4.4.3.3.4.4.@.4.4.M. |.%+|.}.}.}.}.@.}.}.|. x.|.|+|.x.x.M.M.x.x.@.M.x.x.H ~ N.%+|.%+|.|.|.|.%+|.+.N.&+&+&+&+5.5.l.l.*+*+l.l.3.*+@.l.*+*+%+6. M.l.p 1.1.z.N+M M @.M m.n 1+]+2+3+4+5+6+7+Z.8+@.`+0+8+ { 8 i i i i &.*.i 8 { ", " 3.f.f.f.%+M.%+%+x.+.f.f.f.6. l.4.4.4.3.3.4.4.3.3.+.4.4.M. |.|.|.|.}.}.l.+.l.}.|. x.M.|.|.|+|.x.x.M.M.+.x.H H H C N.|.|.|.|.|.%+|.f.%+@.N.&+&+&+&+5.1.*+3.l.l.*+*+l.l.+.3.%+%+|+6. m.k.8.p 1.M.H M M +.M m.n a+b+X.9+c+6+d+o.e++.g+a+h+ { 8 i i =.-.;.8 { ", " 3.f.f.f.f.%+x.M.+.f.f.f.f.6. M.i+3.3.4.4.3.3.4.@.4.M.M. |.|.%+|.}.+.l.l.}.|. M.M.|.|.|+|.x.@.H H H H C ~ N.%+|.%+|.|.%+|.|.+.|.N.&+&+&+&+5.1.1.1.3.*+l.l.3.+.|.%+|+%+6.6. M.l.p 1.4.8.H M @.M M M n j+k+l+C.;+n+o+p+q++.P.s+t+{+ { 8 i m >.,.'.8 { ", " 3.f.f.f.f.f.%+).f.f.f.f.f.6. M.M.M.u+3.3.4.4.).M.M. N |.|.|.).|.}.p |. M.m.|.|.).H H H C C N.N.|.|.%+|.|.%+).6.%+N.&+&+&+&+1.1.8.1.1.1.3.l.).%+|+%+6.6. m.j.v+l.4.z.H ).M M m.m.n P.w+v.x+a+F.y+).z+A+_+_+ { 8 m !.).~.i 8 { ", " f.6.6.6.6.6.X 6.6.6.6.6.6.6. M.M.M.M.4.X M. N X |.|.|.|. N M.X |.H C C N.N.N.N.|.|.|.X 6.6.|.N.&+&+&+&+ 1.1.1.1.1.X |+%+6.6. M m C+D+E+4.X M M x.n F+ G+H+{+I+J+$+X L+M+j+C. { 8 i V X V ].8 i 8 { ", "= N+N+N+N+N+N+^.N+N+N+N+N+N+N+F+ N M.M.M.^. N |.U 6.M. N U C C N.N.N.N.^.|.|.N.N.&+&+&+&+ N 1.1.1.^.6.6. 9.O+y.P+Q+^.m.n Y+ {+N n.R+C.U .@S+ T+ { 8 8 (._.^.:.8 { 8 8 8 { ", "= N+|+N+|+N+S N+u+N+N+N+N+N+N+F+ N S N |.S 6.6.6.M. N S N S N.N.N.N.N.&+&+ N S 6. n N+U+S n F+ N B+ S S.W+ { n <.S { { { { { { { ", " F+F+F+R Q F+F+F+F+F+F+F+F+F+ R Q R Q M.M.M.M.M.M. R Q R Q N.N.N. R Q R Q F+ R Q R Q ", " }.p p }.}. N O N O |. |. N O N O 1. N O N O H N O N O N O ", " }.3.3. 4.4.4. 3.}.p P N P 5.5.5. N P N P N P N P H | =.4. P 0.a.b. N P e. { { { N P ", " }. 4. f. 3. 4.3.Q N Q |.5.5. 5.5.|. 6.Q N Q }. g.g. g. 1. 7. Q N Q H h.i.) k.l.Q n. p.q.r. t.u.R 8 8 8 { ", " 3.3.3. f. f. 3.3. |. 5.5.5. }.|.6. x.x. p }.p g.g. g.g.g. 7.7. H =.y.) i.z.H H A. C.D.E. G.H.I. K.L. { 8 i i i 8 S ", ". 3. 3.4.f. 3.3.3. 5.S 3. 4. N U f. |.5.5. 5.5.}. 6.U x.x. M.x.x. }.U p N.N. g.g.g. 7.1.1. g.U g. N 5.5. U M m [ | O.4.M z.S n Q.B.R. S.q.T. B.U V. { i i i V W S ", " 4.4.4. f.f.f. f.f.X 3.3.4. l. X f.f. |.|. 5.5.5. 6.6.X x.x. M.x.x. M.x.X N.N.N. g.g.g. 6.g.X g.g.g. 5.5. l.5.X m.m 1. k.W.H f.z.X n X.Y.Z. +.+++ B.#+X n { 8 { i { Y Z { ", " 3.f.f. %+%+f. ` 4.4. 4. l. 4.4.l. ` f. |.|.}. 5.6.6. ` |. x.x. M.x.x. M.x.x. ` x.x. N.N. |.|.N. N.g.g. ` g.g. &+ 5.5. l.*+*+ ` 5.5. M. M 1.=+ z.z.m. ` m.n -+Z. o.q.>+ A.,+'+ ` !+F. { 8 8 { i i .X .. { ", " 3. f.%+M. %++.f. l. 4.4.4. 4.+.l. |.|. |.}.5. 6.+.}. |.x.x. M.x.x. M.+.x. M.x.C |.1.1. |.|.|. N.+.g. &+&+&+ 5.5. l.*+*+ l.+.*+ l.*+6. m.=.W. 1.8.m. H +.M n ]+^+h. (+p._+ :++.<+ [+}+ { i i i i #.$. i 8 { ", " f.f.%+ %+%+M. f.f.f. l. 4.4.4. 3.4.4. 4.4.M. |.|.|. }.}.}. }.}.|. x.|. |.x.x. M.x.x. M.x.x. C N.|. |.|.|. |.|.|. N.&+&+ &+5.5. l.*+*+ l.3.*+ l.*+*+ 6. M. p 1.1. 9.M M M m.n 1+]+ 3+4+5+ 7+Z.8+ `+0+8+ { 8 i i i *.i 8 ", " 3.f.f. %+M.%+ x.+.f. f.6. 4.4.4. 3.4.4. 3.+.4. M. |. |.|.}. l.+.l. |. m.|.|. |.x.x. M.+.x. H H C |.|.|. |.|.|. |.+.N. &+&+&+ 1.*+*+ l.*+*+ l.+.*+ %+|+6. m.k.1. 1.M.H M +.M n a+b+ @ c+6+d+ e++.g+ h+ { 8 i =.-.;. { ", " 3. f.f.f. x.M.@. f.f.f. M.i+ 3.4.4. 3.4.@. M.M. |.|. |.}.@. l.}.|. M.|.|. |.x.@. H H H C N.|. |.|.%+ |.|.+. N.&+&+ &+5.1. 1.3.*+ l.*+@. %+|+%+ 6. M. p 1.4. H M @. M M n j+k+ m+;+n+ p+q+@. s+t+H+ { i m >. '.8 { ", " 3.f.f. f.f.%+ f.f.f. f.6. M.M.u+ 3.4.4. M.M. |.|.|. |.}.}. m.|.|. H H H C N.|.|. |.|.|. 6.|.N. &+&+&+ 1.1.1. 1.*+l. %+|+|. 6. m.j.v+ 8.z.H M M m. n P.w+v. a+F.y+ z+A+_+ { 8 m ).~.i { ", " f. 6.6.6. X 6.6. 6.6.6. M.M.M. X M. N X |.|. |. N X |.H C N.N. N.|.|. X 6.6. N.&+&+ &+ 1.1.1. X |+%+ 6. M C+D+4. X M M n F+ G+ H+I+J+ X L+M+ C. { 8 V X V 8 i 8 ", " N+N+N+ N+N+^. N+N+N+ N+N+F+ N M.M.^. N |.U M. N U C N. N.N.^. |.N.N. &+&+&+ N 1.1.^. 6. 9.O+ P+Q+^. n Y+ {+N R+C.^. S+ 0+ { 8 (._. :.8 { 8 8 { ", "= N+ N+|+N+ N+u+N+ N+N+N+ F+ N N |. 6.6.6. N N N.N.N. N.&+&+ N 6. n 9.U+ n F+ N B+ S.W+ { n S { { { { { ", " F+F+F+ Q F+F+ F+F+F+ F+F+ Q Q M.M. M.M.M. Q Q N.N.N. Q Q Y+ Q R Q ", " . . . . . . . g.g.g.g.g. g.g.g.g.g. + + + g.g.g.g.g. g.g.g.g.g. @ g.g.g.g.g. g.g.g.g.g. g.g.g.g.g. $ g.g.g.g.g. g.g.g.g.g. ", " . % % & & & & g.+@+@+@+@+@n g.+@+@+@+@+@n + * * * g.+@+@+@+@+@n g.+@+@+@+@+@n g.+@+@+@+@+@n g.+@+@+@+@+@n # g.+@+@+@+@+@n # ) ! g.+@+@+@+@+@n @@#@g.+@+@+@+@+@n ", " ] ^ / + g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n + ( * * g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n $ $ $ g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n # - g.+@$@g.g.$@$@g.n ' | g.+@$@g.g.$@$@g.n { 8 g.+@$@g.g.$@$@g.n ", "}.^ % % & 9 g.+@$@g.n +@$@g.n g.+@$@g.n +@$@g.n 0 * * * g.+@$@g.n +@$@g.n r g.+@$@g.n +@$@g.n $ $ b b b g.+@$@g.n +@$@g.n g.+@$@g.n +@$@g.n # # > c g.+@$@g.n +@$@g.n 5 } 1 ' g.+@$@g.n +@$@g.n { 8 %@g.+@$@g.n +@$@g.n ", "p ^ ^ ^ & j % g.+@$@$@+@$@N.g.n g.+@$@$@+@$@N.g.n + + * * * g.+@$@$@+@$@N.g.n a k g g.+@$@$@+@$@N.g.n = _ b $ $ $ $ g.+@$@$@+@$@N.g.n g.+@$@$@+@$@N.g.n f - m [ ; [ g.+@$@$@+@$@N.g.n $ 9 } 6 $ g.+@$@$@+@$@N.g.n { 8 &@g.+@$@$@+@$@N.g.n ", "3.& & , / 9 + j n $@$@$@N.g.n / q n $@$@$@N.g.n + + + * * * n $@$@$@N.g.n a r g b r r n $@$@$@N.g.n _ = = = = $ $ $ n $@$@$@N.g.n $ * * n $@$@$@N.g.n $ m l s [ J # n $@$@$@N.g.n 9 c + / t ( $ n $@$@$@N.g.n { { 8 *@=@n $@$@$@N.g.n ", " % + 9 j 7 z g.N.g.g.n & & q } / & g.N.g.g.n + + 0 c * * = g.N.g.g.n a k 2 g k a g b a g.N.g.g.n = = + + + = _ = $ g.N.g.g.n # - * * } o % g.N.g.g.n g + f v K # 3 3 g.N.g.g.n x + d : g d . 5 3 g.N.g.g.n 5 { 8 8 i { m -@g.N.g.g.n ;@ ", " ^ 9 j 7 g a g.+@$@g.n q q & & & ^ g.+@$@g.n + 0 + + c * + g.+@$@g.n k 0 r r b 2 a k g g.+@$@g.n a ! = + v v 0 + + 0 _ g.+@$@g.n - # * * } q % u q g.+@$@g.n u = k > ^ h l / k # g.+@$@g.n A ^ . > 1 : = # * g.+@$@g.n B { 8 i i i i i g.+@$@g.n >@ ", " % j 9 0 r z 7 g.+@g.n j q } & / / ^ % / g.+@g.n g + 0 + . . . g.+@g.n + k + + + r k b g r g.+@g.n k # ! = + + + + 0 + + 0 g.+@g.n # - - * * } q % u q } % g.+@g.n % 0 = 2 o . s l / ' f g.+@g.n n C % 9 b _ D ( _ 0 g.+@g.n C { 8 i i i ,@g.+@g.n C ", " % + 9 + z 2 z z g.+@$@g.n = q & & / % % & / % g.+@$@g.n + + + + c c g.+@$@g.n r b + + + 0 k r 2 g.+@$@g.n e ! 1 + + + 0 + + + + g.+@$@g.n # # * v % % } q % % o g.+@$@g.n + _ k [ s ] s g e f g.+@$@g.n f & 3 E o ( t ; g.+@$@g.n { 8 i i '@g.+@$@g.n ", " % + 9 j j 7 r g g.+@g.n j = b + ^ ^ / / % ^ & g.+@g.n + + + + . g.+@g.n + b g + + + 0 k g.+@g.n - ! ! = + 0 + + + + + 0 g.+@g.n - - - * s s s % u p q % g.+@g.n z = = 2 } h v / , e f g.+@g.n n x w 1 1 < j k y $ g.+@g.n A { 8 i i )@g.+@g.n A ", " ^ 9 j 9 9 9 0 z g.+@$@g.n _ g b g + % % / & / g.+@$@g.n 0 + 0 + g.+@$@g.n g g 0 + 0 g.+@$@g.n = = + + + 0 0 0 + g.+@$@g.n # # l l l l s l % } z g.+@$@g.n $ ) l q , 3 # f g.+@$@g.n $ l . 0 r g 5 5 g.+@$@g.n { 8 i i !@g.+@$@g.n ", " j = = = = = = = g.+@g.n = = b b b g / g b g.+@g.n 0 + g.+@g.n g g 0 g.+@g.n = = = = + + + + = g.+@g.n - - - v l s l s 0 0 g.+@g.n f m s 6 s & # f g.+@g.n f A A H e _ ( y g.+@g.n { 8 i 8 i ~@g.+@g.n { ", "6.B B B B B B B B B n n B B B F g g g n n + _ = g n n ! ! n n = = _ _ 0 + + n n # # # # l v l z _ _ n n ' =.c 5 5 f k n n n A ' I 5 < k $ n n { 8 8 8 { 8 {@]@n Z 8 8 { ", "6.B + B + B + B + B B B B B B 4 + = = = = b _ = = = = = - - l = n ' h @ n 4 a K o L { { { { { { { { { { { ", " 4 x 4 x 4 x 4 F x 4 x F 4 4 g b g g g g g g = = = x C ", " c ] c ] c g. g.g.g. g. g.g.g. 0 0 g. g.g.g. g. g.g.g. @ g. g.g.g. g. g.g.g. g. g.g.g. g. g.g.g. g.g.g. ", " . % ^ / & & +@+@+@ +@n +@+@+@ +@n E * E +@+@+@ +@n +@+@+@ +@n +@+@+@ +@n +@+@+@ +@n # +@+@+@ +@n # ) ! +@+@+@ +@n @@ g.+@+@ +@+@n ", " ] & + g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n + * * g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n $ $ g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n # g.+@$@ g.$@$@ n ' g.+@$@ g.$@$@ n 8 g.+@ g.g.$@ g.n ", " ^ % ^ 9 g. $@g.n $@g.n g. $@g.n $@g.n + * * g. $@g.n $@g.n a g. $@g.n $@g.n $ $ b $ g. $@g.n $@g.n g. $@g.n $@g.n # > 6 g. $@g.n $@g.n 5 1 ' g. $@g.n $@g.n { 8 %@ +@$@g. +@$@g. ", "p ^ % & j g.+@$@ +@$@N. n g.+@$@ +@$@N. n + * * g.+@$@ +@$@N. n a k g.+@$@ +@$@N. n = _ $ $ b g.+@$@ +@$@N. n g.+@$@ +@$@N. n f m [ d g.+@$@ +@$@N. n 9 } 6 g.+@$@ +@$@N. n { &@g.+@ $@+@$@ g.n ", " & & / 9 j j $@$@$@ g.n / } $@$@$@ g.n + + * * * $@$@$@ g.n a a b a r $@$@$@ g.n = = _ $ $ $ $@$@$@ g.n $ * * $@$@$@ g.n $ m l [ J # $@$@$@ g.n 9 c + 7 ( $ $@$@$@ g.n { 8 *@ n $@$@ N.g.n ", " % + 9 z 0 g. g.g.n & q & & g. g.g.n + + . * = g. g.g.n a k g k k g a g. g.g.n = _ + + = = $ g. g.g.n - * * } % g. g.g.n 2 f s K 3 3 g. g.g.n x + ; g d 5 3 g. g.g.n { 8 8 { m -@ N.g.g. ;@ ", " ^ + z g g.+@$@ n q & & / g.+@$@ n + + + c * g.+@$@ n 0 a r b a r g.+@$@ n a ! + l l + + + g.+@$@ n - # * * } u % g.+@$@ n u = $ > J v & $ g.+@$@ n ^ c G : 1 # g.+@$@ n w { i i i i g.+@ g.n >@ ", " j 9 0 z z g. g.n j q & / / % & g. g.n g + + + c c g. g.n + k + + k k 2 r g. g.n k ! = + + + + + + g. g.n # - * * } % % } % g. g.n % = g ] s s ' f g. g.n n C J b y [ _ + g. g.n ~ { 8 i i ,@ +@g.n ", " % j 9 7 g 0 g.+@$@ n = & & / % & / g.+@$@ n + + + . g.+@$@ n g + + 0 a r g.+@$@ n # ! 0 + + 0 + + g.+@$@ n - # v u % q u % g.+@$@ n + _ k [ s l g M g.+@$@ n f , 3 o ( 7 g.+@$@ n { 8 i '@g.+@ g.n ", " ^ j j j a g g. g.n j b + % / / % & g. g.n + + + c g. g.n + g + + + r g. g.n - ! _ + + + + + + g. g.n # - * l v % % } % g. g.n z = 2 ] s , # f g. g.n n x w 5 ) 9 y $ g. g.n A { i i )@ +@g.n ", " % j 9 + j z g.+@$@ n = b g 0 % & / g.+@$@ n 0 + + g.+@$@ n g + + g.+@$@ n = + + 0 + + g.+@$@ n - # v v s l u q g.+@$@ n $ ) s & 3 # g.+@$@ n $ @ c r 2 5 g.+@$@ n { 8 i !@g.+@ g.n ", " 9 = _ = = = g. g.n _ g b b g g g. g.n + + g. g.n g + g. g.n = = = + + + = g. g.n # - l s l 0 + g. g.n f l 6 s # f g. g.n f A ' ' 6 t g. g.n { 8 8 i ~@ +@g.n ", " B B B B B B B n n B B F g g n n + = g n n ! n n = = = + + n n - - # v v z = n n ' G 5 5 f n n n A I 5 D $ n n { 8 8 { {@]@n i i { ", "6.B B + B B + B B B B F + = = = = = = = # # = n ' h n 4 k o L { { { { { { { { ", " 4 F 4 4 F 4 F F 4 4 F b g g g g g = = _ x 4 ", " . . . . . . . g.g.g.O g. g.g.g.O g. + + + g.g.g.O g. g.g.g.O g. @ g.g.g.O g. g.g.g.O g. g.g.g.O g. $ g.g.g.O g. g.g.g.O g. ", " . % % & & & & g.+@+@+@+@P n g.+@+@+@+@P n + * * * g.+@+@+@+@P n g.+@+@+@+@P n g.+@+@+@+@P n g.+@+@+@+@P n # g.+@+@+@+@P n # ) ! g.+@+@+@+@P n { n ^@+@+@+@+@P n ", " ] ^ / + g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n + ( * * g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n $ $ $ g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n # - g.+@$@g.g.$@R g.n ' | g.+@$@g.g.$@R g.n { 8 /@+@$@g.g.$@R g.n ", "}.^ % % & 9 g.+@$@g.n S $@g.n g.+@$@g.n S $@g.n 0 * * * g.+@$@g.n S $@g.n r g.+@$@g.n S $@g.n $ $ b b b g.+@$@g.n S $@g.n g.+@$@g.n S $@g.n # # > c g.+@$@g.n S $@g.n 5 } 1 ' g.+@$@g.n S $@g.n { 8 i (@+@$@g.n S $@g.n ", "p ^ ^ ^ & j % g.+@$@$@+@U N.g.n g.+@$@$@+@U N.g.n + + * * * g.+@$@$@+@U N.g.n a k g g.+@$@$@+@U N.g.n = _ b $ $ $ $ g.+@$@$@+@U N.g.n g.+@$@$@+@U N.g.n f - m [ ; [ g.+@$@$@+@U N.g.n $ 9 } 6 $ g.+@$@$@+@U N.g.n { 8 i _@+@$@$@+@U N.g.n ", "3.& & , / 9 + j n $@$@X N.g.n / q n $@$@X N.g.n + + + * * * n $@$@X N.g.n a r g b r r n $@$@X N.g.n _ = = = = $ $ $ n $@$@X N.g.n $ * * n $@$@X N.g.n $ m l s [ J # n $@$@X N.g.n 9 c + / t ( $ n $@$@X N.g.n { { 8 { #.:@$@$@X N.g.n ", " % + 9 j 7 z g.N.` g.n & & q } / & g.N.` g.n + + 0 c * * = g.N.` g.n a k 2 g k a g b a g.N.` g.n = = + + + = _ = $ g.N.` g.n # - * * } o % g.N.` g.n g + f v K # 3 3 g.N.` g.n x + d : g d . 5 3 g.N.` g.n 5 { 8 8 i { i <@g.N.` g.n { ", " ^ 9 j 7 g a g.+.$@g.n q q & & & ^ g.+.$@g.n + 0 + + c * + g.+.$@g.n k 0 r r b 2 a k g g.+.$@g.n a ! = + v v 0 + + 0 _ g.+.$@g.n - # * * } q % u q g.+.$@g.n u = k > ^ h l / k # g.+.$@g.n A ^ . > 1 : = # * g.+.$@g.n B { 8 i i i i <@g.+.$@g.n { ", " % j 9 0 r z 7 g.@.g.n j q } & / / ^ % / g.@.g.n g + 0 + . . . g.@.g.n + k + + + r k b g r g.@.g.n k # ! = + + + + 0 + + 0 g.@.g.n # - - * * } q % u q } % g.@.g.n % 0 = 2 o . s l / ' f g.@.g.n n C % 9 b _ D ( _ 0 g.@.g.n C { 8 i i i [@g.@.g.n n ", " % + 9 + z 2 z z g.+.$@g.n = q & & / % % & / % g.+.$@g.n + + + + c c g.+.$@g.n r b + + + 0 k r 2 g.+.$@g.n e ! 1 + + + 0 + + + + g.+.$@g.n # # * v % % } q % % o g.+.$@g.n + _ k [ s ] s g e f g.+.$@g.n f & 3 E o ( t ; g.+.$@g.n { 8 i i }@g.+.$@g.n ", " % + 9 j j 7 r g +.+@g.n j = b + ^ ^ / / % ^ & +.+@g.n + + + + . +.+@g.n + b g + + + 0 k +.+@g.n - ! ! = + 0 + + + + + 0 +.+@g.n - - - * s s s % u p q % +.+@g.n z = = 2 } h v / , e f +.+@g.n n x w 1 1 < j k y $ +.+@g.n A { 8 i m |@+.+@g.n n ", " ^ 9 j 9 9 9 0 ).g.+@$@g.n _ g b g + % % / & ).g.+@$@g.n N 0 + 0 ).g.+@$@g.n g g 0 + ).g.+@$@g.n = = + + + 0 0 0 ).g.+@$@g.n # # l l l l s l % } ).g.+@$@g.n $ ) l q , 3 # ).g.+@$@g.n $ l . 0 r g 5 ).g.+@$@g.n { 8 m !.).g.+@$@g.n ", " j = = = = = X = g.+@g.n = = b b b g / X b g.+@g.n N X + g.+@g.n N g X 0 g.+@g.n = = = = + + + X = g.+@g.n - - - v l s l s X 0 g.+@g.n f m s 6 s & X f g.+@g.n f A A H e _ X y g.+@g.n { 8 i V X 1@g.+@g.2@{ ", "6.B B B B B B ^.B B n n B B B F N g g g ^. n n N + ^.= g n n N ^.! ! n n = = _ _ ^.+ + n n # # # # N l v l ^._ _ n n ' =.c 5 5 ^.k n n n A N ' I 5 ^.k $ n n { 8 8 (._.^.3@n *@:@8 8 { ", "6.B + B + B S B + B B B B B B 4 N S N + S = = = b N S N S = = = = = - - N S = n ' h S n 4 N a S o L { n <.S { { { { { { { ", " 4 x 4 R R x 4 F x 4 x F 4 4 R Q R R g g g g g g R Q R Q = = = R Q R Q C R Q R Q ", " c ] c ] c g. g.O g. g. g.O g. 0 0 g. g.O g. g. g.O g. @ g. g.O g. g. g.O g. g. g.O g. g. g.O g. g.g.O ", " . % ^ / & & +@+@+@ P n +@+@+@ P n E * E +@+@+@ P n +@+@+@ P n +@+@+@ P n +@+@+@ P n # +@+@+@ P n # ) ! +@+@+@ P n { ^@+@+@ +@P n ", " ] & + g.+@$@ g.$@R n g.+@$@ g.$@R n + * * g.+@$@ g.$@R n g.+@$@ g.$@R n $ $ g.+@$@ g.$@R n g.+@$@ g.$@R n # g.+@$@ g.$@R n ' g.+@$@ g.$@R n 8 /@+@ g.g.$@ g.n ", " ^ % ^ 9 g. $@g.n $@g.n g. $@g.n $@g.n + * * g. $@g.n $@g.n a g. $@g.n $@g.n $ $ b $ g. $@g.n $@g.n g. $@g.n $@g.n # > 6 g. $@g.n $@g.n 5 1 ' g. $@g.n $@g.n { 8 i +@$@g. S $@g. ", "p ^ % & j g.+@$@ +@U N. n g.+@$@ +@U N. n + * * g.+@$@ +@U N. n a k g.+@$@ +@U N. n = _ $ $ b g.+@$@ +@U N. n g.+@$@ +@U N. n f m [ d g.+@$@ +@U N. n 9 } 6 g.+@$@ +@U N. n { i _@+@ $@+@U g.n ", " & & / 9 j j $@$@X g.n / } $@$@X g.n + + * * * $@$@X g.n a a b a r $@$@X g.n = = _ $ $ $ $@$@X g.n $ * * $@$@X g.n $ m l [ J # $@$@X g.n 9 c + 7 ( $ $@$@X g.n { 8 { :@$@$@ N.g.n ", " % + 9 z 0 g. ` g.n & q & & g. ` g.n + + . * = g. ` g.n a k g k k g a g. ` g.n = _ + + = = $ g. ` g.n - * * } % g. ` g.n 2 f s K 3 3 g. ` g.n x + ; g d 5 3 g. ` g.n { 8 8 { i <@ N.` g. { ", " ^ + z g g.+.$@ n q & & / g.+.$@ n + + + c * g.+.$@ n 0 a r b a r g.+.$@ n a ! + l l + + + g.+.$@ n - # * * } u % g.+.$@ n u = $ > J v & $ g.+.$@ n ^ c G : 1 # g.+.$@ n w { i i i <@g.+. g.n { ", " j 9 0 z z g. g.n j q & / / % & g. g.n g + + + c c g. g.n + k + + k k 2 r g. g.n k ! = + + + + + + g. g.n # - * * } % % } % g. g.n % = g ] s s ' f g. g.n n C J b y [ _ + g. g.n ~ { 8 i i [@ @.g.n ", " % j 9 7 g 0 g.+.$@ n = & & / % & / g.+.$@ n + + + . g.+.$@ n g + + 0 a r g.+.$@ n # ! 0 + + 0 + + g.+.$@ n - # v u % q u % g.+.$@ n + _ k [ s l g M g.+.$@ n f , 3 o ( 7 g.+.$@ n { 8 i }@g.+. g.n ", " ^ j j j a g @. g.n j b + % / / % & @. g.n + + + c @. g.n + g + + + r @. g.n - ! _ + + + + + + @. g.n # - * l v % % } % @. g.n z = 2 ] s , # f @. g.n n x w 5 ) 9 y $ @. g.n A { i m |@ +@g.n ", " % j 9 + j z g.+@$@ n = b g 0 % & / g.+@$@ n 0 + + g.+@$@ n g + + g.+@$@ n = + + 0 + + g.+@$@ n - # v v s l u q g.+@$@ n $ ) s & 3 # g.+@$@ n $ @ c r 2 5 g.+@$@ n { 8 m ).g.+@ g.n ", " 9 = _ = X = g. g.n _ g b b X g g. g.n N [.+ g. g.n N 4@+ g. g.n = = = + + X = g. g.n # - l s l X + g. g.n f l 6 s X f g. g.n f A ' ' X t g. g.n { 8 V X 1@ +@g.2@ ", " B B B B B ^. B n n B B F N g g ^. n n N + U g n n N U ! n n = = = ^. + n n - - # N v v ^. = n n ' G 5 5 ^. n n n A N I 5 ^. $ n n { 8 (._. 3@n *@ 8 8 { ", "6.B B + B B + B B B B F N N + = = = N N = = = = # # N = n ' h n 4 N k o L { n S { { { { { ", " 4 F 4 Q F 4 F F 4 4 F Q Q g g g g g Q Q = = _ Q Q 4 Q R Q ", " p }.p }.p }.}.g.g.g.g.g. g.g.g.g.g. |.|.|. g.g.g.g.g. g.g.g.g.g. 7.g.g.g.g.g. g.g.g.g.g. g.g.g.g.g. 2. g.g.g.g.g. g.g.g.g.g. ", " }.3.3.4.4.4.4.g.+@+@+@+@+@n g.+@+@+@+@+@n |.5.5.5.g.+@+@+@+@+@n g.+@+@+@+@+@n g.+@+@+@+@+@n g.+@+@+@+@+@n H g.+@+@+@+@+@n 0.a.b.g.+@+@+@+@+@n @@#@g.+@+@+@+@+@n ", " }.3.4. f. g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n |.5.5.5.g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n g.g.g.g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n H H g.+@$@g.g.$@$@g.n n.o.g.+@$@g.g.$@$@g.n { 8 g.+@$@g.g.$@$@g.n ", "}.3.3.3.4.f. g.+@$@g.n +@$@g.n g.+@$@g.n +@$@g.n |.5.5.5.g.+@$@g.n +@$@g.n x.g.+@$@g.n +@$@g.n g.g.g.g.g.g.+@$@g.n +@$@g.n g.+@$@g.n +@$@g.n H H =.y.g.+@$@g.n +@$@g.n A.B.C.D.g.+@$@g.n +@$@g.n { 8 %@g.+@$@g.n +@$@g.n ", "}.3.3.3.4.f.3.g.+@$@$@+@$@N.g.n g.+@$@$@+@$@N.g.n |.|.. 5.5.g.+@$@$@+@$@N.g.n x.x.M.g.+@$@$@+@$@N.g.n N.N.g.g.g.g.g.g.+@$@$@+@$@N.g.n g.+@$@$@+@$@N.g.n M H m [ | k.g.+@$@$@+@$@N.g.n P.Q.B.R.5@g.+@$@$@+@$@N.g.n { 8 &@g.+@$@$@+@$@N.g.n ", "3.4.4.4.4.f.f.f.n $@$@$@N.g.n 4. l.n $@$@$@N.g.n |.|.|.5.5.5.n $@$@$@N.g.n x.x.M.M.x.x.n $@$@$@N.g.n N.N.N.N.N.g.g.g.n $@$@$@N.g.n g. 5.5.n $@$@$@N.g.n m.m 1.1.k.W.H n $@$@$@N.g.n X.Y.Z.`. +.+++n $@$@$@N.g.n { { 8 *@=@n $@$@$@N.g.n ", " 3.f.f.f.%+%+g.N.g.g.n 4.4. l.l.4.4.g.N.g.g.n |.%+|.}.5.5.6.g.N.g.g.n x.x.M.M.x.x.M.M.x.g.N.g.g.n N.N.|.|._ N.N.N.g.g.N.g.g.n &+&+ 5.5.l.l.*+g.N.g.g.n M.|.M 1.=+H f.z.g.N.g.g.n -+Z.;+o.q.>+#+A.,+g.N.g.g.n ~+ { 8 8 i { m -@g.N.g.g.n ;@ ", " 3.f.f.%+M.x.g.+@$@g.n l.l.4.4.4.3.g.+@$@g.n |.|.|.|.}.5.|.g.+@$@g.n x.|.x.x.M.M.x.x.M.g.+@$@g.n x.C N.%+1.1.|.%+|.|.N.g.+@$@g.n &+&+ 5.5.l.l.*+3.l.g.+@$@g.n *+6. m.=.7.p 1.8.m.H g.+@$@g.n {+]+^+h./+(+p._+u.g.+@$@g.n }+ { 8 i i i i i g.+@$@g.n >@ ", " 3.f.f.%+x.%+%+g.+@g.n f. l.l.4.4.4.3.3.4.g.+@g.n M. |.%+|.p }.}.g.+@g.n |. x.|.|+|.x.x.M.M.x.g.+@g.n x.H ~ N.%+|.%+|.|.%+|.%+g.+@g.n &+&+&+5.5.l.l.*+3.l.l.3.g.+@g.n *+%+6. M.l.p 1.8.z.9.M g.+@g.n n 1+]+2+3+4+5+6+7+Z.g.+@g.n 8+ { 8 i i i ,@g.+@g.n C ", " 3.f.f.f.%+M.%+%+g.+@$@g.n 6. l.4.4.4.3.3.4.4.3.g.+@$@g.n |.|.|.|.}.}.g.+@$@g.n x.M.|.|.|+|.x.x.M.g.+@$@g.n H C N.|.|.|.|.|.|.|.|.g.+@$@g.n &+&+5.1.*+3.l.l.*+3.l.g.+@$@g.n |+6. m.) 1.p 1.M.H M g.+@$@g.n a+b+X.9+c+6+d+o.g.+@$@g.n { 8 i i '@g.+@$@g.n ", " 3.f.f.f.f.%+x.M.g.+@g.n f.6. M.i+3.3.4.4.3.3.4.g.+@g.n |.|.|.|.}.g.+@g.n |. M.M.|.%+|+|.x.g.+@g.n H C ~ N.%+|.%+|.%+|.%+|.g.+@g.n &+&+&+5.1.1.1.3.3.l.l.*+g.+@g.n %+6.6. M.l.p 1.4.4.H M g.+@g.n n j+k+m+m+;+n+o+p+q+g.+@g.n H+ { 8 i i )@g.+@g.n A ", " 3.f.f.f.f.f.%+%+g.+@$@g.n 6. M.M.M.u+3.3.4.4.4.g.+@$@g.n %+|.%+|.g.+@$@g.n M.M.|.|.|+g.+@$@g.n N.N.|.|.%+|.|.|.|.g.+@$@g.n &+&+1.1.8.1.1.1.*+l.%+g.+@$@g.n M.; v+l.8.z.H M g.+@$@g.n P.w+Y.x+a+F.y+6@g.+@$@g.n { 8 i i !@g.+@$@g.n ", " f.6.6.6.6.6.6.6.g.+@g.n 6.6. M.M.M.M.4.M.M.g.+@g.n |.|.g.+@g.n M.M.|.g.+@g.n N.N.N.N.|.%+|.%+6.g.+@g.n &+&+&+ 1.1.1.1.1.%+|+g.+@g.n M m C+D+4.4.H M g.+@g.n G+H+{+I+J+$+v.L+g.+@g.n { 8 i 8 i ~@g.+@g.n { ", "6.N+N+N+N+N+N+N+N+N+n n N+N+N+F+ M.M.M. n n |.6.6.M.n n C C n n N.N.N.N.|.|.|.n n &+&+&+&+ 1.1.1.%+6.6.n n 9.O+y.P+Q+M m.n n n {+ n.R+C.a.a+S+n n { 8 8 8 { 8 {@]@n Z 8 8 { ", "6.N+|+N+|+N+i+N+u+N+N+N+N+N+N+F+ |.6.6.6.6.m. N.N.N.N.N.N.&+&+ 1.6. n 9.U+W.n F+ B+ V+S.W+ { { { { { { { { { { { ", " F+F+F+F+F+F+F+F+F+F+F+F+F+F+ M.m.M.M.M.M.M.M. N.N.N. X+F ", " }.p p }.p g. g.g.g. g. g.g.g. |. |. g. g.g.g. g. g.g.g. 1.g. g.g.g. g. g.g.g. g. g.g.g. g. g.g.g. g.g.g. ", " }.3.3. 4.4.4. +@+@+@ +@n +@+@+@ +@n 5.5.5. +@+@+@ +@n +@+@+@ +@n +@+@+@ +@n +@+@+@ +@n H +@+@+@ +@n 0.a.b. +@+@+@ +@n @@ g.+@+@ +@+@n ", " }. 4. f. g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n |.5.5. g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n g.g. g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n H g.+@$@ g.$@$@ n n. g.+@$@ g.$@$@ n 8 g.+@ g.g.$@ g.n ", " 3.3.3. f. g. $@g.n $@g.n g. $@g.n $@g.n |. 5.5.g. $@g.n $@g.n x.g. $@g.n $@g.n g.g. g.g.g. $@g.n $@g.n g. $@g.n $@g.n H =.y.g. $@g.n $@g.n A. C.D.g. $@g.n $@g.n { 8 %@ +@$@g. +@$@g. ", "p 3. 3.4.f. g.+@$@ +@$@N. n g.+@$@ +@$@N. n |.5.5. g.+@$@ +@$@N. n x.x. g.+@$@ +@$@N. n N.N. g.g.g. g.+@$@ +@$@N. n g.+@$@ +@$@N. n M m [ | g.+@$@ +@$@N. n Q.B.R. g.+@$@ +@$@N. n { &@g.+@ $@+@$@ g.n ", " 4.4.4. f.f.f. $@$@$@ g.n 4. l. $@$@$@ g.n |.|. 5.5.5. $@$@$@ g.n x.x. M.x.x. $@$@$@ g.n N.N.N. g.g.g. $@$@$@ g.n g. 5.5. $@$@$@ g.n m.m 1. k.W.H $@$@$@ g.n X.Y.Z. +.+++ $@$@$@ g.n { 8 *@ n $@$@ N.g.n ", " 3.f.f. %+%+g. g.g.n 4. l. 4.4.g. g.g.n |.|.}. 5.6.g. g.g.n x.x. M.x.x. M.x.g. g.g.n N.N. |.|.N. N.g.g. g.g.n &+ 5.5. l.*+g. g.g.n M. M 1.=+ z.z.g. g.g.n -+Z. o.q.>+ A.,+g. g.g.n { 8 8 { m -@ N.g.g. ;@ ", " 3. f.%+M. g.+@$@ n l. 4.4.4. g.+@$@ n |.|. |.}.5. g.+@$@ n |.x.x. M.x.x. g.+@$@ n x.C |.1.1. |.|.|. g.+@$@ n &+&+ 5.5. l.*+*+ g.+@$@ n *+6. m.=.W. 1.8.m. g.+@$@ n ]+^+h. (+p._+ g.+@$@ n }+ { i i i i g.+@ g.n >@ ", " f.f.%+ %+%+g. g.n f. l. 4.4.4. 3.4.g. g.n M. |.|.|. }.}.g. g.n |. x.|. |.x.x. M.x.g. g.n x. C N.|. |.|.|. |.|.g. g.n &+ &+5.5. l.*+*+ l.*+g. g.n *+ 6. M. p 1.1. 9.M g. g.n n 1+]+ 3+4+5+ 7+Z.g. g.n 8+ { 8 i i ,@ +@g.n ", " 3.f.f. %+M.%+ g.+@$@ n 6. 4.4.4. 3.4.4. g.+@$@ n |. |.|.}. g.+@$@ n m.|.|. |.x.x. g.+@$@ n H C |.|.|. |.|.|. g.+@$@ n &+&+ 1.*+*+ l.*+*+ g.+@$@ n |+6. m.k.1. 1.M.H g.+@$@ n a+b+ @ c+6+d+ g.+@$@ n { 8 i '@g.+@ g.n ", " 3. f.f.f. x.M.g. g.n f. M.i+ 3.4.4. 3.4.g. g.n |.|. |.}.g. g.n |. M.|.|. |.x.g. g.n H C N.|. |.|.%+ |.|.g. g.n &+ &+5.1. 1.3.*+ l.*+g. g.n %+ 6. M. p 1.4. H M g. g.n n j+k+ m+;+n+ p+q+g. g.n H+ { i i )@ +@g.n ", " 3.f.f. f.f.%+ g.+@$@ n 6. M.M.u+ 3.4.4. g.+@$@ n |.|.|. g.+@$@ n m.|.|. g.+@$@ n N.|.|. |.|.|. g.+@$@ n &+&+ 1.1.1. 1.*+l. g.+@$@ n m.j.v+ 8.z.H g.+@$@ n P.w+v. a+F.y+ g.+@$@ n { 8 i !@g.+@ g.n ", " f. 6.6.6. 6.6.g. g.n 6. M.M.M. M.M.g. g.n |.|.g. g.n M.|.g. g.n N.N. N.|.|. |.6.g. g.n &+ &+ 1.1.1. %+|+g. g.n M C+D+4. H M g. g.n G+ H+I+J+ K+L+g. g.n { 8 8 i ~@ +@g.n ", " N+N+N+ N+N+N+ N+n n N+N+F+ M.M. n n |.6. M.n n C n n N. N.N.|. |.n n &+&+&+ 1.1.|. 6.n n 9.O+ P+Q+M n n n {+ R+C.a. S+n n { 8 8 { {@]@n i i { ", "6.N+ N+|+N+ N+u+N+ N+N+N+ F+ |. 6.6.6. N.N.N. N.&+&+ 6. n 9.U+ n F+ B+ S.W+ { { { { { { { { ", " F+F+F+ F+F+F+ F+F+F+ F+F+ M.M.M. M.M.M. N.N.N. X+Y+ ", " }.}.}.}.}.}.p g.g.g.O g. g.g.g.O g. |.|.|. g.g.g.O g. g.g.g.O g. 1.g.g.g.O g. g.g.g.O g. g.g.g.O g. 2. g.g.g.O g. g.g.g.O g. ", " }.3.3.4.4.4.4.g.+@+@+@+@P n g.+@+@+@+@P n |.5.5.5.g.+@+@+@+@P n g.+@+@+@+@P n g.+@+@+@+@P n g.+@+@+@+@P n H g.+@+@+@+@P n 0.a.b.g.+@+@+@+@P n { n ^@+@+@+@+@P n ", " p 3.4. f. g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n |.. 5.5.g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n g.g.g.g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n H H g.+@$@g.g.$@R g.n n.o.g.+@$@g.g.$@R g.n { 8 /@+@$@g.g.$@R g.n ", ". 3.3.3.4.f. g.+@$@g.n S $@g.n g.+@$@g.n S $@g.n |.5.5.5.g.+@$@g.n S $@g.n x.g.+@$@g.n S $@g.n g.g.g.g.g.g.+@$@g.n S $@g.n g.+@$@g.n S $@g.n H H =.y.g.+@$@g.n S $@g.n A.B.C.D.g.+@$@g.n S $@g.n { 8 i (@+@$@g.n S $@g.n ", ". 3.3.3.4.f.3.g.+@$@$@+@U N.g.n g.+@$@$@+@U N.g.n |.|.5.5.5.g.+@$@$@+@U N.g.n x.x.M.g.+@$@$@+@U N.g.n N.N.g.g.g.g.g.g.+@$@$@+@U N.g.n g.+@$@$@+@U N.g.n M H m [ | k.g.+@$@$@+@U N.g.n P.Q.B.R.5@g.+@$@$@+@U N.g.n { 8 i _@+@$@$@+@U N.g.n ", "% 4.4.4.4.f.f.f.n $@$@X N.g.n 4. l.n $@$@X N.g.n |.|.|.5.5.5.n $@$@X N.g.n x.x.M.M.x.x.n $@$@X N.g.n N.N.N.N.N.g.g.g.n $@$@X N.g.n g. 5.5.n $@$@X N.g.n m.m 1.1.k.W.H n $@$@X N.g.n X.Y.Z.`. +.+++n $@$@X N.g.n { { 8 { #.:@$@$@X N.g.n ", " 3.f.f.f.%+%+g.N.` g.n 4.4. l.l.4.4.g.N.` g.n |.%+|.p 5.5.6.g.N.` g.n x.x.M.M.x.x.M.M.x.g.N.` g.n N.N.|.|._ N.N.N.g.g.N.` g.n &+&+ 5.5.l.l.*+g.N.` g.n M.|.M 1.=+H f.z.g.N.` g.n -+Z.;+o.q.>+#+A.,+g.N.` g.n ~+ { 8 8 i { i <@g.N.` g.n { ", " 3.f.f.%+M.x.g.+.$@g.n l.l.4.4.4.3.g.+.$@g.n |.|.|.|.}.5.|.g.+.$@g.n x.|.x.x.M.M.x.x.M.g.+.$@g.n x.C N.|.8.1.|.|.%+|.N.g.+.$@g.n &+&+ 5.5.l.l.*+3.l.g.+.$@g.n *+6. m.=.7.p 1.8.m.H g.+.$@g.n {+]+^+h./+(+p._+u.g.+.$@g.n }+ { 8 i i i i <@g.+.$@g.n { ", " 3.f.f.%+x.%+%+g.@.g.n f. l.l.4.4.4.3.3.4.g.@.g.n M. |.|.|.p }.}.g.@.g.n |. x.|.|+|.x.x.M.M.x.g.@.g.n x.H C N.|.%+|.|.|.%+|.%+g.@.g.n &+&+&+5.5.l.l.*+3.l.l.3.g.@.g.n *+%+6. M.l.p 1.8.z.9.M g.@.g.n n 1+]+2+3+4+5+6+7+Z.g.@.g.n 8+ { 8 i i i [@g.@.g.n n ", " 3.f.f.f.%+M.%+%+g.+.$@g.n 6. l.4.4.4.3.3.4.4.3.g.+.$@g.n %+|.|.|.}.}.g.+.$@g.n x.M.|.|.|+|.x.x.M.g.+.$@g.n H C N.|.|.|.%+|.|.|.|.g.+.$@g.n &+&+5.1.*+3.l.l.*+3.l.g.+.$@g.n |+6. m.) 1.p 1.M.H M g.+.$@g.n a+b+X.9+c+6+d+o.g.+.$@g.n { 8 i i }@g.+.$@g.n ", " 3.f.f.f.f.%+x.M.+.+@g.n f.6. M.i+3.3.4.4.3.3.4.+.+@g.n |.%+|.|.p +.+@g.n |. M.M.|.%+|+|.x.+.+@g.n H C C N.%+|.|.%+|.%+|.|.+.+@g.n &+&+&+5.1.1.1.3.3.l.l.*++.+@g.n %+6.6. M.l.p 1.4.4.H M +.+@g.n n j+k+m+m+;+n+o+p+q++.+@g.n H+ { 8 i m |@+.+@g.n n ", "n 3.f.f.f.f.f.%+).g.+@$@g.n 6. M.M.M.u+3.3.4.4.).g.+@$@g.n N |.|.|.).g.+@$@g.n M.M.%+|.).g.+@$@g.n N.N.%+|.|.|.f.%+).g.+@$@g.n &+&+1.1.8.1.1.1.*+l.).g.+@$@g.n M.; v+l.8.z.H ).g.+@$@g.n P.w+Y.x+a+F.y+).g.+@$@g.n { 8 m !.).g.+@$@g.n ", "n f.6.6.6.6.6.X 6.g.+@g.n 6.6. M.M.M.M.4.X M.g.+@g.n N X |.g.+@g.n N M.X |.g.+@g.n N.N.N.N.%+|.|.X 6.g.+@g.n &+&+&+ 1.1.1.1.8.X |+g.+@g.n M m C+D+4.4.X M g.+@g.n G+H+{+I+J+$+X L+g.+@g.n { 8 i V X 1@g.+@g.2@{ ", "n N+N+N+N+N+N+^.N+N+n n N+N+N+F+ N M.M.M.^. n n N |.^.6.M.n n N ^.C C n n N.N.N.N.^.|.|.n n &+&+&+&+ N 1.1.1.^.6.6.n n 9.O+y.P+Q+^.m.n n n {+N e+R+C.^.a+S+n n { 8 8 (._.^.3@n *@:@8 8 { ", "7@N+|+N+|+N+S N+u+N+N+N+N+N+N+F+ N S N |.S 6.6.6.M. N S N S N.N.N.N.N.&+&+ N S 6. n 9.U+S n F+ N B+ S S.W+ { n <.S { { { { { { { ", "n F+F+x R R F+F+F+F+F+F+F+F+F+ R Q R R M.M.M.M.M.M. R Q R Q N.N.N. R Q R Q F+ R Q R Q ", " }.}.p }.p g. g.O g. g. g.O g. |. |. g. g.O g. g. g.O g. 1.g. g.O g. g. g.O g. g. g.O g. g. g.O g. g.g.O ", " }.3.3. 4.4.4. +@+@+@ P n +@+@+@ P n 5.5.5. +@+@+@ P n +@+@+@ P n +@+@+@ P n +@+@+@ P n H +@+@+@ P n 0.a.b. +@+@+@ P n { ^@+@+@ +@P n ", " }. 4. f. g.+@$@ g.$@R n g.+@$@ g.$@R n |.5.5. g.+@$@ g.$@R n g.+@$@ g.$@R n g.g. g.+@$@ g.$@R n g.+@$@ g.$@R n H g.+@$@ g.$@R n n. g.+@$@ g.$@R n 8 /@+@ g.g.$@ g.n ", " 3.3.3. f. g. $@g.n $@g.n g. $@g.n $@g.n |. 5.5.g. $@g.n $@g.n x.g. $@g.n $@g.n g.g. g.g.g. $@g.n $@g.n g. $@g.n $@g.n H =.y.g. $@g.n $@g.n A. C.D.g. $@g.n $@g.n { 8 i +@$@g. S $@g. ", ". 3. 3.4.f. g.+@$@ +@U N. n g.+@$@ +@U N. n |.5.5. g.+@$@ +@U N. n x.x. g.+@$@ +@U N. n N.N. g.g.g. g.+@$@ +@U N. n g.+@$@ +@U N. n M m [ | g.+@$@ +@U N. n Q.B.R. g.+@$@ +@U N. n { i _@+@ $@+@U g.n ", " 4.4.4. f.f.f. $@$@X g.n 4. l. $@$@X g.n |.|. 5.5.5. $@$@X g.n x.x. M.x.x. $@$@X g.n N.N.N. g.g.g. $@$@X g.n g. 5.5. $@$@X g.n m.m 1. k.W.H $@$@X g.n X.Y.Z. +.+++ $@$@X g.n { 8 { :@$@$@ N.g.n ", " 3.f.f. %+%+g. ` g.n 4. l. 4.4.g. ` g.n |.|.}. 5.6.g. ` g.n x.x. M.x.x. M.x.g. ` g.n N.N. |.|.N. N.g.g. ` g.n &+ 5.5. l.*+g. ` g.n M. M 1.=+ z.z.g. ` g.n -+Z. o.q.>+ A.,+g. ` g.n { 8 8 { i <@ N.` g. { ", " 3. f.%+M. g.+.$@ n l. 4.4.4. g.+.$@ n |.|. |.}.5. g.+.$@ n |.x.x. M.x.x. g.+.$@ n x.C |.1.1. |.|.|. g.+.$@ n &+&+ 5.5. l.*+*+ g.+.$@ n *+6. m.=.W. 1.8.m. g.+.$@ n ]+^+h. (+p._+ g.+.$@ n }+ { i i i <@g.+. g.n { ", " f.f.%+ %+%+g. g.n f. l. 4.4.4. 3.4.g. g.n M. |.|.|. }.}.g. g.n |. x.|. |.x.x. M.x.g. g.n x. C N.|. |.|.|. |.|.g. g.n &+ &+5.5. l.*+*+ l.*+g. g.n *+ 6. M. p 1.1. 9.M g. g.n n 1+]+ 3+4+5+ 7+Z.g. g.n 8+ { 8 i i [@ @.g.n ", " 3.f.f. %+M.%+ g.+.$@ n 6. 4.4.4. 3.4.4. g.+.$@ n |. |.|.}. g.+.$@ n m.|.|. |.x.x. g.+.$@ n H C |.|.|. |.|.|. g.+.$@ n &+&+ 1.*+*+ l.*+*+ g.+.$@ n |+6. m.k.1. 1.M.H g.+.$@ n a+b+ @ c+6+d+ g.+.$@ n { 8 i }@g.+. g.n ", " 3. f.f.f. x.M.@. g.n f. M.i+ 3.4.4. 3.4.@. g.n |.|. |.}.@. g.n |. M.|.|. |.x.@. g.n H C N.|. |.|.%+ |.|.@. g.n &+ &+5.1. 1.3.*+ l.*+@. g.n %+ 6. M. p 1.4. H M @. g.n n j+k+ m+;+n+ p+q+@. g.n H+ { i m |@ +@g.n ", " 3.f.f. f.f.%+ g.+@$@ n 6. M.M.u+ 3.4.4. g.+@$@ n |.|.|. g.+@$@ n m.|.|. g.+@$@ n N.|.|. |.|.|. g.+@$@ n &+&+ 1.1.1. 1.*+l. g.+@$@ n m.j.v+ 8.z.H g.+@$@ n P.w+v. a+F.y+ g.+@$@ n { 8 m ).g.+@ g.n ", "n f. 6.6.6. X 6.g. g.n 6. M.M.M. X M.g. g.n N X |.g. g.n N X |.g. g.n N.N. N.|.|. X 6.g. g.n &+ &+ 1.1.1. X |+g. g.n M C+D+4. X M g. g.n G+ H+I+J+ X L+g. g.n { 8 V X 1@ +@g.2@ ", " N+N+N+ N+N+^. N+n n N+N+F+ N M.M.^. n n N |.U M.n n N U C n n N. N.N.^. |.n n &+&+&+ N 1.1.^. 6.n n 9.O+ P+Q+^. n n n {+N R+C.^. S+n n { 8 (._. 3@n *@ 8 8 { ", "7@N+ N+|+N+ N+u+N+ N+N+N+ F+ N N |. 6.6.6. N N N.N.N. N.&+&+ N 6. n 9.U+ n F+ N B+ S.W+ { n S { { { { { ", " F+F+F+ Q F+F+ F+F+F+ F+F+ Q Q M.M. M.M.M. Q Q N.N.N. Q Q Y+ Q R Q ", " . . . . . . ] + + + l # # $ ", " . % % & & & & / % . . . . + * * * + = @ @ # - ; > , ' # ) ! ~ ' ' { { { { ", " ] ^ / + % & & % % % + ( * * * * + _ = . $ $ $ $ @ @ # - > : ) < [ } $ ' | 1 2 3 4 5 * 6 7 { 8 8 8 8 { ", "}.^ % % & 9 + * ^ ^ 0 * * * * * . + = = a a . . . $ $ b b b b $ @ @ # # > c < d : 3 e f e 5 } 1 ' : g e + h . + 4 { 8 i i i i 8 { ", "p ^ ^ ^ & j % % % % j * % % % & j + + * * * * * . _ = a k g g a a . . . = _ b $ $ $ $ @ l @ $ $ $ $ * * f - m [ ; [ . / f - 3 , n $ 9 } 6 $ o g h p q o # { 8 i i i i 8 { ", "3.& & , / 9 + + + j 9 * ^ ^ ^ / q q j j + + + * * * * = = + a r g b r r g g a r ] _ = = = = $ $ $ @ = b b b b $ $ * * } } * * $ m l s [ @ # # / 3 $ f n 9 c + / t ( $ } q c j = n { { 8 { i i { 8 { { { ", " % + 9 9 0 7 + + % & & & & q } & & q q j 9 + + 0 . * * _ = = c + a k 2 g k k 2 2 r k 2 2 a a = = + + + = _ = $ $ $ $ $ b - - * * } q % u } } * * g + f v w - 3 3 $ e # k n x + d : g d . 5 3 s ' 1 y 2 5 { 8 8 i { i i { 8 { 8 8 { ", " ^ 9 j z g k 0 9 9 + q q & & / ^ & & q } + 0 + + c * + = . . + k 0 r r b b r r 2 b r r g g a ! = + v s + + + + = = = $ # # # # * * } } % % q q % % } } u = k > ^ h l / $ # # f f $ n A ^ . > 1 : = # * + ~ + / ] B { 8 i i i i i i i 8 i 8 { ", " % j 9 0 r 7 z g 7 9 9 j q } & / / % % / / ^ / & g + + + . . c c q . . + k + + + k r 2 g k k 2 2 r k # ! = + + 0 + + + + + + = = - - - - * * } q % u o p % % q q % % 0 = 2 o . s v 3 B f f f f k n C % 9 b y D ( _ + ~ E 1 w C { 8 i i i i i i i 8 { ", " % + 9 + 7 2 0 0 r z j j 9 = q & & / % % / / % % & & / 2 + 0 + + c . q ^ } 6 + r g 0 + + + r r b b a r # e e ! 1 + + + 0 + 0 + 0 0 + = # # # # * v % % q q % % } q u % 0 0 + _ k [ s ] s 2 # f f f f $ n f & 3 E o ( t : B ( < f k { 8 i i i i i 8 { ", " % + 9 j j z r 2 z j + + 9 = b + ^ ^ / & % ^ / / / g b + + + + . 6 q } . + b b + + + + k r # # - - ! ! = + + + 0 + 0 j + + + = - - - - * s s s % % } o % % z 0 + z = = 2 } h l & & # f f f f f n x w 1 5 < 9 k y $ 5 $ h : A { 8 i i i i i 8 { ", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K.7@K.n K.K.7@n K.7@K.n K.7@K.n K.7@K.n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.7@K.n K.K.7@n K.K.7@n K.K.7@n K.K.7@n 7@K.7@n K.K.7@n K.K.7@n K.K.7@n K.7@K.n K.K.7@n K.7@K.n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.K.n K.K.K.n K.K.K.n K.K.K.", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "7@K.n K.7@7@n K.7@K.n K.7@K.n K.7@K.n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@K.n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.K.7@n K.7@7@n K.7@7@n K.7@7@n K.7@K.n K.7@7@n K.7@K.n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n 7@K.K.n K.K.K.n K.K.K.n K.K.K.n K.", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " ] ] ] ] ] 0 0 l e ", " . % ^ / & / % . . . E * E = # d > , # ) ! ' { { { ", " . & + % & % % + * * * * + _ = . $ $ $ @ @ # > : < [ } $ ' 1 2 3 5 * 6 { 8 8 8 ", " ^ % ^ 9 j ^ % + * * * . + = a a . . . $ $ b $ b @ @ # > 6 < : 3 # e 5 1 ' ; e + h + 4 8 i i i 8 { ", "p ^ % & j % % ^ * % ^ & j + * * * * . = a k g a a . . . = _ $ $ b @ l @ $ $ $ * * f m [ d c , f 3 , n 9 } 6 o g h } o # { 8 i i i { ", " & & / 9 9 + 9 j * % % / q j j + + * * * = = + a a b a r g a r = = _ $ $ $ = $ b b $ $ * * } * * $ m l [ J M / 3 $ n 9 c + 7 ( $ q 6 + n { 8 { i { 8 { { ", " % + j z z 9 % / / & q & & q j 9 + + . * _ _ c + a k g k k 2 r k g a a = _ + + = = $ b $ $ b - * * } % u } * * 2 f s K 3 3 $ # k n x + ; g d 5 3 , 1 y 2 8 8 i i i { { 8 8 ", " ^ + z 2 7 9 + q & & / & & q + + + c * = c . 0 a r b a r b a r g a ! + l l + + + = = b # - # * * } u % q u % } u = $ > J v & $ # f f n ^ c G : 1 # j ! + ] w { 8 i i i i i 8 8 { ", " j 9 0 z z g j j j q & / / % / / & & g + + + c . . c c + k + + k k g k k 2 r k ! = + + + + + 0 + = - # - * * } % % } % % } % % = g ] s s ' f f f k n C J b y [ _ + C 1 w ~ { 8 i i i i i 8 { ", " % j 9 7 g 0 r z 9 9 = & & / % & / % & / 2 + + + . q % q + g + + 0 a r b a r e # ! 0 + + 0 + + + + _ - - # v u % q u % q u % 0 + _ k [ s l g e f f f n f , 3 o ( y B ( D r 8 i i i i 8 ", " ^ j j j a 2 0 j + 9 b + % / / % / / g b + + + c . q . + g + + + k k # - - ! _ + + + + + 0 + = # # - * l v % % } % % 0 + z = g ] s , - f f f f n x w 5 ) 3 y $ 1 h ; A { 8 i i i 8 { ", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. K.n K. K.n K. K.n K. K.", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@K.K. K.K.K. K.K.K. K.K.K. K.", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " . . . . . . ] N O N O + + + N O N O l N O N O # # N O $ N O N O ", " . % % & & & & / % . . . P N P + * * * + N P N P @ N @ P N P # - ; > , ' P # ) ! ~ N ' P ' { { { { N P ", " ] ^ / + % & & % Q % N Q + ( * * * * + _ Q N Q . $ $ $ $ @ @ Q N Q # - > : ) < [ } Q ' | 1 2 3 4 5 * R 7 { 8 8 8 8 { Q ", "}.^ % % & 9 N + S ^ ^ N S 0 * * * * * . + = S a a N S . . . $ $ b b b b $ @ @ S N S # # > c < d : 3 e S e 5 } 1 ' : g e + h S + 4 { 8 i i i i 8 T S ", "p ^ ^ ^ & j % % % % j * S % % & N U j + + * * * * * . _ = U a k g g a a . U . = _ b $ $ $ $ @ l @ $ $ U $ N * * U f - m [ ; [ . / f - 3 S n $ 9 } 6 $ o g h p q U # { 8 i i i i V W S ", "3.& & , / 9 + + + j 9 X ^ ^ ^ / q q X j j + + + * * * * = = X a r g b r r g g a X ] _ = = = = $ $ $ @ = b X b b $ $ * * } } * X $ m l s [ @ # # / 3 X f n 9 c + / t ( $ } q c X = n { { 8 { i i { Y X Z { ", " % + 9 9 0 7 + + ` & & & & q } & & q q ` 9 + + 0 . * * _ = = ` + a k 2 g k k 2 2 r k 2 ` a a = = + + + = _ = $ $ $ ` $ b - - * * } q % u } ` * * g + f v w - 3 3 $ e X k n x + d : g d . 5 3 s ' X y 2 5 { 8 8 i { i i { .X ..8 { ", " ^ 9 j z g k 0 +.9 + q q & & / ^ & +.q } + 0 + + c * + = +.. + k 0 r r b b r r 2 b +.r g g a ! = + v s + + + + = = +.$ # # # # * * } } % % q q +.% } } u = k > ^ h l / $ # # @.f $ n A ^ . > 1 : = # * + +.+ / ] B { 8 i i i i i #.$.%.i 8 { ", " % j 9 0 r 7 z g @.9 9 j q } & / / % % / / @./ & g + + + . . c c @.. . + k + + + k r 2 g k k @.2 r k # ! = + + 0 + + + + + + +.= - - - - * * } q % u o p % % @.q % % 0 = 2 o . s v 3 B f f @.f k n C % 9 b y D ( _ + ~ @.1 w C { 8 i i i i &.*.i 8 { ", " % + 9 + 7 2 0 0 r +.j j 9 = q & & / % % / / % % +.& / 2 + 0 + + c . q +.} 6 + r g 0 + + + r r b b +.r # e e ! 1 + + + 0 + 0 + 0 0 @.= # # # # * v % % q q % % } q +.% 0 0 + _ k [ s ] s 2 # f f +.f $ n f & 3 E o ( t : B +.< f k { 8 i i =.-.;.8 { ", " % + 9 j j z r 2 +.j + + 9 = b + ^ ^ / & % ^ / @./ g b + + + + . +.q } . + b b + + + + k @.# # - - ! ! = + + + 0 + 0 j + +.+ = - - - - * s s s % % } o % +.z 0 + z = = 2 } h l & & # f @.f f f n x w 1 5 < 9 k y $ +.$ h : A { 8 i m >.,.'.8 { ", "n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n { n n n ).n n n { n n n ", "n K.7@K.n K.K.X n K.7@K.n K.7@K.n K.7@K.n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.K.` n K.K.7@n K.K.7@n K.7@K.n K.K.X n K.K.7@n K.K.7@n K.K.7@n 7@K.X n K.K.7@n K.K.7@n K.K.7@n K.7@X n K.K.7@n K.7@K.n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.K.n K.K.X n K.K.K.n K.K.K.", "n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n 8@n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n { n n n n ^.n n n n n n n n ", "7@K.n K.7@7@S K.7@K.n K.7@K.n K.7@K.n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@K.n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.K.7@S K.7@7@n K.7@7@n K.7@7@n K.7@K.S K.7@7@n K.7@K.n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n 7@K.K.n K.K.K.S K.K.K.n K.K.K.n K.", "n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R R n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n ", " ] ] ] ] ] N O N O 0 0 N O N O l N O N O e N O N O N O ", " . % ^ / & / % . . P N P E * E N P N P N P N P # d > , P # ) ! N P ' { { { N P ", " . & + % & % Q N Q + * * * * + _ Q N Q . $ $ $ @ @ Q N Q # > : < [ } Q ' 1 2 3 5 * R { 8 8 8 Q ", " ^ % ^ 9 j ^ % + * * * . + = a a . . . $ $ b $ b @ @ # > 6 < : 3 # e 5 1 ' ; e + h + 4 8 i i i 8 T ", "p ^ % & j % % ^ * S ^ & N U j + * * * * . = U a k g a a . U . = _ $ $ b @ l @ $ U $ N * * U f m [ d c , f 3 S n 9 } 6 o g h } U # { 8 i i i W S ", " & & / 9 9 + 9 j X % % / q X j j + + * * * = = X a a b a r g a X = = _ $ $ $ = $ X b $ $ * * } * X $ m l [ J M / 3 X n 9 c + 7 ( $ q 6 X n { 8 { i { Y X { ", " % + j z z 9 ` / / & q & & q ` 9 + + . * _ _ ` + a k g k k 2 r k ` a a = _ + + = = $ b ` $ b - * * } % u ` * * 2 f s K 3 3 $ ` k n x + ; g d 5 3 , ` y 2 8 8 i i i { X ..8 ", " ^ + z 2 7 +.+ q & & / & +.q + + + c * = +.. 0 a r b a r b +.r g a ! + l l + + + = +.b # - # * * } u % q +.% } u = $ > J v & $ # +.f n ^ c G : 1 # j +.+ ] w { 8 i i i #.$.%. 8 { ", " j 9 0 z z g j j j q & / / % / / & & g + + + c . . c c + k + + k k g k k 2 r k ! = + + + + + 0 + = - # - * * } % % } % % } % % = g ] s s ' f f f k n C J b y [ _ + C 1 w ~ { 8 i i i &. i 8 { ", " % j 9 7 g 0 r +.9 9 = & & / % & / % +./ 2 + + + . q +.q + g + + 0 a r b +.r e # ! 0 + + 0 + + + +._ - - # v u % q u % q +.% 0 + _ k [ s l g e f +.f n f , 3 o ( y B +.D r 8 i i -.;.8 ", " ^ j j j a 2 @. j + 9 b + % / / % / @. g b + + + c @. q . + g + + + k @. # - - ! _ + + + + + 0 +. = # # - * l v % % } % @. 0 + z = g ] s , - f @. f f n x w 5 ) 3 y $ @. h ; A { 8 m >.,. 8 { ", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. K.n K. X n K. K.n K. K.", " n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n { n n n ^. n n n n n n ", "7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@K.K. K.K.K. K.K.K. K.K.K. K.", " n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n ", " p }.}.p p }.}. |.|.|. 7. H H 2. ", " }.3.3.4.4.4.4.4.3.}.}.}.}. |.. 5.5.|. 6. 1. 7. H H | =.8.9. 0.a.b.c. d. e. { { { { ", " }.3.4. f. 3.4.4.3.3.3. |.5.5.5.5.5.|. 6.6. }. g.g.g.g. 7. 1. H H h.i.j.j.k.l.m. n.o.p.q.r.s.t.u.v.w. { 8 8 8 8 { ", "}.3.3.3.4.f. f. 5.3.3. |.5.5.5.5.5.}.|.6.6. x.x. }.}.p g.g.g.g.g.g.g.1.7. H H =.y.) | E f.H M H A.B.C.D.(+F.G.H.I.J.K.L. { 8 i i i i 8 { ", "p 3.3.3.4.f.3.3.3.3.f.5.3.3.3.4. f. |.|.5.5.5.5.5.}.6.6. x.x.M.M.x.x. }.p p N.N.g.g.g.g.g.7.7.1.g.g.g.g. 5.5. M H m [ | k.O.4.x.M f.8.n P.Q.B.R.5@S.q.T.B.B.U.V. { 8 i i i i 8 { ", "3.4.4.4.4.f.f.f.f.f.f.5.3.3.3.4. l.l. f.f. %+|.|.5.5.5.5.6.6.|. x.x.M.M.x.x.M.M.x.x.}. N.N.N.N.N.g.g.g.1.6.g.g.g.g.g.g. 5.5.l.l.5.5. m.m 1.1.k.7.H H z.f.m.M n X.Y.Z.`. +.+++@+B.#+H.$+n { { 8 { i i { 8 { { { ", " 3.f.f.f.%+%+f.f.3.4.4.4.4. l.l.4.4.l.l.f.f. |.|.%+}.5.5.6.6.6.}.|. x.x.M.M.x.x.M.M.x.x.M.M.x.x. N.N.|.|._ N.N.N.g.g.g.g.g.g.&+&+ 5.5.l.l.*+*+l.l.5.5. M.|.M 1.=+H z.z.m.H H m.n -+Z.;+o.q.>+#+A.,+'+D.)+!+F.~+ { 8 8 i { i i { 8 { 8 8 { ", " 3.f.f.%+M.x.%+f.f.f. l.l.4.4.4.3.4.4.l.l. %+|.|.|.}.. |.6.}.}.|. x.|.x.x.M.M.x.x.M.M.x.x.M.M.x.C N.|.8.1.|.|.%+|.N.N.N.g.&+&+&+&+ 5.5.l.l.*+3.l.l.*+*+l.l.*+6. m.=.7.p 1.4.x.H H x.M m.n {+]+^+h./+(+p._+u.:+b.<+r.[+}+ { 8 i i i i i i i 8 i 8 { ", " 3.f.f.%+x.%+%+M.%+f.f.f. l.l.4.4.4.3.3.4.4.3.4.4.M. |.|.|.}.}.}.}.l.}.}.|. x.|.|+|.x.x.M.M.x.x.M.M.x.x.H C N.|.%+|.%+|.|.%+|.|.N.N.&+&+&+&+5.5.l.l.*+3.l.l.3.3.l.l.3.*+%+6. M.l.p 1.1.z.N+M M M M m.n 1+]+2+3+4+5+6+7+Z.8+9+/+0+8+ { 8 i i i i i i i 8 { ", " 3.f.f.f.%+M.%+%+x.%+f.f.f.6. l.4.4.4.3.3.4.4.3.3.4.4.4.M. |.%+|.|.}.}.l.3.l.}.|. x.M.|.|.|+|.x.x.M.M.x.x.H H H C N.|.|.|.|.|.%+|.|.%+|.N.&+&+&+&+5.1.*+3.l.l.*+3.l.l.3.3.|.%+|+6. m.k.8.p 1.M.H M M M M m.n a+b+X.9+c+6+d+o.e+f+g+a+h+ { 8 i i i i i 8 { ", " 3.f.f.f.f.%+x.M.%+f.f.f.f.6. M.i+3.3.4.4.3.3.4.4.4.M.M. |.%+|.|.p }.l.l.}.|. M.M.|.|.|+|.x.x.H H H H C C N.%+|.|.|.|.|.%+|.%+|.N.&+&+&+&+5.1.1.1.3.3.l.l.*+*+%+%+|+%+6.6. M.l.p 1.4.8.H M M M M M n j+k+m+m+;+n+o+p+q+r+P.s+t+{+ { 8 i i i i i 8 { ", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.7@7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n 7@K.K.n K.K.7@n K.K.7@n K.K.K.n K.K.K.n K.K.K.n K.K.K.n K.K.K.", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@K.n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.K.7@n K.7@7@n K.7@7@n K.7@7@n 7@K.K.n K.K.K.n K.K.K.n K.K.K.n K.", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " p p p p p |. |. 1. H ", " }.3.3. 4.4.4. 3.}.}. }. 5.5.5. 6. H | =.8. 0.a.b. e. { { { ", " }. 4. f. 3. 4.3.3. |.5.5. 5.5.|. 6.6. }. g.g. g. 7. 7. H h.i.) k.l.m. n. p.q.r. t.u.v. { 8 8 8 ", " 3.3.3. f. f. 3.3. |. 5.5.5. }.|.6. x.x. }.}.p g.g. g.g.g. 1.7. H =.y.) i.z.H H A. C.D.E. G.H.I. K.L. 8 i i i 8 { ", "p 3. 3.4.f. 3.3.3. 5.3.3. 4. f. |.5.5. 5.5.}. 6. x.x. M.x.x. }.p p N.N. g.g.g. 7.7.1. g.g.g. 5.5. M m [ | O.4.M z.8.n Q.B.R. S.q.T. B.U.V. { 8 i i i { ", " 4.4.4. f.f.f. f.f.5. 3.3.4. l. f.f. |.|. 5.5.5. 6.6.|. x.x. M.x.x. M.x.x. N.N.N. g.g.g. 6.g.g. g.g.g. 5.5. l.5.5. m.m 1. k.W.H z.z.m. n X.Y.Z. +.+++ B.#+Z+ n { 8 { i { 8 { { ", " 3.f.f. %+%+f. 3.4.4. 4. l. 4.4.l. f.f. |.|.}. 5.6.6. }.|. x.x. M.x.x. M.x.x. M.x.x. N.N. |.|.N. N.g.g. g.g.g. &+ 5.5. l.*+*+ l.5.5. M. M 1.=+ z.f.m. H m.n -+Z. o.q.>+ A.,+'+ )+!+F. 8 8 i i i { { 8 8 ", " 3. f.%+M. %+f.f. l. 4.4.4. 4.4.l. |.|. |.}.5. 6.}.}. |.x.x. M.x.x. M.x.x. M.x.C |.1.1. |.|.|. N.N.g. &+&+&+ 5.5. l.*+*+ l.*+*+ l.*+6. m.=.W. 1.8.m. H M M n ]+^+h. (+p._+ :+b.<+ [+}+ { 8 i i i i i 8 8 { ", " f.f.%+ %+%+M. f.f.f. l. 4.4.4. 3.4.4. 4.4.M. |.|.|. }.}.}. }.}.|. x.|. |.x.x. M.x.x. M.x.x. C N.|. |.|.|. |.|.|. N.&+&+ &+5.5. l.*+*+ l.3.*+ l.*+*+ 6. M. p 1.1. 9.M M M m.n 1+]+ 3+4+5+ 7+Z.8+ `+0+8+ { 8 i i i i i 8 { ", " 3.f.f. %+M.%+ x.%+f. f.6. 4.4.4. 3.4.4. 3.4.4. M. |. |.|.}. l.3.l. |. m.|.|. |.x.x. M.x.x. H H C |.|.|. |.|.|. |.|.N. &+&+&+ 1.*+*+ l.*+*+ l.*+*+ %+|+6. m.k.1. 1.M.H M M M n a+b+ @ c+6+d+ e+f+g+ h+ 8 i i i i 8 ", " 3. f.f.f. x.M.%+ f.f.f. M.i+ 3.4.4. 3.4.4. M.M. |.|. |.}.}. l.}.|. M.|.|. |.x.x. H H H C N.|. |.|.%+ |.|.%+ N.&+&+ &+5.1. 1.3.*+ l.3.*+ %+|+%+ 6. M. p 1.4. H M M M M n j+k+ m+;+n+ p+q+r+ s+t+H+ { 8 i i i 8 { ", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. K.n K. K.n K. K.n K. K.", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@K.K. K.K.K. K.K.K. K.K.K. K.", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " p }.}.p p }.}. N O N O |.|.|. N O N O 7. N O N O H H N O 2. N O N O ", " }.3.3.4.4.4.4.4.3.}.p }.P N P |.. 5.5.|. N P N P 1. N 7.P N P H H | =.4.9.P 0.a.b.c. N d.P e. { { { { N P ", " }.3.4. f. 3.4.4.3.Q 3. N Q |.5.5.5.5.5.|. 6.Q N Q }. g.g.g.g. 1. 1. Q N Q H H h.i.j.j.[ l.Q n.o.p.q.r.s.t.u.R w. { 8 8 8 8 { Q ", ". 3.3.3.4.f. N f. S 3.3. N S |.5.5.5.5.5.}.|.6.S x.x.N S p }.p g.g.g.g.g.g.g.7.7. S N S H H =.y.) | i.z.H S H A.B.C.D.(+F.G.H.I.S K.L. { 8 i i i i 8 T S ", "] 3.3.3.4.f.3.3.3.3.f.5.S 3.3.4. N U f. |.|.5.5.5.5.5.}.6.6.U x.x.M.M.x.x. p U p N.N.g.g.g.g.g.7.1.1.g.g.U g. N 5.5. U M H m [ | k.O.4.M H z.S n P.Q.B.R.5@S.q.T.B.B.U V. { 8 i i i i V W S ", "^ 4.4.4.4.f.f.f.f.f.f.X *+3.3.4. l.l. X f.f. %+|.|.5.5.5.5.6.6.X x.x.M.M.x.x.M.M.x.X p N.N.N.N.N.g.g.g.7.6.g.X g.g.g.g. 5.5.l.l.5.X m.m 1.1.k.W.H H z.z.X x.n X.Y.Z.`. +.+++@+B.#+X $+n { { 8 { i i { Y X Z { ", " 3.f.f.f.%+%+f.f.` 4.4.4.4. l.l.4.4.l.l.` f. |.|.%+}.5.5.6.6.6.` |. x.x.M.M.x.x.M.M.x.x.M.` x.x. N.N.|.|._ N.N.N.g.g.g.` g.g.&+&+ 5.5.l.l.3.*+l.` 5.5. M.|.M 1.~ H z.z.x.B X m.n -+Z.;+o.q.>+#+A.,+'+D.X !+F.~+ { 8 8 i { i i { .X ..8 { ", " 3.f.f.%+M.x.%++.f.f. l.l.4.4.4.3.4.+.l.l. %+|.|.|.p 5.|.6.+.}.|. x.|.x.x.M.M.x.x.M.M.+.x.M.M.x.C N._ 1.1.|.%+|.%+N.N.+.g.&+&+&+&+ 5.5.l.l.3.3.l.l.+.*+l.l.*+6. m.=.7.p 1.4.x.H H @.M m.n {+]+^+h./+(+p._+u.:++.<+r.[+}+ { 8 i i i i i #.$.%.i 8 { ", " 3.f.f.%+x.%+%+M.@.f.f.f. l.l.4.4.4.3.3.4.4.@.4.4.M. |.|.|.p }.}.}.@.}.}.|. x.|.|+|.x.x.M.M.x.x.@.M.x.x.H C N.|.%+|.|.|.|.|.%+|.+.N.&+&+&+&+5.5.l.l.*+*+l.l.3.*+@.l.*+*+%+6. M.l.p 1.1.z.9.M M @.M m.n 1+]+2+3+4+5+6+7+Z.8+@.`+0+8+ { 8 i i i i &.*.i 8 { ", " 3.f.f.f.%+M.%+%+x.+.f.f.f.6. l.4.4.4.3.3.4.4.3.3.+.4.4.M. %+|.|.|.}.}.l.+.l.}.|. x.M.|.|.|+|.x.x.M.M.+.x.H H H C N.|.|.|.%+|.%+|.f.%+@.N.&+&+&+&+5.1.*+3.l.l.*+*+l.l.+.3.%+%+|+6. m.k.E+p 1.M.H M M +.M m.n a+b+X.9+c+6+d+o.e++.g+a+h+ { 8 i i =.-.;.8 { ", " 3.f.f.f.f.%+x.M.+.f.f.f.f.6. M.i+3.3.4.4.3.3.4.@.4.M.M. |.%+|.|.p +.l.l.}.|. M.M.|.|.|+|.x.@.H H H H C C N.%+|.|.|.|.|.%+|.+.|.N.&+&+&+&+5.1.1.1.3.*+l.l.3.+.|.%+|+%+6.6. M.l.p 8.4.4.H M @.M M M n j+k+m+m+;+n+o+p+q++.P.s+t+{+ { 8 i m >.,.'.8 { ", "n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n { n n n ).n n n { n n n ", "n K.K.7@n K.K.X n K.7@K.n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.K.` n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.7@X n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n 7@K.K.n K.K.X n K.K.7@n K.K.7@n K.K.K.n K.K.X n K.K.K.n K.K.K.", "n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n { n n n n ^.n n n n n n n n ", "7@7@n K.7@7@S K.7@K.n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@K.S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.K.7@n K.7@7@S K.7@7@n K.7@7@n K.K.K.n K.K.K.S K.K.K.n K.K.K.n K.", "n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R R n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n ", " p p p p }. N O N O |. |. N O N O 1. N O N O H N O N O N O ", " }.3.3. 4.4.4. 3.}.p P N P 5.5.5. N P N P N P N P H | =.4. P 0.a.b. N P e. { { { N P ", " }. 4. f. 3. 4.3.Q N Q |.5.5. 5.5.|. 6.Q N Q }. g.g. g. 1. 7. Q N Q H h.i.) k.l.Q n. p.q.r. t.u.R { 8 8 8 Q ", " 3.3.3. f. f. 3.3. |. 5.5.5. }.|.6. x.x. p }.p g.g. g.g.g. 7.7. H =.y.) i.z.H H A. C.D.E. G.H.I. K.L. 8 i i i 8 T ", ". 3. 3.4.f. 3.3.3. 5.S 3. 4. N U f. |.5.5. 5.5.}. 6.U x.x. M.x.x. }.U p N.N. g.g.g. 7.1.1. g.U g. N 5.5. U M m [ | O.4.M z.S n Q.B.R. S.q.T. B.U V. { 8 i i i W S ", " 4.4.4. f.f.f. f.f.X 3.3.4. l. X f.f. |.|. 5.5.5. 6.6.X x.x. M.x.x. M.x.X N.N.N. g.g.g. 6.g.X g.g.g. 5.5. l.5.X m.m 1. k.W.H z.z.X n X.Y.Z. +.+++ B.#+X n { 8 { i { Y X { ", " 3.f.f. %+%+f. ` 4.4. 4. l. 4.4.l. ` f. |.|.}. 5.6.6. ` |. x.x. M.x.x. M.x.x. ` x.x. N.N. |.|.N. N.g.g. ` g.g. &+ 5.5. l.*+*+ ` 5.5. M. M 1.=+ z.f.m. ` m.n -+Z. o.q.>+ A.,+'+ ` !+F. 8 8 i i i { X ..8 ", " 3. f.%+M. %++.f. l. 4.4.4. 4.+.l. |.|. |.}.5. 6.+.}. |.x.x. M.x.x. M.+.x. M.x.C |.1.1. |.|.|. N.+.g. &+&+&+ 5.5. l.*+*+ l.+.*+ l.*+6. m.=.W. 1.8.m. H +.M n ]+^+h. (+p._+ :++.<+ [+}+ { 8 i i i #.$.%. 8 { ", " f.f.%+ %+%+M. f.f.f. l. 4.4.4. 3.4.4. 4.4.M. |.|.|. }.}.}. }.}.|. x.|. |.x.x. M.x.x. M.x.x. C N.|. |.|.|. |.|.|. N.&+&+ &+5.5. l.*+*+ l.3.*+ l.*+*+ 6. M. p 1.1. 9.M M M m.n 1+]+ 3+4+5+ 7+Z.8+ `+0+8+ { 8 i i i &. i 8 { ", " 3.f.f. %+M.%+ x.+.f. f.6. 4.4.4. 3.4.4. 3.+.4. M. |. |.|.}. l.+.l. |. m.|.|. |.x.x. M.+.x. H H C |.|.|. |.|.|. |.+.N. &+&+&+ 1.*+*+ l.*+*+ l.+.*+ %+|+6. m.k.1. 1.M.H M +.M n a+b+ @ c+6+d+ e++.g+ h+ 8 i i -.;.8 ", " 3. f.f.f. x.M.@. f.f.f. M.i+ 3.4.4. 3.4.@. M.M. |.|. |.}.@. l.}.|. M.|.|. |.x.@. H H H C N.|. |.|.%+ |.|.+. N.&+&+ &+5.1. 1.3.*+ l.*+@. %+|+%+ 6. M. p 1.4. H M @. M M n j+k+ m+;+n+ p+q+@. s+t+H+ { 8 m >.,. 8 { ", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. K.n K. X n K. K.n K. K.", " n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n { n n n ^. n n n n n n ", "7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@K.K. K.K.K. K.K.K. K.K.K. K.", " n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n ", " . . c ] . . ] g.g.g.g.g. g.g.g.g.g. 0 + + g.g.g.g.g. g.g.g.g.g. @ g.g.g.g.g. g.g.g.g.g. g.g.g.g.g. k g.g.g.g.g. g.g.g.g.g. ", " . ^ % / / / & g.+@+@+@+@+@n g.+@+@+@+@+@n + E * * g.+@+@+@+@+@n g.+@+@+@+@+@n g.+@+@+@+@+@n g.+@+@+@+@+@n # g.+@+@+@+@+@n # D ! g.+@+@+@+@+@n @@#@g.+@+@+@+@+@n ", " . ^ & j g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n 0 * * * g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n $ $ $ g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n # - g.+@$@g.g.$@$@g.n ' | g.+@$@g.g.$@$@g.n { 8 g.+@$@g.g.$@$@g.n ", "}.% % ^ & j g.+@$@g.n +@$@g.n g.+@$@g.n +@$@g.n + * * * g.+@$@g.n +@$@g.n r g.+@$@g.n +@$@g.n $ $ b b b g.+@$@g.n +@$@g.n g.+@$@g.n +@$@g.n # # > c g.+@$@g.n +@$@g.n 5 } 1 ' g.+@$@g.n +@$@g.n { 8 %@g.+@$@g.n +@$@g.n ", "p ^ % ^ / j % g.+@$@$@+@$@N.g.n g.+@$@$@+@$@N.g.n + + * * * g.+@$@$@+@$@N.g.n a k g g.+@$@$@+@$@N.g.n = _ b $ $ $ $ g.+@$@$@+@$@N.g.n g.+@$@$@+@$@N.g.n f - m [ ; [ g.+@$@$@+@$@N.g.n $ 9 } 6 $ g.+@$@$@+@$@N.g.n { 8 &@g.+@$@$@+@$@N.g.n ", "3.& / , & 9 + + n $@$@$@N.g.n / q n $@$@$@N.g.n + 0 0 * * * n $@$@$@N.g.n a r g b r r n $@$@$@N.g.n _ = = = = $ $ $ n $@$@$@N.g.n $ * * n $@$@$@N.g.n $ m l s [ J e n $@$@$@N.g.n 9 . + / t ( k n $@$@$@N.g.n { { 8 *@=@n $@$@$@N.g.n ", " ^ + 9 9 7 z g.N.g.g.n & & q } / & g.N.g.g.n + + 0 c * * = g.N.g.g.n a k 2 g k a g b a g.N.g.g.n = = + + + _ = = $ g.N.g.g.n # - * * o o % g.N.g.g.n g + f v K - 3 3 g.N.g.g.n x + d : g d 6 5 3 g.N.g.g.n 5 { 8 8 i { m -@g.N.g.g.n ;@ ", " % 9 j z g a g.+@$@g.n q q & / & ^ g.+@$@g.n + + + + . * + g.+@$@g.n k 0 r r b 2 a k g g.+@$@g.n a ! = + v v 0 + + + _ g.+@$@g.n - # * * } q u u q g.+@$@g.n u = k > ^ h l & k # g.+@$@g.n A J 6 > 1 : 1 # * g.+@$@g.n B { 8 i i i i i g.+@$@g.n >@ ", " ^ j 9 0 a z 7 g.+@g.n j q } & / & ^ % / g.+@g.n g + 0 + . . . g.+@g.n + k + + + r r b g r g.+@g.n k # ! = + + + + 0 0 + 0 g.+@g.n # - - * * } q % % q } % g.+@g.n % 0 = 2 o . s s / ' f g.+@g.n n ~ ^ 9 b _ D ( _ 0 g.+@g.n C { 8 i i i ,@g.+@g.n C ", " % 9 9 + 7 g z z g.+@$@g.n = q & & / % ^ & / % g.+@$@g.n + + + + c c g.+@$@g.n r b + + + + k r 2 g.+@$@g.n e ! = 0 + + 0 + + + + g.+@$@g.n # # * v % % q q % % o g.+@$@g.n + _ k [ s ] l g e f g.+@$@g.n f & 3 E o ( t ; g.+@$@g.n { 8 i i '@g.+@$@g.n ", " ^ + 9 j j 7 r b g.+@g.n j = b + ^ ^ & / % ^ / g.+@g.n 0 + + + . g.+@g.n + b g + + + 0 r g.+@g.n - ! ! _ + + + + + + + 0 g.+@g.n - - - * s s s u u p q % g.+@g.n z = = g } h s / , e f g.+@g.n n x w 5 1 D j k y $ g.+@g.n A { 8 i i )@g.+@g.n A ", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K.7@K.n K.7@K.n K.K.7@n K.7@K.n K.7@K.n K.K.7@n K.K.7@n K.K.7@n K.7@7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.7@K.n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.7@K.n K.K.7@n K.7@K.n K.7@K.n K.7@K.n K.K.7@n K.K.7@n K.7@K.n K.7@K.n K.K.7@n K.K.7@n K.K.K.n K.K.K.n K.K.K.n K.K.K.", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "7@K.n K.7@K.n K.7@7@n K.7@K.n K.7@K.n K.7@7@n K.7@7@n K.7@7@n K.7@K.n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@K.n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@K.n K.7@7@n K.7@K.n K.7@K.n K.7@K.n K.7@7@n K.7@7@n K.7@K.n K.7@K.n K.7@7@n K.7@7@n K.K.K.n K.K.K.n K.K.K.n K.K.K.n K.", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " ] ] ] ] ] g. g.g.g. g. g.g.g. 0 0 g. g.g.g. g. g.g.g. l g. g.g.g. g. g.g.g. g. g.g.g. g. g.g.g. g. g.g.g. ", " . % ^ / & / +@+@+@ +@n +@+@+@ +@n E * E +@+@+@ +@n +@+@+@ +@n +@+@+@ +@n +@+@+@ +@n # +@+@+@ +@n # ) ! +@+@+@ +@n @@#@ +@+@+@ +@n ", " . & + g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n + * * g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n $ $ g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n # g.+@$@ g.$@$@ n ' g.+@$@ g.$@$@ n { g.+@$@ g.$@$@ n ", " ^ % ^ 9 g. $@g.n $@g.n g. $@g.n $@g.n + * * g. $@g.n $@g.n a g. $@g.n $@g.n $ $ b $ g. $@g.n $@g.n g. $@g.n $@g.n # > 6 g. $@g.n $@g.n 5 1 ' g. $@g.n $@g.n 8 %@g. $@g.n $@g.n ", "p ^ % & j g.+@$@ +@$@N. n g.+@$@ +@$@N. n + * * g.+@$@ +@$@N. n a k g.+@$@ +@$@N. n = _ $ $ b g.+@$@ +@$@N. n g.+@$@ +@$@N. n f m [ d g.+@$@ +@$@N. n 9 } 6 g.+@$@ +@$@N. n { 8 g.+@$@ +@$@N. n ", " & & / 9 j j $@$@$@ g.n / } $@$@$@ g.n + + * * * $@$@$@ g.n a a b a r $@$@$@ g.n = = _ $ $ $ $@$@$@ g.n $ * * $@$@$@ g.n $ m l [ J # $@$@$@ g.n 9 c + 7 ( $ $@$@$@ g.n { 8 *@=@ $@$@$@ g.n ", " % + 9 z 0 g. g.g.n & q & & g. g.g.n + + . * = g. g.g.n a k g k k g a g. g.g.n = _ + + = = $ g. g.g.n - * * } % g. g.g.n 2 f s K 3 3 g. g.g.n x + ; g d 5 3 g. g.g.n 8 8 i m -@g. g.g.n ", " ^ + z g g.+@$@ n q & & / g.+@$@ n + + + c * g.+@$@ n 0 a r b a r g.+@$@ n a ! + l l + + + g.+@$@ n - # * * } u % g.+@$@ n u = $ > J v & $ g.+@$@ n ^ c G : 1 # g.+@$@ n w { 8 i i i g.+@$@ n >@ ", " j 9 0 z z g. g.n j q & / / % & g. g.n g + + + c c g. g.n + k + + k k 2 r g. g.n k ! = + + + + + + g. g.n # - * * } % % } % g. g.n % = g ] s s ' f g. g.n n C J b y [ _ + g. g.n ~ { 8 i i ,@g. g.n C ", " % j 9 7 g 0 g.+@$@ n = & & / % & / g.+@$@ n + + + . g.+@$@ n g + + 0 a r g.+@$@ n # ! 0 + + 0 + + g.+@$@ n - # v u % q u % g.+@$@ n + _ k [ s l g M g.+@$@ n f , 3 o ( 7 g.+@$@ n 8 i i g.+@$@ n ", " ^ j j j a g g. g.n j b + % / / % & g. g.n + + + c g. g.n + g + + + r g. g.n - ! _ + + + + + + g. g.n # - * l v % % } % g. g.n z = 2 ] s , # f g. g.n n x w 5 ) 9 y $ g. g.n A { 8 i )@g. g.n A ", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. K.n K. K.n K. K.n K. K.", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@K.K. K.K.K. K.K.K. K.K.K. K.", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " . . c ] . . ] g.g.g.O g. g.g.g.O g. 0 + + g.g.g.O g. g.g.g.O g. @ g.g.g.O g. g.g.g.O g. g.g.g.O g. k g.g.g.O g. g.g.g.O g. ", " . ^ % / / / & g.+@+@+@+@P n g.+@+@+@+@P n + E * * g.+@+@+@+@P n g.+@+@+@+@P n g.+@+@+@+@P n g.+@+@+@+@P n # g.+@+@+@+@P n # D ! g.+@+@+@+@P n { n ^@+@+@+@+@P n ", " . ^ & j g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n 0 * * * g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n $ $ $ g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n # - g.+@$@g.g.$@R g.n ' | g.+@$@g.g.$@R g.n { 8 /@+@$@g.g.$@R g.n ", "}.% % ^ & j g.+@$@g.n S $@g.n g.+@$@g.n S $@g.n + * * * g.+@$@g.n S $@g.n r g.+@$@g.n S $@g.n $ $ b b b g.+@$@g.n S $@g.n g.+@$@g.n S $@g.n # # > c g.+@$@g.n S $@g.n 5 } 1 ' g.+@$@g.n S $@g.n { 8 i (@+@$@g.n S $@g.n ", "p ^ % ^ / j % g.+@$@$@+@U N.g.n g.+@$@$@+@U N.g.n + + * * * g.+@$@$@+@U N.g.n a k g g.+@$@$@+@U N.g.n = _ b $ $ $ $ g.+@$@$@+@U N.g.n g.+@$@$@+@U N.g.n f - m [ ; [ g.+@$@$@+@U N.g.n $ 9 } 6 $ g.+@$@$@+@U N.g.n { 8 i _@+@$@$@+@U N.g.n ", "3.& / , & 9 + + n $@$@X N.g.n / q n $@$@X N.g.n + 0 0 * * * n $@$@X N.g.n a r g b r r n $@$@X N.g.n _ = = = = $ $ $ n $@$@X N.g.n $ * * n $@$@X N.g.n $ m l s [ J e n $@$@X N.g.n 9 . + / t ( k n $@$@X N.g.n { { 8 { #.:@$@$@X N.g.n ", " ^ + 9 9 7 z g.N.` g.n & & q } / & g.N.` g.n + + 0 c * * = g.N.` g.n a k 2 g k a g b a g.N.` g.n = = + + + _ = = $ g.N.` g.n # - * * o o % g.N.` g.n g + f v K - 3 3 g.N.` g.n x + d : g d 6 5 3 g.N.` g.n 5 { 8 8 i { i <@g.N.` g.n { ", " % 9 j z g a g.+.$@g.n q q & / & ^ g.+.$@g.n + + + + . * + g.+.$@g.n k 0 r r b 2 a k g g.+.$@g.n a ! = + v v 0 + + + _ g.+.$@g.n - # * * } q u u q g.+.$@g.n u = k > ^ h l & k # g.+.$@g.n A J 6 > 1 : 1 # * g.+.$@g.n B { 8 i i i i <@g.+.$@g.n { ", " ^ j 9 0 a z 7 g.+.g.n j q } & / & ^ % / g.+.g.n g + 0 + . . . g.+.g.n + k + + + r r b g r g.+.g.n k # ! = + + + + 0 0 + 0 g.+.g.n # - - * * } q % % q } % g.+.g.n % 0 = 2 o . s s / ' f g.+.g.n n ~ ^ 9 b _ D ( _ 0 g.+.g.n C { 8 i i i [@g.@.g.n n ", " % 9 9 + 7 g z z g.@.$@g.n = q & & / % ^ & / % g.@.$@g.n + + + + c c g.@.$@g.n r b + + + + k r 2 g.@.$@g.n e ! = 0 + + 0 + + + + g.@.$@g.n # # * v % % q q % % o g.@.$@g.n + _ k [ s ] l g e f g.@.$@g.n f & 3 E o ( t ; g.@.$@g.n { 8 i i }@g.+.$@g.n ", " ^ + 9 j j 7 r b +.+@g.n j = b + ^ ^ & / % ^ / +.+@g.n 0 + + + . +.+@g.n + b g + + + 0 r +.+@g.n - ! ! _ + + + + + + + 0 +.+@g.n - - - * s s s u u p q % +.+@g.n z = = g } h s / , e f +.+@g.n n x w 5 1 D j k y $ +.+@g.n A { 8 i m |@+.+@g.n n ", "n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n ", "n K.7@K.n K.7@X n K.K.7@n K.7@K.n K.7@K.n K.K.X n K.K.7@n K.K.7@n K.7@7@n K.K.` n K.K.7@n K.K.7@n K.K.7@n K.7@X n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.7@X n K.K.7@n K.7@K.n K.7@K.n K.7@X n K.K.7@n K.K.7@n K.7@K.n K.7@X n K.K.7@n K.K.7@n K.K.K.n K.K.X n K.K.K.n K.K.K.", "n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n 8@n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n _.^.n n n n n n n n ", "7@K.n K.7@K.S K.7@7@n K.7@K.n K.7@K.n K.7@7@S K.7@7@n K.7@7@n K.7@K.n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@K.S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@K.S K.7@7@n K.7@K.n K.7@K.n K.7@K.S K.7@7@n K.7@7@n K.7@K.n K.7@K.S K.7@7@n K.7@7@n K.K.K.n K.K.K.S K.K.K.n K.K.K.n K.", "n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R R n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n ", " ] ] ] ] ] g. g.O g. g. g.O g. 0 0 g. g.O g. g. g.O g. l g. g.O g. g. g.O g. g. g.O g. g. g.O g. g. g.O g. ", " . % ^ / & / +@+@+@ P n +@+@+@ P n E * E +@+@+@ P n +@+@+@ P n +@+@+@ P n +@+@+@ P n # +@+@+@ P n # ) ! +@+@+@ P n { n +@+@+@ P n ", " . & + g.+@$@ g.$@R n g.+@$@ g.$@R n + * * g.+@$@ g.$@R n g.+@$@ g.$@R n $ $ g.+@$@ g.$@R n g.+@$@ g.$@R n # g.+@$@ g.$@R n ' g.+@$@ g.$@R n { /@+@$@ g.$@R n ", " ^ % ^ 9 g. $@g.n $@g.n g. $@g.n $@g.n + * * g. $@g.n $@g.n a g. $@g.n $@g.n $ $ b $ g. $@g.n $@g.n g. $@g.n $@g.n # > 6 g. $@g.n $@g.n 5 1 ' g. $@g.n $@g.n 8 i (@ $@g.n $@g.n ", "p ^ % & j g.+@$@ +@U N. n g.+@$@ +@U N. n + * * g.+@$@ +@U N. n a k g.+@$@ +@U N. n = _ $ $ b g.+@$@ +@U N. n g.+@$@ +@U N. n f m [ d g.+@$@ +@U N. n 9 } 6 g.+@$@ +@U N. n { 8 _@+@$@ +@U N. n ", " & & / 9 j j $@$@X g.n / } $@$@X g.n + + * * * $@$@X g.n a a b a r $@$@X g.n = = _ $ $ $ $@$@X g.n $ * * $@$@X g.n $ m l [ J # $@$@X g.n 9 c + 7 ( $ $@$@X g.n { 8 { #. $@$@X g.n ", " % + 9 z 0 g. ` g.n & q & & g. ` g.n + + . * = g. ` g.n a k g k k g a g. ` g.n = _ + + = = $ g. ` g.n - * * } % g. ` g.n 2 f s K 3 3 g. ` g.n x + ; g d 5 3 g. ` g.n 8 8 i i <@g. ` g.n ", " ^ + z g g.+.$@ n q & & / g.+.$@ n + + + c * g.+.$@ n 0 a r b a r g.+.$@ n a ! + l l + + + g.+.$@ n - # * * } u % g.+.$@ n u = $ > J v & $ g.+.$@ n ^ c G : 1 # g.+.$@ n w { 8 i i i g.+.$@ n { ", " j 9 0 z z g. g.n j q & / / % & g. g.n g + + + c c g. g.n + k + + k k 2 r g. g.n k ! = + + + + + + g. g.n # - * * } % % } % g. g.n % = g ] s s ' f g. g.n n C J b y [ _ + g. g.n ~ { 8 i i [@g. g.n n ", " % j 9 7 g 0 g.+.$@ n = & & / % & / g.+.$@ n + + + . g.+.$@ n g + + 0 a r g.+.$@ n # ! 0 + + 0 + + g.+.$@ n - # v u % q u % g.+.$@ n + _ k [ s l g M g.+.$@ n f , 3 o ( 7 g.+.$@ n 8 i i g.+.$@ n ", " ^ j j j a g @. g.n j b + % / / % & @. g.n + + + c @. g.n + g + + + r @. g.n - ! _ + + + + + + @. g.n # - * l v % % } % @. g.n z = 2 ] s , # f @. g.n n x w 5 ) 9 y $ @. g.n A { 8 m |@+. g.n n ", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. K.n K. X n K. K.n K. K.", " n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n _.^. n n n n n n ", "7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@K.K. K.K.K. K.K.K. K.K.K. K.", " n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n ", " p }.}.p p }.}.g.g.g.g.g. g.g.g.g.g. |.|.|. g.g.g.g.g. g.g.g.g.g. 7.g.g.g.g.g. g.g.g.g.g. g.g.g.g.g. 2. g.g.g.g.g. g.g.g.g.g. ", " }.3.3.4.4.4.4.g.+@+@+@+@+@n g.+@+@+@+@+@n |.. 5.5.g.+@+@+@+@+@n g.+@+@+@+@+@n g.+@+@+@+@+@n g.+@+@+@+@+@n H g.+@+@+@+@+@n 0.a.b.g.+@+@+@+@+@n @@#@g.+@+@+@+@+@n ", " }.3.4. f. g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n |.5.5.5.g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n g.g.g.g.+@$@g.g.$@$@g.n g.+@$@g.g.$@$@g.n H H g.+@$@g.g.$@$@g.n n.o.g.+@$@g.g.$@$@g.n { 8 g.+@$@g.g.$@$@g.n ", "}.3.3.3.4.f. g.+@$@g.n +@$@g.n g.+@$@g.n +@$@g.n |.5.5.5.g.+@$@g.n +@$@g.n x.g.+@$@g.n +@$@g.n g.g.g.g.g.g.+@$@g.n +@$@g.n g.+@$@g.n +@$@g.n H H =.y.g.+@$@g.n +@$@g.n A.B.C.D.g.+@$@g.n +@$@g.n { 8 %@g.+@$@g.n +@$@g.n ", "p 3.3.3.4.f.3.g.+@$@$@+@$@N.g.n g.+@$@$@+@$@N.g.n |.|.5.5.5.g.+@$@$@+@$@N.g.n x.x.M.g.+@$@$@+@$@N.g.n N.N.g.g.g.g.g.g.+@$@$@+@$@N.g.n g.+@$@$@+@$@N.g.n M H m [ | k.g.+@$@$@+@$@N.g.n P.Q.B.R.P.g.+@$@$@+@$@N.g.n { 8 &@g.+@$@$@+@$@N.g.n ", "3.4.4.4.4.f.f.f.n $@$@$@N.g.n 4. l.n $@$@$@N.g.n %+|.|.5.5.5.n $@$@$@N.g.n x.x.M.M.x.x.n $@$@$@N.g.n N.N.N.N.N.g.g.g.n $@$@$@N.g.n g. 5.5.n $@$@$@N.g.n m.m 1.1.k.W.H n $@$@$@N.g.n X.Y.Z.`. +.+++n $@$@$@N.g.n { { 8 *@=@n $@$@$@N.g.n ", " 3.f.f.f.%+%+g.N.g.g.n 4.4. l.l.4.4.g.N.g.g.n |.|.%+}.5.5.6.g.N.g.g.n x.x.M.M.x.x.M.M.x.g.N.g.g.n N.N.|.|._ N.N.N.g.g.N.g.g.n &+&+ 5.5.l.l.*+g.N.g.g.n M.|.M 1.=+H f.z.g.N.g.g.n -+Z.;+o.q.>+#+A.,+g.N.g.g.n ~+ { 8 8 i { m -@g.N.g.g.n ;@ ", " 3.f.f.%+M.x.g.+@$@g.n l.l.4.4.4.3.g.+@$@g.n %+|.|.|.}.5.|.g.+@$@g.n x.|.x.x.M.M.x.x.M.g.+@$@g.n x.C N._ 1.1.|.%+%+|.N.g.+@$@g.n &+&+ 5.5.l.l.3.3.l.g.+@$@g.n *+6. m.=.7.p 1.4.m.H g.+@$@g.n {+]+^+h./+(+p._+u.g.+@$@g.n }+ { 8 i i i i i g.+@$@g.n >@ ", " 3.f.f.%+x.%+%+g.+@g.n f. l.l.4.4.4.3.3.4.g.+@g.n M. |.|.|.p }.}.g.+@g.n |. x.|.|+|.x.x.M.M.x.g.+@g.n x.H C N.|.%+|.|.|.|.|.%+g.+@g.n &+&+&+5.5.l.l.*+*+l.l.3.g.+@g.n *+%+6. M.l.p 1.1.z.9.M g.+@g.n n 1+]+2+3+4+5+6+7+Z.g.+@g.n 8+ { 8 i i i ,@g.+@g.n C ", " 3.f.f.f.%+M.%+%+g.+@$@g.n 6. l.4.4.4.3.3.4.4.3.g.+@$@g.n %+|.|.|.}.}.g.+@$@g.n x.M.|.|.|+|.x.x.M.g.+@$@g.n H C N.|.|.|.|.|.%+|.|.g.+@$@g.n &+&+5.1.*+3.l.l.*+3.l.g.+@$@g.n |+6. m.k.8.p 1.M.H M g.+@$@g.n a+b+X.9+c+6+d+o.g.+@$@g.n { 8 i i '@g.+@$@g.n ", " 3.f.f.f.f.%+x.M.g.+@g.n f.6. M.i+3.3.4.4.3.3.4.g.+@g.n |.%+|.|.p g.+@g.n |. M.M.|.%+|+|.M g.+@g.n H C C N.%+|.%+|.|.%+|.|.g.+@g.n &+&+&+5.1.1.1.3.3.l.l.3.g.+@g.n %+6.6. M.l.p 1.4.4.H M g.+@g.n n j+k+m+m+;+n+o+p+q+g.+@g.n H+ { 8 i i )@g.+@g.n A ", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.7@K.n 7@K.K.n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.K.7@n K.7@K.n K.K.7@n K.K.7@n 7@K.K.n K.K.7@n K.K.7@n K.K.7@n K.K.K.n K.K.K.n K.K.K.n K.K.K.", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@K.n K.K.7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@7@n K.7@K.n K.7@7@n K.7@7@n K.K.7@n K.7@7@n K.7@7@n K.7@7@n 7@K.K.n K.K.K.n K.K.K.n K.K.K.n K.", "n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " p p p p p g. g.g.g. g. g.g.g. |. |. g. g.g.g. g. g.g.g. 1.g. g.g.g. g. g.g.g. g. g.g.g. g. g.g.g. g. g.g.g. ", " }.3.3. 4.4.4. +@+@+@ +@n +@+@+@ +@n 5.5.5. +@+@+@ +@n +@+@+@ +@n +@+@+@ +@n +@+@+@ +@n H +@+@+@ +@n 0.a.b. +@+@+@ +@n @@#@ +@+@+@ +@n ", " }. 4. f. g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n |.5.5. g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n g.g. g.+@$@ g.$@$@ n g.+@$@ g.$@$@ n H g.+@$@ g.$@$@ n n. g.+@$@ g.$@$@ n { g.+@$@ g.$@$@ n ", " 3.3.3. f. g. $@g.n $@g.n g. $@g.n $@g.n |. 5.5.g. $@g.n $@g.n x.g. $@g.n $@g.n g.g. g.g.g. $@g.n $@g.n g. $@g.n $@g.n H =.y.g. $@g.n $@g.n A. C.D.g. $@g.n $@g.n 8 %@g. $@g.n $@g.n ", "p 3. 3.4.f. g.+@$@ +@$@N. n g.+@$@ +@$@N. n |.5.5. g.+@$@ +@$@N. n x.x. g.+@$@ +@$@N. n N.N. g.g.g. g.+@$@ +@$@N. n g.+@$@ +@$@N. n M m [ | g.+@$@ +@$@N. n Q.B.R. g.+@$@ +@$@N. n { 8 g.+@$@ +@$@N. n ", " 4.4.4. f.f.f. $@$@$@ g.n 4. l. $@$@$@ g.n |.|. 5.5.5. $@$@$@ g.n x.x. M.x.x. $@$@$@ g.n N.N.N. g.g.g. $@$@$@ g.n g. 5.5. $@$@$@ g.n m.m 1. k.W.H $@$@$@ g.n X.Y.Z. +.+++ $@$@$@ g.n { 8 *@=@ $@$@$@ g.n ", " 3.f.f. %+%+g. g.g.n 4. l. 4.4.g. g.g.n |.|.}. 5.6.g. g.g.n x.x. M.x.x. M.x.g. g.g.n N.N. |.|.N. N.g.g. g.g.n &+ 5.5. l.*+g. g.g.n M. M 1.=+ z.z.g. g.g.n -+Z. o.q.>+ A.,+g. g.g.n 8 8 i m -@g. g.g.n ", " 3. f.%+M. g.+@$@ n l. 4.4.4. g.+@$@ n |.|. |.}.5. g.+@$@ n |.x.x. M.x.x. g.+@$@ n x.C |.1.1. |.|.|. g.+@$@ n &+&+ 5.5. l.*+*+ g.+@$@ n *+6. m.=.W. 1.8.m. g.+@$@ n ]+^+h. (+p._+ g.+@$@ n }+ { 8 i i i g.+@$@ n >@ ", " f.f.%+ %+%+g. g.n f. l. 4.4.4. 3.4.g. g.n M. |.|.|. }.}.g. g.n |. x.|. |.x.x. M.x.g. g.n x. C N.|. |.|.|. |.|.g. g.n &+ &+5.5. l.*+*+ l.*+g. g.n *+ 6. M. p 1.1. 9.M g. g.n n 1+]+ 3+4+5+ 7+Z.g. g.n 8+ { 8 i i ,@g. g.n C ", " 3.f.f. %+M.%+ g.+@$@ n 6. 4.4.4. 3.4.4. g.+@$@ n |. |.|.}. g.+@$@ n m.|.|. |.x.x. g.+@$@ n H C |.|.|. |.|.|. g.+@$@ n &+&+ 1.*+*+ l.*+*+ g.+@$@ n |+6. m.k.1. 1.M.H g.+@$@ n a+b+ @ c+6+d+ g.+@$@ n 8 i i g.+@$@ n ", " 3. f.f.f. x.M.g. g.n f. M.i+ 3.4.4. 3.4.g. g.n |.|. |.}.g. g.n |. M.|.|. |.x.g. g.n H C N.|. |.|.%+ |.|.g. g.n &+ &+5.1. 1.3.*+ l.*+g. g.n %+ 6. M. p 1.4. H M g. g.n n j+k+ m+;+n+ p+q+g. g.n H+ { 8 i )@g. g.n A ", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. 7@n K. K.n K. K.n K. K.n K. K.", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", "7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@K.K. K.K.K. K.K.K. K.K.K. K.", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " p }.}.p p }.}.g.g.g.O g. g.g.g.O g. |.|.|. g.g.g.O g. g.g.g.O g. 7.g.g.g.O g. g.g.g.O g. g.g.g.O g. 2. g.g.g.O g. g.g.g.O g. ", " }.3.3.4.4.4.4.g.+@+@+@+@P n g.+@+@+@+@P n |.. 5.5.g.+@+@+@+@P n g.+@+@+@+@P n g.+@+@+@+@P n g.+@+@+@+@P n H g.+@+@+@+@P n 0.a.b.g.+@+@+@+@P n { n ^@+@+@+@+@P n ", " }.3.4. f. g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n |.5.5.5.g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n g.g.g.g.+@$@g.g.$@R g.n g.+@$@g.g.$@R g.n H H g.+@$@g.g.$@R g.n n.o.g.+@$@g.g.$@R g.n { 8 /@+@$@g.g.$@R g.n ", " 3.3.3.4.f. g.+@$@g.n S $@g.n g.+@$@g.n S $@g.n |.5.5.5.g.+@$@g.n S $@g.n x.g.+@$@g.n S $@g.n g.g.g.g.g.g.+@$@g.n S $@g.n g.+@$@g.n S $@g.n H H =.y.g.+@$@g.n S $@g.n A.B.C.D.g.+@$@g.n S $@g.n { 8 i (@+@$@g.n S $@g.n ", " 3.3.3.4.f.3.g.+@$@$@+@U N.g.n g.+@$@$@+@U N.g.n |.|.5.5.5.g.+@$@$@+@U N.g.n x.x.M.g.+@$@$@+@U N.g.n N.N.g.g.g.g.g.g.+@$@$@+@U N.g.n g.+@$@$@+@U N.g.n M H m [ | k.g.+@$@$@+@U N.g.n P.Q.B.R.P.g.+@$@$@+@U N.g.n { 8 i _@+@$@$@+@U N.g.n ", " 4.4.4.4.f.f.f.n $@$@X N.g.n 4. l.n $@$@X N.g.n %+|.|.5.5.5.n $@$@X N.g.n x.x.M.M.x.x.n $@$@X N.g.n N.N.N.N.N.g.g.g.n $@$@X N.g.n g. 5.5.n $@$@X N.g.n m.m 1.1.k.W.H n $@$@X N.g.n X.Y.Z.`. +.+++n $@$@X N.g.n { { 8 { #.:@$@$@X N.g.n ", " 3.f.f.f.%+%+g.N.` g.n 4.4. l.l.4.4.g.N.` g.n |.|.%+}.5.5.6.g.N.` g.n x.x.M.M.x.x.M.M.x.g.N.` g.n N.N.|.|._ N.N.N.g.g.N.` g.n &+&+ 5.5.l.l.3.g.N.` g.n M.|.M 1.=+H f.z.g.N.` g.n -+Z.;+o.q.>+#+A.,+g.N.` g.n ~+ { 8 8 i { i <@g.N.` g.n { ", " 3.f.f.%+M.x.g.+.$@g.n l.l.4.4.4.3.g.+.$@g.n %+|.|.|.p 5.|.g.+.$@g.n x.|.x.x.M.M.x.x.M.g.+.$@g.n x.C N.%+1.1.|.%+|.%+N.g.+.$@g.n &+&+ 5.5.l.l.3.3.l.g.+.$@g.n *+6. m.=.7.p 1.4.m.H g.+.$@g.n {+]+^+h./+(+p._+u.g.+.$@g.n }+ { 8 i i i i <@g.+.$@g.n { ", " 3.f.f.%+x.%+%+g.+.g.n f. l.l.4.4.4.3.3.4.g.+.g.n M. |.|.|.p }.}.g.+.g.n |. x.|.|+|.x.x.M.M.x.g.+.g.n x.H ~ N.%+|.%+|.|.|.|.%+g.+.g.n &+&+&+5.5.l.l.*+*+l.l.3.g.+.g.n *+%+6. M.l.p 1.1.z.9.M g.+.g.n n 1+]+2+3+4+5+6+7+Z.g.+.g.n 8+ { 8 i i i [@g.@.g.n n ", " 3.f.f.f.%+M.%+%+g.@.$@g.n 6. l.4.4.4.3.3.4.4.3.g.@.$@g.n %+|.|.|.}.}.g.@.$@g.n x.M.|.|.|+|.x.x.M.g.@.$@g.n H C N.|.|.f.%+|.%+|.|.g.@.$@g.n &+&+5.1.*+3.l.l.*+*+l.g.@.$@g.n |+6. m.k.8.p 1.M.H M g.@.$@g.n a+b+X.9+c+6+d+o.g.@.$@g.n { 8 i i }@g.+.$@g.n ", " 3.f.f.f.f.%+x.M.+.+@g.n f.6. M.i+3.3.4.4.3.3.4.+.+@g.n |.|.|.|.p +.+@g.n |. M.M.|.%+|+|.x.+.+@g.n H C ~ N.%+|.|.%+f.|.%+|.+.+@g.n &+&+&+5.1.1.1.3.*+l.l.*++.+@g.n %+6.6. M.l.p 1.4.4.H M +.+@g.n n j+k+m+m+;+n+o+p+q++.+@g.n H+ { 8 i m |@+.+@g.n n ", " n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n n n n n n n n n ).n n n n n n n ", " K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.K.` n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.7@X n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n K.K.7@n K.K.X n K.K.7@n K.K.7@n 7@K.K.n K.K.X n K.K.7@n K.K.7@n K.K.K.n K.K.X n K.K.K.n K.K.K.", " n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n n ^.n n n n n n n n n n n n n n _.^.n n n n n n n n ", " 7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@K.S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.7@7@n K.7@7@S K.7@7@n K.7@7@n K.K.7@n K.7@7@S K.7@7@n K.7@7@n 7@K.K.n K.K.K.S K.K.K.n K.K.K.n K.", " n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R R n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n n n n n R Q n n n n n n n n n n ", " p p p p p g. g.O g. g. g.O g. |. |. g. g.O g. g. g.O g. 1.g. g.O g. g. g.O g. g. g.O g. g. g.O g. g. g.O g. ", " }.3.3. 4.4.4. +@+@+@ P n +@+@+@ P n 5.5.5. +@+@+@ P n +@+@+@ P n +@+@+@ P n +@+@+@ P n H +@+@+@ P n 0.a.b. +@+@+@ P n { n +@+@+@ P n ", " }. 4. f. g.+@$@ g.$@R n g.+@$@ g.$@R n |.5.5. g.+@$@ g.$@R n g.+@$@ g.$@R n g.g. g.+@$@ g.$@R n g.+@$@ g.$@R n H g.+@$@ g.$@R n n. g.+@$@ g.$@R n { /@+@$@ g.$@R n ", " 3.3.3. f. g. $@g.n $@g.n g. $@g.n $@g.n |. 5.5.g. $@g.n $@g.n x.g. $@g.n $@g.n g.g. g.g.g. $@g.n $@g.n g. $@g.n $@g.n H =.y.g. $@g.n $@g.n A. C.D.g. $@g.n $@g.n 8 i (@ $@g.n $@g.n ", " 3. 3.4.f. g.+@$@ +@U N. n g.+@$@ +@U N. n |.5.5. g.+@$@ +@U N. n x.x. g.+@$@ +@U N. n N.N. g.g.g. g.+@$@ +@U N. n g.+@$@ +@U N. n M m [ | g.+@$@ +@U N. n Q.B.R. g.+@$@ +@U N. n { 8 _@+@$@ +@U N. n ", " 4.4.4. f.f.f. $@$@X g.n 4. l. $@$@X g.n |.|. 5.5.5. $@$@X g.n x.x. M.x.x. $@$@X g.n N.N.N. g.g.g. $@$@X g.n g. 5.5. $@$@X g.n m.m 1. k.W.H $@$@X g.n X.Y.Z. +.+++ $@$@X g.n { 8 { #. $@$@X g.n ", " 3.f.f. %+%+g. ` g.n 4. l. 4.4.g. ` g.n |.|.}. 5.6.g. ` g.n x.x. M.x.x. M.x.g. ` g.n N.N. |.|.N. N.g.g. ` g.n &+ 5.5. l.*+g. ` g.n M. M 1.=+ z.z.g. ` g.n -+Z. o.q.>+ A.,+g. ` g.n 8 8 i i <@g. ` g.n ", " 3. f.%+M. g.+.$@ n l. 4.4.4. g.+.$@ n |.|. |.}.5. g.+.$@ n |.x.x. M.x.x. g.+.$@ n x.C |.1.1. |.|.|. g.+.$@ n &+&+ 5.5. l.*+*+ g.+.$@ n *+6. m.=.W. 1.8.m. g.+.$@ n ]+^+h. (+p._+ g.+.$@ n }+ { 8 i i i g.+.$@ n { ", " f.f.%+ %+%+g. g.n f. l. 4.4.4. 3.4.g. g.n M. |.|.|. }.}.g. g.n |. x.|. |.x.x. M.x.g. g.n x. C N.|. |.|.|. |.|.g. g.n &+ &+5.5. l.*+*+ l.*+g. g.n *+ 6. M. p 1.1. 9.M g. g.n n 1+]+ 3+4+5+ 7+Z.g. g.n 8+ { 8 i i [@g. g.n n ", " 3.f.f. %+M.%+ g.+.$@ n 6. 4.4.4. 3.4.4. g.+.$@ n |. |.|.}. g.+.$@ n m.|.|. |.x.x. g.+.$@ n H C |.|.|. |.|.|. g.+.$@ n &+&+ 1.*+*+ l.*+*+ g.+.$@ n |+6. m.k.1. 1.M.H g.+.$@ n a+b+ @ c+6+d+ g.+.$@ n 8 i i g.+.$@ n ", " 3. f.f.f. x.M.@. g.n f. M.i+ 3.4.4. 3.4.@. g.n |.|. |.}.@. g.n |. M.|.|. |.x.@. g.n H C N.|. |.|.%+ |.|.@. g.n &+ &+5.1. 1.3.*+ l.*+@. g.n %+ 6. M. p 1.4. H M @. g.n n j+k+ m+;+n+ p+q+@. g.n H+ { 8 m |@+. g.n n ", " n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n n ", " K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. 7@n K. X n K. 7@n K. 7@n K. K.n K. X n K. K.n K. K.", " n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n n ^. n n n n n n n n n n _.^. n n n n n n ", " K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@7@K. 7@K.K. K.K.K. K.K.K. K.K.K. K.", " n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n n n n Q n n n n n n n n "}; valknut-0.4.9/valknut/icons/configure_22x22.png0000664000076400007640000000732511126705363017506 0ustar ejsejsPNG  IHDRĴl; pHYs   9iCCPPhotoshop ICC profilexڝwTTϽwz0R޻{^Ea`(34!ED"HPĀP$VDT$(1ET,oF֋oZ/K<Qt`)LVF_{ͅ!r_zXp3NY|9,8%K.ϊ,f%f(Aˉ9a >,٩<9SbL!GĈ 3,F0+7T3IlpX"61"H _qW,d ėrIKst.ښAdp&+g]RәY2EE44432PuoJEzg`̉j- -b8o׿M]9La.+-%Mȧg3YះuAxEK i<:ŹPcu*@~(  ]o0 ~y*s7g%9%(3H*@C`-pn VH@ A1 jPA3hA'8΃Kn`Lg` a!2D!H҇ dAP B Byf*z: @]h ~L CUp΅ p%;56< ?" GxG iE>&2 oQEGlQP UFFuzQ7QcYG4G۠t]nB/o'Я1 xb"1I>Lf3bX} *QYvGĩp( &q x)&gsF|7:~@&h!$&B%pH$D.q#xx8F|K!\H$!i.%L";r3EHK-AFCbH$^RSIrdd 3Rx)-))zR#RsiSiT#Wd2Z2n2l2d)EBaQ6S))T UEMSPgeedɆfȞ!4--VJ;N g%K-sɵݖ{'OwO%)P_RRۥEK/+))U<د8䡔TtAiF쨜\|FyZbU)W9.Kw+YUEUOUjꂚZZZCu:C=^\G}VCEO#OE&^WOs^K[+\kV֔vv[]n>z^^u}XROm`m3h01$:fь|:kG23hbabhrT4ߴw3=3Y-s.q_vǂbgբ⃥%߲rJ*֪jAe0JOY6rvvtXLǎl&I']$NϝM.6.\ι"En2nnn[g=,=t٪E2}4\j5loDŽǞ~q=''Z^utv&vvEv >mяN9-{ LOgsΝK?7s>xOL n\x }N}g/]>uɫ,u[dS@u]7ot.<30tKn]p;;SwSyoEV߽$k@aEVW@-^m#P E'F?@1̜nk ͞~ ='2 XO E1頤$_0 ϟ@ faѱl8n! _a`/BPOO+  Z 011 ƿ~O_,  >@ .))2fffK@雠Ĭgn ""Π*r߿Q0Obd}^b7&o{tE=>ym߿bx!L8k? /k7P FLmm S&AY7VVS~e`UGcp4)b1bbj qq!N`G ??sdA7GV .n]0 &4BH0(bqq~ad{ #g~wtn6 ɝkJekH`fcf`D_ygܫ"@ J_p\r7 1  &b Ԏ'3]x(  dΠ_Dli?ap"030|_~20÷ XY)Ei@bpk;(!٘1tldp 5x[LN%›+o``[BKAX]dx )e:CAe=~? }ibŚ S+FIENDB`valknut-0.4.9/valknut/icons/ball_yellow.png0000664000076400007640000000071011126705363017162 0ustar ejsejsPNG  IHDR w&sRGBbKGD pHYs B(xtIME "HIDATM;KPsrR\A..ҽ KWAZK&p ^O8sqHJ*}}Uy{c*aaT{EoDA\ (a.$!@u:If_9s>}Ǚl&~ީg̜~_Vcͳx#&eRkbv rŤ?/o.z_q<^J7@׵.`tݧCxq^轿%T[:⢠?gR@"mo$:w+WxU<(\J׵xE_4# T7@k [^J?0]W]sU|4@J!@Vo9AWJB 'NJJ4{f=!Pɯ!|W 8tyFϓyO8ohB[(Qg$X#'|6/~yhCZoZ1ۃ>ٟ Dz|{#Y8hPJxYg~=n5mCࠜ8WquY?;N̏CGoKsxvOE{GnE5t>=K@oGH{;;pˈn x#(ѧ~PPX~F+|@ƭndN $p)ґ_Rv-B/D`S&({.T 嶠&$Rxכo?w_UDŽ Pnmzn±8<`ϥ#.5| IΣxYMk} ?j{?z/1{ ٺ%)ͳxzvWf\{%TLT^2^Ş>DdK/ dp@({AҨ_5LCʮ=ьFjw|p:m;_>\}z0dJDDh < 3 4&pw5k('91b{8!~?ܯ0kCKK ʹB{{;ʕ̚5|sXN :L3?^']*\n~r(snO$iG!%qLPZ?|Jn~Ҁ'tKN+Fn}I(\rý"W6@#vF[[5ri}{tmZA :4X.P;DtKٙNA >=~nt7/WqaGn=Rʀ@aE F/8H:J+p۶?ʥ()ihj#;䡵ގ$8o3ϟu,wU]C-;Ayxzc?#t˵jnEL'W9~T* vF*AMwit7b[2yG4BIe#O_W<?ʶg(* rtbt  q\H$B0q]jkcQ&|WRiɥd1EJy}KvANQ1RYMd!]\[C޾3{/-s'cen07ݔZs`ŏk±pN$N ;Ͳddy9()"ڶܒݩR♶]Fnhg')ЃaFאY 7|,&D$R$^yw2x diw6[u5٦Q1|AlX;5d2-rrrB.H6R)ή.VXAAn;,앏rGkbMp]!`0EJ׮K0E Ϫwߤ|0PqT+J1Q9ٕ@޺/9[XK66C~i%\  Dpk#Fx;23Yhr[=ޞSڷgQ=]-=M:1\׍NCR #;ڇ:GMCs*)s&ys~/nU{H/4vn > 7< !>ar۶w'iH.)3. 8@NoӴ%dJ8T&)>o P1 L>`|v%~{+*A>̡eo|3֎cgWCW3sDFNuռ{ߓ^2FNAIJdt3p{1t<ـd5?3#Z^O'tqIǞq}OZKgJ)j(fB=͑ZJisM *j~@|ܤp cc@?s1؎GJq}- 4xEhkjd;LBh!12;21zϮrLݻϞ8㡀"0FJy Ƒ\s!D.X̅++†cf>GSo]TxB+"ߵi@8]`m$J:(e!]V14Cj3|wpy;s/LQ(:6Vdj>$0EͼׄH*fv6]p*~Ãk(x>`6 cz! Qqcs{gWmy{DyóO.9Nk JRiB$ēuKغmm6ԞS>,*&ߔIRʍ FpS8c]s%#=x7$TOՇLc~ ) ; *?zqhZ.ב(i*d I5#4>{,=u|kި OH7t:q.BF\YJ?n{3% Do?pe`E%y;> Nqs>Hz˛W!=0@ H5#^5Ӧ鎹F*H3('‰<};T1H/݁вѽ_EWt}G:>9@C? h1`^57`MnQqebu-wt?s^??]hhTW_vYddf^n;DiskiH4Ƚ2 >&Gf\5bZȋ~Wk=YޗFʦG~_P"%!&F)֔ūr wE3tcJ>Q3zbȺ{|w?/#TD|9ڧPJ;7_kY~@cBV#"{tUD!N`ܸL=PmseU{E5+ дsYZK󱢙_ΘPi9B(Tr*e0r]y y1,;h ^o'8ez  4?|Sѿnw2=;+'޹ֵ? ;39n>)ӥ~ Żiior7}S}@_'= 揽H?O_^꙾`_aejDh_w'}@yghY/vi" Hϻk[){t/G!`ꌭyızqyw+6RL6湏,:17LY|~^]$黗R.i"2 3F:GVU5} /ſɲU|u׳d%+η;~kT]ĶàD4Ա}&6m[MYi5eU45.#1Nג{{@f0f\ ?U|>f QB0x릙FrB.%s>d#f`ot10(W |KP[Jk?Q{+ՀLxT dg?JvKJ@%hjiD9Qf@ 5ll߁L:~G*ǎ9s0ICdQWח1Zlū@9z]8"jQ ^Vo|FG~+!mu'ѿjJ`֭$iB^/UV1 S0rc?ϔw2.”1(±{߫/Ld,wD|[t$@0njFߥIw^Kw{> τ2^]04\m56^#|2J>S֧9?K~\=anߐ<кt?°_G|!I(/3mb&ү&!BP'W==xo:Ԩ<̫:>{Zi&>/l9W|ߖ݈3cX'Y??BuO6v 8ɗ1IrNˇ7<E{ױc ;x[ͨk!lf/~93-s[ŧvo c 2lyT  ;7t}fRV%[ɮ_*OPj NjTc 뽼h oeJ]zu:4Xl+^'^u-VH3R$Э!9Vs {oqcJ7CYMk\r-wb) ;DRI[./h%r?%;t(@*esfv;bRO;GE.SNκ2Be_ \6T3_gǷ|hoBK=orp@DI hzGUL*ܼ~ZU5jk0k{ȲxVtgiO0J7-ٚhz^5j1Ujx}sYBL% ;nTJ!)DVTآIg s.v%Oz+*Ox<RgD&tY8eTތZ0$>t׹`9Tk.1G_[[4nŒ{K4+3Y2DY*n#6NK'VWne%_x!njzhꖵ?J69yX>cFh@ 'zSK .A&h qp㐎Ͷq,z̐?'熥#5SuIAa'S=uCGLchx ᣧ2ᄙTVOu*n'ᙶX̲`,Q#ZV#uD!5t-nM"qh, /g*W ޜoY<țs_E>KUcDpWe+ъ0A"GʉJuXfg*Ɲzjͥ2KuGL R\:Ri'TD>@!ye (B(+W2Ƴ4+u_̗d_ Դ(qh(I Z(u !'uirjZZ{^ t4|[jjKiBWya x+_|66k@-?L]8i{<`i9i'?eӎL#(1ye8v.Sl"O]q?׏JviN ZxP\ZO@g=ɔ5x@9-v7DYH(+9wꌑj #<7L!t Xg:[79r}Oҏ̹Wpk,{|'=mToȋ/_~|av )p?oK'I04/u F%<:-R@nw MI' T &P ɏ \T8偒n~2*FY NKIDATh 3B`JTB̞GbK.r׮3ǂX9s/u_XCw8lhԘXޞy۪;5jjljmqݧU`/ ) 8iR&nXD,< n4hݓ?cW_.m)>nHIvh[-gCl ZJnA.ގ !6b/ȦvɌy96e}z9/iܼœ@ Di[yPXTt `|ݿ~|QjYKJ0@ >hnSP@>JhuG-X;N:ؙޅa{ A>﷕pN.yayVA^ Q Xon8mly!Ք no%TYH('w*T委|ˡ< !(S4j4P -e(ϾOTsF͘ێ~*F GCì -ؓñ-V<@ŨrǎGVN6`Rrrs:@Ax}^<' ߳du!ZpL ^ޫ=P]z  @MY,XDz0KJ}aU3AQ(+QB)JWN1/ٷƌneppmV20`H|"VW*D1W1pquرg6FLt:>sFip=";fXH2O]~9!"W*\CL+X謨Zjo٩,ѧl[sP-Lp)uW`'͘׭"Ӕ@j&ĨQX\w~av%-&}ZvF{ ( uG>~d23߬9;_}m]6Gկg44 qHZҲ21J!~toNk ^K{ʹ]x=+y9aP<޸=<KL71 /@E4-8gaZ$3ǃ|~ΝC+i|Hk -7o9SQ6}c{]E9ɤ:I.A4o2uX}_o΃O@/7יxF0"~=vCN,t]ߏ>p 㱒I-\F:;u;ᛷ?~gsƩgw'Mwrk PZDA r2BJie;-m2;R<ѵk d|wϿhg- Ͳ=z<N~>>53jF_!ew|}a ̬{ UV aiں [_?wSVJ]N?e)S7`FI~ 0q$Dpꌥe$udF:^|y n…c!CU_wK/ :8o|h&`E#{gs&ٶ} lohtvݗ MTYB07w}o?NSTwMMMPܫ`@H`u3~_Q֫/xH4FR)1pBʑ˗۟{]{گ IENDB`valknut-0.4.9/valknut/icons/flag_slovakia.png0000664000076400007640000000102211126705363017454 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  )5 MtEXtCommentCreated with The GIMPd%niIDAT81KBQk/0(8DVHAB-AK%Hf !E? 0$Z+݆F ah>pϹ>8+_/weZl4VMƱXZR"`BHDG,ŢlbY$ԃlj@a(ǏYN&DAp!V4gB02䱘:7C d2`,x.x<\Ksd=Sݽ֥^* &8ܼ49'g_PR1* ؖLBf=+̯0U?dxg o;Sly(XS4~)kLHҺo7% WIENDB`valknut-0.4.9/valknut/icons/filetype-document.png0000664000076400007640000000116511126705363020317 0ustar ejsejsPNG  IHDR(-S pHYs  gAMA|Q cHRMz%u0`:o_FPLTEe&n1u<|HS^hr쏏ݽݿe.tRNS 1~IDATNPo/%XB\p+70^={70-In߿ ebb`󟁁 H.zdo9 `bb6a`4f tɎzޗ3Tcޜc`Ͽ . &.NPGee>߁ 6hFv eƠ Gua dl@ \@;G-g`1Pi9s=?, ۀa@,c~A@5&.!N&w o>`xt _:Vs[_޾<0?@㗁, *؁k ??a`xt߿ ;YTڋmd?! c #C9CAC9", ", c #B8DDF9", "' c #D3E9D9", ") c #F3F1D3", "! c #A89816", "~ c #D6C96F", "{ c #F7F0AF", "] c #F9D56D", "^ c #E9CA15", "/ c #E8BC00", "( c #F9CD00", "_ c #FEDA00", ": c #FEEA00", "< c #EDC700", "[ c #D6DAD9", "} c #E8ECEF", "| c #D8D8CA", "1 c #FFFFF7", "2 c #FFFFFF", "3 c #FCFBEB", "4 c #D8CDC9", "5 c #C5DCC4", "6 c #D0E694", "7 c #CECB90", "8 c #AFB08E", "9 c #9EA270", "0 c #B2AF6C", "a c #B89800", "b c #FAEDEC", "c c #FFF7F7", "d c #EAEBEC", "e c #FBF20B", "f c #FFFD01", "g c #E7D913", "h c #E8DB01", "i c #D6AD00", "j c #BAA4BB", "k c #C24A4C", "l c #AD0100", "m c #900100", "n c #B62C2C", "o c #AE1A19", "p c #B47379", "q c #CED1CA", "r c #D1D3D2", "s c #E2E3E5", "t c #E7E9E8", "u c #EAF0EE", "v c #5D5C3A", "w c #999F9A", "x c #4C482B", "y c #728A6C", "z c #AC9601", "A c #BBBABB", "B c #F7F7FF", "C c #CECEB0", "D c #ECEA01", "E c #EDD42A", "F c #E6DFE6", "G c #CD2D2F", "H c #EAA6A4", "I c #A17E8C", "J c #E7E6E1", "K c #DCDCDA", "L c #EDEBEC", "M c #EEEDEB", "N c #EDEEE6", "O c #CFD2C7", "P c #CBD0C9", "Q c #E8EDE9", "R c #4C4E50", "S c #221F1E", "T c #EFF04A", "U c #3E3D41", "V c #9A8701", "W c #CAA900", "X c #A99751", "Y c #EDEDF9", "Z c #CBD8D9", "` c #F2D0B1", " . c #C8AC17", ".. c #D4CCCA", "+. c #EDE5E3", "@. c #F9EDED", "#. c #FFF6EF", "$. c #E2E0D1", "%. c #CCCDBD", "&. c #BCBCB2", "*. c #C1C1BF", "=. c #D7D8DD", "-. c #F7F7F7", ";. c #F0D6CE", ">. c #C2E6FC", ",. c #857715", "'. c #EFE969", "). c #FDE88B", "!. c #786602", "~. c #958929", "{. c #8C8D8E", "]. c #A7A8A8", "^. c #BEB9A7", "/. c #DBB700", "(. c #B9ABAB", "_. c #BDA9A8", ":. c #DEC2BE", "<. c #FFEADF", "[. c #DFD8C5", "}. c #CDCCB8", "|. c #BEBAB1", "1. c #BDBCBA", "2. c #C7CCCF", "3. c #CED6D8", "4. c #DBE2DB", "5. c #717371", "6. c #BAAAA6", "7. c #D6E9FC", "8. c #BACDE8", "9. c #D6DBEE", "0. c #957B00", "a. c #A88A00", "b. c #ECD4D4", "c. c #B18E8A", "d. c #BD9188", "e. c #B99587", "f. c #C5B8A5", "g. c #BDBBAC", "h. c #C6C1BB", "i. c #D7D6D4", "j. c #D9E2DF", "k. c #CCD7D3", "l. c #C7CEC7", "m. c #D3D5D0", "n. c #DBDBD9", "o. c #E3E3E1", "p. c #5A5E58", "q. c #8E8C6D", "r. c #C5BC01", "s. c #8F8C53", "t. c #141723", "u. c #706F53", "v. c #FFE6E2", "w. c #C89489", "x. c #C28475", "y. c #AB7A69", "z. c #AE9C8E", "A. c #B9B6AD", "B. c #D6D5D3", "C. c #E1E3E0", "D. c #DBE5DC", "E. c #E2ECE1", "F. c #E2E7E1", "G. c #D2D2D0", "H. c #B5B5B3", "I. c #C0C1BC", "J. c #967C11", "K. c #BCD9E9", "L. c #87792C", "M. c #FEFE14", "N. c #D5CE02", "O. c #000000", "P. c #4F0502", "Q. c #FA0200", "R. c #8A1718", "S. c #FFCEC7", "T. c #CE897A", "U. c #C47D69", "V. c #D49C8B", "W. c #F3DFD8", "X. c #C1C0BE", "Y. c #C9CACC", "Z. c #E4E9E5", "`. c #E2EADD", " + c #E4EADC", ".+ c #E8EAE5", "++ c #D8D8D6", "@+ c #BCBCBA", "#+ c #C9CAC5", "$+ c #2A2D2E", "%+ c #48342B", "&+ c #8A7500", "*+ c #B5AA03", "=+ c #9E8B14", "-+ c #FAF927", ";+ c #746C29", ">+ c #740202", ",+ c #913138", "'+ c #EDA79D", ")+ c #D98674", "!+ c #BB735D", "~+ c #F0BDAC", "{+ c #D0D4D7", "]+ c #D3D9D7", "^+ c #F0F4E6", "/+ c #EEF0E3", "(+ c #E9E8E4", "_+ c #B1B1AF", ":+ c #E6E7E2", "<+ c #151201", "[+ c #AF9592", "}+ c #A89829", "|+ c #9D9E03", "1+ c #9A3B46", "2+ c #FFD2C9", "3+ c #D98678", "4+ c #D57C6A", "5+ c #CE8D79", "6+ c #FFE0D1", "7+ c #E8ECEB", "8+ c #DEDED4", "9+ c #F4F2E6", "0+ c #EEEDE8", "a+ c #BEBDBB", "b+ c #D2D3CE", "c+ c #231703", "d+ c #877048", "e+ c #8D746D", "f+ c #635915", "g+ c #544602", "h+ c #665600", "i+ c #966063", "j+ c #FFE9E2", "k+ c #ECA498", "l+ c #DE8074", "m+ c #D27C6D", "n+ c #DAAB9B", "o+ c #FFF4E7", "p+ c #E6E2DF", "q+ c #E6E1DD", "r+ c #CCCCC4", "s+ c #C1C2BC", "t+ c #ECEDE8", "u+ c #846B00", "v+ c #664901", "w+ c #413502", "x+ c #EEACA0", "y+ c #DF897C", "z+ c #D4786D", "A+ c #CB8176", "B+ c #FFE2D7", "C+ c #E7E3E2", "D+ c #C5C6BE", "E+ c #ECEFE6", "F+ c #735A00", "G+ c #EEBEB2", "H+ c #D98A7D", "I+ c #DA8077", "J+ c #C1726B", "K+ c #F2BDB7", "L+ c #0C0700", "M+ c #2F2602", "N+ c #E3B09B", "O+ c #C78876", "P+ c #D77F75", "Q+ c #CA736C", "R+ c #E3A6A3", "S+ c #CE8467", "T+ c #D1836C", "U+ c #CC736B", "V+ c #DD928F", "W+ c #FFE5E4", "X+ c #BF7D63", "Y+ c #B77461", "Z+ c #DC9790", "`+ c #FFE3E3", " @ c #806659", ".@ c #AB9087", "+@ c #FCE3DE", "@@ c #2B3746", "#@ c #7A736D", "$@ c #ADA8A2", "%@ c #CDE6B0", "&@ c #CD9B00", "*@ c #908DAA", "=@ c #748BCB", "-@ c #A9CEFF", ";@ c #B8D9FF", ">@ c #69452F", ",@ c #98714A", "'@ c #A38675", ")@ c #CBC7D9", "!@ c #6A83C5", "~@ c #C6E0FF", "{@ c #CDECFF", "]@ c #B9E2FF", "^@ c #D8D053", "/@ c #E9EA16", "(@ c #D8CF27", "_@ c #D20C03", ":@ c #865655", "<@ c #805B3A", "[@ c #99744F", "}@ c #B49B8E", "|@ c #B5B8D8", "1@ c #7E9BCF", "2@ c #8EA3C9", "3@ c #008080", "4@ c #563C28", "5@ c #785739", "6@ c #825C3A", "7@ c #9B7650", "8@ c #9C7853", "9@ c #B8A299", "0@ c #5B7CBA", "a@ c #57709C", "b@ c #ABCDFA", "c@ c #9FCFFF", "d@ c #9FC6FF", "e@ c #655349", "f@ c #533B28", "g@ c #7B593A", "h@ c #855F3B", "i@ c #A68360", "j@ c #9F9FC5", "k@ c #89A0D6", "l@ c #DAFAFF", "m@ c #6D92E2", "n@ c #C1D5FF", "o@ c #C5BE14", "p@ c #57483E", "q@ c #86613E", "r@ c #9E7B58", "s@ c #A78665", "t@ c #B8B1BD", "u@ c #A49EC2", "v@ c #A2BCF8", "w@ c #CAF0FF", "x@ c #90B3F3", "y@ c #707AC3", "z@ c #D3E9FF", "A@ c #EBF7FC", "B@ c #C27B03", "C@ c #F02E2F", "D@ c #BF5F69", "E@ c #46352B", "F@ c #805F41", "G@ c #947250", "H@ c #D1D2DA", "I@ c #D4D9E9", "J@ c #AEB1BF", "K@ c #C4D0EB", "L@ c #96ADEB", "M@ c #4444AC", "N@ c #6A71B0", "O@ c #A7C4FC", "P@ c #DDE8FF", "Q@ c #AB906B", "R@ c #D65C5D", "S@ c #FD3D4B", "T@ c #080809", "U@ c #C2BEBE", "V@ c #392A22", "W@ c #5C4A3E", "X@ c #ADA7AA", "Y@ c #C9CDDA", "Z@ c #CFD5E4", "`@ c #D3D9EA", " # c #A1A6BB", ".# c #8363A6", "+# c #838BCA", "@# c #B8C2ED", "## c #969194", "$# c #93949E", "%# c #AFB1BB", "&# c #C2C7D4", "*# c #BDC2D0", "=# c #9EAACF", "-# c #947FB7", ";# c #9299DD", "># c #A0AADC", ",# c #BFB7D0", "'# c #F6FFFF", ")# c #B0ADAF", "!# c #B0B7C8", "~# c #B9BDCA", "{# c #C1C4D1", "]# c #D0D6E3", "^# c #CDD7E9", "/# c #727088", "(# c #939DE4", "_# c #A5B5EB", ":# c #744A18", "<# c #9D9D9C", "[# c #A5A8B6", "}# c #AAAEBC", "|# c #B5B9C6", "1# c #C3C8D5", "2# c #C3C9DB", "3# c #594C73", "4# c #C0C9EC", "5# c #D3D3E4", "6# c #938F95", "7# c #A8ACBA", "8# c #C1C6D8", "9# c #9CA0B8", "0# c #E26B72", "a# c #D82B34", "b# c #814503", "c# c #6E2103", "d# c #8B8B96", "e# c #B1B2BB", "f# c #BCBCBF", "g# c #ACADB8", "h# c #870B09", "i# c #A70E0D", "j# c #D61F28", "k# c #93867E", "l# c #BBAE9F", "m# c #928271", "n# c #970C0A", "o# c #DB383E", "p# c #B5A595", "q# c #DC322F", "r# c #480807", "s# c #DC4246", "t# c #131414", "u# c #D61511", "v# c #D92421", "w# c #F7CE18", "x# c #D9EB72", "y# c #A2F941", "z# c #BBF94C", "A# c #C7F33D", "B# c #CFF7A5", "C# c #AAEA5F", "D# c #ED9282", "E# c #9DF1AC", "F# c #74E592", "G# c #60D57A", "H# c #6C2F33", "I# c #F7DB13", "J# c #60E89D", "K# c #3FDE90", "L# c #4DDC7F", "M# c #38E097", "N# c #35E298", "O# c #41E59D", "P# c #36E097", "Q# c #40DD84", "R# c #70F0B4", "S# c #43DD7C", "T# c #42EFB0", "U# c #2DF0BD", "V# c #2EF0BF", "W# c #1DF3C6", "X# c #35F3C7", "Y# c #2CF0BE", "Z# c #34EB90", "`# c #72F9DA", " $ c #46F5D1", ".$ c #27EBA0", "+$ c #3BF7BA", "@$ c #41F8C8", "#$ c #52F8CD", "$$ c #42F8C1", "%$ c #64F9CF", "&$ c #44F8C9", "*$ c #30F398", "=$ c #8CFACF", "-$ c #5AF8CC", ";$ c #20F7B8", ">$ c #182323", ",$ c #3AF690", "'$ c #46F899", ")$ c #56F89D", "!$ c #27F791", "~$ c #76F9B0", "{$ c #32F793", "]$ c #64F692", "^$ c #72F9AE", "/$ c #57F89F", "($ c #31F78F", "_$ c #3CF37E", ":$ c #344B53", "<$ c #30F572", "[$ c #19F76A", "}$ c #17F768", "|$ c #1BF665", "1$ c #3EF87C", "2$ c #1DF669", "3$ c #59F888", "4$ c #1DF76A", "5$ c #18F667", "6$ c #C99979", "7$ c #4AF670", "8$ c #14F756", "9$ c #20F721", "0$ c #14F654", "a$ c #53F84D", "b$ c #60F84E", "c$ c #65F84F", "d$ c #56F847", "e$ c #5FF850", "f$ c #61F861", "g$ c #75F672", "h$ c #AAFA89", "i$ c #87F969", "j$ c #84F967", "k$ c #7CF963", "l$ c #43F748", "m$ c #7AF735", "n$ c #95F928", "o$ c #A0FA26", "p$ c #A3FA26", "q$ c #A2FA25", "r$ c #B0FA2F", "s$ c #A9FA29", "t$ c #A4FA25", "u$ c #9EFA28", "v$ c #7FF734", "w$ c #70F357", "x$ c #AEF618", "y$ c #A8F522", "z$ c #CFF839", "A$ c #E7F91B", "B$ c #E2FA1B", "C$ c #D7F81C", "D$ c #C2F71E", "E$ c #C7F716", "F$ c #B6F623", "G$ c #9AF43D", "H$ c #100612", "I$ c #7BFC51", "J$ c #60F737", "K$ c #5EF82B", "L$ c #63F72A", "M$ c #82F52F", "N$ c #9AF66A", "O$ c #69EE32", "P$ c #6C5049", "Q$ c #EA1E1F", "R$ c #D33901", "S$ c #0C0301", "T$ c #584F46", "U$ c #151415", "V$ c #150E09", "W$ c #FD3800", "X$ c #4F3A2C", "Y$ c #010101", "Z$ c #F6C692", "`$ c #B03103", " % c #1C1A17", ".% c #060505", "+% c #081012", "@% c #D6CAD7", "#% c #575655", "$% c #4C81C3", "%% c #67A2D9", "&% c #307B9B", "*% c #0C0C0C", "=% c #255BDF", "-% c #103F8B", ";% c #259DEB", ">% c #275DA4", ",% c #625D57", "'% c #170100", ")% c #FDFBF5", "!% c #FBF5F1", "~% c #F3F2F2", "{% c #EAE9E7", "]% c #FAFAFA", "^% c #F6F6F6", "/% c #EEEDED", "(% c #FFFEFA", "_% c #280900", ":% c #2F1607", "<% c #FDFEFD", "[% c #472814", "}% c #C2A593", "|% c #937765", "1% c #F4F0EB", "2% c #E1EF5F", "3% c #C1C1C1", "4% c #8D8D8D", "5% c #959595", "6% c #A6A6A6", "7% c #A0A0A0", "8% c #A4A4A4", "9% c #AA5F55", "0% c #AA3F55", "a% c #A5A5A5", "b% c #747474", "c% c #C6C6C6", "d% c #C3C3C3", "e% c #BBBBBB", "f% c #BABABA", "g% c #BFBFBF", "h% c #8E8E8E", "i% c #868686", "j% c #D47F55", "k% c #AA3F00", "l% c #FF5F55", "m% c #AA5F00", "n% c #727272", "o% c #F5F5F5", "p% c #F4F4F4", "q% c #AAAAAA", "r% c #C2C2C2", "s% c #CBCBCB", "t% c #767676", "u% c #FFBFAA", "v% c #FF5F00", "w% c #D45F55", "x% c #FF7F55", "y% c #D43F00", "z% c #B9B9B9", "A% c #313131", "B% c #CACACA", "C% c #8A8A8A", "D% c #E2E2E2", "E% c #F8F8F8", "F% c #5B5B5B", "G% c #8C8C8C", "H% c #D43F55", "I% c #737373", "J% c #2A2A2A", "K% c #F3F3F3", "L% c #8C8C94", "M% c #434452", "N% c #A9ABB4", "O% c #FBFBFC", "P% c #555555", "Q% c #202020", "R% c #B7B7B7", "S% c #D45F00", "T% c #1A1A1A", "U% c #090909", "V% c #929292", "W% c #FDFDFD", "X% c #D7D7D8", "Y% c #C3C490", "Z% c #ADAA49", "`% c #DFD194", " & c #E4DFD9", ".& c #CBCBCD", "+& c #969696", "@& c #2E2E2E", "#& c #828282", "$& c #949494", "%& c #181818", "&& c #8D8D8E", "*& c #D4D4DA", "=& c #EFEF5C", "-& c #FFEF00", ";& c #FDC929", ">& c #E6D6CA", ",& c #9C9EA2", "'& c #272727", ")& c #080808", "!& c #AA1F00", "~& c #5F5F5F", "{& c #191919", "]& c #FDFDFF", "^& c #FEFDED", "/& c #FCDA34", "(& c #EEDCA6", "_& c #E5E9F3", ":& c #D5D5D4", "<& c #2C2C2C", "[& c #C0C0C0", "}& c #C0DCC0", "|& c #555F55", "1& c #AA7F55", "2& c #AABFAA", "3& c #797979", "4& c #0E0E0E", "5& c #060606", "6& c #050505", "7& c #ABABAB", "8& c #FEFEFF", "9& c #EDEBE8", "0& c #E2E3E4", "a& c #D7D7D7", "b& c #CFCFCF", "c& c #3A3A3A", "d& c #434343", "e& c #BCBCBC", "f& c #2A7F55", "g& c #111111", "h& c #0B0B0B", "i& c #707070", "j& c #FCFCFC", "k& c #F1F1F1", "l& c #E4E4E7", "m& c #9A9A9A", "n& c #141414", "o& c #101010", "p& c #2A5F55", "q& c #557F55", "r& c #9E9E9E", "s& c #979797", "t& c #606060", "u& c #212121", "v& c #FEFEFE", "w& c #F2F2F2", "x& c #E5E5E5", "y& c #B5B5B5", "z& c #ACACAC", "A& c #454545", "B& c #3E3E3E", "C& c #AFAFAF", "D& c #B1B1B1", "E& c #808080", "F& c #A3A3A3", "G& c #363636", "H& c #E6E6E6", "I& c #DADADA", "J& c #CCCCCC", "K& c #9F9F9F", "L& c #626262", "M& c #5E5E5E", "N& c #6A6A6A", "O& c #E7E7E7", "P& c #CDCDCD", "Q& c #999999", "R& c #909090", "S& c #A3A3A4", "T& c #F9F9F9", "U& c #E9E9E9", "V& c #DBDBDB", "W& c #CECECE", "X& c #B6B6B6", "Y& c #8F8F8F", "Z& c #6C6C6D", "`& c #A6A8AC", " * c #D8DADE", ".* c #C9CACE", "+* c #C1C3C6", "@* c #B9BABB", "#* c #AFAEAE", "$* c #98999B", "%* c #888A8D", "&* c #808185", "** c #696B6F", "=* c #C4BFB7", "-* c #A9A399", ";* c #C9C2B6", ">* c #CEC5B8", ",* c #B9B0A5", "'* c #A4A2A2", ")* c #9D9D9E", "!* c #919193", "~* c #8C8682", "{* c #A19789", "]* c #AEA393", "^* c #91887C", "/* c #BDB4A6", "(* c #C6C0B5", "_* c #CEB785", ":* c #FAC747", "<* c #FEDF6F", "[* c #FDD867", "}* c #FFDA68", "|* c #FDD663", "1* c #E0B140", "2* c #878787", "3* c #958663", "4* c #F2BB2A", "5* c #FFD95C", "6* c #FFDD5D", "7* c #FFE060", "8* c #FFDE64", "9* c #FAC73A", "0* c #ABA292", "a* c #559F55", "b* c #B2A789", "c* c #F1C607", "d* c #FFE400", "e* c #FFEE00", "f* c #FFE800", "g* c #FFDD00", "h* c #BF9F2B", "i* c #938F86", "j* c #C7A92B", "k* c #FFE000", "l* c #FFEB00", "m* c #FFDF00", "n* c #CDAD19", "o* c #A3A09A", "p* c #AAAAA4", "q* c #9B9979", "r* c #9B9969", "s* c #99976C", "t* c #9B9882", "u* c #B4B3B2", "v* c #9E9D8B", "w* c #9B9975", "x* c #9A9972", "y* c #9C9A85", "z* c #B0AFAE", "A* c #E0AFB1", "B* c #D78284", "C* c #FFC6CF", "D* c #FFCDCD", "E* c #FEC4BF", "F* c #FFD7D7", "G* c #D0727C", "H* c #B1687C", "I* c #AE938D", "J* c #FEBBBB", "K* c #DB9B9F", "L* c #6F4D2E", "M* c #5C5850", "N* c #975748", "O* c #524D48", "P* c #A0A0A4", "Q* c #C55E6B", "R* c #C3AEC7", "S* c #26211C", "T* c #7F5F55", "U* c #7F7F55", "V* c #D4DFFF", "W* c #9A7B66", "X* c #D98F95", "Y* c #F0AAB6", "Z* c #FFADAE", "`* c #E6B8BD", " = c #EEA1A6", ".= c #413F3A", "+= c #E9959B", "@= c #E68792", "#= c #FF9A9A", "$= c #EBC4C8", "%= c #463913", "&= c #1A120E", "*= c #391F0E", "== c #2D1F0F", "-= c #5F4623", ";= c #764A1E", ">= c #54330C", ",= c #322311", "'= c #160D0B", ")= c #2A2410", "!= c #AA9FAA", "~= c #6C6322", "{= c #3F2712", "]= c #542C11", "^= c #2D1F18", "/= c #8F6941", "(= c #E1C982", "_= c #AB8E4B", ":= c #47290F", "<= c #1B0C0A", "[= c #342A14", "}= c #8A5E35", "|= c #654D1A", "1= c #4B2B11", "2= c #542D0E", "3= c #422715", "4= c #A47333", "5= c #AD8343", "6= c #9B7234", "7= c #977530", "8= c #6C4D1E", "9= c #321D0D", "0= c #211A0F", "a= c #AD7638", "b= c #AE7A4D", "c= c #553F55", "d= c #ACC1B4", "e= c #98693D", "f= c #BC8650", "g= c #714020", "h= c #AA712F", "i= c #9B6C2F", "j= c #573919", "k= c #402813", "l= c #59492F", "m= c #F4AF79", "n= c #281309", "o= c #64401C", "p= c #EDC28B", "q= c #FDDDB4", "r= c #F4D3B6", "s= c #F4CDA3", "t= c #D19C61", "u= c #834C11", "v= c #5A310D", "w= c #4A260A", "x= c #907838", "y= c #15120C", "z= c #353614", "A= c #FD9350", "B= c #D39851", "C= c #6D5031", "D= c #FFFBF0", "E= c #3E3414", "F= c #2A1C11", "G= c #3A2C13", "H= c #73502A", "I= c #F2C5A1", "J= c #FCE8CC", "K= c #FEF3E3", "L= c #FBDEBC", "M= c #DEA35D", "N= c #774516", "O= c #261910", "P= c #D4BFAA", "Q= c #8A6A4C", "R= c #E8C598", "S= c #F7D7AF", "T= c #C8A78D", "U= c #C9A888", "V= c #E7B778", "W= c #BA7932", "X= c #4C2B0F", "Y= c #42210C", "Z= c #FFDFFF", "`= c #D4BFFF", " - c #2A3F00", ".- c #2A1F55", "+- c #574924", "@- c #5E4F47", "#- c #BC9E80", "$- c #F1CA97", "%- c #A37B5D", "&- c #6C5749", "*- c #BB9A77", "=- c #864C26", "-- c #55220E", ";- c #623811", ">- c #0D0D0C", ",- c #AA7FAA", "'- c #2A7FFF", ")- c #77622E", "!- c #D8B494", "~- c #EBCDAF", "{- c #F4E3D4", "]- c #F9DBC3", "^- c #EBC7B4", "/- c #C7914F", "(- c #401F12", "_- c #683913", ":- c #7B4F19", "<- c #4E4413", "[- c #2A7FAA", "}- c #2A3F55", "|- c #968E45", "1- c #776F34", "2- c #B68B6B", "3- c #F3CBAA", "4- c #FFE0D7", "5- c #E9B198", "6- c #564421", "7- c #200A05", "8- c #884D18", "9- c #9C651F", "0- c #D4DFAA", "a- c #6E7331", "b- c #4E2003", "c- c #DE9976", "d- c #E3A790", "e- c #E1AB74", "f- c #C1823A", "g- c #9D6520", "h- c #D49FAA", "i- c #A6CAF0", "j- c #2A1F00", "k- c #625D24", "l- c #764811", "m- c #A67A3A", "n- c #D3AB88", "o- c #B86541", "p- c #D46E6A", "q- c #DEA560", "r- c #A7692D", "s- c #B25E28", "t- c #853D1B", "u- c #231209", "v- c #958732", "w- c #5E5F1C", "x- c #8E7B39", "y- c #F6E4C3", "z- c #D29D7F", "A- c #844524", "B- c #D69869", "C- c #E3A264", "D- c #ECB67A", "E- c #DCA569", "F- c #C57941", "G- c #AE5B1B", "H- c #6A3C0D", "I- c #794C17", "J- c #7F5D16", "K- c #6C9020", "L- c #DBC999", "M- c #FCE3CB", "N- c #875136", "O- c #7D3815", "P- c #F8CEA5", "Q- c #FCE4C5", "R- c #F1C389", "S- c #CA7B3B", "T- c #8D470D", "U- c #588816", "V- c #C8B06D", "W- c #FEEBD5", "X- c #CA9876", "Y- c #EDB881", "Z- c #FDEFDA", "`- c #F8D4A7", " ; c #9D5618", ".; c #513C14", "+; c #16260F", "@; c #1C3411", "#; c #495B0B", "$; c #B99B55", "%; c #EEC7AA", "&; c #D28C5B", "*; c #DB9A62", "=; c #D69150", "-; c #FBD6AE", ";; c #F9DAAD", ">; c #B67029", ",; c #763B0C", "'; c #74501B", "); c #465410", "!; c #3A6109", "~; c #B3874C", "{; c #DB9768", "]; c #D69162", "^; c #B16028", "/; c #EBAA72", "(; c #FAE0B4", "_; c #F7D39F", ":; c #EEC17C", "<; c #7C5D26", "[; c #534616", "}; c #E7B48E", "|; c #DA9159", "1; c #B86C3E", "2; c #C16D35", "3; c #F9C699", "4; c #F8D89E", "5; c #F3C988", "6; c #EBB86F", "7; c #742E04", "8; c #F1BD8B", "9; c #F6D8BB", "0; c #D2884D", "a; c #C06C38", "b; c #FAD69C", "c; c #ECBB73", "d; c #833809", "e; c #5A4306", "f; c #04F003", "g; c #927742", "h; c #9E6804", "i; c #BFBFBD", "j; c #013601", "k; c #39B332", "l; c #FFA20A", "m; c #A16E15", "n; c #DFDFDF", "o; c #7F7FAA", "p; c #7F9FAA", "q; c #79694F", "r; c #8B8F8E", "s; c #404042", "t; c #030000", "u; c #010103", "v; c #877C60", "w; c #EB9608", "x; c #7F7F7F", "y; c #A19FA2", "z; c #97907E", "A; c #AEB0AF", "B; c #100F14", "C; c #261A00", "D; c #EB9605", "E; c #FFA00B", "F; c #AEAEAE", "G; c #927943", "H; c #FDA305", "I; c #B47816", "J; c #240100", "K; c #372203", "L; c #341A03", "M; c #6E0200", "N; c #8E0000", "O; c #1A0001", "P; c #FF0100", "Q; c #D80204", "R; c #8D5604", "S; c #ED9706", "T; c #8A8172", "U; c #A9A292", "V; c #FBA405", "W; c #B37307", "X; c #B70100", "Y; c #340100", "Z; c #FE0002", "`; c #C70C05", " > c #190C04", ".> c #281902", "+> c #4F5052", "@> c #C0BEC1", "#> c #313534", "$> c #414141", "%> c #6E181B", "&> c #FE0F0C", "*> c #A10000", "=> c #340404", "-> c #331107", ";> c #827E7F", ">> c #F0EEEF", ",> c #4F4E53", "'> c #FF9FA1", ")> c #6E0001", "!> c #B30101", "~> c #EC0004", "{> c #0C0100", "]> c #FD4114", "^> c #A11E0A", "/> c #FF9FA0", "(> c #0D0101", "_> c #460000", ":> c #7D0000", "<> c #EC1206", "[> c #8F3D17", "}> c #7E807F", "|> c #A69585", "1> c #B33413", "2> c #6F3335", "3> c #FF3332", "4> c #EB0001", "5> c #6C1207", "6> c #FF6F26", "7> c #B23A17", "8> c #53181A", "9> c #9F0003", "0> c #403931", "a> c #EDEBEE", "b> c #FF481A", "c> c #FF7729", "d> c #D4FFFF", "e> c #B24E1D", "f> c #B2B2B4", "g> c #6E6C6F", "h> c #6D6E70", "i> c #505050", "j> c #6E1B0B", "k> c #FE531B", "l> c #FF9D5E", "m> c #51362D", "n> c #B4B2B3", "o> c #FFFFFB", "p> c #726E6F", "q> c #7F270F", "r> c #FD6A25", "s> c #FFCBA3", "t> c #EB6822", "u> c #5D2413", "v> c #412C2B", "w> c #7C7E7B", "x> c #5F1E0A", "y> c #FF5C1F", "z> c #FF8D3A", "A> c #7F3F55", "B> c #341E09", "C> c #4F0F05", "D> c #5E0E05", "E> c #6E0D04", "F> c #B1230F", "G> c #B12E10", "H> c #1D1812", "I> c #250A03", "J> c #7C4119", "K> c #FFA660", "L> c #95806D", "M> c #E4DAC1", "N> c #C5AE79", "O> c #B89B5A", "P> c #A27D27", "Q> c #A37F2B", "R> c #EBE3D0", "S> c #FF9F00", "T> c #FFBF00", "U> c #DED1B3", "V> c #A07414", "W> c #B6821D", "X> c #CFAA3F", "Y> c #FAD65E", "Z> c #BB962E", "`> c #D7C7A2", " , c #AA9F55", "., c #DBCDAB", "+, c #A78433", "@, c #A47815", "#, c #B88313", "$, c #FFB917", "%, c #DAA721", "&, c #B59734", "*, c #D5C59E", "=, c #D4DF55", "-, c #FFDF55", ";, c #DCCEAD", ">, c #9C751A", ",, c #B7902C", "', c #BD830E", "), c #BB7809", "!, c #BD9C2A", "~, c #CBB686", "{, c #D4BF55", "], c #D4BF00", "^, c #D4DF00", "/, c #F4F0E6", "(, c #AE801D", "_, c #BE8926", ":, c #C07F18", "<, c #7B1206", "[, c #793923", "}, c #BDA265", "|, c #D49F55", "1, c #9D7317", "2, c #703D0C", "3, c #B86C16", "4, c #E3BE4D", "5, c #934E3D", "6, c #900E16", "7, c #8F0816", "8, c #AD8D42", "9, c #F6F3EA", "0, c #AA9F00", "a, c #E7DEC8", "b, c #CE9727", "c, c #A57F2C", "d, c #EAE1CE", "e, c #FFFF00", "f, c #FBF9F5", "g, c #87271B", "h, c #6C0000", "i, c #A07425", "j, c #B99D5C", "k, c #AD7F56", "l, c #7A1C14", "m, c #B58449", "n, c #CCB888", "o, c #AABF55", "p, c #C2A971", "q, c #A18A4F", "r, c #9F7826", "s, c #C5A3A2", "t, c #761111", "u, c #AF8456", "v, c #D3C29A", "w, c #B1924A", "x, c #A79153", "y, c #974544", "z, c #630000", "A, c #AC7343", "B, c #8C3A2F", "C, c #7A1705", "D, c #AF9046", "E, c #F8F6F0", "F, c #FFBF55", "G, c #AA7F00", "H, c #B49753", "I, c #AA8839", "J, c #99642B", "K, c #872906", "L, c #7E2616", "M, c #BC9263", "N, c #892307", "O, c #F1EBDE", "P, c #A5873D", "Q, c #A87F12", "R, c #D7A521", "S, c #A14E0D", "T, c #770100", "U, c #9B6C1A", "V, c #D49F00", "W, c #F1ECDF", "X, c #CEBB8E", "Y, c #A07B24", "Z, c #A37E2E", "`, c #985F21", " ' c #7E4C27", ".' c #B89A39", "+' c #E8DFC9", "@' c #D0BE92", "#' c #BA9F5F", "$' c #A5812E", "%' c #9D802C", "&' c #9D8236", "*' c #AE8E44", "=' c #EFE9DB", "-' c #81654D", ";' c #FDFFFB", ">' c #DBCBC4", ",' c #FEFAF4", "'' c #6B5837", ")' c #B2948C", "!' c #AC9085", "~' c #BFAC9C", "{' c #826F4D", "]' c #B0958A", "^' c #63512D", "/' c #8C785B", "(' c #D6C2BC", "_' c #D0BAB2", ":' c #A18177", "<' c #875E54", "[' c #896955", "}' c #FE900C", "|' c #B87012", "1' c #64502E", "2' c #9E8473", "3' c #6E573B", "4' c #FCFBFD", "5' c #C8B9AD", "6' c #8C725B", "7' c #BCA199", "8' c #912E05", "9' c #CFBFB7", "0' c #594519", "a' c #54410D", "b' c #655705", "c' c #795D39", "d' c #7E5543", "e' c #6C5417", "f' c #69490D", "g' c #604929", "h' c #DDDBD0", "i' c #3C604B", "j' c #D1D7C7", "k' c #AF4E06", "l' c #BBAD9A", "m' c #B5A796", "n' c #5E5125", "o' c #675332", "p' c #675432", "q' c #685534", "r' c #C5B5A9", "s' c #9FB69E", "t' c #B7C1A5", "u' c #F4F7EE", "v' c #E1E9D7", "w' c #DCE9D6", "x' c #9B6300", "y' c #FAF8EA", "z' c #CFD4CA", "A' c #A2B89D", "B' c #83A584", "C' c #739A7F", "D' c #B7BFB2", "E' c #BAC2B5", "F' c #71967A", "G' c #90AA8E", "H' c #98AD91", "I' c #3E5E4B", "J' c #EAF3E1", "K' c #8E5215", "L' c #B09F8A", "M' c #7D9E7B", "N' c #749976", "O' c #65906F", "P' c #5C8A6E", "Q' c #598A6D", "R' c #5D8B6E", "S' c #608D71", "T' c #638F73", "U' c #789C81", "V' c #69A784", "W' c #87A184", "X' c #546E59", "Y' c #FCF9F5", "Z' c #D2D9CF", "`' c #79937C", " ) c #718E72", ".) c #547D65", "+) c #436854", "@) c #416752", "#) c #456B56", "$) c #496D59", "%) c #638771", "&) c #71927D", "*) c #83A78F", "=) c #DBE8DA", "-) c #F7FDFD", ";) c #FBFAF9", ">) c #F7FBF5", ",) c #EFEFEF", "') c #D4D4D4", ")) c #EAEAEA", "!) c #C0C4C5", "~) c #393326", "{) c #0A1016", "]) c #A88DAA", "^) c #CEAFC6", "/) c #CD95C4", "() c #B7B7C2", "_) c #827E85", ":) c #281507", "<) c #1B1324", "[) c #8A8E9D", "}) c #D3D3D3", "|) c #DEDEDE", "1) c #E8E8E8", "2) c #E4E4E4", "3) c #D8D8D8", "4) c #C8C8C8", "5) c #BEBEBE", "6) c #EBEBEB", "7) c #CBC7C6", "8) c #080000", "9) c #E1C0E2", "0) c #FCD7F3", "a) c #5D3C39", "b) c #584056", "c) c #191B26", "d) c #DCDCDC", "e) c #EEEEEE", "f) c #ECECEC", "g) c #D2D2D2", "h) c #BDBDBD", "i) c #C5C5C5", "j) c #41483F", "k) c #DCC4C5", "l) c #7D4B73", "m) c #080A05", "n) c #EDEDED", "o) c #E0E0E0", "p) c #E7E7DE", "q) c #F7FFFF", "r) c #A77B91", "s) c #3F1820", "t) c #D0B19C", "u) c #F6C5C1", "v) c #180008", "w) c #A996C5", "x) c #E1E1E1", "y) c #D47F00", "z) c #E5D7CB", "A) c #F4C1D9", "B) c #AA9791", "C) c #280622", "D) c #DD8EA7", "E) c #F2D7DD", "F) c #FBFBFB", "G) c #070707", "H) c #B8B8B8", "I) c #FFDFAA", "J) c #E1D4E9", "K) c #0C0010", "L) c #FFEFFF", "M) c #974A9C", "N) c #FFE7EF", "O) c #D3AFAE", "P) c #E6ABDC", "Q) c #A870AB", "R) c #480303", "S) c #AA0A0A", "T) c #AE1818", "U) c #B42D2D", "V) c #B22626", "W) c #400202", "X) c #ADADAD", "Y) c #CCCCFF", "Z) c #B17BBD", "`) c #2D4986", " ! c #47709F", ".! c #A67575", "+! c #F0F0F0", "@! c #171717", "#! c #A50202", "$! c #BC0808", "%! c #FD1414", "&! c #FF0505", "*! c #FF0202", "=! c #F12323", "-! c #A80202", ";! c #170D0D", ">! c #D0D0D0", ",! c #C7C7C7", "'! c #FF9F55", ")! c #FFFFAA", "!! c #808000", "~! c #7583A3", "{! c #477381", "]! c #29000C", "^! c #242424", "/! c #121212", "(! c #910202", "_! c #FE0A0A", ":! c #FF0000", "~ c #9E857A", ",~ c #CBB1A5", "'~ c #C1B0A8", ")~ c #C9C5C1", "!~ c #595352", "~~ c #483830", "{~ c #7E5D4E", "]~ c #A07E6F", "^~ c #B49688", "/~ c #C5AA9D", "(~ c #D4BBB0", "_~ c #E3E2DF", ":~ c #57534F", "<~ c #4E352E", "[~ c #6F4738", "}~ c #7E5745", "|~ c #967262", "1~ c #AF8F80", "2~ c #C3A799", "3~ c #D8C1B6", "4~ c #595652", "5~ c #4F3331", "6~ c #593838", "7~ c #653A38", "8~ c #7A5340", "9~ c #947161", "0~ c #AD8E7F", "a~ c #E2D2C9", "b~ c #5B5652", "c~ c #513434", "d~ c #4F3838", "e~ c #573838", "f~ c #683F38", "g~ c #7F5B49", "h~ c #977565", "i~ c #A88879", "j~ c #C1A69B", "k~ c #565656", "l~ c #57534D", "m~ c #523434", "n~ c #523838", "o~ c #623838", "p~ c #7E5744", "q~ c #977262", "r~ c #967165", "s~ c #926F5E", "t~ c #C6B1A7", "u~ c #2F2F2F", "v~ c #59564F", "w~ c #4C332E", "x~ c #825847", "y~ c #FFF7EE", "z~ c #D4CAC8", "A~ c #B6A7A0", "B~ c #585858", "C~ c #61605C", "D~ c #43332B", "E~ c #673D38", "F~ c #805948", "G~ c #919191", "H~ c #484949", "I~ c #3E3935", "J~ c #6F4C3B", "K~ c #754D3A", "L~ c #79513F", "M~ c #85604E", "N~ c #AB8A7A", "O~ c #595B5B", "P~ c #625E5B", "Q~ c #58453B", "R~ c #8D6857", "S~ c #8C6756", "T~ c #93705E", "U~ c #927060", "V~ c #DFD5D0", "W~ c #9B9B9B", "X~ c #898889", "Y~ c #6D6F6D", "Z~ c #7E7971", "`~ c #917568", " { c #A28271", ".{ c #A58475", "+{ c #AA8A7B", "@{ c #D4C6C0", "#{ c #767777", "${ c #838383", "%{ c #876A25", "&{ c #6D4A00", "*{ c #B0ACA5", "={ c #B7998C", "-{ c #BA9D8F", ";{ c #BEA294", ">{ c #C4AB9E", ",{ c #C3C3C0", "'{ c #717171", "){ c #4D4D4C", "!{ c #636365", "~{ c #7C7C7C", "{{ c #CAC191", "]{ c #D8C075", "^{ c #886A25", "/{ c #B7B1AB", "({ c #CAB9AF", "_{ c #C9AFA2", ":{ c #D5C0B6", "<{ c #EBE1DA", "[{ c #515151", "}{ c #686868", "|{ c #CAC08E", "1{ c #FFFFE6", "2{ c #E7E4E4", "3{ c #656565", "4{ c #876A24", "5{ c #C9C08E", "6{ c #6D76F5", "7{ c #8594F2", "8{ c #A5B7F7", "9{ c #EFFFEF", "0{ c #B594CE", "a{ c #BD9CE7", "b{ c #9C94C6", "c{ c #B6E6C8", "d{ c #81D9A4", " . + @ # # + . $ % & * & = $ - ; > , ' ) ) ) ) ) ", " . ! # ~ { { ] ^ / & $ $ * ( _ : : _ _ < & $ [ } | 1 2 2 2 2 2 3 4 5 6 7 8 8 9 9 9 0 0 8 ", " 0 a # | 2 2 2 2 { + b c d % < _ e f f e g h _ _ i 0 j k l l m n k o l p q r s t u 1 2 2 2 2 2 2 2 2 1 3 v w w w x y ", " 8 z z A 2 2 2 2 2 B d 2 2 2 d = ] { C % D E C d F 7 * ( i 0 p G k o m m o k H k l l m I J K L M N O P Q 2 2 2 2 2 2 2 2 2 2 2 2 3 R S . 6 T e e e E 7 $ U S ", " $ V W X Y 2 2 2 2 2 2 2 2 2 2 2 Z $ ` 2 2 2 d X F 2 2 2 2 4 .( a $ o p H k l l l l n p G l l l m ..+.@.#.$.%.&.*.=. 1 2 2 2 2 2 2 2 2 2 -.-.2 2 ;. >., ,.'.{ 3 ).g ).3 ) ] !. , >. ", " ~.a W 8 B 2 2 {.].2 2 ; 2 ; ; 2 ; = 2 2 2 2 2 d 2 2 2 2 2 2 ^.i /.! k l G k o l l l l l o l l l l m +.(._.:.<.[.}.|.1.2.3.4. 4 2 2 2 2 2 2 2 2 > 5.5.{.A -.b 6. 7.B 2 2 >. 5 ).2 2 2 B ; 2 2 2 2 ~ $ 8.-.2 -.9. ", " 0.W i 8 B 2 2 > ; 2 Y v F A ].2 ; $ C 2 2 F -.2 2 2 2 ; d 2 2 Y @ < a.$ l l l l l l l l l l l l l l m m b.c.d.e.f.g.h.i.j.k.l.m.n.o. 3 2 2 2 2 2 2 2 ].R p. 5.{.].) ` >.-.2 2 2 2 2 C E 1 2 2 2 2 2 2 2 2 2 d ~.^.B 2 2 2 2 Y , ", "q.0.W / @ 9.2 2 2 2 Y q.r.s.B 2 2 F 8 9 4 2 2 A 2 -.2 -.U U t.t.R u./.a 9 l l l l l l l l l l l l l m m v.w.x.y.z.A.B.C.D.E.F.G.H.I. 3 1 2 2 2 2 2 F {. p.p.5.{.w ^.;.{. 7.2 2 2 2 2 2 1 & ~ 2 2 ].; 2 Z 2 > A 2 d s.J.F 2 2 2 2 2 -.K. ", "L.V W / < X A 9.Z ].u.r.M.N.u.F 2 - s.~.> 2 2 -.-.Y ].d O.P.l Q.Q.l P.O.a.~. l l l l l l l l l l l l m R. S.T.U.V.W.X.Y.Z.`. +.+++@+#+ F 1 2 2 2 2 2 6.{.p.$+%+5. {.w C {. 7.2 2 2 2 2 2 2 ) W 7 2 2 A F ; u.d ; > 2 F q.&+8 -.2 2 2 2 2 -.K. ", "!.0.W /.( ( *+=+V *+D M.-+M.r.;+{.s.=+~.].-.2 2 2 8 ;+O.>+Q.Q.Q.Q.Q.Q.>+O.,. ,+l l l l l l l l l l m >+ '+)+!+~+ {+]+^+/+(+i._+:+ | b 1 2 2 2 2 {. R <+%+[+ {.^.{. , -.2 2 2 2 2 2 2 7 W + Y 2 2 > L.h X Z 2 -.A ;+0.X ; -.2 2 2 2 2 d ", ";+&+a i < _ : e f f f M.-+M.f _ i W }+~.s.9.2 2 ! |+P.Q.2 H Q.Q.H 2 Q.P.x I 1+m m l l l l l l m >+ 2+3+4+5+6+ 7+8+9+0+a+b+ {.> F 3 1 2 2 2 {. p.c+S {.- 9.A ].5. K.2 2 2 d d 2 2 ; d+W /.X w 5.,.D f D =+e+e+;+0.0.f+{.d 2 ; d 2 2 2 8. ", "y !.a.W / V g+_ : : e M.M.M.: _ /.a.+ X 0.q.w e+=+e h+l Q.H 2 H H 2 H Q.l i+m m l l l l m >+ j+k+l+m+n+o+ p+q+r+s+t+ ^.> F b 1 2 2 6. p.p. 9.B A {. F 4 d w ; 2 2 a./.< /./ : : _ _ _ /.a a a.u+q.5.4 2 - w d 4 ; A ", " h+0.a /.v+O.!.: _ : : : _ _ ( w+h+$ . V a a /._ : <+Q.Q.Q.H 2 2 H Q.Q.Q. >+m l l m ,+ x+y+z+A+B+ C+D+E+ w 6.> ; d b c b 5.5.5. 9.9.w e+ , > d &+W !.V _ _ ( ( < < / u+g+0.F+ w w , ", " g+u+a.W a <+O.&+_ _ _ _ _ < g+c+=+ ,.g+z < < ( <+Q.Q.Q.H 2 2 H Q.Q.Q. {.1+m m m i+ <.G+H+I+J+K+ 5.w ].A 4 ; F d > 5.5. > ].q. 8. !.V !.<+g+z i i W a.g+L+g+!.v+ ", " g+&+a.W &+O.O.v+W / /.V M+L+u+$ w+c+0./.< g+l Q.H 2 H H 2 H Q.l m m >+ N+O+P+Q+R+ 5.{.w 6.A > > 4 A w {.w w q.5. h+V &+M+<+c+M+c+<+M+F+!.g+y ", " u.g+&+V a !.L+O.O.<+L+O.c+u+0 q.g+c+w+h+g+P.Q.2 H Q.Q.H 2 Q.P. m S+T+U+V+W+ p. 5.{.w w ].].].].w {.5. f+v+u+0.u+h+g+h+!.!.h+g+w+ ", " p.g+!.0.a.u+w+L+L+c+g+&+X d+h+g+M+c+O.>+Q.Q.Q.Q.Q.Q.>+O. 1+ X+Y+Z+`+ R p.5.5.5.5.5.5.5. p.p. w+w+v+h+!.!.h+g+g+w+M+ ", " g+g+F+&+&+u+!.u+J. f+h+F+F+O.P.l Q.Q.l P.O. @.@+@ @@U R R R R R U U R c+c+M+M+M+c+c+U ", " u.v f+;+q. x w+ S #@$@ R U @@U @@S $+ ", " . 0 @ # @ 0 $ $ $ 5 %@%@%@%@%@%@C $ ", " . ! &@/.< ( ( < / .$ = & * * % 7 *@=@-@;@ 9 6 { { ) ) ) ) ) { { 6 0 s. ", " 9 a.i < _ : : : : : _ < = @ / ( _ : : : _ ( 7 l l l m o k o l p >@,@'@ )@!@~@{@]@;@ >.7.K. u.p.v ;+;+L.L.L.L.;+;+v R U 8.7., ", " 9 a.i ( _ h r.N.D f f e < /.= &@< _ ^ ^@T /@f f h ^ (@ _@G k o m :@ 1+k H k l l m >@<@[@,@}@ |@1@2@-@ >. 2 2 2 ; 0.W /./ < < / i a &+q. w -.2 2 d K. ", " 0.W < _ =+q.A | C (@e @ 6.4 ^@$ $ a < / + F B B b ^@N.C -.) 7 p o p H k l m 3@k p G l l l m 4@5@6@7@8@9@ 0@a@b@c@d@ Y 2 2 2 2 2 2 ; K. .( : : f e e : _ ( / a. -.2 2 2 2 -.9. ", " ,.z /._ J. 2 2 2 2 d }+| 2 2 2 7 8.V /./ X B 2 2 2 2 d ^.2 2 2 c 5 l l G k o l l :@3@G o l l l l m e@f@g@h@7@i@9@ j@k@l@{@m@d@n@ , Y 2 2 2 2 2 2 2 2 C # ( / & % o@e f N.% + # i V d+d 2 2 2 2 2 2 2 d ", " &+W < W w 2 2 2 2 2 2 F B 2 2 2 b > 9 a / # ; 2 2 2 2 2 2 B 2 2 2 2 F l l l l l m >+m 3@_@l l l l m e+ p@4@<@q@r@s@t@ u@v@w@x@m@y@z@ d 2 2 2 2 2 2 2 2 2 % / * C A@B F % (@| B B - ~.a J.> -.2 2 2 2 2 2 2 F ", "q.V W < ~.d 2 2 2 2 2 2 2 2 2 -.2 $ J.B@C@D@Y 2 -.{.{.-.2 2 2 ].].2 b $ l l l l l >+3@3@I l l l l m m E@4@F@G@H@I@J@ K@L@M@N@O@P@ K.2 2 2 2 2 2 2 2 2 ; W /.4 2 2 2 2 ; > 2 2 2 2 Z L.0.Q@- -.2 2 2 2 2 2 -.8. ", "L.V W /.X B 2 2 > 5.-.2 2 2 ; p.-.2 ^.R@S@S@S@C@^.2 {.O.O.{.2 ; ].T@O.{.B 8 l l l l m 3@D@k l l l l m m U@V@W@X@Y@Z@`@ # .#+#v@@# ; 2 2 2 2 2 2 2 2 B = i % B 2 -.d 2 2 2 2 d d 2 2 {.0.L.].> -.2 2 2 2 2 2 > ", ",.V W /.9 B 2 2 ; ].2 2 - d -.> 2 B 8 k S@S@S@C@I 2 {.O.O.5.-.y 5.O.O.5.d X 1+l l l m 3@p _@l l l m >+ ##$#%#&#*#Z@`@=# -#;#>#,# ; 2 -.-.d Z 2 2 2 9 W 7 2 2 A 5.2 2 2 2 w {.2 -.].&+u+5.].d 2 > d -.-.2 - ", ";+0.W / @ 9.2 2 2 2 2 2 q.{.2 2 2 d X [+C@S@S@C@i+'#d p.R 9.9 N.s. p.> > ~. m m m l m 3@o l l m >+ )#$#!#~#{#]#^#/# (#_# 8. ; 2 -. 8 W 7 2 2 -.-.2 F > 2 -.-.2 d w &+~.{.w > -. > 8. ", "q.&+z /.i 8 B 2 2 2 2 A r.|+A 2 2 ^.9 o C@C@G :#w ; F A s.r.f N.d+A > s.X m m m >+3@o l m >+ <#[#}#|#1#]#2#3#4#5# K.; F W % Y 2 2 2 2 9 s.B 2 2 -.; e+0.s. 5. ", " F+V W / .[+; Y F 6.# f e =+{.6.~.. v+n C@n &+/.z =+*+h e : : < a.V a. I >+ D@l m m {. 6#7#|##9#0#a# 8. z i 7 B 2 B ].*+h 9 Y 2 d w ,.0.9 ", " f+&+z W < /.# @ .( e : : : / W z s.h+b#c#!.&+/ _ _ _ _ _ ( ( < &+!. l m m >+ d#e#f#g#h#i#j# =+i i % 8 X W f f h @ 9 s.J.a.!. ", " v+0.z W / _ ( *+u+g+w+w+g+&+a.. g+!.F+u+<+M+a < ( ( < < i h+c+9 m m >+{. k#l#m#h#n#h#o# a.!.M+g+h+!.!.!.!.h+g+M+M+u+L. ", " q.h+0.z a.F+M+M+g+!.0.&+g+L+5. w g+!.V 0.M+L+w+u+0.&+h+M+M+L. m {. p#q#r#i#s# s.u+c+R ; F F ; t#g+F+ ", " u.v+g+<+w+&+W i i W W V s. {.w+h+&+V !.w+M+M+M+w+g+;+ 1+ u#h#v# L.u+w+x ].d d > p.M+g+h+ ", " x g+u+0.V V 0.u+;+w x w+g+F+u+u+F+h+h+q. q.!.h+g+g+g+w+g+v+u. ", " u.v f+v u. x w+%+p. {.u.f+f+;+y ", " $ ^@^ w#E ^@7 . ^@/@/@T x#%@%@K. 8. ", " $ ^ _ e -+e f f : w#7 5 E h N.r.r.*+N.D N.*+8 j 8. H 8. ", " = < E { 3 1 3 '.D ^@{ { C 7 / : f f N.V !.!.g+&+r.r.+ y# A S@ [+p p I H R@ ", " = / * F 2 2 2 2 B 8 Y 2 2 2 | 7 W /._ *+V |+h f V o@N.*+D : 5 z# t.U S@k k _@_@Q.Q._@_@n p C@j ", " $ W /.C 2 2 2 2 2 2 2 2 2 2 2 -.Z /.a a.0.*+M.M.M.! =+! /@e |+i ~ A# O. S 3@D@_@_@_@Q.Q.Q.Q.Q.l l o t.T@ O.O. ", " ! / @ Y 2 2 2 -.2 2 2 2 2 2 2 2 C @ i /.h+V < o@=+f+! -+(@;+N.: a.! B#C# O.O.T@ S @@ _@Q.l c+P._@Q.m P.P.l l e+U S T@T@O.O. ", "$ z / + Y 2 2 A 5.2 2 - -.-.5.d 2 C $ V W / /.0.F+F+J.g M.M.-+(@g+&+a h+$ A D#k H R@ E#F#G# O.T@T@T@ S c+l Q.k 6.> H#m 5.A A i+l m P. T@T@O.O.O.p. ", "9 a / + d 2 2 d > 2 B 5.> 2 w -.B > 9 9 0.a W / ( _ : _ *+u+!.! I#( u+g+!.+ l l n l l n l l l J#K#L# O.O.T@T@T@ S >+Q.k A@2 2 2 ^.p 2 2 2 '#e+l >+t. T@T@O.O.O.O. ", "~.z /. .A 2 2 2 2 '#{.o@X 9.2 2 -.].~.L.&+a.a W /./ u+<+L+c+c+L+<+V < W z ~. l m m m m m m m R.R.m e+ M#N# O#P#Q# R#S# O.O.T@T@T@T@ l _@; 2 2 2 2 2 -.2 2 2 2 ; R.m c+ T@T@O.O.O.O.O. ", ",.a.W / ~. d Y A u.|+f h ;+A B - e+=+;+u+0.a.a a M+L+F+W /./.W h+O.!.W a.,. ,+m l D#4 4 4 4 4 4 4 p m m i+ T#U#V#W# X#Y#Z# `# $.$ t.O.O.O.O.T@T@T@T@R _@G '#2 F {.-.2 2 2 w A 2 Y :@m P.T@T@T@O.O.O.O.O.t. ", ";+0.a /.< z L.;+&+/.f f f < u+u.;+0.~.;+F+!.0.V M+<+V i W W W W W !.<+&+&+L. m l l R@R@D#R@k l l m +$@$#$$$ %$&$*$ =$-$;$ O. O.T@ _@k '#2 -.> 2 -.F 2 ; F 2 d i+m i+>$T@O. O. ", "q.u+a.W /.< ( ( : : z !.W _ ( i &@a.9 u.g+h+!.w+<+&+z a.z z z a.a.a.M+w+!.q. m o k H p l l l m ,$'$)$!$ ~${$]$^$/$($_$ t.T@ l G d 2 2 2 2 ].e+2 2 2 -.- ,+m :$T@S ", " h+&+z W i / < ( V O.O.<+W / i a u+ w+g+v+v+h+&+&+&+0.0.0.0.&+&+g+c+v+ m m m l m m m <$[$}$|$1$2$3$4$5$ o _@6$'#2 2 Z o l 6.'#2 Y {.m m ", " f+F+0.a.a W i /.w+O.O.O.a.W z 0.;+ w+w+g+g+v+h+F+F+!.!.!.!.F+h+g+g+f+ I R.R.m 7$8$9$9$9$9$0$ i+l _@D@6.I o Q.Q._@D@[+i+R.m R. ", " g+F+&+V z a W v+O.O.M+z a.&+h+ c+M+w+w+w+g+g+g+g+g+g+g+g+g+w+ a$b$c$d$e$f$9$9$9$9$g$h$i$j$k$l$ m _@l Q.Q.Q.Q.Q.Q.Q._@l m >+[+ ", " 5.w+h+!.&+0.V V h+v+0.0.!.g+q. p.<+c+M+M+M+M+M+M+M+M+M+M+c+5. m$n$o$p$q$9$9$9$9$r$s$t$u$v$w$ I m P.>+Q.Q.Q.Q.Q.Q.m c+P.,+ ", " M+g+h+F+!.u+&+u+!.v+w+5. R O.L+<+<+<+<+<+<+c+c+<+p. x$y$z$A$B$C$D$E$F$G$ i+>+P.P.>+m m >+P.H$P.H# ", " M+c+w+w+g+g+w+M+%+ <+O.L+L+L+L+L+O.S I$J$K$L$ {.>+>+P.P.P.P.P.>+:@ ", " $+$+$+p. R $+S $+ M$ N$O$ 8. {.P$c#P.H#5. 3@3@8. ", " $ 0 & * & % $ :$L.e f+@@$+ Q$R$ S$T$U$ H 8. [+p p I 3@8.p ", " . ./ ( _ _ _ _ < * $ $ 5.A ; = (@| -.F A 5 C@R$Q$ R$_@_@Q$ V$U$ S@[+n %+S m >+$+P$1+j S@j ", " 0 W ( _ h : e f e e _ / % %@1 2 2 2 2 F 2 2 2 2 c 7 _@_@_@_@W$ Q$_@3@3@S@ X$Y$ Q$D#b c ; 1+p Y 2 b p l ", " 0 W ( < % 7 | 6 g f N.~ 6 ^@= 6 3 2 2 2 2 2 2 2 2 2 2 2 ; 0 W$_@3@3@3@R$S@_@3@R$ X$ O.O.T@ D#H 2 2 2 2 d 2 2 2 2 2 p p O.O.O.t. ", " $ z < /.8 A@2 2 2 F @ C 2 2 2 Z$$ C ).2 2 d A 2 -.- 2 2 ].F 2 d X Q$S@_@S@ `$W$Q$ X$S$ %.% R O.O.+%t. T@i+S@2 2 2 2 2 2 2 2 -.2 2 ; o H#O.+%T@T@O.O.@@ ", " }+i < 9 B 2 2 2 2 2 @%-.2 2 2 2 = * | 2 2 > 5.2 A v Y 2 {.4 -.F q.J. , , , W$_@W$ C@R$, , X$#%Y$X$ t.O.T@T@t#S S l H 2 2 {.].2 ; -.2 5.; 2 d :@>+t#t#+%T@T@O.O.O. ", "$ a./ # ; 2 2 2 2 2 2 2 2 2 2 2 2 C $ $ W > 2 2 2 2 L.N.q.F 2 2 d - 5.&+ 2 , p _@R$S@Q$_@_@j $% X$Y$ X$ T@O.T@T@t#t.S c#_@^.2 2 F d '#:@6.2 d -.-.; :@m P.t.t#T@T@T@O.O.O. ", "9 z < @ Y 2 2 ].> 2 2 2 2 4 ].2 2 ; 0 0 /.9 9.B 9. f+h M.N.u. ; > ;+V X %%%%l _@_@_@ %%l _@&%$%%% X$*% X$ O.T@T@T@t#t. R._@[+2 2 2 '#e+_@n > 2 2 d H#m P.>$t#T@T@T@O.O.O.T@ ", "~.a / + Y 2 2 5.].2 2 - Y > {.2 2 ; s.}+/.i L.u.f+0.: f f f I#0.f+v f+V V L. , l l =%=% -%m G $% %% T$S$ O.O.T@T@T@t#S >+_@o ].Z ].P$l Q.Q.o e+ ].P$m m P.+%S t#T@O.O.O.O.O. ", ",.z / @ 9.2 2 2 2 2 2 q.w 2 2 2 B A ~.=+W / < < _ _ *+!.F+&+W _ < W W a.&+;+ 2 _@_@;%%%Y >%&%>%_@_@ K. X$S$T$,%V$*%.%U$U$*%Y$*%.%.%U$U$Y$*% R O.O.O.O.T@S U 1+l Q._@m m _@Q.Q.Q.Q._@m m l l m H#$+S S O.O.O.O.@@ ", "L.a.i i 8 B 2 2 2 2 ].r.# A 2 2 Y 9 ~.~.z W /.< V c+L+c+M+<+L+M+a.W z 0.u+;+ _@_@%% >%$%$%_@_@%% %% T$X$'%S$)%!%~%2 {%Y$]%]%2 ~%^%{%^%/%*% t.R O. T@ I l l >+P.c+L+L+O.O.L+L+c+P.P.m >+I T@+%S U O. @@ ", "q.0.*+/ .[+F Y ; {.*+f e J.w ; ].J.X q.0.z W h+O.g+a /./.i V M+L+u+V u+F+y _@_@%% >%$%$%_@_@ 7.%% T$'%X$'%S$)%(%]%2 {%*%2 ^%]%2 ]%U$*% S m P.T@:$5.{.w ].w {.5.p.>$O.>+>+ $+ ", " !.a.W / W =+~.=+/.: _ _ h z u+u+0.. F+V F+O.u+i W W W W W z w+L+h+!.g+ _@_@ >% $%_@_@%%%% _%'%:%:%'%S$(%<%2 2 2 Y$^%2 Y$U$ >+>+T@w ; d d d d F ; > U L+>+P. ", " ;+&+a V <+M+w+w+w+M+M+M+M+M+S <+!. f+F+c+g+z a.a.a.a.a.V 0.&+c+M+h+g+ _@_@%%, B _@_@%% [%}%|%'%_%S$1%2 <%{%<%2 Y$.% I P.L+$+A ; ; 4 > > A 5.T@P.P.{. ", " v+0.a.M++% A A A A A > ].U w+. w+g+!.u+&+&+&+&+&+u+!.h+g+g+w+ _@%% $% $%_@_@ '%[%_%[%[%'%)%^%]%2 .%U$ H#P.O.$+w > > > A p.T@L+P.H# ", " q.v+0.V g+t#p.w A A ].5.$+w+q. 5.w+g+v+h+F+F+h+h+v+g+g+g+M+ $%$%$%_@ X$|%'%|%_%S$!%]%*%.% %+L+O.T@U R p.S O.L+H$%+ ", " 5.g+!.V !.w+c+<+c+M+w+v+s. p.c+M+w+w+w+w+w+w+M+M+c+R V$X$S$V$1%.%U$ L+O.O.O.O.O.L+L+ ", " x g+F+u+u+!.F+h+f+w S L+<+<+<+<+<+<+S V$.%Y$U$ U S S U ", " x x x u. $+S $+R ", " %@'./@e I#^@C 5 %@).T -+2%%@ 3%4%5%6%7%4%8% ", " %@).{ { T D T { { { C 5 { 3 2 2 3 ^@'.3 2 , 9% 9% 0% a%b%c%d%e%f%g%h%i% ", " 6 ) 2 2 2 -.^.-.2 2 2 3 7 ~ ).2 2 2 2 2 Y B 2 2 2 B , j%0%k%l%9%k%m% a%n%o%2 p%q%6%r%s%5%t% ", " ~ ) 2 2 2 2 2 2 2 2 2 2 2 F 0 7 (@'#2 -.d 2 2 2 2 2 2 2 2 d u%v%w%x%y%w%w% z%A%d%2 2 B%C%D%2 E%s%F%G% ", " C ^@2 2 2 -.2 2 2 2 2 -.2 2 B X . 5 i 7 2 2 > p.-.2 - - 2 {.d 2 d - u%H%w%x%H%k%j% I%J%B%2 K%L%M%N%O%D%c%P%Q%R% ", " * C 2 2 > p.-.2 -.2 5.A 2 Y w J. ./.^.2 2 -.d 2 Y d+s.Y > -.2 d 8 w%S%w%j%y%w%w% z%T%U%V%W%X%Y%Z%`% &.&+&@&Y$#& ", "$ i > 2 2 d > 2 A ;+A 2 ; d -.F w u+. a /.9 Y 2 2 2 - o@g q.Y 2 -.; s. j%l%w%y%H%x%0% $&O.O.%&&&*&=&-&;&>&,&'&)&O.P% ", "0 i 8 2 2 2 2 ].;+e }+].2 2 d - 5.0.X 9 a / W q.w {. f+r.M.M.o@v - ].;+9 !&9%k%9%!& ~&O.O.{&e%]&^&/&(&_&:&F%O.O.<&[& ", "}+/.# w > ]. !.D f f |+u.w ].5.!.a.L.~.a.W < /.z a.W : e : e e < !.f+f+V ~. }&|&1&2& 3&4&5&6&7&2 2 8&9&0&a&b&3%c&O.6&d&e& ", "=+W < W 0.0.W : : : : : /.0.!.&+z V ,.,.V a W < _ _ _ _ _ _ _ _ _ ( i f& t%4&g&h&i&2 2 j&k&l&X%s%g%e%m&n&h&o&~& ", "~.a i < _ : : _ _ _ _ _ _ ( / W a.&+;+L.&+a.W a.!.h+g+w+w+w+w+g+!.0.z z 0.L. p&q& |&}& r&s&t&u&b&2 v&w&x&a&s%[&y&z&8%A&B&C&D& ", "s.0.a z 0.!.h+v+g+g+g+g+h+h+!.0.0.!.s.q.F+&+z g+O.L+L+@@ S R $+O.O.O.h+u+q. E&q&q&|&f&q&}& F&G&-.2 p%H&I&J&r%R%z&F&K&L&M& ", " !.a.v+O.O.<+<+c+L+H$L+L+O.O.g+u+h+ g+F+&+u+0.z F+{.d p.> w g+u+g+h+h+ q&f&f& p&}& 3%N&2 ^%O&I&P&3%R%z&F&Q&5%i&R& ", " f+!.u+&+a.z a a c#Q.l Q.Q.c#h+h+g+ g+g+h+u+&+V g+{.; R A w g+0.!.h+f+ |&2&q&}&E&E& S&T&U&V&W&d%X&z&F&Q&Y&h%Z&r% ", " g+!.&+0.V a.V c#Q.l Q.Q.c#h+w+ M+g+g+h+!.w+w > U ].{.w+h+g+w+ q&|&f&f&f&E& `& *.*+*@*#*a%$*%*&***C& ", " 5.w+v+F+!.u+!.c#Q.Q.Q.Q.P.w+u. 5.M+w+w+g+M+ {.$+{. w+g+M+5. E&2&q&|&q& =*-*;*>*,*'*)*!*~*{*]*^*/*(* ", " M+w+g+g+g+M+l Q.Q.l <+p. p.<+c+M+<+$+S t.U t#M+c+ E&}&p&2&2& _*:*<*[*}*|*1*2*3*4*5*6*7*8*9*0* ", " $+<+c+c+c+<+P.P.S S L+O.O.O.O.O.O.S a* }&}& b*c*d*e*f*g*h*h%i*j*k*l*l*m*n*o* ", " $+S $+ $+S $+ }& p*q*r*s*t*u* e%v*w*x*y*z* ", " $ 0 @ # @ + . y ;+f+;+u. A*B*C*D*E*C*F*F*F*F*C*D*E*G* ", " $ ./ < ( ( ( < i # . ;+&+V a.a.a.0.!.f+ E&E&a*E& H*I*J*J*D*C*E*C*D*E*C*J*J*I* ", " 0 / _ : e : : : : _ < W 9 q.0.z W W i i W W a V !.q.O.O.O. E& p& K*L*O.O.M*N*J*E*J*J*E*J*N*O*O.O* ", " = / _ N.o@N.e f f h . ./.W 9 9 V W /.< < < < < / /.W z !.p. O. E&P* f& Q*J*R*S*O.O.O.O.O.O.O.O.O.O*A*J*G* ", " $ /.< = 4 Y ; 0 D (@C d F 8 # z . $ V i < ( _ _ _ _ _ _ < / W a h+O. T*U*P* q&V* E&E& G*F*F*F*M*O.O.O.O.O.O.O.W*C*F*F*B* ", " .< = B 2 2 2 B X C 2 2 2 2 > =+=+ =+W < _ : e e : : : : : _ ( a O.;+ k%0%m%0%!&E& q&f&f&f&q&X*K*F*F*F*F*W*O.O.O.O.O.M*C*D*F*F*A*G* ", "$ i & B 2 2 2 2 2 d B 2 2 2 2 2 9 0.. $ z / _ ( *+*+h f f f e r.V a V O.O.O. j%l%w%H%y%x%0% E&}&|&q&p&G*Y*F*F*F*F*C*W*O.O.O.S*Z*C*D*F*F*F*Q* ", "0 /.7 2 2 2 2 2 2 2 2 2 2 2 2 2 A &+9 9 W _ *+h+&+V &+|+f D V &+0.h+g+a a.s. j%y%w%x%H%w%w% q& f& Q*`*F*F*F*D*C*E*O.O.O.L*J*E*D*F*F*F*B* ", "}+/.C 2 2 4 {.2 2 2 2 2 {.A 2 -.> ,.~.}+/ W &+h M.M.f *+*+*+N.M.M.f z g+a.~. j%l%w%j%y%w%S% p&}& Q*D*F*F*D*D*E*J*O*O.O.N*Y*E*C*D*F*F*G* ", "! /.C 2 2 > {.2 2 ].d 2 w > 2 -.A ,.J.! / a.h f -+-+M.M.# (@M.-+M.f : V u+J. j%H%w%x%y%w%0% q& Q*E*C*D*C*E*J*Z*N*O.O.N*Z*J*E*E*C*D*G* ", "}+i = '#2 2 2 2 d v 8 2 2 2 2 F w &+L.}+/.W e f M.-+M.-+-+M.M.-+M.f _ i u+~. j%m%k%l%9%k%0% q&}& B* =E*J*J*J*J*Z*B*L*.=Q*Z*Z*Z*J*J*J*Q* ", "9 W .4 2 2 2 Y u.h # A 2 2 -.A L.0.s.0 i i : f f M.M.M.M.M.M.M.M.e _ i &+X w% 9% 0% p& X*+=Z*J*J*Z*Z*@=Q*G* Q*G*Z*Z*Z*Z*Z*Q* ", " a./ & ^.> ].L.r.f e ! 9 A w L.a.&+. $ W i _ f f f f f D f f M.f : ( a u+ E& }& G*J*+=Q*Q*Q*Q*+=G* G*G*Q*G*#=Z* =G* ", " J.W < < /./._ e : : : < W a &@V !. # W < e f f f f &+r.f f f _ / 0.J. a* Q*J*E*C*E*E*J*J*G* G*Z*Z* =J*E*G* ", " . 0.a a i < ( ( ( < < /.a a.0.!. $ W / : f f f r.|+|+h f : ( a 0. E& X*+=D*D*D*D*E*J*G*Q*Z*J*J*E*C*Y*G* ", " q.!.0.0.<+c+M+M+M+c+<+0.0.g+s. 0 /.( : e N.*+f D r.N.< i a.X a* Q*D*F*F*D*C*J*@=G*J*J*E*D*D*B* ", " s.!.0.V 0.&+&+&+&+&+u+h+u. 0 V i ( _ e e e _ < W &+s. E& X*X*F*F*F*D*E*+=G*J*E*C*D* =G* ", " w f+u+0.V V V &+F+f+ f+h+!.u+&+u+F+v+g+ a* Q*C*F*F*D*E* =G*J*E*D*D*Q* ", " u.v f+v u. q.L.;+;+s. K*B*$=F*F*E* =G*J*C*D*X*X* ", " $ ~ E I#g ^@6 %=&=*===-=;=>=,='=)= ", " $ & ( g '.{ ).T f : 6 , P*P*E&E&!= ~=,={=]=^===/=(=_=:=<=[= ", " 0 i ( & | 2 2 2 2 '.(@) -.>. , , e+d+d+}={. 9. 2&P*E&E&E&!=}&}&E&V*}&E&|& |=1=2=1=3=]=4=5=6=7=8=9=)=0= ", " 0 a < # > 2 2 2 2 2 Y ; 2 2 2 >. K.7. d+a=b=b=b=}=e+ >.d E&E&|&E&V*}&V*}&}&!=P*P*|&c=|&|&d= |=*=9=e=f=g=h=4=i=j=k=_=l='=%= ", "$ V i / X '#2 2 2 2 2 2 2 2 2 2 -. , D#m=m=6.d+a=b=b=b=b=a=}=u.;.m=m=m=K. E&2 2 !=E&E&|&T*P*E&T*E&P*E&c=|&E&P* -=n=o=p=q=r=s=t=u=v=w=j=x=y=z= ", "~.z /./.w 2 2 d {.-.2 2 -.-.-.2 2 >. > A=A=}=a=b=B=b=b=b=b=d+C=}=A=A=^. |&D=V*D=}&|&E&!=P*!=!=!=2&!=P*E&|&P* E=F=G=H=I=q=J=K=L=M=N=9=w=>=y=O= ", "u+z i /.w B 2 d {.-.2 2 w > {.2 2 9. 6$}=d+b=b=C=b=b=%+}=b=}=C=}=6$ T*V*}&P=}&P*E&!=!=}&V*P*|&E&}&}&|&P* [=,=3=Q=R=S=T=U=V=W=<=X=Y=&=&=[= ", "&+z W / X 9.2 2 2 2 2 > }+8 -.2 2 - }=b=B=%+O.b=b=O.%+b=d+C= |&Z=}&`=}&E&2&P*2&}&|&c= -.-|&}&T*P* +-n===@-#-$-%-&-*-t==---;-G=>-)= ", "&+a.W / i q.> Y B 9.w }+M.! 2 B 8 }=b=B=}=%+b=b=x }=b=b=}=C= |&V*}&}&P=E&}&P=2&,-c=p&'-|&c=!=|&P* )-<=^=!-~-L={-]-^-/-%-(-_-:-F=<- ", "u+0.a W < /.J.L.d+;+*+e f e !. s. d+a=a=}=e+I q.q.{.e+C=}=}=C= E&}&`=}&}&E&!=}&!=E&c=[-[-[-}-P*|&P* |-1-G=<=2-3-R=]-4-5-f=6-7-8-9-X=6- ", "!.&+a.a i < _ /.i _ e : : : _ V !.}+ }=}=u.^.d b 2 2 b b 4 q.C=C=5. T*V*0-`=}&E&P=2&!=E&.-p&'-p&c=P*|&P* a-a-8=b-/=c-d-r=I=e-f-;=<=]=g-|=z= ", "h+!.0.a.W a.g+<+L+g+/ _ ( ( ( < W 9 C=u.;.) m=m=3 ) 6$m=;.;.[+%+ E&}&}&}&h-E&i-2&2&E&c=j-}-j-c=}&|&P* k-l-m-n-o-p-c-q-r-s-t-u-==;=v- ", "g+h+!.0.z u+M+!.!.O.h+( < / 0.w+F+$ x 6.;.6$b=b=) ` b=b=6$C 6.P$5. |&}&`=P=}&E&!=h-2&!=|&c=c=|&2&}&T*P* w-x-y-z-A-B-C-D-E-F-G-H->=I-J- ", "g+g+h+!.&+V z W i h+L+V W h+<+w+f+ 5.u.C b=a=6$;.;.Q@}=b=6.{.%+ T*}&P=2&}&E&2&2&`=}&2&P*P*P*P*E&|&P* K-L-M-N-O-F-P-Q-L=R-S-T-u=H-z= ", " M+g+v+F+u+0.V z V <+O.<+c+u+!. M+u.Q@Q@C 4 4 ^.Q@Q@q.%+R E&`=}&i-P=E&`=}&P=}&2&E&|&|&|&E&P* U-V-W-X-r-S-Y-W-K=Z-`-M= ;u=.;+;@; ", " p.M+w+g+h+!.u+&+0.!.g+g+!.h+q. M+x u.e+q.q.e+u.R M+%+ T*E&E&E&E&E&E&E&T*|&E&E&!=!= #;$;M-%;&;*;=;-;Z-Z-J=;;D->;,;';<-); ", " R c+M+w+g+g+h+h+F+F+h+w+5. %+M+%+%+%+%+M+M+p. 2&!=P*P*P*P*P*P*!=2& !;~;-;M-{;];^;/;L=J=Q-(;_;:;W=,;<;[; ", " S <+c+M+M+M+M+M+%+ p.U U 5=I=W-};|;1;2;3;L=L=(;4;5;6;>;7;l- ", " $+S $+ 8;M-9;0;|;a;/;-;L=(;b;:;c;c;f-d;e; ", " :$q.7 7 $ f;f; P*2&!=P* g;h;i; ", " g+f+,.W : _ h+f+q. f; j; k;f; 2&P*P*E&!=}&P=2 D=E& h;l;m;n; ", " C '.) 1 ) ^@f f r.,.M+x f;j;O.O.O.T@ O.O.j; P*D=2 }&!=E&o;p;E&o;D=E& q; r;s;t;t;u;s;R&v;w;l;l;x; ", " C ).2 2 2 2 ; o@f f f h a z f; O.4 U O.O.O.A {.O.j; P=V*2 E&.-E&P*P*P*P*E&P*P*!= y;w;z;A;B;t;t;t;t;t;t;C;D;E;l;w;F; ", " 5 ] 2 2 2 2 2 -./@f f f e /.a z f;j;O.R t.+%T@T@p.U O.O. P*}&Z=|&O.T*2&2&|&E&E&E&V*E& G;H;I;t;t;t;t;u;J;J;t;K;l;l;H;m; ", " % ) 2 2 2 2 2 ) o@|+V V V &+F+a X k;f;j;O. S t.t#L+O.O. P*|&|&}&c=E&V*2 P*c=j-P*D=E&2& g;H;H;L;M;N;t;O;P;P;Q;M;R;H;S;T; ", "5 & -.2 A {.2 2 ^.f+N./@/@: _ a u+V O.T@ S T@O.O. P*c=j-V*}&2&P*!=V*U*}-E&}&P*P* U;V;W;X;P;P;Y;N;Z;P;P;P;`; >.>+> ", "= & Y 2 4 A 2 - }+g =+/@M.: _ W F+V 9 O. H$ O.O. E&}&E&P*c=V*c= -P=P*j-P*E&Z=E& @>#>i;$>%>&>P;P;P;P;P;P;*>=>->t; ", "@ .; 2 2 2 A L.|+e /@~.o@: < a h+V L. j;T@j;f;f; O.T@ P*}&V*!=U*}&c=O.E&2&|&.-P*E&E& ;>#>>>t;,>'>P;)>!>P;~>N;{>N;]> > ", "! / @ {.{.v J.e N.*+M.-+V V / 0.h+V ,. f;f;f;f;f;f; !=P=c=P*V*V*P*c=P*}&E&|&j-p;E& ;>^>/> '>P;N;(>t;t;_>:><>]>[>}> ", "}+i < i *+< e e e z *+_ _ 0.F+h+0.0.;+ f;f;f;f;f;f; E&j-}-D=E&2&}&Z=}&E&|&|&.-E& |>1>2>&>3>P;P;P;P;Z;P;4>s;5>]>6>}> ", "9 a /.( _ _ _ _ : _ a.!.&+u+g+0.a.u+s. f;f;f;f; j; E&E&|&D=j-c=}&Z=}&E&|&j-|&O.P*2& 7>A;8>9>4>P;P;P;Q;N;0>a>5>b>c> ", " 0.W / < ( ( ( ( ( ( i a.V z a.&+F+ y f;f; P*D=d>c=.-P*V*}&E&P*.-c=|&O.E&P*!= e>y;f>g>r;#>h>i>+>r;f> j>k>c> ", " ,.u+!.a i < < < / / /.0.&+a.&+u+h+ j; T@j; !=!=2 P*c=E&V*E&|&c=|&|&c=|&|&O.P* l>m>n>g>o>p> n> f>f>f>q>r>s> ", " g+<+<+M+g+u+0.0.h+M+O.g+&+!.v+ j; j;j; P*P*V*}&V*U*|&|&c=|&c=|&|&c=E&O. t>u>v>f>i> f> w>s;x>y>z> ", " y v+F+g+M+<+<+<+<+w+h+u+F+v+u. 2&T*E&|&E&P*1&|&c=|&|&A>E&O. B>C>D>(>(>E>E>F>G>y>z> ", " u.g+F+u+!.!.!.!.!.F+h+g+v j; p;T*c=}-c=O.O. H>u;t;t;{>I>t;J>K> ", " M+M+w+g+g+g+g+w+w+y y j;j; P*O.O.O. Q%t;t;t;B;L> ", " p.$+M+%+p. s;Q%x; ", " ' 6 T e T 6 2 0-P=h-j% M>N>O>P>Q>R> ", " ' 3 1 1 ) ^@) 2 2 7. > > > > > A {. P=j%S>S>T>P=V* U>P>V>W>X>Y>Z>`> ", " | 1 2 2 2 2 B 2 2 2 2 2 | , {.p. > > $+U 5.{.5. ,T>T>m*m*P=}& .,+,@,#,$,%,$,Y>&,*, ", " 6 3 2 2 2 2 2 2 2 2 2 2 2 F ^. , {.T@O.O.U U O.O.O.O.U {. 1&=,-,-,m*P=}& ;,>,,,',),$,%,$,%,Y>!,~, ", " C ] 2 2 ; 5.-.2 {.-.2 {.> 2 d 9 t#O.O.T@O.O.O.O.O.O.L+ U*{, ,],^,h-}& /,O>(,_,:,<,[,%,$,%,$,Y>Y>}, ", " * C 2 2 d w 2 ].,.6.2 A ; -.F {.J. O.O.T@t.t#T@t#+%T@O.O.U 5. U*=,|,U*1&2&}& .,1,2,3,4,5,6,7,5,%,$,%,[,Y>8,9, ", "$ i 8 2 2 2 B {.,.M.@ {.B 2 d - 5.&+ O.O.t#$+t.t#$+S T@O.O.U p. p;0,m* ,P*P=V* a,V>',b,$,4,5,7,7,<,Y>%,7,7,<,c,d, ", "0 /.@ w x V D N.e o@v 5.{.5.;+V 9 O.O.t#$+t#t#$+S T@O.O.R p. P=1&e,{,}&}& f,V>),b,$,4,$,4,5,5,$,%,g,7,7,h,i,;, ", "}+W < a &+V < z M+L+M+r.( V !.&+z V L. O.T@+%p.$+t#+%O.O.S p.U V*U*m*m*P=Z= j,P>b,$,4,$,4,$,4,$,%,$,k,5,l,m,Y>n, ", "J.a i < _ : W O.O.O.O.<+i < /.W a.&+,. U O.O.S > 5.O.O.O.T@R R U E&o,m*{,V* p,q,r,r,r,4,$,4,s,7,7,t,u,%,Y>$,Y>}, ", "L.a.a W /.< h+O.O.O.O.O.u+i a a.0.u+;+ {.$+t#5.p.w p.+%S p.p.U }&U*m*m*P= v,w,P>x,r,r,r,y,7,7,z,A,Y>B,7,C,D,E, ", "q.u+a.a W i g+O.O.O.O.O.h+a a.0.u+F+y {.A ].O.5.A {.5.p.R U E& ,m*F,!=G,|,P= R>~,H,I,r,J,K,L,M,Y>N,7,7,6,P>O, ", " h+&+V a.a h+O.O.O.O.O.!.V &+!.F+g+ 5.A w ].].{.S U U*],m*G,1&-,T>{, /,;,},+,P,Q,R,S,T,7,Y>U,M> ", " f+h+u+&+0.0.c+O.O.O.M+&+u+F+h+g+g+ $+{.].].5.$+t.U p. }&U*^,{,V,-,m*m*{,V* W,X,w,Y,Z,`, 'Y>.'X, ", " w+g+h+!.u+!.w+M+w+!.F+v+g+g+M+ +%R p.U O.$+$+ 2&q&{,{,m*m*],h-}& 2 +'@'#'$'%'&'*' ", " 5.M+w+g+g+h+h+h+h+g+g+w+w+M+ R O.T@T@U $+ }&U* ,m*{,q&E&!= E& ='v,*'D, ", " <+c+M+M+M+M+M+M+M+M+<+p. U $+R U R }&!= , ,!=E&E&E&E&E&!=V* ", " S L+L+L+<+<+<+L+S R U $+ }&`=}&V*}&V*}&V*}& ", " $+S $+ ", " $ ^@(@^ (@^@$ 2&p. ", " C w+L+c+e e e : M+<+y P$ 5. E& !=|&.-}& ", " ~ ( T { { ^@e e '.{ ).(@+ {.%+C=P$P$:@C=C=5. E&.-E&}& }&2& c=c=c=P*V* ", " ~ w#{ 2 2 2 B + 7 B 2 2 1 ^@0 %+C=}=}=}=}=}=}=C= E&c=E&c=c=}-c=c= c= -}-U*2& ", " C / { 2 2 2 2 2 d Y 2 2 2 2 -.@ $ 5.P$x %+%+%+%+%+%+%+%+%+%+%+P$5.{. E&c= c=c=|&c=c= c=c=j-E&2& ", " * (@B 2 2 2 2 2 2 2 2 2 2 2 2 ^.=+ S L+L+O.T@c+w+w+v v h+F+g+x M+L+T@L+S E&E&E&!= |&0- 1&c=}-o;2& ", "$ i ~ 2 2 -.w -.2 -.2 2 A A 2 2 > &+$ F+a X ; 2 2 %@& F 3 | ;+@@ E&E&!= c=E& 1&|&c=E&P= 2 -'-'-'-'-'2 2 ", "0 i 7 2 2 d d 2 A > 2 w w 2 -.A ,.9 X / & d 2 2 2 2 d 2 2 2 | O.O. O.O.E& |&}-|&}& ;'-'>'>'>'>'>'-',' ", "}+i 0 B 2 2 2 2 Y ;+s.B 2 2 2 d ,.~. a./.= 2 2 -.2 2 2 2 -.2 d $ O.O. c=O.E&2&P=T*c=|&!= 2 2 -'>''')')')'!'>'-',' ", "=+/.@ Z 2 2 2 F u.N.N.q.Y 2 -.Z 5.0.J. a./.^.2 2 {.4 2 F -.{.-.Y 9 |&c= c=E&c=c=}-P*j-E&!= -'>'''~'{'{'{'{']'>'-' ", "~.W / }+].A {.;+r.f f r.;+w ].5.,.V L. a./.0 B 2 d 2 d s.; -.2 F s. E&E&}&|&O.c= 2&|&E&E&E&c=o;2& -'^'/'{'>'('_'{':'<'>'[' ", "q.a.i < W B@B@/ ( _ ( / }'|'0.a.z &+q. 0.i .A B '#9.X h }+- A@].~. c=O.2&|&|&2& 2&|&E&E&c=q&o;2& :'1'{'_'^'^'1'_'{'<'2'3' 4' ", " &+*+B@W$Q.Q.Q.Q.Q.Q.Q.Q.Q._@R$V !. u+a / i + + # h e h ! X =+9 c=|&!= |&2& |& |&P*2& :'^'/'{'_'5'6'{'7'<'2'3' ", " ;+V |'_@`$c#c#L+c+c+c+c+c#l 8'u+f+ !.0.W a.W _ _ _ _ _ _ z F+ }&E&|& |&E&P*!=V* 9'^'0'a'b'b'c'd'e'f'g'5'2 2 h'i'j' ", " h+V k'`$`$8'c#P.c+P.P.R.8'!.v+ h+V h+c+0./.< < i &+M+d+ }&E&E&E&|&E&|&|&|&o;!=}&V* 2 l'm'm'n'n'g'o'p'q'r's't'u'v'i'w',' ", " q.v+&+x'o l l l l l m 8'!.g+y y v+0.!.M+M+g+g+w+M+f+ E&|&|&|&T*E&o;2&V*}& y'z'A'B'C'D'D'D'E'D'D'F'G'G'H'I'J' ", " 5.g+!.u+K'b#8'8'b#F+h+w+u. {.g+F+u+!.g+g+g+u. |&P=!=P*P*P=2&V* L'B'M'N'O'P'Q'R'S'T'T'U'V'W'T'X'Y'2 ", " %+w+g+h+h+h+g+w+%+ R x x 5. V*V*V*V*V* Y'Z'`' ).)+)@)+)#)$)%)&)C'*)I'=)-)2 ", " p.U $+U p. 2 ;)>) ", " $ 0 @ ! }+X . j&E%,)V&')V&))o%w& !)~){)])^)/)()^)_):)<)[) ", " $ & / < < < /.W z J. v&U&s%})|)x&1)2)3)4)5)6)v& 7){)O.8)8)_)9)0)a)b)8)8)c)_) ", " ~ ( _ _ : _ _ _ ( *+a 0.s. v&K%d)1)e)e)f)U&H&x&2)g)h)i)j& |,T* ,|,S>|,G,1&1& b)_)j)b)7)b)k)b)l)l)8)m)b)j)^) ", " >$g+a _ f f f e r.h+t#V W &+q. W%w&3)e),)n),)n)))O&2)x&o)V&h)e%W% V, ,O.T*P=|,G,|,V,1&G,|,0- 8)p)2 2 q)r)])s)t)u)b)b)p)v)^)w) ", " C V $+T@M+z D r.g+T@t.$+!.a V !. ))g)n)e),),)e)6)1)O&2)x&o)})})C&x) F,|,|,|&!=0-|&O.1&F,y)|,T>T>P= 8)k)z)A)B)b)r)C)D)E)1 1 z)v)9)^)]) ", " ^ ).-. U T@M++%@@w ; ; 5.h+a.0.!. F)O&2)e)e),)G)6)6)O&1)x&6&n;3)g)r%H)E%I)j%G,|,}&}&V*|&|&2&I)|,S>1&m*F,}& J)K)L)a)v)s)l)M)C)])^)N)N)O)v)9)P)Q) ", "C ] 2 2 2 2 A 5.A -.2 2 2 2 5.u+a.!.. E%g)6)6)e),)R)S)T)U)U)V)W)n;a&g)B%X)p%],G,E&1&|&c=E&!=Y)Z=-,S>j%G,|,T>{,Z= Z)l)`)Z)/)/)Q)Q)l) ![)O)D).!v)P)9)Q)Z) ", "~ { 2 2 2 2 2 2 2 2 2 2 2 2 > f+a.&+s.+!n;f)))f)@!#!$!%!&!*!=!-!;!a&>!,!X&x)'!9%U*T*O.O.O.P*)!0-F,V,1&!!V,m* ,}& M)M)~!M)Q)M)Q)Q)Q){! !B)D)]!r)/)P)Z)M) ", "& b 2 2 A d 2 2 2 2 ; > 2 -.F p.0.0.;+o)x&H&^!/!5&(!_!:!2 T>'!G,T*|,T>],}& M)M)M)M)Q)Q)Z)Z)Z)|!1!~!2!P)Z)Q)Q)Q)M) ", "& b 2 -.5.> 2 d 2 2 w 5.2 -.; u.0.0.!.3!x&x&x&x&2)4!5!:!6!*!:!7!8!})4)d%h)X)}&2&P=-,{,0,{,T>m*S>V,S>U*1& ,T>],}& M)M)Q)Q)Z)Z)Z)Z)w)9!0!a!b!Z)Z)Q)Q)Q)M) ", "& | 2 2 2 2 d 5.B 2 2 -.2 d > u.0.&+;+V&|)x&x&x&x&-!c!:!|,1&g!U*],m*{,P= M)Q)M)h!h!h!M)/)w)~!|!l)w)/)Z)Z)Z)Z)M) ", "% ~ 2 2 2 2 q.V ^.2 2 2 -.; !.V u+s.,)g)x&x&x&i!j!k!l!!B%d%h)X)I& 0-|, ,],],],|,y)U*T* ,F,m*],}& Z)M)l)l)Z)_)h!])p!()q!q!q!/)/)Z)Z)Z)Q) ", "$ i | Y 9.q.|+f *+A A@2 9.w ;+a.0.F+ E%4)>!O.F;r!x&s!t!S)u!v!>!B%w!O.q%x!+! Y) ,{,],{,V,y)T*}&P={,m*j%2& /)Q)h!Z)])/)^)h!()y!z!q!p!p!/)/)Z)Z) ", " ./ & =+r.f f f r.X 9 s.,.z V u+f+ ]%P&,!m&Y$z%o)o)a&3)>!A!s%F&B!4%F;6%-. }&1&1&y)j%k%T*P=V*0-{,!=}& C!Q)M)w)l)l)()p!D!E! !b!F!q!p!/)Z)Z) ", " $ W ( _ _ z u+*+_ ( /.W W a.&+h+ x&c%>!G!O.6%')3!A!c%r%F;Y$s&h)x!e) Z= E&P*P=V* V*I) ^)])Q)w)w)_)H!I!J! !K!a!F!p!p!w) ", " 0 a / a O.O.O.V < i a a.&+h+s. W%e),!B%x!O.O.O.O.O.O.O.Y&e&$&I&j& V* w)/)L!9)L!!)M!()N!y!K![)y!p!/) ", " X a.z c+O.O.h+W z V !.v+u. ]%e)[&h)d%r%h)h)e&5)5)X)V%I&E% ()p!J)J)H!O!P!Q!R!S!~!L!() ", " ].J.u+g+g+0.0.!.h+f+ W%o)A!z&X)5)h)X&X)$&T!f)W% ()U!J)H!V!M!b!Q!N!F!F!W!X! ", " s.;+f+v u. E%p%x)e&F;e&P&6)F) _)_)[)()L!1!Y!Z!`!_)_) ", " @%8. 8.@%@% ~ ~@%8. @%8. , ", " 8 X ! ! X 8 H H > 8.;.b b ;.` ;.b b ;.8.8.H H , , ", " 9 z W / < < < /.*+0 H H H ~b 2 2 2 b ^.-.2 2 2 d H H H >. , >. ", " ~.W < _ _ _ : _ _ ( /.@ ~H H b 2 2 2 2 2 -.2 2 2 2 2 ; 6$H >. >. ", " ~.W < _ _ h : f e e _ < /.@ 8.D#` 2 2 2 2 2 2 2 2 2 2 2 2 -.[+[+ A ; ; ; F d - ", " 9 a < _ ! X 8 = N.f h X 8 + a 8 6$4 2 2 > 5.2 2 ].-.2 5.A 2 Y w e+ 4 > > ; F d b b b d A ", " V /.( ~.A B 2 B 4 o@= B 2 B C z 8.D#> 2 2 d A 2 > 5.> 2 > d 2 F w :@ F d d d d F | > A w {.].> A ", "8 z < # > 2 -.-.2 2 A Y d ; 2 2 0 . j D#6.2 2 2 2 A U I p.A 2 2 -.4 5.:@{. | d d F F ; > A ].w {. A ", "s.W / 9 2 2 {.5.2 2 2 2 A 5.d d ^.9 I D#[+].Z A 5.P$e+I [+u.5. {.:@i+e+ 4 d F F ; 4 > A ].w {. 3@ ", ",.W / ^.].p.$+$+p.w -.2 w R $+$+$+x e+6$H p :@S p p [+` e+6$6$S x :@p i+:@ > d F F ; 4 > A ].w {.3@ A ", "x !.z U T@O.+%t#t#t#R 5.T@t#t.t.t#+% e+p D#H p i+6$O.$+6$O.S H i+P$6$p :@:@ > d F F ; 4 > A ].w {. A ", "s.0.!.T@O.T@T@T@+%t#T@O.T@+%+%+%+%T@ {.i+p D#:@p :@O.%+6$T@O.p p %+p i+P$e+ > d d F F | > A 6.w ].6. ", "w a.W <+O.O.T@T@T@O.c+w+O.O.T@T@O.O. P$i+p i+P$i+T@i+H %+t#p P$H#i+:@H# > 4 4 F d F F ; > A 6.6.{. p.5. ", " u+W V M+O.O.O.O.c+a.< F+<+T@<+c+ P$:@i+p %+%+i+p p p i+%+$+:@P$P$R > 4 4 4 4 ; F ; 4 4 A A [+p.R 5.{. ", " 9 0.i i a.&+!.0./._ : _ / a.v+8 %+P$:@i+P$$+S $+S S %+:@P$H#%+ > F F 4 ^.^.^.^.6.w e+ 5.{.].]. ", " ;+V 0.g+/._ _ _ _ ( ( i g+v 5.%+H#P$:@:@P$P$P$P$P$x %+$+ A > 4 > > A A ].w {. ", " ;+&+g+M+!.a i i a u+M+v S %+%+%+x x %+%+%+$+S ", " q.u+!.w+M+w+w+M+w+q. S H$t#S S S S t#S ", " {.d+;+f+u.{. S ", " C ^@* .@ X ", " 6 I#_ : _ ( / W a.,. t#p.{.{.R ", " '.e f f N.N.: ( / W a.!.q. q.d+q.[+ $+].Y -.-.F {.S ", " '.|+e f f !.M+w+h+< /.a V F+q. q.^.b 2 d ^.d 2 -.^.e+ t#].d Y Y Y d F {. ", " $ M+L+|+e h+<+M+V a ( / W a.&+h+ d+6.2 2 2 2 -.2 2 2 2 6.P$ p.d d Y d d d d > t. ", " f+h+&+|+|+O.&+w+V 0.a / W z 0.!.f+ , ` e+e+-.2 -.-.2 -.2 -.-.2 d u.C=H K. {.d d Y d F F F > t. ", "%@c+M+g M.! T@+%+%+%O.L+a.i z 0.u+v+ ~H :@q.2 2 ].A 2 w -.> w 2 d 5.%+p ~ {.d d d d F F ; A t. ", "'.|+L+x -+-+*+# ;+L.g+O.&+i a.0.u+h+y H ` :@e+'#2 2 2 w q.].-.2 -.4 u.%+p H p.d d d d F F ; A t. ", "~.!.g+$+-+M./@(@~.$+t#g+i W a.0.u+h+v H ` e+x A F > 5.u.` [+5.A > w x x e+[+ t. d d d F F ; {. ", "! L+L+=+M.M.V T@S t#F+< i a V &+u+h+x ~H p %+u.u.p.e+Q@e+q.q.P$v p.%+P$i+ R ; d d F ; > U ", "E &+r.f f f h *+N.&+g+/ W z 0.&+!.h+x 8.H 6$%+u.[+e+$+S S S S q.P$M+P$:@ d d F ; {.T@ ", "~ W : e e : : : _ / &+W a V &+u+F+g+5. > [+%+u.v t#v q.q.q.P$t#U v M+ O.5.d F ; - p. ", "5 / _ _ _ _ _ ( < / i a.a.0.u+!.h+w+ x S q.e+e+e+e+p.t#%+x R ; 9.Z A U ", " f+a _ ( ( < / / W w+<+u+u+!.h+g+w+ M+R u. p.v U c+ U > ; > ].U ", " M+u+i /./.W &+c+O.g+u+F+h+g+M+ $+c+%+%+%+%+%+%+$+c+c+ S w $+ ", " 9 w+M+w+M+c+L+M+F+u+h+h+g+M+ S L+<+<+<+<+L+L+S t#{.w p.5.t# ", " 9 h+g+g+g+F+u+F+v+g+w+M+p. R t. R t#5.{.p. T@ ", " ;+h+h+h+g+w+w+M+M+ O.U U U O. ", " x $+%+p. ", " $ = & ~.~.q. ", " :$$+t#a /.t#t#+%M+# {.:#:# O.O. ", " ;+g+x g+V i *+~.;+;+a z X :#}'.~:#{. O.).{ O. ", " ~ T { F ^. .h ).3 c F 9 0.0.9 :#+~@~:# O.).{ v ", " 5 '.2 2 2 2 ^.7 2 2 2 2 B q.V 0. :##~.~).:#{. O.] { ) O. ", " ^@3 2 2 2 2 2 B 2 2 2 2 2 F ;+a.,. :##~.~$~:#:#{. O.] { ) O. ", "5 ] 2 2 ; > 2 2 2 2 -.w d 2 -.{.0.&+ :#:#a=] .~B=:#:#{. O.s.).{ ) O. ", "= ` 2 2 ].5.2 -.-.2 -.p.; 2 d w u+0.q. :#:#] { { { { ] ] B=:#:#:#:# O.% { { ] O. ", "& C 2 2 2 -.2 w A 2 2 2 2 -.; {.u+0.L. :#.~}'@~{ ).).).).).).).)..~:# O.] { #~O.O.O. ", " .~ 2 2 2 2 9.L.s.Y 2 2 2 d > u.0.0.;+ :#.~}'|'@~+~] ] ] ] ] ] ] .~.~:# O..~{ { { { { ] O. ", "@ & F 2 2 - v h h s.9.2 B Z {.!.a.&+;+ :#}'|'@~#~@~.~.~.~.~@~.~.~@~+~:# O.B=).{ { ] J.O. ", "0 /.& w q.;+N.f f N.~.q.q.u.,.z V !.s. :#.~}':#.~.~.~@~@~@~@~+~+~#~:# O.~.).).{ { { O. ", "$ a < /./._ : : _ : : /.V 0.W a.&+h+ :#}':#.~@~@~@~@~@~+~+~}'}'}':# O.] ).).+~B@:#O.O. ", " =+W / ( ( _ _ ( i u+w+<+g+z &+!.f+ :#$~.~#~%~+~@~+~+~}'%~K':#:#:# O.~.] ).).).).B=v+O.O.O.O.O. ", " $ 0.W /./ a !.M+<+c+g+&+V &+!.g+ {.:#}'K'@~@~+~#~#~|'C= O.a=.~] ] ] ] ] ] .~+~$~|'O. ", " 9 !.h+a F+c+g+0.a a V u+F+g+u. {.:#}'}'|'K':#C= T@a=+~.~.~.~.~.~+~|':#t# ", " y c+u+V a.z a.0.&+!.v+w+u. {.:#:#:# +%<+|'#~+~#~B@|'O.O. ", " f+v+F+F+F+h+g+w+w+ O.O.O.O.O.T@ ", " x %+x p. ", " $ ~ & .& + ", " C E _ _ _ _ ( < W ! :#:#:# ", " ^@_ D f f e : g < / /.a.s. :#.~.~$~:#:#d+ O. ", " ~ '.{ C @ D T { 3 F 8 a.W V q. K'.~:#] ] ] .~$~}=}={. S ", " 5 ).2 2 2 ; X -.2 2 2 2 A ,.a u+ :#$~}'.~.~] ] ] ] .~$~:#:#:#:# T@~ <+ ", " ] 2 2 2 2 2 d 2 2 2 2 2 2 {.&+V ,. :#.~:#}'.~] ).).).] ] ] .~.~:# T@;+).v ", "5 { 2 2 2 2 2 2 2 2 2 2 2 -.A f+a.!. {.:#}'.~:#.~] ] ] ] ] ] ] .~.~:# <+] ).0 O. ", "~ 3 ; w 2 2 2 -.-.5.d 2 2 -.> v 0.&+s. :#.~|'}'.~.~.~.~.~.~.~.~.~.~.~:# T@d+).).).S O.O. ", "% 3 > {.2 2 F w -.{.-.2 2 d A v 0.&+;+ :#}'.~|'@~.~.~.~.~.~@~+~+~#~}':# $+<+x d+] ).).).).).).] S @@ ", " .; 2 2 2 2 q.L.d 2 2 2 -.; w f+V &+f+ :#}'@~.~.~@~@~@~@~+~}'}'}'}':# C== ).).).).).).).).).~ S ", "& 7 2 2 2 V D s.9.2 2 d A 0.V u+;+ K':#}'#~+~@~+~#~}'%~:#:#:#:# L+d+] ).).).).).).).~ c+@@ ", "= * ^.].u.0.e f h ~.w ].{.v 0.a.&+!.y :#:#b=@~#~|':#:#{. S = ).).).).).~ t# ", "$ W / W /.: : h : _ i z a.a a 0.u+h+ :#)..~}':#:#e+ O.= ).).~ ).).~ L+ ", " ! /.( _ _ 0.M+/._ < / i a V u+F+v+ d+)..~}'K'{. T@).).d+O.d+).).C= ", " $ a.W < V L+<+c+*+/.W z V u+!.g+ :#.~}'K' %+] x T@ %+~ = O. ", " 9 V 0.L+F+a M+<+0.z 0.u+F+g+u. :#.~}':#{. x T@ <+s.%+L+ ", " q.<+w+z z a.w+L+v+!.v+w+p. :#:#:#{. O. T@<+ ", " f+h+F+!.!.w+w+w+w+{. ", " x w+x p. ", " $ 0 & * (@^@C ", " . }+W < _ : : : _ E C y R R R R R p. &~*~=~ ", " 9 a./.( _ /.(@T -+f f _ ^@ j 9.7.9.9.7.- -~;~>~,~'~)~ ", " 9 V i < < ~.A Y B -.).h + | d {.d | b b d 8.{.{. !~~~{~]~^~/~(~_~ ", " u+a / ( ,.- 2 2 2 2 2 ^.F 2 2 w y p.R R R {.{.p. :~<~[~}~|~1~2~3~2 ", " ,.V W < a w 2 2 2 2 2 2 B 2 2 2 2 >. 9.2 9.5 5 9.5 -.9.R R R 4~5~6~7~8~9~0~2~a~i) ", " !.a.W < =+9.2 2 2 2 2 2 2 2 2 2 2 7. ` 2 2 2 c 3 b ].R 5.R b~c~d~e~f~g~h~i~j~o%k~ ", "q.u+a.W < }+9.2 2 F F 2 2 -.d -.2 2 d X A=C c ` %@^. 5.R 3@ R l~m~n~n~o~p~q~r~s~t~g)u~ ", ";+u+a.W < }+- 2 2 {.5.2 2 - w {.4 2 ; b=B=@~@~B=B=i+I p.3@3@R v~w~6~e~7~x~2 y~z~A~K%B~u~ ", "f+u+V a /.i w B 2 -.-.2 B 9 ! A 2 2 C b=B=@~@~B=R@D@5.5.p.3@3@R C~D~E~o~[~F~2 2 w!x!2 G~H~u~ ", ";+!.0.z W < # w F 2 2 9.9 N.e ;+- B 8 X B=A=@~B=%~%~I 3@ R I~J~K~L~M~N~2 $&#&-.R%n%O~A% ", "y F+&+V a i < W L.s.s.=+N.f e N.;+s.0 X B=@~Z$B=R@H e+ p. 5.R P~Q~R~S~T~9~U~V~z%-.4)W~X~Y~B& ", " g+!.&+a.W i < ( < < _ : : : _ a u+$ X B=Z$.~B=%@p b= p.5.p. Z~`~ {.{+{.{s~@{2 Q&#{V%Q&${%{&{ ", " g+h+!.0.z W i / < ( _ _ < z g+c+!. X B=c @~B=` R@I p. *{={={-{;{>{,{-.'{){!{~{+&{{]{^{ ", " w+h+!.0.a.a i /.W a.h+M+M+h+0. X m=` A=A=5 R@ /{({_{:{<{E%X&[{d&d&[{}{|{1{{{ ", " u.w+v+!.&+u+h+w+c+c+w+u+z V 9 [+B=` @~B=Z$:@5.p.p. 2{2 2 i)3{d&u~u~u~u~4{]{5{ ", " p.M+g+h+M+M+w+!.0.a.0.!.s. R R p.e+p. R R &{4{ ", " w+M+w+g+F+F+h+v+f+ ", " p.U %+x ", " W$ ", " 0 @ ! }+9 Q@b=R$ ", " 0 i < < < / i z s. F 7. 7. 5 R@D#Y R U ", " & < _ : : : _ _ < W J. {.d 9.8.9.9.8.5 W$H p.w 5.{.T@ ", " % ( < N.h f f : /.i /.W L. $ $ R@ 5.R S {.4 {.].d ", " $ / W r.N.*+N.h r.r.*+V a a. 9.8. W$^.8. R O.R ].; ; {.; d > U ", " & W &+N.M.f r.*+f f f *+v+L.6{7{ R t.5.> d -.A w -.d F A t. ", " W / e *+@ g M.M.e o@=+z W 6{7{ 5 y R $+].F d -.F {.> d ; 4 > 5. ", "6{6{ ;+< f M./@# ! ! ! & /@e < 5.u. {.. u.R T@p.> -.-.d -.].R A A w w ].{. ", "7{7{ f+/ f D o@! J.,.! /@f : / 0.&+ {.5.R T@$+w ; d d ; > ].5.A F ; ; | {.$+ ", " a z V |+o@D |+|+D *+V *+a &+&+ 9.R U 5.{.{.{.{.{.R U w d F d > T@ ", " 8{e+V i f f r.*+*+r.f ( V f+5.d+ 7.R $+{.A 4 ; d > ].F -.d d ].$+ ", " 6{6{ 0.< /.W W f f r.W W a.=+6{6{8{ 7.p. O.p.-.2 2 2 > A d -.; 5.t. ", " 8{7{ d+/./ W a V V W i i W V 6{8{ 5 7.5.R T@w -.-.F A F -.].U O. ", " ;+w+w+h+F+h+g+w+g+F+!. 5 9.9.8. {.p.R $+> b A 4 -.{.S ", " u.V W i W a 0.g+R 9.w w {.{. R R A > > R T@ ", " q.L.;+;+q. T@5.{.S O. ", " ", " ", " %@T e T { , W$ W$ ", " 7.'#2 2 ) ~ 3 2 2 2 7. T@O.O.O. A=R@ W$ H k ", " 2 2 2 2 2 B 2 2 2 2 2 ; O.%+Q@Q@%+O. %~S@ W$ W$R@ ", " 6 3 2 -.; 2 2 B 2 2 ; -.2 d ^. O.6$Z$Z$6$O. 9.5 R$S@ 2 5 ", " C ~ 2 2 4 p.2 -.5.-.2 5.> 2 d 9 O.Z$Z$Z$Z$O. >% 9.5 -% ", " * C 2 2 2 2 B {.V 9 B 2 2 -.; {.J. O.6$Z$Z$6$O. >% >% >% ", "$ i 8 B 2 2 Z |+M.o@e+Z 2 d > u.&+$ O.%+Z$Z$%+O. >%b= >%{.X I ", "0 /.# q.{. x *+f f M.N.;+ 5.p.!.V 9 %%>%$%$%$%>%>%$% B=X = >%].~ >%X X ", "}+W < W V *+: f : : : e _ a &+V z 0.L. Z$Z$>% >%$%$%>% >%Z$Z$ F+^.{ C T >%{.^@| ).).B=b= ", "J.a i / w+M+F+z < _ / a.h+M+M+a a.&+;+ 6$6$ >%$%>%-% 6$6$ a.% X B=& = { ^.] ` 7 % $~~.B=s. ", "L.V a W !.g+c+O.<+w+<+O.c+w+h+V 0.u+;+ %%$%$% @@%% :@` 7 = + ~.L.}=x'~.X 0 = = = Q@ ", "q.u+V a i i u+<+O.L+O.L+F+z z &+!.h+s. >%$%$%$%>%>% i+X $~= = ~ 7 ).).).Z$~ $~B=$~:@ ", " h+u+V u+M+O.M+u+z u+M+O.c+h+!.h+g+ $%$%$%&%>%>%>%%% a.).^@% $~~.a=b=a=a=J.~.% % = d+ ", " f+h+!.c+<+h+V a.V V 0.h+<+L+v+g+g+ >%>%&%>%>%>%-%-% b=b=0 = ~ ^@] ~ ~ ~ ~ = + L.v+b= ", " w+g+g+h+u+u+!.!.!.F+h+g+w+g+M+ Z$6$Z$6$ b=F+i+a=X X X X X b=J.P$0. ", " 5.M+w+g+g+g+g+g+g+g+w+w+w+M+ Z$6$Z$6$ b=b=P$u.d+:@b=d+ ", " <+c+M+M+M+M+M+M+M+M+<+R -%@@-%@@ ", " S L+L+L+<+<+<+L+S ", " $+S $+ ", " 6 2%/@E ^@~ $ T@O.O.O.O.O. ", " ' ).g e { 1 1 ) ] . O.O. O. > - - > p. ", " , B 2 2 4 C 2 2 2 2 2 = a.0 x Q@Q@%+ O.- > ].{.5.5.{. O. ", " '#2 2 2 2 2 2 2 2 2 2 9.d+V 9 6$Z$Z$6$ O.- A 9.&% 5. O. ", " 7.2 2 2 2 -.2 2 2 -.-.2 d {.&+0.$ Z$Z$Z$Z$ O. A {. A@A@A@7.>., O. ", " 3 2 2 A ; ; 2 2 {.5.d ; {.F+V ,. 6$Z$Z$6$ A@A@A@A@ >., , U ", "5 3 2 2 w L.q.B 2 -.; > > 5.u+V !. Q@Q@ O. 7.A@A@A@A@&%>., O. ", "= b 2 2 F u.h N.q.- B -.> {.v a.0.!.q. 7.7.Z$Z$7.7. O. {. >.7.A@A@ &%>. 5. O. ", "& ^.F x r.f f N.,.u. p.f+V a.&+!.;+ Z$ 9.7.7.K. Z$ O. 5.K.>.>.7.7.&%O. O. ", " .# ;+!.N.e : _ _ _ / W a a z 0.u+!.f+ Z$Z$6$ 7.7.K. 6$Z$Z$ O. 5.&%, >.>.>.O.O. >%p.{.O. ", "@ / ( _ _ _ _ ( ( < / /.W a V &+!.h+v 6$6$ 7.7.7. 6$6$ O. , , , , &%&%%% O. ", "0 W z W / < ( < / /.W W z V &+!.F+g+5. $%$% @@ O. {. , $%&%%% O. ", " V M+L+<+w+F+0.z a a z V &+!.F+h+w+ $%&%>%>% 5. %%&% U ", " ,.&+!.g+M+L+O.L+c+w+g+g+w+h+v+g+w+ $%>%$%>% T@ O. ", " F+0.a.V 0.u+g+M+<+O.O.L+g+g+M+ $%>%$%>% O. {. >% O. ", " q.g+F+!.u+u+u+!.h+w+w+w+w+c+p. $%>%$%>% O. {. R O. ", " 5.M+g+g+g+g+g+w+w+w+M+<+R -%-%@@-%@@@@ O.R {.{.{. U O. ", " $+<+c+c+c+c+<+<+S O.O.O.O.O.O. ", " p.$+>$$+ ", " . 9 }+# }++ 3@3@ ", " . ! &@/.< < < < /. . 3@3@ y p.5. ", " 9 z /.< _ _ : : _ _ ( /.0 O.3@3@O. $ 8 8 y :$ ", " 9 a./.( : _ h : f f e : < /.= O.O.O.O. O. $ { | $ ", " V i ( ( ! X 8 = (@f D @ 8 = .$ O.O.O. O.h h O. O.O.O. 9{7.%%$% >%-% ", " J.a < < L.> B 2 2 F & + F 2 2 ) @ O.O.O.O.O.O.O.O.O.O.O.O.O.O. ;%$% >%-% ", " 0.i ( ~.Z 2 2 2 2 2 4 > 2 2 2 2 C $ O.O.O.$+O.O.O.S@S@O.O.O.$+O.O.O. >%>% >%>%-% ", "9 a./.i w 2 2 2 2 2 2 2 2 2 -.2 2 d 8 O.$+O.$+O.O.O.O.$+O.$+O. {.5.5. @@@@-%-% ", "L.z / a - 2 2 w w 2 2 2 2 > -.2 Y 9 O. O.$+O.$+$+O.$+O. O. $ { { C y R ", ",.a./.# ; 2 2 A A 2 2 -.d d > 2 2 d X O. O.$+$+O. O. %@%@3 3 8 y p.@@ ", "L.a.&@&@> 2 2 2 2 2 2 4 {.2 2 2 2 4 s. O.O. %@5 %@1 >. %@$ :$@@:$ ", "q.x'%~%~Q@A@2 2 2 2 B 9 |+A 2 2 '#[+Q@ O.O. $ %@1 7. $ @@-% ", " b#k'R$R$[+A@2 2 Y [+r.f J.].d A K' %% 5 9{ -%-%-% ", " :#8'`$R$R$a=0 0 @ N.e : _ B@k'`$`$ $ >%-%-%$% ", " ].c#`$R$R$%~}'/ _ : _ _ ( }'R$P. >% >%-%-%$% ", " e+c#k'c#<+x'/ ( ( ( ( / |'M+u. -% >%-% ", " u.v+x'h+<+w+!.V a.&+g+M+u. >%>%-% ", " f+!.u+v+w+w+M+w+g+ >%>%$% ", " u.;+f+;+y ", " $ = (@^ (@^@$ U p. ", " $ * ( _ : e e : _ ^ 7 U t. t.t.t. ", " 0 / ( E '.'.T e f D E E = O.O.O.O. q.%+S S t.t. t. R ", " 0 /.< = d B 2 B %@o@7 B 2 { 7 O.O.O.O.O.O.O. d+C=%+S t. ", " $ &@< + B 2 2 2 2 2 > B 2 2 2 ) > O.C=m=m=m=C=O.O.O. [+Q@d+x %+ t. ", " }+/.W 4 2 2 2 2 2 2 2 2 2 2 2 2 7 m=O.2 m=m=O.O.O. 0{ Q@Q@d+x ", "$ a.< @ Y 2 2 A ; 2 2 2 2 ; 4 2 2 4 $ Z$Z$Z$Z$Z$Z$O.O.O. ~a{b{w Q@d+x x U U @@ U U ", "9 a / + Y 2 2 5.A 2 2 - -.].{.2 2 4 9 Z$6$`$Z$Z$T@O.O. ~ ~8{8{ 5.U @@U U U U U x P$P$u.e+ ", "~.a / @ F 2 2 2 2 2 B u.^.2 2 2 B > ~. 6$`$Z$m=m=e+L+O. ~^.A R U R d+q.Q@Q@Q@[+ ", ",.z /.W 6.2 2 2 2 B {.r.}+- 2 2 Y w J. 6$6$6$5.T@O. ^.^.^.^.^.8 3@ p. [+6.6.6. ", "L.V W / # ].9.F > u.*+f D ;+].9. L.=+ Z$Z$>%>%>%>%>%Q@Q@6{ O. 6.6$6$6$6$Q@p.R c{5 $ A ^.A ", "q.&+a i < W =+~.a.N.e : : _ a.L.,.a.9 Z$6$>%6{6{-%6{6{6{6{6{>% [+Q@Q@e+i+ p.R p.p.R R {.c{c{%@{ { ` ", " F+V a i < _ ( _ : _ _ _ _ ( / W 0. m=m=>%$%$%-%6{6{6{>%6{6{>% e+:@ p. p.p.p.5.[+6.$ c{%@{ $ ", " f+u+V a i /.w+h+( ( < ( a M+a.a.,. >%$%6{6{$%>%6{>% 5.5. 5.5.5.e+I [+6. d{%@ ", " g+u+V z W &+O.h+/ / z <+w+V !. Z$Z$>%>%>%-%-%-%>%6{6{>% 5.5.5. 5.e+[+6.6.A ", " y g+!.0.V a u+O.v+0.<+w+0.F+q. Z$Z$>%6{6{6{6{6{6{6{$%>% {.{.{.{.{.{. e+I [+6.6. ", " 5.w+h+!.&+V h+O.L+w+u+v+u. m=m=>%$%$%$%>%$%>%$%>% {.{.{.{.{. {.I I [+[+ ", " w+w+g+h+F+w+M+g+g+ {.{.{.{.I I I ", " p.%+%+x p. {.{.{. ", " >.7.d '.-+{ >. ", " A@2 2 2 -.F 2 2 2 2 Y 6 ", " A@2 2 2 2 2 2 2 2 -.2 2 O.O.O.O.O. T 5 x# ", " ' 2 2 A {.2 F ].2 d -.2 4 ^. O.O.O.O.O.O.O. 5 x# -+x# T 6 ", " 5 ` 2 2 d ; B q.,.> 2 d 2 -.Z d+$ O.O.O.C=m=m=m=C=T@ T -+5 T T f f 2%2%T f T ", " & A 2 2 2 - p.r.M.}+w Y 2 F A u.=+ O.O.6$m=m=2 O.m= K.f f f f f f f f f -+ K. ", "$ /.X x r.M.M.M.*+v 5. p.!.0.$ O.O.6$Z$Z$Z$Z$Z$Z$ T f f f f f f f f 2%%@%@ ", "0 i /.0.u+a : e : : : e < a.u+0.z 0.9 O.T@Z$Z$`$6$Z$ %@x#-+f f <+f f M+e e T ", "}+W / < _ _ _ _ ( ( ( < < < a a.a.&+L. e+m=m=Z$`$6$ K.6 e : : !.f f V _ ( I#6 6 6 ", "~.z W w+g+/.< < < / / / i 0.<+w+0.u+;+ 5.6$6$6$ K.x#-+e _ < < _ e f : / }'/ 2%6 K. ", "L.0.z v+O.<+h+V a a a.!.M+O.<+F+u+F+;+ Q@Q@ k;k;Z$Z$ .~}'}'O.: f O./ }'+~K. ", "q.!.0.a.&+M+O.O.O.O.O.O.L+w+u+u+F+v+y k; k;6$Z$ 6 ^@/ / ( O.O.: ( / w#%@ ", " g+!.&+0.V &+h+g+w+g+h+u+u+F+h+v+w+ k; k; k;m=m= /@_ _ : f f f : /@: 6 ", " f+g+h+F+!.u+&+&+&+u+!.h+v+g+g+g+w+ k; k; k;k; x#f T x#T f f 2%x#%@%@-+ ", " M+w+g+g+v+h+h+v+g+g+g+w+w+w+c+ k; k;k;Z$Z$ M.6 %@ -+-+ 6 6 ", " 5.c+M+M+w+w+w+w+w+M+M+M+M+c+ k;k; k;Z$Z$ x# 2%2% %@ ", " p.L+<+<+<+<+<+c+c+c+<+L+R k;k;k;k;k;k;k;k;k;m=m= 6 6 ", " O.O.L+L+L+L+O.t# ", " S R ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "}; valknut-0.4.9/valknut/icons/find.png0000664000076400007640000000173311126705363015603 0ustar ejsejsPNG  IHDRabKGD pHYs  tIME 0JhIDATxm[h[usrnI&mfu|qsy { :/xэ)">:D>`LƦtn ,MN'Ysr=PdǏ>O q/gOGȚ븗j}UǝÇ_mzlen!OBO<9])(vANR$I%1հsϏJ@m㺪Xs^TiF J)_ٵ|w#ܡҦK9(x3H'bZc!rBzzc;v!‰j@"! 0FE,AEzbp(d (eXU iQFDJ)jWK"C|#l0ׯ_D56ZmBg^o>3]p%-i-^q}Y`Sٻ;Lkpg z,-IENDB`valknut-0.4.9/valknut/icons/spy.png0000664000076400007640000000407511126705363015500 0ustar ejsejsPNG  IHDR szzgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxYlTƿsνsggƞn46ĄvJhKAPQ(ET} 5ZC.SҗT * &xǞ.g_Ԉԇvߜ9wΧ3|ȑ#q#<ϛy͓/m<Æ=R)777}ҥ PiNq|vbѝ񡾾T*yuEcurz0-|{ǣ=]hʑ;YӚ0.JfBZD/;!w#N#1?>"fm. /"f3i]o6 ul2눕"ZzgsWk-#GF%|jo|юםonn[E B 2D]wwTNzeS4Nv&ǡ%\e8 ryk6,P=خ5BN %a8 E`d`!LX1:c?"ځl~O=nPYCP`P%`0> ^pn56{Z"Ǐq>8P#Yxw  ˆ`?p !uJ;\RKkcF%b@ܡ{D]1ljg(7RPX/5 mU RuTكXɧe 1PچRJkHGm4+ 2 9=J'/vFV}}"Ap(Vg hŰtї >/B!H Xꒁ4QH[#+ bx4H %naCVJ,uqM9{`C_Y_-4#Pm,BX8[ulX [ v+QVLoUFPc`S  ^=GQ 8Q G@F"!FIۂG9qfW"htOl N,EWCa4Ts&z5H3+s $lcӆː-,H %p2eӵ(۴+>>A`hjc ¹%(Tgąr௓s)kK!ըML2MA.\_֪Nؼ)zfL)9ʃ.Oocyd6)|+iI+`B![),C,5ˡ}S0,P5 w}2]\sWd$_/z,1>ˌۻ74 vԉzIȪ`?,˺#vh4%b}N!Rfp8|FCCѮ۾FiImj&9zFz`4B=Ud Z> ܣt=}SMض"YR&Rͅ.|p "ia=19Xd 1J)/E"4 m&*G #p~,& 37RD(D 0bw}ig}IN Ma8&iLJɢ GzA"+B}hXX3T4M`C?yTS tDZq:Lڐ: s]AK LFTtyvn6`&;4*ʇȬ&Hee!D:ؤs}w -!$ K6)b`=VXcRGuιd͍S~y!'ZUٚZa3Y[ی)N`+BPYPAʀzIENDB`valknut-0.4.9/valknut/icons/filetype-unknown.png0000664000076400007640000000043211126705363020174 0ustar ejsejsPNG  IHDR7 pHYs  gAMA|Q cHRMz%u0`:o_FIDATx}A0 I$|Wq@jUj9Jr4 ,':-UO/F,e!(c\K1ۄ.X!'A!P klDe*PXH0ۺFďiPƢjZ(y3Cҹ\Ϸԛ!M L6/16mHPl ,]<]mܙ-^f<]~ 2q0vrB9ZhCW) E̬~z.}cLQׂ`gu,!ӛ1b]lP4lh;3N= )znldz=t@)!{ `ߎZº,*t#*AHā-eEWpߚ?/-p!;(ׅ=NߦddɈŤyו(:@YyǨ_ȀHta\msmQLU4*>v#uo}uh8?b߼_ q_9YQׯ v V_Yt?FEĢʛ/?  ??I d˗@'108:7@  &6V/L  ~`)_GRW[o?@C/ëtD,$0# 0@t oy0X(Á @/T~p)qn}fQUF  @~s2:O f/_ @sGt`e4{sßOXA?++fv1| r< : 21 A{! h4y؅N\g`xà wcxó><|{!#.c3d*Ѐ1ǯ ~gJ8l$.ƿs/by'*?P 3w0 70&_0>y;܀\4$8} 7`}H߿~,3#@U4733 D (yp{S3nv&`S_7d C0gdeamIENDB`valknut-0.4.9/valknut/icons/globe.png0000664000076400007640000000162611126705363015754 0ustar ejsejsPNG  IHDRagAMA7MIDATxmoSusshvm)ܧı!.#!1~dWx%\w&^x 71xED ͸Vڍڞ~F A{Ϡ81>}N$l0Wk~vbv !$g ?,=̋Zt^<=͜"W\.UKbru@BCS>0_vO`-5ZDuKL߉2N7{=#]4J 0Q-]wtu ym#l$-4'G vxjAUU 4[TtG( z:Se@Bu"-h92`Z6Z<n{Gˇǧ.19qKè&-u1AЯ1Ķ!cz>\Yj q1i~=^&Ƈur!*٢*6-DžX$b6.]՛;@o',TbVYTzk70YHoʃ?2[Jh(Ca:mU?Vy}Vo}2z ^͍*( .ev|,Y|JP}=gN)d(.խ +.`4-8&ds2@˪&Kd*3@sN?apPG0ãzwڵ#})FqEF4`p_OW x2£wƓuޫU23@_x pVIENDB`valknut-0.4.9/valknut/icons/filetype-application.png0000664000076400007640000000173211126705363021004 0ustar ejsejsPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<lIDATx]S]Li32LePBT,q`mAc4`L`mvOAT$bPKc`Km❊2͝|3s/,~ @4TTv7'9Q 66^zBr *W.u6r(*T*ϖ@Q|7Nn|5W ;f=p*V* bC&##FFn!lZnT%Nر/ذaXE0Je1@'LY08lz:5"UfIػw#az`Cqd24\54Ek92?654,糁@[drqP yU,AUVnk3PRAxլz.zw trZMb5Yn8Ll}: JK?-E1hLNgw}a$DqG$4Ht4*dD}<_رuu|eQ ߛv| 2LEZ2E8NΆG^v'Y9OR(^ ZC@rؼy-e2ovz, Kv=B{x6V9&۹$@ǐG9055X~::BR011DHYve(a%$Iѕ(b3c 00HOLK"Fԭ\VYglUBW[x2DoG}bd:=MD"ѥ2BQh4(:߬V0%Bᵹ1eJ.^< Fw=c ϖI.}_<0UOIENDB`valknut-0.4.9/valknut/icons/download.png0000664000076400007640000000143211126705363016466 0ustar ejsejsPNG  IHDRasRGBbKGD pHYs tIME  27phmIDAT8ˍMh\Uy/L2Lj:E Z Ə.EQqt@`iII Fc[10hMdf{3>$l=wr*f$f:eh4Ӆ]Y]Z/{ycZ8̯?v6h`qL{8گ"Ct=# w<͡>mI7_GhXiXf~qmۼGiɨQ{DlAfV;j# Q2 ũW,~z|8`Sbs]WC10M6ū@ w8sas#hq5jȴ ="8IENDB`valknut-0.4.9/valknut/icons/users_22x22.png0000664000076400007640000000310511126705363016656 0ustar ejsejsPNG  IHDRĴl;gAMA7bKGD pHYsHHFk>IDATxڅ[lW=g>;>I8ΥI^ M<@%D P[Ux*HH-H $^H(iSB&%m\'q؎}.933{$J,i-}֯i&&&ڐMl%t[ǖ2hn_\nDMceP( '&&8y$l#cwpgl+(ܜ~ٟ:WZ|qo֚Ç#14F|tK]|G %䷎yt _>aɃY@# [ lxxͻvc6HK @+r;ߺ0g~sb -D:BF`w:C#%-j< . 9?5 ^7R?0aԖl0>nMWc|f'OFT`dq^}jkin4:u5cXC-/y7_ҽv?oOws0;+8sd.AX\@18>veK}XG&9> CݖѮMX {1 og,squ +Z]+ ޘP;QI&GvR5˼;X! /^DQc ~*UwaN)㬳eSERvB ۲X^e}IA?w19W+`UO/cݒj;OऊJJu%Z{$4D K?gStpiúmı@FPS"Qq䉾9'HnI!L9݀ [`;`EaeK,*R/^V/.*l+®o o$ZǾ !Њ!puj,?%֎,+ ql?:1۝•XmmőV˰0ϟŋgJ!m`~ 7%:2%m +e|uzn4Kz@YSIiVa%ǘZ: a;`aMt]( /6*tEXtSoftwareAdobe ImageReadyqe<IENDB`valknut-0.4.9/valknut/icons/icon_24x24.png0000664000076400007640000000346710523776621016471 0ustar ejsejsPNG  IHDRw=bKGD pHYs  ~tIME"ȆIDATxu[lWs.Ď8'/0iA URZR!$@%\H"TM)ߜ~{v0?Y\]mr=3r4Ѥ8-)ةBJ2Z=yϳJlWvofutʶ76_}k? ˻ptJ>7nDzl;3lC›]~߭z="wҐDKt..hSmf]H`V ?4gL/eEz<,_) `8Ρ" A+r۝۝=U`b*__ϗ,,.k- t7,cZ'`[NdFesk5X+1l]n1^+Tl 6VL'o me8Q09#ItlX\ XZ0lGڦlVQ 8 ّ(3ݷD_g`aY @fA'9wc 8.sO\~W,{KH42"IŢ{$K=iJ22lSJ!OޯԖeoYBțRJ_Ja7"%{ JZW Ѭ92`9SDUPOKV@J !oZ^ڽ퉍.wch!^}0%H&dRlD2P3mÝ|;<]AJJ|To˖ y[8MR>L BtI&4}@Aaj!O=Sec5@H-K\%ygN8T27&o-з7NSx$T=Tl3 WVmϓwu)=1uz8=WR?E_=S$jKڏ 4Hmz7eĞ?ڐn̺9wmF/zIkUq-C6$]H8dM1ak-tύgs̯[/=Z0c+r{N'D[t'@+M"a(f 96[튯0//ӋyZ(f|j,?YO==SH"*rHԪ=ٮU۳9y磑Mr+,vz!Gc.Q PJ:n5" 6Nx9Rn?{xW%{pq#)^m(mT0/$l4q-G?m7B/IENDB`valknut-0.4.9/valknut/icons/users.png0000664000076400007640000000177111126705363016026 0ustar ejsejsPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb?% az{^Ae3~=G6Ư?۷?MF3Xv-A_xgA ^bl6_30|-`b Ph|KXV񳧟Vھ1˩@m_/@MoZ ۸?_`MYd7 Q~}d Ûg`cIf`{o8l4'z׿U< ,Mu'߿1{{AG @z_?0%77+'+?9S#߫r{n_Ox.cx3/3Vw 1Ǐ ;oxǟ0A2 4;#% / *w# #4?1tϧ{[^ nf>vv^ŧq00(Jq0|{Ɲ \< L ^[@,޿bz8y~1<{M,97220%ĴJUb~MCGoLo>eyHLA \B ~5}OF ˷]֟|TH'_S9X|d`fho &(cޛ#?a`؄,TMȿG1; @2Hd(u13d, ;޾_# MR@,lPC0y209beڟIENDB`valknut-0.4.9/valknut/icons/editdelete.png0000664000076400007640000000157411126705363016776 0ustar ejsejsPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb3? Ǐ fx#ӟŃ [73j[SM ?uO egg? FFFE L$$EuEUwC8 Xgb663zl>~X߿"t?H-@auL@WMb勏 w>f``cCL@auv&7àk00?dx9++éGjb`y? _c`*b`ݻ-Vfff6B-;~`Wo2Nb`߻Som3&1i` #\ @$c`9Q;wXd->YDԓ@,0& .O3دnf`xᷖû 5|a&&p4@0YX8b`xo;P3#,! B/œ;+^dkd[ aWm@qrAmG rdo~E&3|^k,| ̯^120z ^0sb`tc/+~2|Xkz?^abknA>`)V ï^ +J OuN>dj6?4gs531|LP`^nJxIENDB`valknut-0.4.9/valknut/icons/ball_red.png0000664000076400007640000000101611126705363016421 0ustar ejsejsPNG  IHDR w&sRGBbKGD pHYs B(xtIME P=IDATM1Ka] $`Xh'i .-djA_A;t3Dh(dB&5ܙ;ӳQUEV#VL Y @T}w%cNV_zA u~nYnZ?;28"a4[[SXa=F+xgLng>4(GG_z᩽M)rJHY)p*1G=];_:IW > Cp"{i(UPJst\=.^~'=݃\ODbpQk-RJ(DJHP~\S`yR"{z[ٿ+GkKuԣɃ=]o*V dbGl\V"r FKtR !@RHၵ8kY)d-sn4TRaA͢O=0a4Rk\VqA6{R^/PmYcR vazlo4q=lI| =!nF?pVc`h#s0^ƳgV- ŎR!OeΪy1Dp:>& jWt*eųH$O&ka**xGP/t~ pԊqz.L{~tk-J eiq#.^9N-F2ΑiK9`0 ^ë`( hcE?:Sqhz>)3: 4,n #Ifpq2(q,W2AHr\;4orY 0`;l87fQE|/(ߝ-a'mh63@r4,DqiM^(Z-[!- qM2mA5,hN- (./S6ݵL9+ڻ՗NO͚(T ȌArPg,I[gŞЀw <41c4nhu{4βp$ǃ$NK;idqT-1am 74Ti$e,2-߽__ ]IENDB`valknut-0.4.9/valknut/icons/folder_blue.png0000664000076400007640000000102011126705363017132 0ustar ejsejsPNG  IHDRasRGBbKGD pHYs  tIME  **_jIDAT8˥kA?ޅ B24` lrOƴ 6vISpA "Z)6;\6 7w==1uro)qzRX[5]3t9Co\o/)k-Bkm=6\VխPp"02H^c<`L14vom>| Mh0~q~Ƃ(vn8?I׎hOieHf)/lG{n$ĉ;Ewрnc M/Ppa8dr2WP/6/>&( nQpR- 'J!Nq9xݷPod~=5Z>=q R5cz_R3IENDB`valknut-0.4.9/valknut/icons/configure.png0000664000076400007640000000203711126705363016642 0ustar ejsejsPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbY --_턦}ųg&~}222LMǏ_ ~adQ 7WW[E`xAggLuu50{υ̻_Z͛XYky{j~NKEE@bfx=×o=93}gx |54DD}``exÇ/ w$O1r 1& A((9: I 14˗/@ ?999yy4~BHL0AD$D}dexm_L/@ʲ[?}ؿ/ܦQ _ L?Xra@1kk[ǿ^`GC_>*gkƗ€g`diʑ3 l322  ¿ r7NQL[}0G_f`} ȸ ^`6i9[03gx#KDpzZh-N{/ 0{~ax`a&IENDB`valknut-0.4.9/valknut/icons/flag_latvia.png0000664000076400007640000000034111126705363017126 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  80tEXtCommentCreated with The GIMPd%n8IDAT8c\,N`ԲQW-3x3׮/FQFet%aIENDB`valknut-0.4.9/valknut/icons/down.png0000664000076400007640000000030311126705363015622 0ustar ejsejsPNG  IHDRV%sRGBbKGD pHYs  tIME #: hCIDAT(c`0I#`FLՌf|q#Q|F#ԅ'i< Q 4IENDB`valknut-0.4.9/valknut/icons/ssl_yes.png0000664000076400007640000000135611126705363016345 0ustar ejsejsPNG  IHDRabKGD pHYs  ~tIME $84Fe{IDATx}MHTQ81IR*CPw)DZjpn (E\Xʍ"4;!Mgq8ӌSgu=\ιuo#mmᇭ͏Ȳf\zrTw^áDZq(*# ɟZ&hVBuEέJyi3 iLuNWs$uUxv `57 'ՑPc(p"D$ nXAT)y {ˆP_ <J܋mǀP- qŝ;_~ʀ@1Džڐ8ʅfps0 * Kpp!93@`5 *VEXp@5lLl4m-(``X12I#2l0ٴ̦:pg*V7mp)āݹ[IENDB`valknut-0.4.9/valknut/icons/back.png0000664000076400007640000000032211126705363015554 0ustar ejsejsPNG  IHDRsO/sRGBbKGD pHYs  tIME %+RIDAT(c`ULhaM3L Lڌf)Q]DH.`d LF逰LH@1ˆ fI@IENDB`valknut-0.4.9/valknut/icons/find_32x32.png0000664000076400007640000000407411126705363016445 0ustar ejsejsPNG  IHDR szzbKGD pHYs  tIME>IDATxڥ{lǿ3;{?#DqE䠈H|U ibdG DHH TP<"9&JI)Gh(U]G䀠GM@LZ`g>cvfw87LF;;|~6jkRG̐2 JJVK>7HJU[7<j|6RX_Bea沠PĨ9QkڙGlz≚-N~҉ޞ틒 --ǶxT<& :(AJ)% EvBfR+W.I~JX?oݶ%K8̛(: ]i  T5 r9XT2jղvh9ad~zh%f2y|&C +c(/AT; f|+k_?t" !\Q8}pGbwrFpDC0G0GY0v, h)%Z9n$0 Gz9 靆!TT͞0vf~Dd 8eLfG)5wϔdsn$1L!Pe#J(N,G@4z~0]u1̀xiRԩy[C0R,#s`gy3A)FV|MӊVJ)a f 0]i04 !Mz OF}7 .lF&"@M5Q4Mw]#PJAz.G$1FIXBbp*ʊ Ə%r 堏F )%{9+uq?Y5XV t=N)t]ǟRpҗ;?/  3YRW #?˒G|sC@{J+1(M-6G_;Y҄Iu L~hK\)\))w=rTWW5@K#144 ˇBIUX*p#[ض[Cĩ*U#rv<>qx7ID,!c3\/k~n׵>cT8Ƣmy~2-Ր!VּpZ"}Љsp}`OJiȨX%Ėygwdx 3ke ļNhwUAAXY޲ 0xm#߲ t0b`GǀOh 2jE,aIENDB`valknut-0.4.9/valknut/icons/next.png0000664000076400007640000000157711131616063015641 0ustar ejsejsPNG  IHDRagAMA a pHYs B(x!IDAT8]_h[eݛ{onfkg*+v8ل0&Ô| A):An!hHmemIͽ7>tz<m]S=~\wFc>ba$Y.6%p#F~} 5,_'+j3, pOѷoWGQs} Mpq*ǫo^80P{ѣF r:5f Kdk;Ww\=MAdAWֈA{:bͧPi4@n279pN:gyMlRd5Mip('ɥwY-Cv,C+Ua2Ydn4DJJV5f+|ťP0@] hjbaxP(I %x;n|N~8/^ߤfh t'yfyEFАl *LfR7sW! v@q|_3G7/竫eBPMqV. %$ҴFt–"wN}۹*!K6$aKqR(!N/ {Gdpgg nO`K(XRzp0٣g>xmǮVS"dH!X/ȮVH_T}x'v!7^Gω` J}q |{DTIENDB`valknut-0.4.9/valknut/icons/up.png0000664000076400007640000000030411126705363015300 0ustar ejsejsPNG  IHDRV%sRGBbKGD pHYs  tIME ".wTDIDAT(c`<#1qc$Fl0TtI#hD7Tb3)sl }JIENDB`valknut-0.4.9/valknut/icons/connect_no.png0000664000076400007640000000177711126705363017020 0ustar ejsejsPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxb,hu߿)L>a_Fǯ ?`2 &n^>^>Nmÿ~2_YSb/S7FSו,qVg8s~ b.?z 1^Ǐ31X:(2@'>a?|MdYOU삂^e_ R r2ҏxV&f0CER7P3## 6LYU!*DAYf#0L`##JÏ  F P#3@Cd<}L~?G:+DV&FF!L £Z9- l<s`cl'@1+)y33ӛnq#_䟮-f&/5PA@O-Q5/$YS0<6{E}YARK^TbPf`eaxPy @,虃=Ja$! ,f ̨A g=ЛeIENDB`valknut-0.4.9/valknut/icons/reload_32x32.png0000664000076400007640000000355511126705363016776 0ustar ejsejsPNG  IHDR szzbKGDC pHYs ,tIME 9 @IDATxŗ[lW3gg/^I\7D iH@C$4H */HH<"Y$\`xpҊ67M몉;33sIVDH.o}^#sfPAv(ĆDAsuk۱XU=gn$Aþt/o.y{$=gnEӟG/  `(h/lHP&L X)PL<8m>GDkp DlYOgK ;64t&m'q+|ܐ@չAt'k;hk <0ZSo e8`fzHg0.|5JE9@&6n\sG ٷ#JO:tvxr' .cs(oMR֦tuua@ϙvac5aWaxtܝN5F-za6'HIg[[tuuyޘ^{xѦ&JvlZ̖u1o~ ll)(ZM4275Z`jO_,s`wH.5ɑ;wǿ{ɔ^OLӸvE WVXM-YCzD[h7 ǁ`=?`3pp;OmKzP=J(Oxsۑ̦U]F%]@x1\IG4Gєܝ[*{\1>cc; lM\IըN/XYdg@sփEk[% Z,K~iZF@hXeUzU5U'-PЃ;H)S}C[0^'SG0;[^5PSBۆ]a2E7>1gïo34,3v'طk5{wwfM 0KKr 7*).Җ#d&R}"~ZE }7پ*pgvG4yz"nƠLx;DѹrTf!V!f{@\r@9#+Ehh؞2uƶoI|_{(0iU^c?6ҹPND8kCyYQGo?Oo')J=xL~/rNf^ 99D507'ewl^bmHw(8`XEP zD"A<sFR:Rt‘:uN@!42pĻep\yũU:4~cDOylmKVlEN|4sgHVxgRool8THuYD8^܏tܐn፸㫕dZhvq]@l~zFANtcJ3gPN'*EdS# 'NEm9"1p۬Y.ʞ _ F33OiN>SjUz則nA/hAc&Hd[yC- F(4 IPBmK[ m^9Ci |ɼo?,u2;ctjsHY$B:B7t$#hYYt]G)%J)#J[kׯv[\EJ0lMp=T6iqשtuHdGgv,q=\o4,@uN40<H~?3,4)ƛO{[;[(-}zp\pcDů̑) nUこwXt&;L,/LNE]j Q׽|r{kUb?8WVV_-ϫߎSq H|V&uZ9X';n3y/f}gzNؽ~R3gP҈d*3y͌g[z,ױzTZ[/d1/G̏RT̝}ZQ>)˨2{GVIENDB`valknut-0.4.9/valknut/icons/player_play.png0000664000076400007640000000054011126705363017177 0ustar ejsejsPNG  IHDRabKGD@ pHYs  tIME (x7>RtEXtCommentCreated with The GIMPd%nIDAT8˥m@D'Qz P pp'@0͛(†ǕZia矢y_:k}:̀$ 0x(6 F}ߗM1EPRa]וv X?ǺD+oR `R\$L[ pkp^[NRxF4H14:]woCIENDB`valknut-0.4.9/valknut/icons/text-select-all.png0000664000076400007640000000027311126750142017663 0ustar ejsejsPNG  IHDRbsRGB PLTEOސtRNS@fbKGDH pHYs  d_tIME  z[IDATc`U @,!H6g2IENDB`valknut-0.4.9/valknut/icons/gv.xpm0000664000076400007640000000066211126705363015317 0ustar ejsejs/* XPM */ static const char * gv_xpm[] = { "16 16 4 1", " c None", ". c #000000", "+ c #FFFFFF", "@ c #DCDCDC", " ", " .... ", " .@@@@. ", " .@++++@. ", " .@++++@. ", " ..@.++.@... ", " .@@+.++.@.@@. ", " .@+++++++@+@. ", " .@+++++++@. ", " .@+++++@. ", " .@+++++@. ", " .@+++++@. ", " .@+@+++@+@. ", " .@@@.@@@.@@@. ", " ........... ", " "}; valknut-0.4.9/valknut/icons/folder_red.png0000664000076400007640000000075711126705363016775 0ustar ejsejsPNG  IHDRasRGBbKGD pHYs  tIME  %F$oIDAT8˥=KA]QK!iD ة$F !Em,%* mv,N$)4||)aL(T?Z^>-r==>$XN* !v!h^{V PZ<"bۥ3Ԇts53A>h|~rSq,^ͽ Z"k''(ߧf<y n77:?}}s`-qAl"QJC ̰f//0zs'nF;/a@(WI2 Ms2~}z!t^1""`-N t.sHjp|}/>>nKK=;QQYp*߿^c ~e`x 00)me +ŕ? @5?a4 P ۷X!!Nׯ?0|6?~ xo&$  `VIIQ9..B0@ .. --4 X@l 0@1"_Nl`W߁~ ??`0?`z0b@y|XﺺNJʰ7,`q!#@9Y3f at2H߿62 A^ @(061+0m$sF7@ ٢,ˠNkdeeſ@X&8@ 'a` c8z<4]y v˗ blIENDB`valknut-0.4.9/valknut/icons/edit.png0000664000076400007640000000126311126705363015606 0ustar ejsejsPNG  IHDRabKGD pHYs  ~tIME  )b@IDATxڅOSA>lIF"bbnM\qᖕ;r_@]4= *PセqAKZk$w2{sg58Jsna|tud3r]58% _ZETGN;c"/!Ls}( $.]@#8m*6+}™O9fш@:x[hNWw&h,a%i}iI]40]?!APĶ^=&OU{дe▮c:,leE6:;$DUcYLb`M CǑRj,Pl-Rit;fۤ2%B Qo8@[khJjD4ԋW8 H% ~hjj\+ >Ox.MpELCccc˫WxgX:O!gΥ/6%OP+4$چf)cUژƆ"-n?"](~uZe?.~,O?=쳬>2ƍE].}F %&A@* %.N'ro+=dÆl1@NΉ??nX*:[yaEĤ{:@45-<~ӦKкR32t t ݲmu L.`IqEキlERh8 ;D۬ll(aN  zy!c]f_ϸHDru)E@ 5* l BZnE{ 1^j;T?$zw. ,v5㍂DH-Tm]LS}>ZegY_lתЄ}hBu5trA|/8;P)˶9#>YrIЪŭ$bBOeq^LCLo E>}|S΀HLKĴ-z&8t5lj?RJ &R)j'K.J/$bB:+JBb_޷7aܗINgapvxe(MRs B0B9+{~E0d{K׺fR|_~5i|w$%Ƶ !T։uf.#Ҟ"*b%X!8'y׷=> \Dl- :pPtIS_4A*5U?q'=nWfGFY^J)D@5IO}3:i4QFoLRhCJT`[}"r_w@?|*V,^8253}ݽ\q55*JC=>,\RQq*PTi^3IENDB`valknut-0.4.9/valknut/icons/flag_norway.png0000664000076400007640000000055711126705363017176 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  1M/;tEXtCommentCreated with The GIMPd%nIDAT8c-,d8X"O3F-z89dSP22b`%ϲ'u8%000< οt-H|`13_*d````XXȠ&'@~ބSR06ᅜ8" wr;÷'ȳ˾}8%y\\Q~\ƀOh 2j>1IENDB`valknut-0.4.9/valknut/icons/sort-down-arrow.png0000664000076400007640000000037511126776355017761 0ustar ejsejsPNG  IHDRasRGBbKGD pHYs  ~tIME 3|h~j}IDAT8˽ COكP;q- H/IIGw^gr0Ȋf9; J 'h6J"h>Xz"( +%n^اy ʋIxRf_GYq'IENDB`valknut-0.4.9/valknut/icons/flag_france.png0000664000076400007640000000033111126705363017103 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  "pCktEXtCommentCreated with The GIMPd%n0IDAT8cdP@@H ICjF-lԲQF-l8X^K IENDB`valknut-0.4.9/valknut/icons/ball_green.png0000664000076400007640000000105111126705363016746 0ustar ejsejsPNG  IHDR w&sBIT|d pHYs B(xtEXtSoftwarewww.inkscape.org<IDATMAkAwfvCLƃ!-b^BP{77iRXP/ JaOj$EԿ<b^bCHqG"f6y.n5}ri-nn pC _?]TgWų{z-< WSLZ'jUaK Jo-,d&6&j~ wNVp WZD^ft 2kpIgymq6eH(K^:f`@mݺ1_^ [3H&?hhk8?(}#yo7 'IENDB`valknut-0.4.9/valknut/icons/reload.png0000664000076400007640000000161611126705363016131 0ustar ejsejsPNG  IHDRabKGDC pHYs ,tIME AIDATxmk\ew93Kf&䦉6 FC5]HZD. .Dn\w',.DHdE%f6Igng\" =jNh8^ʆŕm~T,C-fG>zC v;4=B@_WiZbm_չqaj?8Y44QK18nӣ16D%R쥒͓=m?1B*ף4]r|,; r{3UGd&^m ^j]uH$Jr)6Ed˝xYp -}@҉<G2#Tp}p.vMq+m.B@J f Y3y()Fr>jMG$]X;JyF$R e6$7VN]CE.Rz'ݑ3uE:-eqmvinw-v  Tt {LkQ \hT.ܭ87j.kgv=xڃFRcģ{k5cg,KXYY\R_mUjNَF޾ɯ7;{![Bfmwb-8%TI\X;9N_Pib_`='Z_IENDB`valknut-0.4.9/valknut/icons/users_32x32.png0000664000076400007640000000573711126705363016675 0ustar ejsejsPNG  IHDR szzgAMA7tEXtSoftwareAdobe ImageReadyqe< qIDATxb?@b`0C= \ ?8~Û/&+ Ǐo<>v˙S3 _?2DO{?N|m9i1j Yo ƛtĈHH20;ϯ]:|շ-W{[P:qsY t/_BFv@7 .gacW@/( @OT&؇UKC*zA 2A,EPit@ m l ,23~a`GJu^`"_@Ld(4?_11E3Ł K$Q,8B `g l G[O` @0hb~ (6 v3ɐ B?a\̿ ? .""0{8@%0 ¿? 1 j%Zf?"C 5ԁAϽ; _6mlߴw&Wԣk=Ff fP c+*F:;PП@10 SkZ6?yPr@mB M'`п'{`tr{c~1FGx?r2%뷏@5@SS &=td `}jW ?0|c+S~d?~mq[` fe;б ;P TqgO t!!O$֓l`b d1 3޼|.y߁ bE ?. Jh(t`!(, B̚?~bx_YY;$gbT U@Bw@ RL3wˉ^frz/?_vf`&+O < , >(s 4i;? G{go?gTEӇ {o>9s|} s*T- ~6 5 g3G2E3ȿepS,a6f`1/ h ad|)C} 9 (V9Na5 Hs%uއ2(1񜁍Y122Lid`fKf֟ k}`B!n b Y gW0{EuK>~q2(5v0 ;?3 LXK2-ff`F"18l{i~5zXҘspӍs Kg>ʰ@9_Q<;@x#!aeqUiQVM 7-^GC??z ,(?fedL4 lݸ[ݏ >dz ـ! d3#!t0`? j2\BF@ew L8c?~.o g6 O0SDxX~` Y 7x? _]#lR@03xq!~/ -K*|c =& L gb@Y B}τ;l9$~ef D[qw,*sUagf&,`;o1|!>ggsw0 ܎ X@Zl`x-F l$ b.`s=$C_~'4Y p_@XP5>1|y}H@ALy[k6yH{f$( ,~@&,Qsoh7w۩m 5I39-<8qO3|Zh{ɠ{ ~ Kc@ˇC/3;7;2 bXߐ\; G 88[$R6z? _|ax} CG_p&j 6ЖF .+3/7 mp~oķOY@=0dRa΅IENDB`valknut-0.4.9/valknut/icons/icon_64x64.png0000664000076400007640000002050110523776621016465 0ustar ejsejsPNG  IHDR@@iqbKGD pHYs  ~tIME| IDATx͛w]usn> i(j L} l0aL<;q^&v<`v4126 $ai :){sg4%r>9w{VkxXk$aܵ/vڵ;2흩{]ѣQٳ'fϞ71*`1? PbVU3zzJ3n>Xd$~e?LҲ9o(*i/DBZk (ïNΕ'wW 2l1"Z[먯Ox"ЀCJ% Օz{K1Al[6%Kz'mZO14ZY,Vn˖{^GGBSG̚5Aϝ;AL>,Rb!@JAD__mzXf]#ܶ`LyҤ]t%ki/%?L(ҷݶl=Zٙ;'NNJL:Q=H;t?ϊ]]Gk/*8V\%KY޾t:9 f&?XQW>BO\ZVm=~[ L.X,Znxxq}.7ƫ>Y641f 9Ski=i|ouAXaOm-[8bWbX|B%˗oqܣ>y…E \0h LO#`2{"Ɇ=96  `6mg~__agL>xss%Z+6l}y?#u.ڎO$hQ'r~i&g{U|dweX;v% { .E&쳟gƌQ{)`kя𖮮UB8\s{x RdZK7W'~ >{+M~ȹ&ւ9EcԋϓILHAXs~e$Sac4þ}ؾ;j^|gwa}|߽#yZ\7!1-̈́;:"D eЋ=lYÇ>͛(DHQreGrudMݓ&`/9}ؘpعZ'tt>},koSٹ&JjV ZEJ*䜩Ca凈ˌӧW%LIY8E~r16u8Z Xkl77<.'DexL0Y!|HPJ)cHk)T-MLn(Aa.1\s}Ajt=},jcsR3Θĉ'NwWf]ayֲr妉?= < 㴖͜T"Tu)J)e ^kd x-LZerc#Sx=[!22cHK )ƍKc- >tܭ-\ Lzɒ_,*H1x} ?y2Q, edVP%GrBE<&*hp}TPI"&LIQnRvQ Ov[ Jb%XE&;-Z+gf] ^#<$X>:b?Gd2Qtq 0s ~ =FB!Aې;Zzs禘3'+r(5|*Xk9zիs7>Filo_ /"XELO 1$)ѱʼyBG1xE*C"lakb"Ha-Ǎw{չ˚ݷ 5óG5K=O !z$pIK,Sa%. 8.^[[lc|?9ٮbE0@2ӊ2uSɈLsbbbRc?ǖQ_hkKǐLJC杘fW\^+aKLT0 pu']}PպS [^bYp#ߨMHao؀f TjE0Ć!Qj;Y}'*DF6>G(2 Ʊx1?﹉-)",ٌ3G`DO|kme/E9\Y|9s L{{b@Ykyw= 1"6{m,Ds+,rLizPBߏJtabX3c(6!kIB'> '訲ockW_õvfEӼ$bSL!`#?'y}og,h3IQ"*f<b4cu;x"BJ9h2#_1uk0z׮|X@B ||LV'݋2)B`]8J*((s#3u$?EG0"e\4Y &>+f.jo,i+m"ZS 7IJ1vr͚,膃Me8xr\L`{Z)8JHIU,{5\se+ȔAd!c?Xy '9-l"@Cq0nX3~+ *}(XXoۙ?V H)YJR8Ji}}Y>zV5l4 n߬rn_r+wCMveFbA-a oweu{{_dp g__#)<5h5Em wa$}y<5=B97digRBda--5$2)-V0kp\1z=y+茯ښ˰ l~hZ$TGwp6q0jz!w kbxs ?~gน. NI$w2OR ǹ|K?QG#`C;zZ&&(sϙ3"ǍiXhtj e'(*K#ZjM51Qӣ[y.kCtuPѬgN9e+>Ϭp,o^‹%҂''2t]Qr6 0g%H&,}縬]S?=ͩfغ9Gn0yiNf)B,dGb/fqzZ#=5Q`UL&贿$ e\6Ump> [ *) S7X6h%yveKKqƐƑժP -Ye121cրNשlc6 Ͷ;v!JIѪv45B8͍"LªGxj% RIRH-@Idm_SRZC$2iA L'Z!È\ ڠIt(OZ,;vwG'†Ha0/*OZyS n / cQa_ajb/D8Bt O988Z]Eˎe I5ShGu|E|ZX\<]#xeu'(o/C\O WzkM̠_tјgAC!7~QY[fN[ 5( ׭pSVʨ7CO ixJD;2wG1$Jƀ "Ή#ڢpb'p=Ǔx=q;\F~깈h&T_Akð1ְjDzށ1Q54(-q )-qYmoE:@i ddQߌf0 K RJ$*QaR2Ѐ(tA5q;^BoC֔ωS<:GCBS$ b^k4"7F~*;t!u.#k zt!Ke'HHޤBip=oqK]zB~eVh!#q޶*&K`<\+ҐN 9z0V"p4dR/![ؠŒ(c 6n%Ep嗏т#V%&ȬؾW(jM01; w*Ԥ8X5)yU碉@)Nv0;Hda2j[:!dB"P}a%(?hlh w;8gvvཱི;F'j#Jr_,>F ۘҗ~hi LLrh!QQҢD~ EլAIt 0i fXxJrvh7 0 c}>|Raq !MnSKSWgA<@9/#$]o1sŴo`(:/lec(R $XJ0&&Qg%g}$AO! -&2% jDRAo]=<ijrS;b8Wչ Jq~!tJZ%L)[D>TTÈC;ת8 Ң̛Xjld1Bp%I|cW^澇 \N?ҿ1!ҙ\3'>ubnT0VZSAeB V8W܂h`-Dr\Ŕ:5dFe˯xeJŐr)X)Tw60!.?4Nko-]_!U>j7?'^!>'Q/igRT A.|,V`ńl bqWVW EŢO!@+L}3olp/L 'wnEzl1I&K9/#d['mfpUK]JS/g ~)+[c |CP, )>+;G۔?+3_+?ۻhw4vN2tD2/!q|-jM 8 Nwy 6pjP.J-r?vz+3n/MBQdw?5TҙHd")p3X[CC NkC[.RߞM/lX1kB,WLzB/zθҮ孬U{ l͵j$x7~dJVaR 649)YL/NzXke+&/];ij1$SPIDATjGeVB)5Rvk|("?B]7~e7z9j助[¸'ёU1B H!^&(2~eV1.>~Ùew%vMvMLǎ 'tZ?y[j;+LG8yޗJ<"IENDB`valknut-0.4.9/valknut/icons/icon_32x32.png0000664000076400007640000000545110523776621016462 0ustar ejsejsPNG  IHDR szzbKGD pHYs  ~tIME-DCl IDATxYlu3RN#[KeJԸ,Ă,9A@vJR-BQ}(![T4EjxܸhqXvD}$~􁒪pdff,aaW^9ukm~4UZQdLS`2}}-s'N)[<Їcc3/75vٔ˥ cJ 8)kjqttBm~iС/?LLnWJhܳo\ww)ϸȩw33k@?k-:K;w" TfYgj*<9z~eȩm_O;̄nZ:'mjM.$/CH2͐Hu2|pg_}WGG (FFfLl7]%YT Ur1LC)КXxQ,inT GjsvfKiwnphddp ]p&&GCڝ3 Yx <"br$iXYbb ŻHK9j5dD$Y\OV3{bzth`DQ,ͥؓ٥ 4Z6Y@BG}|w}$<[g8["hO[2D.g2:ZezZinJ=9ʕ OE(ޠ pM QP\*r6qJ/eK&5>00!%5mmh-J<66}NRzgfQ7i]jhmR)aĵ2p~;q#Q,~~;a F6ۼ*q)IY]~(\bk-:P$ICCB#UƜG۴WfDڿ0H704O[Vy_ykUJ% SDz;,؀I@H\19O܁Z $JWSu,,F&óU"ps' *E\AM82Inm,DHGl.1':@JJa' YZy _ܕBvt Q7*15/+1/ v6u2`ȵd<̼Oa"- iY(0DIk'clqx)Àk"_Va4Yﶹ|@I!0c")wFzjh@Rh)ҍtn{3/uArdy54O~rhsx`Oo=p@Ixjba1fr%4-_|T!TW+mnn>ܳbUU=-8LFL4;'i7 ff#J9\ /:NgS}wﭸo*>61_lI2kґıC?Ga\UE7t׿v _~ ko5/ŭ2 zPe"}Gd21޶N_wZN?UWTeIENDB`valknut-0.4.9/valknut/icons/filetype-picture.png0000664000076400007640000000134511126705363020154 0ustar ejsejsPNG  IHDR(-S pHYs  gAMA|Q cHRMz%u0`:o_FwPLTEc%l/t4Iw8X9zDOPSXVZq^ijnrrrtttxxx{{{}~}{ʘثϵ~%etRNS L&IDATcG 5F"<\,5 Ԥ@_@aVYuUEIqA^~XQ?:/(8Z ,P.p2׎t ))d갱s[8ATRlyMUzb`EIIg;}qaA@ 33-=AF (Pj5 AA)P=xK=~:#IENDB`valknut-0.4.9/valknut/icons/ValknutVolumeIcon.icns0000664000076400007640000011450010650417661020457 0ustar ejsejsicns@ICN#??????????????????????????il32jzwxz{{|~bbGrg {ɲ܌ru}C֥bl {[_}gS+ 3 {g\jok CoN4$0`bL 'Q7AnCAE9h1jC (My]x80BLICZN\WcGJJRML:EiGrjZLY_XRlV\IILYplpebgLkGrsI`ZT]~j~X ځ 10KEN;<͂ d9?s{tqj#㻜2D#X3dрՀֆ׀B oZt菀ij͐γE7:7EzԹlgjhml<è jzwxz{{|~bbGrg {⳨ ݀ɩ l橁 3xlVkmݳ| CW =Uۿک'Qh)ô9h/:ݷMyL@5޹\ޣa@j⳰ry:Ȭ_Dly׿ }#2D#X3dрՀֆ׀B oZt菀ij͏γE7:7EzԹlgjhml<è l8mkAí% , ?V+n?Vm ) =T)k<Sl 6=/" ~.}o! +,,,,,,,,,,,,,,,,,,,,,,* it32L>3]t|{{|}}~gB ]ÀƀǀɁʁ́΃πЄуp$ [€ƀǀɀʁ́΀ЂсӀԂՂ׃؂ۃ܂݀ȴt6ˀȀɂʂˀ͂΂πЂтӀԂՂׂ؃ځۄȯRXʧq qո$y׹5"sڻC%w܀ݽI-}R3¨]=ījFȭt Oʰ| Yβ aѵ$kԷ0 p׹8$věnI.  /KpڼE+~۪l42I^qvcO85nݽP6q,GqxQ(/s\ =RL \%Téf GR^p)TƬq Qo OcrؒȯzZ2qӵݖ~%3˲ bx p|w~ܚxv|~}~},}γ! lZZơ{rvuvur(]ݎѵ,qQqqyrmnonmonnqcT׍Թ6#yO F컕ahch iecRی׺C *^ y ]_`_UX`_bc^s6aڼK 6{ &\ ׁOWYXYMSXYXXYKDZ ? ɄNMRQDudFPRRHqeI6<*؊ëp R~  #2<;?Jc¨e@?>mv\A=;ǭy\*-+>P;6??>=;77?Rsg=CEmxaP74+ωȰ e@)%nM.686315F{`5,TNSi]B9])˳ n=)UDmؽg53542/00.3K)4,EĐ :95 ?ε,s Eh\)10/ -#R&(VZ 6?/ѷ2"{} E˿'-.- ,|G x, ԺA)O"$#ɹk. Z+AoPּJ 67% *пH)%8ۇڽW?&(R[ķ1ZU!V#@'ʇ_J/ȹH^Q+7kON ªmR15ȲF,ukĬu ]0OǷM3PvO:D?E2ǰ f'4Z÷iZrƭດa/$ %'ʈɲo82G›}[SpT>WV}~mxlȩh3  5IHI*8ۈ˴)vO45É*ͳ5AX4'-,,u!DVCwB -7+PϷ2 #}!7va.N]H)(-,#bW8rA!L֖A ѹ@ ,2^τMRE3050B~-*.p\!#EjRSԻG 7>. {7569<>==>>=<;7D63-nm(+(,$ i?ֽU@)LxԟP5=ABDEDDCC:v_9=:1ot,0[Z(S_K,10vˋW?=EFGIJIJHGCiv=CB?5o ++%((AU~+ϊl TBdܟO:AHJLNOOP!OONMI`DHFEC>ZCI53,! <"ër ]>7%bލ؋Ư} gKPGOOSrxjklaYZ[YYXU_SRQONNA>EA;7/& ȱp ^׳NQSTu~[WZakc_`__^][aYVVUSRLdJHRY>5, ~ʳ'w;b jӸWTX[pZ^``iledegeedbb^i][[YXWURn=2:+90$ a͵0#~9T *{S]]p}okdejrmikjjiihgbr_`_^]ZWRɌFCC;;1$ Rۏϸ< *X [ ĵvZackvnjio{smlkeaddc`ikUޑPVPF;." VאѺE7aqidehjll|xqpoohcjig^sQRJA6*`ݑռRB3#)`|wuw{tuuttstncjnmkaVNE:.#׿[J@,yvxwwsɄspolmhC<0$?hT{-$M||wxyyxrۃnogޠgJC:.!,yؕêp ad.'9M`o|~xrqtvvwtvlmjaXFB<4'.cĬ| ji8+4>EMSX^chjlmnonj_da\XODC=4*6gǰrÂN52;BGMQUXZ\]_^]XUVRNIE>7-1Kɲ&z T?45:>BEGHI HGED@;620;R}˵-" ʥdRB<853 57;@Pcη9*ǹкD5ӼPAսYLeV©n `Ĭy iǯsȲ#|ʳ,!ͷ9+ϹC7ѻNBӽXMտe UԿl ^r i…ÅĂƈǑ{ tЛ ä2 %|α@ *yѸU,Ի]?ֽjLt W«~bį l˳$yӼ/"ݘޜݘ܈?4ʁȚɜʗɄåLAǂǂéZ<ǍǍP0ēưǓƃ:$Æronmnor÷.TE:ETô"U:U³~ÃE:Eun;:;n{ h|IEHLOQRPMJEJ|s^\TY^bdec`[V]mO„ghknpqpolig½a0€iklmlkiÃD ~ÉĆ~7°ÄˆĂ€C@ƒĆL*pu3CZjoponmljijaI$3]t|{{|}}~gB ]ÀƀǀɁʁ́΃πЄуp$ [€ƀǀɀʁ́΀ЂсӀԂՂ׃؂ۃ܂݀ȴt6ˀȀɂʂˀ͂΂πЂтӀԂՂׂ؃ځۄȯRXʧq qո$y׹5"sڻC%w܀ݽI-}R3¨]=ījFȭt Oʰ| Yβ aѵ$kԷ0 p׹8$věnI.  /KpڼE+~۪l42I^qvcO85nݽP6q,GqvP(/s\ =RL İ\%Téf G R^Ɩp)TƬq QoKѨcrؒȯzZ2m%3˲ bx q}{xüֵxy}~}}~},}γ! lZVÁɽuuvu vutstr(]ݎѵ,qQtnpwmnonmomqvaT׍Թ6#yO <|{vehchhgkncRی׺C *^Dpi\`_UX`_ab\s6aڼK 6{ )]n_UXYMSWYXWYKDZ ? [orw}~{x|~x[OQDucEORRHqeI<+Ydjov|{uqneRNQRW]enquqZJIJE{ySHEK1>؊ëp R~-6``elpmhb^LACBCCBCFNW_dYICC>mʨD<;ǭy\*/V]_c_ZTOE=>>?>>==@EMOIC؋Ư} g= (;ITRHKQJTdlh;~~tbYOC5)!׿[JI+5-&%$![Ә~}qLE8+ChT~<58-%UᕀxrVLD7)2{ؕêp alA@IJEB98:@Rt|rgTNH?15gĬ| joGCP[clry~~twrni_SPJ@5>jǰrĆXEFPX_bhlortutrnjje_ZUMF;;Rɲ&z ⴃ_NGJPUY\^_` ^]YWTNIB?GZ˵-"˨n^QNKIHFEFFGIMYkη9*ǺкD5ӼPAսYLeV©n `Ĭy iǯsȲ#|ʳ,!ͷ9+ϹC7ѻNBӽXMտe UԿl ^r i…ÅĂƈǑ{ tЛ ä2 %|α@ *yѸU,Ի]?ֽjLt W«~bį l˳$yӼ/"ݘޜݘ܈?4ʁȚɜʗɄåLAǂǂéZ:ǍǍO.ēưǓƃ:$Æronmnor÷-TE:ETô"U:U³}ÃE:Etn;:;n{ h|IEHLOQRPMJEJ|s]\TY^bdec`[V]lO„ghknpqpolig½`/€iklmlkiÃC ~ÉĆ}7°ÄˆĂ€C>ƒĆL*ot2CYjonmlkjihi`H$3]t|{{|}}~gB ]ÀƀǀɁʁ́΃πЄуp$ [€ƀǀɀʁ́΀ЂсӀԂՂ׃؂ۃ܂݀ȴt6ˀȀɂʂˀ͂΂πЂтӀԂՂׂ؃ځۄȯRXʧq qո$y׹5"sڻC%w܀ݽI-}R3¨]=ījFȭt Oʰ| Yβ aѵ$kԷ0 pĸ׹8$v ǥpaXVVWXWWXbqڼE+~۱eZ]m¿q`\hݽP6b[pցƱw`d\ = vZiЂςЀ r^xéf G xYo΀сԁ˯|\yƬq Qщ[ZȹƺԁցɨjZؒȯzZjWqƽ׃؀ǽTk˲ b__sƿӹۂÿ^`γ! l~]elÀǹa^ݎѵ,qy`jlļ݀νmi`}׍Թ6#yyblr~݀mlb|܌׺C * cnuVjۣ݀}tncڼK 6#dovg}ۀ܀uodZ ?ioxxmsw}{suy~wݬvpjeI)umyy=240'v_jov|{uqliriine~ۀ ¨wmw؊ëp Rkvw=\`elpmhbV݀ͱm^QZʹ~vkǭy\Bqt}}[NE/V]_c_ZTJlѷeI_ϻ}trЉȰ en|d5ew2DV\ZRMH>[ׂ"ֺdɽԩ|o˳ n{wp?`A (EWVOID6@քÿʡw|ε,s!rbJ /@FHFC8+Ձցڿ½¨sѷ2"{#uƽc$$**+-/0(UՀׁ ϿòuԺA)3}˒ &-1(5Á }ּJ 65~ǯ|: &.3,$7À ۇڽW?9}AM8 '.5/&1 ~͇_JE|˜ $+380( ,ƿ|ǪmRE|g %,2991(N}Ĭu ]5K  "',16=A<3)  ׽Ĉǰ f6˃F !'.5=DE=5+! ⽿͈ɲo6؆a5*'3;CJH@5,$ H ۈ˴)vE茏 B*/:CKOJB7,Ϸ2 #}ӳ$h%;DLROH@5*!ѹ@ ,֖s,7CLRPJC:,dԻG 7ތ­G$7ELQNHA6%$s ֽU@tQ8#-:EMPLE8'&P ۼ_Kэ|oF%;GOPJB.7xȹъl TǢs^7>MSND5h!ʸër ]ڑlj5EQSJ5NNÿڋƯ} gl76ITSEFS,c@Dƿȱpq2HTSCUT">ļʳ'w皩k4ERSELi~kº͵0#~ܙX5KQI8#x ȿ܏ϸ< *؛wA>KK=6nýؐѺE7 ޞe,6CA0'}܃a ¬ޑռRB3饪~I(44('h]#Ĩ׿[JQ ϽhTڤ֥\5 ʭڕêp a¥¡jbcnϵĬ| j 𼥼δǰr#ɩªɲ&z㿩λ˵-"Ϸ¹η9*»кD5ӼPAսYLeV©n `Ĭy iǯsȲ#|ʳ,!ͷ9+ϹC7ѻNBӽXMտe UԿl ^r i…ÅĂƈǑ{ tЛ ä2 %|α@ *yѸU,Ի]?ֽjLt W«~bį l˳$yӼ/"ݘޜݘ܈?4ʁȚɜʗɄåLAǂǂéZ8ǍǍK+ēưǓƃ8!Æronmnor÷*TE:ETô!U:U³{ÃE:Ern;:;nz e|IEHLOQRPMJEJ|q[\TY^bdec`[V]jJ„ghknpqpolig½^.€iklmlkiÃC }ÉĆ|3°ÄˆĂ€?;ƒĆG'lr.>Uflkjkjihgfef[D"t8mk@*.---....//////////////.................../////////////////////............----..-, 5֪F kY}7Fpn  .?-S?hTh  .:+P:bP~b~  ,:+P9aPa~)4)L4]Lz]z)4)M2XItYt&4&J4YKtYt%2%F2XGsXt  )6)L6ZGp\q  5G0eJ} a  ~  #/ %       e  [  Io  ?a  4P  )6  %z)  "@R& 0[n5" +?euD0 &7I^ƐeN;)  .>N\itvk_RB1" %3AMYahlnpppqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpppomic[QD7(  &2=GOVY\^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ZVRI@5*  &/7>CGIJLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKJGD@91(  #)/368:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::8640+%  !%&()))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))(&%"     valknut-0.4.9/valknut/icons/Makefile.in0000664000076400007640000003510411144264653016223 0ustar ejsejs# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = valknut/icons DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/valknut-qt4.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DCLIB_CFLAGS = @DCLIB_CFLAGS@ DCLIB_LIBS = @DCLIB_LIBS@ DEBUGCOMPILE = @DEBUGCOMPILE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAMEWORK_DIR = @FRAMEWORK_DIR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LRELEASE = @LRELEASE@ LTLIBOBJS = @LTLIBOBJS@ LUPDATE = @LUPDATE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_FLAGS = @PACKAGE_FLAGS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ QT3SUPPORT_CFLAGS = @QT3SUPPORT_CFLAGS@ QT3SUPPORT_LIBS = @QT3SUPPORT_LIBS@ QTCORE_CFLAGS = @QTCORE_CFLAGS@ QTCORE_LIBS = @QTCORE_LIBS@ QTGUI_CFLAGS = @QTGUI_CFLAGS@ QTGUI_LIBS = @QTGUI_LIBS@ QTNETWORK_CFLAGS = @QTNETWORK_CFLAGS@ QTNETWORK_LIBS = @QTNETWORK_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SERIAL = @SERIAL@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UIC = @UIC@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # icons ICONS_EMOT = \ $(srcdir)/emoticons.xml \ $(srcdir)/emoticons.xpm ICONS_EMOT_SIMPLE_GNOME = \ $(srcdir)/simple-gnome.xml \ $(srcdir)/simple-gnome.png ICONS_FLAG = \ $(srcdir)/flag_bosnia.png \ $(srcdir)/flag_brazil.png \ $(srcdir)/flag_britain.png \ $(srcdir)/flag_czech.png \ $(srcdir)/flag_denmark.png \ $(srcdir)/flag_finland.png \ $(srcdir)/flag_france.png \ $(srcdir)/flag_germany.png \ $(srcdir)/flag_greece.png \ $(srcdir)/flag_hungary.png \ $(srcdir)/flag_iceland.png \ $(srcdir)/flag_italy.png \ $(srcdir)/flag_latvia.png \ $(srcdir)/flag_netherlands.png \ $(srcdir)/flag_norway.png \ $(srcdir)/flag_poland.png \ $(srcdir)/flag_romania.png \ $(srcdir)/flag_russia.png \ $(srcdir)/flag_serbia.png \ $(srcdir)/flag_slovakia.png \ $(srcdir)/flag_spain.png \ $(srcdir)/flag_sweden.png ICONS_USER = \ $(srcdir)/usericons.xpm ICONS_APPL = \ $(srcdir)/back.png \ $(srcdir)/ball_green.png \ $(srcdir)/ball_red.png \ $(srcdir)/ball_yellow.png \ $(srcdir)/bookmark_add.png \ $(srcdir)/bookmark_folder.png \ $(srcdir)/choose-language.png \ $(srcdir)/configure_22x22.png \ $(srcdir)/configure_32x32.png \ $(srcdir)/configure.png \ $(srcdir)/connect.png \ $(srcdir)/connect_creating.png \ $(srcdir)/connected.png \ $(srcdir)/connect_no.png \ $(srcdir)/download.png \ $(srcdir)/download_as.png \ $(srcdir)/down.png \ $(srcdir)/editadd.png \ $(srcdir)/editcopy.png \ $(srcdir)/editdelete.png \ $(srcdir)/edit.png \ $(srcdir)/emoticon.png \ $(srcdir)/exit.png \ $(srcdir)/fileclose.png \ $(srcdir)/filefind.png \ $(srcdir)/filetype-application.png \ $(srcdir)/filetype-archive.png \ $(srcdir)/filetype-audio.png \ $(srcdir)/filetype-document.png \ $(srcdir)/filetype-picture.png \ $(srcdir)/filetype-unknown.png \ $(srcdir)/filetype-video.png \ $(srcdir)/find_22x22.png \ $(srcdir)/find_32x32.png \ $(srcdir)/find.png \ $(srcdir)/folder_blue_open.png \ $(srcdir)/folder_blue.png \ $(srcdir)/folder_red.png \ $(srcdir)/globe.png \ $(srcdir)/help.png \ $(srcdir)/icon_22x22.png \ $(srcdir)/info.png \ $(srcdir)/message.png \ $(srcdir)/next.png \ $(srcdir)/notconnected.png \ $(srcdir)/open.png \ $(srcdir)/player_pause.png \ $(srcdir)/player_play.png \ $(srcdir)/reload_22x22.png \ $(srcdir)/reload_32x32.png \ $(srcdir)/reload.png \ $(srcdir)/save.png \ $(srcdir)/server.png \ $(srcdir)/sort-down-arrow.png \ $(srcdir)/splash.png \ $(srcdir)/spy.png \ $(srcdir)/ssl_no.png \ $(srcdir)/ssl_yes.png \ $(srcdir)/text-select-all.png \ $(srcdir)/transfer.png \ $(srcdir)/translate.png \ $(srcdir)/up.png \ $(srcdir)/update.png \ $(srcdir)/users_22x22.png \ $(srcdir)/users_32x32.png \ $(srcdir)/users.png \ $(srcdir)/view_sidetree.png \ $(srcdir)/zoom-in.png \ $(srcdir)/zoom-out.png ICONS_DESK = \ $(srcdir)/icon_16x16.png \ $(srcdir)/icon_22x22.png \ $(srcdir)/icon_24x24.png \ $(srcdir)/icon_32x32.png \ $(srcdir)/icon_48x48.png \ $(srcdir)/icon_64x64.png \ $(srcdir)/icon_128x128.png \ $(srcdir)/icon_128x128.icns all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu valknut/icons/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu valknut/icons/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am install-data-local: $(ICONS_FLAG) $(ICONS_APPL) $(ICONS_DESK) $(ICONS_EMOT) $(ICONS_EMOT_SIMPLE_GNOME) $(ICONS_USER) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/appl $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/appl/default $(INSTALL_DATA) $(ICONS_FLAG) $(DESTDIR)$(pkgdatadir)/icons/appl/default $(INSTALL_DATA) $(ICONS_APPL) $(DESTDIR)$(pkgdatadir)/icons/appl/default $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/emot $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/emot/default $(INSTALL_DATA) $(ICONS_EMOT) $(DESTDIR)$(pkgdatadir)/icons/emot/default $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/emot/simple $(INSTALL_DATA) $(srcdir)/simple-gnome.xml $(DESTDIR)$(pkgdatadir)/icons/emot/simple/emoticons.xml $(INSTALL_DATA) $(srcdir)/simple-gnome.png $(DESTDIR)$(pkgdatadir)/icons/emot/simple/ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/user $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/user/default $(INSTALL_DATA) $(ICONS_USER) $(DESTDIR)$(pkgdatadir)/icons/user/default $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/16x16/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/22x22/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/24x24/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/32x32/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/48x48/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/64x64/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/128x128/apps $(INSTALL_DATA) $(srcdir)/icon_16x16.png $(DESTDIR)$(datadir)/icons/hicolor/16x16/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_22x22.png $(DESTDIR)$(datadir)/icons/hicolor/22x22/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_24x24.png $(DESTDIR)$(datadir)/icons/hicolor/24x24/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_32x32.png $(DESTDIR)$(datadir)/icons/hicolor/32x32/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_48x48.png $(DESTDIR)$(datadir)/icons/hicolor/48x48/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_64x64.png $(DESTDIR)$(datadir)/icons/hicolor/64x64/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_128x128.png $(DESTDIR)$(datadir)/icons/hicolor/128x128/apps/valknut.png $(mkinstalldirs) $(DESTDIR)$(datadir)/pixmaps $(INSTALL_DATA) $(srcdir)/icon_128x128.png $(DESTDIR)$(datadir)/pixmaps/valknut.png # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: valknut-0.4.9/valknut/icons/Makefile.am0000664000076400007640000001226211131616063016202 0ustar ejsejs# icons ICONS_EMOT = \ $(srcdir)/emoticons.xml \ $(srcdir)/emoticons.xpm ICONS_EMOT_SIMPLE_GNOME = \ $(srcdir)/simple-gnome.xml \ $(srcdir)/simple-gnome.png ICONS_FLAG = \ $(srcdir)/flag_bosnia.png \ $(srcdir)/flag_brazil.png \ $(srcdir)/flag_britain.png \ $(srcdir)/flag_czech.png \ $(srcdir)/flag_denmark.png \ $(srcdir)/flag_finland.png \ $(srcdir)/flag_france.png \ $(srcdir)/flag_germany.png \ $(srcdir)/flag_greece.png \ $(srcdir)/flag_hungary.png \ $(srcdir)/flag_iceland.png \ $(srcdir)/flag_italy.png \ $(srcdir)/flag_latvia.png \ $(srcdir)/flag_netherlands.png \ $(srcdir)/flag_norway.png \ $(srcdir)/flag_poland.png \ $(srcdir)/flag_romania.png \ $(srcdir)/flag_russia.png \ $(srcdir)/flag_serbia.png \ $(srcdir)/flag_slovakia.png \ $(srcdir)/flag_spain.png \ $(srcdir)/flag_sweden.png ICONS_USER = \ $(srcdir)/usericons.xpm ICONS_APPL = \ $(srcdir)/back.png \ $(srcdir)/ball_green.png \ $(srcdir)/ball_red.png \ $(srcdir)/ball_yellow.png \ $(srcdir)/bookmark_add.png \ $(srcdir)/bookmark_folder.png \ $(srcdir)/choose-language.png \ $(srcdir)/configure_22x22.png \ $(srcdir)/configure_32x32.png \ $(srcdir)/configure.png \ $(srcdir)/connect.png \ $(srcdir)/connect_creating.png \ $(srcdir)/connected.png \ $(srcdir)/connect_no.png \ $(srcdir)/download.png \ $(srcdir)/download_as.png \ $(srcdir)/down.png \ $(srcdir)/editadd.png \ $(srcdir)/editcopy.png \ $(srcdir)/editdelete.png \ $(srcdir)/edit.png \ $(srcdir)/emoticon.png \ $(srcdir)/exit.png \ $(srcdir)/fileclose.png \ $(srcdir)/filefind.png \ $(srcdir)/filetype-application.png \ $(srcdir)/filetype-archive.png \ $(srcdir)/filetype-audio.png \ $(srcdir)/filetype-document.png \ $(srcdir)/filetype-picture.png \ $(srcdir)/filetype-unknown.png \ $(srcdir)/filetype-video.png \ $(srcdir)/find_22x22.png \ $(srcdir)/find_32x32.png \ $(srcdir)/find.png \ $(srcdir)/folder_blue_open.png \ $(srcdir)/folder_blue.png \ $(srcdir)/folder_red.png \ $(srcdir)/globe.png \ $(srcdir)/help.png \ $(srcdir)/icon_22x22.png \ $(srcdir)/info.png \ $(srcdir)/message.png \ $(srcdir)/next.png \ $(srcdir)/notconnected.png \ $(srcdir)/open.png \ $(srcdir)/player_pause.png \ $(srcdir)/player_play.png \ $(srcdir)/reload_22x22.png \ $(srcdir)/reload_32x32.png \ $(srcdir)/reload.png \ $(srcdir)/save.png \ $(srcdir)/server.png \ $(srcdir)/sort-down-arrow.png \ $(srcdir)/splash.png \ $(srcdir)/spy.png \ $(srcdir)/ssl_no.png \ $(srcdir)/ssl_yes.png \ $(srcdir)/text-select-all.png \ $(srcdir)/transfer.png \ $(srcdir)/translate.png \ $(srcdir)/up.png \ $(srcdir)/update.png \ $(srcdir)/users_22x22.png \ $(srcdir)/users_32x32.png \ $(srcdir)/users.png \ $(srcdir)/view_sidetree.png \ $(srcdir)/zoom-in.png \ $(srcdir)/zoom-out.png ICONS_DESK = \ $(srcdir)/icon_16x16.png \ $(srcdir)/icon_22x22.png \ $(srcdir)/icon_24x24.png \ $(srcdir)/icon_32x32.png \ $(srcdir)/icon_48x48.png \ $(srcdir)/icon_64x64.png \ $(srcdir)/icon_128x128.png \ $(srcdir)/icon_128x128.icns install-data-local: $(ICONS_FLAG) $(ICONS_APPL) $(ICONS_DESK) $(ICONS_EMOT) $(ICONS_EMOT_SIMPLE_GNOME) $(ICONS_USER) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/appl $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/appl/default $(INSTALL_DATA) $(ICONS_FLAG) $(DESTDIR)$(pkgdatadir)/icons/appl/default $(INSTALL_DATA) $(ICONS_APPL) $(DESTDIR)$(pkgdatadir)/icons/appl/default $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/emot $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/emot/default $(INSTALL_DATA) $(ICONS_EMOT) $(DESTDIR)$(pkgdatadir)/icons/emot/default $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/emot/simple $(INSTALL_DATA) $(srcdir)/simple-gnome.xml $(DESTDIR)$(pkgdatadir)/icons/emot/simple/emoticons.xml $(INSTALL_DATA) $(srcdir)/simple-gnome.png $(DESTDIR)$(pkgdatadir)/icons/emot/simple/ $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/user $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/icons/user/default $(INSTALL_DATA) $(ICONS_USER) $(DESTDIR)$(pkgdatadir)/icons/user/default $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/16x16/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/22x22/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/24x24/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/32x32/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/48x48/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/64x64/apps $(mkinstalldirs) $(DESTDIR)$(datadir)/icons/hicolor/128x128/apps $(INSTALL_DATA) $(srcdir)/icon_16x16.png $(DESTDIR)$(datadir)/icons/hicolor/16x16/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_22x22.png $(DESTDIR)$(datadir)/icons/hicolor/22x22/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_24x24.png $(DESTDIR)$(datadir)/icons/hicolor/24x24/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_32x32.png $(DESTDIR)$(datadir)/icons/hicolor/32x32/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_48x48.png $(DESTDIR)$(datadir)/icons/hicolor/48x48/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_64x64.png $(DESTDIR)$(datadir)/icons/hicolor/64x64/apps/valknut.png $(INSTALL_DATA) $(srcdir)/icon_128x128.png $(DESTDIR)$(datadir)/icons/hicolor/128x128/apps/valknut.png $(mkinstalldirs) $(DESTDIR)$(datadir)/pixmaps $(INSTALL_DATA) $(srcdir)/icon_128x128.png $(DESTDIR)$(datadir)/pixmaps/valknut.png valknut-0.4.9/valknut/icons/icon_128x128.icns0000664000076400007640000020432110523776621017003 0ustar ejsejsicnsICN#:\#*D* QPES=">MQʉ) VҘ(V V~ЙV Ջ{ Nեt stzyڇʀ7qgg!$79R|Ϸg\w] M"IQ [ne|eM9iHGIU`RcY!JD@@??>T6B*׺=''$gT!a!Jy߿cX0gNm aI`{_A /IIw0 I_'Ia޺i! 9@%a~zcFX8AdOE\L 6  C\QEED]LYM02|`m=YPRSSRQpKkKN:7N%bډXY\]]^\ZzVR~?<@pdMYm]dpgfggfc_\jvQE3 <cݹajtxpnlgdaZS@'8@عj{{szzyxvtoljVLF, ʂ˃v}~}{vtwlaI+dGƵ}{j[@#`kA~K/g>jкbK7bFWeovz{{slaRA^ӌuELTY[[XQHAr ›sr aIIaMFh~lK#M:@K>ʉڶ)V(V VtҳV { .t st~zڇʀ7{igg!$7 Qz~hafp}v^\waM`tsgTQRRS[_UeîvM Qi^SKJIIaZtH%BRRIDEEDCAV7 <%8=+ {E00-kY%a &9A.Ub*;nUr aI .?E1kjL @II*3@NH3@"^Ia +8JXL5@Ƿs/da %CX`N4<_oSZwcXkT6Y 5Rc[G=tlcbaudm_B@d0N_[JBdnqrrpmb}]nQAP #F_]KXovz}~~{wnh~KveM &NdTfusU}xr{aP<#@+TeYwuBe-ztg`H-8*Od[bgaU|{Q2 ʂ#A\StYs/xxQ1k5HM>iL:udH(btA;4+))$mT7kKMF>AbĐnV@pZl{}qaNfԌʄ[bkoqple[Q| ɦ бӓx{߉ׁÖ߉}ƒȇxyy { Έ{ր 񳗆K؂daz~Ƿഥn-`tsgѢyȽ?Qi^Yَ֫$%BRRLֳ•ʦE%8=+ Ĺ·Ǧl&9A.Ǿ^".?E1|A*3@NH3"¶F-8JXL5P÷˨_{AX`N4ĸ৺ӣeRc[GZ÷bM_[J^;övE_]R洪PdW̿SeykCʻPdvǶl\T׷=ل֭OMEmNхL4+*+#֨z\^  l8mk0[[00))00000EE00000)) [[[[ ))000000EE00000))[[ich#HP'%Hp$5IH.$F JKIJDȒTIV)ҒTYmh#?ZW?i|{[]V~mv~rY~S~t{ڨrZnڥJ۽Z:{J]p~=ST7*X^>UU-|ZUU **UKMj`R4 nj-մ;JBTT RU* ??????ich4 oofoo\nW^m]m n |V_\\|n }PL oW @ f\L \\|]oeLLofolWW ]|VfTu }\fo`^],,L-]M]\VofofeS$uW]}ffe f2LBL]]Uu\U |\evofoeeZ4$-u}WWuf`ufnPfoeS"M+MWUWW\fgffffe;4"D%WUueffffofloffSBB;uuWlfffffolfffUe$"C\V`ffffffffmvVfS2D">`mffffefoffff;3$"CBm vfffWVfffmVoff$BWfvf|ffefff;B$-C%u VWVfwfffmfe4B"L ug}ufoffVf5-B#WmuUuu|WWffflfef$MK]W|VWVeffolnff[B$}m}uUmepVff`Ve],BK}\}u}muof fV2,<\W]}]]PffVnS-Duu|]|]u}f|fn~e]B|u}}\\Vffmf-|SW ||}]VfV` e[BL]6JNɅ ĝ:<;9&fxɢӻI"! K|FŸ]$90o^dƱz1HC$y o_"ȦVvte  >;__#Ǚ/ Fmn5$_oH#X< 30)oٿ|ǑS 8EE/*iӄ*:l;9C>qPj,_СPGD]D\p;=E;80IN"+*Y}W\^ehceeffeedb]][ZwvYMD;. +LZ`busjkllkjigab`_ZWUNE8% cAܪafnmoztpqoomfhfda]ZXK>+`) (جhl}qsw~wwxwuuslnljhRV?E0' hlqzzxy}||{zywrsqom\ZLG1ņ8ˑsv|~~}{wwus|hbUE.}%YeǺ~|}|zxj^P>(U#?%q~hXH5 : b-l̽nL;)] .BqۈzɯiYK9) B>LWfou{ ֊|xqk`TG9=͒:DQZbjptvxyywpmg_VL?5|S?GPUY]_``^\WRLC;O{;=AEGHHFC?:7y Ե ɢo__oYY"&Wu{^/ "a*v8a~ڪ"ď z- ۪Az LMhL,6ŰڻO,MwеMz$þzĀ;z yĄ =v{r qrrq`#vitgix7` o~~qa `jaa_ ;rx|u\ZZ]fq{{gZ 㾈ZyS" KluzskbRRSRT]fbUQxø]\ "  Iioj`YQMNMPVLK͕z;AY  Aeh_XRKIHHGGsSN^;Y #1KYZRJEDCAj@71Ʌ #/:98@DABC BBA>)gxɢ#/:@5'6P(+*)%Q} "/:C8+h1" (@6 o %2=E;,-!?TO0 o_"#-8BH=.!c~n UR__# '.4l>C73/,)%&ȜwUC1b?MJA6*(*CᙑϷueWB2RQ`nxݛznaTDFϒMXfpxxof[LAeT]elptvvuspke^TJ[ҊQSX\^^][XRMI ٽ Ƶؙgeegkllkheegyióly i׃ ѷj vvف vۏ kہ ʒj pȾȿ݃ ˭s#qͿƿʢqs{́وsu~ưý}ut~ց~t݄ |yĀК||ނ|{~~굧{+tcaapx|tƧyzӶw#Kluzskiׁ]ǖosŽނ5XCIioj`XۢqӴaRAeh_XQ݃*Ү{o#1KYZRHހ݀)Ҵ䈔ʱ#/:98@Dbނ̀Ҍ˵*#/:@5': ̀ûƑ˪K"/:C8+4žƽ]u,%2=E;,6.#-8BH=.2l»'.4A@ ??>8=;>@9/(GNKKO5,YI>U:>=>==7JQ6<>=7#,=lrp`| ſe5<;98j5:4( /(21|=ɋþ<8;:3t#  ='GE JI')079:;;< ;;:99765(A1 P4Ļ̦k1  !  Hя ƾԀ' `' xc'Ek   1@ $4*W7¹v(G}W MvH,Żr_&!! nm vZZ+Y-Ƽo$ ;.9;90{L5 Z@ 'ǾّA  qWX_ZGs0 @+D.ȿmfN/{z*!tE  +H]ȿ8ԻfH]šeuq  ")GmȿżfR*1,    Gx (Ƚšһl"   E~Ǿh@+  Woijjijn; +'(IiǙj@&  ,;IHID5+@-È #UӓP#  1234524(@Z4g"0Dn޹͆L"   23234*Zv1"ŇԒW+  035644&v$ɽ̛vA>[kvƖ[ޟb2 )(Rg1  EZWVXW0т̬'s+ƽJ"$''!\r'4/-+P S  .dnplQ BCƣ7+/0+/S(247:>@@?6Q;'%A$,Uu)  .R`b\C9_ư9ɺP,31+J?066789:972i*/$wH"*(%,X߀\  =3 Ḋ}˄/40;qo46;:0-64)nK&.,*($,k o" =|1 /W̲C.@eR6=>?>=7]A797+rN*1/-,*'"%Vӊ5 i7|5 Mxaǎfxg9=BCBA?Bd9==:/yJ.320.-+(#7z؀ ,]y :̢rySA@EFFGFEED;9A@?>2D27521/-*)%0xʀ T #g=?ADGIJK!JJIIH@@EDCB@5>7:86320-*(%qՀ #0n[{FHIKKLMN"MMLKGfOFHGFEB:9<<:8642/,*'$)Zn/ (&")TԼoDJMMNOPQPPOMRcHKJIHHDE‘8@><;613+,,(&" o%*f|Ԭ^FMOPQSSTSRPM~HNMLKKJBYk;CA҃@R( #JעPJQQRSTTUVWVVUTLJQPONNMLAzQAE8k[-2.'K܅Q("PIٻTNSSUUVWWXYZYZZYXWONSSRQPPOMDCF3>BAB;.53+c, BotA~WLRUVWXXYYZ[[\[[ZYT~U TTSRQQLTՄ@20 984-*=>91?<94/( %P|*f+nLRVXYZ[[\\]^^_``a`_-^^[gjXZYYXWVVTSMéD@<950,&3`gȇ,1LP޻iLVXYZ[\]]^__`aabcb/a``]dqZ\\[ZZYXWWPqjZifgUHGD@=950+%   /,tu,5SRXZ[\]^__^`bbacddefe0dccb`cłZ__]\\[ZZYWNLSPQNMKHEA=93.)#  [p2߀hQY[\]^_`a_h}{ofefghgh5ghgfgfeedca\a`__^\]\[ZTwoPTSQPNKHEA=72-'! 4  d߀ߦTY\]_``aacuynhhijjkjih/gfe`]cba``_^^][ZV̴QWVUSQOLIE@;60*$ - !vxU]_`abcch}ynkklmllk5jiihgc_eddbba``__]UeVXWVTROLHC?93-&   .ۀb\`accddfxkks|~{xqmnnonnm3lkkifagffedccbaa`\hT[YXWURNKFA<60)" ( Q=ۀb_bcdffe}zhjllo{}zwqpqpon0lediihggfeddbc`\Y\\[YURQNID?82+$ $#  پdaefghgnklmnq||zurrsrqqpongekjjihhgefd[n\_]YdoVOMFA;4-& S Oؼedghi|ylooppqpw~}yututts2rqqpkfnlkljijhggfe`ZaX\~HLIC<6/(  O+ Uhifijklkuoqqrsstt||xwxxwvu1tssrmjnonlmljkiihgcv\eM70)! ؒI V}zekkmnlyqrttuuvu{~{yyzyzzyzyyxwwvvuutolqpponnmlljfmcgJ,//0-AOG?80)" G CЎdlnoxsstvww{~{zz{zyxwvutΟmsrqrpoonnlhlkfV=JJF:KOG@80)" C, 9ϱlloprrq~wxyy|}||}||{zyxwxϜptutr!qpoonmkopfednkiUTMG@81)! ؖ* 2ɖjprsttuyz{{~}~}|{,zx}ٕswvvuttsrqpoolwzghkjaeYSMG?70'  !u pƿmstuwwvzz{|~}|+x܉vxwwvuuttssnol|gifca[WSMF>6.&  r M`Unˀµ~puwxxyyz{{|}/~}}y݆xzyxxwwvvqpiujjhda\WQKD<4-% I- ^}twyz{{||}~~zہ{"zzyxxwrupkjhd`[VPIA92+# '!wxx{|}~~z|}!||{zzxvlljgc_YSLF?7/(  Ξ& -}S¿zz|~}|~~}}{{xfljea]WQJB;3,$ˠ&"'*ط|~~}}wkghd_ZTMF?7/(  %"*<4h~~wuda\VPIB:3+$ # &*22~~퓁~xnZWQKD=5.' #"(.2D}}ׂెaWSME>70)"Ψ;#)04=kѬ{Ԗl]YXSMF?92+$5Ъ]$+269Gv߁~xߞl``]XSMF@92,&Y$+28=AN`zȀ}~{trcdb\WQKE?93,'~%*27=BFKQcry|~|zxu{d _ZVOJE>82-&c)16=BHMPTY^fkpruxxz{}~"}}{zxvtszhdd`]WRMHC=81+#^ݴ*/5:@EKPTX\`dhknqtwxz|~~!z|{ywusqnkfca^YTOKE@;50*%n*38=CGLQUZ]adgkmprtvxy{{|}~~~|}Ǘtxvtsqoljgd`]YUPLGB=93-%kߺK/5:?DIMPUX\_behkmoqrtuvwxyxw{ssrpnljheb_\XTPLGD?:50)G<06;@DHKPSVZ]_bdghjlnoopqrqqpollkjheda_\YVSNKGD?;71+6A06;?CGJNPTVX[]_acdffghiijihffdc`_][XUROLIFB>:61+<Y159=ADGJMPRTVXYZ\]^^`__]]\[XVUSPOLIFD@=950-U҇327:>ACGHJLNOQSTTUVUTTRQQOMKIGEC@=:63-.t3/79<>ACDFHIJKKLKKJIHFEDB@>;963+/rϋH3078:<=>@@ACBCBB@?>=<:753-/E ʗd8441466889887642.216bƪyfSF??EReyѱvZ@++@Zv}==}ppS  Sh(=Rkzs_G3h1 (Irþ^91 Bu \.D~b*&)hG&R0z VR׷)y ߽Q Cdඦ8Cױ9 ͤhq ] š,qCvУCC  ̥N Ψ½N| ׷ԢBfĴƘ+Cƺ״| Ӂѵ Ý̀σѽMϜ ǀ́Ʒ BG ĀȀɂȵ DBpi~ŀƀé ~Ň~yp{}|}{~ }Кy{3*}{ zz{zy{ zz͏wtؔA4 z~vxww|xuȠusIA?zruoqtusuwstq̪q؈<|ppqrmnprqqpqrheؐO,romwqnomlxlonhWOlwjlkefljlI$ `jpkgiczbhidm5$Gkyhdfdbʁfdfe``#o{{ |eacbcbZw]bc_kiM&elev}xnmrxyywc_`XwY\]`_X\( /_brwy}|n_\^cfmszs`\]VoέmZ]Ym`K  Chpsux{~{yxq^YZYZ`iqw|}|o]YZTd؂ïpWZZYS}V/annruw{~}zxvsqfW VVY_iquvwwvk\WTeςֵ^VWP}U3/ȏ4hknqtw{~~{yvsqnl_TUTTVZ`gnqk\TOϵoQQ]\?ȇf :fgjnquy{yvtrnkif]RSR%TZbhjlg[RQQRQTUaνsLJr@ f >fhiloqtspmkhdba]ROOP#OQUZ`dc][TNONMGa籯jB<   =chhjlpqnjfc`][XTOMNON MMOT[_^RLMLLF˒Mf8 Q  5]gfilomieb_\YWURNLMLLKKMURKJGRt^aQ4"[Q +Qeghklhdb_\YWTSPLJKJKJIIHGB}BB`_G/f "@^hikheb_\YWTRPNIHIHGDJPAD@DGH@B*c'n !2Qglifc_\YWTROMKHGHGFE={l?A:0(H $(-269:?JV[ZWROLIFCCDCDCCDCBABAA:65;EMRQNIEBACBA@>=m8=7, /:SM!|=  "&,059>?;71-,/4:?BA??BA@??8w($ =%  "'+059>A?;61+%+>229?ABCBBA@?>;.G 3J #(-16;?CC=82,("mҪq:$&()**)(&$! K я #(-27;?DD=83-(#1 f.{e# "',16;?DD?94.)$dr :G+9 K   "',16:>CE@;50+& /5Q' $^  T$ vR #(,16:?DEB<61,'"!i4+-.,) u  &r  vZT  $*.28;@EFB=72,'" K{3)G;FGE<%U= Z@V!&,05:>CGHB=82,'" QܘM!{bdieS|<  @+T !%)-27;@DIJC>94-(#0rZ(.>ȅ8.|O +  K #%)-16:=AFKKD?:4/)$"GqViƢp~z$ @H2 [""#$%'*.149=ADILJD?:4.)$fr`;Cŝ: uөC( !&'()+-/37:=ADIMMJD?:5/)#Ӂ0Ȥw2$#"  ҿK- "(,./2569<@CFJNQOKE?:5/*$y%tP;-&#!!  ^(+4 $*/1359<>BFHLORTQLF@;50*& '+0=[x̡wP8.)&$#"  $`+@7 !'-./248<@DHKPSVVQLGB<70*% /.-)$'9fם^4 $&%#! =|@Z: #)--/258<@EHLQUYWRNHC=71*% !6:FX}яZ2!$#"  DZv@ %*++-148=BGKPTWZXSOIC=81+&ţ̕؛d:"!  7vvD !&))*-059?DJMSWZ\XTOID?82,'>ѧWUn}υ̡lm@N "'(4*074ZēM\kv|}xtpS1=cq=FтK #((%$4:?EKNTX[`_[VQKE?83,%7?>@BC>qʄCNU\cffdT9FC-4>`]*^*M #((-8=CINSX\`c`\WQKF?82+$%DIJKGKjDNPRTXYYWNfR@=U7:32?d݀}4Fj#5 $)' 3;BGMRW\_cd`\VRKF>71)%AONNGdYLRSTUUTTQL|DH>[9@=920>fc$ =5 $*%(:?ELQW[_cec_[WPKD=60'5RQMWRSXXWVUTLGNLA^CJPU[_cfea]YUOIB<5,'HQ[{lTZ\\]\\[ZYXStZQRODa@EC@><93,4aՎ=  l:|6 #':@GNSY^aeec_[WRMF@91(Y~X[_`a`__^^\[\ySVURH^CHFC@>;83)(Cڀ2 `{5 #5>ELQW\`eec`]XSOIC=6-4m^^cdde#deeddcba`WTZYXUJXHJGFC@>:84+#;̀ Y5 )/7=CJPV[_cec`\YUPJE?81*Nb]^befghhi"hhgfed\Z^][ZXMSKMJHEC?<962+")x׀ 'n, %5>CIOUZ^bdb`]XUQLF@:2.Idefhhiklml#kjjhhc}h`a_]\YQOONLJGD@<:74/)2\n) $/9BINTY^bdb_\YTPKF@:23Sijklmnnop$onnmlkimzceca__Z[ɝLSQNLECD;8951-#u2 !&,3;@GMSY]acb_[XTOJFA:2;^kjlmnopqrrsts$rrqppnmj‘chfecb`YlzOURLlU9961$FԃC2S  +2:?GLQX]aca_[XSNJE?92Afmlnopqrsttvw$uvutssrpjekiggecbXcUTdʤM;:2T߅Q7 ").5>FMRX\acb_]XSNID=7Ognooqstuwxyzz||}~2~}||{yyuyqrponlkih^d~uJGD?81($-U-f- *783-'!  /) &%!'?IQY`efc^XQGNimnqruvxyz~~4~ϗvyxvusrpomkb\ba^ZZWSPLGB=71+% - !7CLT\bfeb]VMGbnoqsuwxz}qB/7X4~ɡw{zxwutrqong}`ca_^ZWTPKF@:4.(" . )=FOW^dgea[TLRmoqtuxyz~Z#)^4}Ħy||zywutrqomhѻafdb`]ZWSNID>81*$ / (6=GPY`fhe`[RJarrtwxz{y?#%e9ȭz~|zyxvusrqgtfgeb`]ZVRMHA;4-'  - &./;FPY`fhe`[QMksuwyz|=U|a'O8Ư}~}{zxwutsoxcigec`]YUPJD=70(" /,  !%5GPY`fhe`ZQOotvy{}~VW+y9µ}|{yxvtsnijihe^ZZXRMG@92*# $, !&7GPX`fhfa[QPrwy{}~x(;|#I9÷}|{yxvul|kkif~kWUPIC;3+% .W !*;ENV_ehfa[QSuy{}~]cgz9ȷ~|{zxvpinhκnUQKD=5-' O-  .DDLU]cgfa\ROs{|~Ou<28͸~}|zytjnu`QLF>6.'  ؒ- /ABJSZaffa\SLn~~[nfQ8̵~|{w|qn|iROG?7/'  -L!(3>GOX^dea\TKew&B|77װ~|yzyqs]TNG?7/' Cg!&,3@MU[aeb\VLR}cBgM[0خ~z}}rogZUNG?7.' ؖ+ &+2?IQW]aa\WOE_\.o!f2਌{ssrr`\UNG>5,% +z%+3>DLSZ^`]WQG@jYBtvP5➎|surlhdb\UME<4+% s*T#*17?HNUY\\WPJ@@vhR3㜏yvvsoke`ZSKC:2*# J,4!'.5;DJOSVWVPJC8@zS a0☑ʄ|wurnjd_XQI@8/( )(!&,38?CIMPQRPJC<17f'!u ۀ"xxurmhc]UME=5-& Ξ'$*05=>BEHKLLHA<5-(Dw:!"+Ғsxtqlg`YRJB:2*# ˠ '.4<;A@AEFB<71,#'Lis~="#"Cēwsrnic\VNF>7.' $!*28>GF<=@A@><73/*&!!#.:<;1""%$ [̀oke^YRJB:3+$!.4;BLA59::98630-*(&%" "$%%#/𥖘ȅxdaZTLD=6.'! )07>EJ;123 21/.-,+*(''&'&$ t蟔ۃ㷎ka\VOG?81*"Ϩ G19@HNF7,,--,+**)(&%!Qٸٟxhdb]WPIB:3,#:Ѫg3;BIRUF4+%%''(() (('&# Azmkhc]WQIB;5-%^!38/qZBINSX]bfjnquy{}~{xvrolhd`[VQLGB<5NMDKOTX]aeilpsux{}~}zxvspmjgc^[VRMID>8@RDJPTX\_cfjloruvxz{|}~~}}|{yxvtrpmkhda]ZURNIE?8GhFJOSWZ]`cehkmopqstuuvutrrpnmkifda^ZXTPMID>:_1֓HGMPTWZ\_acefhijkllmmllkkjihgeca_\ZWTQNKFB<=ǂIFMOSUWY[\_``aacbaa_^\ZYXUSPNJGD<>|Ә[JGMOQSUVWXXYXXWUTSQOMKHF@AT ТuNJJHKMNO NMKIHDEEIo̳veYSRYetμ|qllq|ѮebcdcbeԦrccdefedccr͕bcdef eedcehkmoqqrqpnljfccdeffeedcbݡcdef(ecgktſ{niddefeedcȀdeffedgpۂǷyjddffedpefgfeiz׋؀ϼoedffepneggfgv׀ց׍؁ׁ¥kdegen{eggejԀՀր׍؀׀րҺteege{ eghglӀՁց׍؁׀ŞvfggeegihjԀրׂ؋ق؀Ɯsfhge ghjhxԀ ׂڀمڀقҀ ӾkhigghjjlـڋۀΪxhjhggiljtځہ܁Ѿjkjgikmm}Īݺۂ܅݂ۀǖllki"zilojkѽٰѥ܂݁ނ܀̞nmlizkjmpoƱ׳ʽ߀݉ހ܀̠pnmjkئ!iknqqúӺӹѴ߀އ߁ހۀ˚ppnkiѤjlorsy̼µҀùߋ߂ŎproljТ%jmpsuuȼúױހʼsspmjѠknptvwŵрӀг߁utpnk؞nnptwz}µ́̀ςй!txtpnn~nrtx{{ëǀ́ij߀ р}zxtrn~nrux|ºĀȀɂƯz|xurn!nrux|϶ŀƀ¥ ׀|xurnnruy|Ȼ  |yurn̖!orux|  օ|xuroqux| z |xuqqtx|m ۀ|xtq ptx|6AѿØ|xtp!tw{Q*Ύ{wt#svz~hӱ ؾ~zvsԎ+vz~эހϹ~zv$tx}˷yހ̳}xtƌ/|x|s|{!ɯ|x|3v{mdZ`ui0Vw|u~zy|sށ{vŊ7y})   ZПmwy}ztut|p!ι}y@w|J(Y{qSAMvmsux{~{yxl~nqz|}}~yj!ĸ|wΈ*{ʀXmnruw{~}zxvsonַ݄ljquwwtf݀!ξ{)x}ʝ/hknqtw{~~{yvsqng~ވ˜tehpqod!ÿ}x*{k:fgjnquy{yvtrnkicr܀܅Գa`gk`p!{*z}{dB! >fhiloqtspmkhdb`Y܀ݸi[^^ai}&¿}z,|$!@y" =chhjlpqnjfc`][U_݅܀݂ΥuW\Q¾|Ԅ.~e 5]gfilomieb_\YWPZݎ9ܙL_໳~/};L=+Qeghklhdb_\YWUNLݐߟՁ븲}0~ʴsHB"@^hikheb_\YWTRLQߐɀб~ڃ1yG٠!2Qglifc_\YWTRPJJߑ܁ځ̀ܲ5ŏ2aۼ*c"%+?Yhhd`\ZWTQOMHAy܃݈܀ځʀ̀ڴ5*-#(,05FWab_[WTROLJCU܅݆܀ڀɂɸ3فh~ǒ& $(-269:?JV[ZWROLIDH݆Ʉٽف4ݿ #'-15:>:65;EMRQNID>܉݄ˆ4б9LD"&,059>?;71-,/4:?B;fߋ݀ˀ̈́̀9Ӏ3ȍ"'+059>A?;61+%=݃ނ݀Ҁ ΀̈́̀R󃉎ڃ #(-16;?CC=82,("|ـۀ΀̈́M腊V#(-27;?DD=83-(#ցׄπ΀͂̀S¿؇ɱۓ"',16;?DD?94.)$qׁрπ΀͂Yʈdռ&"',16:>CE@;50+& ]ځрЀπ΀́̀Jԭڼ"#(,16:?DEB<61,'" Q܀ځрЀ΀́W¿]  +ӄ$*.28;@EFB=72,'"`ӀЀ΀̀g'4!&,05:>CGHB=82,'"hՀ Ѐ́dՔ"%)-27;@DIJC>94-(# _؀Հ ̀1X1 #%)-16:=AFKKD?:4/)$;؀ԀҀʀhI ""#$%'*.149=ADILJD?:4.)$j׀Ӏ̀G)!&'()+-/37:=ADIMMJD?:5/)#́܀ڀـրOԳ"(,./2569<@CFJNQOKE?:5/*$ ߀ րSפ$*/1359<>BFHLORTQLF@;50*& 4߀ۀր݇Wؠ!'-./248<@DHKPSVVQLGB<70*% OπTڙ#)--/258<@EHLQUYWRNHC=71*%x^”ڟ%*++-148=BGKPTWZXSOIC=81+&U¿ϕ׷&&**&)059?DJMSWZ\XTOID?82,': ݀Uÿܕ<'("7H/7؀Rw#?Զ69BGMRW\_cd`\VRKF>71')#7ߖh~0?ELQW[_cec_[WPKD=60v7Țݯ&K8DJPU[_cfea]YUOIB<5(5Ԁȁ4ږsז2@GNSY^aeec_[WRMF@91#ÿ2󚟥۵H9ELQW\`eec`]XSOIC=6'V1ZM=9CJPV[_cec`\YUPJE?8.%/ğ19CIOUZ^bdb`]XUQLF@:-/ă-➤ǯ]9AINTY^bdb_\YTPKF@:+?.͕B03FB1-4@GMSY]acb_[XTOJFA9-["*˸P,8?GLQX]aca_[XSNJE>5*m -ߡŖU~>$*5>FMRX\acb_]XSNIC83S߅%m5"-Ub1AIRX]adc_\YSNI?5] $ťͺG6DKS[adeb^YUPIPY`fhe`ZMb?  ,宴c?PX`fhfa[Me3 ^. u$Ŀ-ŲӚ>ENV_ehfa[Mh"þ1򯵻ΘVIU]cgfa\O_![ I ½!۳˕EHSZaffa\QP   ٓ"Ķ͡^DDOX^dea\TH-gQ ¾,򳺿bGU[aeb\VHldz#B/+䷼WCQW]aa\WO@< % Ŀչ~7HLSZ^`]WQF@dy,½+ɼΌDNUY\\WPJ<73/*%"9OQO=#"%$ #*8::98630-+(&$ $%%#< » f,-3 21/.-,+*(''&'&$þ ܞO((,+**)(&%!uےJ. $&'() (('&"Z–l8#" "!! 3YгySB1838J^ۀނ t8mk@   #.9CNWahotuutohaWNC9.#   0BVkżkVB0   *A[wʹw[A*  *EdѼdE*  ;^æ^; 'GpټpG')N{Ȧ{N)&M~ϫ~M& CuϨuC 5gțg5 #O༉O# 5kӦk5G⾆G &[Ϛ[& 0kګk08yy8?Å?C̋CEΏECϏC?ϋ?8̅8 0yy0 &kk&[[GڛG 5φ5 #kk#OO 5Ӊ5 ffCC&uu&MM)~~)NN'||'II qq  ;; ^^*ׅ* EE dd*ن* @@ [[ xx 00 BB VVkk"ـ"..88 CC NN XXaahhoottwwwwttoohhaaXX NN CC 88.."ـ"kkVV BB 00 xx [[ @@ *ن*dd EE *ׅ*^^ ;;  qq II'||'NN)~~)MM&uu&CCff 5Ӊ5 OO#kk# 5φ5 GڛG[[&kk& 0yy0 8̅8?ϋ?CϏCEΏEC̋C?Å?8yy80kګk0 &[Ϛ[& G⾆G5kӦk5 #O༉O# 5gțg5 CuϨuC &M~ϫ~M&)N{Ȧ{N)'GpټpG' ;^æ^;  *EdѼdE*  *A[wʹw[A*   0BVkżkVB0   #.9CNWahotuutohaWNC9.#   valknut-0.4.9/valknut/icons/fileclose.png0000664000076400007640000000200311126705363016617 0ustar ejsejsPNG  IHDRagAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbtg@~-cbbr($?bbA W2??/##_n޼_u捣̌-LL;`z [Gxx=77؀_1ܸa}+Wn\ &&) }fwff ,, ? 5(py?}z  fe߿vpWÛ7?~tw 4 e/^Vz @1[[HHJEE @ACC7@1))aqqA;wAPP  3m/?00pr5IJ0((H׷a͚ >aЛ?^ 00!/G]!1яANN  ֮30,X0@B۷ O}d001ܿn0ܺu_s@͉l 04|X@aL!쌜 QQkӻIENDB`valknut-0.4.9/valknut/icons/flag_netherlands.png0000664000076400007640000000034011126705363020154 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  tEXtCommentCreated with The GIMPd%n7IDAT8c\'N`ԲgGSe$5M[jdyhZ; {IENDB`valknut-0.4.9/valknut/icons/message.png0000664000076400007640000000117011126705363016302 0ustar ejsejsPNG  IHDRabKGD pHYs  tIME1.`IDATxڥOQ{ Fr6$$$cI% GLLsM 5ڐBqnw{3c˝C,ff޼}͛g̴,(>\.,eHsߟ[h5}adgJ64F#%HEἢ5CcŬ,o69 5`8øj @:z̟?oN+{ _a셯_1|:?>6V~c߿b7?116 s QTŘ!߽RĘ=*rǎ5C!Z @C!;++#3#';!^.W@O?  @; 4Xr`G(a= .]@@^ tf`|i ' Y_?>'v?A O80‚ hׯ ?;Û7؁3 LL@W`@~@Ac0?Pd 4ϟpb/^axSEׯO@ Z`F_??#Çׯ} @_7778l (Iׯ3 `2  IENDB`valknut-0.4.9/valknut/icons/exit.png0000664000076400007640000000147611126705363015640 0ustar ejsejsPNG  IHDRasBIT|dtEXtSoftwarewww.inkscape.org<IDAT81lWo[H. v F$!20w #+HV !ni넄qؿX]9:s'cnP*=̥Ry:~{ms<57],-рhQJ)s:zm2dS.s8=1{&Ov:(Ɛi4{" ˌ2i6(Ϟ%ekm Y]%Z=F̙3Lܸə~}2YRt\("XYAE{u>)\/O"/^p:ћĴ*^1u";aXP9֌ul?~LjQvɅ<{F둮T&9ϟgg}ﶷv:H.(}Ztu 2(zqΑAD/_F>GVpΡbkIΝ$h="8΀N&IW*|`<" ~M2ĝ;YYᏥ%rF)R0U6ZњVcKԓ'{HyO6#}pa*!$Ẕ5*n1~IƄ!UG(%(#Gr>-/-- uJA  2F}^]EbL$BjmQf! Z;m></4IENDB`valknut-0.4.9/valknut/icons/emoticon.png0000664000076400007640000000155111126750142016471 0ustar ejsejsPNG  IHDRabKGDtIMEN] IDAT8eMh\e;?cOغH]45hAB B] ڕR]CV XܨHhm-DPJLS"v3dr~~"TyWgq8xp׍}ArDu O~;r[|Fx3HHP)lo^=^9Ӑ}p[t}G:vf>JN#_@x >B 'aa ?sZ.n _oMbJb6/@Ć""֮^yGQ{ޟlS'QNNbX}V9;rq?x]>\znT3J%O".g}@42gϏ081(3HrTCsJypb 5mK b}}$m;}p08A<EM*Ft>'ABĮ) CE`Z&)C8 NV})Y55h@-`a% 1yInlk`V[š A y3\.|ovB n/Nc6YrJc*uT/[qzeۻ~inWMQ--a" ySȮuxnT3[CTsW^#\µOԮ5k"V@l*auT)Ak;CCD198nގuV=6k Z<%[@,?Kee.di4$i=]XP`m8 ߗXIENDB`valknut-0.4.9/valknut/icons/zoom-out.png0000664000076400007640000000144011126750142016442 0ustar ejsejsPNG  IHDRabKGD pHYs  tIME-"IDATxڕKHTa;g(=$ljRڗ % E( Zhe.Zhː,ҞcƩqfw9F:9n@Hֶ쉂a\.x2 ENO^)  |6*=s^[c==Vv4-,(Wl%P*C(Q\`g.s*h+B $ƠPU>776AqTYbFP9WUpp}Uj`N)EPķG$2.@IDTVm! P@DFAȢ.ˀ4K٪)cрذlq@)$࢈ODU\"y9BA p]T2ϰ[jKBζpȫ*@ A"GT(քӱwZ=9ۻx]CMk!O+R*V cQ<5/η2B[U7GN9/ιo슬L_8i!d%ܝ~2^ zvټ#Oimw|ŷX<)={hn S)_[*^;9QVi}샾<.nm3mwFg?:Rl\k:? M[IENDB`valknut-0.4.9/valknut/icons/editadd.png0000664000076400007640000000124311126705363016255 0ustar ejsejsPNG  IHDRajIDATxuKkQ3&iҘB!" b.\s… "ܸhQDo*J4Ir>3CJ$4rV8}~nqN%0q<~PUw毘}q2)-P5+\{%+.#|_Y.0y>\<||8Y={( oƓq,˅S8\.FCi0$Iu]_ E1lD;ͻwp.s0=]iT v0_L(U<$"m%I6!$j-nRY"F ޭ,a;yE5-r(r0D5&l_2R$?c@A[.j74:dʘ==t-'~{ @$f~:u 7ގ0,br>@1:8VD )un4I[mA* e(C603%/B!= DĤ@ܪqd쳾;'r0F0J)c) ĢQ4'GC|!'}suJq9x*NNABAyЎV8<4MsL&an;gH'_;iH4%oHȮ"6FflKo7@&5'08W p0H3~ez|\XK˃w+ePAPV^E$ڃVж,XWf}Zԏu4vK-e!B@h 8[Mێ(Zd_BőQWogvw90bH::TIENDB`valknut-0.4.9/valknut/icons/translate.png0000664000076400007640000000142611126750142016652 0ustar ejsejsPNG  IHDRagAMA7IDATx}H?]mJSZtk+8(iŘ2IXm$ADB qqfYPwuUbߢGab ?aSUNsRf:m]b: aAH7Bےϭ)5DW哤\Ao }]d' @snРgϴa]IQQމ^br=O;19^za^C\lWm7/H쒇\-o:PFCPaȠ:utTFh-~td79Awz`n|ʥu>'@{ΉۧO-x^0_]xP4N_nqL1D1-NxoEږH/Z":ڊ]{,~~^$}D?<$25׋L-'M-X ixK4{%& >"AZH|X_xF [l9 %$e'IENDB`valknut-0.4.9/valknut/icons/reload_22x22.png0000664000076400007640000000261411126705363016767 0ustar ejsejsPNG  IHDRĴl;bKGDC pHYs ,tIME 9'JIDATx}Ml\|8=ؐ n(i( 6jK VccSu_bbJiZ)H(Ăi%$D6:`;=3y>]L:ʕ_>o4Y̓l5nl,o'Og1g`!!&a:"LAO:u+ ^A |`g}Srj Viڽ 0iky4aw 8}x壇#%T'J RmVa:??Q|[rOȧ=&K ! S(PJ"858{mhuxҞ(t6|t⹒\%J4p X͑h^(V2P~PW;_]t8yh]՝&&7[ qbKZ&?vXk&s[zʬ|]- R*CA2[3MsRD)ɕ%bՍi0 *+r"[0צ密tR^bVB>;urnB3( }Q9,B֦J 6dLGIÔw>jFw슬J,sdH֓&4}q@YWs<2SȻ ]9xn4cxwx=,0UvxZܾmB䄡tХ޳<=|Z J%G' fB69 0`Q,Ւމ]1Uv¡>R䞫ST!~06$lbzodEY:]~Fs`F7z+!#!)ݴVU̅,W7S {۟&lW<`5q8_N  ^>I|DuQZFBPpF ;~VVV[?[#lz6PΤXri=KhR֛ o|t}V_sa-b8Yh3_N;ʌ^ ķVoGs_6"oFflg.\Ǭ6b8e OvBRSnekz?JJyɒJ\G*|ngzl6O_[Vwpa[Re>*%sQeTrHjZϿKka?S_x6$KKK/%P\/>T?ƠPvhtXK(0HFP$ nE,I`:'HRR/Bx] 8B` ?=׷k#̢B/YT˥A7_|F/Nˁ:458T]r=ʁ E60a?V>{˗Vwv8~ .s̨d{B±&O̬,,/%lL:Ҭ,~tGyᅧH%$}OWn\X}.?McNΣϨ& D§ eU)? -!ęyqncH(p&DVNBI( 0l2vA ~AJk,rt a9 ؚ"tr;n}4vL ,4ݩ%(-ox7?Vo g8pʥߟ PDq!9@GZ n8{ɨd~#IENDB`valknut-0.4.9/valknut/icons/bookmark_add.png0000664000076400007640000000130411126705363017272 0ustar ejsejsPNG  IHDRsO/ pHYs  gAMA|Q cHRMz%u0`:o_F:IDATxb`>U1_0b%A T:be lzZ0R@8 ``cgscrRfK@a5mC#cF  OD- u1A/Я9q3 "/cx>߿ _|d`` @= ƿ '0;Y%A}"@{N2~}FoXMfG_8qp60Lx_ïes[1p`1a} <\4" @@p ~cbPn< @,(!**ǟ@Vӊ%=}d Jfu  o\doGMK` PVœo02<T@  `u /lxDk%YL_e2R(C$Ig8pԍ~@r7v"x+ <QρA` CH38@1!zIENDB`valknut-0.4.9/valknut/icons/flag_poland.png0000664000076400007640000000034511126705363017127 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  $?etEXtCommentCreated with The GIMPd%n1|̬y|8}&L {btyb]Op=YH6wP 󮛖G2XYǪ):PvaP{4֭-e UMK-Tҿҝ͢8J$OQfq.b:6B04'9\x_0>c2Nº=^7o %s~#jUQ*InSp9n)Kj|1ƅNTg mE ݐ83̔gʣHUWȎ67ݚ|LL̾h)67QיzZU-n?A"$T=,!Rѐ\q=>पڧc4RmތU@o(ۢКIENDB`valknut-0.4.9/valknut/icons/view_sidetree.png0000664000076400007640000000121211126705363017511 0ustar ejsejsPNG  IHDRabKGD pHYs  tIME+ IDATxڅMOSQ^JPMդ B M $&ӸӍ +ğ= B^#X,mǹg(JK|7L̓ygxJP.&Ll9T&XH&Φ;<>q*RG;X(R8RLVQp6m&$nt{Yb!N$N8nM X^Xqrtѡ~ &UfyDE!t|+j9Uv:aCDPqQs~rD=teVV+93Yy20VsRk 2PzXm|7q>0| 9@8VVV> GAW,CPk/w{ 9DT*=\`X1T rk7%좢X{(J,--1;;f]bMƍы ;Ob 4`G\}!=)[cIENDB`valknut-0.4.9/valknut/icons/icon_48x48.png0000664000076400007640000001273510523776621016503 0ustar ejsejsPNG  IHDR00WbKGD pHYs  ~tIMEzjIDATxy]u?}׷EOEU`#bcf (J /;Xw=Iǣ=:;sesaW#ݷ|lEqzZuLoZk2k&΋ p]֖+r45iq\{-|p?'EcMZju 8%3f-[600Э:;s2QJ"eszc,Z8a|<2'N[U?=XΝ۷{ћOֲqAOڲCCջX1peEGGcڳ}ڴ9*,+ێW_z؎p%SW?u'/;1~&(G]aGv_`ΜB),%Zx)}E Xh>ipwLںX5IuO%M qx_OݷoK]zKEh gc"QlM1`Z. 2:rΫ~X{=;g|׿==g{)Եkw|}d$79 B\EMS C||F*$j`4`:wٵk _'yϟh>iOu!k/?xxpE3oenhfw' ;AȌI.=z{s` jӒa~gb RNnsqxM$=Oz8<\/Zï' / Q{DŽ %Al0G1>8q"F㴸t1!,:3[,\8u =1WLݰ#^/\6SP\6514E1р$& d"F<X M 2ر,6ԆD1ql7GX#(Z!hݹx8@ҥvwWB.vIl 5yM21` VMFB!Hbo'GJ6hEzz7NJ֯ )3֭bdDyKMN툢0tsO:t|79|Gġt{40AfZc(<)85\?#S]6/n W3{O@[Oi(Ay3lRa[nСݏ=/DŽ ڸV.T(v>ժ˺=1dV \ƌqz0cձ<} rmm=WbhHAKB PqZ: |/O}CMpDN!]hGY/מf_%E& 6*ި^PZ&9GRϞ hny^ḓ؆˴i>Ve( W^]!?үW.רTzg2K.Ju x|r"f|Yr/ADE?Rz]џ :MIKZpMG ֨|:MɲsFqTO#3V\c h#"$SfE,q9!~PcXIJÃ)3i3\r9\~ `m@>mׯ=pz9! HBhW/A I("&1D!"V2ҝIh+VM+mȌC|.isD\\sEё?͒)]Il1Xo2GJ;Z*;IBw3jA3D7u6MqhkZSG0*"QkԀ>ޭ2~pƳϖxOӫ8H=QdZ"ɄAW:)%ZjZ咫.bm$[7Z4 4-8~T^HIbwEt9 䐾t]l !$a`q̙>}?P<D^U5/T)h#Z9oXrcR[k@i\J"B9#<0D" Akl5B̜_ȄI 3\m;bcc83Ph+ 5pwgxi@DVJ$n'{96a"UK=juK=2%=ic;9S$v{Fwkytέ0r::2chfd+ y:4\.u1I-%tv싋IͶ]ox0uBkŲ%_rNdz6-ea0AFf߈5Y5;8˂Dskq֟@(I] x%9~[C\°iy)I ^U$ߖp,dU @;)+(~^cB,{ ϛ5kp}s'Rџ&Oϊ !+ 9p,@T0"&psbeau],#1Xk*szBӆ+I44$Cะd- ~^5Wvi*OsxɈV1~H0lsNrE8qA8▎sXD!8^SUгc3@cUY׻u+=A!'83bp9.g4՚a箘 4wY_ |-[9%IV(qZgpr&DB(j; Ծz#0aH5:hj 4ou'GH)sk]V pٲpKiRX$`8H ټeo=߇֖/kg4-[ն6w+WN+-c+zS\uU( c-INRH} 3:JP-U󹯐J Ź(4!we'wSCẂᑌ\Nr-mLFbݱr CG~݇P'vn*|qyr bZیFK,#,F7^qP DHQ H%;־ǎ{XTBa(;UV=ͭb ^Q`d0S8vudCW{R/;d.ܣM  V738-VXT#7814xq@JB#УfV?B --cuwz!ڠif֒ St{x2Ebn{^? ϣ%m[\\W{9 *UE4!; \עAJY[lY0tuq.8COΛ[:fg,cId@_}qK'~z&_i,?=5"Ko'vPHNf  Ft7038W 5{/஛\+L.i,A ˺WjJ rhQj }gٮN5οV,{m|3 oe{AvvxuQ@(g@kn]Ѷk_;_S߼Bk'mo$,SX1-J!ۄ,h̖CRc;_7O*%w!zksJ֢[Hѓi[jՄyYvCa%ȝ]{U!}sd IENDB`valknut-0.4.9/valknut/icons/README0000664000076400007640000000022510523776621015035 0ustar ejsejsThe files "emoticons.xml" and "emoticons.xpm" original from the Trillian "Aikon Squared" Skin (Justin "juzmental" Trevena eviljuz@optushome.com.au). valknut-0.4.9/valknut/icons/flag_czech.png0000664000076400007640000000065111126705363016746 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  ^zRtEXtCommentCreated with The GIMPd%nIDAT8˽Կj@/h!̃&A{Ww犂`CD huIg?KJBIöH?(G^|*imm(ZvR].z N? ,b>Nfk 3y\i.NRә`5ù<rMJ6Coyʻw9L'3w_c,,ϒ*#Ҩ,x`B2]a3"B=~rMl˖_Q1En{>:ߞErɒ%K9%hW21_ %ywPg#dZE PU~_q}|:;ԡ['45UiY1<,BPWhq-2_= JˡqbfyYgEg-1^p(n߆e?"`SS˖Jߍ9'c՛@V\-z[ |mTyXBdҙ '"}v+w-_`|ϕ}G_>0(ŴԕKx|!$"ajՎmxbб[bat=aUvz_C^IENDB`valknut-0.4.9/valknut/icons/configure_32x32.png0000664000076400007640000000345711126705363017512 0ustar ejsejsPNG  IHDR szzgAMA7tEXtSoftwareAdobe ImageReadyqe<IDATxbdv8. $ aB@o?߿ RZZ(r?e9Ó'/hmmx`Æ>|_~|J h͚VyS]N_rw?v>ɐ q#J b1Ο߿Q]=>}NX?}[pZ Pʚ̿e`g} \2egчsƚCQO='rK>P7_~g]]Un 33gPPkQ d#/? M-fH#x @,pP!g00-Gߢ ߹n vC##*4/.J~O J_>~gae`dޏ1|fcv/ &r)}?Gq9NF~qnF6n4!?g SF`B^Y!J70 +fdgfxi&pH\_@d;BalA^' \hyYP )qo.>|1788n`to ߀oC o酋AçL 3J bz)IVg*(>ro-AM'(=78to?->(b[V~@&@Q 4`,]o ! ,E:33_`7f\ <$loQ@|Ǒ2c#̲e8 ~>^ƣ}ݎ q]PJ_ԧO1(p@8Π RV }\ba]8KXzßnEKς,^YvZlpƬLnW0` ƳQw!)!hsha! )e;)xZN>hN1E<ԫ[Ĩp)o$ ` HUO$!c~ Tm9nU=i3 K*9E VNڑ9 2>vlfiﯯ{`?g9"]U'dpr4NC^.PT|s Ad_ztg~I@)7%Q<w?;{?uaU@iM0џ<9yS*bOÇ?N[󺨨L/?x=PT\\FAosj JP|O޻,K`}͵iFhY"YʃM?Pg :`=)~ǒ~:p?KLjg3[+X=gsί\g[v^qc.[ħ*BnZW bKW:Ǘwfg: D}Py#OU|qXrsEw==ZY$gCD<V頩[??y\&c QՆ{ž-æ0kW7~*?uܨVK^5_b=sߍ6#O,͝r;ZlmICM,UƇl\~Ke-Zn;1VEbjCe\ͤbkm)s9p7T+m=/)+z6~ :xUsYu6ŷsephၛ5;_ύ1~u1yxa -پ>O4yU7q!m`Õ|.j oZpJGq:¬MY<@uJ6*7'O}}CpgrFGE 6:dؖmt~u,ph3Z*ճ_Ǡ]=I\plc [բ}}mnW•*V\Z65(=,T0Pma%p]̾{c~*|`:|b]uXB{bu^˾Yq4`[l/! UkK־2JDZCnuc ^"jnoS\P`pfT sco2|{[qƆCCsŖ=d;d}Vn?HX֜Nrϩ1*"6-bKCH=rm$~Ed ѠM92f\MX`>ޏ+R/'lKc }? lVYN ?e;{67!kS:DBe_'o|1֦ h!@y߀9n='Nf @!7 `tη#܏1 EUWKXp>fx6qY)U|7*L1f>v|b5UM8q-22Wi4+3Wsp Ô=/)laZѹ_1z@ô2֋zs1"pyn:מIiQ%txxL7z˶nOmܾ4=PL$7y(n:DTjbey8*<[z^f7O.Ѱ6cZƷqXggu!ct:ɰU*?{T[y5sXoAKƊ{Qa%f٣ŒSQL7 ITXǶg.@jg`yƻVjcVETe7F~p" >uKh0ȈK^"nO'9ϵ۞|u-0VZ;%2 6e}NVGNM)Z?Ъ'?y|IX\)ᛨ}Ojg}Co0?`:QiIZCts|+<OI0;yl<3_יʾӼq/8!@y6 xZ׮:lU%ZxqIm]v[fy Ӻ*0;ľZG1lcęIYq/Ug >]GYx? ]뱓_փ\@kͩp%98V7 Z|<+F%w+dl›u nc;ܦ:Td~qM7yN5 qx-L|>&1qbbs)Cu~-0&f@ͨ P}.Bsml=U"[ڸ?zu߉]EN6d17]i}"Yn<|UwӤ-(nOd>$Q-z95$ nv,'y^/WCXUW9 )p0TK;.\u3V 0 ϋ백hI`!cl8AK%.+qOqHNN ۍ>th+Tm2'Rq@rbG|Va'̺:طȄ\;>Ozt'y]>T,`  6y)LDj~RE0PVX* T (sci,zm? [iڤCagnEzý4p(ˤo&k7$Y' n|V9FT5fb-|68bu(̃_i%A4pD UI3SZ!Z<]EcqbriCڟ.Fp ׈ _ݾokDaȬHctvEZB*q=6QCmvZM8#U= +C?`kTL7 /e*11<+Âu38L]AJ@Ŗ\1YTF2TڬTxމɳUٹafTr͌lfdmUT:P#wTáU:{C?* /X*̿a>Q1ƳF?^z@Q\o$** FrmǑӥULʻJgk=݊PMä8v,woHV $6) +ճ5E#̂Pň #CPåشڒuMRMhǿ, sv/,ke:u*LB3V3\갹Տ8.<a #uhE.2KVZZlh WXyJN?wc%m*qhK$ S d4Ā`xޠ Wol-$ 5$<n3ֳibb*ٺʐ(:R[2oK#7f0A$̺k0/IId\c9uӇN4Wu-ׁ9Ms[;jm hϖLMQ\c=&pF}Pz'18Ֆ $!i:|= ְkQF@HT*miӠRJ6ՃBWt`VprhD4OlTyI6'/H\J[ H'Fj*4:=푧nT܈d#( I#n" &_,Qx''xw@WC$*j='v-P$v˅ ü . 4*|]E HC,++Es*i: siAEP`!?\D!;Lp~1p&w8IKP\ ˱DhT)pFe41,w,cvbL鸔"h6(|vr:C6,–9nzrӷ|? Y`] t|VJpVXahcpmޒ aXVőաU]+oBd(0),iڶOŵ L26,u#G$^O[Ap*N+YWK5*C qhs]Cy ` ڪ]ܥ$~1)Ə OUaݘ'6#mTÀyb*}9d X Dp@|O˱oli&ZM@r6-LUHui:y0R67W*&TQ{?Y$:6*2{dCWӷv N=G>| 7K\x[gyĚ KSy1?^^&k'$;LW3'SgȢ(jJuMTK`sU0sp{`i`eG>RjiD:$[+~tt#a*O&nbkX=1.*nnŒK2$a'ʄA ȕ;ȁ,$Ll#@:zf 4YDZG6fJ.a~92PaȠjl8JwJSM- P6h紾wUJޜGP+kg4)0qklk9ަ"*%L\r?% <gK=zSJ̧vŃ k/`hVOY 916F ʛRND~`΋ C ܅S<61m G w&ghrw"+&eݍ59]ׁjEԍz÷67qfٻȱi`?<>VVٍykjH )V^ DI!Hˏn[ ]$t5 ;BkC~v[rCϏUD,2r"EVt6@G$nz(9 }(զS%:oLCu8I[:# 0SL+<4u4XfŠ#9OY2vveR8kPJ 8|:j#ɡ /@Z=f)3`p+7pV*ˊ kLi4 4/IV~.lI: Ε$9KJlOd3N)r$ 'xw^hxQl~d*TV 1d8AЖfhhNbiQS./yi;T1nv;εVVlI 1``[y|%6#9 eD/y/aWY 4Ğ@@K{VȠVFe1P :3^Ye{ÚR۝Q:e'h}C3 ;Tp sY}kMQ,!!YSOUZ盧:;JYTE{Q|<\x]2NͰ%$NwTs%J1"`Ёwi5ia›G<1RQI[1Eߺz-)J*0jPyQ)y[ vuK>@~5qŶ t.r\o>$9)rGaj xI <,+73r\zO &v\ Y Y\ɔ(Qt]Cej HZ+4Dh83`6ByЌAL Q*Jߊ5EN]f}΂¹g˨"=4 IDATN)!A>Ml'r|[ k4 U 8 &a||0egt6=o.#+'l]S]=h aGq`AUbU@7b \t0a06rVy<r0[V: x*`)lCd'o٢d Qk4 Zk 8a#(FFj("JF;Laɬ9ƺtZ1.jC*LuD(>m NLq&@%iII-ѳZfv*TSHNfs+6O7_퓱+D#ey-Gk,dP2JJMR e<`٣S* nypaMʏ˱'k%g͛ X^bKV#tjĕ+fQ{ ;fp%y=ْ\plf/V>._%X~d''M@@JEmVovɶ=m'Oʚ |fjq64B!HW{-VJk6K؇68L6WW h[-`]$ZΨk%&\F-ށ܇!bN0H`np_w+n6f@%Ur>f!=lcpĤ]ȦhH.S+ؑqT;W]1MD!DbH+x9$osYV<.xj9ZUrΜV3:,qϚmMm]\.QU9wQ3MJ 3;`7ƀəW`^{CcPd4*jݥMM[ԣa_^O5Q,RUۇ6Z#$8  :L5N1M ia 0L64{!qr\?|4P<ѳ S#\18"vׁ½eoo44t CERKv@Rp/JJERdIx6|AcQ".|>o9m'^.}.YyP1^~%u :؀wf\ ƹ4D &D!Skt|+8IBsc@Tbhc@< hUGaOq]$Z~Wu D$ r`p;%Po4׺6cc@WkQ:h%czFN^X2/7{:|Bꐉid,SX7C63fD΍Yx7BeVCqų\r^>K|t:ɶf%<є⽺t-%mV(Ew@N a&H(-j1UӨҦtl TGrLATCIݘ)faSbTe`7 r{.厫쟙r cKa&q.JXF6 MtȵCQ+G  j .zVY ??sю8oAc𯵵蛅^[ژ /eۋ}^R.;s㩯# R͒[4Nr>Eʾ*8\/796^.׻20A]:s}莑RAs[@lY̍"9ʒ%p0TbPY.G;lsLv!cG5n}JN-(a$K9f Ѿ2񊺀Vߦ$ EӨr#h)T =ڢ#|e+ǘkVrrhZpR<. _/iZ!3wv 6ǀ/mY/׫l4?œ~6^69Nr\xd5P142&aBSF %k@1!S\E2]j ?|h*0UB2zHrpj Vf`hH\͆}C ln SP o=R?Dt#Ń<ZFV6$]1;P'"086=.M~r>|*z٦ܮzJ#x%{H|ӖRQ69trsEِ/%W))#15jb)堇(c3 @=+-U?S5Dk-؆rOT莳!.uT{X &hZGYL~mQyu$/#T6&y$QS DŽpPcAkV8J'l$]E^h^.P{͏]߿'7ro'Y*>3#CbD&.K]lmzB$fISQ$]0Ƥ:`;ׅ(-$0jQP&CK,kR:9!a\pЕt+ƍߨPzVFwJ+4G=ryQ!P̫ˉUCޜ 6.AQAkTU. (lLVc^/ {DúH[﷌%[l]9J(&H9?t`0RϨœ.6KVFp)>ÀHV큸 Ju"DsL+#~TD_x+Q|h  $_d w;DUNJFڻ(QˏI6c1lT9vFŶVCR,C*XʘXNlue)Q_lY4%Y&3||d|Pw`oh%Tgo؀gٸH#>O*U=׳Z l".G$32T k)n~U؈qSB )ߤXC,F"9@ @Y w*"x.&nRnpYNgihURl`A&qʯV*F 5YnZ\ȺSg@è94q#HP i`XB'`t֨AD 1Z 'B(-.t C7OeKfRQ  Z_\((3=M] eA+Q&ND.DJb))9Uy_˝hQ),"Y^סMؔDs[A`k(le'#$6A#MC (!@zQ js,@wLl6f:`&`@`I]AӐaf:.9uno)X~a/L.L$pxҹIX)ErWM{8`L)Z?nޣ^DfVY6=niD TkE^ձ3ır h+-*YWlJp 9nSW8&Y.+Ua5U{y^I6Jyq ).%B9?K+Mz|1 ׶t1C怢P*Ah^Ѝ 鋧. kZBo#?JȽ' Zb躀2N#nm4yG=S cҿuN,-eѯ-_Ywq9J@6떼\@ c)LBEox띜/g"CSҞQyfU&.r]t:NCl…Z2L\إ`Hr'QFl}XӤ9L"^&˾>40$LB*@%8=+εe`<; 2BDBB/:eCE1=/ajJ#ٗ_xjU+V0얢#``V9v@n 0ϱvw-P ,LR N=2h˜̽pISRHnnvey8-'Ȧ=ɡ>Jwnu\Ӏ|:ɾ|גHdug[TE^WkY 31Q'>픷Mn|߿h]\"'uM$wf$׀RRH$8O|nzM!#i=a4]0 Cb Ju M\'%^U5Ϗf0/D2$M:B`cadNe1v^V9;"GM=Z<(f=8z(Y *tM/U}%E_q9rNx7E؀[ TN*".[; j T@s*w?ki;CST3{.(xaZM~lO98jbdLUq5L3*ڜ!2\Zٖ1;U)Sm8|&BaTLd_ilAkޞa'P ڴG`}Cɮ&Ҩ(tXe< w2 ;N*K 76DBBS;em;WCDrox;A:|#Ne> L5m:5N7^ՈdzM@R42bX@B +HmX@3W2GSEV?!!|p<̫;Ɇh[/Iqj /OѴ0J`WD>)E2C(l9#cG=?h*Ĕ^͸) lcLsEp1QQ0g)163k7JVFPzn ?~<~؆|]$ F_s_ix p%pP;5nׯJB uHToOv 9XQ1V]WUrrp X\5yF:jUؽaJ!H.PpM85:J&]TeŖV1."o] VDvϓk!1%0-4\|m1MH8 oU0L7ؿԕuyf83ҕx8 ˶mr^ewQ?|>|: sYk7t$CϻsۢrtruPzry_d\.gy^ߨ * T:PgUl x+ߎ%e^r|h6VMBZx@5*צ}(b6%#.(g=7v@Ǩ`Jw/vC 6Vp з1Ҍ`@ Vg[$MML7 K-vOAm{4{_>\2]LH*'^~*KE1e/E'dc-\23:Ne`XEzƕ$DHy6'&KЀJ-zQ$pF*U}4GwC+%`()zYBp‡ Hryeazsʮ( @ JŊ7e &+-UJ`n B qqU=/kwN[@9o\/yclXDKf2!KFj*9\M?BC2UHIOn;x.8X!&__eۦ8zkU=F92!K(>(*ė]CZoȢŐ`E~nVƉQy҂}Cm;HM :uQh '}i(wCK-{foѓKŮ]Mb,m( Z J(~dOhsT**zʶt:r%q\-=kâS?D[c+Czh ΎZX=⛕$>ˬMF`>y&t`UeZy[%`&g[Z-_J{"ժ4`J#Jx`l %0+mQV)\^{*+<ڜB1QjvYm+ElUw*;Dtr!-8B4svtAH]lMҳdCk`.拾\2~Mp\Yƕ~l.o2Z"s*8[0!R,Ums11ʓ?M`-ۘb۾"Xxnk%4Awld 9W N1",2%@R.`V]=HJΕGLYE?M$(:pXz0 [;s`b-Gc>U@3f PYNSirv`{Y8=-I$sƪpmk6:|pCP!f8ir<^a~Tzs%5g>%8n4D;'*J=YrW&Qtf)$t ?ȣ@=+h9%Hod/#$B@%Ro^'Ps0QeIj3+% k {&;pbEy؁SL:Y|U"Ʊ,4g8}hU5e\lr$@z`PYhرҠzqP)d" QAIy32DR%3)n6'0 ?i<ӶɶMqQ~F&躁|&#L1ZMp:żűA=aٲ4o7;oy_b.m&Y_G^7BPN<>-(͠81kNeCe tE NԝoS:ceYnIgXaiK4\`Ї*CJALp{An1\u#Ypj*V(~0%^I=`MzbMcM&aԈJ7@ruH^1?iM OP3y+ VAXvӪS Sem$Z}}}nU)ֿ?rB2r^̿[xAǬ6yE պ&cP[fT2A)]%15'A" _XQ4:eD2VӁ, M99e/mlR8x)iտM ܬe(Gĝڜ)q#VU&cTM#6)ThW SJ~HHFW1HK#BY*30!C?e]c#g.RW*lig^gqLGkbm|ۗ\/7g4k^coQt@\a'?iU@p8/ڕ"̗HA lT)p O:L;J('RZڥ9镇8R&ݏ ۅXb*/t'3Tj۸7R9)Aj–-"ޭ[5^l1lIM(3<xpR P\`ދAhe11Ȗ 66o-YXf@8~z>D~=e;S I3 iaL _<b2#KW8D=w^fr\t: BR˪Bl1x_F.S95r:tC*4o-2Eu ؈#yZŮ2~RojP|mȾ2Ɛmi,}*!Y].<_l$)=Fw`*xm`}ϼo\*܋[5*䘆PY}v8T]I6U]PkߛsJ1 + qU\sŕb.aM Wi6A8XŎ d_qp)ϵ!,6D|M :IQS2=Ct*A6%C7.l/ apqPbbir>ȫ땶H` V>kBrm^T]`j.ܾ}aR:*3NL/y_2&~!,cPzWAFno?2!y\Z'!xydӑ 0v?_y%^攚k1<|#y|N3B8ra ٽ{kث{BvZY ca"CG=`W# G+njز"GJ!Ɂ8qI1UgWt@ TVO ~0`HK+^r=9p}ģ,QLH("Y\\ޯ|yQF`IUÑ A; 4 |8}M.yAxpimU 7.۴]\)v=Č J:cO}OXڝx)ց9AQn%==O!ʮP8D `,蕼Z7\RoDT1T1ks,TwyY| 6r~#,"9mKn}@\@mV2IolP 2ʺiَ2 riು!0r6|s XsqO]tik 2A_:zn{h#p0@䐾`rn8`_~/B%mO88r\E4s1&"\"{ 01lLPJe+td!_ߕ[@=Ařy,KK_OU1yJfN942NxO݀vlII(<!$SX^ E*%?c4Q7A`Xc hp|ATS $a%G{co%PVvP,;^Ji8,mX3)+G_: Nvv*<8F>Xjv&N扈m0C཯*q2oLZUΘϿ}eWRqjh)CL.K!$dlL:iK~`kӡb;Ob7EN.$fJҠ 6EƅPԻ'#Fv8r]4_]]>΁CӔ xHIG6oH(i0yN ~W#&!0si&Im_i wZ$q ("{$1rz N2tvr$F;$gNUE^PB!dxW$5yEV ΀GC@9v1I GиZIΊU)C}+"{ Z!qк8upAzGF1̩ȧeAEgH`f<8nTlm H"El^ؠÃ&wfi$O*s_#-{phaNE.~z=~Ս>=w$%z>N$!i-+Ov1|˯HQ!}YSg ˠIRҕ^"zrȮJiPM/C !w/7XcR_*" +T@?:TrܽF b8O\GxxKTfxQ5V|p[d*lFBhk`A'M0H̬,V'N6Bܳt+n J=Sc!XJM+$Lg.V ~$h3v4CZ bYn4*C9 z&i: @IKyhjqF`MYxiMJU2탰5ְarcȺ|ue9M-ϖ/T:GDzsƮ ?d!9u-=cRi0% T6h6e.ȖQ ?䵿z-b:O܂z~ D.$g!w!<@v./\ϧs ӳIzcM!mMzִ,E-ϟ?s틓u(݈"5HsXmLY`Q}^-7W^mW&i|zXk+yesnP%b4+*Ū`ԥ衣E"  ,vŒ'@jprZ0t~P'-TErs:AH8l^nGy Dl8M4&CS|YӶ2q 9QQ{Nǖ,%&4NMQqd[L.sRyݒ}}ɶAC0S#ծl|~f,DaS;s{x3)ZL.l˂NwQ EҬTc#9]*:99@b}%Zx{fʶLTٶM[G/~# ~uR귉v+ܠ .$S*%H4ҸE*Ǡ!$<if?Ts QA4H MrP%X+s|{5 4TPvF"81RҾ/y>)=r\r,ۗ Z"8/umŊmMOF{{Rܩ5A)|d-~Sw 2ȪxiCyC" *&~e;dNr\kТJrL+@&%q\USs30 z!mjG2de_jlT;׀9O9s,1HӒdx\%ll[6Z ncG^a)‚R[yQ-3IMC Ey3_ (a`|Y:80 ֦({s"xY":ɖ<3dT7<۶ |FT |t XN 1}㞲۟gpE ئSlOHTCv)[82a|ʾ8n/sV2ìLXga߇jY9[Y {N7ާbCG Vi{ lWD:z9g5TZ}ca!Je S,5P\ADp%8T/MtFsH M3Dle zYg%_Ꮬ&sf)S.׋OgQbJX%$A-겍M~K.n_9IJHʬYv!]KD]ޯׇKo_)1te k}FK{,WWz۾E IDAT ^3 #jݗww0kDe˃f'GrΈA $(&JI4!.:-![uRw^r2켲@]ݒGg:k?Vި|QLk>fWM o ѷGSr~uFiKG*t5j&LzHμhmcl~O!o܄C&g"5 .sUh`T3H.JƼdN||7!\Bmq>6Itj9{%@ITxYg/r^Ogs[S웳t uA"!tnL3TKS_8\ uK̓-Ps'S x]O䭢Fs(wbq4z( 67`"_(d9*_*dUTꤾpsI'ltD¡zp٤-*7JQK=bǀZ.cqOL6etEr vȈ(snr\m3 DlmrY?0zr>]dr|-PXmA\4N'7x{b`"A~I640(X@M=Kùv&3b=@mt. \pLqt!drN!P^66%kAPnuƱqMe޼4&7ak?pyм{|`3;#׏*/F2Gr ڎAb2S.u y;Ѝmn{l߯X%eolƚEsR]DeJB*ke#+*Zfe6ݾj*)(Zjs[yOq9uk> MJEh!aҤ!,89^ٮ/nX]|:XI;qߠ!{p⃑Q[,!?3*r0s}טroJ /ü\Cbp\?v1r }ơ"i7IfnxJFCl,(8kINc!T#-~wdLΙv3H2tA[rM<;8/jC%Jq0+L<.t'O1 !^2|1oGB7|א,C0-iCձWNb ^0/'tmV顐Ui|߿~DǸhȯOy۴m!d2t{Η l)N,Q1&'$rj(vm֓AcɍKn 7|АN KTkXWl9!j:!r28V#OwZ)N*BR*£9'AxOGۍN + N+zV(!!lA ?Ua)uA4 v]CJ)MSeO&uč/D4͑(Gn%d`"qJtI8$MNyCV zux`^Y!aep ux c}>HzHc@2tǕXfr ͤLG"I$$w̃imQk rzj@,"K3r9C$Se[!%oLGfG-T:zŌ=bɨ텾:Cz?6! )UɸոU'Ji>( 2ĜljFjpX|)JYtJbR,iERW2!ų< .4mTl_PS9\$7GigL+f W@('U0]k2)ex+c.$Ȓ;Ii6_|\W`Ye;꾥Aؼ}}aY(ӌu]q1x8sç"s@f&|(^Uh($TE I1GC_A(%d@UhBXݓGZMfW_iRVQiAg$M )ړvw܅9ǧuk&x>n/~%GZeՒ> =[p@Q=4\(2S-uA$P πat@6(! d^BɫJ򡥆ث7]<[L=Z&p Nb; B J""52MN)R&}Xfhkr^ۑV}sI-E G$*3B6kQ;Em[,>yJX8gIľMqL D Ujj=X.Ziƻ>(W?N#4Y^R-G_'kS|OO+M CL!mqhT)20\^iTJrg{>dxլIAh-i*6v?4kml:pLbF: њ7%LQX3I((m6 )r rP^ R]D+ W"%2MG# DU>g @@H@EAD-=A)C0'""ٻą"tCSD/Y&P*G,WB_->i QQ /8$[JTwXALFt`45b4Oٛk 7~㔢O'u^BP\ ϋBI[`&&U4BB7?) -׹c,I`;0iKݛxu>KFHVE!%urFJ)Q@r)%IKIψ6=EՒ= N M Aeox*(JUJf-]8[2Z1`SrXN`pHe!{h>x%6ɲߑr4 „BM`!.y(5SGyfXv-* "}=2mzP UIM{tagȲe3N-#ݒQ`'nYΘmkVV>N3.M^4YMUD$v:*],KqS[28&8kUV٧#x\Lf(qhLFI~Ҳyn6e} N~D է,uc|c5Wr8'&jWuH%%t90~q2v|<2f~بhB{ d R`_}8*8/֬9=s7&hsvw]#? NSەou 5*e@fp5tC?LYLmr>ضjc,`^VsS邢ez: Leڑܾ1y'x];@\!Ήƕ1vlĢjAvMT .n:y۫jOi'SK͕\BgEoJe!\2lU24gFb`(_a6-_a%6 .~.fVq24֊׫177Y>GmoQˠ;*hhԳ&i4ػ++%G#ox(l,^%ܗ'vMM|͉|'}u>cL юH$f${HLr"$.=^d @>!x]kY%0ÂƺM+^@9ZdxEUI:&:}X:Kk)KW2 UHY-8S\I^Tt|:ꀾUm}XSڐ!pe0P]ҮMp S*L_&eI4K#zVjzDUgc#ej6ެC[|]/)<P7htT,} Y1ա+qlV (`z9+u2F\hNZTF=$Ź̝YB}3ȠfJF06VML+ב!]o;2%R!O.%%zk8x;}~@$~cA@}gt?Z/` '$ u%yW=ők%j9D3]MXҲSH>g0aӪ5%bt0&JCE-"D@UȓE蓖zXNBe*PO4zkI&))-I^˃tQ_kM`rdIU_x٬E%k=vD*iBIۢMIbRQa[zY޷)3wohOUk;mg<}_/3V|ImQ]oï{<+ͻxEҲUַքfATk Fxm,3{hT-RRêWmWw`_ N}oI1^Jd4AŚdD1f{,=DV(zmdrC.lI>@SB)x`^d]Q q.! 8ML"tW71^IiY^*\vEr?KgN_j ,SC!G>~9wbC IDAT>OҐXz[T1=EU"ddVvw\Y[wbݠ|8<(mz,| /?Ojui΂fSNM1Y+LTI%͸BS>x-5ϋe>t#D$(UX=^r:0I#!y$Q>,gvQth0[:G8yryX;De^"J83US*HS,f 2!RY*j |P^(q{b@T" εWҨo#pJ5?8rib7<<%|GWdE^J7;R5r>xXЊAǕ¾W@ .+x:FS&yRojyjZL?qu!*+}R6yD $^J0?DNwzhgE3,ܘ HiZ ph$֑Tih )Smu#T1ʜB𺚂г8Uȍ%=K*4 .|P~6=Qouku-_Јl+ Κ(v ZZLCo?BIr*S}djbξk!L0*)qܕ=IG<-|Ʋ,xmK\$$uԵd5x/er눠 e*B=4;Kkgc|8>*Q~8tfƽwXH?F(uHX5rs_O4PyW10:O T2 I}zU]YI@zr^(̅&B12٪4IF46 @M Wby7YC'2 `) *RRARkg̥ ^0CD~ q6+2ORIrjbOnGyq^,ˌ}߱o{*黨#|? buSxr8U|DA|7nZ[/*qմjH$N%VlS]Xq7u4a/2-IZp )rb:kiEvF`p8wKA%E<uMVhbjO9WԎ`5tVIPdBL;)n{; &`) ־>ԠQaHXN. d^3'䣚H4WxnAKi&-/Lk /ы9Soc!IU&p rWԌeKrV7kr6U{)xm+A ZzH'27='%Em!\zκ>{&"WT)xUS϶m\q>_;9iM7&l1k|gSHvO+ޮ_=L"H v0'W7{n_٫1%O~"y׊iQ(PEE"9\VNPM?KM}0+>/u#dgHc=Gzt՜ 2E<*IkPIΑIHq`;ϫ(ڑG&FFj[i|_(Ď :Ŧ*χ:G6 @i$[{(CXZbmӹ]]̧JRz50 0e<5]g9!lUgj>˲`l4vUT1"ضÅ;U4!RPr,4e9c{bZIa4 mCZd|oכǽ7 J TwpM uMUGN=z(ۭM1w OP랠jC2EEvhf _s*iN)_BR?aXˡ$ozByiCb05O30UU| {ɡ) ?UO x /Ś":%3~A {7ndǙJcBhd2A9I,N! 11LW@T3&9b,P򍭵˥U=j] ãsP^H&c0m'D|h]~ڣ|=Mŵ9‰Q2)4T(X;==Q==(Stuk}Ηˌen9=fw.W, |ɡkcj|w3J* h )%#``wp ch};f8 r]U"6xJR^'Z\|) J S Q"SVH_6&59X&Z>xvko]mW!5e נzk 7;U$sE2K%WvEUR0xy\645Ik{QPhϪ^x`ڦǩ^=Oo'\/=0)B&| ; q?{m.*lh8vFhʚĶ6{Mv'# (#3Ii6`z7lxnHO2JirJ5+lj XeCu` EK醸 HDPA8v:E2]ihc4^Pa41F*}ESi>@0=(i mo8s 0AA3r`[ܫe?BC監ЃUrL ^`c-Bb Qv tf 85AkW)mE׫ ݡ|vDz dyԒnطŜ>X-7L`D_SZWlޱצ5cOJq>8ի'H(h4^..D"%HQzDeIQD2ҍrv$EK礊$c%5SyKX,ԃ)$<[ٯٵD7aGCRLT$0nm/颂ݑaJ6NoL [z4x޾hQ k$sp/Sqh5 bɼ%EOԣNJjb7Q$ pZdLjQ~Jؔ-"xZߓfDcs*_9w܉^sQ؜ `ϘRJgErb,tYӯjV)REe2M1PR?_⟴E2"X!fCku4bXhQ+J+f5z|2$€Axۨ&tEhB>V'n+_2JL5wTRsvy_M8*yP>vAA"=,3KHo+ML(~Ts H 7Nzob۶?>,!4M\nn~>q3q4"ّZ1r~[8ZXAs 8F!=Z߱I5.U{&nJ>^(ԫ%Vf1??\o_ \w$>W\+FVް="0*"Ssܼ 1uc5Yx*PJʵ EeC/bz*inJJT)9 ͠^bZEU# JR|Jۙ5L鸇 /%Gӝ" CkrV,3x21 v 0`Rd䱰 53lkQ?qNJ54g&rr_o;v&(tp:niɼ p@6JIXL9!ʄeĖV:UJJXHԺ6|e$y@ M j%z0 )yqF t5yWHHL=d@B+q27/t)#2UBǞHAbR|A$9q b=JiqbӠ-FW=łas# Տ1IpA_/\n=|mdGΩgq} |F)S)S9(̲dÖ&).o/<Oo}arM1 nqc&}oiPQIѯtNc}Sq:6WlIB[bKvDU.p3 Rl0;ԚgGQ{u@iКVy w'HTvq.!:WXAa#I>5í\f'eh A%=Ȱ?rD2@JRG++Ԅ  x/ɧ~rd'xN(= ^ *Ywy>Z/yiAB> KEAG~jNblyC\s9ld V܎*o/?DZsI.-<ض so(5lоԮ3ri.fY;/,A*t>ݾ:Ff>8,d#/BzJUk5]7sF&ݨNTu=Ci~@_"ќȞЗzFT~,q8rčUBbn`O -3f>v̼)QEJ~*9J_LnK]ErsٹOD׾a}џEņ0)yU[V>fp C:{c/S\sPZ_0I2 qg/qo("GjŐa>D`'V Ax CMxefjSrZH}ƾI]{hDꟛV;|rvU!~2)!~ޑ[$-> \Bh^2"E%)OE|KXO]Bٕd&gL0M #4WkWxb{b4L% !t<68(ȹrE*y6ucFQfrY`u-5ڻ&wCJO2S㧲ȐB#tMZ.5Y,^mɧK akُ"$\yR_^>6x6+Hm_"9ʀ}ao3IG\FG"1 `?%,dyWcɋ1{8瘯((`U@A:y u]kj|w{B)n>z2(|zl;TSN/SƾԠL,Io> l)/2=ǽik zkD~ ;a* ueF6wmZ_eYz(΍;r{k@xdHu WZG7PWR'3Bn_3^g }z&⿘>MH|a#  %l(Y}{"XΤ9z\x&TX@7BAՊ i ୊~_R I7~ᄓNS'N7N''OoIp "~ a zzCN_&__ Q ү_ӯߊOo_> %NN*~p _xRytj^7xQ*DN]?7cDVv'n_y ~᯿6;}y+NҮ'xoF}g9 `6>{Sr7???- rm?'9y?ޭ ƞw) p|w>xpj}'No/?/S{z [q{Rt*8Wréݧ} ?xN'i鄷5߱4 y~*xo>=7~ދ, ~]_rj׼[8?P >!_'7RMUP~ 'N8yPRn=E%#~CBs)w\!wcYӚǣ1rʏs.[E|"q!*'}&aLX ȴk-FYs)}nqqɚ˵2Cijv#yz, .+Η+ORRt|iVv޿{>_|k-ʢf, 4;mbG:2yGn)Y XW_U"Bn(c!5* G>r}Ț:&V|Єi:zӁPG 嗝U6H](D1߂_)za%tAzJ4G zq=n8`\g/+7=^_=+-__1Od*~VwTݓ*o|q n@38 E?NX,|$W_ d ^J\,^o=j "$WJ/Gd>,\.my^OʆdUՏҵ[Nk 59+W[mk$%ız&k0 ~wHBWa0G|xŸ%4h̬. ֹ1'*0hjiI.$+%/˦[H|mr6y XmELs}e\-ha-hL1?AӼ4i̖:86 )A?@[h]wU A*n-ŲWlVj3 m:9ĺнȠ2PFqʁپ+mQ? aUצXsfbqpcxA™5<5`kNLBK%HYYR%I@ ƳۘxӎL^٘' FLDdRney<|lŃ2Rn=ayݘZ VFU`YZoض-% &SIph];>Z}NU j5}߰v|rdsXNy\G|`1v.("c2Er*}Vxԧv^o<8t a*h4N,I$Z`)W6_z@)81Ձ\ ! s=?(n*K@:qbe?9z JGEY*i yo1jʳ4`Aۙ^+Hב>q4x4YUMlC"D̘Y1S0>E3Uc sp9_i cTAmtɀKDTQTcuzu^&0@J^ume>SF3 ?XitJ/r4wr8h#c~$+Ҩ7CfA6~KOm TFZGzh8)uv8j.93k̺#]5OeYGm]Z/d+bSo4 ܩuMǪĀqjէV1`Uu{(…bkhHd2mG3&;r;K<>P:f. Vvu]}3$(!I#z/,:r [q8Ip*qxN/2//ZZ_uI6d~Hhɶ*'콒iF-SPj)$)UZ6Yܣ7bbIC8x}>꠿4#Eu)ià ^hR}a$0xMT#9#r" ¾SY ""C3" K< kPN'2/,H8+tAqp?'\9Wʫ1=Xr.pOnܜ^nL]Ś׺bVbzIVCRʠKeix>:A4n`ւBؤ0tK%5ޅ@-]gƲ(L>RoިP8AE2`$GY_wD0p~e8xSHw_LUcPFJx Z mw|n@>3NQvTgT{o472 8$34f0"4TdB Fha(%s}©qku[Eyg,FEJ{qk$F{ KJF_!mVulƩ\ i\z`f?w 8$JpS9/_ 6tmbYO#Q[?^+j$ICcC)O yw_쯷[ Y욲ukJ1mM&4 맔~X R'4aejH(innSǶmz 1M %<h|ɴ;bD&Em$=o }4M:g#O)T'9L)m!ܶWr.C_-|~O ~zȜ]eGC,D('Bq%H"Pm+~:]RIN׏;-z7O.eZ $]r7. -tBDGơr")ON*%]HBKH ڕ$).3inC~~V i:Rƽٵ:ڏySHΗ3D=a9R~Y*2/bM5z *,Rp0Rz&3qe:B*x>_{i$fםB!7>m6(yxɺDlM]$7={jǑ-um˥ǖN쵬Z)V-q0.zz4:Ҥ4w rium[t ZF%@{.mj^[ >)o4QK'*FkMWէH\0cf]JR+Hn0/ +(hNr'TMm׎xne*nP2f56ǩՂj/7^/lۖŞüjX3?:ڸakyJs /)VMg!9EؒwJ&L6;(}Q P+"H:fo."PWH&ɍXyB8sWQAӞ/EY1(kfj]]kz%&&G55''BH`[5Mp1ibP\7Z[FT=2(1J ?jR ނSis%.~lLkLe6{ Mn<-ҎȞ:kƲ4Ku0L.&[$ϟ?i2 l^"&"]o.pձJעvH'y0Zb]lN"Ls#E0e Sb{qme \H_tTo b`VL& 9Fђ :+eX\HtG>c `=r4}l[LT?SnFa@/`=Fqca"pFi*x^LK+RX!H6m~Dv3o76" PA u[aVSQij 2M+(^Xzw]Wlۆ-J{]n}0U5bDpBuI>|R{2߬^eJ)2m!S^ΗfjҪ7GV聨L2*Rejv3:݄GЮQӔH=F$qqܐcY:6_ZaMirҘ:Trx~R@Ho`{GɋJuĵ8t8Yb1y9wkryVɨZR>I6V'8ƻiTz2Ds׫ZxQLZ٘`s0GR,gܾL3Η{37ѽsH. _ Պێďh[);;rȉztXաRrb {V2HzR6Ue2xyR=nxKА>*FLd?*?a2vU%&Ty9Vj=( %ZRM|:2brdϖ8{ mYC9 riq_ }2N 3Uwl5&yі!]Hg~#@PxUp*F'cզdAE8Kg8fk۶,eY>c%e9n___]"r Nʌ^ `V9(W+0d{@" +zyMiO3 iEBװ -pf <%u6QvNW⇕V5Tqb mL:j4!\F8O>j*i$:yߴ4MkKGbDzBk?@l ڸAޘ6>w8CQ)N >8"rU~nineu}T1֑,L,e@2=ҟ? wxV☡yގsi檪.V+gn_"r5~{ÑV<$fjOxa֦`%|zIFޫɪ%_һ[c.f2&Ǻ&Gm9=EHM)rZFb?7(林-\)=^ǺL6J4͐BZShQ"M"]7,k/n#yͭ<`i:=B!Aޓ+=u POk$Y2GI.1Px(u}`Ն5~-EYeM|>Q 9KA"Th2j+^󱔅.u^ ^PD -SLԮw dA5 R&?}VafXtM 3^Q*W b 8o,TFN>17. ҕJ(нt$, )_ D"8Y[)m WN`F]7.sEUض :#jҜ|mꚓg}AT:^s02)[H;M,_7"Ң #JoD4T Dpu7K.UGEex vx$SzNX=m(TD1Q%j©Ļ^@hzvD^s 2N8Z2Pf %ӗ!&ǛGJ9pućgh oCjN[칧@i{>MĜķ:N1ݘ9iDe2Q ZE&pH}4p-RP/5½fb/S|O @rGi RSouo >K9Qj#x;lwD$"+{M sqSmcJXa:8ELG-Ն܊nsiS Ǵi\O2Ȟ#XSE(IiATuk_r>ML7ۃ(a`߷(=$68'a92IEX3^HvǢJ VŋfdFM~@!wTK)]hΥcSfs}`VԪ. o#IB@Pe{s_[wRFo=# huےٕ(pПe"󒎧 }H,e?k& UѥD34QXYR- ]֠-{Ye*bpR3{LGы@bl?9 kh QS5Ez?^/^K"rCR涐r_WRB%mGsTߘPMx57R73A5'QT0 SWx&lV 8&8i*SpT֊L\.MjqÐ;ϤZV5Sf+shY'OcaCI:{(G'-}:|1곎LdM@$xNJiK!A-?e ƺGpx>!jS7+Y"1ıug7^k;f/C%:j4TO?ijz߫T;(?rx`M8mYӛ*B{Ǒu Jw`}x_0OsZKO; ,;`5"G ɀ9u% Sq}dё< 6X5Vr;ҩb{5\Nlqcf a."Ib?ԧfa1 !_OaU10}JiI-20xRه<'gùe )2A>i|'l#X'M!iS,V^.߫?bӏء*0zT)(Y_$ Ê>D*(*y C2ÆZH9*{ܘU%G](Y?t@etQH{XpE^KiQV=ERvBFAJԐ|p+~1z*&dɔ=2v?nǪ?K^[G\Hfaa\U}/t~V}\ZyeYt|_Xee*P4B[᱀t%f;4ݛdJV>{?A@= LkfI1nv$ޯV) ODSŜx4tIm ;V=7(Fsu`EnHvQlٓ6g\ɛ&*^FMڼ +_-jj"S(WiD=N^KW㮦%ז>zX)wXc^,e="G>hH<*tm:@ʴLFN]_WUkvpW,U7g߈%rku~^?Id>LįNܿbMlZoQ" N0~qHITncD.˵FMG@n*Cjm@:2jX֮2!.n;&@5]|qn R X5 A"E2*Zi}rKy?)SjjTFj4\;뻮kfo*|)CוN"Q *sR ku }~^Yh$)iFufҽ^/WϮ]kˬTTYg]*ꇬ󫈮i*1>A&/4XE\<d"+nUث~fճL )*fbZߓ2w݋.NǚH_r][uWBa2{y5Q v` Z DuzzJ[-(o~ݗ0GۣXZ`/C2tyȪ~l;$ IP}L1i$fbijFiSAʵRY Ztְ6'9*A:DpI NlVُDOYWYJu+L3 k-9*4N{u 6+Tr!FpVZ{݋u_{m G>?W)Oy!Le} j *3Q=~4Y0IG#A-e^׵1܌JP [0j8uzΒ XPRo$ >A %S9kLOL/ǔ?%d88mtv*ZuGU!??Ha DؽeG.%}oINTX5} ;pFӁC>3ˢH0Ivkg|/ݵ Xp&!L/Q[}ŏG驺4(q$kTv`k(NY`Tn )1PC {ceԨp2ްP`GF4@b>̼c3^o}k0T?^1AgzռODSh0=s7'/zPˣc*jPO@g!)!hW_iFPZiq6:_}FEYPZ # VI;ʩH^>ߛ|w 9}8Ⴙ K|-6t8/߿BmOك--x;7!\^?? 2is#) 2<σ/m25~ ;Qd'JZyC[ $kbpWN!Ӂ lm^z80D7U#ݚf7&FNTtJt?iD1Js|XI331) !3UJT3ENg .B?tz4Px@G}ba()W]ߟϧ<_,K/Pĉܻ|.|wFea7 7Ћpv13GU0+@g5t# faH@vW`a:b4\cw Ow0;+BdưS'/BͬE.0U=ʾ2Z{( *FK`7ϨқSKs=s <']4K7U%hmLNMUtv7,Q*k!Wr.xtGC5a?ܙ%)HIVV$cŷMR~gNL'*EF*L'Vĩ21`IQ}S?(ȱ'[MWNAN~0DiwN nruR玙hw lMI;!phI>KѾ>DqT2*AL%5 |`3lXJAh{=QWUy4 #`zQ~Fc>gt)Oqmă-tfJ5/R **yiAy_$6 X@pJ>hxX/9)}Soyl%?2 Sum k"BOaz&[da0w6JsuⳈ$=}K?sl1۵EsbWrݸ YFcx`5D]z맰ǎF8S<œzaFX`NV[} D\U-5(<4ZE+!%bjc'WOSFt<m e uv8QU6 -D^=TzD˻Htph__(DQod*Ϟ _׵cRUt=m GwRқX郎FWXHlI}ZJ'Ý=6ZG^Mm E#H`iG j1Y%u6y`6;PA`]df4"7 [z"߿ZBiO1HŢ+W 6Y2Heϡ 9AGJSZwY>@#ŠDpht&cSs'v2GYTB4m2[eT9.z#G"K|oJ]/Q`Nzԗ pkS^۶K%rgcPG/7L{͛V hd$ƻ6p=0'YSXeuȢG>*4I2%1%e0iVOZ8iO"w\^Q+R2+_XBᦙ,8Ͷ~?v%6z8RG,[ů3=~$l] yџ|Y @ ch\ i8L9J~ǟ꒜N7(LB[6 Pٴ;. 3- T.SsG[O$J\Z϶z87) E3'͸(B~jӮ nWԲ]7dɏ[TJt;=fz~WiKH( f}dA`DUUˊv7;sR# _ [5gz~(RQIU8IG=dnh8M`~ʴ}⍢uewe YI^6j],YT*L78@C}`Rh$BqW=mPHDf&__ܕ8"M X)eߣ6y|~|'Ly0N>@rI0K *^ƯS!mS "v_ F(#RS7$oc}uW5".*?y|| }/U~( J[M8vo +:z](y)wo0WQ]e[[a%P xAEE (`]|\8Җ*3yɮ*+^fu'ޡ!LRP)oQs;˾0b6BԑpXV -D%di`2*O0Bc@ƫ}b{!~m 7FeZf_U{]cݡ8$ M>??eϪ&. ջLU>)9.3B()z O((ݘq)=bn,ц}*fzTga_<;+k}WCJm_?~l89k\o7?c6ov_QGUv7]r6#!^UF5wG }m4)P\3T ƛSx<5;],޽#M} ͸!ŔN`Z0>ªr.bp_vՄxW(եe(~T (`Hzk>rɦQR Ch|6{o*VHo` uu>\׳i JLd]iQf;.Uw{]U=(YY*.ٚX"{3]DbEUC7\+z[kp; IDAT"wZJf 62ԥYi˦ jڠڥ=B0Gh]_۞h]=`vnk\O GVX+%XӞ@=lOcz22LĚj`&nqF͖?NxW0q JE=mEB{bǻz(&^QJB yr*߅ HY0gk N+u=jA'I޸ZZ0?.U)Vܵj}YE.zݚU|(*Yr@Tqk{mP:b'1`.`n7U j8(X*JhtQU$P̋)Y-+[,CMQ)& +&lx|pCTبnkjN 5xʯ׀ʖ *V%ؽ mO97T \ri N6Qc+iuZ٥JBOҐkj>V靍>vHJt& i*R##=ꁙ\Bϕ^}NEG,ّ}u97 NE`LUǞ\,_INB;va-v}$詅7J9q1x+t"P՝FSbO"EQSB~2kX+< bfSS~D] Xhx%*To* |'7Z/pDzǭ2K%6,$6&{fٞ{eĤ eaK'ԃjBz,j/iPW84`z 3ѺWJ`v`|K B,+&'sׇvUݹi)q k'"ҁPހk`dDq,m/ S@'gloHF)ڝxTH? @p<6D [.{Cy |Fuա'(Cc}$G32Ii}ćy }jPEbCՑ[kdB;w]Io5ZA+XZBPyгIoq?lAԃ) Tl@@lnj$=#@al+E!9sD% د`Xl`+4/H$dyYث6k' k+<6ǁ9`T}TԌX(ƐwnM REkmIL> DRHΉףl*&aҁ2/KQl@ oY?[` 95WىGul5 0&&hT ?▀^MRlM($f9h4&-CC[aMܞj^* HM*OTd`!&ƷAK1 88?iS0#};H:ty|zz>[8,`p=쫬P A@M@ c0 v( Bh9B1/^etu"Aq.Ulw/RB$fI/WvuLxMO~ [B;n8yfg5'+lƻdG=?ГqઢS%V1BN @:a oIc06Z0W&! }xy4J@Gx gy {]̃4qa~ȸc#s .iI^mnl|N?k1P$(1J#`T=pQƩܮXҋ[EF􀓓:] o(:-h[Yܛ:Y)җ\o2ִZAJ/[nt1]LED|>bjϯjf hN$)"1W]ɍAp^ nXU;ocӡƆH.iPn<-|=E_̽:2(-N zEpz|8w"KDT>/A?T_Ku! Ge$*DAA}VeL2&fz@EH BD7D$an6\>7C+*Skq0n ZL'TNA5^LJ !ODn<{o"y\>K䖩)>]wahG-kX89_ +*6f$NZPrIG:W;y\O72~;57:R4B Bijk@S2DHQuAAK(u Ws*۱ߗn89!UJ+F ֭ CgU^UT5M0k#K \T<|=+x|w-[r&⎠1`Dp)ǖbØÚ:9KSգ(:iSGGZ D_IZ\UDj %MtmX)N>zʡ((}K=X(z=HϯOj:]sQ\HYavYCM:|ӶZ$\,@7r'Qٟ6=TCL~M^MlV".nԣuZ4<)iJh, Eear NB t}6#z&.|BVc/ eu[2b{]ԋ,>;VNW[j+OWdQ<; ࢰ 9%x)i`ه3hLeI+5@ld{'Ʀ$%cwb^3^EI/2w_%^+Y9fZXw5WxO5qu)wƑ&xl/4j#" @b!oidrU%wPnA`*S)ʭzewyW[fp?40YU`^ 94zK۲FvȧŜ#A5)6JO*1:M{֕52}Ga(:Da\P ]SPebDAe5~0H|r"pɒa$@5I,LƶWAxWY#Gn޿S7r5 ؽY:٨uzBC3J5JA0݋1^jї0|OmTiҬuuz- B%S  Ѝ,5սL#4JYscAiΨmnBTXeЁ xf!R9{ʪշOq|]bhm$_ \X!֔S_v* ]i:k\Dy3RsS=%( w;~,= 0'vUŢzV m9;FR9n@\m\Ю A; _h)gHacvv<+rLNBE"76gYV{ǎôSSUIUPq:^UȫZU괟yŪ唳_g->&k[!L?倶:*8(ԝP+B]!Gw])l+ȕnF2F}9LЂ{Ga#2.qk}?_6aj&-E>JgKHUj + L7F UtrސՇ^+KG"`~uwb&w*?/CX[ld?& \wWϹyYY|(lҎyJ $@r^$3Qvo5+' JNQzrIZHAOʺBvpWqPi+=FB2j̇QVdA.Ջ+& l]onVs^megM:sMP.qМ(}p}`C8)!{P̦9# dɍd0϶Q} k* @H&QEG :$VեbsxDtz?<{mձ&EYP@6RL'&3%$ c%^Y.Y}T0*w6F%6Za#-8pc-͜F^B&}xJ Uu1-l}k]L0X{Q|t@z.WHFe/杧Œۊ2' tEHY1т c@8 *ť2No_rxAY#*\ZHa PMԓ "ѧ+fxd|)օwGs&$H*eM%t/l8}}GhkyNz}j9wFj bCo tH6Vύ@u=skR IDATX: cR$9֓3is:F%P5TDj#<BfYfugs: >/;Cz;цUbiՍaJG\X|i) +*0iupF6W)Gwןf)d_z8渓6{ "6IͭCR1E)YRt%(H @!#hB&tYUH^6Ev5+Eܰp^r@t.Q Sęh)6{o`“#_if8B 4ׇ*#k As s=R8O}~\abnHoHIx3B y@E6*I۟e&gMT4r L289 c%r#D~lJ8QJ'l|:Kչ1#|[nF,CI Q&pM @e}L*EP̄$(TFXRqqOEc&q"SXa:6`sF Dy)7l҇8a0Rpeiy%=~T)V!NUhy V;!n:_@iX˃cUIkz3`qZj@UbXƴc utfיR2KM:QǂAy !vX+Kz(rWiDx5{YW4wd@KgWB6캎 !+yD׮l1@t ;`25 ٯu%W&B9 \݊Xl" =&>n PvY:\aIpwɭXF*/RCtA3 릠`kDuIU\}:.]2<ǽ3rG.qRy?;bT!A<;0PL[2Z}*{VQ[ѣ9wyTw35=XqO.rsrH*9<}gilq5½mR7 hGdڭ^u2giy.(so!|/HE½:4Vk[gLj^Y1YAS8I,'iR z׽ut[ó> 6ޜ`bP7L]( gF#7fi yʰT2+&J'IƤQE;bT%? oRH*"Bĕ|,،1v54bY X0`%hAB=oˍvc+Ms=Q XB$  { &zcnxl0*6`w{M8,SWd1q@xO'4H-d8t&{418f2y= ə1{jʗ~D!~JY3+zdT*E6I)&FTN$`&LS'WwFvCpTK`aE _dh&v]U[?vt@u5upT*- =_+NV]%Z\DhZXy FA?c3 D%ۅi5q*P ۚ1Xm^rh@z~1L=CZL.!N^Ϝa0iΔv=]{P O%nx0ѥJ7>B0:- %mAs;Z( [$m^gQ:' hv FDP"IJ u{!GMpQ'nE1ik{w[Z4Fqx0~å ߆ܜ)9Ckď8hJyAi6f3H'6C2p|VN@!~.nUNI5muEըxv@q3/QXyS}`&}hVsI x%4r3v/aUb6z,K,67K jpiUKJøbVzn>;wIFQ'mo%,/`T`?יh:đzyM0wd aNJ&2d ұdhiDI=cX95Hc+ $Z%PX<0 z#ۗQgℇZ HJ(e^M xN# 'zR?]QêʉF|͜RA%N5p1I"Xe-%9 -OH| T1g&KO\U쳴gUAV$kT _k0H^$Ta"w>籘y@NPǸPuC,ޡ"']uK&Jb6AFRtg\ZNO0uA3j c +Ts-VA؝jeد@ Oo#k) [}sD8VVGURd WwnMn{U(xS`"[zu"KgUzDk z!DFj֓l]W "A͔gܜZ< c`@ X(mvt+zy;|믂zQG14ơe2BL&Jl,r"k =*Kz2B&@&wcpYT YēKHy_ֵtZV U|0*L.8H2v0NT $Z\xj a3]|#n 3N%!UaTuj9R `* E FͷCuWk!|1NJW꜠T' c­@J%2vT08av!:X qVn<R$N"PJ>/J~;2Fר(,VroiMC eYCK!"k?~;4;[AE;Ңgi/0޽+sY~}t!35ɟ5|U223;2qJwքbؒ6ğwV#JVE+N蘎\ 1=:yPl`f&~({@ 18O(@6_)CzPyD僜7*-QdxpR6_"G 6^%f)\~Z[qzVMF/ TWp<*<픀\ H2Oڞ3pԑkӿimGnN8_$׎: "R(1+tP0[@ 9'$5&0Y8:EGRxdOެ [ؿv³`XjBhAci7=/EڡVj^;+J* ö{6?q_ٛ^[Tz2 t_@:2Ho C~d;Sչo9yV)cil hpܞ@ͪLͲ멍'?Wj{{̒-?xbCy ך8PK#B1NJBqWu>qo.dff 0SL(m'mՊM"pb΋_e9vNSބM3h~ܭب:L]UUH(jT>^W{`GlkNU?ONTߞ旈js qKȓhc%t+)JIܴhr8&B teᚩ#4(½;OiJ1M:z[XROPwgO*Au}V!CHI >g$LP XI YxΛtpXXNU8[ך I:qo)ѼG)Np%IU+1j$JNj}+d^zTz  n_c'ʎ@=&/'oCf#ޓ/&!he -5e-6b{l*%$iB؀O@)]r$U(ܢ p=xT=d@IK(wYUtϩ^ѩ&փ|tec+fmsNf C)p7yc3ޱ@pUM6 }M+pCyR%1tٯAcP,dL\sDYj)HmGi7O;LL\rbNt" TܼOQh񨙉KU?l9uY3AaѴ!cv#]ZVML$ sNHZltAqyZ3IJ"C('Ud,Μ''(QcWVg~fW"Jo#PtN+tgٶȪQL7+ǚq}WRÌ:\T"r<&Z 2qYdV"23ܐg@$RFf%Y*LJFQ@vALG7vT7*3 zA3뺪h֘w46!} \p5DD<.պ)eMI]W#8' D|w4]DZpqޥqG)Dĭ끽4-m6Lq ^/\}C!czfDa}Y oMު,ޯ{^^(/U $(NR@(_4|ήjԳ̰Wʆ\Hf&v_r]{8TΞ r?{a=h:HqGh*aV/ƿs-KTx h-UQFQ]=MWg4Mb.rw-7 Vι^e[iKloXAPg% = X{:6$vjuCPΪ4PWF)^1֓u@h(rln/Zoȫ2leTz\U(\SUUt'uqV v]8ʊ{m`:ӐN<[.D}qSUpwC2* 5zMv V:Ll l\_%|o& R㰋L&r`ҢL_9rɨp8 "uA94 pyLhܸ.|^uM@HGpOfCÏr].ѕM|6-s 9~џ r4Okuʯz.}ڛ%;~g{L1>Y٘d&zxΨPSiaeژ3d*9}a,#%{!;^2LF=|8hW y]_S}a0N>6b4dVJ[r |qS5"#x{O%`jLiט:NJ.~*kZ]r]7sXi)ZUQ[C!Mzz8 lMe#6m"1T xĨW>0W4#]׮AU1ӫk^ڂNWp-, k?0!Jyn8 NL)៣VG).7hR•4#0+ aZ ?dw@Hf p'*m* 7dh&jLgQXć#:uUƙ5$`>2ѵ,=/xēXYuGypM !ߪa 8̳Zz]FExfeF(Xd뙭j3uއ Cjp 5֞i-=Í!{cؾ K0E5Lժ𛞹t^%z4U`ja>b:rlz@lR7- .](ƕg3qéd@,7M XM \C^A9ކ~-{WvZᶁWKT,>fK[{u7Ώ f8I"5 ^z^+$+瘝Q!aA"ڠkp&pSփQK26ޞT55ASYE4\:}- `O150溮ZjuU)22kNVz{Av)mQ.^S7W7rP6|a#P!`Wѳ5ѐCt UbC>COrA;!\ hOBFe+_$9+zUZsd|H z)*Z>^=\簑A dZ+w{l8iSUn(KaLRXmX0+Jpk~܂uD>Mٙ˥$> ٻ YNMP@haUNWYT0YIl%+FL*'0nT <TN}LA@洬N(`5Q8:N7Wwיt=MP,NT.$JFn~Z-x۠ i M7VYǘ6rvXG$2aD }Ϛ23+wbnL 﫪v⃆hRq:{ ǰ79$ڭC&Ja4d!V֫l ӀJCT@EUn]ްj5OWT=}N|/ ?NC':#M͢ AERw꿍m IDAT$E>̫IP͘CҀA̓H3HǻsrN o&qDNo~>^7VL 9E<ͰL>>KAb |gu_gT/t> 1}ⅵor~4 3IENDB`valknut-0.4.9/valknut/icons/flag_bosnia.png0000664000076400007640000000103011126705363017115 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  ;r)tEXtCommentCreated with The GIMPd%noIDAT8˭1HBQW,!)Pf "5G(4FC6:>{MQAv,r-mS,(۴Z쇊$W֒7pd@B[i/ R4Mñ&t_8M3?@ pn%\YtѴFtz!ڀpxU]yDoJBdJ=03FHfN(Jm,LfHd~dNP7)wT|N9܆b opvHF>FƎC;T|LqX;2V:IH0Hyl6{!̜9{)%gJ@.8Xn01-=24kR3CX8kg/ی`r[3R ,^}Ұ\y&k3/9_ι 9<_5u%eϐv[>)wǎNYh[wOan^@E@DbܩTTиmɿ7G%Mz>2z@takےHAPRlWO~%sn˗SRYɎf#޹bڧKϕpœ- c7$фKԔD-ɠ)H:>oKb PTY5? =s l͟Δ7?yuÐ%)xMt4u䔕[oуbbz)֯'ͦ?i/[-7'ꪧ g=cfYMb"Q92eyOd7dokش¬Jcv4qFo[_89QׄHKQc!?K!Pa/U_!9}T U # 4Cbs$lɑ_< u4EPTc+,z6 Fpyy!^XƱvv>%dqv6ZzL,)`$?3E{A{UEQiAp%2!ߣn\15>,]1WxTW@Ol↋h(g([I D`Ԑ)JSa몶ieaf\$7+h@ KtzbQ='UiT0-W^qc}}!6:rPޚN)Lq|FȯOWXpi8.h7ƣx@~)pUk{֮IA= (x )n\CQJ= n`ʕ$&JU) ZY6N.ƕ})vְaç}_U'ˊ nYG*r =BGc3e ())Ʋ$)P) .`Z OT]X:u9{۶~ӽ&NSǕ*ONR4U T{[#t>e\2G %)p H\\̭;/5̎/>x$+Kn(Fdk3np&ʧQ8a<+pX&і`Gɸrj2wF"]62#|yd3av& Ҡ\9:J >!uS${_|I\}*[$LcdJGJ] #=Y \:\@iix2<|Ũ~`4(7z){sum#Ri-R7:B~@lx, Ӕ|3$!$^ 4 4%U*̊5((XRɨeg%8NmMюWPO!x=NIj)2dc 2݃֐e+Vܴw68~G]Ϳہ!$BUB`L0Fu]?زξ3#mڷ'-/bä|Hi)I^ֺ#޽VRv{-(owoZ0?[Ԫt$`Xi" WR_W}O5iϞm@'VU-kּ?>p>㖚Cߕu4;Zʃ~wݒ%EIeKB~Uڱ޽ /VU:~)ko6<= y˒YWuUՑݻitHYأ>S2n\Q{jkct|^#_m鹽IENDB`valknut-0.4.9/valknut/icons/flag_romania.png0000664000076400007640000000033111126705363017273 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  (=tEXtCommentCreated with The GIMPd%n0IDAT8cd0601Z6j٨eZ6jp 2duIENDB`valknut-0.4.9/valknut/icons/simple-gnome.xml0000664000076400007640000001664311134123625017273 0ustar ejsejs valknut-0.4.9/valknut/icons/flag_greece.png0000664000076400007640000000037611126705363017110 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  @tEXtCommentCreated with The GIMPd%nUIDAT8cdH ڀX01?Q qѩqqȕ ql4Άg!b,YIENDB`valknut-0.4.9/valknut/icons/emoticons.xml0000664000076400007640000006753011126705363016706 0ustar ejsejs valknut-0.4.9/valknut/icons/bookmark_folder.png0000664000076400007640000000114611126705363020021 0ustar ejsejsPNG  IHDRabKGD pHYs  ~tIME ('IDATxkSaDmbJk⤒E!\]Dpܬ (JAjH2钥DJn%ښVWo?roס&&9pR E 9-X56hZ'ϒɿ1@"'9Z0l^+V6$-,MOjFd7{r)2K;`o! cyJGS3nmZT,Ɇ%m_'j:^Z٬S/>U qnVވ|K怡s<|rfQz,BvK}=VF)=$_PuM%zuP7Kll ?7fK1eIENDB`valknut-0.4.9/valknut/icons/flag_britain.png0000664000076400007640000000153711126705363017306 0ustar ejsejsPNG  IHDRۥsRGBbKGD pHYs  tIME  D%tEXtCommentCreated with The GIMPd%nIDAT8˽AHSq?ih*ɭS,|ժ堛tSߛZ;fr+㋲K8"κU&oAF,R:H3qF~NݪhϒXgX~2wS_?v. 7Osmժh$2Nca #S1tZàR}%* ~}ghlBl6 n|NjժJreQzy4͜ٳGH&)>d+mt=$"@:H|Bۃy9ዌt,Wk(Ӌa.kކrG1Vkź 60dn7`NŶp 2BY5@BL6 MtfH tlgUmCHjOlۨ yXyyK{g0Ȳ$foq64ӋHRG^P)|mL!΍aVk֎%f9kRT*KKZ[UJQ, m=b!}DtHcc/s ZDl\M!R,MMikfy =WabKGD pHYs  ~tIME f6 IDATxܽw$G}9| ҝ)g$$$KBC`1?My6,rH$BBNrqnsU?{wn$2힞|U+1VƺF]>c®cݯF>߬?Z^df򙞞̾}}2Jww%z{G9Xt@2iVWj,M֘10}zsn֬|{{}1K&PܰG䀿PB0 Imx\nܴp3n}m>\@i " DY<Z `38jpժ9^-]:uaq !"m=a ׬iSV-   ?m#L0A0@_WW׽CW^{ʙǚ3B1Eϙk{S3瀘 Dp`,#YRR*%R"%!*7351A S10=7|_p% 2U2ٵ?GIM^ڵ~Oν'#fO=〶RZեdggmmue쬧!M}}L!vH&-B)5)4ŸGS@IZzh~;v r! lgNy UGJAWxp_o7A)I>_f۶<.z=<<\FC"l_k.|N۶ t& m;2w4@s)Ӭ+\)L#I~(%{)ixm@)6{H%B͠áCC lu\jP£H(4^f?Q4v2cg1ZX~K|hMevpݑ6ĔID=P뮵<Ȗ(|K.׾ƧfhC7(~ _/ڷoBPA, ̚JHEG>G&ӌ,G MEyb+Y9n}E&f!f<k^O|܇8$mh@Ì&DZGɍ*?L!*/s~u:|2o5X1c;U~P@㣏n_z_ujcut4ˏw%_,$ORIaBd(ӽr#uy-޼&ŁӦg(OhbL4 ʉHpV ~tl\)1Fc&^\+ A6 gSHm'z=袅!~$}tNy+Jť`- n:OhR` cFh=k1Ő9rՔÈnXGG*njSif71]tte4ՓHX9oBcl9ݟO|}o1S9u0xq;/S  6-jӦ-X1L^K(֯2p\Pim;ͫ8i>0aeG5)EڦkC~(Ȩ{$`aQ-ADR0KP9š yd#L,zm8PkZiJĚw<遟7\skA~A4S@]jl%/\6h쉘g&p1f.HW(pu @H & c ûwfW=`RAy9>DODZLkI;ȑnIFFF Nc?;=ߕhx/WB]]-]gJ|0e >FXΌ0nŋ6ep*S769eAlͥ QB蹼P{7Ac!Q$w'y㍁/E 7w!<3jr𕌪pn.8 QAђ5l(cyA,nqijjhh2Bw㤬~ QH0qhO?;:8u(abfDmg2GcEĺxɏ^ǬYtR{k \,/"NOO9e~ @9]\ 2 V>tu5svR4~§i>kXv @* SvKY-ց&=NK2Lg;zS//m"me{Quzx |OcAYDtRBw&߿ c|gKlο=ӧ7LIoC8ccũozӷٷoW[,[I"@i:D6$E(4@PCق el&c$md؊X/G?D>T FZ58wPD=σ45p[  ʿMᄋ~~oZ;~rw{%Xje_0 RI.tlϓFNPmz.5@CC)B &0i "޵:SE"#G1Fk<ϣhm4M~ÀnABD^Lm,9uzKAsi,^@JA:pۈE4A +^WJ74@w]/˪V_[ Ų۸4Aڝ1gFP"Ԉlp@9~çR:$VkM\f\7ttK3qg:_ޏkI^ž #2 :{ h|r˸;\y+]q]p]VϏ _Kc:zR q{܌qP(O!zYh<_^}SjT_E5r,;{Gs4']z.{~|HYt&#\{G=6^N8xd8:fJkW 9[=‘Ì ,OR  yꩣ>W&*I7@{{wժY=5/^ @rc{kX-6Wm뻌CcM䩣#:TH!J!zeH)_HSL`3MM %%-ACcDR0bZP7N\-}Jp`x  0!yax%K,]9n};wܱ!\&Ze{߽/|Q…yҲCy~G>r N*YMT p8K>DCrj~Hsfz-S%HD ]ʘfкЉ #R1h ۣA6:F,zUuuVtZ16T19`]FA2mZB{sarFINGen"2>m}m=Լ _Mu(0l:ineeGgFf#[Hk x(u\'&йjҧ-c07`Ds9b=spğN&&c\֜sNOfysǩ}%Yd,Ţ֭hO S%,yݷܶ L^Xo% T\(Jdl#EF $g0lƁ~"2x6 @M|-xcϳ=[N 岡檫̞dB8lR50kV9sl:ʾ} HLlj >v\xἃl@ y皅v ֌꯵(r9#pn0&, /:z`$WzlcMlh Xzl ݓ2RǷH_{m#--Y%<3nc| 7FyeIC:Tq-TMkw޹fvV/'x"X)+BN ~4!`AjhAX,Ҳ*t"Tx7Ab}e\@ #T B {H!B?T]PrlvF@P)5_\WQ6mCSő2+w%3d8;vظ1GOO>и X<59yWSS:~<ȓ> ﯛ?8X^v,$ rYU<0(zn}W4W6G$  %_FO6 "K_ȳ=ΰarXEp RiD6͹jL<_qh9k'|Ѣam RTǟpE tu9xᡇٹǡU,/׭ֳ2Ɍ`?eUU}z"='v pPFh{$?wN3Z^! c+U+a^C]FG|\^a%ORȒcG:D($ad X:MyaɚTtvzkqg&22ݜ#A[^a1})QUt+_}/c! ^H=9j+K3( ^1Юz0gyx7>3kz^sB ` !| #*R0Ba d; hv"g'sShMc9 NGZT*Ū_cl. r۔˚Fŭ1ss{`4C٢aTnH! G*$"72eC> &|qoB,j o[8ιG`:DP73-kP㫭 i?d!f'dlV| ?uӆnHDTc0'Y[cbv5~e| G]fW~6~9>@"1V-,|@iN gx5IBe\vY`FgmۊSr#`#5A)̜|E_|m<5yZY{&}!_@4UfFjm0Glѯ0 "Jq5 _tC^x MŞI]vw̷0ESbPCbY:+^E 93E]ףYTa pu" 4FH[XMI F} d>8DOƍ9Yڰ8ƙ${YsUfPIND׾ܰ!./VģCq MbtPti+"(r.~`x:${.Q$U[%&ʔEM(Գ8"SK$g ӓPL07/^ŐX0٬d}m3 $ȕ ,%`%%E/|x.p㍍,Yb`;!^Q.CUGZ f/AC=k_{aU3vP3FPKߟk:>[ۣI0|<ɽ̔GhEJ)J۶Q,Ep]E#xFkF3#&'E&='FR ȓa>]IL-d)~XQIJ<[~ZZ##yg&ZN `Fe \Ϡ= | Fo~˱n]\ΧZETf}4&O~SҒW/'٠Nz3t]\o .(F4ud},9|"i۱!`v t8:G{W5~P=?oa^L2t'm)>^$y*2^ǔlCqpX ̙e9' a 3g^6Gp]lؐ'. L;fH#'jM fc_zk]r38Ƙ췾v&8jI-b/7;# ocô4>YQI Jcpw-i)6l([#V IDATd\x'7q'r2E6}p&c "r ]kls--jYn8j$KdxȽbx4(g[چ+PL{# hQ =8~=b 1NWAd0xBS)gE x|&!j.A$^ZG]]y&= M{?T WH @^Zyni/[*tLlGŃDYYJ)j.&"A c5k_ @\$`LW/$$)P*lU=]E]~3 g8I3hRhۿFF3g"g0^> hMkw{yBO8Xg2XMKeV*iVrAx;H82XL \48j`Ϟoxþ|!QvPٙ)z"w#J@fZ!LLS_ &^woH'xMicاOQҟcؤ_qFFGw@oۆA︪\h.r@2q$-&Mz㏗]CC68HWu,+kB+njf7ݴ''*nxY qdiwo^.{uP==#Gr]4dxX?hMQYOx(2v;6enN,B`T0< XU1h#K6yJ4^'b jO&:e:V oz0!e5~W^=l6 E1 3OB"̍J~A߉0@695N Qqf@_eS['rO5<]}KUO&u|E0l+#PC71m3L6 d=' G0ĐhOj>ơ];Bۏ҈#eҬFmۊ|AAnchC[Zٱ 7L~- a̿'hc>ߵr^'bۺqil4[ALf%/$&lzuK~|S 6. ²u}}^=LGţZ#DEB)b 3f>Uؖgrqbd Ә1᳟|bG9"$pmt<$&r]ih2%$@OO. s<{&D _V/#ejA,*DGK9eD/]_W_@Z.BHlU c" 2`yHD:t8^3𣛾ڹGyV_Ed,ne&K`t8"cdJi/8efN8ceK.p9iV~LF L!A2Bc⍷ 2kОk 0)cgj0Ua '  EO}7 ,]HH %ʹ.А{?x~sB^F3HCc~4LL \$!sC)5I8$$Y9>XU9k%%j (q9{$JE`W&|F$Ksm}jf,',P2Q^n\pNŒE -ttutvڴXض=h-ohn!ӆ'wO㺆dJNGDEOd^ R?wQ(04%_P{_ P fHe2L#1K kPN!FE`lA䝷47gy9ϯ-!>tZs|?v0x?sɅ>V{a$o}C|[n_'y2bH&x]u _ׄqMp\~8 qjwI$DyHB}<&S*Tve1@%%JH|b0*P gE_L CCfӒ{,r67\ẫXoܚ"#կ |x#y I9yIwg/;@C[߾_?瓟_NGKNlbD@f* 0(S dVP{" %;< ,$>VY09Y=IFK),)Q' _,!PJRoYx4@DxHs6S]Gr$_sS'xݵY>{ Z *X4|,]S;w00L'&/M"IsemutNHJ{>& AdNaq:Sp̃D諊8OjWb )=0RZG @[&BXR`?"͠RwCٓ\Yuc; ,7wFG:49tc2g@Y0oMم{]n}s+'}W3<Ȏ]e2YU+MD)1|TKWgjGP =[N(K mphh "m:x($$8=o%K.`,Y̶].뷔Y2%Yu{hSyZR04si,KD8xٜկrCOR/x?vդW 0ɤŚȦT{~L`$#GRX0. Ƒ@X9U*$ZO`!4E࿾1uŬ6ٌUI[4-XaTa(y">Yd.TJPr%B B.Rk0ObЁ o_1E[@٫>jˆYW2{N<|bb$45%n7\>R$lmU S3&)=T+2pR"yEBRb@IM?O}` Y-w*Ͷ9e̩RP_ !Ñc>Cú2{+ۍcDE@`w*% Aא,MKPN@뙭?Al"k MMI7"nkK`35IԈaQ=4$Mdߕ1(QBTWJWY3 NC+A|h8k*^e 4x2͒FR\s9?%V&8y\{#ظDH %*Lo ڀSȀCim@"љ® qJ:pR˪2^k?U_\7<]]h7$D$d Kh0j9Q@03:$Du6\&C"C*Q @>iI-V.wX& k}a>-Y+,kdÒ﹥<)nc{]J%cRvAb@plIpRO,Ebn1F=}TލL{ÃP=cF]N C"DN_(駓!ڙ*6F̀i@ ՑqAeŰ9x Fhm ugI{F81<֌ryÒ6{OϬu$o(|N\tX~^z3V$>+8i͙+_d"3,fϨM7}gZ(W%w#e5VG& >Iþ Y< S \;8m7%~hPrEB;5 0: A5^ަH2SKpRlsʐɆe_$HKjBTঝ/wPJp$]?+_6d`LFR,Sϖgn^~,OhhoUp}=Jh:|[0˜/p*ОF4~YcD8ߠ"s8/A3M&<={F:xbP]B(B! lBh_R-#4E*nߠ9邝B9NPh$0Z# DصyQ}\/9~Y4}-%x2[vv#lEqAuxvje,[v 8vRRXT-ϾP\ICbJ+_咋̚a30q6xeVCUOB|/7⋧mT7!JB+`h?LIQ!li稞\{me2ъ`Q=q]p]r[.a{ѧ]9.矑^~c/K g ±6ڗT >1M߀\q`σߜeVzhsi79~<{eڢho84W]QOKۣAkx_7/Mc2O>1P`lq̣|{sTsUR d CHQPd-m㈾O߳}Y[ũ@d $dRϹ*S^{nչ߸߶e:"Q03~ti.|iҕ+{A!rrO06 0D_ZcXYk:*aH *\ p߿fū?&v{N3,eh񶆚9ʋjޢŭ05espʒMRo$rۺ&ϣ k@bE+)X'm$Q G\6^699Y =|ߎpӇ8sPfV%|i nAOb-@Ϟ];l~8'C_^yjok DYX':W2YVLk4uܯ&6=:6h NzDZǙ6Qx(o0ܯ9cy@%C;c:﹡?4Bܴ@ykg䣄@k%R n0_rU;׿Nݥ˷+ ts,\)THcz#s͞]+C&5,ڍ`~Gk3kddB&"2B'@,D{hd討"Dbq|N|!Zދ| fiJd)-IɎP1^T"AH+PU>UJ@PHtv8-dS@{ko2pۋx}[ 0*Vt;7 _?4-Zs-u9;&'`f(RcxQ7r^L`; H49AneZIr S,Vxq_T1A ~߷AĿ1מYx IDAT% i$ 9€kK-|#A([8Jޫ`zt8h+Ea}=(k[;̯.N֬uHkGnT0#b o0[ QQ f̏WɨW+Ȱ :Ox}Vi} 񟦅OӔ4qwR͒K(_r;jS|F !01e/{и6B֒BЌ 8﹡Of<) .o *vmL@-@ i 9kj.i X{LjYhE2awY3F@Tzv$&.a8hp{>~M调(TdAY,2{7FkG$qOSm##JҦ^4|;ژz9m,ˆUEWa^] `U>yj*¨2P "Z> Yt4ܟ t+\M.Dh% PDEXCPH"uEZk,L )|AG% m 2?mO $]Pgxl|B NDDd]3'ExzxUܼ㨰Ֆ1{; vk^sN!x3N^8gvB(7)rxi埙F>=urqV&p sn&M$"dkt ?s[zgGDBŦ<9E.,bc/[\% z fw) Ƿ'/:*?7$ޱ.~>ٮ*H5t+N]zU5FVեxk{wueV vDž \-S{BXHiDױӣ0!f1 2':k#)U]D 6sl1#{ ? *TDB).1Pm3Jj/H|Q$Ƿy<ݶ]pMS.;^4NZm !`|RMqK<)etLӘ-Qm9͑HZtR+<1j5TXqz]5uf}|sl8K4M{e[z{ LuK-;]HEzEȘqz1Ѳʬ0omhfQ+x?ڽMb0f\N|;"u1L2s>h$tuQWukVy`М*`L"W2|d}l]7LbT'Ŷpe>c K8B;wV'[RJVf8-$S;^D1w`T{CJϹKUAEɗ1fD ;I c}qV()v, ٹ;%PleQPBXe0J`*떪sQs {p֬hWq>vdѡGox3!l-z 46"=Nn*Ž<c0 m¦ƹ 6N*SY9kZ&BA q㍫q=2W;f?a$g9L(NT۹탼h,G%vZtMDۭTy _)`/rww ^p0~ʁzʇ-f 5CϒI~ŐF vƹKR}/"T))X EŸ-$lg~W+?Iֻ!$o} Ѻ!@R3URlNN`OkP_J祿+UcOX +O0t*[*"WeIpwwW׾b La%r#MMͶd 8:tvu*!JO.@U][o% ^w ?yFص_EY1RBtlDVނlsUbQp,XI?һE3٤ݞ-p8 JdIS{4FP +%΀%eoJ/Tnmuɍ_[p_ -<?xCa0nw;ҫx8=!u9IqK%4שRB*  f%W0z,CiSdb{0Ob#xϻb|DQ{Wҧ"J^@+|\tk)KuJ?Nsa ""*fC \d`~-<1v M`.%W? k>̑1yOYl#6Q/;x/%KFt]G8,1~UJB3ϩY  jȊ3U~=|.𜝫(eŹb:W#B@S3:;$cʒZ:WvrU/qֽu-[? )ය5`>qUsyTA + }`k򭘕M7ko6K!BdS&> G&Ä E(3ʋ 3UWc])j+4b}f?p*" db.u^\dtܺO*OuD`|swX0fJyhÖ(6>~g<rc ,\}MXqlNXwR7Gƶ{sI@I` IMНĪv9J游I QdmBtv[vCs "2OZôπ^#?Εl\O5-cN T\H80 SppPk6Z^r:zÇ?r=˗w`m [u wḍ-nsD{͟=rKE6ڎAEAٌguC%mҤjnqĕS^(,J}:(+:i-%O'L07IZzCfRk \fQ* ڦ]0fw@pJ}/>Eesӷv\w_~q@бFZU~]tcM$uE*5k yVD{1:Be_ .6K9σ@W0tѾ+4ͥ{1 n@hʋ lyݍFp̵g 9N_[θӒ3ƚqk2 m@'q$,Ɠ:>3s7a 6hys)" hj +ͤU["j^-v}]flI^;G=SW58ke!ZyT%&m]1hc1Vc͸f6ٺ/YwpBKmN׌s9Tr6z{fx4V:2A7'ɚMt yfLP2y׽%?aUب *A!}CjH0vヒ`"\4N V#M>-Uݻ+ޜyxqTm{[Ӻlq>'>N>?"O0ڗkL[2D3W9e1ZSɝwWڂml0٫;73WncdTվM٪k٫qjl4{ݠ Vл'9G^ĉb]ijafyM 'G vvM;T]5Ss]A2K(k[q%رuΑŦ@w,$1W9705hЙL[2piLimZIgwF \ҷ+[!(%-KTֿYЌ9UP&fyzX!@SiM_{702 ivAN!GA:)n^s+oMgTz1,][6E.j%Ͻ{*zĴ4x5:G̐ ~L;;gZI'e_끢2{k¼@LECf3;}$! 9Tn8k.C!Ra*uw-&v yCr1(:׫ex!T:HyeIF)y(S9JWfpmlf45!M;4Y,ӣZg;&';?⾧\/y>3{+7$RrTL]A<SR$8uhጣ!\毕.MKxrӊƀZ홃]_Ψ4IÐڤLi5KukWٱC6/;]r8V*Zj8k̙E[ZE&@)|g]Gg+:LCgꐚY Öm;4=K oXyd{ z&g[bF5YT_Ddž8HbM&$T~?3VulysX \[MLBj'/uSMcx ]C`-@)D :,aS/yG`=s[/(…E׺4%]CRB{C%D)G9dGrYJ>;?໷OcgB;hm[O IIbC,I4{8{oNғ[τȇjzMs2J-< JV*APv5AOyÿpN9M 1:E#H:Ze34d"/ij> K y(|G [vdD>;8kmcóWG:kɽČfFw8q_?3ISgqqkr*}\@§u<7בv֏9gs0|NF7jX ePV*D'Ig#t o%GЪ&EːC#?B[E~m=7 ؾsj?ݼY<0y~ +j^% Š P0RJF00TELHJ(52P6_BXAVUե~9f /rIpຫ+RniR|W+>4XG)άܺ~h&:c=$پTs,3ˡC86s(8+'BU #%H0TnPõ["߯I[JhZ[{{}UB{Ag;U-I .\i󿥩&KBMh$&p'4}{^'+ygPKع_M]+ÊZ3 U2CI*@wOSwVчg]<ҍY b^qQ#eCr[ (8:,`[Ά@A3qh7>uƉx ZSD̩45Ԙ45&Muz,M8ζ,%VFura(A A t;rH*u" %]y+\iQ ,J^.~Npkp˴^8; w,:3&M2R=$z'U6=K{4 .uOHesnkt>7Ȩ==a$lU8K)=ZeVyOKv|eۦ%ϡGIDAT1%Lu"kj[1Y,ci%)69.AΎnE~8 4'{_/ P+d]))KNk~wKjk|W[rߛ>\"c⅕jizPe085>t$ڵ/yɾ74gmҜeh׆RMJQ P856;emfر0ȊeՁΨ sfcp POW0b 'SH^l(\KZ4q82CY}`Z;8#268qmDm2Tq_Oɹs©}=dOhSa(&Ms[@э?feO5Hf9XCx-z>G??ctIENDB`valknut-0.4.9/valknut/dcfilebrowseritems.h0000664000076400007640000000725211100337105017074 0ustar ejsejs/*************************************************************************** dcfilebrowseritems.h - Items used by DCFileBrowser ------------------- begin : Thu Jul 3 2008 copyright : (C) 2002-2004 by Mathias Küster copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCFILEBROWSERITEMS_H #define DCFILEBROWSERITEMS_H /** * @author Mathias Küster, Edward Sheldrake * * These are just some things used by DCFileBrowser until it gets * ported to QT4 properly. They have been moved out of dcfilebrowser.h * because other classes do not need to know about them. */ #include #include #include // ulonglong #include #include "dcwidget.h" class DCFileItem { public: /** construtor */ DCFileItem() {}; /** destructor */ ~DCFileItem() {}; /** */ QString m_sName; /** */ ulonglong m_nSize; /** */ QString m_sHash; /** */ bool m_bIsDir; }; /** * All the items in the Q3ListView must be DCFileBrowserListItem * because compare() does not check the type and just casts * the pointer. This is how the class is used in valknut. */ class DCFileBrowserListItem : public Q3ListViewItem { public: /** construtor */ DCFileBrowserListItem( Q3ListView * parent ) : Q3ListViewItem(parent) { m_pFileItem = 0; }; /** construtor */ DCFileBrowserListItem( Q3ListViewItem * parent ) : Q3ListViewItem(parent) { m_pFileItem = 0; }; /** destructor */ virtual ~DCFileBrowserListItem() {}; /** the faster way to make numeric sort work */ virtual int compare( Q3ListViewItem * other, int col, bool ascending ) const; /** the slower way to make numeric sort work */ virtual QString key( int column, bool ascending ) const; /** */ QList m_pFileList; /** */ QString m_sName; /** Size in bytes of directory contents */ ulonglong m_nBytes; /** Pointer to the DCFileItem that represents this folder */ DCFileItem * m_pFileItem; }; /** * This is because ListView_DIRECTORY->currentItem() is not reliable. * And for sort top. All the items in the Q3ListView must be instances of * DC_FBListViewItem because compare() does not check the type, it just * casts the pointer. This is how the class is used in valknut. */ class DC_FBListViewItem : public DC_QListViewItem { public: /** Constructor with view parent */ DC_FBListViewItem( Q3ListView * parent ) : DC_QListViewItem( parent ) { pDirItem = 0; }; /** Constructor with item parent */ DC_FBListViewItem( Q3ListViewItem * parent ) : DC_QListViewItem ( parent ) { pDirItem = 0; }; /** Destructor */ virtual ~DC_FBListViewItem() {}; /** re-implemented to use sort top */ virtual int compare( Q3ListViewItem * i, int col, bool ascending ) const; /** * If true, this item will be above all items for which m_bSortTop * is false. */ bool m_bSortTop; /** The left pane item for this right pane item */ DCFileBrowserListItem * pDirItem; }; #endif // DCFILEBROWSERITEMS_H valknut-0.4.9/valknut/dciconloader.h0000664000076400007640000000614511131616063015635 0ustar ejsejs/*************************************************************************** dciconloader.h - description ------------------- begin : Fri Jan 23 2004 copyright : (C) 2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ /* dnx274.dyndns.org */ #ifndef DCICONLOADER_H #define DCICONLOADER_H #include //Added by qt3to4: #include /** *@author Mathias Küster */ enum eIcons { eiBACK=0, eiBALL_GREEN, eiBALL_RED, eiBALL_YELLOW, eiBOOKMARK_ADD, eiBOOKMARK_FOLDER, eiCHOOSE_LANGUAGE, eiCONFIGURE, eiCONFIGURE_32x32, eiCONNECT, eiCONNECT_CREATING, eiCONNECT_NO, eiCONNECTED, eiDOWN, eiDOWNLOAD, eiDOWNLOAD_AS, eiEDIT, eiEDITADD, eiEDITCOPY, eiEDITDELETE, eiEMOTICON, eiEXIT, eiFILECLOSE, eiFILEFIND, eiFILETYPE_APPLICATION, eiFILETYPE_ARCHIVE, eiFILETYPE_DOCUMENT, eiFILETYPE_MP3, eiFILETYPE_PICTURE, eiFILETYPE_UNKNOWN, eiFILETYPE_VIDEO, eiFIND, eiFIND_32x32, eiFLAG_BOSNIA, eiFLAG_BRAZIL, eiFLAG_BRITAIN, eiFLAG_CZECH, eiFLAG_DENMARK, eiFLAG_FINLAND, eiFLAG_FRANCE, eiFLAG_GERMANY, eiFLAG_GREECE, eiFLAG_HUNGARY, eiFLAG_ICELAND, eiFLAG_ITALY, eiFLAG_LATVIA, eiFLAG_NETHERLANDS, eiFLAG_NORWAY, eiFLAG_POLAND, eiFLAG_ROMANIA, eiFLAG_RUSSIA, eiFLAG_SERBIA, eiFLAG_SLOVAKIA, eiFLAG_SPAIN, eiFLAG_SWEDEN, eiFOLDER_BLUE, eiFOLDER_BLUE_OPEN, eiFOLDER_RED, eiGLOBE, eiGV, eiHELP, eiICON_22x22, eiINFO, eiMESSAGE, eiNEXT, eiNOTCONNECTED, eiOPEN, eiPLAYER_PAUSE, eiPLAYER_PLAY, eiRELOAD, eiRELOAD_32x32, eiSAVE, eiSERVER, eiSORT_DOWN_ARROW, eiSPLASH, eiSPY, eiSSL_NO, eiSSL_YES, eiTEXT_SELECT_ALL, eiTRANSFER, eiTRANSLATE, eiUP, eiUPDATE, eiUSERS, eiUSERS_32x32, eiVIEW_SIDETREE, eiZOOM_IN, eiZOOM_OUT }; /** */ typedef QMap PixmapMap; class DCIconLoader { public: /** construtor */ DCIconLoader(); /** destructor */ virtual ~DCIconLoader(); /** */ bool Load(); /** */ QPixmap & GetPixmap( enum eIcons ); private: /** */ QPixmap LoadPixmap( QString file ); /** */ PixmapMap m_PixmapMap; /** */ bool m_bError; }; extern DCIconLoader * g_pIconLoader; #endif valknut-0.4.9/valknut/dcqtextedit.h0000664000076400007640000000302311134203612015514 0ustar ejsejs/*************************************************************************** dcqtextedit.h - description ------------------- begin : Don Aug 21 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCQTEXTEDIT_H #define DCQTEXTEDIT_H #include #include #include /** *@author Mathias Küster */ class DCQTextEdit : public QTextEdit { Q_OBJECT public: /** construtor */ DCQTextEdit( QWidget * parent = 0 ); /** destructor */ virtual ~DCQTextEdit(); protected: /** */ virtual void mouseReleaseEvent( QMouseEvent * event ); /** */ virtual void mouseDoubleClickEvent( QMouseEvent * event ); signals: /** */ void clicked(); /** */ void doubleClicked(); }; #endif valknut-0.4.9/valknut/dcfiletool.h0000664000076400007640000000403211125260333015322 0ustar ejsejs/*************************************************************************** dcfiletool.h - description ------------------- begin : Die Mär 26 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCFILETOOL_H #define DCFILETOOL_H /** *@author Mathias Küster */ #include #include enum eRepairType { ertNONE=0, ertBYTES, ertSECTORS }; class QWidget; class DCFileTool { public: /** construtor - does nothing */ DCFileTool(); /** destructor - does nothing */ ~DCFileTool(); /** */ static bool SelectFileSource( QWidget * parent, ulonglong size, QString tth, QString & file, QString & localrootpath, QString & localpath ); /** */ static bool AddFileSource( QWidget * parent, CString nick, CString hubname, CString hubhost, CString remotename, CString localname, CString localpath, CString localrootpath, eltMedium medium, ulonglong size, CString tth ); /** */ static bool CheckFile( QWidget * parent, CString nick, CString hubname, CString hubhost, CString remotename, CString localname, CString localpath, CString localrootpath, eltMedium medium, ulonglong size, CString hash, bool usermulti = false, eRepairType repair = ertNONE ); }; #endif valknut-0.4.9/valknut/dcuserslist.h0000664000076400007640000000613411074173623015557 0ustar ejsejs/*************************************************************************** dcuserslist.h - description ------------------- begin : Thu Nov 21 2002 copyright : (C) 2002 by François Gannaz ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCUSERSLIST_H #define DCUSERSLIST_H /** *@author François Gannaz */ #include #include "DCDialogUsersList.h" #include #include class QMdiSubWindow; class QEvent; class QCloseEvent; class QResizeEvent; class QShowEvent; class CByteArray; // stupid typedef vs forward declaration #include "dcfriendobject.h" class DCUsersList : public QWidget, private Ui::DCDialogUsersList { Q_OBJECT public: /** construtor */ DCUsersList( QWidget * parent = 0 ); /** destructor */ virtual ~DCUsersList(); /** Get the MDI sub window we are in */ QMdiSubWindow * GetMdiSubWindow() { return m_pContainerWindow; } ; /** */ void InitDocument(); /** */ void DeInitDocument(); /** */ void ShowFriendsList(); /** */ void AddFriend( QString name, QString hubname, QString hubhost, QString description ); /** */ void DelFriend( QString name ); /** */ void UpdateFriend( QString name, QString host, QString description ); /** */ bool AddFriendPhoto( QString name, CByteArray * data ); /** Returns true if the nick is in the friend list */ bool isNickInList( QString name ); /** Returns true if the nick is on ignore */ bool ignoreNick( QString nick ); /** Sets the ignore status of a nick */ void setIgnore( QString nick, bool b ); protected: /** resize event handler */ virtual void resizeEvent( QResizeEvent * ); /** overridden so that the column widths are initialized on first show() */ virtual void showEvent( QShowEvent * event ); /** friend event handler */ virtual void customEvent( QEvent * event ); /** for removing mdi sub window from mdi area */ virtual void closeEvent( QCloseEvent * event ); private: /** The window containing us, created by the QMdiArea */ QMdiSubWindow * m_pContainerWindow; /** */ FriendMap m_FriendMap; /** */ void SetAwayMode( DCFriendObject * obj, eUserAwayMode e ); /** Adjust column sizes preserving user set size ratios */ void SizeColumnsPreservingRatios(); /** Last width the friends list was adjusted for */ int lastFriendsWidth; private slots: /** */ void slotRightButtonClickedFriendList( const QPoint & ); }; /** */ extern DCUsersList * g_pUsersList; #endif valknut-0.4.9/valknut/ts/0000775000076400007640000000000011144264654013467 5ustar ejsejsvalknut-0.4.9/valknut/ts/valknut.sv.ts0000664000076400007640000133313611144234504016153 0ustar ejsejs DCBrowseFileTree Select destination Välj mapp Select a filename Välj filnamn <wrong length> <felaktig längd> Choose a filename to save under Välj namn som filen ska sparas som DCChat Private Chat: Privat chatt: Message not send ! Meddelande ej skickat ! Private Chat: Privat chatt: Chat Cleared. Chatt rensad. Send Clipboard Skicka klippbordet Translation: Översättning: Translation failed: Översättning misslyckades: Current mode: Nuvarande läge: active aktiv passive passiv Refresh share in progress. Uppdatering av utdelning pågår. Refresh share allready in progress. Uppdatering av utdelning pågår redan. Switch timestamp Ändra tidsstämpel Send advertisment. Sänd annons. Wrong parameter for '/join' Felaktig parameter för '/join' Join to: Anslut till: Wrong parameter for '/msg' Felaktig parameter för '/msg' Private message send. Privat meddelande skickat. Private message not send ! Privat meddelande ej skickat ! Away message disabled. Borta-meddelande avaktiverat. Away message set. Borta-meddelande satt. Line is encrypted. Linjen är krypterad. Line is not encrypted. Linjen är inte krypterad. Help: Hjälp: /clear - clear the chat window /clear - rensa chattfönstret /mode - show current mode /mode - visa nuvarande läge /refresh - refresh share /refresh - uppdatera utdelning /ts - switch time display in chat on/off /ts - visa/dölj tidsstämplar i chatten /dcgui - send an advertisment to the hub /dcgui - skicka en annons till hubben /join <address> - disconnect from currently connected hub and connect to another hub /join <adress> - koppla ifrån nuvarande ansluten hubb och anslut till en annan hubb /msg <nick> <message> - send private message /msg <smeknamn> <meddelande> - skicka privat meddelande /away <message> - set automatic response for private messages; if the message is empty, disable it /away <meddelande> - sätt automatiskt svar för privata meddelanden; om meddelandet är tomt är det avaktiverat Choose a filename to save under Välj namn som filen ska sparas som /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;adress&gt; - koppla från befintliga hubben och anslut till annan hubb /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;namn&gt; &lt;meddelande&gt; - sänd ett privat meddelande /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;meddelande&gt; - aktivera automatiskt svar på privata meddelanden; om meddelandet är tomt, avaktivera det Select download folder Välj nerladdningsfolder Select file for Välj fil för Text Encoding Textkodning Choose a codec Välj en codec Photo received. Foto mottaget. Only allowed in private chat. Endast tillåtet i privat chatt. Photo encode error. Fotokodningsfel. Refresh share already in progress. Updatering av utdelning redan igång. Chat: Chatt: Message not sent! Meddelandet ej sänt! /clear - clears the chat window /clear - rensa chattfönstret /mode - shows the current mode /mode - visa nuvarande läge /dcgui or /adv - send an advertisment to the hub /dcgui eller /adv - sänd annons till hubben /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;meddelande&gt; - lämna hubben /uptime - show dcgui-qt uptime /uptime - visa dcgui-qt uptime /ls &lt;nick&gt; - get share list from user /ls &lt;namn&gt; - ladda ner utdelningslista från användare /grant &lt;nick&gt; - grant user a slot /grant &lt;namn&gt; - tilldela användaren en slot /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;namn&gt; - tilldela användaren en permanent slot /friend &lt;nick&gt; - add user to friend list /friend &lt;namn&gt; - lägg till användaren i kompislistan /fav - add hub to bookmark list /fav - lägg till hubben i bokmärkena /info - show user info /info - visa användarinformation /now - send current time to the chat /now - sänd aktuell tid till chatten Get info failed. Hämtning av information misslyckades. Info: Info: Nick: Namn: Operator: Operatör: yes ja no nej Comment: Kommentar: Speed: Hastighet: EMail: E-post: Shared: Utdelat: Away: Borta: on off av Version: Version: Unknown Okänd Tag: Tagg: Uptime Uptime day dag days dagar hour timme hours timmar minute minut minutes minuter Download sharelist from Ladda hem fillsta från No nick, try /dchelp Inget namn, försök med /dchelp Permanent slot added for Permanent slot tilldelat till Slot added for Slot tilldelat till Added to friend list La till i kompislistan Add bookmark hub Lägg till bokmärke Private message sent. Privat meddelande sänt. Private message not sent! Privat meddelande ej sänt! The user is using an old version or not using DCGUI-QT Användaren använder en gammal version eller använder inte DCGUI-QT Photo not found. Foto hittades ej. Can't read your photo. Kan ej läsa ditt foto. Photo not sent. Foto ej sänt. Photo sent. Foto sänt. /raw - send raw message /raw - sänd raw-meddelande Download DCGUI-QT from http://dcgui.berlios.de It does everything ! Works on almost any platform you can think of and makes you coffee. Ladda ner DCGUI-QT från http://dcgui.berlios.de Den klarar allt! Fungerar på nästan alla platformar och kan också användas som kaffebryggare. /uptime - show valknut uptime /uptime - visa hur länge valknut varit igång Download Valknut from http://dcgui.berlios.de It does everything ! Works on almost any platform you can think of and makes you coffee. Ladda ner Valknut från http://dcgui.berlios.de Den gör allt! Fungerar på nästan alla platformar och den gör kaffe åt dig. The user is using an old version or not using Valknut Användaren använder en gammal version eller använder inte Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Anslutningar: Parts: Frånkopplingar: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Anslutningen timeout:ade Error: ' Fel: ' Validate denide Bekräftelse nekad Sorry, client work in passive mode Ledsen, klienten är i passive mode Redirect to Omdirigera till Password - Lösenord - Please enter your password Var god ange ditt lösenord Wrong password Fel lösenord You must enter a search word. Du måste ange en sökterm. Search Error Sökfel OP Force Move OP Tvångsförflytta Please enter host Var god ange värd Please enter a message Var god skriv meddelande Redirect disabled Omdirigering avaktiverat Private chat only in current hub ! Endast privat chatt i hubben ! Select download folder Välj mapp fr nedladdningar Select file Välj fil OP Kick OP Sparka Please enter a reason Var god ange skäl User: Användare: Connected Ansluten Disconnected Frånkopplad Chat Cleared. Chatt rensad. Use password from profile Använd lösenord från profilen Password from profile is empty Lösenordet från profilen är tomt No profile found for this hub Ingen profil hittades för aktuella hubben users användare Hubname change: Hubbnamnsbyte: User rejoin the hub. Användare återanslöt till hubben. User left the hub. Användare lämnade hubben. Hub Hubb Sorry, client works in passive mode Tyvärr, klienten använder passivt läge We left the hub. Vi lämnade hubben. Joins: Anslutningar: Parts: Frånkopplingar: Chat List Chattlista Line is encrypted. Linjen är krypterad. Line is not encrypted. Linjen är inte krypterad. Your Nick is already in use. Ditt namn används redan. Sorry, this client works in passive mode Tyvärr arbetar denna klient i passivt läge Disconnect. Koppla från. Connect. Anslut. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Avbryt Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Kolumner Any Alla DCDebug Send error Fel vid sändning Could not send the data. Error '%1'. Kunde inte sända data. Fel '%1'. Send Sänd Thanks for your help. Tack för din hjälp. Save error Fel vid sparande Can't open file '%1' for writing. Kan ej öppna filen '%1' för skrivning. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Välj namn som filen ska sparas som Text (*.txt) DCDialogAbout About Om OK OK Authors Författare License Licens Sponsor Sponsorer DCGUI-QT - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de DCGUI-QT - En fildelningsklient för Direct Connect (C) 2001-2004 Mathias Küster Hemsida: http://dcgui.berlios.de Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de Valknut - En fildelningsklient för Direct Connect (C) 2001-2004 Mathias Küster Hemsida: http://dcgui.berlios.de Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Filnerladdning Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Filbläddring File Fil Size Storlek Files Filer Shared Delat DCDialogChat Form1 Form1 Hide Gm Clear Rensa Send Clipboard Skicka klippbordet &Send &Sänd DCDialogChat DCDialogClient Form1 Form1 User Användare Nick Namn Comment Kommentar Speed Hastighet EMail E-post Bytes Bytes Chat Chatta Hub Hubb Spy Spionera On/Off På/Av Search Sök File Fil Size Storlek Slot Slot Path Sökväg Results: Reslutat: Filter Filter At Least Minst At Most Som högst KB KB MB MB Any Alla MP3 MP3 Compressed Komprimerad Document Dokument Executable Program Picture Bild Video Video Folder Mapp Type Typ Results Reslutat 0 0 Share Utdelat Host Värd GB GB Max Free Slots (0=off) Max öppna slots (0=av) Free Slots Lediga slots Send Skicka Chat List Chattlista ... ... Tag Tagg User(s) Användare DCDialogClient DCDialogClient IP IP Lock/PK Lås Supports Stöd DCDialogConnectionManager Connection Anslutning DCDialogDebug Send Skicka Exit Avsluta Save Spara DCGUI Crash Handler DCGUI Krashhanterare Send bugreport. Sänd buggrapport. Exit. Avsluta. Save to file. Spara till fil. Comment Kommentar &Save &Spara S&end S&änd E&xit &Avsluta Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Ingen Send Receive Ta emot Both Båda OK OK Cancel Avbryt malloc info DCDialogEditServer Form1 Form1 Settings Inställningar Name Namn Host Värd Description Beskrivning Cancel Avbryt Accept Godta Password Lösenord DCDialogEditServer DCDialogEditServer Profile Profil Auto Connect Automatisk anslutning Nick Namn Secure Socket Layer Använd SSL &Cancel &Avbryt &OK &OK &Profile &Profil Tag Tagg EMail E-post Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Ändra sökväg för utdelning Alias Alias Path Sökväg &Cancel &Avbryt &OK &OK DCDialogEditTransfer Edit Transfer Redigera överföring Settings Inställningar Nick Namn Hub name Hubbnamn Hub address Hubbadress Cancel Avbryt Accept Godta Known hubs Kända hubbar &Cancel &Avbryt &OK &OK DCDialogFileBrowser Form1 Form1 New Column Ny kolumn Name Namn Size Storlek File Type Filtyp Open Öppna Save Spara Encoding: Kodning: Type Typ TTH TTH Folder Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Filöverföringsinfo File Fil Size Storlek Done Klart Hash Hash Sources Källor DCDialogForceMove OP Force Move OP Tvångsförflytta Please enter a host Please enter a message Var god skriv meddelande OK OK Cancel Avbryt DCDialogGetURL Get URL Hämta webbadress Cancel Avbryt &Cancel &Avbryt DCDialogHubFilter Hub Filter Hubbfilter Filter Filter Min. User Min. användare Contains Innehåller Cancel Avbryt Save Spara Name Namn Server Server Description Beskrivning Settings Inställningar &OK &OK &Cancel &Avbryt DCDialogHubListManager Hub List Hubblista Public Allmäna Name Namn Server Server Description Beskrivning User Användare double click to hide the toolbar dubbelklicka för att gömma verktygsfältet edit filter redigera filter delete filter ta bort filter Filter Filter update public hublist Uppdatera allmäna hubblistan add filter lägg till filter reload public hublist uppdatera allmäna hubblistan double click to show the toolbar dubbelklicka för att visa verktygsfältet Bookmarks Bokmärken connect anslut Users Användare Shared Delat Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Spara Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Edit bookmark. Edit Redigera Remove bookmark. Remove Ta bort DCDialogHubProfile Edit hub Profiles Redigera hubbprofiler Profile Profil Create Skapa Delete Radera Save Spara Settings Inställningar Password Lösenord OK OK Auto Connect Automatisk anslutning Cancel Avbryt Hub profile editor Hubbprofilsredigerare Nick Namn &OK &OK &Cancel &Avbryt Tag Tagg EMail E-post Description Beskrivning Secure Socket Layer SSL Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Resultat Nick Namn File Fil Size Storlek Slot Slot Hub Hubb Path Sökväg Log Logg Search Sök Stop Stopp Results: Resultat: Search Options Sk alternativ Connected Hubs Anslutna hubbar Available Hubs Tillg�gliga hubbar Bookmark Hubs Bokmärkta hubbar Filter Filter Type Typ At Least Minst At Most Högst KB KB MB MB Any Alla MP3 MP3 Compressed Komprimerad Document Dokument Executable Program Picture Bild Video Video Folder Mapp Hub Search Hubbsökning Host Värd Threads Trådar GB GB Free Slots Lediga slots Max Free Slots (0=off) Max öppna slots (0=av) Exact Exakt B B 0/0 0/0 0 0 Search in path+file name only Sök endast i sökväg+filnamn Search History Sökhistoria History Historia Hubs Hubbar Hub Options Hubbinställningar Connected Hub Ansluten hubb Refresh Uppdatera Public Hubs Allmäna hubbar Expert Expert User Användare Search User Sök användare Reset Återställ Clients Klienter Live filters Live filter Include: Inkludera: Exclude: Exkludera: Apply Verkställ Mode Läge Add Lägg till User/File Sök användare Search for a user or a file. Sök efter användare eller fil. Start Starta Start the search. Starta sökningen. Add a search to the searchqueue Lägg till söktermen till sök-kön Filtered Hubs Filtrerade hubbar Multi Search Multi-sökning Enable Tag Aktivera Tagg Audio Ljud Hash Hash TTHash TTHash KiB KiB MiB MiB GiB GiB Total Slots Purge Clear the search history Count Sökningar Ready Overall search status Clear search string and set search size, size mode and file type to default TTH TTH Any size At least At most Maximum results Unlimited IP IP DCDialogMagnet Magnet Link Details Link TTH TTH Name Namn Size Storlek Exact size Action Aktion Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Avbryt DCDialogMessage DCDialogMessage DCDialigMessage Do not show this again. Visa inte detta meddelande igen. DCDialogOptions Options Inställningar Identify Identifiering Information Information E-Mail: E-post: Nick: Namn: Description: Beskrivning: Speed: Hastighet: 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Satellit ISDN ISDN DSL DSL Cable Kabel-TV LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Skräppostsäker (email at home dot se) Transfer Överföringar Filetransfer Filöverföring Share Folders Utdelade mappar Rebuild List Bygga om listan Info Info Add Lägg till Remove Ta bort Download Folder Nerladdningsmapp Browse Bläddra Upload Options Uppladdningsinställningar Limit transferrate (0=off) Begränsa överföringshastigheten (0=av) Byte/sec. Byte/sec. Connection Anslutning Settings Inställningar Mode Läge Active Mode Aktivt läge Passive Mode Passivt läge Passive Mode Settings Inställningar för passivt läge No multi hub search ! No incoming connections ! Ingen multi-hubb skning ! Inga inkommande anslutningar ! Active Mode Settings Inställningar för aktivt läge TCP Listen Port: TCP inkommande port: 412 412 Hub Search Sökningar UDP Listen Port: UDP inkommande port: Use ip from interface (ppp0,eth0) Använd IP för gränssnittet (pp0,eth0) Test Testa Use wrong ip (Firewall/Portforward) Anv�d fel IP (Brandv�g/NAT) Interface IP Gränssnitts-IP Wrong IP Fel IP GUI GUI GUI Options GUI-inställningar open private chat window ppna privat chatt-fnster Other Övrigt Other Options Övriga inställningar Hublist Hubblista Store local Spara lokalt Save Spara Cancel Avbryt Windows Fönster Theme Tema Language File Språkfil Connections Anslutningar Reconnect Counter (0=off) Antal återanslutningsförsök (0=av) Reconnect Timeout (sec.) Vänta mellan återanslutningsförsök (sek.) Allow Force Move Tillåt omdirigering Source Url's Käll-URL:er URL Webbadresser Max. upload slots (0=off) Max uppladdningsslots (0=av) change size values automatically to kb/mb/gb �dra storlekstypen automatiskt till kb/MB/GB Application Font Typsnitt Rebuild Bygg om Maximal upload connections. Max antal uppladdningsanslutningar. Transferrate for each slot. Överföringsmängd för varje slot. Transfer Request Timings Tidsinställningar för överföringsförfrågningar Resend Timeout (sec.) Sänd ny timeout (sek.) Response Timeout (sec.) Svarstimeout (sek.) Hub Connections Hubbanslutningar Sound Ljud External Player Extern spelare Chat Chatt Units Enheter Auto Auto Byte Byte GByte GByte KByte KByte MByte MByte General Allmänt Disable Sound Avaktivera ljud Play a sound when receiving a message Spela upp ett ljud när ett meddelande tas emot Play a sound when disconnecting from a hub Spela upp ett ljud vid frånkoppling från en hub Play a sound when receiving first message Spela upp ett ljud vid mottagning av första meddelandet Play a sound when sending a message Spela upp ett ljud när ett meddelande sänds Play a sound when connecting to a hub Spela upp ett ljud vid anslutning till en hubb Disable sound when away Avaktivera ljudsignal vid frånvarandeläget Files Filer Player Spelare Sound Files Ljudfiler Connect Anslut Preview Förhandsgranska Disconnect Koppla från Send Skicka Receive Ta emot 1st Receive Första mottagningen Log Logg Timestamp Tidsstämpel Private Chat Privat chatt Hub Chat Hubbchatt Download Queue Nerladdningskön Save Queue in minutes (0=off) Spara kön i minuter (0=av) Move Finished Files to this Folder (empty = disabled) Flytta färdiga filer till den här mappen (tomt = avaktiverat) Use wrong ip/hostname (Firewall/Portforward) Använd fel ip/värdnamn (Brandvägg/Portforward) No multi hub search ! No incoming connections ! Ingen multi-hubbsökning! Inga inkommande anslutningar! Send warn message to remote user on active mode request Sänd varningsmeddelande till fjärranvändare vid förfrågan i aktivt läge Status Messages Status meddelande Show Status Messages Visa statusmeddelanden Open Private Chat Window Öppna ett privat chattfönster Transfer Options Överföringsalternativ Transfer View Detaljer om överföringar Chunk Percent Styckesprocent File Percent Filprocent Chunk Size Styckesstorlek Download Rate Nerladdnings File Size Filstorlek Search Nick: Söknamn: Remaining Time Återstående tid Send hide private chat to public chat Skicka göm privat chatt till publika chatten Chat options Chattalternativ Message filter Meddelande filter upload uppladdning download nerladdning Add Description Tag (<DCGUI ....>) Lägg till beskrivningstagg (<DCGUI ....>) Max. rate B/s (0=off) Maxhastighet B/s (0=off) Folder Mappar New Column Ny kolumn Away Message: Borta-meddelande: Get Hämta Refuse private chat messages from offline users Vägra privata chattmeddelanden från ej anslutna användare Your line speed. Din anslutningshastighet. Your nick. Ditt namn. The nick for hub searches. Namn vid hubbsökningar. Your EMail. Din e-postadress. Enable/Disable the Anti-spam option. Aktivera/avaktivera anti-skräppost-funktionen. A little description. En liten beskrivning. Add a tag to the description that show some information from you. Lägg till en tagg till beskrivningen som visar vilken klient du använder. The tcp listen port for incoming connections. TCP-porten för inkommande anslutningar. The udp listen port for incoming search results. UDP-porten för inkommande sökresultat. Get the ip from the interface. Hämta IP-adressen från gränssnittet. Select a interface. Välj ett nätverksinterface. Get the ip from the host. Hämta IP för värden. The time between a reconnect. Tiden mellan en återanslutning. How often we reconnect to a hub. Hur många gånger ska återanslutning fösökas. Rebuild your sharelist. Uppdatera utdelningslistan. Add a folder to your sharelist. Lägg till en mapp till utdelningslistan. Remove a folder from your sharelist. Ta bort en mapp från utdelningslistan. Show some information about your sharelist. Visa information om utdelningslistan. Browse your own share list. Granska din egna utdelningslista. Time to wait for a transfer response from the remote user. Tid att vänta på ett överföringssvar från fjärranvändaren. Time to wait before a new transfer request is send to the remote user. Tid att vänta före en ny överföringsförfrågan sänds till fjärranvändaren. Test the new theme. Testa det nya temat. Open the chat window on incoming messages. Öppna chatfönstret vid inkommande meddelande. Enable emoticons in chat Tillåt emoticons i chatten Data Folder Datamapp Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Show Version Tag in User-Description Visa versionstagg i användarbeskrivningen Messages Meddelanden Query on exit Fråga vid avslutning Logfile Loggfil Logfile enabled Använd loggfil Security Säkerhet Flood Protection Flood-skydd Kick Message Meddelande vid utsparkning Private Address Space (rfc1918) Privata adressrymden (rfc1918) Ignore private address space connections Ignorera anslutningar från den privata adressrymden Query Fråga Client Klient User-List Options Inställningar för användarlista User-List right alignment Användarlistan till höger Don't Display Messages after X retry (0=off) Visa inte meddelanden efter x försök (0=av) Kick the user for flooding (only for Operators) Sparka ut användaren för flooding (endast för operatörer) Show send button Visa sänd-knapp Dynamic upload rate Dynamisk uppladdningshastighet Hide popups of more than Göm pop-ups på mer än Send message with Sänd meddelande med lines (0=off) rader (0=av) Browser Webbläsare Use tab for every chat window Använd en tabb för varje chattfönster Color remote Färg på fjärr Allow send private messages to offline users Tillåt att privata meddelande skickas till användare som är bortkopplade Max. paragraphs (0=off) Max. paragrafer (0=av) Client options Klientinställningar Show client windows minimized Visa klientfönster minimerad Recreate sharelist on startup if total filesize has changed Återskapa delningslistan om totala filstorleken har ändrats Max. uploads to user (0=off) Max. uppladdningar per användare (0=av) Color Färger Remote text Fjärr text Remote nick Fjärr smeknamn Transfer Cert/Key Certifikat och nyckel för överföringar User quitting hub När användare lämnar hubben If user quits hub, stop following transfers Om användare lämnar hubben, avbryt följande överföringar Upload Uppladdningar Both Båda Download Nerladdningar None Ingen Auto-Search Auto-sök Auto-Search for new sources Sök efter nya källor automatiskt Download Rate Single Nerladdningshastighet, singel Download Rate Multi Nerladdningingshartighet, multi Remaining Time Single Återstående tid, singel Remaining Time Multi Återstående tid, multi Max. rate KB/s (0=off) Max. hastighet KB/s (0=av) Path Sökväg Alias Alias Edit Redigera Edit a folder from the sharelist. Redigera en mapp i utdelningslistan. Open File Dialog. Öppna fildialog. Add a URL to the list. Lägg till en URL till listan. Remove a URL from the list. Ta bort en URL från listan. 28.8Kbps 28.8Kbps Enable logging Aktivera loggning Append date to log file name Bifoga datum i loggfilens namn Nick name filter Namnfilter Enable nick name filter Aktivera namnfilter Disable logging for public chat Avaktivare loggning för publik chatt Append hub name to log file name Bifoga hubbnamn till loggfilsnamnet Append hub host to log file name Bifoga hubbvärd till loggfilsnamnet &Save &Spara &Cancel &Avbryt Forward private to public chat Vidarebefodra privat till publik chat Away Prefix: Borta-prefix: Select Language. Välj Språk. Recreate every hour (0=off) Intervall för återskapning (timmar, 0=av) Check and recreate sharelist on startup Kontrollera och återskapa utdelningslistan vid uppstart seconds sekunder Away after Borta efter Auto Away Mode Auto-borta läge Ignore messages to offline users Ignorera meddelanden till offline-användare Ignore messages from offline users Ignorera meddelanden från offline-användare Show joins and parts Visa anslutningar och nerkopplingar Columns Kolumner Comment Kommentar Speed Hastighet EMail E-post Share Utdelat Photo Foto Query on File Delete Fråga vid radering av fil Tag Tagg IP, Hostname or Interface IP, värdnamn eller interface IP or Hostname IP eller värdnamn Network Interface Nätverksinterface Listen on IP Lyssna på IP IP IP Lock PK Lås PK Supports Stöd Get Internet IP Välj Internet IP Get Interface Välj interface Update every hour (0=off) Intervall för uppdatering (timmar, 0=av) Hub Lists Hubblistor Disable hash list Avaktivera hashlista GiB GiB KiB KiB MiB MiB Edit hublist url. Redigera hubblistsadress. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Namn Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Fillistsgranskare Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList Server List Server lista connect anslut Public Allmäna reload ladda om Name Namn Server Server Description Beskrivning User Användare update uppdatera 0 0 servers servers Bookmarks Bokmärken Hub List Hubblista Filter Filter Add Lägg till Edit Redigera Del Radera 0/0 0/0 double click to hide the toolbar dubbelklicka för att gömma verktygsfältet edit filter redigera filter delete filter ta bort filter ... ... update public hublist uppdatera allmäna hubblistan add filter lägg till filter reload public hublist uppdatera allmäna hubblistan double click to show the toolbar dubbelklicka för att visa verktygsfältet DCDialogSplash Form1 Form1 Dcgui Dcgui Valknut Valknut DCDialogSpy Spy Spionen Spy On/Off Spion på/av Clear Rensa Text Text Count Sökningar Statistic Statistik Active: Aktiva: 0 0 Reject: Avvisa: Results: Resultat: Search Error: Sökfel: Result Error: Resultatfel: Passive: Passiva: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Överföringslista Nick Namn Server Server State Status Transfer Överföringar File Fil Wait Size Storlek Log Logg Slots Slots Hub Hubb 0/0 0/0 Files Filer Local File / Nick Lokal fil / namn Size / Hub Storlek / Hubb Remote File Fjärrfil Extended Utökat Server/User IP Server/Användar-IP double click to hide the toolbar dubbelklicka för att göma verktygsfältet double click to show the toolbar dubbelklicka för att visa verktygsfältet Local File Lokal fil File Name Filnamn Hub/File Hubb/Fil IP/Size IP/Storlek TTH TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Avbryt DCDialogUpdateManager Update Manager Uppdateringshanteraren Update Uppdatera Check update Sök efter uppdateringar DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Namn Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Avbryt DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Avbryt DCDialogUsersList Users List Användarlista Friends Vänner User Användare Server name Servernamn Description Förklaring Friend-List Kompislista Photo Foto Slot Slot Ignore DCEditServer Please enter a hubname. Var god skriv in ett hubbnamn. Please enter a hubhost. Var god skriv in en hubbvärd. DCFileBrowser Items Artiklar Files Filer Total Totalt Directories Mappar Root Directory Rootkatalog <wrong length> <felaktig längd> file fil Select destination Välj mapp Select a filename Välj filnamn open filelist dialog Öppna fillistdialogen Choose a file Välj en fil save file dialog filsparningsdialog Choose a filename to save under Välj namn som filen ska sparas som Filebrowser Filbläddrare Folder Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Fil does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Ingen Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Filnerladdning File allready download Filen redan nerladdad File allready exist ! Filen finns redan ! Resume Återuppta Overwrite Skriv över Cancel Avbryt Start Multi Download Starta multi nerladdning File allready in the queue and not mark as multi download ! Filen finns redan i kön och den är inte markerad som en multi nerladdning ! File allready in the queue with a different size ! Filen finns redan i kön med annan storlek ! You can start a Multi Download ! Vill du ladda ner med Multi-Nerladdning ? The same user/file is allready in the queue ! Samma fil/användare finns redan i kön ! A same file is allready in the queue ! Filen finns redan i kön ! If you want to download all files in this mode ? Vill du ladda ner alla filer i Multi-nerladdnings läget? Not connected to required hub! Ej ansluten till efterfrågad hubb! Connect Anslut (choose an existing download to add to) (välj en existerande nerladdning att addera till) A same file is already in the queue! Samma fil finns redan i kön! Start a multi-download Starta en multi-nerladdning File is already in the queue but not mark as a multi-download! Filen finns redan i kön men är ej markerad som multi-nerladdning! File is already in the queue with a different size! Filen finns redan i kön med annan storlek! File already downloaded! Filen har redan laddats ner! File already exists! Filen existerar redan! You can start a multi-download! Du kan starta en multi-nerladdning! Do you want to download all files in this mode? Vill du ladda ner alla filer i detta läge? Repair File Reparera fil Enter byte range (m-n) Ange byteområde (m-n) Repair BIN Sectors Reparera BIN-sektorer Enter sector range (m[-n]) Ange sektorområde (m[-n]) DCFileTransferInfo File Transfer Info Filöverföringsinfo DCGuiApp Options Inställningar &Options &Inställningar Ctrl+O Ctrl+O Open option dialog Öppna fönstret Inställningar Exit Avsluta E&xit &Avsluta Ctrl+Q Ctrl+Q Quits the application Avsluta programmet Exit Quits the application Avsluta Avslutar programmet Toolbar Verktygsfält Tool&bar &Verktygsfält Enables/disables the toolbar Aktivera/avaktivera verktygsfältet Toolbar Enables/disables the toolbar Panel Aktiverar/deaktiverar panelen Statusbar Statusfält &Statusbar &Statusfält Enables/disables the statusbar Aktivera/avaktivera statusfältet Statusbar Enables/disables the statusbar Statusfönstret Aktiverar/deaktiverar statusfönstret Cascade Överlappande &Cascade &Överlappande Cascades all windows Överlappa alla fönster Cascade Cascades all windows Överlappa Överlappa alla fönster Tile Sida vid sida &Tile &Sida vid sida Tiles all windows Ordna alla fönster sida vid sida Tile Tiles all windows Sida vid sida Ordna alla fönster sida vid sida Server List Server lista Ctrl+S Ctrl+S Transfer List Överföringar &Transfer List &Överföringar Ctrl+T Ctrl+T Show Transfer List Visa överföringar Hub Search Hubbsökning &Hub Search &Hubbsökning Ctrl+H Ctrl+H Show Hub Search Visa hubbsökningar About Om &About... &Om... About the application Om programvaran About About the application Om Om programvaran New Version Senaste version &New Version... &Senaste version... Check for new version Kolla efter senaste versionen New Version Check for new version Senaste version Kolla efter senaste version What's &This Vad är det &här &File &Arkiv &View &Visa &Action V&erktyg &Window &Fönster &Help &Hjälp Ready. Klar. (no error message from socket) (inget felmeddelande från socketen) TCP listen failed, change to passive mode ! TCP/aktivt läge kunde ej sättas, var god och byt till passivt läge! Quit... Avsluta... Do your really want to quit? Vill du verkligen avsluta? Open options dialog... Öppna inställningsfönstret... Exiting application... Avslutar programmet... Toggle toolbar... Visning av verktygsfältet... Toggle statusbar... Visning av statusfältet... About... Om... New version... Senaste version... Show/hide transfer list window ... Visa/göm överföringsfönstret... Show/hide hub search window ... Visa/göm hubbsökningssfönstret... file operations fil operationer Can't get version info from server Kan inte ta emot versioninformation från server Current version is: Nuvarande version är: Normal Normal &Normal &Normal Ctrl+N Ctrl+N Set away mode Sätt bortaläge Away Borta &Away &Borta Ctrl+A Ctrl+A Hub List Hubblista Show Hub List Visa hubblistan Show/hide hub list window ... Visa/göm hubblistans fönster... H&ub List H&ubblista Ctrl+U Ctrl+U Minimize Minimera &Minimize &Minimera Minimize all windows Minimera alla fönster Minimize Minimize all windows Minimera Minimera alla fönster Action Aktion Quick Options Snabbinställningar Quick options Snabbinställningar F12 F12 Context menu for a few options Kontextmeny för några få inställningar Download mode: Ask Nerladdningsläge: Fråga Download mode: Single Nerladdningsläge: Singel Download mode: Multi Nerladdningsläge: Multi Spy Spion &Spy &Spionera Show Spy Visa spionen Show/hide spy window ... Visa/göm spionfönster ... Users Användare Ctrl+F Ctrl+F Show users: search tab and friends tab Visa användare: söktabb och vännertabb Do you really want to quit? Vill du verkligen avsluta? Exiting application... aborted Avslutar program... avbryter Show/hide users window ... Visa/göm användarfönster ... Away &Mode &Bortaläge Close chat windows Stäng chatt-fönster Close all chat windows Stäng alla chatt-fönster Close chat windows Close all chat windows Stäng chatt-fönster Stäng alla chatt-fönster Close disconnected hubs Stäng bortkopplade hubbar Close all disconnected hub windows Stäng alla bortkopplade hubb-fönster Close disconnected hubs Close all disconnected hub windows Stäng bortkopplade hubb-fönster Stäng alla bortkopplade hubb-fönster Tile &Horizontally Ordna &horisontellt Reload Plugins Ladda om plugins &Reload Plugins &Ladda om plugins Dock Docka &Dock &Docka Dock the application Docka programmet Hub &Search Hubb&sökning S&py S&pion Ctrl+P Ctrl+P Dock/Undock application... Docka/Avdocka programmet... Recreate share Återskapa utdelning Refresh share in progress. Uppdatering av utdelning pågår. Refresh share allready in progress. Uppdatering av utdelning pågår redan. Exit Quits the application. Avsluta Avslutar programmet. Toolbar Enables/disables the toolbar. Verktygsfält Aktiverar/Avaktiverar verktygsfältet. Statusbar Enables/disables the statusbar. Statusfält Aktiverar/Avaktiverar statusfältet. Dock Dock the application. Docka Dockar programmet. Cascade Cascades all windows. Överlappa Överlappar alla fönster. Tiles all windows horizontally. Ordnar alla fönster horisontellt. Tile Horizontally Tiles all windows horizontally. Ordna horizontellt Ordnar alla fönster horisontellt. Minimize all windows. Minimera alla fönster. Minimize Minimize all windows. Minimera Minimera alla fönster. Close chat windows. Stäng chattfönster. Close all chat windows. Stäng alla chattfönster. Close chat windows Close all chat windows. Stäng chattfönster Stäng alla chattfönster. Close disconnected hubs. Stäng nerkopplade hubbar. Close all disconnected hub windows. Stäng alla hubfönster för nerkopplade hubbar. Close disconnected hubs Close all disconnected hub windows. Stäng alla nerkopplade hubbar Stänger alla nerkopplade hubbars fönster. Show Hub List. Visa hubblistan. Show Transfer List. Visa överföringslistan. Show Hub Search. Visa hubbsökningar. Show users: search tab and friends tab. Visa användare i Kompislistan. Set away mode. Aktivera borta-läge. About the application. Om programmet. About About the application. Om Om programmet. Support Support &Support... &Support... Connect to DCGUI-QT hub Anslut till DCGUI-QT hubben Support Connect to the DCGUI-QT hub. Support Anslut till DCGUI-QT hubben. Refresh share finished. Uppdatering av utdelning klar. Refresh share already in progress. Uppdatering av utdelning redan igång. RX/TX Traffic. RX/TX trafik. Available disc space. Tillgängligt diskutrymme. Tile Vertically Ordna vertikalt &Tile Vertically &Ordna vertikalt Tiles all windows vertically Ordnar alla fönster vertikalt Tile Vertically Tiles all windows vertically. Ordna vertikalt Ordnar alla fönster vertikalt. Filelist browser Fillistsgranskare Open filelist browser Öppna fillistsgranskare Latest release Senaste version &Latest release... &Senaste version... Latest release Show latest release. Senaste version Visa senaste version. Can't get release info from server Kan ej hämta versionsinformation från servern latest release is: Senaste version är: Latest release... Senaste version... Show update manager Visa uppdateringshanteraren Show/hide update manager window ... Visa/göm uppdateringshanteraren... Warning license file not found ! Varning, licensfilen hittades ej! Tabbar Tabbfält Enables/disables the tabbar Aktivera/Avaktivera tabbfältet Tabbar Enables/disables the tabbar. Tabbfält Aktivera/Avaktivera tabbfältet. Show Search Spy. Visa Spionen. Tab Bar Tabbfält Toggle tabbar... Visa tabbfältet... Connect to Valknut hub Anlsut till Valknut hubben Support Connect to the Valknut hub. Support Anslut till Valknut hubben. Filelist browser local Lokal fillistsgranskare Open local filelist browser Öppna lokal fillistsgranskare &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Update Manager Uppdateringshanteraren Ratio: Overall: (Up: , Down: ) This session: Valknut Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Fönster Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Allmäna Bookmarks Bokmärken Add Bookmark Lägg till bokmärke Error Fel Please enter a hubname. Var god skriv in ett hubbnamn. Please enter a hubhost. Var god skriv in en hubbvärd. Edit Bookmark Redigera bokmärke Remove bookmarks Ta bort bokmärke You are sure ? Är du säker? Remove Ta bort Cancel Avbryt Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Skapa hubbprofil Please enter the profile name Var god ange profilnamnet Save profile Spara profil Do you want to save your changes? Vill du spara dina ändringar? Save Spara Cancel Avbryt Are you sure? Delete profile for DCHubSearch Serverlist done Serverlista f�dig Search on: [ Sk p� [ Hubsearch is only available in active mode. Hubb-skning tillg�glig endast i Aktivt L�e. You must enter a search word. Du m�te skriva skord. Connect to local udp port failed. ( Anslutning till lokal udp-port misslyckades ( No hubs found. Inga hubbar hittades. Hub Search Error Hubbsökningsfel No connected hubs found. Inga anslutna hubbar hittades. SocketError on KontaktFel p� Hub is full on Hubben � full p� Force move on Tvinga flytt p� Select download folder Välj nerladdningsmapp Select file V�j fil Select search Välj sökning Please select an search Var god välj en sökning Please select a connected hub. Var god välj en ansluten hubb. Select file for Välj fil för No search found. Ingen sökning funnen. USER ANVÄNDARE FILE FIL List download Lista nerladdad Not connected to required hub! Ej ansluten till efterfrågad hubb! Connect Anslut Cancel Avbryt save file dialog spara dialog Choose a filename to save under Välj namn som filen ska sparas som open file dialog öppna dialog Choose a file to open Välj fil som ska öppnas External search is allready running ! Extern sökning pågår redan ! Please add a search ! Var god lägg till en sökning ! Start Starta Stop Avbryt Filelist download Nerladding av fillista External search is already running! En extern sökning är redan igång! Please add a search! Var god och lägg till en sökning! Multi Search only work in active mode! Multisökning fungerar endast i aktivt läge! Folder Unknown Okänd None Ingen Directory File Fil Search ended with %1 results %1 results were filtered on Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCMenuHandler Download Ladda ner Download To Ladda ner till Download As Ladda ner som Browse User Files Titta igenom anv�darens filer Private Chat Privat chatt Kick Kicka Force Move Tvinga flytt Update User Uppdatera anv�dare Connect Anslut Disconnect St�g anslutningen Reload Userlist Ladda om anv�dar-listan Connect To Hub Anslut till hubb Add L�g till Add Bookmark L�g till bokm�ke Edit Redigera Edit Bookmark Redigera bokm�ke Remove Ta bort Close Transfer St�g verfringen Info Info Try Connect Frsk ansluta Remove from Queue Ta bort fr� kn Remove Transfer from Queue and Disk Ta bort fr� kn och h�ddisken Add Slot to User L�g till slot till anv�dare Remove Slot from user Ta bort slot fr� anv�dare DCOptions You must enter a valid 'Fake Host' ! Du m�te ange en giltig 'Fake Host' ! You must enter a valid interface ! Du måste ange ett giltigt gränssnitt ! You must enter a valid tcp listen port ! Du m�te ange en giltig TCP-port ! You must enter a valid udp listen port ! Du m�te ange en giltig UDP-port ! You must enter a valid nick ! Du måste ange ett giltigt smeknamn ! Interface IP : Gränssnitts-IP : Can't get interface IP ! Kan inte hitta gränssnitts-IP ! Select download folder Välj nerladdningmapp Select share folder Välj mapp för utdelning Select language file Välj språkfil HubList URL Hubblistans webbadress Please enter a url Var god skriv in en webbadress Share list not available Utdelningslista ej tillgänglig Compressed list size: Storlek fr komprimerad lista: bytes bytes Total shared: Totalt utdelat: Share List Info Info om utdelningslistan You change the client mode ! Please restart DCGUI ! Du har ändrat klientens läge ! Var god starta om DCGUI ! My Min Select sound file Välj ljudfil Select sound player Välj ljudspelare au au wav wav All Files Alla filer Host IP : Värd-IP: Can't get Host IP ! Kan inte hämta värd-IP ! Select download finished folder Välj nerladdningsmapp för färdiga filer You must set a Download Folder ! Du måste välja en nerladdningsmapp ! Download Finished Folder and Download Folder must be different ! Nerladdningmapp för färdiga filer och nerladdningsmapp måste vara olika ! You must enter a valid search nick ! Du måste ange ett giltigt smeknamn att söka ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Du använder en port < 1024 ! Du kan därför bara köra dcgui som root i aktivt läge ! Other Övrigt Log Loggning Sound Ljud General Allmänt Files Filer GUI GUI Chat Chatt Transfer Överföringar Connection Anslutning Mode Läge Settings Inställningar DCGUI DCGUI Identify Identifiera Folder Mappar Interface List Gränssnittslista Please select an interface Var god välj ett gränssnitt No interfaces found ! Inga gränssnitt funna ! Select data folder Välj datamapp User Användare Select log file Välj loggfil Security Säkerhet Select a browser Välj en webbläsare Compressed list size (HE3/BZ): Komprimerad liststorlek (HE3/BZ): Select transfer cert Välj överföringscertifikat Select transfer key Välj överföringsnyckel Browse Share List Bläddra i delningslistan Add new nick name filter Lägg till nytt namnfilter Please enter a nick Var god ange namn Chat Timestamp Tidsstämplar i chatten Chat Local Nick Lokalt namn i chatten Chat Local Text Lokal text i chatten Chat Remote Nick Andras namn i chatten Chat Remote Text Andras text i chatten Chat Status Nick Status för namn i chatten Chat Status Text Statustext i chatten Public Chat Timestamp Tidsstämplar i publika chatten Public Chat Local Nick Lokalt namn i publika chatten Public Chat Local Text Lokal text i publika chatten Public Chat Remote Nick Andras namn i publika chatten Public Chat Remote Text Andras text i publika chatten Public Chat Status Nick Status för namn i publika chatten Public Chat Status Text Statustext i publika chatten Public Private Chat Nick Publik privat chattnamn Public Private Chat Text Publik privat chattext Select a 64x64 Photo Välj ett 64x64 foto You change the client mode! Please restart DCGUI! Du ändrar klientens läge! Vad god starta om DCGUI! You must set a Download Folder! Du måste välja en nerladdningsmapp! Download Finished Folder and Download Folder must be different! Mapparna för färdiga och aktiva nerladdningar måste vara olika! You must enter a valid 'Fake Host'! Du måste ange en giltig 'Fake Host'! You must enter a valid interface! Du måste ange ett giltigt interface! You must enter a valid tcp listen port! Du måste ange en giltig tcp lysningsport! You must enter a valid udp listen port! Du måste ange en giltig udp lysningsport! You have set DCGUI-QT to listen on a port < 1024! You can run DCGUI-QT only as root in active mode! Du har angett en port <1024 som lysningsport! Du kan nu bara köra DCGUI-QT i aktivt läge som root! You must enter a valid nick! Du måste ange ett giltigt namn! You must enter a valid search nick! Du måste ange ett giltigt söknamn! Can't save Image! Kan ej spara bild! Can't load Image! Kan ej ladda in bild! Can't get Host IP! Kan ej hämta värd-ip! No interfaces found! Inga interface hittades! Can't get interface IP! Kan ej hämta interface-ip! Chat Say Säg i chatt Host IP: Värd-IP: Interface IP: Interface-IP: Latest release... Senaste version... Can't get your ip Kan ej hämta ditt ip Hub Lists Hubblistor Public Chat ME Nick ME namn i publika chatten Valknut Valknut You change the client mode! Please restart Valknut! Du har ändrat klientens läge! Vad god starta om Valknut! You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Du har angett att Valknut ska lyssna på en port < 1024! Endast root kan då köra Valknut i aktivt läge! Compressed list size (HE3/BZ/XML): Komprimerad liststorlek (HE3/BZ/XML): Edit url Redigera adress Auto Responses Filelist browser Fillistsgranskare Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Välj Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Klient DCServerList Add Bookmark Lägg till bokmärke Edit Bookmark Redigera bokmärke Select profle Välj profil Please select an profile Var god välj en profil Public Publik Bookmarks Bokmärken Error Fel Remove Ta bort Cancel Avbryt DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Vänta Idle Stillastående Run Aktiv Transfer Överför Error Fel Download Ladda ner Upload Ladda upp Unknown Okänd Pause Paus Hub offline Hubben är offline User offline Användaren är offline User busy Användaren är upptagen Send error Fel vid uppladning Change Transfer-Rate Ändra överföringshastighet Please enter a Transfer-Rate [B/s] (0=off) Var god ange en överföringshastighet [B/s] (0=av) Change File-Priority Ändra filprioritet Please enter a priority Var god skriv in en prioritet Handshake Handskakning Nothing Inget Remove Transfer Ta bort överföring You are sure ? Är du säker? Remove Ta bort Cancel Avbryt Filebrowser Filbläddrare Try Connect Försök ansluta User and Hub not found in the queue ! Användare och hubb hittades inte i kön! Nick: Namn: Hub: Hubb: My Min fillista Browse Share List Bläddra i utdelningslistan Share list not available Utdelningslista otillgänglig None Ingen File Fil %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Översättare Choose a language Välj ett språk Chinese Simplified to English Engelska Chinese Traditional Dutch Holländska French Franska German Tyska Greek Grekiska Italian Italienska Japanese Korean Portuguese Russian Ryska Spanish Spanska Detect language Arabic Bulgarian Chinese Croatian Czech Tjeckiska Danish Danska Finnish Finska Hindi Norwegian Norska Polish Polska Romanian Rumänska Swedish Svenska OK OK Cancel Avbryt Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUpdateManager Download failed Nerladding misslyckades Update finished Uppladdning klar Download content Ladda ner innehåll Download content failed Nerladdning av innehåll misslyckades Download update.xml Hämtar update.xml Download update.xml failed Nerladdning av update.xml misslyckades Update available for Uppdatering tillgänglig för update(s) available uppdatering(ar) tillgänglig(a) Update available but no bz2 support for Uppdatering tillgänglig men inget bz2 stöd för DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Namn Server Server Description Users Användare Country Shared Delat Minimum share Extra QObject Download Ladda ner Download To Ladda ner till Download As Ladda ner som Browse User Files Hämta fillista Private Chat Privat chatt Kick Sparka Force Move Tvångsförflytta Update User Uppdatera användare Connect Anslut Disconnect Koppla från Reload Userlist Ladda om användarlistan Connect To Hub Anslut till hubb Add Lägg till Add Bookmark Lägg till bokmärke Edit Redigera Edit Bookmark Redigera bokmärke Remove Ta bort Close Transfer Avbryt överföringen Info Info Try Connect Försök ansluta Remove from Queue Ta bort från kön Remove Transfer from Queue and Disk Ta bort från kön och hårddisken Add Slot to User Lägg till slot till användaren Add Permanent Slot to User Lägg till permanent slot till användaren Remove Slot from user Ta bort slot från användaren Save Queue Spara kön Update Server Uppdatera servern Update all Server Uppdatera alla servrar Change Transfer-Rate Ändra överföringshastighet Copy row to Clipboard Kopiera rad till klippbordet Copy column to Clipboard Kopiera kolumn till klippbordet File Info Filinformation Connect To All Hubs Anslut till alla hubbar Search for clones Sök efter kloner Remove complete from Queue Ta bort kompletta från kön Load Ladda Save Spara Edit Hub Profiles Redigera hubbprofiler Set Hub Profile Välj hubbprofil Add this extra source Lägg till den här extra källan Edit transfer Redigera överföring Edit file priority Redigera filprioritet Translate Översätt Translator Översättare Disable group Avaktivera gruppering Group by File Gruppera efter fil Group by Size Gruppera efter storlek Group by Nick Gruppera efter namn Group by free Slots Gruppera efter öppna slots Group by Hub Gruppera efter hubb Group by Path Gruppera efter sökväg Group by Host Gruppera efter värd Copy Kopiera Clear Rensa Select all Markera allt Close Stäng Group Gruppera Hide Göm Refresh Filelist Uppdatera fillista Pause Queue Pausa kön Resume Queue Återuppta kön Insert Smiley Infoga smiley Add Friend Lägg till kompis Czech Tjeckiska Danish Danska Dutch Holländska Finnish Finska German Tyska Hungarian Ungerska Icelandic Isländska Norwegian Norska Polish Polska Romanian Rumänska Spanish Spanska Swedish Svenska Copy Link Kopiera länk Text Encoding Textkodning Request secure chat Begär säker chatt Close secure chat Stäng säker chatt Input Inmatning Output Utmatning Profile editor Profilredigerare Reset Nollställ Dock Docka Undock Avdocka Exit Avsluta Custom Egen Latvian Latviska Russian Ryska Slovak Slovakiska Check client version Kontrollera klientversion Add Permanent Lägg till permanent Group by Hash Gruppera efter hash Upload Slot Uppladdningsslot Bosnian Bosniska English Engelska French Franska Greek Grekiska Italian Italienska Repair File Reparera fil Repair BIN sectors Reparera BIN-sektorer Brazilian Brasilianska Search for clones by TTH Copy magnet link User: Användare: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (välj en existerande nerladdning att addera till) File download Filnerladdning A same file is already in the queue! Samma fil finns redan i kön! Start a multi-download Starta en multi-nerladdning Cancel Avbryt File is already in the queue but not mark as a multi-download! Filen finns redan i kön men är ej markerad som multi-nerladdning! File is already in the queue with a different size! Filen finns redan i kön med annan storlek! File already downloaded! Filen har redan laddats ner! Enter byte range (m-n) Ange byteområde (m-n) Repair BIN Sectors Reparera BIN-sektorer Enter sector range (m[-n]) Ange sektorområde (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Filen existerar redan! Resume Återuppta Overwrite Skriv över File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Ej ansluten till efterfrågad hubb! Group by total Slots Download Folder Nerladdningsmapp Zoom in Zoom out Group by IP SearchSpyModel Text Text Count Sökningar Time UserListModel Nick Namn Comment Kommentar Tag Tagg Speed Hastighet Email Share Utdelat IP IP Lock/PK Lås Supports Stöd valknut-0.4.9/valknut/ts/valknut.es.ts0000664000076400007640000125416711144234504016140 0ustar ejsejs DCBrowseFileTree Select destination Elegir destino Select a filename Seleccionar fichero <wrong length> <longitud inválida> Choose a filename to save under Elija un nombre de archivo con el que guardar DCChat Message not send ! ¡Mensaje no enviado! Private Chat: Chat privado: Chat Cleared. Chat limpiado. Send Clipboard Enviar portapapeles Translation: Traducción: Translation failed: Fallo en traducción: Current mode: Modo actual: active activo passive pasivo Refresh share in progress. Actualización de compartidos en progreso. Refresh share allready in progress. Actualización de compartidos ya está en progreso. Switch timestamp Cambiar fecha de archivo Send advertisment. Enviar publicidad. Wrong parameter for '/join' Parámetro incorrecto para '/join' Join to: Unirse a: Wrong parameter for '/msg' Parámetro incorrecto para '/msg' Private message send. Mensaje privado enviado. Private message not send ! ¡Mensaje privado no enviado! Away message disabled. Mensaje de ausencia quitado. Away message set. Mensaje de ausencia establecido. Line is encrypted. La línea está encriptada. Line is not encrypted. La línea no está encriptada. Help: Ayuda: /clear - clear the chat window /clear - limpia la ventana de charla /mode - show current mode /mode - muestra el modo actual /refresh - refresh share /refresh - actualiza compartidos /ts - switch time display in chat on/off /ts - cambia el mostrar hora en charla activado/desactivado /dcgui - send an advertisment to the hub /dcgui - envia publicidad al hub Choose a filename to save under Elija un nombre de archivo con el que guardar /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;dirección&gt; - desconecta del hub actualmente conectado y se conecta a otro hub /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;apodo&gt; &lt;mensaje&gt; - envia un mensaje privado /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;mensaje&gt; - establece respuesta automática para mensajes privados; si el mensaje es vacío, lo desactiva Select download folder Elija carpeta de descargas Select file for Elegir fichero para Text Encoding Codificación de Texto Choose a codec Elija un codec Photo received. Foto recibida. Only allowed in private chat. Solo permitido en charla privada. Client use wrong version. El cliente usa versión incorrecta. No Photo found. Foto no encontrada. Can't read photo. No se puede leer la foto. Photo encode error. Error en codificación de foto. Photo not send. Foto no enviada. Photo send. Foto enviada. Download DCGUI-QT from http://dc.ketelhot.de It does everything, and makes you coffee Descargue DCGUI-QT desde http://dc.ketelhot.de Hace de todo, y te hace el café Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Operator: yes no Comment: Speed: Velocidad: EMail: Shared: Away: on off Version: Unknown Desconocido Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Intro Ctrl + Enter Ctrl + Intro Enter Intro Joins: Uniones: Parts: Partes: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Conexión fuera de tiempo Error: ' Error: ' Validate denide Validar denide Sorry, client work in passive mode Lo siento, el cliente está en modo pasivo Redirect to Redirigido a Password - Contraseña - Please enter your password Por favor, introduzca la contraseña Wrong password Contraseña no válida You must enter a search word. Debe introducir una palabra de búsqueda. Search Error Error en la búsqueda OP Force Move Movimiento forzado de OP Please enter host Por favor, introduzca el host Please enter a message Por favor, introduzca un mensaje Redirect disabled Redirección deshabilitada Private chat only in current hub ! ¡Chat privado solo en el hub actual! Select download folder Elija carpeta de descargas Select file Elija un fichero OP Kick OP expulsar Please enter a reason Introduzca un motivo User: Usuario: Connected Conectado Disconnected Desconectado Chat Cleared. Chat limpiado. Use password from profile Use contraseña en el perfil Password from profile is empty La contraseña en el perfil está vacia No profile found for this hub No se encontró un perfil para este hub Current mode: Modo actual: active Activo passive Pasivo Refresh share in progress. Refresco de compartidos en progreso. Refresh share allready in progress. Refresco de compartidos ya está en progreso. Switch timestamp Cambiar fecha de archivo Send advertisment. Enviar publicidad. Wrong parameter for '/join' Parámetro incorrecto para '/join' Join to: Unirse a: Wrong parameter for '/msg' Parámetro incorrecto para '/msg' Private message send. Mensaje privado enviado. Private message not send ! ¡Mensaje privado no enviado! Away message disabled. Mensaje de ausencia quitado. Away message set. Mensaje de ausencia establecido. users usuarios Hubname change: Cambio en nombre del hub: User rejoin the hub. El usuario se reconecta al hub. User left the hub. El usuario abandona el hub. Hub Hub Sorry, client works in passive mode Lo siento, el cliente trabaja en modo pasivo We left the hub. Se abandona el hub. Joins: Uniones: Parts: Partes: Chat List Lista de charlas Line is encrypted. La línea está encriptada. Line is not encrypted. La línea no está encriptada. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Cancelar Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Columnas Any Cualquiera DCDebug Send error Error en el envío Send Enviar Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Elija un nombre de archivo con el que guardar Text (*.txt) DCDialogAbout About Acerca de OK OK Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Descargar fichero Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Navegador de archivos File Fichero Size Tamaño Files Ficheros Shared Compartido DCDialogChat Form1 Form1 Hide Oculto Clear Limpiar Send Clipboard Enviar portapapeles &Send &Enviar DCDialogChat DCDialogClient Form1 Form1 User Usuario Nick Apodo (nick) Comment Comentario Speed Velocidad EMail Correo electrónico Bytes Bytes Chat Charla (chat) Hub Hub Spy Espía On/Off Activado/Desactivado Search Buscar File Fichero Size Tamaño Slot Slot Path Ruta Results: Resultados: Filter Filtro At Least Al menos At Most Como mucho KB KB MB MB Any Cualquiera MP3 MP3 Compressed Comprimidos Document Documentos Executable Ejecutables Picture Fotos Video Video Folder Directorio Type Tipo Results Resultados 0 0 Share Compartido Host Host GB GB Max Free Slots (0=off) Slots libres como máximo (0=desactivado) Free Slots Slots libres Send Enviar Chat List Lista de charlas DCDialogClient User(s) ... DCDialogConnectionManager Connection Conexión DCDialogDebug Comment Comentario &Save &Guardar Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Nada Send Enviar Receive Recibir Both Ambos OK OK Cancel Cancelar malloc info DCDialogEditServer Form1 Form1 Settings Configuración Name Nombre Host Host Description Descripción Cancel Cancelar Accept Aceptar Password Contraseña Autoconnect Autoconectar DCDialogEditServer &Cancel &Cancelar &Profile Profile Perfil Nick EMail Correo electrónico Auto Connect Autoconectar Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Alias Path Ruta &Cancel &Cancelar DCDialogEditTransfer Edit Transfer Editar Transferencia Settings Configuración Nick Apodo Hub name Nombre del Hub Hub address Dirección del Hub Cancel Cancelar Accept Aceptar Known hubs Hubs conocidos &Cancel &Cancelar DCDialogFileBrowser Form1 Form1 New Column Nueva columna Name Nombre Size Tamaño File Type Tipo de archivo Open Save Guardar Type Tipo TTH Folder Directorio Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Información de transferencia de fichero File Fichero Size Tamaño Done Hecho Hash Sources DCDialogForceMove OP Force Move Movimiento forzado de OP Please enter a host Please enter a message Por favor, introduzca un mensaje OK OK Cancel Cancelar DCDialogGetURL Get URL Obtener URL Cancel Cancelar &Cancel &Cancelar DCDialogHubFilter Hub Filter Filtro del Hub Filter Filtro Min. User Min. Usuarios Contains Contiene Cancel Cancelar Save Guardar Name Nombre Server Servidor Description Descripción Settings Configuración &Cancel &Cancelar DCDialogHubListManager Hub List Public Público Name Nombre Server Servidor Description Descripción User Usuario double click to hide the toolbar doble clic para esconder la barra de herramientas edit filter editar filtro delete filter borrar filtro Filter update public hublist actualizar lista de hubs públicos add filter añadir filtro reload public hublist recargar lista de hubs públicos double click to show the toolbar doble clic para mostrar la barra de herramientas Bookmarks connect conectar Users Usuarios Shared Compartido Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Guardar Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Añadir Edit bookmark. Edit Editar Remove bookmark. Remove Eliminar DCDialogHubProfile Edit hub Profiles Editar perfiles del Hub Profile Perfil Create Crear Delete Borrar Save Guardar Settings Configuración Password Contraseña OK OK Auto Connect Autoconectar Cancel Cancelar Hub profile editor &Cancel &Cancelar Nick Description Descripción EMail Correo electrónico Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Resultados Nick Apodo (nick) File Fichero Size Tamaño Slot Slot Hub Hub Path Ruta Log Log Search Buscar Stop Detener Results: Resultados: Connected Hubs Hubs conectados Bookmark Hubs Archivar Hubs Filter Filtrar Type Tipo At Least Al menos At Most Como mucho KB KB MB MB Any Cualquiera MP3 MP3 Compressed Comprimidos Document Documentos Executable Ejecutable Picture Fotos Video Video Folder Directorio Hub Search Búsqueda de Hub Host Host Threads Hebras GB GB Free Slots Slots libres Max Free Slots (0=off) Slots libres máx. (0=desactivado) Exact Exacto B B 0/0 0/0 0 0 Search in path+file name only Buscar en ruta+nombre de fichero solamente Search History Historial de búsqueda History Historial Hubs Hubs Hub Options Opciones del Hub Connected Hub Hub conectado Refresh Refrescar Public Hubs Hubs públicos Expert Experto User Usuario Reset Reiniciar Clients Clientes Live filters Filtros vivos Include: Incluir: Exclude: Excluir: Apply Aplicar Mode Modo Add Añadir User/File Usuario/Archivo Search for a user or a file. Buscar un usuario o archivo. Start Comenzar Start the search. Comenzar la búsqueda. Add a search to the searchqueue Añadir una búsqueda a la cola de búsquedas Filtered Hubs Hubs filtrados Multi Search Multi búsqueda Enable Tag Activar Etiqueta Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Nombre Size Tamaño Exact size Action Accción Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Cancelar DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Opciones Identify Identificación Information Información E-Mail: E-Mail: Nick: Apodo (nick): Description: Descripción: Speed: Velocidad: 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Satélite ISDN RDSI DSL ADSL Cable Cable LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Spam (correo en servidor punto com) Transfer Transferencia Share Folders Directorios compartidos Info Información Add Añadir Remove Eliminar Download Folder Directorio de descargas Browse Examinar Upload Options Opciones de subida Connection Conexión Settings Configuración Mode Modo Active Mode Modo Activo Passive Mode Modo Pasivo Passive Mode Settings Configuración del modo pasivo Active Mode Settings Configuración del modo activo TCP Listen Port: Puerto TCP de escucha: 412 412 Hub Search Búsqueda de hub UDP Listen Port: Puerto UDP de escucha: Use ip from interface (ppp0,eth0) Usar ip de la interfaz (ppp0,eth0) Test Prueba Interface IP IP de la interfaz Wrong IP IP incorrecta GUI GUI GUI Options Opciones de GUI Other Otros Other Options Opciones en Otros Hublist Lista de hubs Store local Almacenamiento local Save Guardar Cancel Cancelar Windows Windows Theme Tema Language File Fichero de idioma Reconnect Counter (0=off) Contador de reconexión (0=desactivado) Reconnect Timeout (sec.) Tiempo de espera de reconexión (seg.) Allow Force Move Permitir forzado del movimiento Source Url's Url's de fuente URL URL Max. upload slots (0=off) Máx. slots de subida (0=desactivado) Application Font Tipo de letra de la aplicación Rebuild Reconstruir Maximal upload connections. Conexiones máximas de subida. Transferrate for each slot. Tasa de transferencia para cada slot. Transfer Request Timings Tiempo de espera de transferencia Resend Timeout (sec.) Tiempo de espera para reenvío (seg.) Response Timeout (sec.) Tiempo de espera de respuesta (seg.) Hub Connections Conecciones de hub Sound Sonido External Player Reproductor externo Chat Charla (chat) Units Unidades Auto Auto Byte Byte GByte GByte KByte KByte MByte MByte General General Disable Sound Desactivar sonido Play a sound when receiving a message Reproducir un sonido cuando se recibe un mensaje Play a sound when disconnecting from a hub Reproducir un sonido cuando se desconecta de un hub Play a sound when receiving first message Reproducir un sonido cuando se recibe el primer mensaje Play a sound when sending a message Reproducir un sonido cuando se envía un mensaje Play a sound when connecting to a hub Reproducir un sonido cuando se conecta a un hub Disable sound when away Desactivar sonido en modo ausente Files Ficheros Player Reproductor Sound Files Ficheros de sonido Connect Conectar Preview Vista previa Disconnect Desconectar Send Enviar Receive Recibir 1st Receive 1er recibo Log Log Timestamp Hora Private Chat Chat privado Hub Chat Chat del hub Download Queue Cola de descargas Save Queue in minutes (0=off) Guardar cola de descargas en minutos (0=desactivado) Move Finished Files to this Folder (empty = disabled) Mover descargas terminadas a este directorio (vacío = deshabilitar) Use wrong ip/hostname (Firewall/Portforward) Usar ip/nombre de host no válido (Cortafuegos/redirección de puertos) No multi hub search ! No incoming connections ! ¡Sin búsqueda multi-hub! ¡Sin conexiones entrantes! Send warn message to remote user on active mode request Enviar mensaje de alerta al usuario remoto en petición de modo activo Status Messages Mensajes de estado Show Status Messages Mostrar mensajes de estado Open Private Chat Window Abrir ventana de char privado Transfer Options Opciones de transferencia Transfer View Ver transferencias Chunk Percent Porcentaje de descarga File Percent Porcentaje de fichero Chunk Size Tamaño de trozo Download Rate Tasa de descarga File Size Tamaño del fichero Search Nick: Nick de búsqueda: Remaining Time Tiempo restante Send hide private chat to public chat Enviar chat privado oculto al chat público Chat options Opciones del chat Message filter Filtro de mensajes Hide popups of more than ? lines (0=off) Ocultar ventanas emergentes de más de ? líneas (0=desactivado) upload subida download bajada Add Description Tag (<DCGUI ....>) Añadir etiqueta de descripción (<DCGUI...>) Max. rate B/s (0=off) Máx. tasa B/s (0=desactivado) Folder Directorio New Column Nueva columna Away Message: Mensaje de ausencia: Get Obtener Refuse private chat messages from offline users Rechazar mensajes de chat privados de usuarios desconectados Your line speed. Velocidad de su línea. Your nick. Su apodo. The nick for hub searches. Apodo para búsquedas en hubs. Your EMail. Su EMail. Enable/Disable the Anti-spam option. Activar/Desactivar la opción Anti-spam. A little description. Una pequeña descripción. Add a tag to the description that show some information from you. Añadir una etiqueta a la descripción que muestre alguna información sobre usted. The tcp listen port for incoming connections. El puerto de escucha tcp para conexiones entrantes. The udp listen port for incoming search results. El puerto de escucha udp para resultados de búsqueda entrantes. Get the ip from the interface. Obtener la ip de la interfaz. Select a interface. Seleccionar una interfaz. Get the ip from the host. Obtener la ip del host. The time between a reconnect. Tiempo entre reconexiones. How often we reconnect to a hub. Con qué frecuencia se reconecta a un hub. Rebuild your sharelist. Reconstruir lista de compartidos. Add a folder to your sharelist. Añadir una carpeta a la lista de compartidos. Remove a folder from your sharelist. Borrar una carpeta de su lista de compartidos. Show some information about your sharelist. Muestra alguna información acerca de su lista de compartidos. Browse your own share list. Navegar por su propia lista de compartidos. Time to wait for a transfer response from the remote user. Tiempo a esperar para la respuesta de transferencia desde el usuario remoto. Time to wait before a new transfer request is send to the remote user. Tiempo a esperar entre una nueva petición de transferencia enviada al usuario remoto. Test the new theme. Prueba el nuevo tema. Open the chat window on incoming messages. Abrir la ventana de charla en mensajes entrantes. Enable emoticons in chat Activar emoticonos en charla Data Folder Carpeta de datos Ctrl + Enter Ctrl + Intro Enter Intro Alt + Enter Alt + Intro Alt + S Alt + S User Usuario Show Version Tag in User-Description Mostrar etiqueta de versión en la descripción del usuario Messages Mensajes Query on exit Preguntar al salir Logfile Fichero de histórico Logfile enabled Histórico activado Security Seguridad Flood Protection Protección contra abusos Kick Message Mensaje de expulsión Private Address Space (rfc1918) Espacio de dirección privada (rfc1918) Ignore private address space connections Ignorar espacio de direcciones privadas en conexiones Query Preguntar Client Cliente User-List right alignment Alineación a la derecha de la lista de usuario Don't Display Messages after X retry (0=off) No mostrar mensajes después de X intentos (0=desactivado) Kick the user for flooding (only for Operators) Expulsar al usuario por abuso (solo para Operadores) Show send button Mostrar botón de enviar Dynamic upload rate Razón de subida dinámica Hide popups of more than Ocultar emergentes de más de Send message with Enviar mensaje con lines (0=off) líneas (0=desactivado) Browser Navegador Use tab for every chat window Usar solapas para cada ventana de charla Max. paragraphs (0=off) Párrafos máximos (0=desactivado) Client options Opciones del cliente Show client windows minimized Mostrar ventanas de cliente minimizadas Max. uploads to user (0=off) Máx. subidas al usuario (0=desactivado) Color Color Transfer Cert/Key Cert/Clave de transferencia User quitting hub El usuario sale del hub If user quits hub, stop following transfers Si el usuario sale del hub, detener las siguientes descargas Upload Subida Both Ambos Download Descarga None Nada Auto-Search Auto-Búsqueda Auto-Search for new sources Auto-Búsqueda para nuevas fuentes Download Rate Single Razón de descarga simple Download Rate Multi Razón de descarga múltiple Remaining Time Single Tiempo restante simple Remaining Time Multi Tiempo restante múltiple Reload every hour (0=off) Recargar cada hora (0=desactivado) Max. rate KB/s (0=off) Razón máxima KB/s (0=desactivado) Path Ruta Alias Alias Edit Editar Edit a folder from the sharelist. Editar una carpeta en la lista de compartidos. Open File Dialog. Abrir diálogo archivo. Add a URL to the list. Añadir una URL a la lista. Remove a URL from the list. Borrar una URL de la lista. 28.8Kbps 28.8Kbps Enable logging Activar historial Append date to log file name Añadir fecha al nombre del archivo del historial Nick name filter Filtro de nombres y apodos Enable nick name filter Activar filtro de nombres y apodos Disable logging for public chat Desactivar historial para charla pública Append hub name to log file name Añadir nombre del hub al nombre del archivo de historial Append hub host to log file name Añadir host del hub al nombre del archivo de historial &Save &Guardar &Cancel &Cancelar Forward private to public chat Enviar privados a la charla pública Away Prefix: Prefijo lejano: Select Language. Elegir idioma. Recreate every hour (0=off) Recrear cada hora (0=desactivado) Check and recreate sharelist on startup Comprobar y rehacer lista de compartidos en el inicio seconds segundos Away after Ausente después Auto Away Mode Modo auto ausencia Ignore messages to offline users Ignorar mensajes a usuarios desconectados Ignore messages from offline users Ignorar mensajes de usuarios desconectados Show joins and parts Mostrar uniones y partes Columns Columnas Comment Comentario Speed Velocidad EMail Correo electrónico Share Compartido Photo Foto Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Nombre Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect conectar Public Público reload recargar Name Nombre Server Servidor Description Descripción User Usuario update actualizar 0 0 servers servidores Bookmarks Favoritos Hub List Lista de Hub's Contains: Contiene: Min. users: Usuarios mín: Filter Filtro Add Añadir Edit Editar Del Borrar 0/0 0/0 double click to hide the toolbar doble clic para esconder la barra de herramientas edit filter editar filtro delete filter borrar filtro update public hublist actualizar lista de hubs públicos add filter añadir filtro reload public hublist recargar lista de hubs públicos double click to show the toolbar doble clic para mostrar la barra de herramientas DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Espía Spy On/Off Espía Activado/Desactivado Clear Limpiar Statistic Active: 0 0 Reject: Results: Resultados: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Lista de transferencias Nick Nick State Estado Transfer Transferencia File Fichero Wait Espera Size Tamaño Log Log Slots Slots Hub Hub 0/0 0/0 Files Ficheros Local File / Nick Fichero local / Nick Size / Hub Tamaño / Hub Remote File Fichero remoto Server/User IP IP de servidor/usuario double click to hide the toolbar doble clic para esconder la barra de herramientas double click to show the toolbar doble clic para mostrar la barra de herramientas File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Cancelar DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Charla (chat) PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Nombre Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Cancelar DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Cancelar DCDialogUsersList User Usuario Description Descripción Friend-List Lista de amigos Users List Photo Foto Slot Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Objetos Files Archivos Total Total Directories Directorios Root Directory Directorio raíz <wrong length> <longitud inválida> file archivo Select destination Elegir destino Select a filename Seleccionar archivo Filebrowser Navegador Choose a file save file dialog diálogo de guardado de archivo Choose a filename to save under Elija un nombre de archivo con el que guardar Folder Directorio Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Fichero does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Nada Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Descargar fichero File allready download Fichero ya en descarga File allready exist ! ¡El fichero existe! Resume Continuar Overwrite Sobreescribir Cancel Cancelar Start Multi Download Comenzar MultiDescarga File allready in the queue and not mark as multi download ! ¡El fichero está en la cola y no está marcado para multidescarga! File allready in the queue with a different size ! ¡El fichero está en la lista con un tamaño diferente! You can start a Multi Download ! ¡Puedes iniciar una multidescarga! The same user/file is allready in the queue ! ¡El mismo usuario/fichero ya está en la lista! A same file is allready in the queue ! ¡Hay un fichero igual en la lista! If you want to download all files in this mode ? ¿Si quieres descargar todos los ficheros de este modo? Not connected to required hub! ¡No conectado a un hub requerido! Connect Conectar (choose an existing download to add to) (elija una descarga existente para añadir a) DCFileTransferInfo File Transfer Info Información de transferencia de fichero DCGuiApp Options Opciones &Options &Opciones Ctrl+O Ctrl+O Open option dialog Abrir dialogo de opciones Exit Salir Ctrl+Q Ctrl+Q Quits the application Sale de la aplicación Exit Quits the application Salir Sale de la aplicación Toolbar Barra de herramientas Tool&bar &Barra de herramientas Enables/disables the toolbar Activar/desactivar barra de herramientas Toolbar Enables/disables the toolbar Barra de herramientas Activa/desactiva la barra de herramientas Statusbar Barra de estado &Statusbar Barra de e&stado Enables/disables the statusbar Activa/desactiva la barra de estado Statusbar Enables/disables the statusbar Barra de estado Activa/desactiva la barra de estado Cascade Cascada &Cascade &Cascada Cascades all windows Todas las ventanas en cascada Cascade Cascades all windows Cascada Todas las ventanas en cascada Tile Mosaico &Tile &Mosaico Tiles all windows Todas las ventanas en mosaico Tile Tiles all windows Mosaico Todas las ventanas en mosaico Ctrl+S Ctrl+S Transfer List Lista de transferencias &Transfer List Lista de &transferencias Ctrl+T Ctrl+T Show Transfer List Mostrar lista de trasnferencias Hub Search Búsqueda del hub &Hub Search Búsqueda del &Hub Ctrl+H Ctrl+H Show Hub Search Mostrar búsqueda del hub About Acerca de &About... &Acerca de... About the application Acerca de la aplicación About About the application Acerca de Acerca de la aplicación New Version Nueva versión &New Version... &Nueva versión... Check for new version Comprobar si hay una nueva versión New Version Check for new version Nueva versión Comprobar si hay una nueva versión What's &This Qué es es&to &File &Fichero &View &Ver &Action &Acción &Window &Ventana &Help A&yuda Ready. Listo. (no error message from socket) (no hay mensajes de error desde el socket) TCP listen failed, change to passive mode ! Escucha TCP fallida, cambie al modo pasivo! Quit... Salir... Do your really want to quit? ¿Deseas realmente salir? Open options dialog... Abrir diálogo de opciones... Exiting application... Saliendo de la aplicación... Toggle toolbar... Cambiar barra de herramientas... Toggle statusbar... Cambiar barra de estado... About... Acerca de... New version... Nueva versión... Show/hide transfer list window ... Mostrar/ocultar ventana de lista de transferencias... Show/hide hub search window ... Mostrar/ocultar ventana de búsqueda en el hub ... Can't get version info from server No se puede obtener información sobre la versión en el servidor Current version is: La versión actual es: Normal Normal &Normal &Normal Ctrl+N Ctrl+N Set away mode Poner modo ausente Away Ausente &Away &Ausente Ctrl+A Ctrl+A Hub List Lista de Hubs Show Hub List Mostrar lista de hubs Show/hide hub list window ... Mostrar/ocultar ventan de lista de hubs ... H&ub List Lista de H&ubs Ctrl+U Ctrl+U Minimize Minimizar &Minimize &Minimizar Minimize all windows Minimizar todas las ventanas Minimize Minimize all windows Minimizar Minimizar todas las ventanas Action Accción Quick Options Opciones rápidas Quick options Opciones rápidas F12 F12 Context menu for a few options Menú contextual para unas pocas opciones Download mode: Ask Modo de descarga: Preguntar Download mode: Single Modo de descarga: Individual Download mode: Multi Modo de descarga: Multi Spy Espía Show Spy Mostrar espía Show/hide spy window ... Mostrar/Ocultar la ventana del espía ... Users Usuarios Ctrl+F Ctrl+F Show users: search tab and friends tab Mostrar usuarios: solapa de búsqueda y de amigos Do you really want to quit? ¿De verdad desea salir? Exiting application... aborted Saliendo de la aplicación... abortado Show/hide users window ... Mostrar/ocultar ventana de usuarios ... Away &Mode Modo &Ausente Close chat windows Cerrar ventanas de charlas Close all chat windows Cerrar todas las ventanas de charlas Close chat windows Close all chat windows Cerrar ventanas de charlas Cerrar todas las ventanas de charlas Close disconnected hubs Cerrar hubs desconectados Close all disconnected hub windows Cerrar todas las ventanas de hub desconectados Close disconnected hubs Close all disconnected hub windows Cerrar hubs desconectados Cerrar todas las ventanas de hubs desconectados Tile &Horizontally Mosaico &Horizontal Tiles all windows horizontally Hacer mosaico horizontal con todas las ventanas Tile Horizontally Tiles all windows horizontally Mosaico horizontal Mosaico horizontal con todas las ventanas Reload Plugins Recargar aditivos &Reload Plugins &Recargar aditivos Dock Acoplar &Dock &Acoplar Dock the application Acoplar la aplicación Dock Dock the application Acoplar Acoplar la aplicación Hub &Search Búsqueda &en Hub S&py Es&pía Ctrl+P Ctrl+P Dock/Undock application... Acoplar/desacoplar aplicación... Recreate share Recrear compartidos Refresh share in progress. Refresco de compartidos en progreso. Refresh share allready in progress. Refresco de compartidos ya está en progreso. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Público Bookmarks Add Bookmark Añadir marcador Error Error Edit Bookmark Editar marcador Remove bookmarks You are sure ? Remove Eliminar Cancel Cancelar Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Crear perfil de Hub Please enter the profile name Por favor introduzca el nombre del perfil Save profile Do you want to save your changes? Save Guardar Cancel Cancelar Are you sure? Delete profile for DCHubSearch You must enter a search word. Debe introducir una palabra de búsqueda. Connect to local udp port failed. ( Conexión a puerto udp local fallida. ( No hubs found. No se entraron hubs. Hub Search Error Error en la búsqueda de hub No connected hubs found. No se encontraron hubs conectados. Select download folder Elija carpeta de descargas Select search Elija una búsqueda Please select an search Por favor elija una búsqueda Please select a connected hub. Por favor elija un hub conectado. Select file for Elegir fichero para (choose an existing download to add to) (elija una descarga existente para añadir a) USER USUARIO FILE ARCHIVO Not connected to required hub! ¡No conectado a un hub requerido! Connect Conectar Cancel Cancelar save file dialog diálogo de guardado de archivo Choose a filename to save under Elija un nombre de archivo con el que guardar open file dialog diálogo de abrir archivo Choose a file to open Elija un archivo a abrir External search is allready running ! ¡La búsqueda externa ya se está realizando! Please add a search ! Por favor ¡agrege una búsqueda! Start Iniciar Stop Detener Multi Search only work in active mode ! ¡Multi búsqueda solo funciona en modo activo! Filelist download Lista de descargas Please add a search! Multi Search only work in active mode! Folder Directorio Unknown Desconocido None Nada Directory File Fichero Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Debe introducir un 'Host Fake' válido! You must enter a valid interface ! Debe introducir una interfaz válida! You must enter a valid tcp listen port ! Debe introducir una puerto de escucha tcp válido! You must enter a valid udp listen port ! Debe introducir una puerto de escucha udp válido! You must enter a valid nick ! Debe introducir un nick válido! Interface IP : IP de la interfaz : Can't get interface IP ! No se puede obtener la IP de la interfaz! Select download folder Elija carpeta de descargas Select share folder Elija un directorio compartido Select language file Elija fichero de idioma HubList URL URL de la lista de hubs Please enter a url Por favor, introduzca una url Share list not available Lista de compartido no disponible Compressed list size: Tamaño de la lista comprimida: bytes bytes Total shared: Total compartido: Share List Info Información de la lista compartida You change the client mode ! Please restart DCGUI ! Ha cambiado el modo del cliente! Reinicie DCGUI! My Mi Select sound file Elija un fichero de sonido Select sound player Elija un reproductor au au wav wav All Files Todos los ficheros Host IP : IP del host: Can't get Host IP ! No se puede cambiar la IP del host! Select download finished folder Elija carpeta de descargas finalizadas You must set a Download Folder ! Debe elegir una carpeta de descargas! Download Finished Folder and Download Folder must be different ! La carpeta de descargas finalizadas y la de descargas deben ser diferentes! You must enter a valid search nick ! Debe introducir un nick de búsqueda válido! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Escuchas en un puerto < 1024! Solo puedes usar dcgui como root en modo activo! Other Otro Log Log Sound Sonido General General Files Ficheros GUI GUI Chat Charla (chat) Transfer Transferencia Connection Conexión Mode Modo Settings Configuración DCGUI DCGUI Identify Identificación Folder Directorio Interface List Lista de interfaz Please select an interface Por favor elija una interfaz No interfaces found ! No se encontraron interfaces! Select data folder Elija una carpeta de datos User Usuario Select log file Elija archivo de historial Security Seguridad Select a browser Seleccione un navegador Compressed list size (HE3/BZ): Tamaño de lista comprimida (HE3/BZ): Select transfer cert Elegir certificado de transferencia Select transfer key Elegir clave de transferencia Edit Alias Editar apodo Please enter a new alias Por favor introduzca un nuevo apodo Browse Share List Navegar por lista de compartidos Add new nick name filter Añadir nuevo apodo para el filtro Please enter a nick Por favor introduzca un apodo Chat Timestamp Mostrar hora en charla Chat Local Nick Apodo para charla local Chat Local Text Texto de charla local Chat Remote Nick Apodo para charla remota Chat Remote Text Texto de charla remota Chat Status Nick Apodo de estado de charla Chat Status Text Texto de estado de charla Public Chat Timestamp Publicar hora en charla Public Chat Local Nick Publicar apodo en charla local Public Chat Local Text Publicar texto en charla local Public Chat Remote Nick Publicar apodo en charla remota Public Chat Remote Text Publicar texto en charla remota Public Chat Status Nick Publicar estado del apodo en charla Public Chat Status Text Publicar texto de estado en charla Public Private Chat Nick Publicar apodo en charla privada Public Private Chat Text Publicar texto en charla privada Can't save Image ! ¡No se puede guardar la imagen! Can't load Image ! ¡No se puede cargar la imagen! Select a 64x64 Photo Elija una foto de 64x64 You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Cliente DCServerList Add Bookmark Añadir marcador Edit Bookmark Editar marcador Select profle Elegir perfil Please select an profile Por favor, seleccione un perfil Public Público Bookmarks Marcadores DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Espera Idle En espera Run Corriendo Transfer Transferencia Error Error Download Descarga Upload Subida Unknown Desconocido Pause Pausa Hub offline Hub desconectado User offline Usuario desconectado User busy Usuario ocupado Send error Error en el envío Change Transfer-Rate Cambiar tasa de transferencia Please enter a Transfer-Rate [B/s] (0=off) Por favor, introduzca tasa de transferencia [B/s] (0=desactivado) Change File-Priority Cambiar prioridad de archivo Please enter a priority Por favor indique una prioridad Handshake Comprobación Nothing Nada Remove Eliminar Cancel Cancelar Filebrowser Navegador Try Connect Intentar conectar User and Hub not found in the queue ! ¡El usuario y el hub no se encuentran en cola! Nick: Apodo: Hub: Hub: Remove Transfer You are sure ? My Mi Browse Share List Navegar por lista de compartidos Share list not available Lista de compartido no disponible None Nada File Fichero %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Traductor Choose a language Elija un idioma Chinese Simplified to English Chinese Traditional Dutch Dutch French German German Greek Italian Japanese Korean Portuguese Russian Spanish Español Detect language Arabic Bulgarian Chinese Croatian Czech Czech Danish Danish Finnish Finnish Hindi Norwegian Norwegian Polish Polish Romanian Romanian Swedish Swedish OK OK Cancel Cancelar Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Nombre Server Servidor Description Descripción Users Usuarios Country Shared Compartido Minimum share Extra QObject Download Descarga Download To Descargar a Download As Descargar como Browse User Files Ver ficheros de usuario Private Chat Charla privada Kick Expulsar Force Move Forzar movimento Update User Actualizar usuario Connect Conectar Disconnect Desconectar Reload Userlist Volver a cargar lista de usuarios Connect To Hub Conectar al hub Add Añadir Add Bookmark Añadir marcador Edit Editar Edit Bookmark Editar marcador Remove Eliminar Close Transfer Cerrar transferencia Info Información Try Connect Intentar conectar Remove from Queue Borrar de la cola Remove Transfer from Queue and Disk Borrar transferencia de la cola y del disco Add Slot to User Añadir slot al usuario Add Permanent Slot to User Añadir slot permanente al usuario Remove Slot from user Quitar slot al usuario Save Queue Guardar cola Update Server Actualizar servidor Update all Server Actualizar todos los servidores Change Transfer-Rate Cambiar tasa de transferencia Copy row to Clipboard Copiar fila al portapapeles Copy column to Clipboard Copiar columna al portapapeles File Info Información del fichero Connect To All Hubs Conectar a todos los hubs Search for clones Buscar clones Remove complete from Queue Borrar completamente de la cola Load Cargar Save Guardar Edit Hub Profiles Editar perfiles del hub Set Hub Profile Establecer perfil del hub Add this extra source Añadir ésta fuente extra Edit transfer Editar transferencia Edit file priority Editar prioridad de archivo Translate Traducir Translator Traductor Disable group Desactivar grupo Group by File Agrupar por archivo Group by Size Agrupar por tamaño Group by Nick Agrupar por apodo Group by free Slots Agrupar por ranuras libres Group by Hub Agrupar por hub Group by Path Agrupar por ruta Group by Host Agrupar por host Copy Copiar Clear Limpiar Select all Seleccionar todo Close Cerrar Group Agrupar Hide Ocultar Refresh Filelist Actualizar lista de archivos Pause Queue Pausar cola Resume Queue Continuar cola Insert Smiley Insertar emoticono Add Friend Añadir amigo Czech Czech Danish Danish Dutch Dutch Finnish Finnish France France German German Hungarian Hungarian Icelandic Icelandic Italy Italy Norwegian Norwegian Polish Polish Romanian Romanian Spanish Español Swedish Swedish Copy Link Copiar enlace Text Encoding Codificación de texto Request secure chat Pedir charla segura Close secure chat Cerrar charla segura Input Entrada Output Salida Check client version Add Permanent Profile editor Group by Hash Reset Reiniciar Dock Acoplar Undock Exit Salir Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Usuario: User Commands Enter Intro Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (elija una descarga existente para añadir a) File download Descargar fichero A same file is already in the queue! Start a multi-download Cancel Cancelar File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Continuar Overwrite Sobreescribir File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! ¡No conectado a un hub requerido! Group by total Slots Download Folder Directorio de descargas Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Comment Comentario Tag Speed Velocidad Email Share Compartido IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.en_GB.ts0000664000076400007640000101570111144234504016470 0ustar ejsejs DCChat Private Chat: Chat Cleared. Translation: Translation failed: Current mode: active passive Refresh share in progress. Switch timestamp Send advertisment. Wrong parameter for '/join' Join to: Wrong parameter for '/msg' Away message disabled. Away message set. Line is encrypted. Line is not encrypted. Help: /refresh - refresh share /ts - switch time display in chat on/off Choose a filename to save under /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /msg &lt;nick&gt; &lt;message&gt; - send private message Select download folder Select file for Photo received. Only allowed in private chat. Photo encode error. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat Get info failed. Info: Nick: Operator: yes no Comment: Speed: EMail: Shared: Away: on off Version: Unknown Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. /raw - send raw message The user is using an old version or not using Valknut /adv - send an advertisment to the hub Joins: Parts: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Error: ' Redirect to Password - Please enter your password Wrong password Redirect disabled OP Kick Please enter a reason User: Connected Disconnected Use password from profile Password from profile is empty No profile found for this hub users Hubname change: User rejoin the hub. User left the hub. Hub We left the hub. Joins: Parts: Chat List Line is encrypted. Line is not encrypted. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Any DCDebug Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Download mode? Multi Return Single Esc Download all files in this mode DCDialogChat &Send DCDialogChat DCDialogClient 0 Share Chat List ... User(s) DCDialogClient DCDialogDebug Exit. Save to file. Comment &Save E&xit Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Send Receive Both malloc info DCDialogEditServer Settings Name Host Description Password DCDialogEditServer Profile Auto Connect Nick Secure Socket Layer &Profile Tag EMail Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Path DCDialogEditTransfer Edit Transfer Settings Nick Hub name Hub address Known hubs DCDialogFileBrowser Name Size Open Save Type TTH Folder Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info File Size Hash Sources DCDialogForceMove OP Force Move Please enter a host Please enter a message DCDialogHubFilter Hub Filter Filter Min. User Contains Name Server Description Settings DCDialogHubListManager Hub List Public Name Server Description double click to hide the toolbar edit filter delete filter Filter add filter double click to show the toolbar Bookmarks connect Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Edit bookmark. Edit Remove bookmark. Remove DCDialogHubProfile Profile Settings Password Auto Connect Hub profile editor Nick Tag EMail Description Secure Socket Layer Delete Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Nick File Size Hub Path Log Search Results: Connected Hubs Bookmark Hubs Filter Type Any Compressed Document Executable Picture Video Folder Hub Search Host Free Slots Max Free Slots (0=off) B 0/0 0 Search in path+file name only Hubs Hub Options Connected Hub Refresh Public Hubs Expert User Reset Clients Live filters Include: Exclude: Apply Mode Add Start Start the search. Add a search to the searchqueue Filtered Hubs Multi Search Enable Tag Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Size Exact size Action Start search Add to download queue Do nothing Do the same action next time without asking DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Identify Information E-Mail: Nick: Description: Speed: Anti-Spam (email at home dot com) Transfer Share Folders Download Folder Connection Settings Mode Active Mode Passive Mode Passive Mode Settings Active Mode Settings Hub Search UDP Listen Port: Test GUI Store local Theme Language File Reconnect Timeout (sec.) Allow Force Move Source Url's Application Font Maximal upload connections. Transfer Request Timings Resend Timeout (sec.) Response Timeout (sec.) Hub Connections Sound External Player Chat Units Auto Byte General Disable Sound Play a sound when receiving a message Play a sound when disconnecting from a hub Play a sound when receiving first message Play a sound when sending a message Play a sound when connecting to a hub Disable sound when away Sound Files Log Timestamp Private Chat Hub Chat Download Queue Move Finished Files to this Folder (empty = disabled) No multi hub search ! No incoming connections ! Send warn message to remote user on active mode request Show Status Messages Open Private Chat Window Transfer View Chunk Percent File Percent Chunk Size File Size Search Nick: Chat options Add Description Tag (<DCGUI ....>) Away Message: Your line speed. Your nick. The nick for hub searches. Your EMail. Enable/Disable the Anti-spam option. A little description. Add a tag to the description that show some information from you. The udp listen port for incoming search results. Select a interface. Get the ip from the host. The time between a reconnect. How often we reconnect to a hub. Rebuild your sharelist. Add a folder to your sharelist. Remove a folder from your sharelist. Show some information about your sharelist. Browse your own share list. Time to wait for a transfer response from the remote user. Time to wait before a new transfer request is send to the remote user. Test the new theme. Open the chat window on incoming messages. Enable emoticons in chat Data Folder Ctrl + Enter Enter Alt + Enter Alt + S Messages Query on exit Logfile Logfile enabled Security Flood Protection Kick Message Private Address Space (rfc1918) Ignore private address space connections Query Client User-List right alignment Kick the user for flooding (only for Operators) Show send button Dynamic upload rate Send message with Use tab for every chat window Client options Color Transfer Cert/Key If user quits hub, stop following transfers Upload Both Download None Auto-Search for new sources Download Rate Single Download Rate Multi Remaining Time Single Remaining Time Multi Path Alias Edit a folder from the sharelist. Open File Dialog. Add a URL to the list. Remove a URL from the list. Enable logging Append date to log file name Nick name filter Disable logging for public chat Append hub name to log file name Append hub host to log file name Forward private to public chat Away Prefix: Select Language. Check and recreate sharelist on startup seconds Away after Auto Away Mode Show joins and parts Photo Query on File Delete IP, Hostname or Interface IP or Hostname Network Interface Listen on IP Get Internet IP Get Interface Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Other Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogSplash Valknut DCDialogSpy Spy Clear Statistic Active: 0 Reject: Results: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Nick State Transfer Wait Log Slots Hub Files Local File / Nick Size / Hub Remote File Local File File Name Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub DCDialogUserCommandLines User Command Lines For On Use for all nicks DCDialogUsersList User Users List Photo Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Files Total Directories Root Directory file Select destination Select a filename Choose a file Choose a filename to save under Filebrowser Folder Download contents? Download the contents of " Failed to load filelist Unable to load Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTransferInfo File Transfer Info DCGuiApp &Options Ctrl+O Exit Ctrl+Q Quits the application Toolbar Tool&bar Enables/disables the toolbar &Statusbar Enables/disables the statusbar &Cascade Cascades all windows Ctrl+S Transfer List &Transfer List Ctrl+T &About... &File &View &Action &Window &Help Ready. Quit... Open options dialog... Exiting application... Toggle toolbar... Toggle statusbar... Show/hide transfer list window ... &Normal Ctrl+N &Away Ctrl+A Show/hide hub list window ... H&ub List Ctrl+U &Minimize Quick Options Quick options F12 Download mode: Ask Download mode: Single Download mode: Multi Show/hide spy window ... Users Ctrl+F Do you really want to quit? Exiting application... aborted Show/hide users window ... Away &Mode Tile &Horizontally Reload Plugins &Reload Plugins &Dock Dock the application Hub &Search S&py Ctrl+P Dock/Undock application... Refresh share in progress. Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... Refresh share finished. Refresh share already in progress. RX/TX Traffic. Available disc space. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Filelist browser Open filelist browser Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Bookmarks Add Bookmark Edit Bookmark Remove bookmarks You are sure ? Remove Cancel Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Save profile Do you want to save your changes? Are you sure? Delete profile for DCHubSearch No hubs found. Hub Search Error No connected hubs found. Select download folder Please select a connected hub. Select file for USER FILE Not connected to required hub! Connect Cancel Choose a filename to save under Choose a file to open Start Stop Filelist download Please add a search! Multi Search only work in active mode! Folder Unknown None Directory File Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions Select download folder Select share folder Select language file HubList URL Please enter a url bytes Total shared: Share List Info Select sound file Select sound player au wav All Files Select download finished folder Log Sound General GUI Chat Transfer Connection Mode Settings Identify Interface List Please select an interface Select data folder Select log file Security Select a browser Select transfer cert Select transfer key Add new nick name filter Please enter a nick Chat Timestamp Chat Local Nick Chat Local Text Chat Remote Nick Chat Remote Text Chat Status Nick Chat Status Text Public Chat Timestamp Public Chat Local Nick Public Chat Local Text Public Chat Remote Nick Public Chat Remote Text Public Chat Status Nick Public Chat Status Text Public Private Chat Nick Public Private Chat Text Select a 64x64 Photo You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Can't get Host IP! No interfaces found! Can't get interface IP! Chat Say Host IP: Interface IP: Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Other Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Idle Run Transfer Error Unknown Pause Hub offline User offline User busy Send error Change Transfer-Rate Please enter a Transfer-Rate [B/s] (0=off) Change File-Priority Please enter a priority Try Connect User and Hub not found in the queue ! Nick: Hub: Remove Transfer You are sure ? Remove Cancel My None File %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Chinese Simplified to English Chinese Traditional Dutch French German Greek Italian Japanese Korean Portuguese Russian Spanish Detect language Arabic Bulgarian Chinese Croatian Czech Danish Finnish Hindi Norwegian Polish Romanian Swedish Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Server Description Users Country Shared Minimum share Extra QObject Download Download To Download As Browse User Files Private Chat Kick Force Move Update User Connect Disconnect Reload Userlist Connect To Hub Add Add Bookmark Edit Edit Bookmark Remove Close Transfer Info Try Connect Remove from Queue Remove Transfer from Queue and Disk Save Queue Update Server Update all Server Change Transfer-Rate Copy row to Clipboard Copy column to Clipboard File Info Connect To All Hubs Search for clones Remove complete from Queue Load Save Add this extra source Edit transfer Edit file priority Translate Translator Disable group Group by File Group by Size Group by Nick Group by free Slots Group by Hub Group by Path Group by Host Copy Clear Select all Close Group Hide Refresh Filelist Pause Queue Resume Queue Insert Smiley Add Friend Czech Danish Dutch Finnish German Hungarian Icelandic Norwegian Polish Romanian Spanish Swedish Copy Link Request secure chat Close secure chat Profile editor Reset Dock Undock Custom Latvian Russian Slovak Check client version Add Permanent Group by Hash Upload Slot Bosnian English French Greek Italian Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: User Commands Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) File download A same file is already in the queue! Start a multi-download Cancel File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Overwrite File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Group by total Slots Download Folder Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Comment Tag Speed Email Share IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.rus.ts0000664000076400007640000142261411144234504016334 0ustar ejsejs DCBrowseFileTree Select destination Выберите назначение Select a filename Выберите имя файла <wrong length> <неправильная длина> Choose a filename to save under Выберите имя файла для сохранения в DCChat Message not send ! Сообщение не послано! Private Chat: Приватный чат: Chat Cleared. Чат очищен. Translation: Перевод: Translation failed: Перевод не получился: Current mode: Текущий режим: active активный passive пассивный Refresh share in progress. Происходит обновление шары Refresh share allready in progress. Шара уже обновляется Switch timestamp Переключить метку времени Send advertisment. Послать рекламу Wrong parameter for '/join' Неправильный параметр для '/join' Join to: Подключиться к: Wrong parameter for '/msg' Неправильный параметр для '/msg' Private message send. Приватное сообщение отправлено Private message not send ! Приватное сообщение не отправлено! Away message disabled. Сообщение об отсутствии откючено Away message set. Сообщение об отсутствии включено Line is encrypted. Линия зашифрована Line is not encrypted. Линия не зашифрована Help: Помощь: /clear - clear the chat window /clear - очистить окно чата /mode - show current mode /mode - показать текущий режим /refresh - refresh share /refresh - обновить шару /ts - switch time display in chat on/off /ts - влючить/выключить показ времени в чате /dcgui - send an advertisment to the hub /dcgui - послать рекламу на хаб Choose a filename to save under Выбрать имя файла для сохранения в /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;address&gt; - отключиться от текущего хаба и подключиться к другому /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nick&gt; &lt;message&gt; - послать приватное сообщение /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;message&gt; - включить автоответчик для приватных сообщений. Если сообщение пустое - игнорировать Select download folder Выбрать папку для скачивания Select file for Выбрать файл для Text Encoding Кодировка Choose a codec Выберите кодек Photo received. Получено фото Only allowed in private chat. Разрешено только в приватном чате Client use wrong version. Клиент использует неправильную версию No Photo found. Фото не найдено Can't read photo. Не могу прочитать фото Photo encode error. Ошибка в кодировке фото Photo not send. Фото не отправлено Photo send. Фото отправлено Download DCGUI-QT from http://dc.ketelhot.de It does everything, and makes you coffee Скачайте DCGUI-QT с http://dc.ketelhot.de Он делает все, и даже варит кофе Refresh share already in progress. Шара уже обновляется Chat: Чат: Message not sent! Сообщение не послано! /clear - clears the chat window /clear - очистить окно чата /mode - shows the current mode /mode - показать текущий режим /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;message&gt; - покинуть канал с сообщением /ls &lt;nick&gt; - get share list from user /ls &lt;nick&gt; - получить список файлов пользователя /grant &lt;nick&gt; - grant user a slot /grant &lt;nick&gt; - выдать пользователю слот /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;nick&gt; - выдать пользователю постоянный слот /friend &lt;nick&gt; - add user to friend list /friend &lt;nick&gt; - добавить пользователя в список друзей /fav - add hub to bookmark list /fav - добавить хаб в закладки /now - send current time to the chat /now - послать текущее время в чат /raw - send raw message /raw - послать сырое сообщение Get info failed. Получение информации не удалось Info: Информация: Nick: Ник: Operator: Оператор: yes да no нет Comment: Комментарий: Speed: Скорость: EMail: Адрес e-mail: Shared: Расшарено: Away: Отошел: on включено off выключено Version: Версия: Unknown Неизвестно Tag: Тег: day день days дни hour час hours часы minute минута minutes минуты Download sharelist from Скачать список файлов с No nick, try /dchelp Отсутствует ник, попробуйте /dchelp Permanent slot added for Постоянный слот добавлен для Slot added for Слот добавлен для Added to friend list Добавлен в список друзей Add bookmark hub Добавить закладку хаба Private message sent. Приватное сообщение отправлено Private message not sent! Приватное сообщение не отправлено! Photo not found. Фото не найдено Can't read your photo. Не могу прочитать фото Photo not sent. Фото не отправлено Photo sent. Фото отправлено The user is using an old version or not using Valknut Пользователь использует старую версию или вообще не использует Valknut /adv - send an advertisment to the hub /adv - послать рекламу на хаб Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Подключения: Parts: Части: /rebuild - remove no longer present files from hash database /rebuild - убрать хеши отсутствующих файлов из базы данных /slots &lt;N&gt; - set number of upload slots to N /slots &lt;N&gt; - установить число слотов на отдачу в N /uptime [show] - show valknut uptime [to other users] /uptime [show] - показать аптайм [к другим пользователям] /info &lt;nick&gt; - show user info /info &lt;nick&gt; - получить информацию о пользователе /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /sh &lt;command&gt; &lt;args...&gt; - послать вывод команды оболочки в чат /disablesorting - disable sorting of the user list /disablesorting - отключить сортировку списка пользователей /enablesorting - enable sorting of the user list /enablesorting - включить сортировку списка пользователей /ignore &lt;nick&gt; - do not show main chat lines from the user /ignore &lt;nick&gt; - не показывать сообщения от пользователя в главном чате /unignore &lt;nick&gt; - show main chat lines from the user again /unignore &lt;nick&gt; - показывать сообщения от пользователя в главном чате Valknut uptime Аптайм Valknut Rebuild share in progress. Идет пересборка шары Refresh/rebuild already in progress. Пересборка/обновление уже запущены Invalid number of upload slots specified. Указано неправильное кол-во слотов на отдачу Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Скачайте Valknut с from http://wxdcgui.sourceforge.net Он делает все! Работает практически на любой платформе и делает Вам кофе. Process still running after 5 seconds, killing process... Процесс все еще запущен, убиваю процесс... Command produced no visible output. Команда не выводит результатов Process was killed or crashed. Процесс был убит или рухнул Failed to start shell command. Запуск команды оболочки не удался Disabled user list sorting. Сортировка списка пользователей отключена Enabled user list sorting. Сортировка списка пользователей включена /ratio [show] - show share ratio [to other users] /ratio [show] - показать соотношение [к другим пользователям] ratio: overall: соотношение: общее: uploads отдачи downloads загрузки this session: эта сессия: Unknown command, try /dchelp Неизвестная команда, попробуйте /dchelp /newlog - start a new logfile /newlog - начать новый log-файл No command entered. Команда не введена New log timestamp: Новая метка времени в логе: Warning: log timestamp not enabled. Внимание: метки времени в логе не включены Error was: Ошибка: Shell command event not found in list Команда оболочки не найдена в списке Process still running after Процесс все еще запущен seconds, killing process... ждите, убиваю процесс... Process still running after 2 minutes, killing process... После 2 минут процесс все еще запущен, завершаю прощесс... Bytes Байт Setting upload slots to Установить кол-во слотов на отдачу в on. вкл. off. выкл. Process exited with status Процесс завершен со статусом is not in ignore list не в игнор-листе /ignore &lt;nick&gt; - do not show chat messages from the user /ignore &lt;nick&gt; - не показывать сообщения чата от пользователя /unignore &lt;nick&gt; - show chat messages from the user again /unignore &lt;nick&gt; - снова показывать сообщения чата от пользователя Ignoring chat from Игнорировать чат от Showing chat from Показать чат от Sent away message: Послать сообщение 'отошел': Supports encryption: Поддержка шифрования: Upload slots: Слоты на отдачу: Wrong parameter for '/raw' Неправильный параметр для '/raw' /validate - check hash database for errors /validate - проверить базу данных хешей на ошибки A share operation is already in progress. Операция в шаре уже выполняется. Validate hash database in progress. Проверка базы данных хешей уже выполняется /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Таймаут соединения Error: ' Ошибка: ' Validate denide Проверка запрещена Redirect to Переадресация Password - Пароль - Please enter your password Пожалуйста введите пароль Wrong password Неправильный пароль OP Force Move OP Force Move Please enter host Пожалуйста введите имя хоста Please enter a message Пожалуйста введите Ваше сообщение Redirect disabled Переадресация отключена OP Kick OP Kick Please enter a reason Пожалуйста введите Вашу причину User: Пользователь: Connected Подключен Disconnected Отключен Use password from profile Использовать пароль из профиля Password from profile is empty Пароль из профиля пустой No profile found for this hub Профиль для этого хаба не найден users пользователи Hubname change: Имя хаба изменилось: User rejoin the hub. Пользователь подсоединился к хабу заново User left the hub. Пользователь покинул хаб Hub Хаб Sorry, client works in passive mode Извините, клиент работает в пассивном режиме We left the hub. Мы покинули хаб Joins: Подключения: Parts: Части: Chat List Лист чата Line is encrypted. Линия зашифрована Line is not encrypted. Линия не зашифрована Your Nick is already in use. Ваш ник уже используется Disconnect. Отключить Connect. Подключить Close chat tab Закрыть вкладку чата Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) Извините, Вы не можете скачивать с меня, т.к. мы оба в пассивном режиме. (автоматическое сообщение) Downloads filelist Скачать список файлов User command for Пользовательская команда для OK OK Cancel Отмена Flood Detected Обнаружен флуд Cannot display user with empty nick. Не могу показать пользователя с пустым ником. Cannot display operator with empty nick. Не могу показать оператора с пустым ником. Hub gave us our IP: Хаб дал нам IP: Enable Включить Use IP address from the hub Использовать IP-адрес с хаба in Options -> Connection -> Mode to use this value. в Настройки -> Соединение -> Использовать этот режим. Columns Столбцы Any Все DCDebug Send error Ошибка отправки Could not send the data. Error '%1'. Не могу послать данные. Ошибка '%1'. Send Отправить Thanks for your help. Спасибо за помощь Save error Ошибка сохранения Can't open file '%1' for writing. Не могу открыть файл '%1' для записи Getting information about the crash... Получение информации о падении... Failed to get more information about the crash. Не могу получить больше информации о падении. The %1 program is required to get the information. Программа %1 запрашивает информацию. Exit code: %1 Код завершения: %1 Error messages: Сообщения об ошибках: Choose a filename to save under Text (*.txt) DCDialogAbout About О программе OK OK Authors Авторы License Лицензия Sponsor Спонсор Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Portions (C) 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Valknut - клиент для прямого обмена файлами (C) 2001-2004 Mathias Küster Portions (C) 2006-2008 Edward Sheldrake Домашняя страница: http://wxdcgui.sourceforge.net Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Скачать файл Download mode? Режим загрузки? Multi Многопоточный Return Single Однопоточный Esc Download all files in this mode Загрузить все файлы в этом режиме DCDialogBrowseFileTree File Browser Файловый браузер File Файл Size Размер Files Файлы Shared Расшарено DCDialogChat Form1 Форма1 &Send &Отправить DCDialogChat DCDialogChat DCDialogClient Form1 Форма1 User Пользователь Nick Ник Comment Комментарий Speed Скорость EMail Адрес e-mail Bytes Байт 0 0 Share Шара Chat List Листинг чата DCDialogClient DCDialogClient User(s) Пользователь(и) Tag Тег IP IP Lock/PK Lock/PK Supports Поддержка ... DCDialogConnectionManager Connection Подключение DCDialogDebug Comment Комментарий &Save &Сохранить Save to file. Сохранить в файл S&end О&тправить Send bugreport. Отправить отчет об ошибках E&xit В&ыход Exit. Выход Valknut Crash Handler DCDialogDebugSettings Debug Settings Настройки отладки Console output Вывод на консоль Minimal Минимальный Verbose Extra verbose Network socket log Лог сокета None Нет Send Отправка Receive Получение Both Оба OK OK Cancel Отмена malloc info DCDialogEditServer Form1 Форма1 Settings Настройки Name Имя Host Хост Description Описание Cancel Отмена Accept Принять Password Пароль Autoconnect Автоматическое подключение &Cancel &Отмена &OK &OK &Profile &Профиль Profile Профиль Nick Ник EMail Адрес e-mail Auto Connect Автоподключение Tag Тег Secure Socket Layer SSL-протокол Suppress nicks Подавлять ники A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регулярное выражение для ников, для которых не всплывает окно чата. Например выражение "Hub|Bot|Spammer" соответствует Hub или Bot или Spammer. DCDialogEditServer Extended hub count Расширенное описание хаба Remote encoding Удаленная кодировка Open chat exceptions Открыть исключения чата A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регулярное выражение для ников. Например "Hub|Bot|Spammer" будет совпадать с Hub или Bot или Spammer. DCDialogEditSharePath Alias Алиас Path Путь &Cancel &Отмена Edit share path Изменить путь к шаре DCDialogEditTransfer Edit Transfer Редактировать передачу Settings Настройки Nick Ник Hub name Имя хаба Hub address Адрес хаба Cancel Отмена Accept Принять Known hubs Известные хабы &Cancel &Отмена DCDialogFileBrowser Form1 Form1 New Column Новый столбец Name Имя Size Размер File Type Тип файла Save Сохранить Type Тип Open Открыть Encoding: Кодировка: Remote: Удаленная: Folder Папка Exact Size Точный размер TTH Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Информация о передаче файла File Файл Size Размер Done Окончено Hash Хеш Sources Источники DCDialogForceMove OP Force Move OP Force Move Please enter a host Пожалуйста введите хост Please enter a message Пожалуйста введите Ваше сообщение OK OK Cancel Отмена DCDialogGetURL Get URL Получить URL Cancel Отмена &Cancel &Отмена DCDialogHubFilter Hub Filter Фильтр хабов Filter Фильтр Min. User Мин. пользователей Contains Содержит Cancel Отмена Save Сохранить Name Имя Server Сервер Description Описание Settings Настройки &Cancel &Отмена DCDialogHubListManager Hub List Список хабов Public Публичные Name Имя Server Сервер Description Описание User Пользователь double click to hide the toolbar двойной щелчок, чтобы скрыть панель инструментов edit filter Редактировать фильтр хабов delete filter удалить фильтр Filter Фильтр update public hublist Обновить список публичных хабов add filter добавить фильтр reload public hublist Перезагрузить список публичных хабов double click to show the toolbar двойной щелчок, чтобы показать панель инструментов Bookmarks Закладки connect подключиться Users Пользователи Country Страна Shared Расшарено Minimum Share Минимальная шара Extra Экстра Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Обновление списка публичных хабов. Добавляет новые хабы из хаб-листов не удаляя существующие хабы. Reload public hublist. Clears all public hubs then loads configured hublists. Перезагрузка списка публичных хабов. Удаляет все публичные хабы и загружает из из хаб-листа. Move up Вверх Change the order of the bookmarks. Изменить порядок закладок. Move down Вниз Enable sorting Включить сортировку Enable sorting of the bookmarks. Включить сортировку закладок. Save Сохранить Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Сохранение закладок в файл настроек. Закладки сохраняются автоматически и обычно это не нужно. Add bookmark. Add Добавить Edit bookmark. Edit Редактировать Remove bookmark. Remove Удалить DCDialogHubProfile Edit hub Profiles Редактировать профиль хаба Profile Профиль Create Создать Delete Стереть Settings Настройки Password Пароль OK OK Auto Connect Автоподключение Cancel Отмена &Cancel &Отмена Nick Ник Description Описание EMail e-mail Hub profile editor Редактор профиля хаба Tag Тег Extended hub count Расширенное описание хаба Secure Socket Layer SSL-протокол Suppress nicks Подавлять ники A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регулярное выражение для ников, для которых не всплывает окно чата. Например выражение "Hub|Bot|Spammer" соответствует Hub или Bot или Spammer. Remote encoding Удаленная кодировка Open chat exceptions Открыть исключения чата A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регулярное выражение для ников. Например "Hub|Bot|Spammer" будет совпадать с Hub или Bot или Spammer. DCDialogHubSearch Results Результаты Nick Ник File Файл Size Размер Slot Слот Hub Хаб Path Путь Log Лог Search Искать Results: Результаты: Connected Hubs Подключенные хабы Bookmark Hubs Хабы в закладках Filter Фильтр Type Тип At Least Не меньше чем At Most Не больше чем KB КБ MB МБ Any Все MP3 MP3 Compressed Архив Document Документ Executable Файл .*exe Picture Картинка Video Видео Folder Папка Hub Search Поиск по хабам Host Хост GB ГБ Free Slots Свободные слоты Max Free Slots (0=off) Максимум свободых слотов (0=без ограничения) Exact Точно B Б 0/0 0/0 0 0 Search in path+file name only Искать только в path+file Search History Искать в истории History История Hubs Хабы Hub Options Настройки хаба Connected Hub Подключенный хаб Refresh Обновить Public Hubs Публичные хабы Expert Эксперт User Пользователь Reset Сброс Clients Клиенты Live filters Текущие фильтры Include: Включить: Exclude: Исключить: Apply Применить Mode Режим Add Добавить User/File Пользователь/Файл Search for a user or a file. Искать пользователя или файл Start Старт Start the search. Начать поиск Add a search to the searchqueue Добавить поиск в очередь поиска Filtered Hubs Фильтрованые хабы Multi Search Мульти-поиск Enable Tag Включить тег Hash Хеш Total Slots Всего слотов Purge Очистить Clear the search history Очистить историю поиска KiB КБ MiB МБ GiB ГБ Audio Аудио TTHash TTH Count Кол-во Ready Готов Overall search status Суммарные результаты поиска Clear search string and set search size, size mode and file type to default Очистить строку поиска и установить размер, тип поиска и тип файла по-умолчанию TTH Any size Любой At least Не меньше At most Не больше Maximum results Максимум результатов Unlimited Неограничено IP DCDialogMagnet Magnet Link Magnet-ссылка Details Детали Link Ссылка TTH Name Имя Size Размер Exact size Точный размер Action Действие Start search Начать поиск Add to download queue Добавить в очередь загрузок Do nothing Ничего не делать Do the same action next time without asking Делать то же самое в следующий раз без запроса OK OK Cancel Отмена DCDialogMessage DCDialogMessage Do not show this again. Не показывать снова DCDialogOptions Options Настройки Identify Идентификация Information Информация E-Mail: E-mail: Nick: Ник: Description: Описание: Speed: Скорость: 56Kbps 56Kbps 33.6Kbps 33.6Kbps Satellite Спутник ISDN ISDN DSL DSL Cable Кабель LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Анти-спам (email at home dot com) Transfer Передача Share Folders Расшаренные папки Download Folder Папка загрузок Upload Options Настройки отдачи Connection Подключение Settings Настройки Mode Режим Active Mode Активный режим Passive Mode Пассивный режим Passive Mode Settings Настройки пассивного режима Active Mode Settings Настройки активного режима TCP Listen Port: TCP порт: 412 412 Hub Search Поиск по хабам UDP Listen Port: UDP порт: Use ip from interface (ppp0,eth0) Использовать IP интерфейса (ppp0,eth0) Test Тест Interface IP Интерфейс IP Wrong IP Неправильный IP GUI GUI GUI Options Настройки GUI Other Другие Other Options Другие настройки Hublist Список хабов Store local Сохранить локально Theme Тема Language File Файл локализации Reconnect Counter (0=off) Счетчик пересоединения (0=выключено) Reconnect Timeout (sec.) Таймаут пересоединения Allow Force Move Разрешить перенаправление на другой хаб Source Url's URL'ы источников URL URL Max. upload slots (0=off) Макс. слотов на отдачу (0=без ограничения) Application Font Шрифт приложения Maximal upload connections. Макс. соединений на отдачу Transfer Request Timings Время запроса передачи Resend Timeout (sec.) Таймаут повторной передачи (сек.) Response Timeout (sec.) Таймаут ответа (сек.) Hub Connections Соединения с хабом Sound Звук External Player Внешний проигрыватель Chat Чат Units Единицы измерения Auto Авто Byte Байт GByte Гигабайт KByte Килобайт MByte Мегабайт General Основные Disable Sound Отключить звук Play a sound when receiving a message Проигрывать звук при получении сообщения Play a sound when disconnecting from a hub Проигрывать звук при отключении от хаба Play a sound when receiving first message Проигрывать звук при получении первого сообщения Play a sound when sending a message Проигрывать звук при отсылке сообщения Play a sound when connecting to a hub Проигрывать звук при подключении к хабу Disable sound when away Запретить звук в режиме 'отошел' Player Проигрыватель Sound Files Звуковые файлы Log Лог Timestamp Временная метка Private Chat Приватный чат Hub Chat Чат хаба Download Queue Очередь загрузок Save Queue in minutes (0=off) Сохранять очередь через равные промежутки. В минутах. (0=off) Move Finished Files to this Folder (empty = disabled) Перемещать скачанные файлы в папку (пусто = отключено) Use wrong ip/hostname (Firewall/Portforward) Использовать поддельный IP/хост (Файрволл/Перенаправление портов) No multi hub search ! No incoming connections ! Нет поиска по всем хабам ! Нет входящих подключений ! Send warn message to remote user on active mode request Послать предупреждающее сообщение удаленному пользователю Show Status Messages Показывать сообщения статуса Open Private Chat Window Открыть окно приватного чата Transfer Options Настройки передачи Transfer View Окно передачи Chunk Percent Процент части File Percent Процент файла Chunk Size Размер части File Size Размер файла Search Nick: Ник для поиска: Chat options Настройки чата upload отдача download загрузка Add Description Tag (<DCGUI ....>) Добавить тег описания (<DCGUI ....>) Folder Папка New Column Новый столбец Away Message: Сообщение 'отошел': Get Получить Your line speed. Скорость линии Your nick. Ник The nick for hub searches. Ник для поиска по хабам Your EMail. E-mail Enable/Disable the Anti-spam option. Включить/выключить анти-спам A little description. Короткое описание Add a tag to the description that show some information from you Добавить тег к описанию о Вас The tcp listen port for incoming connections. TCP порт для входящих соединений The udp listen port for incoming search results. UDP порт для входящих результатов поиска Get the ip from the interface. Получить IP адрес с интерфейса Select a interface. Выбрать интерфейс Get the ip from the host. Получить IP адрес с хоста The time between a reconnect. Время между попытками соединения How often we reconnect to a hub. Как часто пытаться соединиться с хабом Rebuild your sharelist. Создать заново мой список файлов Add a folder to your sharelist. Добавить папку в мою шару Remove a folder from your sharelist. Удалить папку из моей шары Show some information about your sharelist. Показать информацию о шаре Browse your own share list. Просмотреть мой список файлов Time to wait for a transfer response from the remote user. Время ожидания ответа передачи от удаленного пользователя Time to wait before a new transfer request is send to the remote user. Время ожидания перед посылкой нового запроса передачи удаленному пользователю Test the new theme. Тестировать новую тему Open the chat window on incoming messages. Открывать окно чата при входящих сообщениях Enable emoticons in chat Разрешить смайлы в чате Data Folder Папка данных Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Show Version Tag in User-Description Показывать версию в строке описания пользователя Messages Сообщения Query on exit Запрос при выходе Logfile Файл лога Logfile enabled Разрешить файл лога Security Безопасность Flood Protection Защита от флуда Kick Message Сообщение kick'a Private Address Space (rfc1918) Приватное адресное пространство (rfc1918) Ignore private address space connections Игнорировать соединения с приватным адресным пространством Query Запрос Client Клиент User-List right alignment Выравнивание списка пользователей вправо Don't Display Messages after X retry (0=off) Не отображать сообщения после X попыток (0=выключено) Kick the user for flooding (only for Operators) Выкинуть пользователя за флуд (только для Операторов) Show send button Показать кнопку отправки Dynamic upload rate Динамическая скорость отдачи Hide popups of more than Скрывать высплывающие окна, если их больше чем Send message with Послать сообщение с lines (0=off) линии (0=выключено) Browser Браузер Use tab for every chat window Использовать панель закладок для каждого окна чата Max. paragraphs (0=off) Макс. параграфов (0=выключено) Client options Настройки клиента Show client windows minimized Показывать окна клиента в минимированном виде Max. uploads to user (0=off) Макс. отдач пользователю (0=выключено) Color Цвет Transfer Cert/Key Сертификат/Ключ передачи User quitting hub Пользователь покидает хаб If user quits hub, stop following transfers Если пользователь покинул хаб, остановить следующие передачи Upload Отдача Both Все Download Загрузка None Нет Auto-Search Автоматический поиск Auto-Search for new sources Автоматический поиск новых источников Download Rate Single Скорость загрузки (однопоточной) Download Rate Multi Скорость загрузки (многопоточной) Remaining Time Single Оставшееся время (однопоточный) Remaining Time Multi Оставшееся время (многопоточный) Reload every hour (0=off) Перегружать каждый час (0=выключено) Max. rate KB/s (0=off) Макс. скорость КБ/сек (0=выключено) Path Путь Alias Алиас Edit a folder from the sharelist. Редактировать папку из списка шары Open File Dialog. Диалог открытия файла Add a URL to the list. Добавить URL в список Remove a URL from the list. Удалить URL из списка 28.8Kbps 28.8Kbps Enable logging Разрешить лог Append date to log file name Добавить дату к названию файла лога Nick name filter Фильтр ников Enable nick name filter Разрешить фильтр ников Disable logging for public chat Отключить лог для общего чата Append hub name to log file name Добавить имя хаба к названию файла лога Append hub host to log file name Добавить хост хаба к названию файла лога &Save &Сохранить &Cancel &Отмена Forward private to public chat Перенаправлять приватный чат в общий Away Prefix: Префикс 'отошел': Select Language. Выбрать язык Recreate every hour (0=off) Пересоздавать каждый час (0=выключено) Check and recreate sharelist on startup Проверить и пересоздать список шары при запуске seconds секунд Away after Сообщение 'отошел' через Auto Away Mode Автоматическое сообщение 'отошел' Ignore messages to offline users Игнорировать сообщения пользователям в оффлайн Ignore messages from offline users Игнорировать сообщения от пользователей в офлайн Show joins and parts Показывать соединения и части Columns Столбцы Comment Комментарий Speed Скорость EMail E-mail Share Шара Photo Фотография Name Имя Extended hub count in tag (H:3/2/1) Расширенное описание хаба в теге (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Если отмечено, то описание хаба будет отображаться как H:Normal/Reg/OP, иначе H:Total Do not share dot files and folders Не шарить файлы и папки начинающиеся с точки If checked, files and folders starting with "." will not be shared. Если отмеченно, то файлы и папки, начинающиеся с точки, не будут расшарены Default filebrowser remote encoding Кодировка удаленного списка файлов по-умолчанию The default remote encoding for filelist browsing. Кодировка по-умолчанию для списка файлов Disable hash list Отключить хеш-список Small file size (bytes) Размер маленьких файлов (в байтах) The maximum size of files for which extra upload slots will be granted. Максимальный размер файлов, для которых будет выдан экстраслот Advanced Расширенный Read file buffer size (bytes) Размер буфера чтения файла (в байтах) If you experience slow uploads in a LAN, try increasing this value. Если у Вас медленная отдача, попробуйте увеличить это значение Compressed transfers Сжатые передачи Enable compressed transfers Включить сжатые передачи Time between auto-searches (seconds) Время между авто-поиском (в секудах) IP, Hostname or Interface IP-адрес, имя хоста или интерфейс Get Interface Получить интерфейс Get Internet IP Получить Интернет IP-адрес Use IP address from the hub Использовать IP-адрес с хаба IP or Hostname IP-адрес или имя хоста Network Interface Сетевой интерфейс Listen on IP Слушать IP-адрес Enable compressed hub to client communication (EXPERIMENTAL) Включить сжатую передачу между клиентом и хабом (экспериментально) GiB ГБ KiB КБ MiB МБ Query on File Delete Запрос на удаление файла Joins and parts only for friends Соединения и части только для друзей Do not open chat windows for Не открывать окно чата для A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регулярное выражение для ников, для которых не всплывает окно чата. Например "Hub|Bot|Spammer" соответствует Hub или Bot или Spammer. Commands Команды Custom chat commands Свои команды чата Command Команда Right click to add or remove commands, left click on text to edit it. Правый клик, чтоб добавить или удалить команду. Левый клик для редактирования. Menus Меню Custom menu commands Свои команды меню Context Контекст Tag Тег IP IP-адрес Supports Поддержка Double clicking a user Двойной клик на пользователе Opens private chat Открыть приватный чат Downloads filelist Скачать список файлов Icons Иконки Icon themes Темы иконок Emoticons Смайлики Application Icons Иконки программы Userlist icons Иконки списка пользователей To ensure all icons are changed, please restart valknut. Для смены иконок перезапустите valknut Filelist browser Список файлов Filelist browser settings Настройки списка файлов Also show folders in the right pane Также показывать папки на правой панели Sort folders in the right pane on top Сортировать папки на правой панели Show folders sizes in the left pane Показывать размеры папок на левой панели Listen to the sound file. Прослушать звуковой файл Play a sound when your nick is mentioned in public chat Проигрывать звук, когда ваш ник упомянут в главном чате Open File Dialog Диалог открытия файла Log completed downloads Логировать завершенные загрузки Log completed uploads Логировать завершенные отдачи Log all transfer details Логировать все детали передачи Hub Lists Списки хабов Edit hublist url. Редактировать URL списка хабов Update every hour (0=off) Обновлять каждый час (0=отключено) Generate Генерировать Create a new key and certificate pair. Создать новыю пару ключ - сертификат Auto Responses Автоответы Auto Response Settings Настройки автоответов Enable auto responder for public chat Включить автоответчик для общего чата Enable auto responder for private messages Включить автоответчик для приватных сообщений Minimum seconds between auto responses Минимальное кол-во секунд между автоответами Ignore nicks Игнорировать ники A QT regular expression of nicks to not auto respond to, case insensitive. Регулярное выражения для ников, для которых не нужен автоответ, не учитывать регистр Trigger Триггер Case Sensitive Учитывать регистр Response Ответ Encoding Кодировка Remote Encoding Удаленная кодировка For a list of valid encodings, run "iconv -l" Для списка правильных кодировок выполните "iconv -l" You must close and re-open each hub to use the new setting. Select "None" to disable text encoding conversions. Вы должны закрыть и открыть заново каждый хаб, чтобы использовать новые настройки. Выберите "None", чтобы отключить перекодировку текста. Add a tag to the description that show some information from you. Добавьте тег к описанию, который содержит информацию о вас Adjust hub details in search results Настроить детализацию хаба в результатах поиска Only used if searching a single connected hub. Используется только при поиске на одном хабе Send unknown /commands as chat Посылать неизвестные команды в чат If true, undefined chat commands will be sent to the hub. Если Да, то неизвестные команды будут посланы на хаб. Plugin folder Папка с плагинами Tab nick completion options Настройки дополнения ников с помощью Tab Tab completion matches by Tab-дополнение совпадает с Containing anywhere Содержит Starting with Начинается с Ignore all tags (text inside []) Игнорировать все теги (текст внутри []) Maximum paragraphs (0=off) Максимум параграфов (0=off) Hide popups of more lines than (0=off) Скрывать всплывающие окна, с кол-вом строк более чем (0=off) Unknown chat commands Неизвестные команды чата Exceptions Исключения A comma separated list of commands. Список команд, разделенных запятой Shell command (/sh) options Настроки шелл-команды (/sh) Use threads to wait for shell commands to finish Использовать потоки для ожидания завершения шелл-команд Seconds to wait for shell commands when not using threads Кол-во секунд для ожидания шелл-команд неиспользующих потоки Open folders in the right pane by double clicking them Открывать папки на правой панели двойным кликом Include a menu item for removing public hubs Добавить пункт меню для удаления публичных хабов Enabling this option will slow closing valknut Включение этой опции медленно закроет valknut Disable features for old clients Отключить фичи для старых клиентов Disable support for the ADCGet command when hash list is disabled Отключить поддержку команды ADCGet, если отключен хеш-список Disable support for XML filelists when hash list is disabled Отключить поддержку XML списков файлов, если отключен хеш-список This only applies to outgoing client connections. Hub and incoming connections are not checked. Это применяется только к исходящим соединениям. Исходящие соединения и соединения с хабом не проверялись. Allow all connections Разрешить все соединения Allow private address space connections only Разрешить соединения только приватного адресного пространства Menu command settings Настройки меню команд Add commands received from the hub to the menus Добавить в меню комадны, полученные от хаба Use a submenu for custom menu commands Использовать подменю для особых команд меню Add a new menu command to the list. Добавить новую команду меню в список. Edit an existing menu command. Редактировать существующую команду меню. Remove an existing menu command from the list. Удалить существующую команду меню из списка. Move up Вверх Change the order of the commands. Изменить порядок команд. Move down Вниз %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Background color Цвет фона Enable Включить Transfers (TCP) Передачи (TCP) Standard Listen Port: Стандартный порт для прослушки: The tcp listen port for standard incoming connections. Порт TCP для стандартных входящих соединений Encrypted Listen Port: Шифрованный порт прослушки: The tcp listen port for incoming encrypted connections. Порт TCP для шифрованных входящих соединений Custom Browser Специальный браузер Uncheck to use your default desktop web browser. Снимите галку для того чтобы использовать web-браузерпо-умолчанию. Reverse chat colors Обратить цвета чата Certificate Сертификат Private Key Приватный ключ Enable SSL transfers with old valknut versions Включить SSL-передачи со старыми версиями valknut Old versions could not encrypt the initial handshaking commands which includes your nick. Старые версии не зашифровывают команды начального рукопожатия, которые содержат Ваш ник. Recreate every hour Пересоздавать каждый час Disabled Выключено Save Queue in minutes Сохранение очереди в минутах Maximum upload slots Максимум слотов на отдачу Unlimited Неограничено Maximum uploads to user Максимум отдач для пользователя Searching Поиск Search delay (seconds) Задержка поиска (в секундах) Reconnect Counter Счетчик пересоединения Never reconnect Никогда не пересоединяться Never hide popups Никогда не скрывать всплывающие сообщения Maximum paragraphs Максимум параграфов Hide popups of more lines than Скрывать всплывающие сообщения с кол-вом строк больше Update every hour Обновлять каждый час Don't Display Messages after X retry Не показвать сообщения после Х попыток Open new hub windows Открывать новые окна хабов Minimized Свернуто Normal Нормально Maximized Развернуто Shares Шары Share Settings Настройки шары Downloads Загрузки Download Settings Настройки загрузки Maximum rate Максимум передачи Minimum segment size Минимальный размер сегмента MiB МБ Uploads Отдачи Upload Settings Настройки отдачи You must close and re-open each hub to use the new setting. Вы должны закрыть и снова открыть каждый хаб для использования новых настроек. Open extra slots Открыть дополнительные слоты When total upload rate is below Когда скорость отдачи меньше KiB/s КБ/сек Maximum extra slots to open Макс. кол-во дополнительных слотов Open chat window exceptions Открыть окно исключений чата A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регулярное выражение для ников. Например "Hub|Bot|Spammer" будет совпадать с Hub или Bot или Spammer. Chat logging Логирование чата Magnet links Magnet-ссылки Clicking magnet links in chat Magnet-ссылки в чате Open dialog Открыть диалог Start search Начать поиск Do nothing Ничего Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect подключение Public Публичный Name Имя Server Сервер Description Описание User Пользователь Bookmarks Закладки Hub List Список хабов Filter Фильтр double click to hide the toolbar двойной щелчок, чтобы скрыть панель инструментов edit filter Редактировать фильтр хабов delete filter удалить фильтр update public hublist Обновить список публичных хабов add filter добавить фильтр reload public hublist Перезагрузить список публичных хабов double click to show the toolbar двойной щелчок, чтобы показать панель инструментов DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Шпион Spy On/Off Включить/Выключить шпиона Clear Очистить 0 0 Results: Результаты: Text Текст Count Кол-во Time Время Spy Enabled Шпион включен Ignore TTH searches Игнорировать поиск TTH Statistic Статистика Active: Активный: Reject: Отброшено: Search Error: Ошибки поиска: Result Error: Ошибки результата: Passive: Пассивный: DCDialogTransfer Transfer List Список загрузок Nick Ник State Состояние Transfer Передача File Файл Wait Ожидание Size Размер Log Лог Slots Слоты Hub Хаб 0/0 0/0 Files Файлы Local File / Nick Локальный Файл / Ник Size / Hub Размер / Хаб Remote File Удаленный файл Server/User IP Сервер / IP пользователя double click to hide the toolbar двойной щелчок, чтобы скрыть панель инструментов double click to show the toolbar двойной щелчок, чтобы показать панель инструментов File Name Имя файла Local File Локальный файл Hub/File Хаб/Файл IP/Size IP/Размер TTH DCDialogTranslatorSettings Translator Settings Настройки переводчика Choose a provider Выберите провайдера Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Настройки для Yahoo Babelfish Choose the languages Выберите языки Settings for Google Translate Настройки для Google Translate Input language Язык ввода Output language Язык вывода OK OK Cancel Отмена DCDialogUpdateManager Update Manager Менеджер обновлений Update Обновить Check update Проверить обновления DCDialogUserCommandEditor User Command Editor Редактор пользовательских команд Command Type Тип команды Separator Разделитель Raw Chat Чат PM Приватное сообщение Context Контекст Hub Menu Меню хаба User Menu Меню пользователя Search Menu Меню поиска Filelist Menu Меню списка файлов Parameters Параметры Name Имя Command Команда Hub IP / DNS (empty = All, 'op' = where operator) IP-адрес / DNS-имя хаба (пусто = Все, 'op' - где оператор) To (empty for selected user) К (пусто для веделенного пользователя) Send once per nick Послать по одному на ник Text sent to hub Текст, отправляемый хабу OK OK Cancel Отмена DCDialogUserCommandLines User Command Lines Пользовательские команды For Для On Use for all nicks Использовать для всех ников OK OK Cancel Отмена DCDialogUsersList User Пользователь Friend-List Список друзей Photo Фотография Slot Слот Users List Пользовательский список Ignore Игнорировать DCEditServer Please enter a hubname. Введите имя хаба Please enter a hubhost. Введите адрес хаба DCFileBrowser Items Элементы Files Файлов Total Всего Directories Директории Root Directory Корневая директория <wrong length> <неправильная длина> file файл Select destination Выберите назначение Select a filename Выберите имя файла Filebrowser Файловый браузер save file dialog диалог сохранения файла open filelist dialog диалог открытия файла Choose a file Выберите файл Choose a filename to save under Выберите имя файла для сохранения Folder Папка Download contents? Загрузить содержимое? Download the contents of " Загрузить содержимое " Failed to load filelist Загрузка списока файлов неудачна Unable to load Не могу загрузить OK OK Modern XML Filelists Современные XML списки файлов Old BZ2 Text Filelists Старые BZ2 текстовые списки файлов Very old HE3 Text Filelists Очень старые HE3 текстовые списки файлов Old Valknut Filelists Старые списки файлов Valknut All files Все файлы Cannot save file Не могу сохранить файл No data available to save. Нет данных для сохранения Error saving file Ошибка при сохранении файла Failed to save Сохранение неудачно Cannot open list now Не могу открыть список Filelist browser is busy Файловый браузер занят Error opening own filelist Ошибка при открытии своего списка файлов Failed to open your own filelist Открытие своего списка файлов неудачно Error opening filelist Ошибка при открытии списка файлов File Файл does not exist. не существует. is likely not a valid filelist вероятно неправильный список файлов Processing filelist... Обработка списка файлов... Cannot download Не могу загрузить Could not find the path for Не могу найти путь для None Нет Directory Папка Modern XML Filelists (uncompressed) Современные XML файл-листы (несжатые) Search by TTH Искать по TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Скачать файл File allready download Файл уже скачивается File allready exist ! Файл уже существует! Resume Продолжить Overwrite Переписать Cancel Отмена Start Multi Download Начать многопоточную загрузку File allready in the queue and not mark as multi download ! Файл уже в очереди и не помечен как многопоточная загрузка! File allready in the queue with a different size ! Файл уже в очереди и имеет другой размер ! You can start a Multi Download ! Вы можете начать многопоточную загрузка! A same file is allready in the queue ! Этот файл уже в очереди! If you want to download all files in this mode ? Если Вы хотите скачивать все файлы в этом режиме? Not connected to required hub! Нет связи с необходимым хабом! Connect Соединение (choose an existing download to add to) (выберите существующую загрузку, чтобы добавить к ней) A same file is already in the queue! Такой же файл уже в очереди! Start a multi-download Начать многопоточную загрузку File is already in the queue but not mark as a multi-download! Файл уже в очереди, но не отмечен для многопоточной загрузки! File is already in the queue with a different size! Файл уже в очереди, но с другим размером! File already downloaded! Файл уже скачан! Repair File Восстановить файл Enter byte range (m-n) Введите диапазон (m-n) Repair BIN Sectors Восстановить BIN сектора Enter sector range (m[-n]) Введите диапазон секторов (m[-n]) File already exists! Файл уже существует! You can start a multi-download! Вы можете начать многопоточную загрузку! Do you want to download all files in this mode? Вы хотите скачать все файлы в этом режиме? File already exists in your finished downloads folder Файл уже существует в папке завершенных загрузок It will be overwritten when the download finishes Он будет перезаписан когда завершится загрузка DCFileTransferInfo File Transfer Info Информация о передаче файла DCGuiApp Options Настройки &Options &Настройки Ctrl+O Ctrl+O Open option dialog Открыть диалог настроек Exit Выход Ctrl+Q Ctrl+Q Quits the application Выйти из приложения Exit Quits the application Выход Выйти из приложения Toolbar Панель инструментов Tool&bar Панель &инструментов Enables/disables the toolbar Включить/выключить панель инструментов Toolbar Enables/disables the toolbar Панель инструментов Включить/Выключить панель инструментов Statusbar Панель статуса &Statusbar &Панель статуса Enables/disables the statusbar Включить/выключить панель статуса Statusbar Enables/disables the statusbar Панель статуса Включить/Выключить панель статуса Cascade Каскадом &Cascade &Каскадом Cascades all windows Расположить все окна каскадом Cascade Cascades all windows Каскадом Расположить все окна каскадом Tile Разложить плиткой &Tile &Разложить плиткой Tiles all windows Разложить плиткой все окна Tile Tiles all windows Разложить Разложить плиткой все окна Ctrl+S Ctrl+S Transfer List Список передач &Transfer List &Список передач Ctrl+T Ctrl+T Show Transfer List Показать список передач Hub Search Поиск по хабам Show Hub Search Показать поиск по хабам About О программе &About... &О программе... About the application О приложении About About the application О программе О приложении New Version Новая версия &New Version... &Новая версия... Check for new version Проверить наличие более свежей версии New Version Check for new version Новая версия Провесить наличие более свежей версии What's &This Что это? &File &Файл &View &Вид &Action &Действия &Window &Окна &Help &Помощь Ready. Готов (no error message from socket) (no error message from socket) TCP listen failed, change to passive mode ! Ошибка при открытии TCP порта, переключитесь в пассивный режим! Quit... Выход... Open options dialog... Открыть диалог настроек... Exiting application... Выхожу из приложения... Toggle toolbar... Фиксировать панель инструментов... Toggle statusbar... Фиксировать панель статуса... About... О программе... New version... Новая версия... Show/hide transfer list window ... Показать/Скрыть окно списка передач... Show/hide hub search window ... Показать/Скрыть окно поиска... Can't get version info from server Не могу получить информацию о версии с сервера Current version is: Текущая версия: Normal Нормально &Normal &Отключен Ctrl+N Ctrl+N Set away mode Режим 'отошел' Away Режим 'отошел' &Away &Включен Ctrl+A Ctrl+A Hub List Список хабов Show Hub List Показать список хабов Show/hide hub list window ... Показать/Скрыть окно списка хабов... H&ub List Список &хабов Ctrl+U Ctrl+U Minimize Свернуть &Minimize &Свернуть Minimize all windows Свернуть все окна Minimize Minimize all windows Свернуть Свернуть все окна Action Действие Quick Options Быстрые настройки Quick options Быстрые настройки F12 F12 Context menu for a few options Контекстное меню для некоторых настроек Download mode: Ask Режим загрузки: спрашивать Download mode: Single Режим загрузки: однопоточный Download mode: Multi Режим загрузки: многопоточный Spy Шпион Show Spy Показать поиск-шпиона Show/hide spy window ... Показать/Скрыть окно поиск-шпиона... Users Пользователи Ctrl+F Ctrl+F Show users: search tab and friends tab Show users: search tab and friends tab Do you really want to quit? Действительно хотите выйти? Exiting application... aborted Выход из приложения...прервано Show/hide users window ... Показать/Скрыть окно пользователей... Away &Mode Режим 'ото&шел' Close chat windows Закрыть окно чата Close all chat windows Закрыть все окна чата Close chat windows Close all chat windows Закрыть окно чата Закрыть все окна чата Close disconnected hubs Закрыть отключенные хабы Close all disconnected hub windows Закрыть все окна разъеденённых хабов Close disconnected hubs Close all disconnected hub windows Закрыть разъеденённые хабы Закрыть все окна разъеденённых хабов Tile &Horizontally &Горизонтально Tiles all windows horizontally Расположить горизонтально все окна Tile Horizontally Tiles all windows horizontally Горизонтально Расположить горизонтально все окна Reload Plugins Перезагрузить плагины &Reload Plugins &Перезагрузить плагины Dock Свернуть в трей &Dock &Свернуть в трей Dock the application Свернуть приложение в трей Dock Dock the application Dock the application Hub &Search Поиск по &хабам S&py &Шпион Ctrl+P Ctrl+P Dock/Undock application... Свернуть в трей/развернуть приложение... Refresh share in progress. Происходит обновление шары Refresh share allready in progress. Обновление шары уже запущено Filelist browser Список файлов Open filelist browser Открыть список файлов Filelist browser local Свой список файлов Open local filelist browser Открыть свой список файлов Exit Quits the application. Выход Выход из приложения. Tabbar Панель закладок Enables/disables the tabbar Включить/выключить панель закладок Tabbar Enables/disables the tabbar. Панель закладок Включить/выключить панель закладок Toolbar Enables/disables the toolbar. Панель инструментов Включить/выключить панель инструментов Statusbar Enables/disables the statusbar. Панель статуса Включить/выключить панель статуса Dock Dock the application. Свернуть в трей Свернуть приложение в трей. Cascade Cascades all windows. Каскадом Расположить каскадом все окна. Tile Vertically Вертикально &Tile Vertically &Вертикально Tiles all windows vertically Расположить все окна вертикально Tile Vertically Tiles all windows vertically. Вертикально Расположить все окна вертикально Tiles all windows horizontally. Расположить все окна горизонтально Tile Horizontally Tiles all windows horizontally. Горизонтально Расположить все окна горизонтально. Minimize all windows. Свернуть Minimize Minimize all windows. Свернуть Свернуть все окна. Close chat windows. Закрыть окна чатов Close all chat windows. Закрыть все окна чата Close chat windows Close all chat windows. Закрыть окна чатов Закрыть все окна чатов. Close disconnected hubs. Закрыть отключенные хабы Close all disconnected hub windows. Закрыть все отключенные хабы Close disconnected hubs Close all disconnected hub windows. Закрыть отключенные хабы Закрыть все отключенные хабы Show Hub List. Показать список хабов Show Transfer List. Показать список передач Show Hub Search. Показать поиск по хабам Show Search Spy. Показать поискового шпиона Show users: search tab and friends tab. Показать пользователей: панель поиска и панель друзей Set away mode. Установить режим 'отошел' About the application. О программе About About the application. О программе О программе Manual Инструкция &Manual... &Инструкция Online User Manual. Онлайн инструкция Manual Online User Manual. Инструкция Онлайн инструкция Support Поддержка &Support... &Поддержка... Connect to Valknut hub Соединиться с хабом Valknut Support Connect to the Valknut hub. Поддержка Соединиться с хабом Valknut Latest release Последняя версия &Latest release... &Последняя версия... Latest release Show latest release. Последняя версия Показать последнюю версию. Recreate share Пересоздать шару Show update manager Показать менеджер обновлений Tab Bar Панель закладок RX/TX Traffic. RX/TX Траффик. Available disc space. Доступное место на диске Refresh share finished. Обновление шары завершено Refresh share already in progress. Шара уже обновляется Toggle tabbar... Переключить панель закладок... Dock Application Свернуть приложение The system tray icon must be enabled to dock the application. Иконка в трее должна быть включена для того, чтобы свернуть приложение. Ratio: Overall: Отношение: (Up: (отдано: , Down: , загружено: ) This session: ) Эта сессия: Warning license file not found ! Внимание, не найден файл лицензии! Can't get release info from server Не могу получить информацию о версии с сервера latest release is: последняя версия: Latest release... Последняя версия... Show/hide update manager window ... Показать/скрыть менеджер обновлений... Update Manager Менеджер обновлений The update manager is disabled. Менеджер обновлений отключен Valknut Connected to Подключен к hubs хабы Using dclib Используется dclib Dock/Undock Свернуть/Развернуть Remove tray icon Удалить иконку в трее Open options dialog Открыть диалог настроек Open options dialog Opens a dialog where settings can be changed. Открыть диалог настроек Открывает диалог, где могут быть изменены настройки Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Открыть файловый браузер Открывает пустой файловый браузер, который можно использовать для открытия файл-листов с диска Open local filelist browser View the files in your own share. Открыть локальный файловый браузер Просмотр файлов в Вашей шаре Refresh share Обновить шару Refresh share Update your share to match file changes on disk. Обновить шару Обновляет шару, ищет изменения на диске Select default download mode Выбрать режим загрузки по-умолчанию Set default download mode to: Ask Установить режим загрузки по умолчанию: спрашивать Download mode: Ask Prompt for single or multi source mode when starting a download. Режим загрузки: Спрашивать Запрос режима загрузки Set default download mode to: Single Установить режим загрузки по умолчанию: однопоточный Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Резим загрузки: Однопоточный Каждый файл будет загружен с одного пользователя без использования сегментной загрузки Set default download mode to: Multi Установить режим загрузки по умолчанию: многопоточный Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Режим загрузки: Многопоточный Каждый файл будет загружен по-сегментно с различных пользователей Reload Plugins Scan for new and reload any add-on software. Перезагрузить плагины Поиск и загрузка новых плагинов Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Панель закладок Включение/выключение панели закладок. Панель закладок показывает закладку для каждого хаба Dock Dock the application. Only the system tray icon will be visible. Свернуть Свернуть приложение. Будет видна только иконка в трее Hub List Shows the lists of public and bookmarks hubs. Список хабов Показывает список публичных хабов и хабов в закладках Spy The search spy shows incoming searches and search statistics. Шпион Поисковый шпион показывает входящие запросы поиска и статистику поиска Show Users List. Показать список пользователей Users List of favorite users, showing if they are online. Пользователи Список предпочтительных пользователей, показывает, если они в онлайне Set away mode to normal Отключить режим 'отошел' Away mode: normal Normal mode, away message will not be sent automatically. Режим 'отошел': отключен Нормальный режим, сообщение 'отошел' не посылается автоматически Set away mode to away. Включить режим 'отошел' Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. Режим 'отошел': включен Вы будете отмечены 'отошел' и сообщение 'отошел' будет посылаться автоматически в ответ на новое приватное сообщение About About the application. Displays version, copyright and licensing information. О программе О программе. Отображает версию и лицензионную информацию Manual Online User Manual. Launches the configured web browser. Инструкция Онлайн инструкция пользователя. Запускается в браузере Valknut Using QT(R) Используется QT(R) System Tray Icon Иконка в трее Enables/disables the system tray icon Включить/выключить иконку в трее System Tray Icon Adds or removes an icon in the system tray area. Иконка в трее Добавляет или убирает иконку в трее Open Hub Search. Открыть поиск по хабам Hub Search Opens a search window where you can search for files. Поиск по хабам Открывает окно поиска, где Вы можете искать файлы Open hub search window ... Открыть окно поиска по хабам ... Close all chat windows Close all chat windows. Закрыть все окна чата Закрыть все окна чата Close all offline chat windows Закрыть все окна чата в оффлайне Close all offline chat windows. Закрыть все окна чата в оффлайне Close all offline chat windows Close all chat windows where the user is no longer on the hub. Закрыть все окна чата в оффлайне Закрыть все окна чата, участник которых более не на хабе Close all filelist windows Закрыть все списки файлов Close all filelist windows. Закрыть все списки файлов Close all filelist windows Close all filelist browsers. Закрыть все списки файлов Закрыть все списки файлов Close all search windows Закрыть все окна поиска Close all search windows. Закрыть все окна поиска Close all search windows Close all search windows. Закрыть все окна поиска Закрыть все окна поиска Debug Settings... Настройки отладки... Settings for debugging Настройки для отладки Debug Settings Change settings useful for debugging. Настройки отладки Изменить настройки для отладки View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Публичный Bookmarks Закладки Add Bookmark Добавить закладку Error Ошибка Edit Bookmark Редактировать закладку Remove Удалить Cancel Отмена Please enter a hubname. Введите имя хаба Please enter a hubhost. Введите адрес хаба Remove bookmarks Удалить закладки You are sure ? Вы уверены? Remove public hub Удалить публичный хаб Add hub filter Добавить фильтр хаба A filter with that name already exists Фильтр с таким именем уже существует Edit hub filter Редактировать фильтр хаба Delete hub filter Удалить фильтр хаба Filter not found Фильтр не найден Error removing hub " DCHubProfile Create Hub Profile Создать профиль хаба Please enter the profile name Пожалуйста введите название профиля Save Сохранить Cancel Отмена Save profile Сохранить профиль Do you want to save your changes? Сохранить изменения? Are you sure? Вы уверены? Delete profile for Удалить профиль для DCHubSearch Connect to local udp port failed. ( Соединение с локальным UDP портом неудачно. ( No hubs found. Не найдено ни одного хаба Hub Search Error Ошибка поиска No connected hubs found. Не найдено подключенных хабов Select download folder Выберите папку для загрузки Select search Выберите поиск Please select an search Пожалуйста выберите поиск Please select a connected hub. Пожалуйста выберите подключенный хаб Select file for Выберите файл для USER ПОЛЬЗОВАТЕЛЬ FILE ФАЙЛ List download Загрузка списка Not connected to required hub! Нет соединения с необходимым хабом! Connect Соединение Cancel Отмена save file dialog диалог сохранения файла Choose a filename to save under Выберите имя файла для сохранения open file dialog диалог открытия файла Choose a file to open Выберите файл для открытия External search is allready running ! Внешний поиск уже работает! Please add a search ! Пожалуйста добавьте поиск! Start Старт Stop Стоп Multi Search only work in active mode ! Мульти-поиск работает только в активном режиме! Folder Директория External search is already running! Внешний поиск уже работает! Please add a search! Пожалуйста добавьте поиск! Multi Search only work in active mode! Мульти-поиск работает только в активном режиме! Filelist download Загрузить список файлов Unknown Неизвестно None Нет Directory Папка File Файл Search ended with %1 results Поиск закончился с %1 результатами %1 results were filtered %1 результатов было отфильтровано on включено Ready Готов Other search... Другой поиск... Auto search... Авто поиск... Search... Поиск... Auto search finished Авто поиск завершен %1 - %2 Results %1 - %2 резальтаты %1 items %1 элементов Another search is already running! Другой поиск уже запущен! Search for "%1" on %2 Поиск для "%1" на %2 all connected hubs все подключенные хабы %1 filtered public hubs %1 отфильтрованных публичных хабов all public hubs все публичные хабы all bookmark hubs все хабы в закладках %1 - Searching %1 - ищется Hub Search Поиск по хабам Another search is running. Stop other search? Другой поиск запущен. Остановить другой поиск? Folder download Загрузить папку Add search Добавить поиск Invalid TTH Неправильный TTH DCOptions You must enter a valid 'Fake Host' ! Вы должны ввести правильный 'Fake Host'! You must enter a valid interface ! Вы должны ввести правильный интерфейс! You must enter a valid tcp listen port ! Вы должны ввести правильный TCP порт! You must enter a valid udp listen port ! Вы должны ввести правильный UDP порт! You must enter a valid nick ! Вы должны ввести правильный ник! Interface IP : IP интерфейс : Can't get interface IP ! Не могу получить IP интерфейс! Select download folder Выберите папку для загрузки Select share folder Выберите папку шары Select language file Выберите файл локализации HubList URL URL списка хабов Please enter a url Пожалуйста введите URL Share list not available Список шары не доступен bytes байт Total shared: Всего в шаре: Share List Info Информация о списке шары You change the client mode ! Please restart DCGUI ! Вы изменили настройки режим клиента! Перезагрузите DCGUI! My Мой Select sound file Выберите звуковой файл Select sound player Выберите звуковой проигрыватель au au wav wav All Files Все файлы Host IP : IP хоста: Can't get Host IP ! Не могу получить IP хоста! Select download finished folder Выберите папку для завершенных загрузок You must set a Download Folder ! Вы должны указать папку для загрузок! Download Finished Folder and Download Folder must be different ! Папка для завершенных загрузок и папка для загрузок должны быть разными! You must enter a valid search nick ! Вы должны ввести действительный ник для поиска! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Вы слушаете порт < 1024! Вы можете запустить dcgui только от root в активном режиме! Other Другие Log Лог Sound Звук General Основные GUI GUI Chat Чат Transfer Передача Connection Подключение Mode Режим Settings Настройки DCGUI DCGUI Identify Идентификация Folder Папка Interface List Список интерфейсов Please select an interface Пожалуйста выберите интерфейс No interfaces found ! Интерфейс не был найден! Select data folder Выберите папку данных User Пользователь Select log file Выбрать файл лога Security Безопасность Select a browser Выберите браузер Compressed list size (HE3/BZ): Сжатый список файлов (HE3/BZ): Select transfer cert Выберите сертификат передачи Select transfer key Выберите ключ передачи Edit Alias Редактировать алиас Please enter a new alias Пожалуйста введите новый алиас Browse Share List Просмотреть шару Add new nick name filter Добавить новый фильтр ников Please enter a nick Пожалуйста введите ник Chat Timestamp Метка времени в чате Chat Local Nick Локальный ник в чате Chat Local Text Локальный текст в чате Chat Remote Nick Удаленный ник в чате Chat Remote Text Удаленный текст в чате Chat Status Nick Ник статуса в чате Chat Status Text Текст статуса в чате Public Chat Timestamp Метка времени в общем чате Public Chat Local Nick Ник в общем чате Public Chat Local Text Текст в общем чате Public Chat Remote Nick Удаленный ник в общем чате Public Chat Remote Text Удаленный текст в общем чате Public Chat Status Nick Ник статуса в общем чате Public Chat Status Text Текст статуса общем чате Public Private Chat Nick Ник при трансляции приватного чата в общий Public Private Chat Text Текст при трансляции приватного чата в общий Can't save Image ! Не могу сохранить изображение! Can't load Image ! Не могу загрузить изображение! Select a 64x64 Photo Выберите фотографию 64x64 Encoding Кодировка Auto Responses Автоответы Hub Lists Списки хабов Filelist browser Список файлов Icons Иконки Menus Меню Commands Команды You changed the client mode! Please restart Valknut! Вы изменили режим. Пожалуйста перезапустите Valknut! You must set a Download Folder! Вы должны указать папку для загрузок! Download Finished Folder and Download Folder must be different! Папка для завершенных загрузок и папка для загрузок должны быть разными! You must enter a valid 'Fake Host'! Вы должны ввести правильный 'Fake Host'! You must enter a valid interface! Вы должны ввести правильный интерфейс! You must enter a valid tcp listen port! Вы должны ввести правильный TCP порт! You must enter a valid udp listen port! Вы должны ввести правильный UDP порт! You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Вы настроили Valknut на прослушку порта < 1024! Вы можете запустить Valknut только от root в активном режиме! You must enter a valid nick! Вы должны ввести правильный ник! You must enter a valid search nick! Вы должны ввести правильный ник для поиска! Can't save Image! Не могу сохранить изображение! Can't load Image! Не могу загрузить изображение! Host IP: IP адрес: Can't get Host IP! Не могу получить IP-адрес! Interface IP: IP-адрес интерфейса: Can't get interface IP! Не могу получить IP-адрес интерфейса! No interfaces found! Интерфейсы не найдены! Error getting IP Ошибка при получении IP-адреса Chat Say Чат говорит Public Chat ME Nick Свой ник в общем чате Operator Nick Ник оператора Yes Да No Нет Compressed list size (HE3/BZ/XML): Сжатый список файлов (HE3/BZ/XML): Edit url Редактировать URL Case sensitive С учетом регистра Case insensitive Без учета регистра Overwrite? Перезаписать? Replace existing key/cert? Заменить существующий ключ/сертификат? Could not create folder for key Не могу создать папку для ключа Could not create Не могу создать Could not create folder for cert Не могу создать папку для ключа Could not start openssl 1 Не могу запустить openssl 1 Make sure the openssl program is in your PATH. Убедитесь, что openssl прописан в PATH Error occurred while running openssl 1 Ошибка при запуске openssl 1 Could not start openssl 2 Не могу запустить openssl 2 Error occurred while running openssl 2 Ошибка при запуске openssl 2 Select plugin folder Выберите папку с плагинами Delete menu command? Удалить команду меню? Delete " Удалить " Get Internet IP Получить Интернет IP-адрес Unexpected response from Неожиданные ответ от does not look valid не выглядит правильным Standard and encrypted port must be different. Стандартный и шифрованнный порт должны быть различными. Unlimited Неограничено KiB/s КБ/сек Uploads Отдачи Downloads Загрузки Shares Шары Remote Encoding Удаленная кодировка These options are recommended: Рекомендованные настройки: These options are not recommended: Нерекомендованные настройки: Settings Problems Проблемы настройки Setting remote encoding to %1 will disable most conversions. Установка удаленной кодировки в %1 затруднит большинство разговоров. -trigger response Colors Client Клиент DCServerList Add Bookmark Добавить закладку Edit Bookmark Редактировать закладку Select profle Выбрать профиль Please select an profile Пожалуйста выберите профиль Public Публичный Bookmarks Закладки DCShellCommandRunner Command produced no visible output. Команда не выводит результатов Process exited with status Process was killed or crashed. Процесс был убит или рухнул Process still running after 2 minutes, killing process... После 2 минут процесс все еще запущен, завершаю прощесс... DCTransferView Wait Ожидание Idle Простой Run Загрузка Transfer Передача Error Ошибка Download Загрузка Upload Отдача Unknown Неизвестно Pause Пауза Hub offline Хаб в оффлайне User offline Пользователь в оффлайне User busy Пользователь занят Send error Ошибка при отправке Change Transfer-Rate Изменить скорость передачи Please enter a Transfer-Rate [B/s] (0=off) Пожалуйста введите скорость передачи [B/s] (0=выключено) Change File-Priority Изменить приоритет файла Please enter a priority Пожалуйста введите приоритет Handshake Рукопожатие Nothing Ничего Filebrowser Файловый браузер Try Connect Попробовать соединиться User and Hub not found in the queue ! Пользователь и хаб в очереди не найдены! Nick: Ник: Hub: Хаб: Remove Удалить Cancel Отмена My Мой Browse Share List Просмотреть шару Share list not available Список шары не доступен Remove Transfer Удалить передачу You are sure ? Вы уверены? None Нет File Файл %1 folders %1 директорий Remove folder from queue Удалить папку из очереди User/hub not found Пользователь/хаб не найден No directories queued for that user Нет папок в очереди для этого пользователя Directory not found Папка не найдена Directory Папка DCTranslator Translator Переводчик Choose a language Выберите язык Chinese Simplified Китайский упрощенный to к English Английский Chinese Traditional Китайский традиционный Dutch Фламанский French Французский German Немецкий Greek Греческий Italian Итальянский Japanese Японский Korean Корейский Portuguese Португальский Russian Русский Spanish Испанский Detect language Определить язык Arabic Арабский Bulgarian Болгарский Chinese Китайский Croatian Хорватский Czech Чешский Danish Датский Finnish Финский Hindi Хинди Norwegian Норвежский Polish Польский Romanian Румынский Swedish Шведский Translator Settings Настройки переводчика Choose a provider Выберите провайдера Settings for Yahoo Babelfish Настройки для Yahoo Babelfish Choose the languages Выберите языки Settings for Google Translate Настройки для Google Translate Input language Язык ввода Output language Язык вывода OK OK Cancel Отмена Unknown translation provider Неизвестный провайдер перевода The translation could not be found in the HTML received. Перевод не может быть найден в полученных HTML-данных. This likely means that Вероятно это означает changed their system and this feature no longer works. изменили их систему и эта функция больше не работает. DCUpdateManager Download failed Ошибка при загрузке Update finished Обновление завершено Download content Загрузить содержимое Download content failed Ошибка при загрузке содержимого Download update.xml Загрузить update.xml Download update.xml failed Ошибка при загрузке update.xml Update available but no bz2 support for Обновление доступно, но bz2 не поддерживается для Update available for Доступно обновление для update(s) available доступны обновления DCUserCommandEditor User Command Editor Редактор пользовательских команд Name and command must not be empty. Имя и команда не должны быть пустыми. Separator Разделитель DCUsersList Permanent slot Постоянный слот Ignore Игнорировать Grant permanent slot Выдать постоянный слот Remove permanent slot Удалить постоянный слот Ignore chat messages Игнорировать сообщения чата Show chat messages Показать сообщения чата PublicHubsModel Name Имя Server Сервер Description Описание Users Пользователи Country Страна Shared Расшарено Minimum share Extra Экстра QObject Download Скачать Download To Скачать в Download As Скачать как Browse User Files Просмотреть файлы пользователя Private Chat Приватный чат Kick Выкинуть Force Move Force Move Update User Обновить пользователя Connect Подключиться Disconnect Отключиться Reload Userlist Перезагрузить список пользователей Connect To Hub Подключиться к хабу Add Добавить Add Bookmark Добавить закладку Edit Редактировать Edit Bookmark Редактировать закладку Remove Удалить Close Transfer Закрыть передачу Info Информация Try Connect Попробовать соединиться Remove from Queue Удалить из очереди Remove Transfer from Queue and Disk Удалить передачу из очереди и с диска Add Slot to User Добавить слот для пользователя Add Permanent Slot to User Добавить постоянный слот для пользователя Remove Slot from user Отнять слот у пользователя Save Queue Сохранить очередь Update Server Обновить сервер Update all Server Обновить все сервера Change Transfer-Rate Изменить скорость передачи Copy row to Clipboard Скопировать строку в буфер обмена Copy column to Clipboard Скопировать столбец в буфер обмена File Info Информация о файле Connect To All Hubs Соединиться со всеми хабами Search for clones Найти клоны Remove complete from Queue Удалить совсем из очереди Load Загрузить Save Сохранить Edit Hub Profiles Редактировать профиль хаба Set Hub Profile Настроить профиль хаба Add this extra source Добавить этот источник Edit transfer Редактировать передачу Edit file priority Редактировать приоритет файла Translate Перевести Translator Переводчик Disable group Запретить группировку Group by File Группировать по файлу Group by Size Группировать по размеру Group by Nick Группировать по нику Group by free Slots Группировать по свободным слотам Group by Hub Группировать по хабам Group by Path Группировать по пути Group by Host Группировать по хосту Copy Копировать Clear Очистить Select all Выбрать всё Close Закрыть Group Группировка Hide Скрыть Refresh Filelist Обновить список файлов Pause Queue Очередь на паузу Resume Queue Восстановить очередь Insert Smiley Вставить смайлик Add Friend Добавить друга Czech Чешский Danish Датский Dutch Фламанский Finnish Финнский France Французский German Немецкий Hungarian Венгерский Icelandic Исланский Italy Итальянский Norwegian Норвежский Polish Польский Romanian Румынский Spanish Испанский Swedish Шведский Copy Link Копировать линк Text Encoding Кодировка текста Request secure chat Ответ на шифрованный чат Close secure chat Закрыть шифрованный чат Input Ввод Output Вывод Reset Обнулить Dock Свернуть в трей Exit Выход User: Пользователь: Search by TTH Искать по TTH Copy TTH to clipboard Скопировать TTH в буфер обмена Look up TTH at Bitzi.com Смотреть TTH на Bitzi.com Repair File Восстановить файл Repair BIN sectors Восстановить BIN сектора Check client version Проверить версию клиента Get user IP Получить IP-адрес пользователя Add Permanent Добавить постоянно Search for clones by TTH Искать клоны по TTH Profile editor Редактор профиля Group by Hash Группировать по хешу Copy magnet link Копировать magnet-ссылку Undock Развернуть Bosnian Боснийский Brazilian Бразильский English Английский French Французский Greek Греческий Italian Итальянский Latvian Латвийский Russian Русский Slovak Словацкий Custom Особенный Upload Slot Слот отдачи Command produced no visible output. Команда не выводит результатов Process exited with status Процесс завершился со статусом Process was killed or crashed. Процесс был убит или рухнул Failed to start shell command. Запуск команды оболочки не удался User Commands Команды пользователя Serbian (Cyrillic) Сербский (Кирилица) Serbian (Latin) Сербский (Латиница) (choose an existing download to add to) (выберите существующую загрузку, чтобы добавить к ней) File download Скачать файл A same file is already in the queue! Такой же файл уже в очереди! Start a multi-download Начать многопоточную загрузку Cancel Отмена File is already in the queue but not mark as a multi-download! Файл уже в очереди, но не отмечен для многопоточной загрузки! File is already in the queue with a different size! Файл уже в очереди, но с другим размером! File already downloaded! Файл уже скачан! Enter byte range (m-n) Введите диапазон (m-n) Repair BIN Sectors Восстановить BIN сектора Enter sector range (m[-n]) Введите диапазон секторов (m[-n]) Invalid start position. Неправильная начальная позиция. Invalid end position. Неправильная конечная позиция. Invalid number of sectors. Неправильное кол-во секторов. Invalid range entered. Введен неправильный диапазон. File already exists! Файл уже существует! Resume Продолжить Overwrite Переписать File already exists in your finished downloads folder Файл уже существует в папке завершенных загрузок It will be overwritten when the download finishes Он будет перезаписан когда завершится загрузка Download manager returned unknown value: Менеджер загрузок вернул неисвестное значение: Not connected to required hub! Не соединен с нужным хабом! Group by total Slots Группировать по total слотам Download Folder Папка загрузок Zoom in Zoom out Group by IP SearchSpyModel Text Текст Count Кол-во Time Время UserListModel Nick Ник Comment Комментарий Tag Тег Speed Скорость Email Share Шара IP Lock/PK Lock/PK Supports Поддержка valknut-0.4.9/valknut/ts/valknut.ro.ts0000664000076400007640000125342711144234504016147 0ustar ejsejs DCBrowseFileTree Select destination Selectează destinaţia Select a filename Selectează fişierul <wrong length> <lungime eronată> Choose a filename to save under Selectează numele sub care va fi salvat DCChat Message not send ! Mesajul nu a fost trimis ! Private Chat: Discuţie Privată: Chat Cleared. Discuţie Ştearsă. Send Clipboard Trimite Clipboard Translation: Traducere: Translation failed: Traducere eşuată: Line is encrypted. Conexiunea este criptată. Line is not encrypted. Conexiunea nu este criptată. Current mode: Mod curent: active activ passive pasiv Refresh share in progress. Reîmprospătare share în progres. Refresh share allready in progress. Reîmprospătare share deja în progres. Switch timestamp Comută data de acces Send advertisment. Trimite publicitate. Wrong parameter for '/join' Parametru greşit pentru '/join' Join to: Alăturare la: Wrong parameter for '/msg' Parametru greşit pentru '/msg' Private message send. Mesajul privat a fost trimis. Private message not send ! Mesajul privat nu a fost trimis ! Away message disabled. Mesajul de nedisponibil a fost dezactivat. Away message set. Mesajul de nedisponibilitate a fost setat. Help: Ajutor: /clear - clear the chat window /clear - şterge conţinutul ferestrei de convorbire /mode - show current mode /mode - arată modul actual /refresh - refresh share /refresh - reactualizează lista de share /ts - switch time display in chat on/off /ts - comută afişarea timpului in ferestra de convorbire /dcgui - send an advertisment to the hub /dcgui - trimite un mesaj publicitar către hub Choose a filename to save under Selectează numele sub care va fi salvat /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;address&gt; - deconectare de la hub-urile actuale şi conectare la un alt hub /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;pseudonim&gt; &lt;mesaj&gt; - trimite un mesaj privat /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;mesaj&gt; - setează răspunsul automat de nedisponibilitate pentru discuţiile private, dacă mesajul e null se dezactivează opţiunea Select download folder Selectează directorul pentru download Select file for Selectează fişierul pentru Text Encoding Tipul de codare text Choose a codec Selectează un codec Photo received. Poză recpţionată. Only allowed in private chat. Permis doar în discuţie privată. Client use wrong version. Clientul foloseşte o versiune greşită. No Photo found. Nu a fost gasită nici o poză. Can't read photo. Nu pot citi poza. Photo encode error. Eroare la codarea pozei. Photo not send. Poza nu a fost trimisă. Photo send. Poza a fost trimisă. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Operator: yes no Comment: Speed: Viteză: EMail: Shared: Away: on off Version: Unknown Necunoscut Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Alăturare: Parts: Plecare: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Octeţi Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Conexiunea a expirat Error: ' Eroare: ' Validate denide Validare respinsă Sorry, client work in passive mode Îmi pare rău, clientul este in mod pasiv Redirect to Redirectare la Password - Parola - Please enter your password Introdu parola Wrong password Parola greşită You must enter a search word. Trebuie să introduci un cuvânt de căutare. Search Error Eroare la Căutare OP Force Move Mod Forţat OP Please enter host Te rog să introduci host-ul Please enter a message Te rog să introduci un mesaj Redirect disabled Redirecţionare dezactivată Private chat only in current hub ! Discuţii private doar în hub-ul curent ! Select download folder Selectează directorul de download Select file Selectează fişierul OP Kick OP Kick Please enter a reason Te rog să introduci un motiv User: Utilizator: Connected Conectat Disconnected Deconectat Chat Cleared. Discuţie Ştearsă. Use password from profile Foloseşte parola din profil Password from profile is empty Parola din profil este goală No profile found for this hub Nu a fost găsit nici un profil pentru acest hub Current mode: Mod curent: active activ passive pasiv Refresh share in progress. Reîmprospătare share în progres. Refresh share allready in progress. Reîmprospătare share progresează. Switch timestamp Timestamp Send advertisment. Trimite publicitate. Wrong parameter for '/join' Parametru greşit pentru '/join' Join to: Join la: Wrong parameter for '/msg' Parametru greşit pentru '/msg' Private message send. Mesaj privat trimis. Private message not send ! Mesajul privat nu a fost trimis ! Away message disabled. Mesaj de away dezactivat. Away message set. Mesaj de away setat. users utilizatori Hub Hub Hubname change: Schimbare nume hub: User rejoin the hub. Utilizatorul a revenit pe hub. User left the hub. Utilizatorul a părăsit hub-ul. Sorry, client works in passive mode Îmi pare rău dar programul lucrează în modul pasiv We left the hub. Am părăsit hub-ul. Joins: Alăturare: Parts: Plecare: Chat List Lista Convorbiri Line is encrypted. Conexiunea este criptată. Line is not encrypted. Conexiunea nu este criptată. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Anulează Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Coloane Any Orice DCDebug Send error Eroare de trimitere Send Trimite Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Selectează numele sub care va fi salvat Text (*.txt) DCDialogAbout About Despre OK OK Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Download fişier Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Răsfoire fişiere File Fişier Size Dimensiune Files Fişiere Shared Shared DCDialogChat Form1 Form1 Hide Ascunde Clear Şterge Send Clipboard Trimite Clipboard &Send &Trimite DCDialogChat DCDialogClient Form1 Form1 User Utilizator Nick Pseudonim Comment Comentariu Speed Viteză EMail E-mail Bytes Octeţi Chat Discuţie Hub Hub Spy Spionează On/Off Activat/Dezactivat Search Caută File Fişier Size Dimensiune Slot Slot Path Cale Results: Rezultate: Filter Filtru At Least Cel Puţin At Most Cel Mult KB KB MB MB Any Orice MP3 MP3 Compressed Compimat Document Document Executable Executabil Picture Imagine Video Video Folder Director Type Tip Results Rezultate 0 0 Share Share Host Host GB GB Max Free Slots (0=off) Sloturi Libere Max (0=dezactivat) Free Slots Sloturi Libere Chat List Lista Convorbiri DCDialogClient User(s) ... DCDialogConnectionManager Connection Conexiune DCDialogDebug Comment Comentariu &Save &Salvează Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Nici unul Send Trimite Receive Primire Both Amândouă OK OK Cancel Anulează malloc info DCDialogEditServer Form1 Form1 Settings Setări Name Nume Host Host Description Descriere Cancel Anulează Accept Accept Password Parola Autoconnect Autoconectare DCDialogEditServer &Cancel &Anulare &Profile Profile Profil Nick EMail Auto Connect Auto Conectare Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Denumire alternativă Path Cale &Cancel &Anulare DCDialogEditTransfer Edit Transfer Editare Transfer Settings SetăriSetări Nick PseudonimNick Hub name Denumire hub Hub address Adresă hub Known hubs Hub-uri cunoscute Cancel Anulează Accept Acceptă &Cancel &Anulare DCDialogFileBrowser Form1 Form1 New Column Coloană Nouă Name Nume Size Dimensiune File Type Tip Fişier Open Save Salvează Type Tip TTH Folder Director Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Informaţii despre Transfer File Fişier Size Dimensiune Done Terminat Hash Sources DCDialogForceMove OP Force Move Mod Forţat OP Please enter a host Please enter a message Te rog să introduci un mesaj OK OK Cancel Anulează DCDialogGetURL Get URL Get URL Cancel Anulează &Cancel &Anulare DCDialogHubFilter Hub Filter Filtru Hub Filter Filtru Min. User Min. Utilizatori Contains Conţine Cancel Anulează Save Salvează Name Nume Server Server Description Descriere Settings &Cancel &Anulare DCDialogHubListManager Hub List Listă Hub-uri Public Public Name Nume Server Server Description Descriere User Utilizator double click to hide the toolbar dublu click pentru a ascunde bara cu unelte edit filter editează filtrul delete filter şterge filtrul Filter Filtru update public hublist actualizează lista cu hub-uri publice add filter adaugă filtru reload public hublist reîncarcă lista cu hub-uri publice double click to show the toolbar Bookmarks Semne de Carte connect Conectează Users Utilizatori Shared Shared Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Salvează Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Adaugă Edit bookmark. Edit Editează Remove bookmark. Remove Şterge DCDialogHubProfile Edit hub Profiles Editează Profiluri Hub Profile Profil Create Crează Delete Şterge Save Salvează Settings Setări Password Parola OK OK Auto Connect Auto Conectare Cancel Anulează Hub profile editor &Cancel &Anulare Nick Description Descriere EMail Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Rezultate Nick Nick File Fişier Size Dimensiune Slot Slot Hub Hub Path Cale Log Log Search Caută Stop Stop Results: Rezultate: Connected Hubs Hub-uri Conectate Bookmark Hubs Semne de Carte Filter Filtru Type Tip At Least Cel Puţin At Most Cel Mult KB KB MB MB Any Orice MP3 MP3 Compressed Comprimat Document Document Executable Executabil Picture Imagine Video Video Folder Director Hub Search Căutare Hub Host Host Threads Fire de execuţie GB GB Free Slots Sloturi Libere Max Free Slots (0=off) Sloturi Libere Max (0=dezactivat) Exact Exact B B 0/0 0/0 0 0 Search in path+file name only Caută doar în cale + nume fişier Search History Istorie Căutări History Istorie Hubs Hub-uri Hub Options Opţiuni Hub Connected Hub Hub Conectat Refresh Reîmprospătare Public Hubs Hub-uri Publice Expert Expert User Utilizator Reset Reset Clients Clienţi Live filters Filtre active Include: Include: Exclude: Exclude: Apply Aplică Mode Mod Add Adaugă User/File Utilizator/Fişier Search for a user or a file. Caută un utilizator sau un fişier. Start Caută Start the search. Porneşte căutarea. Add a search to the searchqueue Adaugă un termen în coada de căutare Filtered Hubs Hub-uri filtrate Multi Search Căutare Multiplă Enable Tag Activează Tag-ul Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Nume Size Dimensiune Exact size Action Acţiune Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Anulează DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Opţiuni Identify Identificare Information Informaţii E-Mail: E-Mail: Nick: Nick: Description: Descriere: Speed: Viteză: 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Satelit ISDN ISDN DSL DSL Cable Cablu LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Span (email at home dot com) Transfer Transfer Share Folders Share-uri Info Info Add Adaugă Remove Şterge Download Folder Director de Download Browse Răsfoieşte Upload Options Opţiuni Upload Connection Conexiune Settings Setări Mode Mod Active Mode Mod Activ Passive Mode Mod Pasiv Passive Mode Settings Setări Mod Pasiv Active Mode Settings Setări Mod Activ TCP Listen Port: Port TCP LISTEN: 412 412 Hub Search Căutare Hub UDP Listen Port: Port UDP LISTEN: Use ip from interface (ppp0,eth0) Foloseşte IP-ul interfeţei (ppp0, eth0) Test Testează Interface IP IP-ul Interfeţei Wrong IP IP Greşit GUI GUI GUI Options Opţiuni GUI Other Altele Other Options Alte Opţiuni Hublist Listă Hub-uri Store local Salvează local Save Salvează Cancel Anulează Windows Ferestre Theme Temă Language File Fişier Limbă Reconnect Counter (0=off) Contor Reconectare (0=dezactivat) Reconnect Timeout (sec.) Timeout Reconectare Allow Force Move Permite Mod Forţat Source Url's URL-uri Sursă URL URL Max. upload slots (0=off) Sloturi Upload Max. (0=off) Application Font Font Aplicaţie Rebuild Re-creare Maximal upload connections. Conexiuni de upload maxime. Transferrate for each slot. Rată de transfer pentru fiecare slot. Transfer Request Timings Timp Cerere de Transfer Resend Timeout (sec.) Timeout la Re-trimitere (sec.) Response Timeout (sec.) Timeout la Răspuns (sec.) Hub Connections Conexiuni Hub Sound Sunet External Player Player Extern Chat Discuţii Units Unităţi Auto Auto Byte Octet GByte GOctet KByte KOctet MByte MOctet General General Disable Sound Dezactivare Sunet Play a sound when receiving a message Cântă la primirea unui mesaj Play a sound when disconnecting from a hub Cântă la deconectarea unui hub Play a sound when receiving first message Cântă la primirea primului mesaj Play a sound when sending a message Cântă la trimiterea unui mesaj Play a sound when connecting to a hub Cântă la conectarea unui hub Disable sound when away Dezactivează sunetele în modul away Files Fişiere Player Player Sound Files Fişiere de Sunet Connect Conectare Preview Previzualizare Disconnect Deconectare Send Trimite Receive Primire 1st Receive Prima Primire Log Log Timestamp Timestamp Private Chat Discuţie Privată Hub Chat Discuţie pe Hub Download Queue Listă de Download Save Queue in minutes (0=off) Salvează Lista odata la ... minute (0=off) Move Finished Files to this Folder (empty = disabled) Mută Fişierele Terminate în acest Director (nimic = dezactivat) Use wrong ip/hostname (Firewall/Portforward) Foloseşte un IP/host greşit (Firewall / Portforward) No multi hub search ! No incoming connections ! Fără căutări multi hub ! Fără primire de conexiuni ! Send warn message to remote user on active mode request Trimite un mesaj de avertisment utilizatorilor când cer mod activ Status Messages Mesaje Statistică Show Status Messages Afişează Mesaje Statistică Open Private Chat Window Deschide Fereastre pentru Discuţii Private Transfer Options Opţiuni Transfer Transfer View Vizualizare Transfer Chunk Percent Procentaj Chunk File Percent Procentaj Fişier Chunk Size Dimensiune Chunk Download Rate Rată de Download File Size Dimensiune Fişier Search Nick: Caută Nick: Remaining Time Timp Rămas Send hide private chat to public chat Trimite discuţiile private ascunse ca mesaje publice Chat options Opţiuni discuţii Message filter Filtru de mesaje Hide popups of more than ? lines (0=off) Ascunde popup-urile cu mai mult de ... linii (0=dezactivat) upload Upload download Download Add Description Tag (<DCGUI ....>) Adaugă Tag de Descriere (<DCGUI ...>) Max. rate B/s (0=off) Rată Max. B/s (0=dezactivat) Folder Director New Column Coloană Nouă Away Message: Mesaj Away: Get Ia Refuse private chat messages from offline users Refuză discuţiile private cu utilizatorii offline Your line speed. Viteza conexiunii dumneavoastră. The nick for hub searches. Pseudonimul folosit pentru căutările pe hub-uri. Your EMail. Adresa dumneavoastră de poştă electronică. Enable/Disable the Anti-spam option. Activează/Dezactivează protecţia impotriva poştei electronice nedorite. A little description. O mică descriere. Add a tag to the description that show some information from you. Adaugă un tag la descriere cu anumite informaţii despre dumneavoastră. Your nick. Pseudonimul pe care vreţi să îl utilizaţi. The tcp listen port for incoming connections. Portul TCP folosit pentru conexiunile care vin. The udp listen port for incoming search results. Portul UDP pentru rezultatele căutărilor. Get the ip from the interface. Obţine adresa IP de la interfaţă. Select a interface. Selectaţi o interfaţă. Get the ip from the host. Obţine adresa IP de la calculatorul gazdă. The time between a reconnect. Timpul scurs între încercările de reconectare. How often we reconnect to a hub. Căt de des vom încerca să ne reconectăm la un hub. Private Address Space (rfc1918) Spaţiu de adrese privat (rfc1918) Ignore private address space connections Ignoră conexiunile venite din spaţiul privat de adrese Rebuild your sharelist. Actualizează lista de share. Add a folder to your sharelist. Adaugă un director la lista de share. Remove a folder from your sharelist. Scoate un director din lista de share. Show some information about your sharelist. Afişează câteva informaţii despre lista dumneavoastră de share. Browse your own share list. Vizualizează lista de share proprie. Time to wait for a transfer response from the remote user. Timpul pentru aşteptarea unui răspuns din partea unui alt utilizator. Time to wait before a new transfer request is send to the remote user. Timpul scurs până o nouă cerere de transmisie se va face către un alt utilizator. Dynamic upload rate Rată dinamică pentru upload Test the new theme. Testează noua temă. Data Folder Director pentru date Query Interogare Query on exit Interogare la ieşire din program Messages Mesaje Enable emoticons in chat Activează iconiţe în fereastra de discuţii Hide popups of more than Ascunde ferestrele automate în număr mai mare de Send message with Trimite mesajul cu lines (0=off) linii (0=dezactivat) Show send button Buton pentru trimitere vizibil Browser Navigator Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Use tab for every chat window Foloseşte un tab pentru fiecare fereastră de discuţie Open the chat window on incoming messages. Deschide fereastra de discuţie la primirea mesajelor. Client Program Show Version Tag in User-Description Afişează versiunea în descrierea utlizatorului User-List right alignment Lista de utlizatori în partea dreaptă Logfile Fişier pentru jurnale Logfile enabled Activare fişier pentru jurnale Security Securitate Flood Protection Protecţie la flood Don't Display Messages after X retry (0=off) Nu afişa mesajele după X încercări (0=dezactivat) Kick the user for flooding (only for Operators) Dă afară un utlizator pentru flood (doar pentru Operatori) Kick Message Mesajul pentru dat afară Max. paragraphs (0=off) Paragrafe maxime (0=dezactivat) Client options Opţiunile programului Show client windows minimized Afişează ferestrele programului minimizate la pornire Max. uploads to user (0=off) Număr maxim de upload-uri pentru un utilizator (0=dezactivat) Color Culoare Transfer Cert/Key Certificat/Cheie pentru transfer User quitting hub Utilizatorul părăseşte hub-ul If user quits hub, stop following transfers Dacă utlizatorul părăseşte hub-ul, opreşte următoarele transferuri Upload Upload Both Amândouă Download Download None Nici unul Auto-Search Căutare automată Auto-Search for new sources Căutare automată după noi surse de download Download Rate Single Rată transfer Single Download Rate Multi Rată transfer Multi Remaining Time Single Timp rămas Single Remaining Time Multi Timp rămas Multi Reload every hour (0=off) Reactualizează la fiecare X ore (0=dezactivat) Max. rate KB/s (0=off) Transfer maxim KB/s (0=dezactivat) Path Cale Alias Denumire alternativă Edit Editează Edit a folder from the sharelist. Editează un director din lista de share. Open File Dialog. Dialog pentru deschidere fişier. Add a URL to the list. Adaugă un URL în listă. Remove a URL from the list. Şterge un URL din listă. 28.8Kbps 28.8Kbps Enable logging Activează scrierea în jurnal Append date to log file name Adaugă data la numele jurnalului Nick name filter Filtru pentru pseudonim Enable nick name filter Activează filtrul pentru pseudonim Disable logging for public chat Dezactivează scrierea în jurnal pentru discuţiile publice Append hub name to log file name Adaugă numele hub-ului la numele jurnalului Append hub host to log file name Adaugă gazda hub-ului la numele jurnalului &Save &Salvează &Cancel &Anulare Forward private to public chat Redirecţioneză discuţia privată pe cea publică Away Prefix: Prefixul pt. nedisponibil: Select Language. Selectează limba. Recreate every hour (0=off) Reactualizează la fiecare X ore (0=dezactivat) Check and recreate sharelist on startup Verifică şi reactualizează lista de share la fiecare pornire a programului seconds secunde Away after Nedisponibil după Auto Away Mode Mod Nedisponibil automat Ignore messages to offline users Ignoră mesajele către utilizatorii neprezenţi Ignore messages from offline users Ignoră mesajele de la utilizatorii neprezenţi Show joins and parts Afişează alăturările şi plecările Columns Coloane Comment Comentariu Speed Viteză EMail E-Mail Share Share Photo Poză Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Nume Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect Conectează Public Public reload Reîncarcă Name Nume Server Server Description Descriere User Utilizator update Împrospătare 0 0 servers Servere Bookmarks Semne de Carte Hub List Listă Hub-uri Contains: Conţine: Min. users: Min. Utilizatori: Filter Filtru Add Adaugă Edit Editează Del Şterge 0/0 0/0 double click to hide the toolbar dublu click pentru a ascunde bara cu unelte edit filter editează filtrul delete filter şterge filtrul update public hublist actualizează lista cu hub-uri publice add filter adaugă filtru reload public hublist reîncarcă lista cu hub-uri publice double click to show the toolbar dublu click pentru a afişa bara cu unelte DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Spionează Clear Şterge Spy On/Off Spionează Pornit/Oprit Statistic Active: 0 0 Reject: Results: Rezultate: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Lista Transfer Nick Nick State Stadiu Transfer Transfer File Fişier Wait Aşteaptă Size Dimensiune Log Log Slots Slot-uri Hub Hub 0/0 0/0 Files Fişiere Local File / Nick Fişier Local / Nick Size / Hub Dimensiune / Hub Remote File Fişier Server/User IP Server/IP Utilizator double click to hide the toolbar dublu click pentru a ascunde bara cu unelte double click to show the toolbar sublu click pentru a afişa bara cu unelte File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Anulează DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Nume Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Anulează DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Anulează DCDialogUsersList User Utilizator Description Descriere Friend-List Lista cu prieteni Users List Photo Poză Slot Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser file fişier Items Obiecte Files Fişiere Total Total Directories Directoare Root Directory Directorul rădăcină <wrong length> <lungime eronată> Select destination Selectează destinaţia Select a filename Selectează fişierul Filebrowser Manager de fişiere Choose a file save file dialog dialog pentru salvare fişier Choose a filename to save under Selectează numele sub care va fi salvat Folder Director Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Fişier does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Nici unul Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Download fişier File allready download Fişierul a fost deja downloadat File allready exist ! Fişierul există deja ! Resume Reia Overwrite Suprascrie Cancel Anulează Start Multi Download Porneşte Multi Download File allready in the queue and not mark as multi download ! Fişierul se află deja în listă şi nu este marcat ca multi download ! File allready in the queue with a different size ! Fişierul se află deja în listă cu o dimensiune diferită ! You can start a Multi Download ! Vrei să foloseşti Multi Download ? The same user/file is allready in the queue ! Un fişier/utilizator identic se află deja în listă ! A same file is allready in the queue ! Un fişier identic se află deja în lista ! If you want to download all files in this mode ? Vrei să download-ezi toate fişierele în acest mod ? Not connected to required hub! Nu eşti conectat la hub-ul cerut ! Connect Conectare (choose an existing download to add to) (alege un download existent pentru adăugare) DCFileTransferInfo File Transfer Info Informaţii despre Transfer DCGuiApp Options Opţiuni &Options &Opţiuni Ctrl+O Ctrl+O Open option dialog Deschide dialogul cu opţiuni Exit Ieşire Ctrl+Q Ctrl+Q Quits the application Iese din aplicaţie Exit Quits the application Ieşire Iese din aplicaţie Toolbar Bară cu unelte Tool&bar &Bară cu unelte Enables/disables the toolbar Activează/dezactivează bara cu unelte Toolbar Enables/disables the toolbar Bară cu unelte Activează/dezactivează bara cu unelte Statusbar Bară de statistică &Statusbar Bară de &statistică Enables/disables the statusbar Activează/dezactivează bara de statistică Statusbar Enables/disables the statusbar Bară de statistică Activează/dezactivează bara de statistică Cascade Cascadă &Cascade &Cascadă Cascades all windows Afişează ferestrele în cascadă Cascade Cascades all windows Cascadă Afişează ferestrele în cascadă Tile Tile &Tile &Tile Tiles all windows Afişează ferestrele în mod tile Tile Tiles all windows Tile Afişează ferestrele în mod tile Ctrl+S Ctr+S Transfer List Lista Transfer &Transfer List Lista &Transfer Ctrl+T Ctrl+T Show Transfer List Afişează Lista de Transfer Hub Search Căutare Hub &Hub Search Căutare &Hub Ctrl+H Ctrl+H Show Hub Search Afişează Căutare Hub About Despre &About... &Despre... About the application Despre aplicaţie About About the application Despre Despre aplicaţie New Version Versiune Nouă &New Version... Versiune &Nouă... Check for new version Verifică dacă există o versiune nouă New Version Check for new version Versiune nouă Verifică dacă există o versiune nouă What's &This Ce e as&ta &File &Fişier &View &Vedere &Action &Acţiuni &Window &Fereastră &Help &Ajutor Ready. Gata. (no error message from socket) (nici un mesaj de eroare de la socket) TCP listen failed, change to passive mode ! TCP LISTEN a eşuat, trec în mod pasiv ! Quit... Ieşi... Do your really want to quit? Eşti sigur că vrei să ieşi ? Open options dialog... Deschide dialogul cu opţiuni... Exiting application... Ies din aplicaţie... Toggle toolbar... Activare/dezactivare bară de unelte... Toggle statusbar... Comutare bară de statistică... About... Despre... New version... Versiune nouă... Show/hide transfer list window ... Afişează/ascunde fereastra cu lista de transfer... Show/hide hub search window ... Afişează/ascunde fereastra de căutare hub... Can't get version info from server Nu pot lua versiunea de pe server Current version is: Versiunea curentă este: Normal Normal &Normal &Normal Ctrl+N Ctrl+N Set away mode Setează mod away Away Away &Away &Away Ctrl+A Ctrl+A Hub List Listă Hub-uri Show Hub List Afişează Lista de Hub-uri Show/hide hub list window ... Afişează/ascunde fereastra cu lista de hub-uri... H&ub List Listă H&ub-uri Ctrl+U Ctrl+U Minimize Minimizare &Minimize &Minimizare Minimize all windows Minimizează toate ferestrele Minimize Minimize all windows Minimizare Minimizează toate ferestrele Action Acţiune Quick Options Opţiuni Rapide Quick options Opţiuni rapide F12 F12 Context menu for a few options Meniu contextual pentru câteva opţiuni Download mode: Ask Mod download: Întreabă Download mode: Single Mod download: Singular Download mode: Multi Mod download: Multi Spy Spion Users Utilizatori Ctrl+F CTR+F Show users: search tab and friends tab Arată utilizatorii: tab-urile căutare şi prieteni Show Spy Vizualizare Spion Do you really want to quit? Chiar vreţi să părăsiţi programul ? Exiting application... aborted Terminare program ... anulată Show/hide spy window ... Afişează/Ascunde fereastra spionului ... Show/hide users window ... Afişează/Ascunde fereastra prietenilor ... Away &Mode &Mod Nedisponibil Close chat windows Închide ferestrele de discuţii Close all chat windows Închide toate ferestrele de discuţii Close chat windows Close all chat windows Închide ferestrele de discuţii Închide toate ferestrele de discuţii Close disconnected hubs Închide hub-urile deconectate Close all disconnected hub windows Închide toate ferestrele hub-urile deconectate Close disconnected hubs Close all disconnected hub windows Închide hub-urile deconectate Închide toate ferestrele hub-urile deconectate Tile &Horizontally Aranjare &Orizontală Tiles all windows horizontally Aranjează toate ferestrele orizontal Tile Horizontally Tiles all windows horizontally Aranjare Orizontală Aranjează toate ferestrele orizontal Reload Plugins Reîncarcă plugin-urile &Reload Plugins &Reîncarcă plugin-urile Dock Dochează &Dock &Dochează Dock the application Dochează aplicaţia Dock Dock the application Dochează Dochează aplicaţia Hub &Search &Căutare pe Hub S&py S&pion Ctrl+P Ctrl+P Dock/Undock application... Dochează/Restaurează programul ... Refresh share in progress. Reîmprospătare share în progres. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Ferestre Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Public Bookmarks Semne de Carte Add Bookmark Adaugă Semn de Carte Error Eroare Edit Bookmark Editează Semn de Carte Remove bookmarks You are sure ? Remove Şterge Cancel Anulează Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Crează Profil Hub Please enter the profile name Te rog să introduci numele profilului Save profile Do you want to save your changes? Save Salvează Cancel Anulează Are you sure? Delete profile for DCHubSearch You must enter a search word. Trebuie să introduci un cuvânt de căutare. Connect to local udp port failed. ( Conectarea la portul UDP local a eşuat. ( No hubs found. Nu au fost găsit nici un hub. Hub Search Error Eroare de Căutare Hub-uri No connected hubs found. Nu a fost găsit nici un hub conectat. Select download folder Selectează directoul de download Select search Selectează căutare Please select an search Te rog să selectezi o căutare Please select a connected hub. Te rog să selectezi un hub conectat. Select file for Selectează fişier pentru (choose an existing download to add to) (alege un download existent pentru adăugare) USER UTILIZATOR FILE FIŞIER List download Doanload List Not connected to required hub! Nu eşti conectat la hub-ul cerut ! Connect Conectare Cancel Anulează save file dialog dialog pentru salvare fişier Choose a filename to save under Selectează numele sub care va fi salvat open file dialog dialog pentru deschide fişier Choose a file to open Selectaţi un fişier pentru deschidere External search is allready running ! Căutarea exterioară este deja în progres ! Please add a search ! Vă rugăm adăugaţi o căutare ! Start Caută Stop Opreşte Multi Search only work in active mode ! Căutarea multiplă funcţioneză doar în modul activ ! Filelist download Please add a search! Multi Search only work in active mode! Folder Director Unknown Necunoscut None Nici unul Directory File Fişier Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Căutare Hub Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Trebuie să introduci un 'Host Fals' valid ! You must enter a valid interface ! Trebuie să introduci o interfaţă validă ! You must enter a valid tcp listen port ! Trebuie să introduci un port TCP LISTEN valid ! You must enter a valid udp listen port ! Trebuie să introduci un port UDP LISTEN valid ! You must enter a valid nick ! Trebuie să introduci un nick valid ! Interface IP : IP-ul Interfeţei: Can't get interface IP ! Nu pot obţine IP-ul interfeţei ! Select download folder Selectează directorul de download Select share folder Selectează directorul de share Select language file Selectează fişierul de limbă HubList URL URL Listă de Hub-uri Please enter a url Te rog să introduci un URL Share list not available Lista de share nu este disponibilă Compressed list size: Dimensiunea listei comprimate: bytes octeţi Total shared: Total share: Share List Info Info despre Lista de Share You change the client mode ! Please restart DCGUI ! Ai schimbat modul de operare client ! Te rog să reporneşti DCGUI ! My Personal Select sound file Selectează un fişier de sunet Select sound player Selectează un player de sunet au au wav wav All Files Toate Fişierele Host IP : IP Host: Can't get Host IP ! Nu pot obţine IP-ul Host-ului ! Select download finished folder Selectează directorul pentru fişiere terminate You must set a Download Folder ! Trebuie să setezi un Director de Download ! Download Finished Folder and Download Folder must be different ! Directorul de Fişiere Terminate şi cel de Download trebuie să fie diferite ! You must enter a valid search nick ! Trebuie să introduci un nick de căutare valid ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Ai setat LISTEN pe un port < 1024 ! Nu vei putea rula DCGUI în mod activ decât ca root ! Other Altele Log Log Sound Sunet General General Files Fişiere GUI GUI Chat Discuţie Transfer Transfer Connection Conexiune Mode Mod Settings Setări DCGUI Dcgui Identify Identitate Folder Director Interface List Listă de Interfeţe Please select an interface Te rog să selectezi o interfaţă No interfaces found ! Nu a fost găsit nici o interfaţă ! Security Securitate User Utilizator Select a browser Selectaţi un navigator Select data folder Selectaţi directorul de date Select log file Selectaţi fişierul pentru jurnal Compressed list size (HE3/BZ): Mărimea listei compresată (HE3/BZ): Select transfer cert Selectaţi certificatul pentru transferuri Select transfer key Selctaţi cheia pentru transferuri Edit Alias Editează denumirea alternativă Please enter a new alias Vă rog introduceţi o nouă denumire alternativă Browse Share List Navigare lista de share Add new nick name filter Adaugă un nou filtru pentru pseudonim Please enter a nick Vă rog introduceţi un pseudonim Chat Timestamp Timp discuţii Chat Local Nick Pseudonim discuţii locale Chat Local Text Text discuţii locale Chat Remote Nick Pseudonim discuţii interlocutor Chat Remote Text Text discuţii interlocutor Chat Status Nick Pseudonim discuţii stare Chat Status Text Text discuţii stare Public Chat Timestamp Timp discuţii publice Public Chat Local Nick Pseudonim discuţii publice utilizator Public Chat Local Text Text discuţii publice utilizator Public Chat Remote Nick Pseudonim discuţii publice interlocutor Public Chat Remote Text Text discuţii publice interlocutor Public Chat Status Nick Pseudonim discuţii publice stare Public Chat Status Text Text discuţii publice stare Public Private Chat Nick Pseudonim discuţii publice private Public Private Chat Text Text discuţii publice private Can't save Image ! Nu pot salva imaginea ! Can't load Image ! Nu pot încărca imaginea ! Select a 64x64 Photo Selectaţi o poză de 64x64 You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Program DCServerList Add Bookmark Adaugă Semn de Carte Edit Bookmark Editează Semn de Carte Select profle Selectează profil Please select an profile Selectaţi va rog un profil Public Public Bookmarks Semne de Carte DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Aştept Idle Disponibil Run Se transferă Transfer Transfer Error Eroare Download Download Upload Upload Unknown Necunoscut Pause Pauză Hub offline Hub offline User offline Utilizator offline User busy Utilizator ocupat Send error Eroare de trimitere Change Transfer-Rate Modifică rata de transfer Please enter a Transfer-Rate [B/s] (0=off) Te rog să introduci o Rată de Transfer [B/s] (0=dezactivat) Change File-Priority Midifică prioritatea Please enter a priority Introduceţi nivelul de prioritate Handshake Străngere de mână Nothing Nimic Remove Şterge Cancel Anulează Filebrowser Manager de fişiere Try Connect Încearcă conectarea User and Hub not found in the queue ! Utilizator şi Hub negăsiţi în coada de aşteptare ! Nick: Pseudonim: Hub: Hub: Remove Transfer You are sure ? My Personal Browse Share List Navigare lista de share Share list not available Lista de share nu este disponibilă None Nici unul File Fişier %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Translator Choose a language Selectaţi o limbă Chinese Simplified to English Chinese Traditional Dutch Scoţiană French German Germană Greek Italian Japanese Korean Portuguese Russian Spanish Spaniolă Detect language Arabic Bulgarian Chinese Croatian Czech Cehă Danish Daneză Finnish Finlandeză Hindi Norwegian Norvegiană Polish Poloneză Romanian Română Swedish Suedeză OK OK Cancel Anulează Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Nume Server Server Description Descriere Users Utilizatori Country Shared Shared Minimum share Extra QObject Download Download Download To Download În Download As Download Ca Browse User Files Răsfoieşte Fişierele Utilizatorului Private Chat Discuţie Privată Kick Kick Force Move Mutare Forţată Update User Update Utilizator Connect Conectare Disconnect Deconectare Reload Userlist Reîncarcă Lista de Utilizatori Connect To Hub Conectare La Hub Add Adaugă Add Bookmark Adaugă Semn de Carte Edit Editează Edit Bookmark Editează Semn de Carte Remove Şterge Close Transfer Opreşte Transfer Info Info Try Connect Încearcă să te conectezi Remove from Queue Şterge din Listă Remove Transfer from Queue and Disk Şterge Transferul din Listă şi de pe Disc Add Slot to User Adaugă Slot Utilizatorului Add Permanent Slot to User Adaugă Slot Permanent Utilizatorului Remove Slot from user Şterge Sloturile Utilizatorului Save Queue Salvează Lista Update Server Update Server Update all Server Update toate Serverele Change Transfer-Rate Schimbă Rata de Transfer Copy row to Clipboard Copiază rândul în Clipboard Copy column to Clipboard Copiază coloana în Clipboard File Info Info Fişier Connect To All Hubs Conectare la Toate Hub-urile Search for clones Caută Clone Remove complete from Queue Şterge Fişierele Complete din Listă Load Încarcă Save Salvează Edit Hub Profiles Editează Profiluri Hub Set Hub Profile Setează Profiluri Hub Add this extra source Adaugă sursă alternativă Edit transfer Modifică transfer Edit file priority Modifică prioritatea Translate Traducere Translator Translator Disable group Dezactivează gruparea Group by File Grupare după Fişier Group by Size Grupare după Dimensiune Group by Nick Grupare după Pseudonim Group by free Slots Grupare după Sloturi libere Group by Hub Grupare după Hub Group by Path Grupare după Cale Group by Host Grupare după Gazdă Copy Copiază Clear Şterge Select all Selectează tot Close Inchide Group Grupare Hide Ascunde Refresh Filelist Reactualizează lista de fişiere Pause Queue Pauză la coada de aşteptare Resume Queue Continuare la coada de aşteptare Insert Smiley Inserează faţă zâmbitoare Add Friend Adaugă la Prieteni Czech Cehă Danish Daneză Dutch Scoţiană Finnish Finlandeză France Franceză German Germană Hungarian Maghiară Icelandic Icelandică Italy Italiană Norwegian Norvegiană Polish Poloneză Romanian Română Spanish Spaniolă Swedish Suedeză Copy Link Copiază Legătura Text Encoding Variantă codare text Request secure chat Cerere discuţie securizată Close secure chat Terminare discuţie securizată Input Introducere Output Afişare Check client version Add Permanent Profile editor Group by Hash Reset Reset Dock Dochează Undock Exit Ieşire Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Utilizator: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (alege un download existent pentru adăugare) File download Download fişier A same file is already in the queue! Start a multi-download Cancel Anulează File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Reia Overwrite Suprascrie File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Nu eşti conectat la hub-ul cerut ! Group by total Slots Download Folder Director de Download Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Comment Comentariu Tag Speed Viteză Email Share Share IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.de.ts0000664000076400007640000127551611144234504016122 0ustar ejsejs DCBrowseFileTree Download Download Download Dir Download Verzeichniß Select destination Ziel auswählen Select a filename Datei auswählen <wrong length> <falsche Länge> Choose a filename to save under Wähle einen Dateinamen zum speichern DCChat Private Chat: Private Unterhaltung: Message not send ! Nachricht konnte nicht gesendet werden ! Private Chat: Private Unterhaltung: Chat Cleared. Unterhaltung gelöscht. Send Clipboard Sende Zwischenablage Translation: Übersetzung: Translation failed: Übersetzung fehlgeschlagen: Current mode: Aktueller Modus: active aktiv passive passiv Refresh share in progress. Erstellen der Share-Liste läuft. Refresh share allready in progress. Erstellen der Share-Liste läuft bereits. Switch timestamp Wechselt Zeitstempel Send advertisment. Sende Beschreibung. Wrong parameter for '/join' Falscher Parameter für '/foin' Join to: Verbinde mit: Wrong parameter for '/msg' Falscher Parameter für '/msg' Private message send. Private Nachricht gesendet. Private message not send ! Private Nachricht wurde nicht gesendet ! Away message disabled. Abwesenheitsnachricht ausgeschaltet. Away message set. Abwesenheitsnachricht wurde gesetzt. Line is encrypted. Die Verbindung ist verschlüsselt. Line is not encrypted. Die Verbindung ist nicht verschlüsselt. Help: Hilfe: /clear - clear the chat window /clear - lösche Chat Window /mode - show current mode /mode - zeige aktuellen Modus /refresh - refresh share /refresh - aktualisiere Share-Liste /ts - switch time display in chat on/off /ts - schalte Zeitstempel ein/aus /dcgui - send an advertisment to the hub /dcgui - sendet eine Info an den Hub /msg <nick> <message> - send private message /msg <Name> <Nachricht> - sendet eine private Nachricht Choose a filename to save under Wähle einen Dateinamen zum speichern /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /msg &lt;nick&gt; &lt;message&gt; - send private message Select download folder Download Ordner auswählen Select file for Datei auswählen für Photo received. Foto empfangen. Only allowed in private chat. Nur in privater Unterhaltung erlaubt. Client use wrong version. Client benutzt eine falsche Version. No Photo found. Es wurde kein Foto gefunden. Can't read photo. Foto konnte nicht gelesen werden. Photo encode error. Foto konnte nicht geladen werden. Photo not send. Das Foto wurde nicht gesendet. Photo send. Das Foto wurde gesendet. Refresh share already in progress. Chat: Message not sent! Nachricht wurde nicht gesendet ! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat Get info failed. Info: Info: Nick: Name: Operator: yes ja no nein Comment: Speed: Geschwindigkeit: EMail: Shared: Away: on an off aus Version: Version: Unknown unbekannt Tag: day Tag days Tage hour Stunde hours Stunden minute Minute minutes Minuten Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. /raw - send raw message The user is using an old version or not using Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Betreten: Parts: Verlassen: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Zeitüberschreitung bei Verbindungsaufbau Error: ' Fehler: ' Validate denide Validierung fehlgeschlagen Redirect to Weitergeleitet zu Password - Kennwort - Please enter your password Geben Sie ihr Kennwort ein Wrong password Das Kennwort ist falsch You must enter a search word. Bitte geben Sie ein Suchwort ein. Private Chat Private Unterhaltung Browse User Files User Dateien entdecken Download File Datei downloaden Disconnect Verbindung trennen Connect Verbinden Search Error Such Fehler Kick Kicken Force Move Weiterleitung OP Force Move Operator Weiterleitung Please enter host Bitte geben Sie einen Host an Please enter a message Bitte geben Sie eine Nachricht ein Redirect disabled Weiterleitung nicht erlaubt Private chat only in current hub ! Private Unterhaltung nur in diesem Hub erlaubt ! Select download folder Download Ordner auswählen Select file Datei auswählen OP Kick OP Kick Please enter a reason Bitte den Grund eingeben User: User: Flood detection: Flood Erkennung: Flood detection. Flood Erkennung. Connected Verbunden Disconnected Verbindung trennen Chat Cleared. Unterhaltung gelöscht. Use password from profile Benutze das Password aus dem Profile Password from profile is empty Das Passwort im Profile ist leer No profile found for this hub Kein Profile für diesen Hub vorhanden Current mode: Aktueller Mode: active aktiv passive passiv Refresh share in progress. Erstellen der Share-Liste läuft. Refresh share allready in progress. Erstellen der Share-Liste läuft bereits. Switch timestamp Wechsel Zeitstempel Send advertisment. Sende Beschreibung. Wrong parameter for '/join' Falscher Parameter für '/foin' Join to: Verbinde mit: Wrong parameter for '/msg' Falscher Parameter für '/msg' Private message send. Private Nachricht gesendet. Private message not send ! Private Nachricht wurde nicht gesendet ! Away message disabled. Abwesenheitsnachricht ausgeschaltet. Away message set. Abwesenheitsnachricht wurde gesetzt. users users Hubname change: Hubname hat sich geändert: User rejoin the hub. Benutzer wieder im Hub. User left the hub. Benutzer nicht mehr im Hub. Hub Hub We left the hub. Wir haben den hub verlassen. Joins: Betreten: Parts: Verlassen: Chat List Unterhaltungs-Liste Line is encrypted. Die Verbindung ist verschlüsselt. Line is not encrypted. Die Verbindung ist nicht verschlüsselt. Your Nick is already in use. Dein Name ist in Benutzung. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Abbrechen Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Any Alle DCDebug Send error Sendefehler Could not send the data. Error '%1'. Daten konnten nicht gesendet werden. Fehler '%1'. Send Senden Thanks for your help. Vielen Danke für Ihre Hilfe. Save error Fehler speichern Can't open file '%1' for writing. Datei '%1' konnte nicht geöffnet werden. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Wähle einen Dateinamen zum speichern Text (*.txt) DCDialogAbout About Info OK OK Authors License Sponsor Sponsor Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Datei download Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Dateientdecker File Datei Size Größe Files Dateien Shared Freigabe DCDialogChat Form1 Form1 Hide Ausblenden Clear Löschen Send Clipboard Sende Zwischenablage &Send &Senden DCDialogChat DCDialogClient Form1 Form1 User Benutzer Nick Name Comment Kommentar Speed Geschwindigkeit EMail E-Mail Bytes Bytes Chat Chat Hub Hub Spy Spion On/Off Ein/Aus Search Suche File Datei Size Größe Slot Slot Path Pfad Results: Ergebnisse: Filter Filter Any Alle MP3 MP3 Compressed Archive Document Dokument Executable Programm Picture Bild Video Video Folder Ordner Type Typ Results Ergebnisse 0 0 Share Freigabe Host Host Max Free Slots (0=off) Max. freie Slots (0=aus) Free Slots Freie Slots Send Senden Chat List Unterhaltungs-Liste ... ... User(s) Benutzer DCDialogClient IP IP DCDialogConnectionManager Connection Verbindung DCDialogDebug Send Senden Exit Feierabend Save Speichern DCGUI Crash Handler DCGUI-QT Crash Send bugreport. Sende Fehlerreport. Exit. Feierabend. Save to file. Als Datei speichern. Comment Kommentar &Save &Speichern S&end S&enden E&xit F&eierabend Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Kein Send Senden Receive Empfangen Both Beide OK OK Cancel Abbrechen malloc info DCDialogEditServer Form1 Form1 Settings Einstellungen Name Name Host Host Description Beschreibung Cancel Abbrechen Accept Speichern Password Passwort Autoconnect Autoverbindung DCDialogEditServer Profile Profile Auto Connect Auto Verbindung Nick Name Secure Socket Layer &Profile Tag EMail E-Mail Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Path Pfad DCDialogEditTransfer Edit Transfer Übertragung bearbeiten Settings Einstellungen Nick Name Hub name Hubname Hub address Hubadresse Cancel Abbrechen Accept Speichern Known hubs Bekannte Hubs DCDialogFileBrowser Form1 Form1 New Column Neu Column Name Name Size Größe File Type Datei-Typ Open Öffnen Save Speichern Type Typ TTH Folder Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Datei Übertragungs-Information File Datei Size Größe Done Fertig Hash Sources DCDialogForceMove OP Force Move Operator Weiterleitung Please enter a host Please enter a message Bitte geben Sie eine Nachricht ein OK OK Cancel Abbrechen DCDialogGetURL Get URL URL holen Cancel Abbrechen DCDialogHubFilter Hub Filter Hub Filter Filter Filter Min. User Min. User Contains Entspricht Cancel Abbrechen Save Speichern Name Name Server Server Description Beschreibung Settings Einstellungen DCDialogHubListManager Hub List Hub Liste Public Öffentlich Name Name Server Server Description Beschreibung User Benutzer double click to hide the toolbar Doppelklick verbirgt den Toolbar edit filter Filter editieren delete filter Filter löschen Filter Filter update public hublist Public Hublist erneuern add filter Filter hinzufügen reload public hublist Public Hublist neu laden double click to show the toolbar Doppelklick zeigt den Toolbar Bookmarks Lesezeichen connect Verbinden Users Benutzer Shared Freigabe Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Speichern Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Hinzufügen Edit bookmark. Edit Bearbeiten Remove bookmark. Remove Entfernen DCDialogHubProfile Edit hub Profiles Hub Profile bearbeiten Profile Profile Create Erstellen Delete Löschen Save Speichern Settings Einstellungen Password Passwort OK OK Auto Connect Auto Verbindung Cancel Abbrechen Hub profile editor Nick Name Tag EMail E-Mail Description Beschreibung Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Ergebnisse Nick Name File Datei Size Größe Slot Slot Hub Hub Path Pfad Log Log Search Suche Stop Stop Results: Ergebnisse: Search Options Suchoptionen Connected Hubs Verbundene Hub's Available Hubs Vorhandene Hub's Bookmark Hubs Lesezeichen Hub's Filter Filter Type Typ Any Alle MP3 MP3 Compressed Archive Document Dokument Executable Programm Picture Bild Video Video Folder Verzeichniß Hub Search Hub Suche Host Host GB GB Free Slots Freie Slots Max Free Slots (0=off) Max. freie Slots (0=aus) Exact Genau B B 0/0 0/0 0 0 Search in path+file name only Suche in Pfad+Datei-Namen ... ... Search History Such Historie History Historie Hubs Hubs Hub Options Hub Optionen Connected Hub Verbundener Hub Refresh Auffrischen Public Hubs Öffentlich Hubs Expert Experte User Benutzer Search User Suche Benutzer Reset Reset Clients Live filters Include: Einbeziehen: Exclude: Ausschließen: Apply Mode Modus Add Hinzufügen User/File Benutzer/Datei Search for a user or a file. Suche nach einem Benutzer oder einer Datei. Start Start Start the search. Starte die Suche. Add a search to the searchqueue Eine Suche zur Queue hinzufügen Filtered Hubs Gefilterte Hubs Multi Search Multi Suche Enable Tag Tag einschalten Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP IP DCDialogMagnet Magnet Link Details Link TTH Name Name Size Größe Exact size Action Aktion Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Abbrechen DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Einstellungen Identify Identifizierung Information Information E-Mail: E-Mail: Nick: Name: Description: Beschreibung: Speed: Geschwindigkeit: Anti-Spam (email at home dot com) Transfer Übertragung Filetransfer Datei-Übertragung Share Folders Freigegebene Ordner Rebuild List Liste neu erstellen Info Information Add Hinzufügen Remove Entfernen Download Folder Download Ordner Browse Durchsuchen Upload Options Upload Optionen Max. simultaneous uploads: Max. uploads Limit transferrate (0=off) Limitiere Transferrate Byte/sec. Byte/sek. Connection Verbindung Settings Einstellungen Mode Modus Active Mode Aktiver Modus Passive Mode Passiver Modus Passive Mode Settings Passive Modus Einstellungen No multi hub search ! No incoming connections ! Keine multi-hub Suche ! Keine ankommenden Verbindungen ! Active Mode Settings Activer Modus Einstellungen TCP Listen Port: TCP Listen Port: 412 412 Hub Search Hub Suche UDP Listen Port: UDP Listen Port: Use ip from interface (ppp0,eth0) Benutze IP von einem Interface Test Test Use wrong ip (Firewall/Portforward) Benutze falsche IP (Firewall/Portforward) Interface IP Interface IP Wrong IP Falsche IP GUI GUI GUI Options GUI Optionen open private chat window öffne das private chat Fenster Other Andere Other Options Andere Einstellungen Hublist Hub Liste Store local Speicher die Liste lokal Save Speichern Cancel Abbrechen Windows Fenster Theme Design Language File Sprachdatei Connections Verbindungen Reconnect Counter (0=off) Wiederverbundungszähler (0=aus) Reconnect Timeout (sec.) Wiederverbundungszeitüberschreitung (sek.) Allow Force Move Erlaube Weiterleitung Source Url's Quell-Url's URL URL Max. upload slots (0=off) Max. upload slots (0=aus) change size values automatically to kb/mb/gb �nderung der Grössenangaben austomatisch zu kb/mb/gb Application Font Anwendungs Schriftart Rebuild Neu erstellen Maximal upload connections. Maximale Upload Verbindungen. Transferrate for each slot. Übertragungsrate für jeden Slot. Transfer Request Timings Übertragungsanforderungs-Zeitüberschreitung Resend Timeout (sec.) Sendwiederholungs Zeitüberschreitung Response Timeout (sec.) Antworts Zeitüberschreitung Hub Connections Hub Verbindungen Sound Musik External Player Externer Player Enable Sound Musik einschalten Chat Chat Units Einheiten Auto Byte General Allgemein Disable Sound Musik abschalten Play a sound when receiving a message Spiele Musik bei einer empfangenen Nachricht Play a sound when disconnecting from a hub Spiele Musik wenn die Hub-Verbundung getrennt wurde Play a sound when receiving first message Spiele Musik bei der ersten empfangenen Nachricht Play a sound when sending a message Spiele Musik wenn eine Nachricht gesendet wurde Play a sound when connecting to a hub Spiele Musik wenn die Hub-Verbundung aufgebaut wurde Disable sound when away Musik im Away-Modus abschalten Files Dateien Player Player Sound Files Musik Dateien Connect Verbinden Preview Anhören Disconnect Verbindung trennen Send Senden Receive Empfangen 1st Receive 1. empfangen Log Log Timestamp Zeitstempel Private Chat Private Unterhaltung Hub Chat Hub Unterhaltung Download Queue Download Queue Save Queue in minutes (0=off) Speicher Queue in Minuten (0=aus) Move Finished Files to this Folder (empty = disabled) Verschiebe fertige Dateien in den Ordner (leer = ausgeschaltet) Use wrong ip/hostname (Firewall/Portforward) Benutze falsche IP/Hostname (Firewall/Portforward) No multi hub search ! No incoming connections ! Keine multi-hub Suche ! Keine ankommenden Verbindungen ! Send warn message to remote user on active mode request Sende Warn-Nachricht wenn ein Active-Mode Transfer-Anforderung empfangen wird Status Messages Status Nachricht Show Status Messages Zeige Status Nachrichten Open Private Chat Window Öffne die privaten Unterhaltungs Fenster Transfer Options Übertragungs Optionen Transfer View Übertragungs Ansicht Chunk Percent Chunk Prozent File Percent Datei Prozent Chunk Size Chunk Größe Elapsed Time Restliche Zeit Download Rate Download Geschwindigkeit File Size Dateigröße Search Nick: Suchname: Remaining Time Restliche Zeit Send hide private chat to public chat Zeige minimierten privaten Chat im Hub Chat Chat options Chat Optionen Message filter Nachrichten Filter Hide popups of more than ? lines (0=off) Chat Fenster unsichtbar wenn ? Zeilen gesendet werden (0=aus) upload upload download download Add Description Tag (<DCGUI ....>) DCGUI Tag hinzufügen Max. rate B/s (0=off) Max. rate B/s (0=aus) Folder Ordner Away Message: Away Nachricht: Get Holen Refuse private chat messages from offline users Ignoriere Nachrichten von Benutzern die nicht online sind Your line speed. Ihre Verbindungsgeschwindigkeit. Your nick. Ihr Name. The nick for hub searches. Ihr Name für die Suche. Your EMail. Ihre EMail. Enable/Disable the Anti-spam option. Ein-/Ausschalten der Anti-Spam Option. A little description. Eine kleine Beschreibung. Add a tag to the description that show some information from you. Das Tag zu der Beschreibung hinzufügen. The tcp listen port for incoming connections. Der TCP-Port für ankommende Verbindungen. The udp listen port for incoming search results. Der UDP-Port für ankommende Suchergebnisse. Get the ip from the interface. Hole die Interface-IP. Select a interface. Interface wählen. Get the ip from the host. Hole die IP vom Host. The time between a reconnect. Die Zeit zwischen zwei Neuverbindungen. How often we reconnect to a hub. Anzahl der Neuverbindungsversuche. Rebuild your sharelist. Share-Liste neu erstellen. Add a folder to your sharelist. Einen Ordner zu der Share-Liste hinzufügen. Remove a folder from your sharelist. Einen Ordner von der Share-Liste entfernen. Show some information about your sharelist. Zeige Informationen zu der Share-Liste. Browse your own share list. Die Share-Liste anzeigen. Time to wait for a transfer response from the remote user. Zeit die gewartet werden soll bis der entfernte Benutzer antwortet. Time to wait before a new transfer request is send to the remote user. Zeit die gewartet werden soll bis eine neue Anforderung gesendet wird. Test the new theme. Teste das neue Design. Open the chat window on incoming messages. Öffne das Chatfenster bei einer Empfangenen Nachricht. Emoticons Emoticons Enable emoticons in chat Emoticons im Chat einschalten Data Folder Daten Ordner Send Chat with Text im Chat senden mit Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S User Benutzer User Options Benutzer Optionen Show Version Tag in User-Description Zeige Version in der Benutzer-Beschreibung Messages Nachrichten Query on exit Abfrage beim beenden Logfile Logdatei Logfile enabled Logdatei einschalten Security Sicherheit Flood Protection Kick Message Kick Nachricht Private Address Space (rfc1918) Ignore private address space connections Query Abfrage Client User-List right alignment Kick the user for flooding (only for Operators) Show send button Zeige Sendeknopf Dynamic upload rate Dynamische upload rate Hide popups of more than Verberge Fenster mit mehr als Send message with Sende Nachricht mit lines (0=off) Zeilen (0=aus) Browser Entdecker Use tab for every chat window Benutze Tab für alle Unterhaltungs-Fenster Allow send private messages to offline users Erlaube das senden von Nachrichten an Offline-Benutzer Max. paragraphs (0=off) Max. Paragraphen (0=aus) Client options Client Einstellungen Show client windows minimized Zeige Client-Fenster minimiert Recreate sharelist on startup if total filesize has changed Erstelle die Share-Liste beim Start wenn sich die Share-Größe geändert hat Max. uploads to user (0=off) Max. Uploads pro Benutzer (0=aus) Color Farbe Remote text Entfernter Text Remote nick Entfernter Benutzer Transfer Cert/Key Übertragung Cert/Key User quitting hub Benutzer verläßt den hub If user quits hub, stop following transfers Wenn der Benutzer den Hub verläßt die Übertragung stoppen Upload Upload Both Beide Download Download None Kein Auto-Search Auto-Suche Auto-Search for new sources Auto-Suche von neuen Sourcen Download Rate Single Download Rate Multi Remaining Time Single Remaining Time Multi Path Pfad Alias Edit Bearbeiten Edit a folder from the sharelist. Open File Dialog. Add a URL to the list. Remove a URL from the list. Enable logging Append date to log file name Nick name filter Disable logging for public chat Append hub name to log file name Append hub host to log file name &Save &Speichern Forward private to public chat Away Prefix: Select Language. Check and recreate sharelist on startup seconds Away after Auto Away Mode Show joins and parts Comment Kommentar Speed Geschwindigkeit EMail E-Mail Share Freigabe Photo Foto Query on File Delete IP, Hostname or Interface IP or Hostname Network Interface Listen on IP IP IP Get Internet IP Get Interface Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Name Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList Server List Server Liste connect Verbinden Public Öffentlich reload neu laden Name Name Description Beschreibung User Benutzer update updaten servers Server Bookmarks Lesezeichen Hub List Hub Liste Contains: Entspricht: Min. users: Min. user: Filter Filter Add Hinzufügen Edit Bearbeiten Del Löschen 0/0 0/0 double click to hide the toolbar Doppelklick verbirgt den Toolbar edit filter Filter editieren delete filter Filter löschen ... ... update public hublist Public Hublist erneuern add filter Filter hinzufügen reload public hublist Public Hublist neu laden double click to show the toolbar Doppelklick zeigt den Toolbar Server Server DCDialogSplash Form1 Form1 Dcgui Dcgui Valknut DCDialogSpy Spy Spion Spy On/Off Spion An/Aus Clear Löschen Statistic Active: 0 0 Reject: Results: Ergebnisse: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Übertragungsliste Nick Name Server Server State Status Transfer Übertragung File Datei Wait Warten Size Größe Log Log Slots Hub Hub 0/0 0/0 Files Dateien Local File / Nick Lokale Dateien / Name Size / Hub Größe / Hub Remote File Entfernte Datei Extended Erweitert Server/User IP Server/User IP double click to hide the toolbar Doppelklick verbirgt den Toolbar double click to show the toolbar Doppelklick zeigt den Toolbar Local File File Name Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Abbrechen DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Name Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Abbrechen DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Abbrechen DCDialogUsersList Users List Userliste Friends Freunde User Benutzer Server name Servername Description Beschreibung Friend-List Freunde Photo Foto Slot Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Items Files Dateien Total Zusammen Directories Ordner Root Directory Hauptordner <wrong length> <falsche Länge> file Datei Select destination Ziel auswählen Select a filename Datei auswählen Choose a file Datei auswählen Choose a filename to save under Wähle einen Dateinamen zum speichern Filebrowser Dateientdecker Folder Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Datei does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Kein Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Datei download File allready download Datei wurde schon geladen File allready exist ! Datei existiert ! Resume Weitermachen Overwrite Überschreiben Cancel Abbrechen File allready in the queue ! Datei befindet sich schon in der Queue ! File allready in the queue ! Datei befindet sich schon in der Queue ! Start Multi Download Start Multi-Dateiübertragung File allready in the queue and not mark as multi download ! Datei befindet sich schon in der Warteschlange und ist nicht für eine Multi-Dateiübertragung bestimmt ! File allready in the queue with a different size ! Datei befindet sich schon in der Warteschlange, aber die Größe ist unterschiedlich ! You can start a Multi Download ! Eine Multi-Dateiübertragung kann gestartet werden ! Start Normal Download Starte einen normale Dateiübertragung The same user/file is allready in the queue ! User/Datei ist schon in der Warteschlange vorhanden ! A same file is allready in the queue ! Die Datei ist schon in der Warteschlange vorhanden ! If you want to download all files in this mode ? Wollen Sie alle Dateien in diesem Mode übertragen ? Not connected to required hub! Nich verbunden zum Hub ! Connect Verbinden The same user/file is already in the queue ! Der Eintrag Benutzer/Datei befindet sich schon in der Warteschlange ! File already in the queue and not marked as multi download ! Die Datei befindet sich schon in der Warteschlange, ist aber kein Multidownload ! File already in the queue with a different size ! Die Datei befindet sich schon in der Warteschlange, hat aber eine andere Größe ! (choose an existing download to add to) (wähle einen vorhandenen Transfer zum hinzufügen) DCFileTransferInfo File Transfer Info Datei Übertragungs-Information DCGuiApp Options Einstellungen &Options &Einstellungen Ctrl+O Ctrl+O Open option dialog Einstellungsdialog öffnen Exit Feierabend E&xit F&eierabend Ctrl+Q Ctrl+Q Quits the application Anwendungsende einleiten Exit Quits the application Feierabend Anwendungsende einleiten Toolbar Tool&bar Tool&bar Enables/disables the toolbar Ein-/Ausschalten der Toolbar Toolbar Enables/disables the toolbar Toolbar Ein-/Ausschalten der Toolbar Statusbar Statuszeile &Statusbar &Statuszeile Enables/disables the statusbar Ein-/Ausschalten der Statuszeile Statusbar Enables/disables the statusbar Statuszeile Ein-/Ausschalten der Statuszeile Cascade Übereinander &Cascade &Übereinander Cascades all windows Fenster übereinander anordnen Cascade Cascades all windows Übereinander Fenster übereinander anordnen Tile Anordnen &Tile &Anordnen Tiles all windows Alle Fenster anordnen Tile Tiles all windows Anordnen Alle Fenster anordnen Server List Server Liste &Server List &Server Liste Ctrl+S Ctrl+S Show Server List Server Liste anzeigen Transfer List Übertragungsliste &Transfer List Über&tragungsliste Ctrl+T Ctrl+T Show Transfer List Zeige Übertragungsliste Hub Search Hub Suche &Hub Search &Hub Suche Ctrl+H Ctrl+H Show Hub Search Zeige Hub Suche About Info &About... &Info... About the application Über die Anwendung About About the application Über Über die Anwendung New Version Neue Version &New Version... &Neue Version... Check for new version Nach neuer Version prüfen New Version Check for new version Neue Version Nach neuer Version prüfen What's &This Wa&t issen dat &File &Datei &View &Ansicht &Action A&ktionen &Window &Fenster &Help &Hilfe Ready. Fertig. TCP listen failed, change to passive mode ! TCP Listen ist fehlgeschlagen, du solltest zum passiven Modus wechseln ! Quit... Schluss machen ... Do your really want to quit? Möchtest Du wirklich Schluss machen ? Open options dialog... Einstellungsdialog öfnnen... Exiting application... Beenden der Anwendung... Toggle toolbar... Umschalten der Toolbar... Toggle statusbar... Umschalten der Statuszeile... About... Über... New version... Neue Version... Show/hide transfer list window ... Zeige/Verberge Fenster Transferliste ... Show/hide server list window ... Anzeigen/Verbergen Fenster Server liste... Show/hide hub search window ... Zeige/Verberge Fenster Hub-Suche... file operations Dateioperationen Can't get version info from server Ich kann die Versionsinformation nicht empfangen vom Server Current version is: Aktuelle Version ist: &Normal &Normal Ctrl+N Ctrl+N Set away mode Setze den Abwesenheitsmodus Away Abwesend &Away &Abwesend Ctrl+A Ctrl+A Hub List Hub Liste &Hub List &Hub Liste Show Hub List Zeige Hub Liste Show/hide hub list window ... Zeige/Verberge Fenster Hub Liste ... H&ub List H&ub Liste Ctrl+U Ctrl+U Ctrl+X Ctrl+X Minimize Minimieren &Minimize &Minimieren Minimize all windows Minimiere alle Fenster Minimize Minimize all windows Minimieren Minimiere alle Fenster Action Aktion Quick Options Quick Optionen Quick options Quick Optionen F12 Context menu for a few options Menü für einige Optionen Download mode: Ask Download Modus: Fragen Download mode: Single Download Modus: Einzeln Download mode: Multi Download Modus: Multi Spy Spion &Spy &Spion Show Spy Zeige Spion Show/hide spy window ... Zeige/Verberge Fenster Spion ... Users Benutzer Ctrl+F Ctrl+F Show users: search tab and friends tab Zeige Benutzer: Such- und Freundefenster Do you really want to quit? Sind Sie sicher das sie das Programm beenden wollen ? Exiting application... aborted Beenden der Anwendung... abgebrochen Show/hide users window ... Zeige/Verberge Fenster Benutzer ... Away &Mode Abwesenheits &Modus Close chat windows Schließe Unterhaltungsfenster Close all chat windows Schliesse alle Unterhaltungsfenster Close chat windows Close all chat windows Schließe Unterhaltungsfenster Schließe alle Unterhaltungsfenster Tile &Horizontally Reload Plugins &Reload Plugins &Dock Dock the application Hub &Search S&py Ctrl+P Dock/Undock application... Refresh share in progress. Erstellen der Share-Liste läuft. Refresh share allready in progress. Erstellen der Share-Liste läuft bereits. Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. Info der Anwendung. About About the application. Info Info der Anwendung. &Support... Refresh share finished. Refresh share already in progress. RX/TX Traffic. Available disc space. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Filelist browser Open filelist browser Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Fenster Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Öffentlich Bookmarks Lesezeichen Add Bookmark Lesezeichen hinzufügen Error Fehler Edit Bookmark Lesezeichen bearbeiten Remove bookmarks You are sure ? Sind Sie sicher ? Remove Entfernen Cancel Abbrechen Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Hub Profile erstellen Please enter the profile name Bitte geben Sie einen Profile Namen an Save profile Profile speichern Do you want to save your changes? Wollen Sie ihre Änderungen speichern ? Save Speichern Cancel Abbrechen Are you sure? Delete profile for DCHubSearch Serverlist done Server Liste fertig Search on: [ Suche in : [ Hubsearch is only available in active mode. Die Hub-Suche ist nur im aktiven Modus verfügbar. You must enter a search word. Bitte geben Sie ein Suchwort ein. Connect to local udp port failed. ( Verbindung zum lokalen UDP-Port fehlgeschlagen. ( No hubs found. Keine Hubs gefunden. Hub Search Error Fehler bei der Hub-Suche No connected hubs found. Keine verbundenen Hubs gefunden. Download File Datei downloaden SocketError on Socket-Fehler bei Hub is full on Hub ist ausgelastet Force move on Weiterleitung Select download folder Download Ordner auswählen Select file Datei auswählen Validate denide Validierung fehlgeschlagen Select search Suche auswählen Please select an search Bitte wählen Sie eine Suche Please select a connected hub. Bitte wählen sie einen Verbunden Hub aus. Select file for Datei auswählen für (choose an existing download to add to) (wähle einen vorhandenen Transfer zum hinzufügen) No search found. Keine Suche gefunden. Please enter a searchstring. Bitte einen Suchstring eingeben. USER FILE Not connected to required hub! Nich verbunden zum Hub ! Connect Verbinden Cancel Abbrechen Choose a filename to save under Wähle einen Dateinamen zum speichern Choose a file to open Start Start Stop Stop Filelist download Please add a search! Multi Search only work in active mode! Folder Unknown unbekannt None Kein Directory File Datei Search ended with %1 results %1 results were filtered on an Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Hub Suche Another search is running. Stop other search? Folder download Add search Invalid TTH DCMenuHandler Download To Download zu Download As Download als Browse User Files User Dateien entdecken Private Chat Private Unterhaltung Kick Kicken Force Move Weiterleitung Update User Update Benutzer Connect Verbinden Disconnect Verbindung trennen Reload Userlist Benutzerliste erneut laden Connect To Hub Verbinden zu Hub Add Hinzufügen Add Bookmark Lesezeichen hinzufügen Edit Bearbeiten Edit Bookmark Lesezeichen bearbeiten Remove Entfernen Close Transfer Übertragung beenden Info Information Try Connect Versuche zu verbinden Remove from Queue Aus Warteschlange löschen Remove Transfer from Queue and Disk Lösche Übertragung aus Warteschlange und von Feschtpladde Add Slot to User Slot hinzufügen für Benutzer Remove Slot from user Slot löschen von Benutzer Add Permanent Slot to User permantenten Slot hinzufügen für Benutzer Save Queue Speicher Queue Update Server Update Server Update all Server Update alle Server Change Transfer-Rate Übertragungsrate ändern Copy row to Clipboard Zeile in Zwischenablage Copy column to Clipboard Spalte in Zwischenablage File Info Datei Info DCOptions You must enter a valid 'Fake Host' ! Du musst eine gültigen "Fake Host" eingeben ! You must enter a valid interface ! Du musst ein gültiges Netzwerkinterface angeben ! You must enter a valid tcp listen port ! Du musst einen gültigen TCP-Post zu Listen angeben ! You must enter a valid udp listen port ! Du musst einen gültigen UDP-Post zu Listen angeben ! You must enter a valid nick ! Du musst einen gültigen Namen eingeben ! Interface IP : Interface IP: Can't get interface IP ! Konnte die IP der Interface nicht ermitteln ! Select download folder Download Ordner auswählen Select share folder Freigegebene Ordner auswählen Select language file Sprachdatei auswählen HubList URL Hub Liste URL Please enter a url Bitte eine URL eingeben Share list not available Freigabeliste ist nicht verfügbar Compressed list size: Grösse der komprimierte Liste: bytes Bytes Total shared: Gesamte Freigabe: Share List Info Info Freigabeliste You change the client mode ! Please restart DCGUI ! Du hast den Client Modus gewechselt ! Also DCGUI neustarten ! My Mein Select sound file Bitte eine Musik-Datei angeben Select sound player Musik Player wählen au wav All Files Alle Dateien Host IP : Host IP: Can't get Host IP ! IP konnte nicht ermittelt werden ! Select download finished folder Ordner für fertige Dateiübertragung wählen You must set a Download Folder ! Es muss ein Download Ordner angegeben werden ! Download Finished Folder and Download Folder must be different ! Der fertige Download Ordner und Download Ordner darf nicht überein stimmen ! You listen on a port <= 1024 ! You can run dcgui only as root in active mode ! Der Listen Port ist <= 1024 ! DCGUI kann im aktiven Mode nur als root gestartet werden ! You must enter a valid search nick ! Du musst einen gültigen Suchnamen eingeben ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Der Listen Port ist < 1024 ! DCGUI kann im aktiven Mode nur als root gestartet werden ! Other Andere Log Log Sound Musik General Allgemein Files Dateien GUI GUI Chat Chat Transfer Übertragung Connection Verbindung Mode Modus Settings Einstellungen DCGUI DCGUI Identify Identifizierung Folder Ordner Interface List Interface Liste Please select an interface Bitte wählen Sie ein Interface No interfaces found ! Kein Interface gefunden ! Select data folder Daten Ordner auswählen User Benutzer Select log file Logdatei auswählen Security Sicherheit Select a browser Select transfer cert Select transfer key Add new nick name filter Please enter a nick Chat Timestamp Chat Local Nick Chat Local Text Chat Remote Nick Chat Remote Text Chat Status Nick Chat Status Text Public Chat Timestamp Public Chat Local Nick Public Chat Local Text Public Chat Remote Nick Public Chat Remote Text Public Chat Status Nick Public Chat Status Text Public Private Chat Nick Public Private Chat Text Select a 64x64 Photo You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Can't get Host IP! No interfaces found! Can't get interface IP! Chat Say Host IP: Interface IP: Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client DCServerList Add Hinzufügen Edit Bearbeiten Remove Entfernen Connect Verbinden Add Bookmark Lesezeichen hinzufügen Edit Bookmark Lesezeichen bearbeiten Select profle Profile auswählen Please select an profile Bitte wählen Sie ein Profile Public Öffentlich Bookmarks Lesezeichen Error Fehler You are sure ? Sind Sie sicher ? Cancel Abbrechen DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransfer Connected Verbunden Disconnected Verbindung trennen Error: ' Fehler: ' Connection Timeout Timeout bei Verbindungsaufbau Download Downloaden DCTransferView Timeout: Zeitüberschreitung: Disconnected Verbindung trennen Wait Warten Cancel Transfer Übertragung abbrechen Close Transfer Übertragung beenden Show User List Userliste anzeigen Cancel wait Warten abbrechen Idle Leerlauf Run Läuft Transfer Übertragung Error Fehler Download Download Upload Upload Unknown unbekannt Pause Pause Hub offline Hub offline User offline User offline User busy User busy Send error Sendefehler Change Transfer-Rate Übertragungsrate ändern Please enter a Transfer-Rate [B/s] (0=off) Bitte eine Übertragungsrate eingeben [B/s] (0=aus) Change File-Priority Ändere Dateipriorität Please enter a priority Bitte eine Filepriorität angeben Handshake Verbindungsaushandlung Nothing Nichts Remove Entfernen Cancel Abbrechen Filebrowser Dateientdecker Try Connect Starte Verbindung User and Hub not found in the queue ! Benutzer und Hub wurde nicht in der Queue gefunden ! Nick: Name: Hub: Hub: Remove Transfer Übertragung entfernen You are sure ? Sind Sie sicher ? My Mein Share list not available Freigabeliste ist nicht verfügbar None Kein File Datei %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Übersetzer Choose a language Sprache auswählen Chinese Simplified to English Chinese Traditional Dutch French German Deutsch Greek Italian Japanese Korean Portuguese Russian Spanish Detect language Arabic Bulgarian Chinese Croatian Czech Danish Finnish Hindi Norwegian Polish Romanian Swedish OK OK Cancel Abbrechen Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Name Server Server Description Beschreibung Users Benutzer Country Shared Freigabe Minimum share Extra QObject Download Download Download To Download zu Download As Download als Browse User Files User Dateien entdecken Private Chat Private Unterhaltung Kick Kicken Force Move Weiterleitung Update User Benutzer updaten Connect Verbinden Disconnect Verbindung trennen Reload Userlist Userliste neu einladen Connect To Hub Verbinden zu Hub Add Hinzufügen Add Bookmark Lesezeichen hinzufügen Edit Bearbeiten Edit Bookmark Lesezeichen bearbeiten Remove Entfernen Close Transfer Übertragung beenden Info Info Try Connect Starte Connect Remove from Queue Aus Warteschlange löschen Remove Transfer from Queue and Disk Lösche Übertragung aus Warteschlange und von Feschtpladde Add Slot to User Slot hinzufügen für Benutzer Add Permanent Slot to User permantenten Slot hinzufügen für Benutzer Remove Slot from user Slot löschen von Benutzer Save Queue Speicher Queue Update Server Update Server Update all Server Update alle Server Change Transfer-Rate Übertragungsrate ändern Copy row to Clipboard Zeile in Zwischenablage Copy column to Clipboard Spalte in Zwischenablage File Info Datei Info Connect To All Hubs Verbinde zu allen Hubs Search for clones Suche gleiche Dateien Remove complete from Queue Komplett aus der Warteschlange löschen Download In Download in Load Laden Save Speichern Edit Hub Profiles Hub Profile editieren Set Hub Profile Wähle Hub Profile Add this extra source Diese Quelle hinzufügen Edit transfer Übertragung bearbeiten Edit file priority Filepriorität bearbeiten Translate Übersetzen Translator Übersetzer Disable group Group by File Gruppiere Dateien Group by Size Group by Nick Gruppiere Namen Group by free Slots Group by Hub Group by Path Group by Host Copy Kopieren Clear Löschen Select all Close Group Hide Ausblenden Refresh Filelist Pause Queue Resume Queue Insert Smiley Add Friend Czech Danish Dutch Finnish German Deutsch Hungarian Icelandic Norwegian Polish Romanian Spanish Swedish Copy Link Request secure chat Close secure chat Profile editor Reset Reset Dock Undock Exit Feierabend Custom Latvian Russian Slovak Check client version Add Permanent Group by Hash Upload Slot Bosnian English French Greek Italian Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: User: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (wähle einen vorhandenen Transfer zum hinzufügen) File download Datei download A same file is already in the queue! Start a multi-download Cancel Abbrechen File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Weitermachen Overwrite Überschreiben File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Nich verbunden zum Hub ! Group by total Slots Download Folder Download Ordner Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Name Comment Kommentar Tag Speed Geschwindigkeit Email Share Freigabe IP IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.lv.ts0000664000076400007640000120610511144234504016137 0ustar ejsejs DCBrowseFileTree Select destination Izvelieties galamērķi Select a filename Izvēlieties failu <wrong length> <nepareizs garums> Choose a filename to save under Izvēlieties failu kurā notiks saglabāšana DCChat Message not send ! Ziņa netika nosūtīta ! Private Chat: Privāta saruna: Chat Cleared. Čats Iztīrīts. Translation: Tulkojums: Translation failed: Tulkošana kļūda: Current mode: Tekošais režīms: active aktīvs passive pasīvs Refresh share in progress. Notiek koplietojamo failu saraksta atjaunošana. Refresh share allready in progress. Koplietojamo failu saraksta atjaunošana jau notiek. Switch timestamp Pārslēgt laika marķējumu Send advertisment. Sūtīt reklāmu. Wrong parameter for '/join' Kļūdains parametrs priekš '/join' Join to: Pievienoties pie: Wrong parameter for '/msg' Kļūdains parametrs priekš '/msg' Private message send. Privātā ziņa nosūtīta. Private message not send ! Privātā ziņa netika nosūtīta! Away message disabled. Prombūtnes ziņa atslēgta. Away message set. Prombūtnes ziņa uzstādīta. Line is encrypted. Rinda ir šifrēta. Line is not encrypted. Rinda nav šifrēta. Help: Palīdzība: /clear - clear the chat window /clear - notīrit čata logu /mode - show current mode /mode - parādīt tekošo režīmu /refresh - refresh share /refresh - atjaunot koplietojamos failu sarakstu /ts - switch time display in chat on/off /ts - ieslēgt/izslēgt laika rādīšanu čata logā /dcgui - send an advertisment to the hub /dcgui - nosūtīt reklāmu hubam Choose a filename to save under Izvēlieties failu kurā notiks saglabāšana /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;address&gt; -atvienoties no pašreizējā huba un pievienoties citam /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nick&gt; &lt;message&gt; - sūtīt privātu ziņu /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;message&gt; -uzstādīt automātisku atbildi uz privātajiem ziņojumiem; ja ziņojums ir tukšs, atslēgt to Select download folder Izvēlieties lejupielādes mapi Select file for Izvēlieties failu priekš Text Encoding Teksta kodējums Choose a codec Izvēlieties kokeku Only allowed in private chat. Tikai atļautajiem privātajā čatā. Client use wrong version. Klients lieto nepareizu versiju. No Photo found. Bilde nav atrasts. Can't read photo. Bildi nevar nolasīt. Photo encode error. Bildes koda kļūda. Photo not send. Bilde netika nosūtīta. Photo send. Bilde nosūtīta. Photo received. Bilde saņemta. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Iesauka: Operator: yes no Comment: Speed: Ātrums: EMail: Shared: Away: on off Version: Unknown Nezināms Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Joins: Pievienošanās: Parts: Atdalīšanās: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Baiti Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Savienojuma laiks izbeidzies Error: ' Kļūda: ` Validate denide Validācija noliegta Redirect to Pārvirzīt uz Password - Parole - Please enter your password Lūdzu ievadiet savu paroli Wrong password Nepareiza parole OP Force Move OP Piespiedu Pārvietošana Please enter host Lūdzu ievadiet datora adresi Please enter a message Lūdzu ievadiet ziņojumu Redirect disabled Pārvirzīšana izslēgta OP Kick OP Izmest Please enter a reason Lūdzu ievadiet iemeslu User: Lietotājs: Connected Pievienojies Disconnected Atvienojies Use password from profile Lietot paroli no profila Password from profile is empty Parole no profila ir tuksa No profile found for this hub Priekš šī huba profils nav atrasts users lietotāji Hubname change: Huba nosaukuma maiņa: User rejoin the hub. Lietotājs atgriezies hubā. User left the hub. Lietotājs pameta hubu. Hub Hubs Sorry, client works in passive mode Atvainojiet, klients strādā pasīvajā režīmā We left the hub. Mēs pametām hubu. Joins: Pievienošanās: Parts: Atdalīšanās: Chat List Čata saraksts Line is encrypted. Rinda ir šifrēta. Line is not encrypted. Rinda nav šifrēta. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Atcelt Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Kolonnas Any Jebkurš DCDebug Send error Sūtīšanas kļūda Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Izvēlieties failu kurā notiks saglabāšana Text (*.txt) DCDialogAbout About Par OK OK Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Faila lejupielāde Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Failu Pārlūks File Fails Size Izmērs Files Faili Shared Koplietošanā DCDialogChat Form1 Form 1 &Send &Sūtīt DCDialogChat DCDialogClient Form1 Form 1 User Lietotājs Nick Iesauka Comment Komentārs Speed Ātrums EMail EPasts Bytes Baiti 0 0 Share Koplietošanas faili Chat List Čata saraksts DCDialogClient User(s) ... DCDialogConnectionManager Connection Savienojums DCDialogDebug Comment Komentārs &Save &Saglabāt Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Neko Send Receive Both Abus OK OK Cancel Atcelt malloc info DCDialogEditServer Form1 Form 1 Settings Iestadījumi Name Vārds Host Dators Description Apraksts Cancel Atcelt Accept Apstiprināt Password Parole Autoconnect Autosavienošanās DCDialogEditServer &Cancel At&celt &Profile Profile Profils Nick Iesauka EMail EPasts Auto Connect Autopievienošanās Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Apvienojums Path Ceļš &Cancel At&celt DCDialogEditTransfer Edit Transfer Rediģēt pārsūtīšanu Settings Iestādījumi Nick Iesauka Hub name Huba vārds Hub address Huba adrese Cancel Atcelt Accept Apstiprināt Known hubs Zināmie hubi &Cancel At&celt DCDialogFileBrowser Form1 Form 1 New Column Jauna Kolonna Name Vārds Size Izmērs File Type Faila Tips Open Save Saglabāt Type Tips TTH Folder Mape Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Faila Pārsūtīšanas Informācija File Fais Size Izmērs Done Pabeigts Hash Sources DCDialogForceMove OP Force Move OP Piespiedu Pārvietošana Please enter a host Please enter a message Lūdzu ievadiet ziņojumu OK OK Cancel Atcelt DCDialogGetURL Get URL Saņemt URL Cancel Atcelt &Cancel At&celt DCDialogHubFilter Hub Filter Hubu Filtrs Filter Filtrs Min. User Min. Lietotājs Contains Satur Cancel Atcelt Save Saglabāt Name Vārds Server Serveris Description Apraksts Settings &Cancel At&celt DCDialogHubListManager Hub List Hubu Saraksts Public Publisks Name Vārds Server Serveris Description Apraksts double click to hide the toolbar ar dubultklikšķi varēsiet noslēpt rīku joslu edit filter rediģēt filtru delete filter dzēst filtru Filter Filtrs update public hublist atsvaidzināt publisko hubu sarakstu add filter pievienot filtru reload public hublist pārlādēt publisko hubu sarakstu double click to show the toolbar ar dubultklikšķi varēsiet parādīt rīku joslu Bookmarks Grāmatzīmes connect pievienoties Users Lietotāji Shared Koplietošanā Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Saglabāt Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Pievienot Edit bookmark. Edit Rediģēt Remove bookmark. Remove Izņemt DCDialogHubProfile Edit hub Profiles Rediģēt hubu Profilus Profile Profils Create Izveidot Delete Dzēst Settings Iestādījumi Password Parole OK OK Auto Connect Autopievienošanās Cancel Atcelt Hub profile editor &Cancel At&celt Nick Iesauka Description Apraksts EMail EPasts Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Rezultāti Nick Iesauka File Fails Size Izmērs Slot Sloti Hub Hubs Path Ceļš Log Žurnāls Search Meklēt Results: Rezultāti: Connected Hubs Savienotie Hubi Bookmark Hubs Grāmatzīmju Hubi Filter Filtrs Type Tips At Least Vismaz At Most Zem KB KB MB MB Any Jebkurš MP3 MP3 Compressed Kompresēts Document Dokuments Executable Izpildāms Picture Bilde Video Video Folder Mape Hub Search Meklēšana Hubā Host Dators GB GB Free Slots Brīvie Sloti Max Free Slots (0=off) Max Brīvie Sloti (0=atslegts) Exact Tieši B B 0/0 0/0 0 0 Search in path+file name only Meklēt tikai ceļā+faila vārdā Search History Meklēšanas Vēsture History Vēsture Hubs Hubi Hub Options Huba Opcijas Connected Hub Savienotie Hubi Refresh Atsvaidzināt Public Hubs Publiskie Hubi Expert Eksperts User Lietotājs Reset Atgriest Clients Klienti Live filters Aktīvie filtri Include: Iekļaut: Exclude: Izslēkt: Apply Apstiprināt Mode Režīms Add Pievienot User/File Lietotājs/Fails Search for a user or a file. Meklēt lietotāju vai failu. Start Sākt Start the search. Sākt meklēšanu. Add a search to the searchqueue Pievienot meklēšanu meklēšanas rindai Filtered Hubs Filtrētie Hubi Multi Search Multi Meklēsana Enable Tag Ieslēgt Marķierus Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Vārds Size Izmērs Exact size Action Darbība Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Atcelt DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Opcijas Identify Identitāte Information Informācija E-Mail: E-Pasts: Nick: Iesauka: Description: Apraksts: Speed: Ātrums: 56Kbps 56Kbps 33.6Kbps 33.6Kbps Satellite Satelīts ISDN ISDN DSL DSL Cable Kabelis LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Spams (epasts pie mājas punkts com) Transfer Pārsūtīšana Share Folders Koplietošanas Mapes Download Folder Lejupielādes Mape Upload Options Augšupielādes Opcijas Connection Savienojums Settings Iestādījumi Mode Režīms Active Mode Aktīvais Režīms Passive Mode Pasīvais Režīms Passive Mode Settings Pasīva Režīmā Iestādījumi Active Mode Settings Aktīvā Režīmā Iestādījumi TCP Listen Port: TCP Klausīšanās Ports: 412 412 Hub Search Meklēšana Hubos UDP Listen Port: UDP Klausīšanās Ports: Use ip from interface (ppp0,eth0) Lietot interfeisa (ppp0,eth0) IP Test Tests Interface IP Interfeisa IP Wrong IP Nepareiza IP GUI GUI GUI Options GUI Opcijas Other Citi Other Options Citas Opcijas Hublist Hubu saraksts Store local Novietot lokali Theme Tēma Language File Valodas fails Reconnect Counter (0=off) Pārvienošanās Skaitītājs (0=atslēgts) Reconnect Timeout (sec.) Pārvienošanās Laika ilgums (sek.) Allow Force Move Atļaut Piespiedu Pārvietošanu Source Url's Avota Urls URL URL Max. upload slots (0=off) Max. augšupielādes sloti (0=atslēgts) Application Font Aplikācijas Fonti Maximal upload connections. Maksimālas augšupielādes konekcijas. Transfer Request Timings Parsūtīšanas Pieprasījuma Laika Noteikšana Resend Timeout (sec.) Pārsūtīšanas Taimauts (sek.) Response Timeout (sec.) Atbildes Taimauts (sek.) Hub Connections Hubu Savienojumi Sound Skaņa External Player Ārējs Atskaņotājs Chat Čats Units Vienības Auto Auto Byte Baits GByte GBaits KByte KBaits MByte MBaits General Vispārējs Disable Sound Izslēgt Skaņu Play a sound when receiving a message Atskaņot skaņu, kas tiek saņemta ziņa Play a sound when disconnecting from a hub Atskaņot skaņu, kas notiek atvienošanās no huba Play a sound when receiving first message Atskaņot skaņu, kas tiek saņemta pirmā ziņa Play a sound when sending a message Atskaņot skaņu, kas tiek sūtīta ziņa Play a sound when connecting to a hub Atskaņot skaņu, kas notiek savienošanās ar hubu Disable sound when away Atslēgt skaņu prombūtnes laikā Player Atskaņotājs Sound Files Skaņas Faili Log Žurnāls Timestamp Laika marķējumu Private Chat Privāta Saruna Hub Chat Huba Čats Download Queue Lejupielādes Rinda Save Queue in minutes (0=off) Saglabāt Rindu pēc minūtēm (0=atslēgts) Move Finished Files to this Folder (empty = disabled) Pārvietot Pabeigtos Failus uz Šo Mapi (tukšs = atslēgts) Use wrong ip/hostname (Firewall/Portforward) Lietot citu ip/datora vardu (Firewalls/Portforwards) No multi hub search ! No incoming connections ! Nav multi hubu meklēšana ! Nav ienākošo konekciju ! Send warn message to remote user on active mode request Sūtīt brīdinājumu, ja tiek pieprasīts aktīvais režīms Show Status Messages Rādīt Statusa Ziņas Open Private Chat Window Atvērt Privātā Čata Logu Transfer Options Pārsūtīšanas Opcijas Transfer View Pārsūtīšanu Aplūkošana Chunk Percent Gabals Procentuāli File Percent Fails Procentuāli Chunk Size Gabala Izmērs File Size Faila Izmērs Search Nick: Meklēšanas Iesauka: Chat options Čata opcijas upload augšupielāde download lejupielāde Add Description Tag (<DCGUI ....>) Pievienot Apraksta Tegu (<DCGUI ....>) Folder Mape New Column Jauna Kolonna Away Message: Prombūtnes ziņa: Get Dabūt Your line speed. Jūsu līnijas ātrums. Your nick. Jūsu iesauka. The nick for hub searches. Iesauka priekš meklēšanas hubos. Your EMail. Jūsu EPasts. Enable/Disable the Anti-spam option. Ieslēgt/Izslēgt Anti-Spama opciju. A little description. Neliels apraksts. Add a tag to the description that show some information from you. Pievienot tegu pie apraksta, kurš parādīs informāciju no Jums. The tcp listen port for incoming connections. Tcp ienākošo savienojumu klausīšanās ports . The udp listen port for incoming search results. Udp ienākošo savienojumu klausīšanās ports . Get the ip from the interface. Iegūt IP no interfeisa. Select a interface. Lūdzu izvēlieties interfeisu. Get the ip from the host. Iegūt datora IP. The time between a reconnect. Laiks startp rekonekciju. How often we reconnect to a hub. Cik bieži mēs rekonektējamies pie hubam. Rebuild your sharelist. Pārbūvēt koplietojamo failu sarakstu. Add a folder to your sharelist. Pievienot mapi koplietojamo failu sarakstam. Remove a folder from your sharelist. Izņemt mapi no koplietojamo failu saraksta. Show some information about your sharelist. Parādīt mazliet informāciju par Jūsu koplietojamiem failiem. Browse your own share list. Pārlūkot Jūsu pašu koplietojamo failu sarakstu. Time to wait for a transfer response from the remote user. Laiks cik ilgi gaidīt atbildi pārsūtīšanai no attālinātā lietotāja. Time to wait before a new transfer request is send to the remote user. Laiks cik ilgi gaidīt pirms jaunas pārsūtīšanas pieprasīšanas no attālinātā lietotāja. Test the new theme. Testēt jauno temu. Open the chat window on incoming messages. Atvērt čata logu, ienākot paziņojumam. Enable emoticons in chat Rādīt emocijas čatā Data Folder Datu Mape Ctrl + Enter Enter Alt + Enter Alt + S Show Version Tag in User-Description Rādīt Versijas Tegu Lietotāja-Aprakstā Messages Ziņojumi Query on exit Izejot jautāt Logfile Logfails Logfile enabled Logfails ieslēgts Security Drošība Flood Protection Flooda Aizsardzība Kick Message Izmešanas Ziņa Private Address Space (rfc1918) Privāta Adresu Telpa (rfc1918) Ignore private address space connections Ignorēt privātās adresu telpas pieprasījumus Query Vaicājums Client Klients User-List right alignment Lietotāju-Saraksta labā stāvokļa novietojums Don't Display Messages after X retry (0=off) Nerādīt Ziņojumus pēc X-tā mēģinājuma (0=atslēgts) Kick the user for flooding (only for Operators) Izmest lietotāju par floodingu (tikai priekš Operātoriem) Show send button Parādīt sūtīšanas pogu Dynamic upload rate Dinamisks augšupielādes ātrums Hide popups of more than Paslēpt popapus, ja vairāk par Send message with Sūtīt ziņu ar lines (0=off) rindas (0=atslēgts) Browser Pārlūks Use tab for every chat window Lietot rāmi katram čata logam Max. paragraphs (0=off) Max. paragrāfi (0=atslēgts) Client options Klienta opcijas Show client windows minimized Rādīt klientu logus minimizētus Max. uploads to user (0=off) Max. augšupielādes sloti uz lietotāju (0=izslēgts) Color Krāsa Transfer Cert/Key Pārsūtīšanas Apliecība/Atslēga User quitting hub Lietotājs pamet hubu If user quits hub, stop following transfers Ja lietotājs pamet hubu, pārtraukt sekojošas pārsūtīšanas Upload Augšupielādi Both Abus Download Lejupielādi None Neko Auto-Search Auto-Meklēšana Auto-Search for new sources Auto-Meklēt jaunus avotus Download Rate Single Lejupielādes Temps Atsevišķam Download Rate Multi Lejupielādes Temps Multi Remaining Time Single Atlikušais Laiks Atsevišķam Remaining Time Multi Atlikušais Laiks Multi Reload every hour (0=off) Pārlādēt katru stundu (0=atslēgts) Max. rate KB/s (0=off) Max. ātrums KB/s (0=atslēgts) Path Ceļš Alias Apvienojums Edit a folder from the sharelist. Rediģēt mapi no koplietojamo failu saraksta. Open File Dialog. Atvērt Failu Dialogu. Add a URL to the list. Pievienot URL sarakstam. Remove a URL from the list. Izmest URL no saraksta. Enable logging Ieslēgt žurnālu Append date to log file name Pievienot datumu žurnala faila vārdam Nick name filter Iesuku filtrs Enable nick name filter Ieslēgt iesuku filtru Disable logging for public chat Atslēgt žurnalizāciju publiskajam čatam Append hub name to log file name Pievienot huba vardu pie žurnāla faila vārda Append hub host to log file name Pievienot huba datoru pie žurnāla faila vārda &Save &Saglabāt &Cancel At&celt Forward private to public chat Nosūtīt no privātā uz publisko čatu Away Prefix: Prombūtnes Prefiks: Select Language. Izvēlieties Valodu. Recreate every hour (0=off) Pārveidot katru stundu (0=atslegts) Check and recreate sharelist on startup Pārbaudīt un pārveidot koplietojamo failu sarakstu startēšanās laikā seconds sekundes Away after Prom pēc Auto Away Mode Automātisks prombūtnes režīms Ignore messages to offline users Ignorēt ziņojumus priekš nesaistītiem lietotājiem Ignore messages from offline users Ignorēt ziņojumus no nesaistītiem lietotājiem Show joins and parts Rādīt pievienošanās un atvienošanās Columns Kolonnas Comment Komentārs Speed Ātrums EMail EPasts Share Koplietošanas faili Photo Bilde Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Vārds Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normāls Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect pievienoties Public Publisks Name Vārds Server Serveris Description Apraksts User Lietotajs Bookmarks Grāmatzīmes Hub List Hubu Saraksts Filter Filtrs double click to hide the toolbar ar dubultklikšķi varēsiet noslēpt rīku joslu edit filter rediģēt filtru delete filter dzēst filtru update public hublist atsvaidzināt publisko hubu sarakstu add filter pievienot filtru reload public hublist pārlādēt publisko hubu sarakstu double click to show the toolbar ar dubultklikšķi varēsiet parādīt rīku joslu DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Speigs Spy On/Off Ieslēgt/Izslēgt Speigu Clear Notīrīt Statistic Active: 0 0 Reject: Results: Rezultāti: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Pārsūrīšanu saraksts Nick Iesauka State Stāvoklis Transfer Pārsūtu File Fails Wait Gaidu Size Izmērs Log Žurnāls Slots Sloti Hub Hubs 0/0 0/0 Files Faili Local File / Nick lokālais Fails / Iesauka Size / Hub Izmērs / Hubs Remote File Attālinātais Fails Server/User IP Serveris/Lietotajs IP double click to hide the toolbar ar dubultklikšķi varēsiet noslēpt rīku joslu double click to show the toolbar ar dubultklikšķi varēsiet parādīt rīku joslu File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Atcelt DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Čats PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Vārds Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Atcelt DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Atcelt DCDialogUsersList Users List Lietotāju Saraksts Friends Draugi User Lietotājs Friend-List Draugu-Saraksts Photo Bilde Slot Sloti Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Priekšmeti Files Faili Total Kopā Directories Direktorijas Root Directory Saknes Direktorija <wrong length> <nepareizs garums> file fails Select destination Izvelētais galamērķis Select a filename Izvēlieties failu Filebrowser Failu pārlūks Choose a file save file dialog faila saglabāšanas dialogs Choose a filename to save under Izvēlieties failu kurā notiks saglabāšana Folder Mape Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Neko Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Faila lejupielāde File allready download Fails jau lejupieladēts File allready exist ! fails jau eksistē ! Resume Turpināt Overwrite Pārrakstīt Cancel Atcelt Start Multi Download Uzsākt Multi Lejupielādi File allready in the queue and not mark as multi download ! Fails jau ir rindā un neatzīmēts kā multi lejupielādes ! File allready in the queue with a different size ! Fails jau ir rindā tikai ar citu izmēru ! You can start a Multi Download ! Jūs varat sākt Multi Lejupielādi ! A same file is allready in the queue ! Tāds pats fails jau atrodas rindā ! If you want to download all files in this mode ? Ja jūs velaties visus failus lejupielādēt šajā režīmā? Not connected to required hub! Nav savienojuma ar nepieciešamo hubu! Connect Pievienoties (choose an existing download to add to) (izvelieties jau esošu lejupielādi pie kuras pieviento) DCFileTransferInfo File Transfer Info Faila Pārsūtīšanas Informācija DCGuiApp Options Opcijas &Options &Opcijas Ctrl+O Open option dialog Atvērt opciju dialogu Exit Iziet Ctrl+Q Quits the application Iziet no aplikācijas Exit Quits the application Iziešana Iziet no aplikācijas Toolbar Rīku josla Tool&bar Dar&barīku josla Enables/disables the toolbar Ieslēgt/Izslēgt rīkjoslu Toolbar Enables/disables the toolbar Rīkjosla Ieslēgt/Izslēgt rīkjoslu Statusbar Statusjosla &Statusbar &Statusjosla Enables/disables the statusbar Ieslēgt/Izslēgt statusjoslu Statusbar Enables/disables the statusbar Statusjosla Ieslēgt/Izslēgt statusjoslu Cascade Kaskāde &Cascade &Kaskāde Cascades all windows Kaskadēt visus logus Cascade Cascades all windows Kaskāde Kaskadēt visus logus Tile tzklāt &Tile Izklā&t Tiles all windows Izklāt visus logus Tile Tiles all windows Izklāt Izklāj visus logus Ctrl+S Transfer List Pārsūrīšanu saraksts &Transfer List Pārsū&tīšanu saraksts Ctrl+T Show Transfer List Parādīt pārsūrīšanu saraksts Hub Search Meklēšana Hubā &Hub Search Meklēšana &Hubā Show Hub Search Parādīt Meklēšanu Hubā About Par &About... P&ar... About the application Par programmu About About the application Par Par programmu New Version Jauna Versija &New Version... Jau&na Versija... Check for new version Pārbaudīt vai ir jauna versija New Version Check for new version Jaunas Versijas Pārbaude Pārbaudīt vai ir jauna versija What's &This Kas &Tas &File &Fails &View &Izskats &Action D&arbība &Window &Logs &Help &Palīdzība Ready. Gatavs. (no error message from socket) (no soketa netika saņemts neviens kļudas ziņojums) TCP listen failed, change to passive mode ! TCP klausīšanās klūda, pārslēdzieties uz pasīvo režīmu ! Quit... Iziet... Open options dialog... Atveriet opciju dialogu... Exiting application... Aplikācija tiek aizvērta... Toggle toolbar... Nostiprinat rīkjoslu ... Toggle statusbar... Nostiprināt statusjoslu ... About... Par... New version... Jauna Versija... Show/hide transfer list window ... Parādīt/Noslēpt pārsūtīšanu saraksta logu ... Show/hide hub search window ... Parādīt/Noslēpt hubu meklēšanas logu ... Can't get version info from server Nevaru iegūt versijas informāciju no servera Current version is: Tekoša versija ir: Normal Normāls &Normal &Normāls Ctrl+N Set away mode Uzstādīt prombūtnes režīmu &Away &Prom Ctrl+A Hub List Hubu Saraksts Show Hub List Parādīt Hubu Sarakstu Show/hide hub list window ... Parādīt/Noslēpt hubu saraksta logu ... H&ub List H&ubu Saraksts Ctrl+U Minimize Minimizēt &Minimize &Minimizēt Minimize all windows Minimizēt visus logus Minimize Minimize all windows Minimizēt Minimizēt visus logus Action Darbība Quick Options Ātrās Opcijas Quick options Ātrās opcijas F12 Context menu for a few options Konteksta izvēlni priekš dažam opcijām Download mode: Ask Lejupielādes režīms: Jautāt Download mode: Single Lejupielādes režīms: Atsevišķi Download mode: Multi Lejupielādes režīms: Multi Spy Speigs &Spy &Speigs Show Spy Parādīt Spiegu Show/hide spy window ... Parādīt/Noslēpt spiega logu ... Users Lietotāji Ctrl+F Show users: search tab and friends tab Parādīt lietotājus: meklēšanas sadaļu un draugu sadaļu Do you really want to quit? Vai Jūs tiešām vēlaties iziet? Exiting application... aborted Aplikācija tiek aizvērta... atcelts Show/hide users window ... Parādīt/Noslēpt lietotāju logu ... Away &Mode Prombūtnes Režī&ms Close chat windows Aizvērt čata logus Close all chat windows Aizvērt visus čata logus Close chat windows Close all chat windows Aizvērt čata logus Aizvērt visus čata logus Close disconnected hubs Aizvērt atvienotos hubus Close all disconnected hub windows Aizvērt visus atvienoto hubu logus Close disconnected hubs Close all disconnected hub windows Aizvērt atvienoto hubu logus Aizvērt visus atvienoto hubu logus Tile &Horizontally Izklāt &Horizontāli Tiles all windows horizontally Izklāj visus logus horizontāli Tile Horizontally Tiles all windows horizontally Izklāt horizontāli Izklāj visus logus horizontāli Reload Plugins Iespraudņu Parlāde &Reload Plugins Iespraudņu Pa&rlāde Dock Dokot &Dock &Dokot Dock the application Dokot aplikāciju Dock Dock the application Dokot Dokot aplikāciju Hub &Search Meklēšana Hubo&s S&py S&piegs Ctrl+P Dock/Undock application... Dokot/Nedokot aplikāciju... Refresh share in progress. Notiek koplietojamo failu saraksta atjaunošana. Refresh share allready in progress. Koplietojamo failu saraksta atjaunošana jau notiek. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Publisks Bookmarks Grāmatzīmes Add Bookmark Pievienot Grāmatzīmi Error Kļūda Edit Bookmark Rediģēt Grāmatzīmi Remove bookmarks You are sure ? Vai esat pārliecināts ? Remove Izņemt Cancel Atcelt Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Izveidot Huba Profilu Please enter the profile name Lūdzu ievadiet profila vārdu Save profile Do you want to save your changes? Save Saglabāt Cancel Atcelt Are you sure? Delete profile for DCHubSearch Connect to local udp port failed. ( Pievienošanās lokālajam UDP portam nav notikusi. ( No hubs found. Nav atrasts neviens hubs. Hub Search Error Kļūda Meklējot Hubā No connected hubs found. Nav atrasti savienoti hubi. Select download folder Izvelieties lejupielādes mapi Select search Izvēlieties meklēšanu Please select an search Lūdzu izvēlieties meklēšanu Please select a connected hub. Lūdzu izvēlieties savienotu hubu. Select file for Izvēlieties failu priekš USER LIETOTĀJS FILE FAILS List download Parādīt lejupielādes sarakstu Not connected to required hub! Nav savienojuma ar nepieciešamo hubu! Connect Savienoties Cancel Atcelt save file dialog faila saglabāšanas dialogs Choose a filename to save under Izvēlieties failu kurā notiks saglabāšana open file dialog faila atvēršanas dialogs Choose a file to open Izvēlieties failu priekš atvēršanas External search is allready running ! Ārējā meklēšana jau norit ! Please add a search ! Lūdzu pievienojiet meklēšanu ! Start Sākt Stop Apstādināt Multi Search only work in active mode ! Multi Meklēšana strādā tikai aktīvajā režīmā ! Filelist download Please add a search! Multi Search only work in active mode! Folder Mape Unknown Nezināms None Neko Directory File Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Jums ir jāievada derīgs 'Viltus Dators' ! You must enter a valid interface ! Jums ir jāievada derīgs interfeiss! You must enter a valid tcp listen port ! Jums ir jāievada derīgs tcp klausīšanās ports ! You must enter a valid udp listen port ! Jums ir jāievada derīgs udp klausīšanās ports ! You must enter a valid nick ! Jums ir jāievada derīga iesauka ! Interface IP : Interfeisa IP: Can't get interface IP ! Nevar iegūt interfeisa IP ! Select download folder Izvēlieties lejupielādes mapi Select share folder Izvēlieties koplietošanas mapi Select language file Izvēlieties valodas failu HubList URL Hubu Saraksta URL Please enter a url Lūdzu ievadiet URL Share list not available Koplietojamo failu saraksts nav pieejams bytes baiti Total shared: Kopā koplietojamie faili: Share List Info Koplietojamo Failu Saraksta Informācija You change the client mode ! Please restart DCGUI ! Jūs izmainijāt clients režīmu ! Lūdzu pārstartējiet DCGIU ! My Mans Select sound file Izvēlieties skaņas failu Select sound player Izvēlieties atskaņotāju au wav All Files Visus failus Host IP : Datora IP: Can't get Host IP ! Nav Iespējams Iegūt Datora IP ! Select download finished folder Izvelieties pabeigto lejupielāžu mapi You must set a Download Folder ! Jms ir jānorāda Lejupielādes Mapi ! Download Finished Folder and Download Folder must be different ! Pabeigto Lejupielāžu Mapei un Lejupielāžu Mapei ir jābūt atšķirīgām ! You must enter a valid search nick ! Jums ir jāievada derīga meklēšanas iesauka ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Jūs klausāties uz porta < 1024 ! Jūs varat darbināt dcgui tikai kā roots aktīvajā režīmā ! Other Citi Log Žurnāls Sound Skaņa General Vispārējs GUI GUI Chat Čats Transfer Pārsūtīšana Connection Savienojums Mode Režīms Settings Iestadījumi Identify Identitāte Folder Mape Interface List Interfeisu Saraksts Please select an interface Lūdzu izvēlieties interfeisu No interfaces found ! Neviens interfeiss nav atrasts ! Select data folder Izvēlieties datu mapi User Lietotājs Select log file Izvēlieties žurnāla failu Security Drošība Select a browser Izvēlieties pārlūku Compressed list size (HE3/BZ): Kompresēta saraksta (HE3/BZ) izmērs: Select transfer cert Izvēlaties pārsūtīšanas apliecību Select transfer key Izvēlaties pārsūtīšanas atslēgu Edit Alias Rediģēt Apvienojumus Please enter a new alias Lūdzu ievadiet jaunu apvienojumu Browse Share List Pārlūkot Koplietojamo Failu Sarakstu Add new nick name filter Pievienot jaunu iesaukas filtru Please enter a nick Lūdzu ievadiet iesauku Chat Timestamp Čata Laika Marķējumu Chat Local Nick Čata Lokālā Iesauka Chat Local Text Čata Lokālais Teksts Chat Remote Nick Čata Attālinātā Iesauka Chat Remote Text Čata Attālinātais Teksts Chat Status Nick Čata Statusa Iesauka Chat Status Text Čata Statusa Teksts Public Chat Timestamp Publiskā Čata Laika Marķējums Public Chat Local Nick Publiskā Čata Lokālā Iesauka Public Chat Local Text Publiskā Čata Lokālais Teksts Public Chat Remote Nick Publiskā Čata Attālinātā Iesauka Public Chat Remote Text Publiskā Čata Attālinātais Teksts Public Chat Status Nick Publiskā Čata Statusa Iesauka Public Chat Status Text Publiskā Čata Statusa Teksts Public Private Chat Nick Publiskā, Privātā Čata Iesauka Public Private Chat Text Publiskā, Privātā Čata Teksts Can't save Image ! Bildi nevar saglabāt! Can't load Image ! Bildi nevar ielādēt! Select a 64x64 Photo Izvēlieties 64x64 Bildi You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Klients DCServerList Add Bookmark Pievienot Grāmatzīmi Edit Bookmark Rediģēt Grāmatzīmi Select profle Izvelēties profilu Please select an profile Lūdzu izvēlieties profilu Public Publisks Bookmarks Grāmatzīmes DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Gaidīt Idle Nenodarbināts Run Turpināt Transfer Pārsūtīšana Error Kļūda Download Lejupielāde Upload Augšupielāde Unknown Nezināms Pause Pauze Hub offline Hubs nav pieejams User offline Lietotajsnav pieejams User busy Lietotājs ir aizņemts Send error Sūtīšanas kļūda Change Transfer-Rate Izmainīt Pārsūtīšanas-Ātrumu Please enter a Transfer-Rate [B/s] (0=off) Lūdzu ievadiet pārsūtīšanas ātrumu [B/s] (0=izslēgt) Change File-Priority Izmainīt Faila Prioritāti Please enter a priority Lūdzu ievadiet prioritāti Handshake Rokasspiediens Nothing Nekas Remove Transfer Izmest Pārsūtīšanu You are sure ? Vai esat pārliecināts ? Remove Izņemt Filebrowser Failu pārlūks Try Connect Mēģināt Savienoties User and Hub not found in the queue ! Lietotājs un Hubs nav atrodami rinda ! Nick: Iesauka: Hub: Hubs: Cancel Atcelt My Mans Browse Share List Pārlūkot Koplietojamo Failu Sarakstu Share list not available Koplietojamo failu saraksts nav pieejams None Neko File %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Tulkotājs Choose a language Izvēlieties valodu Chinese Simplified to English Chinese Traditional Dutch Holandiešu French German Vācu Greek Italian Japanese Korean Portuguese Russian Spanish Spāņu Detect language Arabic Bulgarian Chinese Croatian Czech Čehu Danish Dāņu Finnish Somu Hindi Norwegian Norvēģu Polish Poļu Romanian Rumāņu Swedish Zviedru OK OK Cancel Atcelt Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Vārds Server Serveris Description Apraksts Users Lietotāji Country Shared Koplietošanā Minimum share Extra QObject Download Lejupielāde Download To Lejupielādāt Uz Download As Lejupielādāt Kā Browse User Files Pārlūkot Lietotāja Failus Private Chat Privāta Saruna Kick Izmest Force Move Piespiedu Pārvietošana Update User Atsvaidzināt Lietotāju Connect Pievienoties Disconnect Atvienoties Reload Userlist Pārlādēt Lietotāju sarakstu Connect To Hub Pievienoties Hubam Add Pievienot Add Bookmark Pievienot Grāmatzīmi Edit Rediģēt Edit Bookmark Rediģēt Grāmatzīmi Remove Izņemt Close Transfer Aizvērt Pārsūtīšanu Info Informācija Try Connect Mēģināt Pieslēgties Remove from Queue Izmest no Rindas Remove Transfer from Queue and Disk Izmest Pārsūtīsanu no Rindas un Diska Add Slot to User Pievienot Slotu Lietotājam Add Permanent Slot to User Pievienot Ilgstošu Slotu Lietotājam Remove Slot from user Atņemt Slotu Lietotājam Save Queue saglabāt Rindu Update Server Atsvaidzināt Serveri Update all Server Atsvaidzināt Visus Serverus Change Transfer-Rate Izmainīt Pārsūtīšanas-Ātrumu Copy row to Clipboard Kopēt Rindu un Klipbordu Copy column to Clipboard Kopēt kolonnu un Klipbordu File Info Informācija par Failu Connect To All Hubs Pievienoties visiem Hubiem Search for clones Meklēt Klonus Remove complete from Queue Izmest pabeigtous no Rindas Load Ielādēt Save Saglabāt Edit Hub Profiles Rediģēt hubu Profilus Set Hub Profile Uzstādītt huba Profilu Add this extra source Pievienot šo ekstra avotu Edit transfer Rediģēt pārsūtīšanu Edit file priority Rediģēt faila prioritāti Translate Tulkot Translator Tulkotājs Disable group Atslēgt grupu Group by File Grupēt pēc Faila Group by Size Grupēt pēc Izmēra Group by Nick Grupēt pēc Iesaukas Group by free Slots Grupēt pēc brīvajiem Slotiem Group by Hub Grupēt pēc Huba Group by Path Grupēt pēc Ceļa Group by Host Grupēt pēc Datora Copy Kopēt Clear Tīrīt Select all Atzīmēt visus Close Aizvērt Group Grupa Hide Noslēpt Refresh Filelist Atsvaidzināt Failu sarakstu Pause Queue Nopauzēt rindu Resume Queue Turpināt Rindu Insert Smiley Ievietot Smaidiņu Add Friend Pievienot Draugu Czech Čehu Danish Dāņu Dutch Holandiešu Finnish Somu France Franču German Vācu Hungarian Ungāru Icelandic Islandiešu Italy Itāļu Norwegian Norvēģu Polish Poļu Romanian Rumāņu Spanish Spāņu Swedish Zviedru Copy Link Kopēt Saiti Text Encoding Teksta kodējums Request secure chat Pieprasīt drošū čatu Close secure chat Aizvērt drošo čatu Input Ievade Output Izvade Check client version Add Permanent Profile editor Group by Hash Reset Atgriest Dock Dokot Undock Exit Iziet Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Lietotājs: User Commands Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (izvelieties jau esošu lejupielādi pie kuras pieviento) File download Faila lejupielāde A same file is already in the queue! Start a multi-download Cancel Atcelt File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Turpināt Overwrite Pārrakstīt File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Nav savienojuma ar nepieciešamo hubu! Group by total Slots Download Folder Lejupielādes Mape Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Iesauka Comment Komentārs Tag Speed Ātrums Email Share Koplietošanas faili IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.el.ts0000664000076400007640000125161411144234504016123 0ustar ejsejs DCChat Private Chat: Ιδιωτική Συζήτηση: Chat Cleared. Συζήτηση Καθαρίστηκε. Translation: Μετάφραση: Translation failed: Μετάφραση απέτυχε: Current mode: Παρούσα λειτουργία: active ενεργή passive παθητική Refresh share in progress. Τα διαμοιραζόμενα αρχεία ενημερώνονται. Switch timestamp Μετατροπή σφραγίδας χρόνου Send advertisment. Αποστολή διαφήμισης. Wrong parameter for '/join' Λάθος παράμετρος για το '/join' Join to: Σύνδεση σε: Wrong parameter for '/msg' Λάθος παράμετρος για το '/msg' Away message disabled. Μήνυμα απομάκρυνσης απενεργοποιήθηκε. Away message set. Μήνυμα απομάκρυνσης ενεργοποιήθηκε. Line is encrypted. Η γραμμή κρυπτογραφείται. Line is not encrypted. Η γραμμή δεν κρυπτογραφείται. Help: Βοήθεια: /refresh - refresh share /refresh - ενημέρωση διαμοιραζόμενων αρχειων /ts - switch time display in chat on/off /ts - ενεργοποίηση/απενεργοποίηση της σφραγίδα χρόνου Choose a filename to save under Επιλέξτε όνομα αρχείου προς αποθήκευση /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;διεύθυνση&gt; - αποσύνδεση από τον παρόντα κόμβο και σύνδεση σε άλλον κόμβο /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;ψευδώνυμο&gt; &ltμήνυμα&gt; - στέλνει ιδιωτικό μήνυμα σε αυτόν τον χρήστη /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;μήνυμα&gt; - καθορίζει αυτόματη απάντηση στα ιδιωτικά σας μηνύματα, αν το μήνυμα είναι κενό, την απενεργοποιεί Select download folder Επιλέξτε φάκελο αποθήκευσης Select file for Επιλέξτε αρχείο προς Text Encoding Κωδικοποίηση Κειμένου Choose a codec Επιλέξτε έναν κωδικοποιητή Photo received. Φωτογραφία ελήφθη. Only allowed in private chat. Επιτρέπεται μόνο σε ιδιωτική συζήτηση. Photo encode error. Σφάλμα κωδικοποίησης φωτογραφίας. Refresh share already in progress. Τα διαμοιραζόμενα αρχεία ενημερώνονται ακόμα. Chat: Συζήτηση: Message not sent! Το μήνυμα δεν εστάλη! /clear - clears the chat window /clear - καθαρίζει το παράθυρο συζήτησης /mode - shows the current mode /mode - εμφανίζει την παρούσα λειτουργία /dcgui or /adv - send an advertisment to the hub /dcgui ή /adv - στέλνει διαφήμιση στον κόμβο /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;μήνυμα&gt; - αποσυνδέεται από τον κόμβο, προαιρετικά με μήνυμα αποχώρισης /uptime - show dcgui-qt uptime /uptime - εμφανίζει τον χρόνο που είναι ενεργό το dcgui-qt /ls &lt;nick&gt; - get share list from user /ls &lt;ψευδώνυμο&gt; - ζητάει τη λίστα των διαμοιραζομένων αρχείων αυτού του χρήστη /grant &lt;nick&gt; - grant user a slot /grant &lt;ψευδώνυμο&gt; - παρέχει ανοικτή θύρα σε αυτόν τον χρήστη /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;ψευδώνυμο&gt; - παρέχει μόνιμη ανοικτή θύρα σε αυτόν τον χρήστη /friend &lt;nick&gt; - add user to friend list /friend &lt;ψευδώνυμο&gt; - προσθέτει αυτόν τον χρήστη στη λίστα φίλων /fav - add hub to bookmark list /fav - προσθέτει τον παρόντα κόμβο στην λίστα των αγαπημένων κόμβων /info - show user info /info - λαμβάνει πληροφορίες σχετικά με τον χρήστη /now - send current time to the chat /now - στέλνει την ώρα στον κύρια συζήτηση του κόμβου Get info failed. Η λήψη των πληροφοριών απέτυχε. Info: Πληροφορίες: Nick: Ψευδώνυμο: Operator: Διαχειριστής: yes ναι no όχι Comment: Σχόλια: Speed: Ταχύτητα: EMail: Ηλεκτρονική διεύθυνση: Shared: Διαμοιραζόμενα αρχεία: Away: Απομακρυσμένος από τον υπολογιστή: on ναι off όχι Version: Έκδοση: Unknown Άγνωστη Tag: Ετικέτα: Uptime Συνδεδεμένος day μέρα days μέρες hour ώρα hours ώρες minute λεπτό minutes λεπτά Download sharelist from Λήψη λίστας διαμοιραζόμενων αρχείων από No nick, try /dchelp Δεν δώσατε ψευδώνυμο, για βοήθεια δώστε /dchelp Permanent slot added for Μόνιμη ανοικτή θύρα θα παρέχεται στον Slot added for Ανοικτή θύρα θα παρέχεται στον Added to friend list Προστέθηκε στη λίστα φίλων Add bookmark hub Προσθήκη αγαπημένου κόμβου Private message sent. Ιδιωτικό μήνυμα εστάλη. Private message not sent! Ιδιωτικό μήνυμα δεν εστάλη! The user is using an old version or not using DCGUI-QT Ο χρήστης χρησιμοποιεί παλιά έκδοση ή δεν χρησιμοποιεί DCGUI-QT Photo not found. Δεν βρέθηκε φωτογραφία. Can't read your photo. Δεν ήταν δυνατό να διαβαστεί η φωτογραφία σας. Photo not sent. Φωτογραφία δεν εστάλη. Photo sent. Φωτογραφία εστάλη. /raw - send raw message /raw - αποστέλει το μήνυμα ακατέργαστο Download DCGUI-QT from http://dcgui.berlios.de It does everything ! Works on almost any platform you can think of and makes you coffee. Κατεβάστε το DCGUI-QT από τη διεύθυνση http://dcgui.berlios.de Τα κάνει όλα πριν και μετά τις 2! Λειτουργεί σχεδόν σε όποια πλατφόρμα μπορείτε να σκεφτείτε και φτιάχνει και φραπέ, άμα λάχει. /uptime - show valknut uptime /uptime - εμφανίζει την διάρκεια λειτουργίας του valknut Download Valknut from http://dcgui.berlios.de It does everything ! Works on almost any platform you can think of and makes you coffee. Κατεβάστε το Valknut από τη διεύθυνση http://dcgui.berlios.de Τα κάνει όλα πριν και μετά τις 2! Λειτουργεί σχεδόν σε όποια πλατφόρμα μπορείτε να σκεφτείτε και φτιάχνει και φραπέ, άμα λάχει. The user is using an old version or not using Valknut Ο απομακρυσμένος χρήστης δεν χρησιμοποιεί το Valknut ή η έκδοση είναι παλιά /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Συνδέσεις: Parts: Αποσυνδέσεις: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Λήξη χρόνου σύνδεσης Error: ' Σφάλμα: ' Redirect to Επαναδρομολόγηση στο Password - Κωδικός - Please enter your password Eισάγετε τον κωδικό σας Wrong password Λάθος κωδικός OP Force Move Εξαναγκασμένη μετακίνηση από τον διαχειριστή Please enter host Εισάγετε το όνομα του κόμβου Please enter a message Εισάγετε ένα μήνυμα Redirect disabled Η επαναδρομολόγηση είναι απενεργοποιημένη OP Kick Σας έδιωξε ο διαχειριστής Please enter a reason Εισάγετε έναν λόγο User: Χρήστης: Connected Συνδέθηκε Disconnected Αποσυνδέθηκε Use password from profile Χρήση κωδικού από προφίλ Password from profile is empty Κενός κωδικός στο προφίλ No profile found for this hub Δεν βρέθηκε προφίλ για αυτόν τον κόμβο users χρήστες Hubname change: Αλλαγή ονόματος κόμβου: User rejoin the hub. Ο χρήστης επανασυνδέθηκε στον κόμβο. User left the hub. Ο χρήστης αποσυνδέθηκε από τον κόμβο. Hub Κόμβος We left the hub. Αποσυνδεθήκαμε από τον κόμβο. Joins: Συνδέσεις: Parts: Αποσυνδέσεις: Chat List Λίστα Συζητήσεων Line is encrypted. Η γραμμή κρυπτογραφείται. Line is not encrypted. Η γραμμή δεν κρυπτογραφείται. Your Nick is already in use. Το Ψευδώνυμό σας χρησιμοποιείται ήδη. Sorry, this client works in passive mode Συγνώμη, το πρόγραμμα αυτό βρίσκεται σε παθητική λειτουργία (passive mode) Disconnect. Αποσύνδεση. Connect. Σύνδεση. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK Εντάξει Cancel Ακύρωση Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Στήλες Any Οποιοσδήποτε DCDebug Send error Σφάλμα αποστολής Could not send the data. Error '%1'. Δεν ήταν δυνατό να σταλούν τα δεδομένα. Σφάλμα '%1'. Send Αποστολή Thanks for your help. Ευχαριστούμε για την βοήθειά σας. Save error Σφάλμα αποθήκευσης Can't open file '%1' for writing. Δεν ήταν δυνατό να ανοιχθεί το αρχείο '%1' για εγγραφή. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Επιλέξτε όνομα αρχείου προς αποθήκευση Text (*.txt) DCDialogAbout About Σχετικά OK Εντάξει Authors Συγγραφείς License Άδεια χρήσης Sponsor Χορηγός DCGUI-QT - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de DCGUI-QT - Πρόγραμμα διαμοιραζμού αρχείων για το Direct Connect (C) 2001-2004 Mathias Küster Ηλεκτρονική διεύθυνση: http://dcgui.berlios.de Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de Valknut - Πρόγραμμα διαμοιρασμού αρχείων για το Direct Connect (C) 2001-2004 Mathias Küster Ηλεκτρονική διεύθυνση: http://dcgui.berlios.de Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Λήψη αρχείου Download mode? Multi Return Single Esc Download all files in this mode DCDialogChat &Send &Αποστολή DCDialogChat DCDialogClient User Χρήστης Nick Ψευδώνυμο Comment Σχόλια Speed Ταχύτητα EMail Ηλεκτρονική διεύθυνση 0 0 Share Διαμοιραζόμενα αρχεία Chat List Λίστα Συζητήσεων ... ... Tag Ετικέτα User(s) Χρήστης/ες DCDialogClient Διάλογος του DCGUI IP IP Lock/PK Κλείδωμα Supports Υποστηρίζει DCDialogConnectionManager Connection Σύνδεση DCDialogDebug DCGUI Crash Handler Διαχειριστής Σφαλμάτων του DCGUI Send bugreport. Αποστολή αναφοράς σφάλματος. Exit. Έξοδος. Save to file. Αποθήκευση σε αρχείο. Comment Σχόλια &Save &Αποθήκευση S&end Α&ποστολή E&xit &Εξοδος Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Καμία Send Αποστολή Receive Both Και τις δύο OK Εντάξει Cancel Ακύρωση malloc info DCDialogEditServer Settings Ρυθμίσεις Name Όνομα Host Κόμβος Description Περιγραφή Password Κωδικός DCDialogEditServer Επεξεργασία Διακομιστή Profile Προφίλ Auto Connect Αυτόματη Σύνδεση Nick Ψευδώνυμο Secure Socket Layer Ασφαλής Σύνδεση (SSL) &Cancel &Ακύρωση &OK &Εντάξει &Profile &Προφίλ Tag Ετικέτα EMail Ηλεκτρονική διεύθυνση Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Τροποποίηση φακέλου διαμοιραζομένων αρχείων Alias Ψευδώνυμο Path Φάκελος &Cancel &Ακύρωση &OK &Εντάξει DCDialogEditTransfer Edit Transfer Τροποποίηση Μεταφοράς Settings Ρυθμίσεις Nick Ψευδώνυμο Hub name Όνομα κόμβου Hub address Διεύθυνση κόμβου Known hubs Γνωστοί κόμβοι &Cancel &Ακύρωση &OK &Εντάξει DCDialogFileBrowser New Column Νέα στήλη Name Όνομα Size Μέγεθος Open Άνοιγμα Save Αποθήκευση Encoding: Κωδικοποίηση: Type Τύπος TTH TTH Folder Φάκελος Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Πληροφορίες Μεταφοράς Αρχείου File Αρχείο Size Μέγεθος Done Εντάξει Hash Hash Sources Πλήθος πηγών DCDialogForceMove OP Force Move Εξαναγκασμένη μετακίνηση από τον διαχειριστή Please enter a host Please enter a message Εισάγετε ένα μήνυμα OK Εντάξει Cancel Ακύρωση DCDialogGetURL Get URL Λήψη Διεύθυνσης &Cancel &Ακύρωση DCDialogHubFilter Hub Filter Φίλτρο κόμβων Filter Φίλτρο Min. User Ελάχιστος αριθμός χρηστών Contains Περιέχει Name Όνομα Server Διακομιστής Description Περιγραφή Settings Ρυθμίσεις &OK &Εντάξει &Cancel &Ακύρωση DCDialogHubListManager Hub List Λίστα Κόμβων Public Δημόσιοι Name Όνομα Server Διακομιστής Description Περιγραφή User Χρήστης double click to hide the toolbar διπλό κλικ για απόκρυψη της μπάρας edit filter τροποποίηση φίλτρου delete filter διαγραφή φίλτρου Filter Φίλτρο update public hublist ενημέρωση λίστας δημοσίων κόμβων add filter προσθήκη φίλτρου reload public hublist επαναφόρτηση λίστας δημοσίων κόμβων double click to show the toolbar διπλό κλικ για εμφάνιση της μπάρας Bookmarks Αγαπημένα connect σύνδεση Users Χρήστες Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Αποθήκευση Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Προσθήκη Edit bookmark. Edit Επεξεργασία Remove bookmark. Remove Αφαίρεση DCDialogHubProfile Profile Προφίλ Settings Ρυθμίσεις Password Κωδικός Auto Connect Αυτόματη Σύνδεση Hub profile editor Επεξεργαστής προφίλ κόμβου Nick Ψευδώνυμο &OK &Εντάξει &Cancel &Ακύρωση Tag Ετικέτα EMail Ηλεκτρονική διεύθυνση Description Περιγραφή Secure Socket Layer Ασφαλής Σύνδεση (SSL) Delete Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Αποτελέσματα Nick Ψευδώνυμο File Αρχείο Size Μέγεθος Slot Θύρες Hub Κόμβος Path Φάκελος Log Καταγραφή Search Αναζήτηση Results: Αποτελέσματα: Connected Hubs Συνδεδεμένοι Κόμβοι Bookmark Hubs Αγαπημένοι Κόμβοι Filter Φίλτρο Type Τύπος At Least Τουλάχιστον At Most Το πολύ KB KB MB MB Any Οποιοσδήποτε Compressed Συμπιεσμένο Document Κείμενο Executable Εκτελέσιμο Picture Εικόνα Video Βίντεο Folder Φάκελος Hub Search Αναζήτηση στον Κόμβο Host Διεύθυνση GB GB Free Slots Ανοικτές Θύρες Max Free Slots (0=off) Μέγιστος Αριθμός Ανοικτών Θυρών (0=ανενεργό) Exact Ακριβώς B B 0/0 0/0 0 0 Search in path+file name only Αναζήτηση μόνο στο όνομα φακέλου+όνομα αρχείου Hubs Κόμβοι Hub Options Επιλογές Κόμβων Connected Hub Συνδεδεμένοι Κόμβοι Refresh Ενημέρωση Public Hubs Δημόσιοι Κόμβοι Expert Για ειδικούς User Χρήστης Reset Επαναφορά Clients Προγράμματα Live filters Ενεργά φίλτρα Include: Συμπεριέλαβε: Exclude: Απέκλεισε: Apply Εφαρμογή Mode Λειτουργία Add Προσθήκη User/File Χρήστης/Αρχείο Search for a user or a file. Αναζήτηση για χρήστη ή αρχείο. Start Έναρξη Start the search. Έναρξη της αναζήτησης. Add a search to the searchqueue Προσθήκη αναζήτησης στη λίστα αναζητήσεων Filtered Hubs Φιλτραρισμένοι Κόμβοι Multi Search Πολλαπλή Αναζήτηση Enable Tag Ενεργοποίηση Ετικέτας Audio Ήχος Hash Hash TTHash TTHash KiB KiB MiB MiB GiB GiB Total Slots Purge Clear the search history Count Μετρητής Ready Overall search status Clear search string and set search size, size mode and file type to default TTH TTH Any size At least At most Maximum results Unlimited IP IP DCDialogMagnet Magnet Link Details Link TTH TTH Name Όνομα Size Μέγεθος Exact size Action Ενέργεια Start search Add to download queue Do nothing Do the same action next time without asking OK Εντάξει Cancel Ακύρωση DCDialogMessage DCDialogMessage Μύνημα του DCGUI Do not show this again. Να μην εμφανιστεί ξανά. DCDialogOptions Options Επιλογές Identify Ταυτότητα Χρήστη Information Πληροφορίες E-Mail: Ηλεκτρονική διεύθυνση: Nick: Ψευδώνυμο: Description: Περιγραφή: Speed: Ταχύτητα: Anti-Spam (email at home dot com) Ηλεκτρονική διεύθυνση της μορφής (user at company dot com) Transfer Μεταφορά Share Folders Διαμοιραζόμενοι Φάκελοι Download Folder Φάκελος Εισερχομένων Upload Options Επιλογές Αποστολής Connection Σύνδεση Settings Ρυθμίσεις Mode Λειτουργία Active Mode Ενεργή Λειτουργία Passive Mode Παθητική Λειτουργία Passive Mode Settings Ρυθμίσεις Παθητικής Λειτουργίας Active Mode Settings Ρυθμίσεις Ενεργής Λειτουργίας TCP Listen Port: Θύρα Αναμονής Συνδέσεων TCP: 412 412 Hub Search Αναζήτηση Στον Κόμβο UDP Listen Port: Θύρα Αναμονής Συνδέσεων UDP: Test Δοκιμή GUI Περιβάλλον GUI Options Επιλογές Περιβάλλοντος Other Λοιπά Other Options Λοιπές Επιλογές Hublist Λίστα Κόμβων Store local Τοπική Αποθήκευση Theme Θέμα Language File Αρχείο Γλώσσας Reconnect Counter (0=off) Μετρητής Επανασύνδεσης (0=ανενεργός) Reconnect Timeout (sec.) Λήξη Χρόνου Επανασύνδεσης (δευτερ.) Allow Force Move Επέτρεψε Εξαναγκασμένη Μετακίνηση Source Url's Διευθύνσεις Πηγής URL Διεύθυνση Max. upload slots (0=off) Θύρες Αποστολής (0=Καμία) Application Font Γραμματοσειρά Προγράμματος Maximal upload connections. Μέγιστος αριθμός συνδέσεων αποστολής. Transfer Request Timings Χρονισμοί Αιτήσεων Μεταφοράς Resend Timeout (sec.) Χρόνος για Επαναποστολή (δευτερ.) Response Timeout (sec.) Λήξη Χρόνου για Απάντηση (δευτερ.) Hub Connections Συνδέσεις σε Κόμβους Sound Ήχος External Player Χρήση Άλλου Προγράμματους Ήχου Chat Συζήτηση Units Μονάδες Auto Αυτόματα Byte Byte GByte GByte KByte KByte MByte MByte General Γενικά Disable Sound Απενεργοποίηση Ήχων Play a sound when receiving a message Ήχος κατά τη λήψη μηνύματος Play a sound when disconnecting from a hub Ήχος κατά την αποσύνδεση από έναν κόμβο Play a sound when receiving first message Ήχος κατά τη λήψη του πρώτου μηνύματος Play a sound when sending a message Ήχος κατά τη αποστολή μηνύματος Play a sound when connecting to a hub Ήχος κατά την σύνδεση σε έναν κόμβο Disable sound when away Απενεργοποίηση των ήχων όταν δεν βρίσκομαι στον υπολογιστή Player Πρόγραμμα Sound Files Αρχεία Ήχων Log Καταγραφή Timestamp Σφραγίδα Χρόνου Private Chat Ιδιωτική Συζήτηση Hub Chat Συζήτηση Κόμβου Download Queue Λίστα Λήψης Save Queue in minutes (0=off) Αποθήκευση της λίστας λήψης κάθε (0=ανενεργή) λεπτά Move Finished Files to this Folder (empty = disabled) Μετακίνηση των ολοκληρωμένων αρχείων στον φάκελο (κενό = ανενεργό) No multi hub search ! No incoming connections ! Χωρίς αναζήτηση σε πολλαπλούς κόμβους ! Χωρίς εισερχόμενες συνδέσεις ! Send warn message to remote user on active mode request Αποστολή ενημερωτικού μηνύματος σε χρήστες που ζητούν ενεργητική λειτουργία Show Status Messages Εμφάνιση Μηνύματος Κατάστασης Open Private Chat Window Άνοιγμα Παραθύρου Ιδιωτικής Συζήτησης Transfer Options Επιλογές Μεταφοράς Transfer View Εμφάνιση Μεταφοράς Chunk Percent Ποσοστό Τμήματος File Percent Ποσοστό Αρχείου Chunk Size Μέγεθος Τμήματος File Size Μέγεθος Αρχείου Search Nick: Αναζήτηση Ψευδωνύμου: Chat options Επιλογές Συζήτησης upload αποστολή download λήψη Add Description Tag (<DCGUI ....>) Πρόσθεσε Ετικέτα Περιγραφή (<DCGUI ....>) Folder Φάκελος New Column Νέα Στήλη Away Message: Μήνυμα Όταν Είστε Απομακρυσμένοι: Your line speed. Η ταχύτητά σας. Your nick. Το ψευδώνυμό σας. The nick for hub searches. Το ψευδώνυμο για αναζητήσεις στον κόμβο. Your EMail. Η ηλεκτρονική σας διεύθυνση. Enable/Disable the Anti-spam option. Ανεργοποίηση/Απενεργοποίηση επιλογής προστασίας από ανεπιθύμητη αλληλογραφία. A little description. Μια μικρή περιγραφή. Add a tag to the description that show some information from you. Προσθήκη ετικέτας στην περιγραφή που εμφανίζει κάποιες πληροφορίες για εσάς. The tcp listen port for incoming connections. Η θύρα αναμονής εισερχομένων συνδέσεων τύπου tcp. The udp listen port for incoming search results. Η θύρα αναμονής εισερχομένων συνδέσεων τύπου udp. Select a interface. Επιλέξτε διασύνδεση. Get the ip from the host. Λάβε την διεύθυνση από τον διακομιστή. The time between a reconnect. Ο χρόνος που μεσολαβεί μέχρι την επανασύνδεση. How often we reconnect to a hub. Πόσο συχνά θα επανασυνδεθεί σε ένα κόμβο. Rebuild your sharelist. Ενημέρωση της λίστας των διαμοιραζόμενων φακέλων. Add a folder to your sharelist. Προσθήκη φακέλου στη λίστα διαμοιραζόμενων φακέλων. Remove a folder from your sharelist. Αφαίρεση φακέλου από τη λίστα διαμοιραζόμενων φακέλων. Show some information about your sharelist. Εμφάνιση πληροφοριών σχετικά με τη λίστα διαμοιραζόμενων φακέλων. Browse your own share list. Εμφανίζει την λίστα των διαμοιραζόμενων αρχείων σας. Time to wait for a transfer response from the remote user. Χρόνος αναμονής για απάντηση από τον απομακρυσμένο χρήστη. Time to wait before a new transfer request is send to the remote user. Χρόνος αναμονής πριν η αίτηση έναρξης νέας μεταφοράς αποσταλλεί στον απομακρυσμένο χρήστη. Test the new theme. Δοκιμή του νέου θέματος. Open the chat window on incoming messages. Άνοιξε το παράθυρο συζήτησης σε εισερχόμενο μήνυμα. Enable emoticons in chat Ενεργοποίηση των εικονιδίων συναισθημάτων (emoticons) στις συζητήσεις Data Folder Φάκελος Δεδομένων Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Messages Μηνύματα Query on exit Ερώτηση πριν από την Έξοδο Logfile Αρχείο Καταγραφής Logfile enabled Ενεργοποίηση Καταγραφής Security Ασφάλεια Flood Protection Προστασία Από Πλημμύρα Μηνυμάτων Kick Message Μήνυμα Δίωξης Private Address Space (rfc1918) Ιδιωτικός Χώρος Διευθύνσεων (rfc1918) Ignore private address space connections Αγνόησε συνδέσεις από τον ιδιωτικό χώρο διευθύνσεων Query Ερώτηση Client Πρόγραμμα User-List right alignment Λίστα Χρηστών στην δεξιά μεριά Don't Display Messages after X retry (0=off) Μην εμφανίζεις μηνύματα μετά την χ προσπάθεια (0=απενεργοποιημένο) Kick the user for flooding (only for Operators) Διώξε τον χρήστη που πλημμυρίζει με μηνύματα (μόνο για Διαχειριστές) Show send button Εμφάνιση κουμπιού αποστολής Dynamic upload rate Δυναμικός ρυθμός αποστολής Hide popups of more than Απόκρυψη μηνυμάτων με περισσότερες από Send message with Στείλε μήνυμα με lines (0=off) γραμμές (0=απενεργοποιημένο) Browser Browser Use tab for every chat window Ξεχωριστή ετικέτα για κάθε παράθυρο συζήτησης Max. paragraphs (0=off) Μέγιστος αριθμός γραμμών για κάθε μήνυμα (0=ανενεργό) Client options Επιλογές Προγράμματος Show client windows minimized Εμφάνιση ελαχιστοποιημένων παραθύρων συζήτησης Max. uploads to user (0=off) Μέγιστος αριθμός αποστολών ανα χρήστη (0=ανενεργό) Color Χρώμα Transfer Cert/Key Πιστοποιητικό/Κλειδί Μεταφοράς User quitting hub Ο χρήστης αποσυνδέεται από τον κόμβο If user quits hub, stop following transfers Εάν ο χρήστης αποσυνδεθεί από τον κόμβο, σταμάτα να ακολουθείς μεταφορές Upload Αποστολής Both Και τις δύο Download Λήψης None Καμία Auto-Search Αυτόματη Αναζήτηση Auto-Search for new sources Αυτόματη Αναζήτηση για νέες πηγές Download Rate Single Ρυθμός Λήψης του ενός Download Rate Multi Ρυθμός Λήψης όλλων Remaining Time Single Χρόνος που απομένει για τον έναν Remaining Time Multi Χρόνος που απομένει για όλους Max. rate KB/s (0=off) Μέγιστος ρυθμός σε KB/δευτερόλεπτο (0=ανενεργό) Path Φάκελος Alias Ψευδώνυμο Edit a folder from the sharelist. Τροποποίησε έναν φάκελο που βρίσκεται στη λίστα διαμοιραζόμενων φακέλων. Open File Dialog. Παράθυρο Ανοίγματος Αρχείου. Add a URL to the list. Προσθήκη Διεύθυνσης στη λίστα. Remove a URL from the list. Αφαίρεση διεύθυνσης από τη λίστα. Enable logging Ενεργοποίηση καταγραφής Append date to log file name Προσθήκη ημερομηνίας στο όνομα του αρχείου καταγραφής Nick name filter Φίλτρο Ψευδωνύμων Enable nick name filter Ενεργοποίηση φίλτρου ψευδωνύμων Disable logging for public chat Απενεργοποίηση καταγραφής για τη δημόσια συζήτηση Append hub name to log file name Προσθήκη ονόματος κόμβου στο όνομα του αρχείου καταγραφής Append hub host to log file name Προσθήκη διεύθυνσης κόμβου στο όνομα του αρχείου καταγραφής &Save &Αποθήκευση &Cancel Α&κύρωση Forward private to public chat Προώθησε την ιδιωτική συζήτηση στην δημόσια Away Prefix: Πρόθεμα Απομάκρυνσης: Select Language. Επιλογή Γλώσσας. Recreate every hour (0=off) Ενημέρωση κάθε ώρα (0=ανενεργό) Check and recreate sharelist on startup Έλεγχος και ενημέρωση της λίστα διαμοιραζομένων αρχείων κατά την εκκίνηση seconds δευτερόλεπτα Away after Απομακρυσμένος μετά από Auto Away Mode Αυτόματη Λειτουργία Απομάκρυνσης Ignore messages to offline users Αγνόησε μηνύματα προς αποσυνδεδεμένους χρήστες Ignore messages from offline users Αγνόησε μηνύματα από αποσυνδεδεμένους χρήστες Show joins and parts Εμφάνισε συνδέσεις και αποσυνδέσεις χρηστών Columns Στήλες Comment Σχόλια Speed Ταχύτητα EMail Ηλεκτρονική διεύθυνση Share Διαμοιραζόμενα αρχεία Photo Φωτογραφία Query on File Delete Ερώτηση πριν από την Διαγραφή Tag Ετικέτα IP, Hostname or Interface IP, Διεύθυνση ή Διασύνδεση IP or Hostname IP ή Διεύθυνση Network Interface Διασύνδεση Listen on IP Αναμμένει συνδέσεις στην IP IP IP Lock PK Κλείδωμα Supports Υποστηρίζει Get Internet IP Λήψη της Internet IP Get Interface Λήψη Διασύνδεσης Update every hour (0=off) Ενημέρωση κάθε ώρα (0=ανενεργό) Hub Lists Λίστες Κόμβων Disable hash list Απενεργοποίηση λίστας hash GiB GiB KiB KiB MiB MiB Edit hublist url. Τροποποίηση διεύθυνσης Λίστας Κομβων. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Όνομα Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Εξερευνητής αρχείων Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Φυσιολογικό Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect σύνδεση Public Δημόσιοι Name Όνομα Server Διακομιστής Description Περιγραφή User Χρήστης Bookmarks Αγαπημένα Hub List Λίστα Κόμβων Filter Φίλτρο double click to hide the toolbar διπλό κλικ για απόκρυψη της μπάρας edit filter τροποποίηση φίλτρου delete filter διαγραφή φίλτρου update public hublist ενημέρωση λίστας δημοσίων κόμβων add filter προσθήκη φίλτρου reload public hublist επαναφόρτηση λίστας δημοσίων κόμβων double click to show the toolbar διπλό κλικ για εμφάνιση της μπάρας DCDialogSplash Dcgui DCGui Valknut Valknut DCDialogSpy Spy Κατάσκοπος Spy On/Off Κατάσκοπος Ενεργός/Ανενεργός Clear Καθαρισμός Text Κείμενο Count Μετρητής Statistic Στατιστικά Active: Ενεργή: 0 0 Reject: Απόρριψη: Results: Αποτελέσματα: Search Error: Σφάλμα Αναζήτησης: Result Error: Σφάλμα Αποτελέσματος: Passive: Παθητική: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Λίστα Μεταφοράς Nick Ψευδώνυμο State Κατάσταση Transfer Μεταφορά Wait Αναμονή Log Καταγραφή Slots Θύρες Hub Κόμβος Files Αρχεία Local File / Nick Τοπικό Αρχείο / Ψευδώνυμο Size / Hub Μέγεθος / Κόμβος Remote File Απομακρυσμένο Αρχείο Local File Τοπικό Αρχείο File Name Όνομα Αρχείου Hub/File Κόμβος / Αρχείο IP/Size IP / Μέγεθος TTH TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK Εντάξει Cancel Ακύρωση DCDialogUpdateManager Update Manager Διαχειριστής Ενημερώσεων Update Ενημέρωση Check update Έλεγχος ενημερώσεων DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Συζήτηση PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Όνομα Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK Εντάξει Cancel Ακύρωση DCDialogUserCommandLines User Command Lines For On Use for all nicks OK Εντάξει Cancel Ακύρωση DCDialogUsersList User Χρήστης Friend-List Λίστα Φίλων Users List Photo Φωτογραφία Slot Θύρες Ignore DCEditServer Please enter a hubname. Εισάγετε το όνομα του κόμβου. Please enter a hubhost. Εισάγετε το όνομα τη διεύθυνση του κόμβου. DCFileBrowser Items Αντικείμενα Files Αρχεία Total Σύνολο Directories Φάκελοι Root Directory Αρχικός Φάκελος <wrong length> <λάθος μέγεθος> file αρχείο Select destination Επιλεγμένος προορισμός Select a filename Επιλέξτε όνομα αρχείου open filelist dialog άνοιξε το παράθυρο λίστας διαμοιραζομένων Choose a file Επέλεξε ένα αρχείο save file dialog παράθυρο αποθήκευσης αρχείου Choose a filename to save under Επιλέξτε όνομα αρχείου προς αποθήκευση Filebrowser Εξερευνητής αρχείων Folder Φάκελος Download contents? Download the contents of " Failed to load filelist Unable to load OK Εντάξει Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Αρχείο does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Καμία Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Λήψη αρχείου Resume Συνέχεια Overwrite Επικάλυψη Cancel Ακύρωση Not connected to required hub! Δεν είστε συνδεδεμένοι στο ζητούμενο κόμβο! Connect Σύνδεση (choose an existing download to add to) (επιλέξτε μια υπάρχουσα λήψη για προσθήκη) A same file is already in the queue! Ένα ίδιο αρχείο υπάρχει ήδη στη λίστα προς λήψη! Start a multi-download Εκίνηση πολλαπλής λήψης File is already in the queue but not mark as a multi-download! Το αρχείο υπάρχει ήδη στη λίστα προς λήψη και δεν είναι σημειωμένο για πολλαπλή-λήψη! File is already in the queue with a different size! Το αρχείο υπάρχει ήδη στη λίστα προς λήψη και έχει διαφορετικό μέγεθος! File already downloaded! Το αρχείο έχει ληφθεί ήδη! File already exists! Το αρχείο υπάρχει ήδη! You can start a multi-download! Μπορείτε να εκκινήσετε μια πολλαπλή-λήψη! Do you want to download all files in this mode? Επιθυμείτε να λαμβάνεται όλα τα αρχεία σε αυτή τη λειτουργία? Repair File Επισκευή Αρχείου Enter byte range (m-n) Εισάγετε την θέση σε byte (χ-ψ) Repair BIN Sectors Επισκευή BIN Τομέων Enter sector range (m[-n]) Εισάγετε την θέση του τομέα (χ[-ψ]) DCFileTransferInfo File Transfer Info Πληροφορίες Μεταφοράς Αρχείου DCGuiApp Options Επιλογές &Options Ε&πιλογές Ctrl+O Ctrl + O Open option dialog Άνοιξε το παράθυρο επιλογών Exit Εξοδος Ctrl+Q Ctrl + Q Quits the application Τερματίζει την εφαρμογή Toolbar Γραμμή Εργαλείων Tool&bar Γρα&μμή Εργαλείων Enables/disables the toolbar Ενεργοποιεί/Απενεργοποιεί την γραμμή εργαλείων Statusbar Γραμμή Κατάστασης &Statusbar Γραμμή &Κατάστασης Enables/disables the statusbar Ενεργοποιεί/Απενεργοποιεί την γραμμή κατάστασης Cascade Με Επικάλυψη &Cascade Με Επι&κάλυψη Cascades all windows Με επικάλυψη όλων των παραθύρων Ctrl+S Ctrl + S Transfer List Λίστα Μεταφοράς &Transfer List Λίστα &Μεταφοράς Ctrl+T Ctrl + T Show Transfer List Εμφάνιση Λίστας Μεταφοράς Hub Search Αναζήτηση στον Κόμβο Show Hub Search Εμφάνιση Αναζήτησης στον Κόμβο About Σχετικά &About... &Σχετικά... What's &This &Τί είναι &File Α&ρχείο &View &Προβολή &Action Ε&νέργεια &Window Παρά&θυρο &Help &Βοήθεια Ready. Έτοιμο. Quit... Έξοδος... Open options dialog... Άνοιξε το παράθυρο επιλογών... Exiting application... Τερματίσμός της εφαρμογής... Toggle toolbar... Ενεργοποιεί/Απενεργοποιεί την γραμμή εργαλείων... Toggle statusbar... Ενεργοποιεί/Απενεργοποιεί την γραμμή εργαλείων... Show/hide transfer list window ... Εμφάνιση/Κρύψιμο Λίστας Μεταφοράς... Show/hide hub search window ... Εμφάνιση/Κρύψιμο Αναζήτησης στον Κόμβο... Normal Φυσιολογικό &Normal &Φυσιολογικό Ctrl+N Ctrl + N Away Απομακρυσμένος από τον υπολογιστή &Away Απομακρυσμένος από τον &υπολογιστή Ctrl+A Ctrl + A Hub List Λίστα Κόμβων Show Hub List Εμφάνιση Λίστας Κόμβων Show/hide hub list window ... Εμφάνιση/Κρύψιμο Λίστας Κόμβων... H&ub List &Λίστα Κόμβων Ctrl+U Ctrl + U Minimize Ελαχιστοποίηση &Minimize Ε&λαχιστοποίηση Action Ενέργεια Quick Options Γρήγορη Επιλογή Quick options Γρήγορη επιλογή F12 F12 Download mode: Ask Μέθοδος Λήψης: Να Γίνεται Ερώτηση Download mode: Single Μέθοδος Λήψης: Μόνο Από Έναν Download mode: Multi Μέθοδος Λήψης: Πολλαπλή-Λήψη Spy Κατάσκοπος Show Spy Εμφάνιση Κατασκόπου Show/hide spy window ... Εμφάνιση/Κρύψιμο Κατασκόπου... Users Χρήστες Ctrl+F Ctrl + F Do you really want to quit? Θέλετε σίγουρα να τερματιστεί η εφαρμογή? Exiting application... aborted Τερματίσμός της εφαρμογής...εγκαταλήφθηκε Show/hide users window ... Εμφάνιση/Κρύψιμο Λίστας Χρηστών... Away &Mode Λειτουρ&γία Απομάκρυνσης Tile &Horizontally Παράλληλα στον ορι&ζόντιο άξωνα Reload Plugins Επαναφόρτωση των Plugins &Reload Plugins Επαναφόρτωση των &Plugins Dock Προσκόλληση &Dock Προσκό&λληση Dock the application Προσκόλληση της εφαρμογής στη γραμμή εργασιών Hub &Search Αναζήτη&ση στον Κόμβο S&py Κατάσκοπο&ς Ctrl+P Ctrl + P Dock/Undock application... Προσκόλληση/Αποκόλληση της εφαρμογής... Recreate share Ενημέρωση των διαμοιραζόμενων αρχείων Refresh share in progress. Τα διαμοιραζόμενα αρχεία ενημερώνονται. Exit Quits the application. Εξοδος Τερματίζει την εφαρμογή. Toolbar Enables/disables the toolbar. Γραμμή Εργαλειών Ενεργοποιεί/Απενεργοποιεί την γραμμή εργαλείων. Statusbar Enables/disables the statusbar. Γραμμή Κατάστασης Ενεργοποιεί/Απενεργοποιεί την γραμμή κατάστασης. Dock Dock the application. Προσκόλληση Προσκολλά την εφαρμογή στην γραμμή εργασιών. Cascade Cascades all windows. Με επικάλυψει Τοποθετεί τα παράθυρα έτσι ώστε να επικαλύπτουν το ένα το άλλο. Tiles all windows horizontally. Τοποθετεί τα παράθυρα έτσι ώσε να είναι παράλληλα στον οριζόντιο άξωνα. Tile Horizontally Tiles all windows horizontally. Παράλληλα στον οριζόντιο άξωνα Τοποθετεί τα παράθυρα έτσι ώσε να είναι παράλληλα στον οριζόντιο άξωνα. Minimize all windows. Ελαχιστοποίηση όλων των παραθύρων. Minimize Minimize all windows. Ελαχιστοποίηση όλων των παραθύρων. Ελαχιστοποιεί όλα τα παράθυρα. Close chat windows. Κλείσιμο των παραθύρων συζήτησης. Close all chat windows. Κλείσιμο όλων των παραθύρων συζήτησης. Close chat windows Close all chat windows. Κλείσιμο των παραθύρων συζήτησης. Κλείσιμο όλων των παραθύρων συζήτησης. Close disconnected hubs. Κλείσιμο των αποσυνδεδεμένων κόμβων. Close all disconnected hub windows. Κλείσιμο όλων των παραθύρων αποσυνδεδεμένων κόμβων. Close disconnected hubs Close all disconnected hub windows. Κλείσιμο των αποσυνδεδεμένων κόμβων. Κλείσιμο όλων των παραθύρων αποσυνδεδεμένων κόμβων. Show Hub List. Εμφάνιση Λίστας Κόμβων. Show Transfer List. Εμφάνιση Λίστας Μεταφοράς. Show Hub Search. Εμφάνιση Αναζήτησης στον Κόμβο. Show users: search tab and friends tab. Εμφάνιση χρηστών: ετικέτα αναζήτησης και ετικέτα φίλων. Set away mode. Καθορισμός Λειτουργίας Απομάκρυνσης. About the application. Σχετικά με την εφαρμογή. About About the application. Σχετικά Σχετικά με την εφαρμογή. Support Υποστήριξη &Support... &Υποστήριξη... Connect to DCGUI-QT hub Συνδεδεμένο με τον κόμβο του DCGUI-QT Support Connect to the DCGUI-QT hub. Υποστήριξη Συνδέεται με τον κόμβο του DCGUI-QT. Refresh share finished. Η ενημέρωση διαμοιραζόμενων αρχειων τελείωσε. Refresh share already in progress. Τα διαμοιραζόμενα αρχεία ενημερώνονται ακόμα. RX/TX Traffic. Λειφθέντα/Απεσταλμένα. Available disc space. Διαθέσιμος χώρος στο σκληρό δίσκο. Tile Vertically Παράλληλα στον κάθετο άξωνα &Tile Vertically Παράλληλα στον κά&θετο άξωνα Tiles all windows vertically Τοποθετεί τα παράθυρα έτσι ώσε να είναι παράλληλα στον κάθετο άξωνα Tile Vertically Tiles all windows vertically. Παράλληλα στον κάθετο άξωνα Τοποθετεί τα παράθυρα έτσι ώσε να είναι παράλληλα στον κάθετο άξωνα. Filelist browser Εξερευνητής αρχείων Open filelist browser Εμφάνιση εξερευνητή αρχείων Latest release Τελευταία έκδοση &Latest release... &Τελευταία έκδοση... Latest release Show latest release. Τελευταία έκδοση Εμφανίζει την τελευταία έκδοση. Can't get release info from server Δεν ήταν δυνατό να ληφθούν οι πληροφορίες σχετικά με την τελευταία έκδοση latest release is: Η τελευταία έκδοση είναι: Latest release... Τελευταία έκδοση... Show update manager Εμφάνιση διαχειριστή ενημερώσεων Show/hide update manager window ... Εμφάνιση/Απόκρυψη παράθυρο διαχειριστή ενημερώσεων ... Warning license file not found ! Προσοχή, δεν βρέθηκε το αρχείο της άδειας χρήσης ! Tabbar Γραμμή Ετικετών Enables/disables the tabbar Ενεργοποιεί/Απενεργοποιεί την γραμμή ετικετών Tabbar Enables/disables the tabbar. Γραμμή Ετικετών Ενεργοποιεί/Απενεργοποιεί την γραμμή ετικετών. Show Search Spy. Εμφάνιση του Κατασκόπου Αναζήτησης. Tab Bar Γραμμή Ετικετών Toggle tabbar... Ενεργοποιεί/Απενεργοποιεί την γραμμή ετικετών... Connect to Valknut hub Σύνδεση στον κόμβο του Valknut Support Connect to the Valknut hub. Τεχνική Υποστήριξη Σύνδεση με τον κόμβο του Valknut. Filelist browser local Εξερευνητής διαμοιραζομένων αρχείων Open local filelist browser Εμφάνιση Εξερευνητή διαμοιραζομένων αρχείων &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Update Manager Διαχειριστής Ενημερώσεων Ratio: Overall: (Up: , Down: ) This session: Valknut Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Δημόσιοι Bookmarks Αγαπημένα Add Bookmark Προσθήκη αγαπημένου κόμβου Error Σφάλμα Please enter a hubname. Εισάγετε το όνομα του κόμβου. Please enter a hubhost. Εισάγετε το όνομα τη διεύθυνση του κόμβου. Edit Bookmark Επεξεργασία αγαπημένου κόμβου Remove bookmarks Αφαίρεση αγαπημένου κόμβου You are sure ? Είστε σίγουροι? Remove Αφαίρεση Cancel Ακύρωση Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Save profile Αποθήκευση προφίλ Do you want to save your changes? Επιθυμείτε να σώσετε τις αλλαγές? Save Αποθήκευση Cancel Ακύρωση Are you sure? Delete profile for DCHubSearch Connect to local udp port failed. ( Σύνδεση στην τοπική θύρα udp απέτυχε. ( No hubs found. Δεν βρέθηκαν κόμβοι. Hub Search Error Σφάλμα Αναζήτησης στον Κόμβο No connected hubs found. Δεν βρέθηκαν συνδεδεμένοι κόμβοι. Select download folder Επιλέξτε φάκελο λήψης Please select a connected hub. Επιλέξτε ένα συνδεδεμένο κόμβο. Select file for Επιλέξτε αρχείο προς USER ΧΡΗΣΤΗΣ FILE ΑΡΧΕΙΟ Not connected to required hub! Δεν είστε συνδεδεμένοι στο ζητούμενο κόμβο! Connect Σύνδεση Cancel Ακύρωση save file dialog παράθυρο αποθήκευσης αρχείου Choose a filename to save under Επιλέξτε όνομα αρχείου προς αποθήκευση open file dialog παράθυρο ανοίγματος αρχείου Choose a file to open Επιλέξτε όνομα αρχείου προς άνοιγμα Start Έναρξη Stop Τερματισμός Filelist download Λήψη λίστας διαμοιραζόμενων αρχείων External search is already running! Εξωτερική αναζήτηση ακόμα ενεργή! Please add a search! Προσθέστε κριτήρια αναζήτησης! Multi Search only work in active mode! Η πολλαπλή αναζήτηση είναι διαθέσιμη μόνο στην ενεργητική λειτουργία! Folder Φάκελος Unknown None Καμία Directory File Αρχείο Search ended with %1 results %1 results were filtered on ναι Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions Select download folder Επιλέξτε φάκελο λήψης Select share folder Επιλέξτε φάκελο προς διαμοίραση Select language file Επιλέξτε αρχείο γλώσσας HubList URL Διεύθυνση Λίστας Κομβων Please enter a url Εισάγετε μια διεύθυνση Share list not available Λίστα διαμοιρασμού μη διαθέσιμη bytes bytes Total shared: Σύνολο διαμοιραζομένων: Share List Info Πληροφορίες Λίστας Διαμοιραζομένων My My Select sound file Επιλέξτε αρχείο ήχου Select sound player Επιλέξτε προγράμματος ήχου au au wav wav All Files Όλα τα αρχεία Select download finished folder Επιλέξτε φάκελο αποθήκευσης ολοκληρωμένων Other Λοιπά Log Καταγραφή Sound Ήχος General Γενικά GUI Περιβάλλον Chat Συζήτηση Transfer Μεταφορά Connection Σύνδεση Mode Λειτουργία Settings Ρυθμίσεις DCGUI DCGUI Identify Ταυτότητα Χρήστη Folder Φάκελος Interface List Λίστα Διασυνδέσεων Please select an interface Επιλέξτε διασύνδεση Select data folder Επιλέξτε φάκελο δεδομένων User Χρήστης Select log file Επιλέξτε αρχείο καταγραφής Security Ασφάλεια Select a browser Επιλέξτε browser Compressed list size (HE3/BZ): Συμπιεσμένη λίστα διαμοιραζόμενων (HE3/BZ): Select transfer cert Επιλέξτε Πιστοποιητικό Μεταφοράς Select transfer key Επιλέξτε Κλειδί Μεταφοράς Browse Share List Εξερευνητής Λίστας Διαμοιραζόμενων Add new nick name filter Προσθήκη νέου φίλτρου ψευδωνύμων Please enter a nick Εισάγετε ένα ψευδώνυμο Chat Timestamp Σφραγίδα Χρόνου στη Συζήτηση Chat Local Nick Τοπικό Ψευδώνυμο στη Συζήτηση Chat Local Text Τοπικό Κείμενο στη Συζήτηση Chat Remote Nick Απομακρυσμένο Ψευδώνυμο στη Συζήτηση Chat Remote Text Απομακρυσμένο Κείμενο στη Συζήτηση Chat Status Nick Ψευδώνυμο Κατάστασης στη Συζήτηση Chat Status Text Κείμενο Κατάστασης στη Συζήτηση Public Chat Timestamp Σφραγίδα Χρόνου στη Δημόσια Συζήτηση Public Chat Local Nick Τοπικό Ψευδώνυμο στη Δημόσια Συζήτηση Public Chat Local Text Τοπικό Κείμενο στη Δημόσια Συζήτηση Public Chat Remote Nick Απομακρυσμένο Ψευδώνυμο στη Δημόσια Συζήτηση Public Chat Remote Text Απομακρυσμένο Κείμενο στη Δημόσια Συζήτηση Public Chat Status Nick Ψευδώνυμο Κατάστασης στη Δημόσια Συζήτηση Public Chat Status Text Κείμενο Κατάστασης στη Δημόσια Συζήτηση Public Private Chat Nick Ψευδώνυμο στη Δημόσια Ιδιωτική Συζήτηση Public Private Chat Text Κείμενο στη Δημόσια Ιδιωτική Συζήτηση Select a 64x64 Photo Επιλέξτε μια φωτογραφία 64x64 You change the client mode! Please restart DCGUI! Αλλάξατε τη λειτουργία. Το πρόγραμμα πρέπει να επανεκκινήσει πριν γίνουν οι αλλαγές! You must set a Download Folder! Πρέπει να επιλέξετε φάκελο λήψης! Download Finished Folder and Download Folder must be different! Ο φάκελος των ολοκληρωμένων αρχείων λήψης και ο φάκελος λήψης πρέπει να είναι διαφορετικός! You must enter a valid 'Fake Host'! Πρέπει να ορίσετε μια έγκυρη 'Ψευδοδιεύθυνση΄! You must enter a valid interface! Πρέπει να ορίσετε μια έγκυρη διασύνδεση! You must enter a valid tcp listen port! Πρέπει να ορίσετε μια έγκυρη tcp θύρα! You must enter a valid udp listen port! Πρέπει να ορίσετε μια έγκυρη udp θύρα! You have set DCGUI-QT to listen on a port < 1024! You can run DCGUI-QT only as root in active mode! Έχετε ορίσει στο DCGUI-QT να παρακολουθεί μια πόρτα μικρότερη του 1024! Μόνο ως root μπορείται να είστε σε ενεργητική λειτουργία! You must enter a valid nick! Πρέπει να ορίσετε ένα έγκυρο ψευδώνυμο! You must enter a valid search nick! Πρέπει να ορίσετε ένα έγκυρο ψευδώνυμο αναζήτησης! Can't save Image! Δεν ήταν δυνατό να αποθηκευθεί η εικόνα! Can't load Image! Δεν ήταν δυνατό να φορτωθεί η εικόνα! Can't get Host IP! Δεν ήταν δυνατό να βρεθεί η IP του διακομιστή! No interfaces found! Δεν βρέθηκαν διασυνδέσεις! Can't get interface IP! Δεν ήταν δυνατό να βρεθεί η IP της διασύνδεσης! Chat Say Ομιλία Host IP: IP του Διακομιστή: Interface IP: IP της διασύνδεσης: Latest release... Τελευταία έκδοση... Can't get your ip Δεν ήταν δυνατό να βρεθεί η IP σας Public Chat ME Nick ΔΙκό Σας Ψευδώνυμο στη Δημόσια Συζήτηση Hub Lists Λίστες Κόμβων Valknut Valknut You change the client mode! Please restart Valknut! Αλλάξατε τη λειτουργία του προγράμματος. Παρακαλώ επανεκκινήστε το Valknut! You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Ρυθμίσατε το Valknut έτσι ώστε να χρησιμοποιεί θύρα μικρότερη της 1024! Μπορείτε να τρέχετε το Valknut σε ενεργή λειτουργία μόνο σαν υπερχρήστης! Compressed list size (HE3/BZ/XML): Μέγεθος συμπιεσμένης λίστας (HE3/BZ/XML): Edit url Τροποποίηση διεύθυνσης Auto Responses Filelist browser Εξερευνητής αρχείων Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Λήψη της Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Πρόγραμμα DCServerList Add Bookmark Προσθήκη αγαπημένου κόμβου Edit Bookmark Επεξεργασία αγαπημένου κόμβου Public Δημόσιοι Bookmarks Αγαπημένα Error Σφάλμα Please enter a hubname. Εισάγετε το όνομα του κόμβου. Please enter a hubhost. Εισάγετε το όνομα τη διεύθυνση του κόμβου. Remove bookmarks Αφαίρεση αγαπημένου κόμβου You are sure ? Είστε σίγουρος? Remove Αφαίρεση Cancel Ακύρωση DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Αναμονή Idle Αδρανής Run Μεταφορά Transfer Μεταφορά Error Σφάλμα Unknown Άγνωστο Pause Παύση Hub offline Κόμβος αποσυνδεδεμένος User offline Χρήστης αποσυνδεδεμένος User busy Χρήστης απασχολημένος Send error Σφάλμα αποστολής Change Transfer-Rate Αλλαγή Ρυθμού Μεταφοράς Please enter a Transfer-Rate [B/s] (0=off) Εισάγετε τον Ρυθμό Μεταφοράς [B/δευτερ.] (0=ανενεργό) Change File-Priority Αλλαγή Προτεραιότητας Αρχείου Please enter a priority Εισάγετε την προτεραιότητα Try Connect Δοκιμή Σύνδεσης User and Hub not found in the queue ! Χρήστης και Κόμβος δεν βρέθηκαν στη λίστα λήψης! Nick: Ψευδώνυμο: Hub: Κόμβος: Remove Transfer Αφαίρεση Μεταφοράς You are sure ? Είστε σίγουρος? Remove Αφαίρεση Cancel Ακύρωση My My Browse Share List Εξερευνητής Λίστας Διαμοιραζόμενων Share list not available Λίστα διαμοιρασμού μη διαθέσιμη None Καμία File Αρχείο %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Μεταφραστής Choose a language Επιλογή Γλώσσας Chinese Simplified to English Αγγλικά Chinese Traditional Dutch Ολλανδικά French Γαλλικά German Γερμανικά Greek Ελληνικά Italian Ιταλικά Japanese Korean Portuguese Russian Ρωσσικά Spanish Ισπανικά Detect language Arabic Bulgarian Chinese Croatian Czech Τσέχικα Danish Δανικά Finnish Φινλανδικά Hindi Norwegian Νορβηγικά Polish Πολωνικά Romanian Ρουμάνικα Swedish Σουιδικά OK Εντάξει Cancel Ακύρωση Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUpdateManager Download failed Αποτυχία λήψης Update finished Η ενημέρωση ολοκληρώθηκε Download content Λήψη περιεχομένου Download content failed Αποτυχία λήψης περιεχομένου Download update.xml Λήψη του update.xml Download update.xml failed Αποτυχία λήψης του update.xml Update available for Διαθέσιμη ενημέρωση για update(s) available διαθέσιμες ενημερώσεις Update available but no bz2 support for Διαθέσιμη ενημέρωση αλλά διαθέτετε bz2 υποστήριξη DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Όνομα Server Διακομιστής Description Περιγραφή Users Χρήστες Country Shared Minimum share Extra QObject Download Λήψη Download To Λήψης στο Download As Λήψης ως Browse User Files Εξερευνητής αρχείων Private Chat Ιδιωτική Συζήτηση Kick Δίωξη Force Move Εξαναγκασμένη μετακίνηση Update User Ενημέρωση Χρήστη Connect Σύνδεση Disconnect Αποσύνδεση Reload Userlist Ενημέρωση Λίστας Χρηστών Connect To Hub Σύνδεση στον Κόμβο Add Προσθήκη Add Bookmark Προσθήκη αγαπημένου κόμβου Edit Επεξεργασία Edit Bookmark Επεξεργασία αγαπημένου κόμβου Remove Αφαίρεση Close Transfer Κλείσιμο Μεταφοράς Info Πληροφορίες Try Connect Δοκιμή Σύνδεσης Remove from Queue Αφαίρεσης από τη λίστα λήψης Remove Transfer from Queue and Disk Αφαίρεση από τη λίστα λήψης και το δίσκο Add Slot to User Ανοικτή θύρα θα παρέχεται στον Χρήστη Add Permanent Slot to User Μόνιμη ανοικτή θύρα θα παρέχεται στον Χρήστη Remove Slot from user Αφαίρεση ανοικτής θύρας προς τον Χρήστη Save Queue Αποθήκευση λίστας λήψης Update Server Ενημέρωση Διακομιστή Update all Server Ενημέρωση όλων των Διακομιστών Change Transfer-Rate Αλλαγή Ρυθμού Μεταφοράς Copy row to Clipboard Αντιγραφή σειράς στο Πρόχειρο Copy column to Clipboard Αντιγραφή στήλης στο Πρόχειρο File Info Πληροφορίες Αρχείου Connect To All Hubs Σύνδεση σε όλους τους Κόμβους Search for clones Αναζήτηση για κλόνους Remove complete from Queue Αφαίρεση ολοκληρωμένων από τη λίστα λήψης Load Φόρτωση Save Αποθήκευση Add this extra source Προσθήκη επιπλέον πηγής Edit transfer Τροποποίηση Μεταφοράς Edit file priority Επεξεργαστής προτεραιότητας αρχείου Translate Μετέφρασε Translator Μεταφραστής Disable group Απενεργοποίηση Ομάδας Group by File Ομαδοποίηση σύμφωνα με το αρχείο Group by Size Ομαδοποίηση σύμφωνα με το μέγεθος Group by Nick Ομαδοποίηση σύμφωνα με το ψευδώνυμο Group by free Slots Ομαδοποίηση σύμφωνα με τις ανοικτές θύρες Group by Hub Ομαδοποίηση σύμφωνα με τον κόμβο Group by Path Ομαδοποίηση σύμφωνα με τον φάκελο Group by Host Ομαδοποίηση σύμφωνα με την διεύθυνση Copy Αντιγραφή Clear Καθαρισμός Select all Επιλογή Όλων Close Κλείσιμο Group Ομάδα Hide Κρύψιμο Refresh Filelist Ενημέρωση Λίστας Διαμοιραζόμενων Αρχείων Pause Queue Παύση Λίστας Λήψης Resume Queue Συνέχιση Λίστας Λήψης Insert Smiley Εισαγωγή εικονιδίου (smiley) Add Friend Προσθήκη Φίλου Czech Τσέχικα Danish Δανικά Dutch Ολλανδικά Finnish Φινλανδικά France Γαλλικά German Γερμανικά Hungarian Ουγγρικά Icelandic Ισλανδικά Italy Ιταλικά Norwegian Νορβηγικά Polish Πολωνικά Romanian Ρουμάνικα Spanish Ισπανικά Swedish Σουιδικά Copy Link Αντιγραφή Συνδέσμου Text Encoding Κωδικοποίηση Κειμένου Request secure chat Αίτηση Ασφαλούς Σύνδεσης (SSL) Close secure chat Τερματισμός Ασφαλούς Σύνδεσης (SSL) Input Είσοδος Output Έξοδος Profile editor Επεξεργαστής προφίλ Reset Επαναφορά Dock Προσκόλληση Undock Αποκόλληση Exit Εξοδος Custom Τροποποιημένο Latvian Λιθουανικά Russian Ρωσσικά Slovak Σλαβικά Check client version Έλεγχος έκδοσης προγράμματος Add Permanent Προσθήκη Μόνιμης Θύρας Group by Hash Ομαδοποίηση ως προς Hash Upload Slot Θύρα Αποστολής Bosnian Βόσνια English Αγγλικά French Γαλλικά Greek Ελληνικά Italian Ιταλικά Repair File Επισκευή Αρχείου Repair BIN sectors Επισκευή BIN τομέων Brazilian Βραζιλιάνικα Search for clones by TTH Copy magnet link User: Χρήστης: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (επιλέξτε μια υπάρχουσα λήψη για προσθήκη) File download Λήψη αρχείου A same file is already in the queue! Ένα ίδιο αρχείο υπάρχει ήδη στη λίστα προς λήψη! Start a multi-download Εκίνηση πολλαπλής λήψης Cancel Ακύρωση File is already in the queue but not mark as a multi-download! Το αρχείο υπάρχει ήδη στη λίστα προς λήψη και δεν είναι σημειωμένο για πολλαπλή-λήψη! File is already in the queue with a different size! Το αρχείο υπάρχει ήδη στη λίστα προς λήψη και έχει διαφορετικό μέγεθος! File already downloaded! Το αρχείο έχει ληφθεί ήδη! Enter byte range (m-n) Εισάγετε την θέση σε byte (χ-ψ) Repair BIN Sectors Επισκευή BIN Τομέων Enter sector range (m[-n]) Εισάγετε την θέση του τομέα (χ[-ψ]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Το αρχείο υπάρχει ήδη! Resume Συνέχεια Overwrite Επικάλυψη File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Δεν είστε συνδεδεμένοι στο ζητούμενο κόμβο! Group by total Slots Download Folder Φάκελος Εισερχομένων Zoom in Zoom out Group by IP SearchSpyModel Text Κείμενο Count Μετρητής Time UserListModel Nick Ψευδώνυμο Comment Σχόλια Tag Ετικέτα Speed Ταχύτητα Email Share Διαμοιραζόμενα αρχεία IP IP Lock/PK Κλείδωμα Supports Υποστηρίζει valknut-0.4.9/valknut/ts/valknut.da.ts0000664000076400007640000114516611144234504016113 0ustar ejsejs DCBrowseFileTree Select destination Vælg destination Select a filename Vælg et filnavn <wrong length> <forkert længde> DCChat Message not send ! Besked ikke sendt! Private Chat: Privat Chat: Chat Cleared. Chat renset. Translation: Translation failed: Current mode: active passive Refresh share in progress. Switch timestamp Send advertisment. Wrong parameter for '/join' Join to: Wrong parameter for '/msg' Away message disabled. Away message set. Line is encrypted. Line is not encrypted. Help: /refresh - refresh share /ts - switch time display in chat on/off Choose a filename to save under /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /msg &lt;nick&gt; &lt;message&gt; - send private message Select download folder Vælg download bibliotek Select file for Photo received. Only allowed in private chat. Photo encode error. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Nick: Operator: yes no Comment: Speed: Hastighed: EMail: Shared: Away: on off Version: Unknown Ukendt Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Joins: Parts: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Forbindelse timeout Error: ' Fejl:' Sorry, client work in passive mode Desværre, klient arbejder i passiv tilstand Redirect to Videreforbundet til Password - Kodeord - Please enter your password Indtast venligst dit kodeord Wrong password Forkert kodeord You must enter a search word. Du skal skrive et søgeord. Search Error Søgefejl OP Force Move OP Tvang tilstand Please enter host Indtast venligst host Please enter a message Indtast venligst en besked Redirect disabled Viderforbinding slået fra Private chat only in current hub ! Privat chat er kun i nuværende hub! Select download folder Vælg download bibliotek Select file Vælg fil OP Kick OP Spark Please enter a reason Indtast venligst grund User: Bruger: Connected Forbundet Disconnected Afbrudt Chat Cleared. Chat renset Use password from profile Password from profile is empty No profile found for this hub users Hubname change: User rejoin the hub. User left the hub. Hub Hub We left the hub. Joins: Parts: Chat List Line is encrypted. Line is not encrypted. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) Cancel Annuller Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Any Alle DCDebug Send error Fejl ved send Send Send Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About Om Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Fil Download Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Fil Browser File Fil Size Størrelse Files Filer Shared Delt DCDialogChat Form1 Form1 Hide Gem Clear Rens &Send DCDialogChat DCDialogClient Form1 Form1 User Bruger Nick Nick Comment Kommentar Speed Hastighed EMail EMail Bytes Bytes Chat Chat Hub Hub Spy Smugkig On/Off Til/Fra Search Søg File Fil Size Størrelse Slot Slot Path Sti Results: Resultater: Filter Filter At Least Mindst At Most Højst KB KB MB MB Any Alle MP3 MP3 Compressed Komprimeret Document Dokument Executable Eksekverbar Picture Billede Video Video Folder Bibliotek Type Type Results Resultater 0 0 Share Del Host Host GB GB Max Free Slots (0=off) Max Frie Slots (0=fra) Free Slots Frie Slots Chat List DCDialogClient User(s) ... DCDialogConnectionManager Connection Forbindelse DCDialogDebug Comment Kommentar &Save Save to file. E&xit A&fslut Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Send Send Receive Modtag Both Cancel Annuller malloc info DCDialogEditServer Form1 Form1 Settings Indstillinger Name Navn Host Host Description Beskrivelse Cancel Annuller Accept Accepter Password DCDialogEditServer &Profile Profile Nick Nick EMail EMail Auto Connect Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Path Sti DCDialogEditTransfer Edit Transfer Settings Indstillinger Nick Nick Hub name Hub address Cancel Annuller Accept Accepter Known hubs DCDialogFileBrowser Form1 Form1 Name Navn Size Størrelse Open Save Gem Type Type TTH Folder Bibliotek Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Filoverførsel Information File Fil Size Størrelse Done Færdig Hash Sources DCDialogForceMove OP Force Move OP Tvang tilstand Please enter a host Please enter a message Indtast venligst en besked Cancel Annuller DCDialogGetURL Get URL Fat URL Cancel Annuller DCDialogHubFilter Hub Filter Filter Filter Min. User Contains Cancel Annuller Save Gem Name Navn Server Server Description Beskrivelse Settings Indstillinger DCDialogHubListManager Hub List Hub Liste Public Offentlig Name Navn Server Server Description Beskrivelse User Bruger double click to hide the toolbar edit filter delete filter Filter Filter add filter double click to show the toolbar Bookmarks Bogmærker connect Forbind Shared Delt Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Gem Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Tilføj Edit bookmark. Edit Rediger Remove bookmark. Remove Fjern DCDialogHubProfile Profile Settings Indstillinger Password Auto Connect Cancel Annuller Hub profile editor Nick Nick Description Beskrivelse EMail EMail Tag Secure Socket Layer Delete Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Resultater Nick Nick File Fil Size Størrelse Slot Slot Hub Hub Path Sti Log Log Search Søg Stop Stop Results: Resultater: Search Options Søgeindstillinger Connected Hubs Forbundede Hubs Available Hubs Tilgængelige Hubs Bookmark Hubs Bogfør Hubs Filter Filter Type Type At Least Mindst At Most Højst KB KB MB MB Any Alle MP3 MP3 Compressed Komprimeret Document Dokument Executable Eksekverbar Picture Billede Video Video Folder Bibliotek Hub Search Hub Søgning Host Host GB GB Free Slots Frie Slots Max Free Slots (0=off) Max Frie Slots (0=fra) Exact Præcis B B 0/0 0/0 0 0 Search in path+file name only Søg kun i sti+filnavn Hubs Hub Options Connected Hub Refresh Public Hubs Expert User Bruger Reset Clients Live filters Include: Exclude: Apply Mode Tilstand Add Tilføj Start Start the search. Add a search to the searchqueue Filtered Hubs Multi Search Enable Tag Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Navn Size Størrelse Exact size Action Start search Add to download queue Do nothing Do the same action next time without asking Cancel Annuller DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Indstillinger Identify Identitet Information Information E-Mail: E-Mail: Nick: Nick: Description: Beskrivelse: Speed: Hastighed: 56Kbps 56Kps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kps Satellite Sattelit ISDN ISDN DSL DSL Cable Kabel LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Spam (bruger at hjem dot com) Transfer Overførsel Filetransfer Filoverførelse Share Folders Delte Biblioteker Info Information Add Tilføj Remove Fjern Download Folder Download bibliotek Browse Browse Upload Options Upload Indstillinger Limit transferrate (0=off) Højste overførsels hastighed (0=fra) Byte/sec. Bytes/sek. Connection Forbindelse Settings Indstillinger Mode Tilstand Active Mode Aktiv tilstand Passive Mode Passiv tilstand Passive Mode Settings Passiv Tilstand Indstillinger Active Mode Settings Aktiv Tilstand Indstillinger TCP Listen Port: TCP Aflytningsport: 412 412 Hub Search Hub Søg UDP Listen Port: UDP Lytteport: Use ip from interface (ppp0,eth0) Brug IP fra interface (ppp0,eth0) Test Test Interface IP Interface IP Wrong IP Forkert IP GUI GUI GUI Options GUI Indstillinger Other Andre Other Options Andre Indstillinger Hublist Hub liste Store local Gem lokalt Save Gem Cancel Annuller Windows Windows Theme Skema Language File Sprogfil Reconnect Counter (0=off) Antal forsøg på at forbinde (0=fra) Reconnect Timeout (sec.) Forbind timeout (sek.) Allow Force Move Tillad Force Move Source Url's Kilde URL'er URL URL Max. upload slots (0=off) Max. Upload Slots (0=fra) Application Font Program Font Rebuild Opdater Maximal upload connections. Maksimal upload forbindelser. Transferrate for each slot. Hastighed for hvert slot. Transfer Request Timings Forbindelses Request Timings Resend Timeout (sec.) Response Timeout (sec.) Hub Connections Hub Forbindelser Sound Lyd External Player Ekstern Afspiller Chat Chat Units Enheder Auto Auto Byte Byte GByte GByte KByte KByte MByte MByte General Generelt Disable Sound Slå lyd fra Play a sound when receiving a message Spil en lyd når besked ankommer Play a sound when disconnecting from a hub Spil en lyd når forbindelse til hub afbrydt Play a sound when receiving first message Spil en lyd ved første besked Play a sound when sending a message Spil en besked når besked sendes Play a sound when connecting to a hub Spil en lyd ved forbinding til en hub Disable sound when away Slå lyd fra når væk Files Filer Player Afspiller Sound Files Lydfiler Connect Forbind Preview Eksempel Disconnect Afbrud Send Send Receive Modtag 1st Receive Første modtagning Log Log Timestamp Private Chat Privat Chat Hub Chat Hub Chat Download Queue Download Liste Save Queue in minutes (0=off) Gem Liste i minutter (0=fra) Move Finished Files to this Folder (empty = disabled) Flyt færdige filer til dette bibliotek (tom = fra) Use wrong ip/hostname (Firewall/Portforward) Brug forkert ip/hostname (Firewall/Portforward) No multi hub search ! No incoming connections ! Ingen multi-hub søgning! Ingen indkommende forbindelser! Send warn message to remote user on active mode request Send advarsel til fjernbruger ved aktiv-tilstands forspørgelse Status Messages Status Beskeder Show Status Messages Vis Status Beskeder Open Private Chat Window Åben Privat Chat Vindue Transfer Options Overførselsindstillinger Transfer View Overførsler Chunk Percent Klump Procent File Percent Fil Procent Chunk Size Klump Størrelse Elapsed Time Tid gået File Size Filstørrelse Search Nick: Søg Efter Nick: Chat options Add Description Tag (<DCGUI ....>) Folder Bibliotek Away Message: Your line speed. Your nick. The nick for hub searches. Your EMail. Enable/Disable the Anti-spam option. A little description. Add a tag to the description that show some information from you. The udp listen port for incoming search results. Select a interface. Get the ip from the host. The time between a reconnect. How often we reconnect to a hub. Rebuild your sharelist. Add a folder to your sharelist. Remove a folder from your sharelist. Show some information about your sharelist. Browse your own share list. Time to wait for a transfer response from the remote user. Time to wait before a new transfer request is send to the remote user. Test the new theme. Open the chat window on incoming messages. Enable emoticons in chat Data Folder Ctrl + Enter Enter Alt + Enter Alt + S Messages Query on exit Logfile Logfile enabled Security Flood Protection Kick Message Private Address Space (rfc1918) Ignore private address space connections Query Client User-List right alignment Kick the user for flooding (only for Operators) Show send button Dynamic upload rate Send message with Use tab for every chat window Client options Color Transfer Cert/Key If user quits hub, stop following transfers Upload Upload Both Download Download None Auto-Search for new sources Download Rate Single Download Rate Multi Remaining Time Single Remaining Time Multi Path Sti Alias Edit a folder from the sharelist. Open File Dialog. Add a URL to the list. Remove a URL from the list. 28.8Kbps 28.8Kps Enable logging Append date to log file name Nick name filter Disable logging for public chat Append hub name to log file name Append hub host to log file name Forward private to public chat Away Prefix: Select Language. Check and recreate sharelist on startup seconds Away after Auto Away Mode Show joins and parts Comment Kommentar Speed Hastighed EMail EMail Share Del Photo Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Navn Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect Forbind Public Offentlig reload Genindlæs Name Navn Server Server Description Beskrivelse User Bruger update Opdater 0 0 servers Servere Bookmarks Bogmærker Hub List Hub Liste Filter Filter DCDialogSplash Form1 Form1 Valknut DCDialogSpy Spy Smugkig Clear Rens Statistic Active: 0 0 Reject: Results: Resultater: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Overførselsliste Nick Nick Server Server State Tilstand Transfer Overførsel File Fil Wait Vent Size Størrelse Log Log Slots Slots Hub Hub 0/0 0/0 Files Filer Local File / Nick Lokal Fil / Nick Size / Hub Størrelse / Hub Remote File Fjernfil Extended Udvidet File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language Cancel Annuller DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Navn Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub Cancel Annuller DCDialogUserCommandLines User Command Lines For On Use for all nicks Cancel Annuller DCDialogUsersList User Bruger Users List Photo Slot Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Files Filer Total Directories Root Directory <wrong length> <forkert længde> file Select destination Vælg destination Select a filename Vælg et filnavn Filebrowser Choose a file Choose a filename to save under Folder Bibliotek Download contents? Download the contents of " Failed to load filelist Unable to load Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Fil does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Fil Download File allready download Fil allerede sat till download File allready exist ! Filen eksisterer ! Resume Genoptag Overwrite Overskriv Cancel Annuller Start Multi Download Start Multi Download File allready in the queue and not mark as multi download ! Fil allerede i overførselsliste og ikke markeret som en multi download! File allready in the queue with a different size ! Fil allerede i overførselsliste - med en anden størrelse! You can start a Multi Download ! Du kan starte en Multi Download! The same user/file is allready in the queue ! Den samme bruger/fil er allerede i overførselslisten A same file is allready in the queue ! Den samme fil er allerede i overførselslisten! If you want to download all files in this mode ? Vil du hente alle filer i denne tilstand ? Connect Forbind DCFileTransferInfo File Transfer Info Filoverførsel Information DCGuiApp Options Indstillinger &Options &Indstillinger Ctrl+O Ctrl+O Open option dialog Åben Indstillinger Exit Afslut E&xit A&fslut Ctrl+Q Ctrl+Q Quits the application Afslutter program Exit Quits the application Afslut Afslutter program Toolbar Værktøjslinje Tool&bar &Værktøjsline Enables/disables the toolbar Viser/Fjerner værktøjslinien Toolbar Enables/disables the toolbar Værktøjsline Viser/Fjerner værktøjslinie Statusbar Statuslinie &Statusbar &Statuslinie Enables/disables the statusbar Viser/Fjerner statuslinien Statusbar Enables/disables the statusbar Statuslinie Viser/Fjerner statuslinie &Cascade Cascades all windows Ctrl+S Transfer List Overførselsliste &Transfer List &Overførselsliste Ctrl+T Ctrl+T Show Transfer List Viser overførselsliste Hub Search Hub Søgning &Hub Search &Hub Søgning Ctrl+H Ctrl+H Show Hub Search Viser Hub Søgning About Om &About... &Om... About the application Om programmet About About the application Om Om programmet New Version Ny Version &New Version... &Ny Version... Check for new version Tjek for ny version New Version Check for new version Ny version Tjekker for ny version What's &This Hvad er de&tte &File &Fil &View &Vis &Action &Udfør &Window &Vindue &Help &Hjælp Ready. Klar. (no error message from socket) (Ingen fejlmeddelse fra socket) TCP listen failed, change to passive mode ! TCP aflytning fejlede, skifter til passiv tilstand! Quit... Afslut... Do your really want to quit? Vil du virkelige afslutte? Open options dialog... Åben Indstillinger... Exiting application... Afslut program... Toggle toolbar... Vis/Fjern værktøjslinie... Toggle statusbar... Vis/Fjern Statuslinie... About... Om... New version... Ny version... Show/hide transfer list window ... Vis/Fjern overførselsliste vinduet ... Show/hide hub search window ... Vis/Fjern hub søgnings vinduet ... file operations Fil operationer Can't get version info from server Kan ikke læse version information fra server Current version is: Nyværende version er: Normal Normal &Normal &Normal Ctrl+N Ctrl+N Set away mode Sæt "Væk" Tilstand Away "Væk" &Away "&Væk" Ctrl+A Ctrl+A Hub List Hub Liste Show Hub List Vis Hub Liste Show/hide hub list window ... Vis/Fjern Hub Liste ... H&ub List H&ub Liste Ctrl+U Ctrl+U &Minimize Quick Options Quick options F12 Download mode: Ask Download mode: Single Download mode: Multi Spy Smugkig Show/hide spy window ... Users Ctrl+F Do you really want to quit? Exiting application... aborted Show/hide users window ... Away &Mode Tile &Horizontally Reload Plugins &Reload Plugins &Dock Dock the application Hub &Search S&py Ctrl+P Dock/Undock application... Refresh share in progress. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Offentlig Bookmarks Bogmærker Add Bookmark Tilføj bogmærke Error Fejl Edit Bookmark Remove bookmarks You are sure ? Remove Fjern Cancel Annuller Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Save profile Do you want to save your changes? Save Gem Cancel Annuller Are you sure? Delete profile for DCHubSearch You must enter a search word. Du skal indtaste et søgeord Connect to local udp port failed. ( Forbindning til lokal UDP port fejlede. ( No hubs found. Ingen hubs fundet. Hub Search Error Hub Søgning Fejl No connected hubs found. Ingen forbundede hubs fundet. Select download folder Vælg download bibliotek Select file Vælg fil Please select a connected hub. Select file for USER FILE Not connected to required hub! Connect Forbind Cancel Annuller Choose a filename to save under Choose a file to open Start Stop Stop Filelist download Please add a search! Multi Search only work in active mode! Folder Bibliotek Unknown Ukendt None Directory File Fil Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Du skal indtaste en gyldig "Snyde Host"! You must enter a valid interface ! Du skal indtaste en gyldig interface ! You must enter a valid tcp listen port ! Du skal indtaste en gyldig TCP aflytningsport ! You must enter a valid udp listen port ! Du skal indtaste en gyldig UDP aflytningsport ! You must enter a valid nick ! Du skal indtaste et gyldigt nick ! Interface IP : Interface IP: Can't get interface IP ! Kan ikke hente interface IP! Select download folder Vælg download bibliotek Select share folder Vælg delt bibliotek Select language file Vælg sprogfil HubList URL Hubliste URL Please enter a url Indtast venligst URL Share list not available Deling er ikke mulig Compressed list size: Komprimeret liste størrelse: bytes bytes Total shared: Totalt delt: Share List Info Delingsliste Information You change the client mode ! Please restart DCGUI ! Du skiftede klienttiltand, genstart! My Min Select sound file Vælg lydfil Select sound player Vælg afspiller au au wav wav All Files Alle Filer Host IP : Host IP: Can't get Host IP ! Kan ikke hente host IP! Select download finished folder Vælg bibliotek til færdige downloads You must set a Download Folder ! Du skal sætte et download bibliotek ! Download Finished Folder and Download Folder must be different ! Bibliotek til færdige downloads og download bibliotek skal være forskellige! You listen on a port <= 1024 ! You can run dcgui only as root in active mode ! Du lytter på en port <= 1024! Du skal være root for at kunne det! You must enter a valid search nick ! Du skal indtaste et gyldigt søgenick ! Other Andre Log Log Sound Lyd General Generelt GUI GUI Chat Chat Transfer Connection Forbindelse Mode Tilstand Settings Indstillinger Identify Identitet Folder Bibliotek Interface List Please select an interface Select data folder User Bruger Select log file Security Select a browser Select transfer cert Select transfer key Add new nick name filter Please enter a nick Chat Timestamp Chat Local Nick Chat Local Text Chat Remote Nick Chat Remote Text Chat Status Nick Chat Status Text Public Chat Timestamp Public Chat Local Nick Public Chat Local Text Public Chat Remote Nick Public Chat Remote Text Public Chat Status Nick Public Chat Status Text Public Private Chat Nick Public Private Chat Text Select a 64x64 Photo You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client DCServerList Add Bookmark Tilføj bogmærke Edit Bookmark Rediger bogmærke Public Offentlig Bookmarks Bogmærker DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Vent Idle Sover Run Kør Transfer Overfør Error Fejl Download Download Upload Upload Unknown Ukendt Pause Pause Hub offline Hub offline User offline Bruger offline User busy Bruger optaget Send error Fejl ved send Change Transfer-Rate Skift Overførselshastighed Please enter a Transfer-Rate [B/s] (0=off) Indtast Overførselshastiged [B/s] (0=fra) Change File-Priority Please enter a priority Remove Fjern Cancel Annuller Try Connect Prøv at forbinde User and Hub not found in the queue ! Nick: Nick: Hub: Remove Transfer You are sure ? My Min Share list not available Deling er ikke mulig None File Fil %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Chinese Simplified to English Chinese Traditional Dutch French German Greek Italian Japanese Korean Portuguese Russian Spanish Detect language Arabic Bulgarian Chinese Croatian Czech Danish Finnish Hindi Norwegian Polish Romanian Swedish Cancel Annuller Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Navn Server Server Description Beskrivelse Users Country Shared Delt Minimum share Extra QObject Download Download Download To Download Til Download As Download Som Browse User Files Vis brugers filer Private Chat Privat Chat Kick Spark Force Move Force Move Update User Opdater Bruger Connect Forbind Disconnect Afbryd Reload Userlist Opdater brugerliste Connect To Hub Forbind Til Hub Add Tilføj Add Bookmark Tilføj bogmærke Edit Rediger Edit Bookmark Rediger Bogmærke Remove Fjern Close Transfer Afslut overførsel Info Information Try Connect Prøv at forbinde Remove from Queue Fjern fra liste Remove Transfer from Queue and Disk Fjern overførsel fra liste og disk Add Slot to User Tilføj slot til bruger Add Permanent Slot to User Tilføj permanent slot til bruger Remove Slot from user Fjern slot fra bruger Save Queue Gem liste Update Server Opdater server Update all Server Opdater alle servere Change Transfer-Rate Skift overførselshastighed Copy row to Clipboard Kopier linie til Clipboard Copy column to Clipboard Kopier række til Clipboard File Info Fil information Connect To All Hubs Forbind til alle hubs Search for clones Søg efter kloner Remove complete from Queue Fjern færdige fra liste Download In Download I Load Hent Save Gem Add this extra source Edit transfer Edit file priority Translate Translator Disable group Group by File Group by Size Group by Nick Group by free Slots Group by Hub Group by Path Group by Host Copy Clear Rens Select all Close Group Hide Gem Refresh Filelist Pause Queue Resume Queue Insert Smiley Add Friend Czech Danish Dutch Finnish German Hungarian Icelandic Norwegian Polish Romanian Spanish Swedish Copy Link Request secure chat Close secure chat Check client version Add Permanent Profile editor Group by Hash Reset Dock Undock Exit Afslut Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Bruger: User Commands Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) File download Fil Download A same file is already in the queue! Start a multi-download Cancel Annuller File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Genoptag Overwrite Overskriv File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Group by total Slots Download Folder Download bibliotek Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Nick Comment Kommentar Tag Speed Hastighed Email Share Del IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.fi.ts0000664000076400007640000133400111144234504016111 0ustar ejsejs DCBrowseFileTree Select destination Valitse kohde Select a filename Valitse tiedostonimi <wrong length> <väärä pituus> Choose a filename to save under Valitse tiedoston nimi jolle tallennetaan DCChat Message not send ! Viestiä ei lähetetty ! Private Chat: Henkilökohtainen keskustelu: Chat Cleared. Keskustelu tyhjennetty. Translation: Käännös: Translation failed: Käännös epäonnistui: Current mode: Nykyinen tila: active Aktiivinen passive passiivinen Refresh share in progress. jaon päivitys käynnissä. Refresh share allready in progress. jaon päivitys on jo käynnissä. Switch timestamp Vaihda aikaleima Send advertisment. lähetä mainos. Wrong parameter for '/join' Väärä parametri '/join' komennolle Join to: Liity: Wrong parameter for '/msg' Väärä parametri '/msg' komennolle Private message send. Yksityinen viesti lähetetty. Private message not send ! Yksityistä viestiä ei lähetetty ! Away message disabled. Poissaoloilmoitus ei käytössä. Away message set. Poissaoloilmoitus asetettu. Line is encrypted. Linja on salattu. Line is not encrypted. Linjaa ei ole salattu. Help: Apua: /clear - clear the chat window /clear - tyhjentää keskusteluikkunan /mode - show current mode /mode - näyttää nykyisen tilan /refresh - refresh share /refresh - päivittää jaon /ts - switch time display in chat on/off /ts - vaihtaa ajan näytön keskustelussa päälle/pois /dcgui - send an advertisment to the hub /dcgui - lähettää mainoksen hubille /join <address> - disconnect from currently connected hub and connect to another hub /join <address> - poistuu nykyiseltä hubilta ja liittyy toiseen hubiin /msg <nick> <message> - send private message /msg <nimi> <viesti> - lähettää yksityisen viestin /away <message> - set automatic response for private messages; if the message is empty, disable it /away <viesti> - asettaa automaattisen vastauksen yksityisille viesteille; jos viesti on tyhjä, ei automaattista vastausta Choose a filename to save under Valitse tiedoston nimi jolle tallennetaan /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;osoite&gt; - irroita nykyiseltä hubilta ja yhdistä toiselle /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nimimerkki&gt; &lt;viesti&gt; - lähetä yksityinen viesti /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;viesti&gt; - aseta automaattinen vastaus yksityisiin viesteihin; jos viesti on tyhjä, vastaus ei ole käytössä Select download folder Valitse kohdehakemisto Select file for Valitse tiedosto Text Encoding Tekstin koodaus Choose a codec Valitse codecki Photo received. Kuva vastaanotettu. Only allowed in private chat. Sallittu ainoastaan henkilökohtaisessa keskustelussa. Client use wrong version. Asiakas käyttää väärää versiota. No Photo found. Kuvaa ei löydetty. Can't read photo. Kuvaa ei voida lukea. Photo encode error. Kuvan koodausvirhe. Photo not send. Kuvaa ei lähetetty. Photo send. Kuva lähetetty. Download DCGUI-QT from http://dc.ketelhot.de It does everything, and makes you coffee Lataa DCGUI-QT osoitteesta http://dc.ketelhot.de Se tekee kaiken, Keittää kahvitkin Refresh share already in progress. Jaon päivitys on jo käynnissä. Chat: Keskustelu: Message not sent! Viestiä ei lähetetty! /clear - clears the chat window /clear - tyhjentää keskusteluikkunan /mode - shows the current mode /mode - näyttää nykyisen tilan /dcgui or /adv - send an advertisment to the hub /dcgui tai /adv - lähettää mainoksen hubille /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;viesti&gt; - poistuu kanavalta valinnaisella poistumisviestillä /uptime - show dcgui-qt uptime /uptime - näyttää dcgui-qt:n käynnissäoloajan /ls &lt;nick&gt; - get share list from user /ls &lt;nimimerkki&gt; - ota jakolista käyttäjältä /grant &lt;nick&gt; - grant user a slot /grant &lt;nimimerkki&gt; - myönnä käyttäjälle paikka /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;nimimerkki&gt; - myönnä käyttäjälle pysyvä paikka /friend &lt;nick&gt; - add user to friend list /friend &lt;nimimerkki&gt; - lisää käyttäjä ystävälistalle /fav - add hub to bookmark list /fav - lisää hubi kirjanmerkkilistaan /info - show user info /info - näyttää käyttäjän tiedot /now - send current time to the chat /now - lähettää kellonajan keskusteluun Get info failed. Tietojen saanti epäonnistui. Info: Tiedot: Nick: Nimimerkki: Operator: Operaattori: yes kyllä no ei Comment: Kommentti: Speed: Nopeus: EMail: Sähköposti: Shared: Jaettu: Away: Poissa: on päällä off pois Version: Versio: Unknown Tuntematon Tag: Tagi: Uptime Käynnissäoloaika day päivä days Päivää hour tunti hours tuntia minute minuutti minutes minuuttia Download sharelist from Lataa jakolista käyttäjältä No nick, try /dchelp Ei nimimerkkiä, Yritä /dchelp Permanent slot added for Pysyvä paikka lisätty Slot added for Paikka lisätty Added to friend list Lisätty ystävälistaan Add bookmark hub lisää kirjanmerkki hubiin Private message sent. Henkilökohtainen viesti lähetetty. Private message not sent! Henkilökohtaista viestiä ei lähetetty! The user is using an old version or not using DCGUI-QT Käyttäjä käyttää vanhaa versiota tai ei käytä DCGUI-QT:ta Photo not found. Kuvaa ei löytynyt. Can't read your photo. Kuvaasi ei voitu lukea. Photo not sent. Kuvaa ei lähetetty. Photo sent. Kuva lähetetty. /raw - send raw message /raw - lähettää raakaviestin Download DCGUI-QT from http://dcgui.berlios.de It does everything ! Works on almost any platform you can think of and makes you coffee. Lataa DCGUI-QT osoitteesta http://dcgui.berlios.de Se tekee kaiken ! Toimii melkein millä laitteistolla tahansa ja keittää kahvitkin. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Liittymiset: Parts: Poistumiset: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Tavua Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Yhteys aikakatkaistu Error: ' Virhe: ' Validate denide Vahvistaminen estetty Sorry, client work in passive mode Asiakas passiivisessa tilassa Redirect to Uudelleenohjattu Password - Salasana - Please enter your password Anna salasanasi Wrong password Väärä salasana You must enter a search word. Hakusana täytyy laiitaa. Search Error Haku virhe OP Force Move OP pakottama siirto Please enter host Anna palvelin Please enter a message Kirjoita viesti Redirect disabled Uudelleenohjaus ei käytössä Private chat only in current hub ! Henkiläkohtainen keskustelu vain nykyisessä keskittimessä ! Select download folder Valitse kohde hakemisto Select file Valitse tiedosto OP Kick OP potkut Please enter a reason Anna syy User: Käyttäjä: Connected Yhdistetty Disconnected Katkaistu Use password from profile Käytä salasanaa profiilista Password from profile is empty Salasana profiilissa on tyhjä No profile found for this hub Profiilia tälle hubille ei löydetty users käyttäjät Hubname change: Hubin nimenvaihto: User rejoin the hub. käyttäjä liittyi uudelleen hubiin. User left the hub. Käyttäjä poistui hubilta. Hub Hubi Sorry, client works in passive mode Asiakas passiivisessa tilassa We left the hub. Poistuimme hubilta. Joins: Liittymiset: Parts: Poistumiset: Chat List Keskustelulista Line is encrypted. Linja on salattu. Line is not encrypted. Linjaa ei ole salattu. Your Nick is already in use. Nimimerkkisi on jo käytössä. Sorry, this client works in passive mode Tämä asiakas on passiivisessa tilassa Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Peruuta Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Sarakkeet Any Kaikki DCDebug Send error Lähetysvirhe Could not send the data. Error '%1'. Ei voitu lähettää dataa. Virhe '%1'. Send Lähetä Thanks for your help. Kiitoksia avusta. Save error Tallennusvirhe Can't open file '%1' for writing. Tiedostoa '%1' ei voitu avata kirjoittamista varten. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Valitse tiedoston nimi jolle tallennetaan Text (*.txt) DCDialogAbout About Tietoja OK OK Authors Tekijät License Lisenssi Sponsor Sponsori DCGUI-QT - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de DCGUI-QT - Direct Connect tiedostojen jakoohjelma (C) 2001-2004 Mathias Küster Kotisivut:http//dcgui.berlios.de Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Tiedoston siirto Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Tiedostoselain File Tiedosto Size Koko Files Tiedostot Shared Jaettu DCDialogChat Form1 Lomake1 Hide Piilota Clear Tyhjennä &Send Lähetä (&S) DCDialogChat DCDialogClient Form1 Lomake1 User Käyttäjä Nick Lempinimi Comment Kommentti Speed Nopeus EMail Sähköposti Bytes Tavua Chat Keskustelu Hub Keskitin Spy Vakoilu On/Off Päällä/Pois Search Etsi File Tiedosto Size Koko Slot Paikka Path Polku Results: Tulokset: Filter Suodatin At Least Vähintään At Most Enintään KB KT MB MT Any Kaikki MP3 MP3 Compressed Pakattu Document Dokumentti Executable Suoritettava Picture Kuva Video Video Folder Kansio Type Tyyppi Results Tulokset 0 0 Share Jako Host Palvelin GB GT Max Free Slots (0=off) Enintään Vapaita paikkoja (0=pois) Free Slots Vapaita Paikkoja Chat List Keskustelulista ... ... Tag Tagi User(s) Käyttäjä(t) DCDialogClient DCDialogClient IP IP Lock/PK Lukko/PK Supports Tukee DCDialogConnectionManager Connection Yhteys DCDialogDebug Send Lähetä Exit Poistu Save Talleta DCGUI Crash Handler DCGUI kaatumisen käsittelijä Send bugreport. Lähetä vikaraportti. Exit. Poistu. Save to file. Tallenna tiedostoon. Comment Kommentti &Save Tallenna (&S) S&end Lähetä (S&) E&xit Poistu(&x) Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Ei mitään Send Lähetä Receive Vastaanota Both Molemmat OK OK Cancel Peruuta malloc info DCDialogEditServer Form1 Lomake1 Settings Asetukset Name Nimi Host Palvelin Description Kuvaus Cancel Peruuta Accept Hyväksy Password Salasana Autoconnect automaattinen yhdistäminen DCDialogEditServer DCDialogiEditServer Profile Profiili Auto Connect Yhdistä automaattisesti Nick Nimimerkki Secure Socket Layer Secure Socket Layer &Cancel Peruuta (&C) &OK &OK &Profile &Profiili Tag Tagi EMail Sähköposti Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Muokkaa jakopolkua Alias Alias Path Polku &Cancel Peruuta (&C) &OK &OK DCDialogEditTransfer Edit Transfer Muokkaa Siirtoa Settings Asetukset Nick Lempinimi Hub name Hubin nimi Hub address Hubin osoite Cancel Peruuta Accept Hyväksy Known hubs Tunnetut hubit &Cancel Peruuta (&C) &OK &OK DCDialogFileBrowser Form1 Lomake1 New Column Uusi Sarake Name Nimi Size Koko File Type Tiedostotyyppi Open Avaa Save Talleta Encoding: Koodaus: Type Tyyppi TTH TTH Folder Kansio Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Tiedoston siirron tiedot File Tiedosto Size Koko Done Valmis Hash Hash Sources DCDialogForceMove OP Force Move OP pakottama siirto Please enter a host Please enter a message Kirjoita viesti OK OK Cancel Peruuta DCDialogGetURL Get URL Ota URL Cancel Peruuta &Cancel Peruuta (&C) DCDialogHubFilter Hub Filter Hubisuodatin Filter Suodatin Min. User Väh. käyttäjiä Contains Sisältää Cancel Peruuta Save Talleta Name Nimi Server Palvelin Description Kuvaus Settings Asetukset &OK &OK &Cancel Peruuta (&C) DCDialogHubListManager Hub List Hubilista Public Julkinen Name Nimi Server Palvelin Description Kuvaus User Käyttäjä double click to hide the toolbar tuplaklikkaa piilottaaksesi työkalupalkki edit filter Muokkaa suodatinta delete filter Tuhoa suodatin Filter Suodatin update public hublist Päivitä julkinen hubilista add filter lisää suodatin reload public hublist lataa julkinen hubilista uudelleen double click to show the toolbar tuplaklikkaa työkalupalkin näyttämiseksi Bookmarks Kirjanmerkit connect yhdistä Users Käyttäjät Shared Jaettu Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Lisää Edit bookmark. Edit Muokkaa Remove bookmark. Remove Poista DCDialogHubProfile Edit hub Profiles Muokkaa hubiprofiileja Profile Profiili Create Luo Delete Poista Save Talleta Settings Asetukset Password Salasana OK OK Auto Connect Automaattinen yhdistäminen Cancel Peruuta Hub profile editor Hubiprofiilin editori Nick Nimimerkki &OK &OK &Cancel Peruuta (&C) Tag Tagi EMail Sähköposti Description Kuvaus Secure Socket Layer Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Tulokset Nick Lempinimi File Tiedosto Size Koko Slot Paikka Hub Hubi Path Polku Log Loki Search Etsi Stop Pysäytä Results: Tulokset: Search Options Haku asetukset Connected Hubs Yhdistetyt Hubit Available Hubs Valittavat keskittimet Bookmark Hubs Merkityt Hubit Filter Suodatin Type Tyyppi At Least Vähintään At Most Enintään KB KT MB MT Any Kaikki MP3 MP3 Compressed Pakattu Document Dokumentti Executable Suoritettava Picture Kuva Video Video Folder Kansio Hub Search Hubihaku Host Palvelin Threads Istunnot GB GT Free Slots Vapaita Paikkoja Max Free Slots (0=off) Enintään Vapaita paikkoja (0=ei käytössä) Exact Tarkalleen B T 0/0 0/0 0 0 Search in path+file name only Etsi ainoastaan polusta+tiedoston nimestä Search History Hakuhistoria History Historia Hubs Hubit Hub Options Hubiasetukset Connected Hub yhdistetyt Hubit Refresh Päivitä Public Hubs Julkiset Hubit Expert Asiantuntija User Käyttäjä Search User Etsi käyttäjää Reset Nollaa Clients Asiakkaat Live filters Aktiiviset suodattimet Include: Lisää: Exclude: Poissulje: Apply Käytä Mode Tila Add Lisää User/File Käyttäjä/Tiedosto Search for a user or a file. Etsi käyttäjää tai tiedostoa. Start Aloita Start the search. Aloita haku. Add a search to the searchqueue Lisää haku hakujonoon Filtered Hubs Suodatetut hubit Multi Search Monihaku Enable Tag Käytä tagia Audio Ääni Hash Hash KiB MiB GiB Total Slots Purge Clear the search history Count Laskuri Ready Overall search status Clear search string and set search size, size mode and file type to default TTH TTH Any size At least At most Maximum results Unlimited IP IP DCDialogMagnet Magnet Link Details Link TTH TTH Name Nimi Size Koko Exact size Action Toiminnot Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Peruuta DCDialogMessage DCDialogMessage DCDialogMessage Do not show this again. Älä näytä tätä uudelleen. DCDialogOptions Options Asetukset Identify Tunniste Information Tiedot E-Mail: Sähköposti: Nick: Lempinimi: Description: Kuvaus: Speed: Nopeus: 56Kbps 56 Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Satelliitti ISDN ISDN DSL DSL Cable Kaapeli LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Roskaposti suoja (sähköposti at koti dot fi Transfer Siirto Filetransfer Tiedostosiirto Share Folders Jaa Kansiot Info Info Add Lisää Remove Poista Download Folder Kohdehakemisto Browse Selaa Upload Options Lähetys asetukset Limit transferrate (0=off) Rajoita siirtonopeutta (0=pois) Byte/sec. Tavua/sek. Connection Yhteys Settings Asetukset Mode Tila Active Mode Aktiivinen Tila Passive Mode Passiivinen Tila Passive Mode Settings Passiivisen Tilan Asetukset No multi hub search ! No incoming connections ! Ei usean keskittimen hakua! Ei sisääntulevia yhteyksiä! Active Mode Settings Aktiivisen Tilan asetukset TCP Listen Port: TCP Kuuntelee Porttia: 412 412 Hub Search Hubihaku UDP Listen Port: UDP Kuuntelee Porttia: Use ip from interface (ppp0,eth0) Käytä ip:tä liitännästä (ppp0,eth0) Test Kokeile Use wrong ip (Firewall/Portforward) Käytä väärää ip:tä (Firewall/porttiuudelleenohjaus) Interface IP Liitäntä IP Wrong IP Väärä IP GUI GUI GUI Options GUI Asetukset open private chat window avaa henkilökohtainen keskusteluikkuna Other Muut Other Options Muut Asetukset Hublist Hubilista Store local Tallenna koneelle Save Talleta Cancel Peruuta Windows Ikkuna Theme Teema Language File Kielitiedosto Reconnect Counter (0=off) Uudelleenyhdistämislaskuri (0=ei käytössä) Reconnect Timeout (sec.) Uudelleenyhdistämisen aikakatkaisu (sek.) Allow Force Move Salli Pakotettu Siirto Source Url's Lähde URL URL URL Max. upload slots (0=off) Enintään siirtopaikkoja (0=pois) change size values automatically to kb/mb/gb Vaihda kokoarvot automaattisesti kt/mt/gt Application Font Ohjelman Kirjasin Rebuild Päivitä Maximal upload connections. Enintään lähetysyhteyksiä. Transferrate for each slot. Siirtonopeus jokaiselle paikalle. Transfer Request Timings Siirtopyyntöjen ajoitukset Resend Timeout (sec.) Uudelleenlähetyksen aikakatkaisu (sek.) Response Timeout (sec.) Vastauksen aikakatkaisu (sek.) Hub Connections Hubiyhteydet Sound Ääni External Player Ulkoinen soitin Chat Keskustelu Units Yksikköt Auto Auto Byte Tavu GByte GTavu KByte KTavu MByte MTavu General Yleiset Disable Sound Ei ääniä Play a sound when receiving a message Soita ääni viestin saapuessa Play a sound when disconnecting from a hub soita ääni hubilta poistuttaessa Play a sound when receiving first message soita ääni ensinmäisen viestin saapuessa Play a sound when sending a message Soita ääni viestiä lähetettäessä Play a sound when connecting to a hub Soita ääni hubiin liityttäessä Disable sound when away Älä käytä ääniä poissaollessa Files Tiedostot Player Soitin Sound Files Äänitiedostot Connect Yhdistä Preview Esikatsele Disconnect Katkaise Send Lähetä Receive Vastaanota 1st Receive 1. Vaastaanotto Log Loki Timestamp Aikaleima Private Chat Henkilökohtainen keskustelu Hub Chat Hubikeskustelu Download Queue Vastaanottojono Save Queue in minutes (0=off) Tallenna jono joka N minuutti (0=ei tallennusta) Move Finished Files to this Folder (empty = disabled) Siirrä valmiit tiedostot tähän hakemistoon (tyhjä = ei käytössä) Use wrong ip/hostname (Firewall/Portforward) Käytä väärää IP/koneen nimeä (palomuuri/portin uudelleenohjaus) No multi hub search ! No incoming connections ! Ei multi hubi hakua ! Ei sisääntulevia yhteyksiä! Send warn message to remote user on active mode request Lähetä varoitusviesti vastapään käyttäjälle aktiivisen tilan kyselyssä Show Status Messages Näytä tilaviestit Open Private Chat Window Avaa yksityiset viestit ikkunaan Transfer Options Siirtoasetukset Transfer View Siirtonäkymä Chunk Percent Osan Prosentti File Percent Tiedoston Prosentti Chunk Size Osan Koko Download Rate Siirto nopeus File Size Tiedoston koko Search Nick: Etsi Lempinimeä: Remaining Time Jäljelläoleva Aika Send hide private chat to public chat Lähetä piilota henkilökohtaiset viestit julkisen keskustelun ikkunaan Chat options Keskusteluasetukset upload lähetys download vastaanotto Add Description Tag (<DCGUI ....>) Lisää Kuvaustagi (<DCGUI ...>) Max. rate B/s (0=off) Max. nopeus B/s (0=ei rajoitusta) Folder Kansio New Column Uusi Sarake Away Message: Poissaolo viesti: Get Vastaanota Refuse private chat messages from offline users Kieltäydy henkilökohtaisista viesteistä Poissaolevilta käyttäjiltä Your line speed. Sinun linjanopeus. Your nick. Nimimerkkisi. The nick for hub searches. Hubihakujen lempinimi. Your EMail. Sähköpostisi. Enable/Disable the Anti-spam option. Käytä/älä käytä roskaposti suojausta. A little description. Lyhyt kuvaus. Add a tag to the description that show some information from you. Lisää tagi kuvaukseen joka näyttää tietoja sinusta. The tcp listen port for incoming connections. TCP portti jota kuunnellaan sisääntulevissa yhteyksissä. The udp listen port for incoming search results. UDP portti jota kuunnellaan sisääntulevissa haun vastauksissa. Get the ip from the interface. Ota ip verkkoliitännältä. Select a interface. valitse verkkoliitäntä. Get the ip from the host. Ota ip koneelta. The time between a reconnect. uudelleenyhdistämisen viive. How often we reconnect to a hub. Kuinka monta kertaan yritetään yhdistää hubiin. Rebuild your sharelist. Päivitä jakolistasi. Add a folder to your sharelist. Lisää kansio jakolistaan. Remove a folder from your sharelist. Poista kansio jakolistasta. Show some information about your sharelist. Näytä tietoja jakolistastasi. Browse your own share list. Selaa omaa jakolistaasi. Time to wait for a transfer response from the remote user. Odotetaan vastausta siirtopyyntöön toiselta käyttäjältä. Time to wait before a new transfer request is send to the remote user. viive uuden siirtopyynnön lähettämiseen toiselle käyttäjälle. Test the new theme. Kokeile uutta teemaa. Open the chat window on incoming messages. Avaa keskusteluikkuna sisääntuleville viesteille. Enable emoticons in chat Ota hymiöikonit käyttöön keskustelussa Data Folder Datahakemisto Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S User Käyttäjä Show Version Tag in User-Description Näytä versiotieto käyttäjäkuvauksessa Messages Viestit Query on exit Vahvista poistuttaessa Logfile Lokitiedosto Logfile enabled Lokitiedosto käytössä Security Turvallisuus Flood Protection Tulvasuojaus Kick Message Potkuviesti Private Address Space (rfc1918) yksityinen osoiteavaruus (rfc1918) Ignore private address space connections hylkää henkilökohtasen osoiteavaruuden yhteydet Query Kysely Client Asiakas User-List Options Käyttäjälista asetukset User-List right alignment Käyttäjälista oikealle tasattu Don't Display Messages after X retry (0=off) Älä näytä viestejä N yrityksen jälkeen (0=ei käytössä) Kick the user for flooding (only for Operators) Potki käyttäjä tulvasta (vain Operaattoreille) Show send button Näytä Lähetä-nappi Dynamic upload rate Dynaaminen lähetysnopeus Hide popups of more than Piilota popupit useammat kuin Send message with Lähetä viestit lines (0=off) rivejä (0=ei käytössä) Browser Selain Use tab for every chat window Käytä lehdykettä jokaiselle keskusteluikkunalle Color remote vastapään väri Max. paragraphs (0=off) Enintään kappaleita (0=ei käytössä) Client options Asiakasasetukset Show client windows minimized Näytä asiakasikkuna pienennettynä Max. uploads to user (0=off) Enintään siirtoja yhdelle käyttäjälle (0=ei käytössä) Color Väri Transfer Cert/Key Siirtosertifikaatti/-avain User quitting hub Käyttäjä poistuu hubilta If user quits hub, stop following transfers Jos käyttäjä poistuu hubilta, lopeta seuraavat siirrot Upload Lähetys Both Molemmat Download Vastaanotto None Ei mitään Auto-Search Automaattinen haku Auto-Search for new sources Hae uusia lähteitä automaattisesti Download Rate Single Siirtonopeus yhdeltä Download Rate Multi Siirtonopeus yhteensä Remaining Time Single Jäljelläoleva aika yhdeltä Remaining Time Multi Jäljelläoleva aika yhteensä Reload every hour (0=off) Päivitä N tunnin välein (0=ei käytössä) Max. rate KB/s (0=off) maksimi nopeus KT/s (0=ei käytössä) Path Polku Alias Alias Edit Muokkaa Edit a folder from the sharelist. Muokkaa hakemistoa jakolistasta. Open File Dialog. Avaa tiedosto dialogi. Add a URL to the list. Lisää URL listaan. Remove a URL from the list. Poista URL listasta. 28.8Kbps 28.8Kbps Enable logging Käytä lokia Append date to log file name Liitä päiväys logitiedoston nimeen Nick name filter Lempinimi suodatin Enable nick name filter Käytä nimimerkki filteriä Disable logging for public chat Älä käytä lokia julkisiin keskusteluihin Append hub name to log file name Liitä hubin nimi lokitiedoston nimeen Append hub host to log file name Liitä hubin osoite lokitiedoston nimeen &Save Tallenna (&S) &Cancel Peruuta (&C) Forward private to public chat Ohjaa yksityiset viestit julkisen keskustelun ikkunaan Away Prefix: Poissa etuliite: Select Language. Valitse kieli. Recreate every hour (0=off) luo uudelleen joka n:s tunti (0= ei käytössä) Check and recreate sharelist on startup Tarkista ja luo uudelleen jakolista käynnistettäessä seconds Sekuntia Away after Poissa jälkeen Auto Away Mode Automaattinen poissa tila Ignore messages to offline users Hylkää viestit käyttäjille jotka ovat offline tilassa Ignore messages from offline users Hylkää viestit käyttäjiltä jotka ovat offline tilassa Show joins and parts Näytä liittymiset jä poistumiset Columns Sarakkeet Comment Kommentti Speed Nopeus EMail Sähköposti Share Jako Photo Kuva Query on File Delete Vahvista tiedoston poisto Tag Tagi IP, Hostname or Interface IP, koneen nimi tai Liityntä IP or Hostname IP tai Koneen nimi Network Interface Verkkoliityntä Listen on IP Kuuntele IP:tä IP IP Lock PK Lukitse PK Supports Tukee Get Internet IP Hae Internet IP Get Interface Hae liityntä Update every hour (0=off) Päivitä kerran tunnissa (0=ei käytössä) Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Nimi Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser tiedostolistaselain Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normaali Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList Server List Palvelin lista connect yhdistä Public Julkinen reload Lataa uudelleen Name Nimi Server Palvelin Description Kuvaus User Käyttäjä update Päivitä 0 0 servers Palvelimet Bookmarks Kirjanmerkit Hub List Hubilista Filter Suodatin Add Lisää Edit Muokkaa Del Poista 0/0 0/0 double click to hide the toolbar Tuplaklikkaa piilottaaksesi työkalupalkki edit filter Muokkaa suodatinta delete filter Tuhoa suodatin update public hublist Päivitä julkinen hubilista add filter lisää suodatin reload public hublist lataa julkinen hubilista uudelleen double click to show the toolbar tuplaklikkaa työkalupalkin näyttämiseksi DCDialogSplash Form1 Lomake1 Dcgui Dcgui Valknut DCDialogSpy Spy Vakoile Spy On/Off Vakoilu päällä/pois Clear Tyhjennä Text Teksti Count Laskuri Statistic Tilastotiedot Active: Aktiivinen: 0 0 Reject: Hylkäys: Results: Tulokset: Search Error: Hakuvirhe: Result Error: Tulosvirhe: Passive: Passiivinen: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Siirtolista Nick Lempinimi Server Palvelin State Tila Transfer Siirto File Tiedosto Wait Odottaa Size Koko Log Loki Slots Paikat Hub Hubi 0/0 0/0 Files Tiedostot Local File / Nick Paikallinen Tiedosto / Lempinimi Size / Hub Koko / Hubi Remote File Vastapään tiedosto Server/User IP Palvelimen/käyttäjän IP double click to hide the toolbar tuplaklikkaa piilottaaksesi työkalupalkki double click to show the toolbar tuplaklikkaa työkalupalkin näyttämiseksi Local File Paikallinen Tiedosto File Name Tiedostonimi Hub/File Hubi/Tiedosto IP/Size IP/Koko TTH TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Peruuta DCDialogUpdateManager Update Manager Päivityshallinta Update Päivitä Check update Tarkista päivitys DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Keskustelu PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Nimi Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Peruuta DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Peruuta DCDialogUsersList Users List Käyttäjät lista Friends Ystävät User Käyttäjä Server name Palvelimen nimi Description Kuvaus Friend-List Ystävälista Photo Kuva Slot Paikka Ignore DCEditServer Please enter a hubname. Kirjoita hubin nimi. Please enter a hubhost. Kirjoita hubin osoite. DCFileBrowser Items Esineet Files Tiedostot Total Yhteensä Directories Hakemistot Root Directory Juurihakemisto <wrong length> <väärä pituus> file tiedosto Select destination Valitse kohde Select a filename Valitse tiedostonimi open filelist dialog avaa tiedostolista dialogi Choose a file Valitse tiedosto save file dialog Tallenna tiedosto dialogi Choose a filename to save under Valitse tiedoston nimi jolle tallennetaan Filebrowser Tiedostoselain Folder Kansio Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Tiedosto does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Ei mitään Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Tiedoston siirto File allready download Tiedosto jo siirrossa File allready exist ! Tiedosto on jo ! Resume Jatka Overwrite Ylikirjoita Cancel Peruuta Start Multi Download Aloita Multisiirto File allready in the queue and not mark as multi download ! Tiedosto on jo jonossa ja ei ole merkitty multisiirroksi ! File allready in the queue with a different size ! Tiedosto on jo jonossa eri kokoisena ! You can start a Multi Download ! Voit aloittaa multisiirron ! The same user/file is allready in the queue ! sama käyttäjä/tiedosto on jo jonossa ! A same file is allready in the queue ! Sama tiedosto on jo jonossa ! If you want to download all files in this mode ? Halutako siirtää kaikki tiedostot tässä tilassa ? Not connected to required hub! Kyseiselle hubille ei liitytty! Connect Yhdistä (choose an existing download to add to) (valitse olemassa oleva siirto johon lisätään) A same file is already in the queue! Sama tiedosto on jo jonossa! Start a multi-download Aloita monisiirto File is already in the queue but not mark as a multi-download! Tiedosto on jo jonossa, muttei ole merkitty monisiirtoon! File is already in the queue with a different size! Tiedosto on jo jonossa eri koolla! File already downloaded! Tiedosto on jo siirretty! File already exists! Tiedosto on jo olemassa! You can start a multi-download! Voit aloittaa monisiirron! Do you want to download all files in this mode? Haluatko siirtää kaikki tiedostot tässä tilassa? DCFileTransferInfo File Transfer Info Tiedoston siirron tiedot DCGuiApp Options Asetukset &Options Asetukset(&O) Ctrl+O Ctrl+O Open option dialog Avaa Asetukset Exit Poistu E&xit Poistu(&x) Ctrl+Q Ctrl+Q Quits the application Sulkee Ohjelman Exit Quits the application Poistu Sulkee ohjelman Toolbar Työkalurivi Tool&bar Työkalurivi(&b) Enables/disables the toolbar Ottaa/poistaa käytöstä työkalurivin Toolbar Enables/disables the toolbar Työkalurivi Ottaa/poistaa käytöstä työkalurivin Statusbar Tilarivi &Statusbar Tilarivi(&S) Enables/disables the statusbar Ottaa/poistaa käytöstä tilarivin Statusbar Enables/disables the statusbar Tilarivi Ottaa/poistaa käytöstä tilarivin Cascade Pinoa &Cascade Pinoa(&C) Cascades all windows ketjuttaa kaikki ikkunat Cascade Cascades all windows Pinoa Pinoa kaikki ikkunat Tile Järjestä &Tile Järjes&tä Tiles all windows Järjestää kaikki ikkunat Tile Tiles all windows Järjestä Järjestää kaikki ikkunat Server List Palvelin lista &Server List Palvelin Lista (&S) Ctrl+S Ctrl+S Show Server List Näytä palvelin lista Transfer List Siirtolista &Transfer List Siir&tolista Ctrl+T Ctrl+T Show Transfer List Näytä siirtolista Hub Search Hubihaku &Hub Search Keskintin &Haku Ctrl+H Ctrl+H Show Hub Search Näytä Hubihaku About Tietoja &About... Tietoj&a... About the application Tietoja ohjelmasta About About the application Tietoja Tietoja ohjelmasta New Version Uusi versio &New Version... Uusi versio (&N)... Check for new version Tarkista uusin versio New Version Check for new version Uusi versio Tarkista uusin versio What's &This Mikä &tämä on &File Tiedosto (&F) &View Näytä (&V) &Action Toimint&a &Window Ikkuna (&W) &Help Apua (&H) Ready. Valmis. (no error message from socket) (ei virheilmoitusta portilta) TCP listen failed, change to passive mode ! TCP:n kuuntelu epäonnistui, vaihdetaan passiiviseen tilaan! Quit... Lopeta... Do your really want to quit? Haluatko varmasti lopettaa? Open options dialog... Avaa asetukset... Exiting application... Poistutaan ohjelmasta... Toggle toolbar... Vaihda työkalurivi... Toggle statusbar... Vaihda tilarivi... About... Tietoja... New version... Uusin versio... Show/hide transfer list window ... Näytä/piilota siirtolista ikkuna ... Show/hide server list window ... näytä/piilota palvelinlistaikkuna.... Show/hide hub search window ... Näytä/piilota keskittimen etsintä ikkuna ... file operations Tiedostojen käsittely Can't get version info from server Ei voida hakea versiotietoa palvelimelta Current version is: Nykyinen versio on: Normal Normaali &Normal &Normaali Ctrl+N Ctrl+N Set away mode Aseta pois tilaan Away Poissa &Away Poiss&a Ctrl+A Ctrl+A Hub List Hubilista Show Hub List Näytä Hubilista Show/hide hub list window ... Näytä/piilota hubilista ikkuna ... H&ub List H&ubilista Ctrl+U Ctrl+U Minimize Pienennä &Minimize Pienennä(&M) Minimize all windows Pienennä kaikki ikkunat Minimize Minimize all windows Pienennä Pienennä kaikki ikkunat Action Toiminnot Quick Options Pika-asetukset Quick options Pika-asetukset F12 F12 Context menu for a few options konteksi valikko muutamille asetuksille Download mode: Ask Lataus tila: Kysy Download mode: Single Lataus tila: Yksi Download mode: Multi Lataus tila: Multi Spy Vakoilu &Spy Vakoilu(&S) Show Spy Näytä Vakooja Show/hide spy window ... Näytä/piilota vakoilu ikkuna ... Users Käyttäjät Ctrl+F Ctrl+F Show users: search tab and friends tab Näytä käyttäjät: etsi lehdyke ja ystävät lehdyke Do you really want to quit? Haluatko varmasti lopettaa? Exiting application... aborted Poistutaan ohjelmasta ... poistuttu Show/hide users window ... Näytä/piilota käyttäjät ikkuna ... Away &Mode Poissa-tila (&M) Close chat windows Sulje keskusteluikkuna Close all chat windows Sulje kaikki keskusteluikkunat Close chat windows Close all chat windows Sulje keskusteluikkuna Sulje kaikki keskusteluikkunat Close disconnected hubs Sulje irroitetut hubit Close all disconnected hub windows Sulje kaikki irroitettujen hubien ikkunat Close disconnected hubs Close all disconnected hub windows Sulje irroitetut hubit Sulje kaikki irroitettujen hubien ikkunat Tile &Horizontally Pinoa &Horisontaalisesti Tiles all windows horizontally Pinoaa kaikki ikkunat horisontaalisesti Tile Horizontally Tiles all windows horizontally Pinoa Horisontaalisesti Pinoaa kaikki ikkunat horisontaalisesti Reload Plugins Lataa pluginit uudelleen &Reload Plugins Lataa pluginit uudelleen (&R) Dock Telakoi &Dock Telakoi (&D) Dock the application Telakoi ohjelman Dock Dock the application Telakoi Telakoi ohjelman Hub &Search Hubihaku (&S) S&py Vakooja (&p) Ctrl+P Ctrl+P Dock/Undock application... Telakoi/palauta ohjelma... Recreate share Luo jako uudelleen Refresh share in progress. Jaon päivitys käynnissä. Refresh share allready in progress. jaon päivitys on jo käynnissä. Exit Quits the application. Exit Sulkee ohjelman. Toolbar Enables/disables the toolbar. Työkalupalkki ottaa/poistaa käytöstä työkalupalkin. Statusbar Enables/disables the statusbar. Tilapalkki Ottaa/poistaa tilapalkin käytöstä. Dock Dock the application. Telakoi Telakoi ohjelman. Cascade Cascades all windows. Ketjuta Ketjuttaa kaikki ikkunat. Tiles all windows horizontally. pinoaa kaikki ikkunat horisontaalisesti. Tile Horizontally Tiles all windows horizontally. Pinoa horisontaalisesti. Pinoaa kaikki ikkunat horisontaalisesti. Minimize all windows. minimoi kaikki ikkunat. Minimize Minimize all windows. Minimoi Minimoi kaikki ikkunat. Close chat windows. Sulje keskusteluikkunat. Close all chat windows. sulje kaikki keskusteluikkunat. Close chat windows Close all chat windows. Sulje keskusteluikkunat Sulkee kaikki keskusteluikkunat. Close disconnected hubs. Sulje irroitetut hubit. Close all disconnected hub windows. sulje kaikki irroitettujen hubien ikkunat. Close disconnected hubs Close all disconnected hub windows. Sulje irroitetut hubit sulkee kaikki hubien ikkunat johon ei olla yhdistettynä. Show Hub List. Näytä hubilista. Show Transfer List. Näytä siirtolista. Show Hub Search. Näytä hubihaku. Show users: search tab and friends tab. näytä käyttäjät: Hakulehdyke ja ystävät lehdyke. Set away mode. Aseta poissa tila. About the application. Ohjelmasta. About About the application. Tietoja Tietoja ohjelmasta. Support Tuki &Support... Tuki(&S)... Connect to DCGUI-QT hub Yhdistä DCGUI-QT hubiin Support Connect to the DCGUI-QT hub. Tuki Yhdistä DCGUI-QT hubille. Refresh share finished. Jaon pävitys valmistui. Refresh share already in progress. Jaon päivitys on jo käynnissä. RX/TX Traffic. RX/TX liikenne. Available disc space. Käytettävä levytila. Tile Vertically Pinoa vertikaalisesti &Tile Vertically Pinoa vertikaalisesti (&T) Tiles all windows vertically Pinoaa kaikki ikkunat vertikaalisesti Tile Vertically Tiles all windows vertically. Pinoa vertikaalisesti Pinoaa kaikki ikkunat vertikaalisesti. Filelist browser tiedostolistaselain Open filelist browser avaa tiedostolistaselain Latest release Uusin julkaisu &Latest release... Uusin julkaisu (&L)... Latest release Show latest release. Uusin julkaisu Näytä uusin julkaisu. Can't get release info from server Julkaisutietoa ei saatu palvelimelta latest release is: uusin julkaisu on: Latest release... Uusin julkaisu... Show update manager Näytä päivityshallinta Show/hide update manager window ... Näytä/piilota päivityshallintaikkuna ... Warning license file not found ! Varoitus Lisenssitiedostoa ei löytynyt ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Update Manager Päivityshallinta Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Ikkuna Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Julkinen Bookmarks Kirjanmerkit Add Bookmark Lisää kirjanmerkki Error Virhe Please enter a hubname. Kirjoita hubin nimi. Please enter a hubhost. Kirjoita hubin osoite. Edit Bookmark Muokkaa kirjanmerkkiä Remove bookmarks Poista kirjanmerkit You are sure ? Oletko varma ? Remove Poista Cancel Peruuta Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Luo Hubiprofiili Please enter the profile name Anna profiilin nimi Save profile Tallenna profiili Do you want to save your changes? Haluatko tallentaa muutokset? Save Tallenna Cancel Peruuta Are you sure? Delete profile for DCHubSearch Serverlist done Palvelinlista noudettu Search on: [ Etsitään: [ Hubsearch is only available in active mode. Keskitinhaku on valittavissa ainoastaan aktiivitilassa. You must enter a search word. Hakusana täytyy laiitaa. Connect to local udp port failed. ( Yhdistäminen paikalliseen udp porttiin epäonnistui. ( No hubs found. Hubeja ei löydetty. Hub Search Error Hubihaku epäonnistui No connected hubs found. Kytkettyjä Hubeja ei löydetty. SocketError on Porttivirhe Hub is full on Keskitin on täynä Force move on Pakota siirtyminen Select download folder Valitse kohdehakemisto Select file Valitse tiedosto Select search Valitse haku Please select an search Valitse haku Please select a connected hub. Valitse yhdistettu hubi. Select file for Valitse tiedosto No search found. Ei löydetty. USER KÄYTTÄJÄ FILE TIEDOSTO List download Lataa käyttäjälista Not connected to required hub! Kyseiselle hubille ei liitytty! Connect Yhdistä Cancel Peruuta save file dialog Tallenna tiedosto dialogi Choose a filename to save under Valitse tiedoston nimi jolle tallennetaan open file dialog avaa tiedosto dialogi Choose a file to open Valitse avattava tiedosto External search is allready running ! Ulkoinen haku on jo käynnissä ! Please add a search ! Lisää haku ! Start Aloita Stop Pysäytä Multi Search only work in active mode ! Multihaku toimii vain aktiivisessa tilassa ! Filelist download tiedostolistan lataus External search is already running! Ulkoinen haku on jo käynnissä! Please add a search! Lisää haku! Multi Search only work in active mode! Monihaku toimii ainoastaan aktiivisessa tilassa! Folder Kansio Unknown Tuntematon None Ei mitään Directory File Tiedosto Search ended with %1 results %1 results were filtered on päällä Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Hubihaku Another search is running. Stop other search? Folder download Add search Invalid TTH DCMenuHandler Download Siirto itselle Download To Siirrä mihin Download As Siirrä mille nimelle Browse User Files Selaa käyttäjän tiedostoja Private Chat Henkilökohtainen keskustelu Kick Potkaise Force Move Pakota siirtyminen Update User Päivitä käyttäjä Connect Yhdistä Disconnect Katkaise Reload Userlist Lataa käyttäjälista uudelleen Connect To Hub Yhdistä keskittimeen Add Lisää Add Bookmark Lisää kirjanmerkki Edit Muokkaa Edit Bookmark Muokkaa kirjanmerkkia Remove Poista Close Transfer Sulje Siirto Info Info Try Connect Yritä yhdistää Remove from Queue Poista jonosta Remove Transfer from Queue and Disk Poista siirto jonosta ja levyltä Add Slot to User Lisää Paikka käyttäjälle Remove Slot from user Poista paikka käyttäjältä Add Permanent Slot to User Lisää pysyvä portti käyttäjälle Save Queue Tallenna jono Update Server Päivitä palvelin Update all Server Päivitä kaikki serverillä DCOptions You must enter a valid 'Fake Host' ! Sinun täytyy kirjoittaa oikea 'väärä isäntä' ! You must enter a valid interface ! Sinun täytyy antaa oikea liitäntä ! You must enter a valid tcp listen port ! Sinun täytyy antaa oikea tcp kuuntelu portti ! You must enter a valid udp listen port ! Sinun täytyy antaa oikea udp kuuntelu portti ! You must enter a valid nick ! Sinun täytyy antaa käypä lempinimi ! Interface IP : Liitännän IP: Can't get interface IP ! Ei saada liitännän IP:tä! Select download folder Valitse kohde hakemisto Select share folder Valitse jaettava hakemisto Select language file Valitse Kielitiedosto HubList URL Hubilistan URL Please enter a url Anna URL Share list not available Jakolistaa ei ole saatavilla Compressed list size: pakatun listan koko: bytes tavua Total shared: Yhteensä jaettu: Share List Info Jakolistan Tiedot You change the client mode ! Please restart DCGUI ! Vaihdoit asiakastilaa! Käynnistä DCGUI uudelleen ! My Minun Select sound file Valitse äänitiedosto Select sound player Valitse soitin au au wav wav All Files Kaikki Tiedostot Host IP : Isännän IP : Can't get Host IP ! Ei saatu isännän ip:tä ! Select download finished folder Valitse valmiiden siirtojen hakemisto You must set a Download Folder ! Siirtohakemisto täytyy asettaa ! Download Finished Folder and Download Folder must be different ! siirtohakemiston ja valmiiden siirtojen hakemisto eivät saa olla sama! You must enter a valid search nick ! Hakulempinimi täytyy antaa ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Kuuntelet porttia < 1024 ! Vain root voi käyttää näin aktiivista tilaa ! Other Muut Log Loki Sound Ääni General Yleiset Files Tiedostot GUI GUI Chat Keskustelu Transfer Siirto Connection Yhteys Mode Tila Settings Asetukset DCGUI DCGUI Identify Tunniste Folder Kansio Interface List Liitäntälista Please select an interface Valitse liitäntä No interfaces found ! Liitäntöjä ei löydetty ! Select data folder valitse datahakemisto User Käyttäjä Select log file Valitse lokitiedosto Security Turvallisuus Select a browser Valitse selain Compressed list size (HE3/BZ): Pakatun tiedostolistan koko (HE3/BZ): Select transfer cert Valitse siirtosertifikaatti Select transfer key Valitse siirtoavain Edit Alias Muokkaa aliasta Please enter a new alias Anna uusi alias Browse Share List Selaa jakolistaa Add new nick name filter Lisää lempinimi suodatin Please enter a nick Syötä lempinimi Chat Timestamp Keskustelun aikaleima Chat Local Nick Keskustelun paikallinen lempinimi Chat Local Text Keskustelun paikalinen teksti Chat Remote Nick Keskustelun etälempinimi Chat Remote Text Keskustelun etäteksti Chat Status Nick Keskustelun tilan lempinimi Chat Status Text Keskustelun tilan teksti Public Chat Timestamp Julkisen keskustelun aikaleima Public Chat Local Nick Julkisen keskustelun paikallinen lempinimi Public Chat Local Text Julkisen keskustelun paikallinen teksti Public Chat Remote Nick Julkisen keskustelun etä lempinimi Public Chat Remote Text Julkisen keskustelun etäteksti Public Chat Status Nick Julkisen keskustelun tilan lempinimi Public Chat Status Text Julkisen keskustelun tilan teksti Public Private Chat Nick Julkisen keskustelun yksityisen keskustelun lempinimi Public Private Chat Text Julkisen keskustelun yksityisen keskustelun teksti Can't save Image ! Kuvaa ei voida tallettaa ! Can't load Image ! Kuvaa ei voida ladata ! Select a 64x64 Photo Valitse 64x64 kuva You change the client mode! Please restart DCGUI! Muutit asiakkaan tilaa! käynnistä DCGUI-QT uudestaan! You must set a Download Folder! Siirtohakemisto täytyy asettaa! Download Finished Folder and Download Folder must be different! siirtohakemisto ja valmiiden siirtojen hakemisto eivät saa olla sama! You must enter a valid 'Fake Host'! Sinun täytyy kirjoittaa oikea 'väärä isäntä'! You must enter a valid interface! Sinun täytyy antaa oikea liityntä! You must enter a valid tcp listen port! Sinun täytyy antaa oikea tcp kuunteluportti! You must enter a valid udp listen port! Sinun täytyy antaa oikea udp kuuntelu portti! You have set DCGUI-QT to listen on a port < 1024! You can run DCGUI-QT only as root in active mode! Olet asettanut DCGUI-QT:n kuuntelemaan porttia < 1024! Et voi ajaa DCGUI-QT:tä kuin roottina aktiivisessa tilassa! You must enter a valid nick! Sinun täytyy antaa käypä nimimerkki! You must enter a valid search nick! Hakunimimerkki täytyy antaa! Can't save Image! Kuvaa ei voida tallentaa! Can't load Image! kuvaa ei voida ladata! Can't get Host IP! Isännän IP:tä ei saatu! No interfaces found! Liityntöjä ei löytynyt! Can't get interface IP! liitynnän IP:tä ei saatu! Chat Say Keskustelu sano Host IP: Isännän IP: Interface IP: Liitynnän IP: Latest release... Uusin julkaisu... Can't get your ip IP:tä ei saatu Hub Lists Public Chat ME Nick You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser tiedostolistaselain Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Hae Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Asiakas DCServerList Add Bookmark Lisää kirjanmerkki Edit Bookmark Muokkaa kirjanmerkkia Select profle Valitse profiili Please select an profile valitse profiili Public Julkinen Bookmarks Kirjanmerkit Error Virhe Remove Poista Cancel Peruuta DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Odottaa Idle Ei aktiivinen Run Käynnissä Transfer Siirto Error Virhe Download Vastaanotto Upload Lähetys Unknown Tuntematon Pause Pysäytetty Hub offline Hubi ei linjoilla User offline Käyttäjä ei linjoilla User busy Käyttäjä varattu Send error Lähetysvirhe Change Transfer-Rate Muuta siirtonopeutta Please enter a Transfer-Rate [B/s] (0=off) anna siirtonopeus [B/s] (0=ei käytössä) Change File-Priority Muuta tiedoston tärkeyttä Please enter a priority Anna tärkeys Handshake Kättely Nothing Ei mitään Remove Poista Cancel Peruuta Filebrowser Tiedostoselain Try Connect Yritä yhdistää User and Hub not found in the queue ! Käyttäjää ja hubia ei löytynyt jonosta ! Nick: Lempinimi: Hub: Hubi: Remove Transfer Poista siirto You are sure ? Oletko varma ? My Minun Browse Share List Selaa jakolistaa Share list not available Jakolistaa ei ole saatavilla None Ei mitään File Tiedosto %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Kääntäjä Choose a language Valitse kieli Chinese Simplified to English englanti Chinese Traditional Dutch hollanti French ranska German saksa Greek kreikka Italian italia Japanese Korean Portuguese Russian venäjä Spanish espanja Detect language Arabic Bulgarian Chinese Croatian Czech tsekki Danish tanska Finnish suomi Hindi Norwegian norja Polish puola Romanian romania Swedish ruotsi OK OK Cancel Peruuta Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUpdateManager Download failed lataus epäonnistui Update finished Päivitys valmistui Download content lataa sisältö Download content failed sisällön lataus epäonnistui Download update.xml lataa update.xml Download update.xml failed update.xml:n lataus epäonnistui Update available for Päivitys saatavilla update(s) available Päivityksiä saatavilla DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Nimi Server Palvelin Description Kuvaus Users Käyttäjät Country Shared Jaettu Minimum share Extra QObject Download Vastaanotto Download To Siirrä mihin Download As Siirrä mille nimelle Browse User Files Selaa käyttäjän tiedostoja Private Chat Henkilökohtainen keskustelu Kick Potkaise Force Move Pakota siirtyminen Update User Päivitä käyttäjä Connect Yhdistä Disconnect Katkaise Reload Userlist Lataa käyttäjälista uudelleen Connect To Hub Yhdistä hubiin Add Lisää Add Bookmark Lisää kirjanmerkki Edit Muokkaa Edit Bookmark Muokkaa kirjanmerkkia Remove Poista Close Transfer Sulje siirto Info Info Try Connect Yritä yhdistää Remove from Queue Poista jonosta Remove Transfer from Queue and Disk Poista siirto jonosta ja levyltä Add Slot to User Lisää paikka käyttäjälle Add Permanent Slot to User Lisää pysyvä paikka käyttäjälle Remove Slot from user Poista paikka käyttäjältä Save Queue Tallenna jono Update Server Päivitä palvelin Update all Server Päivitä kaikki palvelimet Change Transfer-Rate Muuta siirtonopeutta Copy row to Clipboard Kopioi rivi leikepöydälle Copy column to Clipboard kopioi sarake leikepöydälle File Info Tiedot tiedostosta Connect To All Hubs Kytkeydy kaikille hubeille Search for clones Etsi samaa Remove complete from Queue poista valmiit jonosta Load Lataa Save Talleta Edit Hub Profiles Muokkaa Hubiprofiileja Set Hub Profile Aseta hubiprofiili Add this extra source Lisää tämä uusi lähde Edit transfer Muokkaa siirtoa Edit file priority Muokkaa tiedoston tärkeyttä Translate Käännä Translator Kääntäjä Disable group poista ryhmitys Group by File ryhmitä tiedoston mukaan Group by Size ryhmitä koon mukaan Group by Nick ryhmitä lempinimen mukaan Group by free Slots ryhmitä vapaide paikkojen mukaan Group by Hub ryhmitä hubien mukaan Group by Path ryhmitä polun mukaan Group by Host ryhmitä isännän mukaan Copy Kopioi Clear Tyhjennä Select all Valitse kaikki Close Sulje Group Ryhmitys Hide Piilota Refresh Filelist Päivitä tiedostolista Pause Queue Pysäytä jono Resume Queue Jatka jonoa Insert Smiley Lisää hymiö Add Friend Lisää ystävä Czech tsekki Danish tanska Dutch hollanti Finnish suomi France ranska German saksa Hungarian unkari Icelandic islanti Italy italia Norwegian norja Polish puola Romanian romania Spanish espanja Swedish ruotsi Copy Link Kopioi linkki Text Encoding Tekstin koodaus Request secure chat Pyydä salattua keskustelua Close secure chat sulje salattu keskustelu Input Syöte Output Tuloste Profile editor profiilieditori Reset Nollaa Dock Telakoi Undock irroita Exit Poistu Custom Oma Latvian latvia Russian venäjä Slovak slovakia Check client version tarkista asiakkaan versio Add Permanent Lisää pysyvä Group by Hash ryhmitä hash:n mukaan Upload Slot päivitä paikka Bosnian bosnia English englanti French ranska Greek kreikka Italian italia Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Käyttäjä: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (valitse olemassa oleva siirto johon lisätään) File download Tiedoston siirto A same file is already in the queue! Sama tiedosto on jo jonossa! Start a multi-download Aloita monisiirto Cancel Peruuta File is already in the queue but not mark as a multi-download! Tiedosto on jo jonossa, muttei ole merkitty monisiirtoon! File is already in the queue with a different size! Tiedosto on jo jonossa eri koolla! File already downloaded! Tiedosto on jo siirretty! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Tiedosto on jo olemassa! Resume Jatka Overwrite Ylikirjoita File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Kyseiselle hubille ei liitytty! Group by total Slots Download Folder Kohdehakemisto Zoom in Zoom out Group by IP SearchSpyModel Text Teksti Count Laskuri Time UserListModel Nick Comment Kommentti Tag Tagi Speed Nopeus Email Share Jako IP IP Lock/PK Lukko/PK Supports Tukee valknut-0.4.9/valknut/ts/valknut.bs.ts0000664000076400007640000125114311144234504016124 0ustar ejsejs DCBrowseFileTree Select destination Izaberi destinaciju Select a filename Izaberi ime datoteke <wrong length> <pogresna dužina> Choose a filename to save under Izaberite ime datoteke pod kojom će te je spremiti na PC DCChat Message not send ! Poruka nije poslana ! Private Chat: Privatni razgovor: Chat Cleared. Razgovor je obrisan. Translation: Prevod: Translation failed: Prevod nije uspjeo: Current mode: Trenutni modus: active aktivni passive pasivni Refresh share in progress. Ponovno učitavanje je u toku. Refresh share allready in progress. Ponovno učitavanje je već u toku. Switch timestamp Promjeni izgled datuma Send advertisment. Pošalji reklamu. Wrong parameter for '/join' Pogrešan parametar za '/join' Join to: Uključi se na: Wrong parameter for '/msg' Pogrešan parametar za '/msg' Private message send. Privatna poruka je poslana. Private message not send ! Privatna poruka nije poslana! Away message disabled. Odsutan poruka je onesposobljena. Away message set. Odsutan poruka je podešena. Line is encrypted. Linija je zaštićena. Line is not encrypted. Linija nije zaštićena. Help: Pomoć: /clear - clear the chat window /clear - izbriši razgovor u prozoru /mode - show current mode /mode - pokaži trenutni modus /refresh - refresh share /refresh - ponovo učitaj djeljene stvari /ts - switch time display in chat on/off /ts - uključi vrijeme u razgovoru on/off /dcgui - send an advertisment to the hub /dcgui - posalji reklamu u hub Choose a filename to save under Izaberi ime pod kojim ćeš spremiti datoteku na PC /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;address&gt; - isključen iz trenutnog hub i uključen u drugi hub /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nick&gt; &lt;message&gt; - posalji privatnu poruku /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;message&gt; - podesi auto-odgovor za privatne poruke; ako je prazna, iskljuci je Select download folder Izaberi download katalog Select file for Izaberi datoteku za Text Encoding Tekst Encoding Choose a codec Izaberi codec Photo received. Slika je primljena. Only allowed in private chat. Samo je dozvoljeno u pivatnom razgovoru. Client use wrong version. Korisnik koristi pogrešnu verziju. No Photo found. Slika nije pronadjena. Can't read photo. Nemogu da ucitam sliku. Photo encode error. Encode slika greska. Photo not send. Slika nije poslana. Photo send. Slika je poslana. Download DCGUI-QT from http://dc.ketelhot.de It does everything, and makes you coffee Skini DCGUI-QT sa http://dc.ketelhot.de Radi sve i pravi kafu Refresh share already in progress. Učitavanje je već u toku. Chat: Razgovor: Message not sent! Poruka nije poslana! /clear - clears the chat window /clear - briše tekst u razgovoru /mode - shows the current mode /mode - pokazuje trenutni modus /dcgui or /adv - send an advertisment to the hub /dcgui ili /avd - šalje reklamu-e na hub /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;message&gt; - izključuje sa kanala sa željenom porukom /ls &lt;nick&gt; - get share list from user /ls &lt;nick&gt; - skida listu od korisnika /grant &lt;nick&gt; - grant user a slot /grant &lt;nick&gt; - daje korisniku slot /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;nick&gt; - daje korisniku stalni slot /friend &lt;nick&gt; - add user to friend list /friend &lt;nick&gt; - dodaje korisnika u listu prijatelja /fav - add hub to bookmark list /fav - dodaje hub u listu omiljenih hub-va /info - show user info /info - pokazuje info o korisniku /now - send current time to the chat /now - šalje trenutno vrijeme u razgovor Get info failed. Traženje informacije nije uspjelo. Info: Info: Nick: Nadimak: Operator: Operator: yes da no ne Comment: Komentar: Speed: Brzina: EMail: EMail: Shared: Dijeljeno: Away: Nisam tu: on upaljeno off ugašeno Version: Verzija: Unknown Nepoznato Tag: Tag: Uptime Dužina korištenja day dan days dana/ni hour sat hours sati minute minuta minutes minuta Download sharelist from Skini list od No nick, try /dchelp Ne nick, pokušaj /dchelp Permanent slot added for Stalni slot je dodjeljen Slot added for Slot je dodjeljen Added to friend list Dodan mojoj listi prijatelja Add bookmark hub Dodaj hub u listu Private message sent. Privatna poruka je poslana. Private message not sent! Privatna poruka nije poslana! Photo not found. Slika je nađena. Can't read your photo. Nemogu da vidim sliku. Photo not sent. Slika nije poslana. Photo sent. Slika je poslana. /raw - send raw message /raw - pošalji raw poruku /uptime - show valknut uptime /uptime - pokaži koliko radi valknut Download Valknut from http://dcgui.berlios.de It does everything ! Works on almost any platform you can think of and makes you coffee. Skini Valknut sa http://dcgui.berlios.de Sve radi ! Radi na skoro svim plaformama i takođe vam pravi kafu. The user is using an old version or not using Valknut Korisnik koristi stariju verziju ili ne koristi Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Ukljucuje se: Parts: Iskljucuje se: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Veza je izbacena zbog dugog cekanja Error: ' Greska: ' Validate denide Potvrdi odbijanje Redirect to Usmjeri na Password - Lozinka - Please enter your password Molim vas da upišete vasu lozinku Wrong password Pogresna lozinka OP Force Move OP Force Move Please enter host Molim vas da upiete host Please enter a message Molim vas upišete poruku Redirect disabled Preusmjeravanje onesposobljeno OP Kick OP Kick Please enter a reason Molim vas da napisete razlog User: Korisnik: Connected Uključeni ste Disconnected Isključen Use password from profile Koristi lozinku iz profila Password from profile is empty Lozinka iz profila je prazna No profile found for this hub Nema profila za ovaj hub users korisnici Hubname change: Hub ime je promjenjeno u: User rejoin the hub. Korisnik se ponovo uključio u hub. User left the hub. Korisnik je napustio hub. Hub Hub Sorry, client works in passive mode Zao mi je, korisnik je u pasivnom modusu We left the hub. Napustili ste hub. Joins: Ukljucuje se: Parts: Iskljucuje se: Chat List Lista Razgovora Line is encrypted. Linija je zaštićena. Line is not encrypted. Linija nije zaštićena. Your Nick is already in use. Vaš nadimak je već u upotrebi. Sorry, this client works in passive mode Žao mi je, ali korisnik je u pasivnom modusu Disconnect. Isključen. Connect. Uključi. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Odustani Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Redovi Any Bilo koji DCDebug Send error Pošalji grešku Could not send the data. Error '%1'. Data nije poslana. Error '%1'. Send Pošalji Thanks for your help. Hvala na pomoći. Save error Sačuvaj grešku Can't open file '%1' for writing. Nemogu da otvorim datoteku '%1' za pisanje. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About O Aplikaciji OK OK Authors Autori License Licenca Sponsor Sponzor Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de Valknut - Aplikacija za dijeljenje datoteka (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Download Datoteke Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Preglednik za datoteke File Datoteka Size Veličina Files Datoteke Shared Djeljeno DCDialogChat Form1 Form1 &Send &Posalji DCDialogChat DCDialogClient Form1 Form1 User Korisnik Nick Nadimak Comment Komentar Speed Brzina EMail EMail Bytes Bytes 0 0 Share Djeljeno Chat List Lista Razgovora DCDialogClient DCDialogKlient User(s) Korisnik(ci) ... ... Tag Tag IP IP Lock/PK Lock/PK Supports Podrška DCDialogConnectionManager Connection Konekcija DCDialogDebug DCGUI Crash Handler DCGUI Kraš Administrator Comment Komentar &Save &Sačuvaj Save to file. Sačuvaj u u datoteku pod imenom. S&end P&ošalji Send bugreport. Pošalji bugraport. E&xit E&xit Exit. Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Nijedan Send Pošalji Receive Both Both OK OK Cancel Odustani malloc info DCDialogEditServer Form1 Form1 Settings Postavke Name Ime Host Host Description Opis Cancel Odustani Accept Prihvati Password Lozinka Autoconnect Auto-uključivanje DCDialogEditServer DCDialogEditServer Profile Profil Auto Connect Auto Uključivanje Nick Nadimak &Cancel &Odustani &OK &OK &Profile &Profil Secure Socket Layer Secure Socket Layer - SSL Tag Tag EMail EMail Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Izmjeni djeljeni katalog Alias Alias Path Put do &Cancel &Odustani &OK &OK DCDialogEditTransfer Edit Transfer Izmjeni transfer Settings Postavke Nick Nadimak Hub name Ime Hub-a Hub address Adresa Hub-a Cancel Odustani Accept Prihvati Known hubs Poznate Hub &Cancel &Odustani &OK &OK DCDialogFileBrowser Form1 Form1 New Column Novi red Name Ime Size Veličina File Type Tip Datoteke Open Otvori Save Sačuvaj Encoding: Encoding: Type Tip TTH TTH Folder Katalog Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Info o velicini datoteke File Datoteka Size Veličina Done Zavrseno Hash Haš Sources Izvori DCDialogForceMove OP Force Move OP Force Move Please enter a host Please enter a message Molim vas upišete poruku OK OK Cancel Odustani DCDialogGetURL Get URL Prihvati URL Cancel Odustani &Cancel &Odustani DCDialogHubFilter Hub Filter Hub Filter Filter Filter Min. User Min. Korisnika Contains Sadrzi Cancel Odustani Save Spremi Name Ime Server Server Description Opis Settings Postavke &OK &OK &Cancel &Odustani DCDialogHubListManager Hub List Hub Lista Public Javni Name Ime Server Server Description Opis User Korisnik double click to hide the toolbar 2x klinki da sakriješ radnu liniju sa alatom edit filter postavi filter delete filter izbriši filter Filter Filter update public hublist Učitaj ponovo javnu hub listu add filter dodaj filter reload public hublist osvježi hub listu double click to show the toolbar 2x klikni da pokažeš radnu liniju sa alatom Bookmarks Omiljeni Hub-vi connect uključi se Users Korisnici Shared Djeljeno Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Dodaj Edit bookmark. Edit Izmjeni Remove bookmark. Remove Izbriši DCDialogHubProfile Edit hub Profiles Izmjeni hub postavke Profile Profil Create Napravi Delete Izbriši Settings Postavke Password Lozinka OK OK Auto Connect Auto Uključivanje Cancel Odustani Hub profile editor Hub profil editor Nick Nadimak &OK &OK &Cancel &Odustani Tag Tag EMail EMail Description Opis Secure Socket Layer Secure Socket Layer - SSL Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Rezultati Nick Nadimak File Datoteka Size Veličina Slot Slot Hub Hub Path Put do kataloga Log Log Search Traži Results: Rezultati: Connected Hubs Priključene Hub Bookmark Hubs Zapisi Hub-ve Filter Filter Type Tip At Least Najmanje At Most Najvise KB KB MB MB Any Bilo koji MP3 MP3 Compressed Kompresovano Document Dokument Executable Izvrsan - *.exe Picture Slika Video Video Folder Katalog Hub Search Potraga u Hub Host Host GB GB Free Slots Slobodni Slots Max Free Slots (0=off) Maksimum Slobodnih Slots (0=off) Exact Tacno B B 0/0 0/0 0 0 Search in path+file name only Potraži u path+file samo ime Search History Pretraži Historiju History Historija Hubs Hubs Hub Options Postavke Hub-a Connected Hub Priključena Hub Refresh Osvježi Public Hubs Javne Hub Expert Ekspert User Korisnik Reset Poništi Clients Korisnici Live filters Live filteri Include: Uključi i: Exclude: Ne uključi: Apply Primjeni Mode Mod Add Dodaj User/File Korisnik/Datoteka Search for a user or a file. Traži korisnika ili datoteku. Start Startaj Start the search. Startaj potragu. Add a search to the searchqueue Stavi potragu u red za cekanje Filtered Hubs Filtrirane Hub Multi Search Multi Potraga Enable Tag Uključi Tag Audio Audio Hash Haš TTHash TTHaš KiB KiB MiB MiB GiB GiB Total Slots Purge Clear the search history Count Brojač Ready Overall search status Clear search string and set search size, size mode and file type to default TTH TTH Any size At least At most Maximum results Unlimited IP IP DCDialogMagnet Magnet Link Details Link TTH TTH Name Ime Size Veličina Exact size Action Akcija Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Odustani DCDialogMessage DCDialogMessage DCDialogMessage Do not show this again. Nemoj da pokazuješ ovo opet. DCDialogOptions Options Postavke Identify Prepoznaj Information Informacije o korisniku E-Mail: E-Mail: Nick: Nadimak: Description: Opis: Speed: Brzina: 56Kbps 56Kbps 33.6Kbps 33.6Kbps Satellite Satellite ISDN ISDN DSL DSL Cable Cable LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Spam (email at home dot com) Transfer Transfer Share Folders Dijeljeni katalozi Download Folder Katalog za download Upload Options Upload postavke Connection Konekcija Settings Postavke Mode Modus Active Mode Aktivni modus Passive Mode Pasivni modus Passive Mode Settings Postavke pasivnog modusa Active Mode Settings Postavke aktivnog modusa TCP Listen Port: TCP Kapija za aplikaciju: 412 412 Hub Search Potraga u Hub-u UDP Listen Port: UDP Kapija za aplikaciju: Use ip from interface (ppp0,eth0) Koristi IP od interfejsa Test Test Interface IP Interfejs IP Wrong IP Pogrešan IP GUI GUI GUI Options GUI Postavke Other Ostalo Other Options Postavke za drugo Hublist Hublista Store local Spremi lokalno Theme Tema Language File Put do datoteke za jezik Reconnect Counter (0=off) Ponovo priključi brojac (0=off) Reconnect Timeout (sec.) Ponovo priključi brojač (sec.) Allow Force Move Dozvoli nasilno premjestanje Source Url's Izvor Url URL URL Max. upload slots (0=off) Max. upload slot-va (0=off) Application Font Font koji zelite da koristite za Aplikaciju Maximal upload connections. Maksimalni broj upload konekcija. Transfer Request Timings Timer za trazeni transfer Resend Timeout (sec.) Ponovo posalji Timeout (sec.) Response Timeout (sec.) Odgovor na Timeout (sec.) Hub Connections Hub Konekcije Sound Zvuk External Player Neki drugi player Chat Razgovor Units Mjere Auto Auto Byte Byte GByte GByte KByte KByte MByte MByte General Generalno Disable Sound Iskljuci zvuk Play a sound when receiving a message Startaj zvuk kad primis poruku Play a sound when disconnecting from a hub Startaj zvuk kad se iskljucis iz hub-a Play a sound when receiving first message Startaj zvuk kad primis prvu poruku Play a sound when sending a message Startaj zvuk kad saljes poruku Play a sound when connecting to a hub Startaj zvuk kad se ukljucujes u hub Disable sound when away Iskljuci zvuk kad si odsutan Player Player Sound Files Zvucne datoteke Log Log Timestamp Izgled vremena Private Chat Privatni razgovor Hub Chat Hub Razgovor Download Queue Red za download Save Queue in minutes (0=off) Spremi red u minutama (0=off) Move Finished Files to this Folder (empty = disabled) Premjesti gotovi download u ovaj katalog (prazno = nije postavljen) Use wrong ip/hostname (Firewall/Portforward) Koristi pogrešan ip/host-ime (Firewall/Portforward) No multi hub search ! No incoming connections ! Nemoguće tražiti u više hub-va ! Nema konekcija ! Send warn message to remote user on active mode request Posalji upozorenje korisniku na njegovo trazenje za aktivni modus Show Status Messages Pokaži status poruke Open Private Chat Window Otvori prozor za privatni razgovor Transfer Options Transfer postavke Transfer View Transfer status Chunk Percent Procenat dijela File Percent Procenat datoteke Chunk Size Veličina dijela File Size Veličina datoteke Search Nick: Traži nadimak: Chat options Razgovor opcije upload upload download download Add Description Tag (<DCGUI ....>) Dodaj opis Tag (<DCGUI ....>) Folder Katalog New Column Novi red Away Message: Poruka kad si odsutan: Get Uzmi Your line speed. Tvoja brzina linije. Your nick. Tvoj nadimak. The nick for hub searches. Nadimak za trazenje u hub-ma. Your EMail. Tvoj EMail. Enable/Disable the Anti-spam option. Uključi/Isključi Anti-spam opciju. A little description. Mali opis. Add a tag to the description that show some information from you. Dodaj tag opciji koja pokazuje info o tebi. The tcp listen port for incoming connections. TCP kapija za primajuce konekcije. The udp listen port for incoming search results. UDP kapija za rezultate trazenja. Get the ip from the interface. Pronadji IP od interfejsa. Select a interface. Izaberi interfejs. Get the ip from the host. Pronadji IP od host-a. The time between a reconnect. Vrijeme do ponovnog uključenja. How often we reconnect to a hub. Koliko često će mo se priključivati na hub. Rebuild your sharelist. Napravi ponovo svoju listu dijeljenih stvari. Add a folder to your sharelist. Dodaj katalog u svoju listu dijeljenih stvari. Remove a folder from your sharelist. Izbriši katalog iz liste dijeljenih stvari. Show some information about your sharelist. Pokaži malo informacija o svojoj listi dijeljenih stvari. Browse your own share list. Pregledaj svoju listu dijeljenih stvari. Time to wait for a transfer response from the remote user. Vrijeme koje će te čekati na transfer-odgovor od korisnika. Time to wait before a new transfer request is send to the remote user. Vrijeme koje će te čekati prije nego ponovo pošaljete molbu korisniku. Test the new theme. Probaj novu temu. Open the chat window on incoming messages. Otvori novi prozor za ragovor kod novih poruka. Enable emoticons in chat Icoke u razgovoru Data Folder Info Katalog Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Show Version Tag in User-Description Pokaži verziju Tag u Opisu Korisnika Messages Poruka Query on exit Upit na izlazu Logfile Log datoteka Logfile enabled Log uključen Security Zaštita Flood Protection Flood Zaštita Kick Message Kick Poruka Private Address Space (rfc1918) Privatna Adresa (rfc1918) Ignore private address space connections Ignoriši konekcije sa privatnom adresom Query Upit Client Korisnik User-List right alignment Lista korisnika na desno Don't Display Messages after X retry (0=off) Ne pokazuj poruku poslije X pokušaja (0=off) Kick the user for flooding (only for Operators) Izbaci korisnika zbog flood-nja(samo za Operatore) Show send button Pokaži pošalji dugme Dynamic upload rate Dinamička vrijednost upload-a Hide popups of more than Sakri popups kad prijeđu vrijednost od Send message with Pošalji poruku sa lines (0=off) linije (0=off) Browser Preglednik Use tab for every chat window Koristi karticu za svaki razgovor Max. paragraphs (0=off) Max. Paragrafa (0=off) Client options Korisničke Postavke Show client windows minimized Pokaži korisnikov prozor umanjen Max. uploads to user (0=off) Max. broj upload jednom korisniku (0=off) Color Boja Transfer Cert/Key Transfer Cert/Key User quitting hub Korisnik napušta hub If user quits hub, stop following transfers Ako korisik napusti hub, prestani pratiti transfer Upload Upload Both Both Download Download None Nijedan Auto-Search Auto-Potraga Auto-Search for new sources Auto-Potraga za istim datotekama Download Rate Single Brzina download Download Rate Multi Brzina Multi download Remaining Time Single Vrijeme koje je ostalo do završetka download Remaining Time Multi Vrijeme koje je ostalo do završetka multi download Reload every hour (0=off) Učitaj ponovo svaki sat (0=off) Max. rate KB/s (0=off) Max. rate KB/s (0=off) Path Put do Alias Alias Edit a folder from the sharelist. Izmjeni katalog i liste dijeljenih stvari. Open File Dialog. Otvori datoteku dialog. Add a URL to the list. Dodaj URL listi. Remove a URL from the list. Izbriši URL iz liste. 28.8Kbps 28.8Kbps Enable logging Uključi log Append date to log file name Append date to log file name Nick name filter Nadimak Filter Enable nick name filter Uključi nadimak filter Disable logging for public chat Isključi log za javni razgovor Append hub name to log file name Append hub name to log file name Append hub host to log file name Append hub host to log file name &Save &Sačuvaj &Cancel &Odustani Forward private to public chat Preusmjeri privani razgovor u javni prozor Away Prefix: Odutan Prefix: Select Language. Izaberi jezik. Recreate every hour (0=off) Napravi ponovo svaki sat (0=off) Check and recreate sharelist on startup Provjeri i napravi ponovo listu dijeljenih stvari na startu aplikacije seconds sekundi Away after Odustan poslije Auto Away Mode Auto Odsutan modus Ignore messages to offline users Ignoriši poruke korisnicima koji su offline Ignore messages from offline users Ignoriši poruke od korinika koji su offline Show joins and parts Pokaži ko dolazi i odlazi Columns Redovi Comment Komentar Speed Brzina EMail EMail Share Dijeljene stvari Photo Slika IP, Hostname or Interface IP or Hostname IP ili Hostname Network Interface NIC Listen on IP Slušaj na IP Query on File Delete Query on File Delete Tag Tag IP IP Lock PK Lock PK Supports Podrška Get Internet IP Nađi Internet IP Get Interface Nađi interfejs Update every hour (0=off) Opdatiraj svaki sat (0=isjključen) Hub Lists Hub Lista Disable hash list Isključi haš listu GiB GiB KiB KiB MiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Ime Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Preglednik Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Prisutan Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect uključi se Public Javno Name Ime Server Server Description Opis User Korisnik Bookmarks Bilješke Hub List Hub Lista double click to hide the toolbar Klikni 2x da sakriješ radnu liniju sa alatom edit filter postavi filter delete filter izbriši filter update public hublist Učitaj ponovo javnu hub listu add filter dodaj filter reload public hublist osvježi hub listu double click to show the toolbar klikni 2x da pokažeš radnu liniju sa alatom Filter Filter DCDialogSplash Dcgui Dcgui Valknut Valknut DCDialogSpy Spy Špiun Spy On/Off Špiun On/Off Clear Obrisi Text Tekst Count Brojač Statistic Statistika Active: Aktivno: 0 0 Reject: Odbi: Results: Rezultati: Search Error: Greška u traženju: Result Error: Rezultat greške: Passive: Pasivno: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Transfer Lista Nick Nadimak State Stanje Transfer Transfer File Datoteka Wait Transfer status Size Veličina Log Log Slots Slots Hub Hub 0/0 0/0 Files Datoteke Local File / Nick Lokalna Datoteka / Nadimak Size / Hub Veličina / Hub Remote File Datoteka Server/User IP Server/Korisnik IP double click to hide the toolbar 2x klinki da sakrijes radnu liniju sa alatom double click to show the toolbar 2x klinki da pokazes radnu liniju sa alatom File Name Ime Datoteke Local File Lokalna Datoteka Hub/File Hub/Datoteka IP/Size IP/Veličina TTH TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Odustani DCDialogUpdateManager Update Manager Menadžer za opdatiranje Update Opdatiranje Check update Provjeri opdatiranje DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Razgovor PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Ime Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Odustani DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Odustani DCDialogUsersList User Korisnik Friend-List Lista-Prijatelja Users List Photo Slika Slot Slot Ignore DCEditServer Please enter a hubname. Molim vas da upišete hub-ime. Please enter a hubhost. Molim vas da upišete hub-host. DCFileBrowser Items Predmeti Files Datoteke Total Totalno Directories Katalozi Root Directory Root Katalog <wrong length> <pogresna duzina> file datoteka Select destination Izaberi gdje ćeš da sačuvaš datoteku Select a filename Izaberi ime datoteke Filebrowser Preglednik open filelist dialog otvori prozor sa datoteka-listom Choose a file Izaberi datoteku save file dialog spremi dialog datoteke Choose a filename to save under Izaberi ime datoteke pod kojim će se sačuvati Folder Katalog Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Datoteka does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Nijedan Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Download Datoteke File allready download Download datoteke je već u toku File allready exist ! Datoteka već postoji ! Resume Nastavi prekinuti download Overwrite Spremi preko postojece datoteke Cancel Odustani Start Multi Download Startaj Multi Download File allready in the queue and not mark as multi download ! Datoteka je već u redu za download ali nije obilježena za multi download ! File allready in the queue with a different size ! Datoteka je veću redu za download ali ima drugu veličinu ! You can start a Multi Download ! Mozes startati multi download ! A same file is allready in the queue ! Ista datoteka je već u redu za download ! If you want to download all files in this mode ? Da li zelis da skines sve datoteke u ovom modusu ? Not connected to required hub! Nisi priključen u potrebni hub ! Connect Priključen (choose an existing download to add to) ( izaberi da dodaš vec postojećem download-u ) A same file is already in the queue! Ista datoteka je već u redu! Start a multi-download Startaj grupni download File is already in the queue but not mark as a multi-download! Datoteka je već u redu ali nije obilježena kao grupni download! File is already in the queue with a different size! Ista datoteka je već u redu ali ima različitu veličinu! File already downloaded! Datoteka je vec skinuta! File already exists! Datoteka vec postoji! You can start a multi-download! Možeš da startaš grupni download! Do you want to download all files in this mode? Da li želiš da skidaš sve datoteke u ovom modusu? Repair File Popravi Datoteku Enter byte range (m-n) Upiši byte vrijednosti (m-n) Repair BIN Sectors Popravi BIN Sektore Enter sector range (m[-n]) Upiši sektor vrijednosti (m-n) DCFileTransferInfo File Transfer Info Info o velicini datoteke DCGuiApp Options Postavke &Options &Postavke Ctrl+O Ctrl+O Open option dialog Otvori prozor za postavke Exit Izađi Ctrl+Q Ctrl+Q Quits the application Zatvori aplikaciju Exit Quits the application Izađi Zatvori aplikaciju Toolbar Radna linija za alat Tool&bar Alat& linija Enables/disables the toolbar Skriva/pokazuje radnu liniju Toolbar Enables/disables the toolbar Alat-Linija Uključi/Isključi Alat-Liniju Statusbar Status linija &Statusbar &Status-Linija Enables/disables the statusbar Uključi/Isključi status-liniju Statusbar Enables/disables the statusbar Status-linija Uključi/Isključi status-liniju Cascade Poredaj Naizmjenično &Cascade &Poredaj Naizmjenično Cascades all windows Predaj naizmjenično sve prozore Cascade Cascades all windows Naizmjenično Naizmjenično sve prozore Tile Poredaj &Tile &Poredaj Tiles all windows Poredaj sve prozore Tile Tiles all windows Poredaj Poredaj sve prozore Ctrl+S Ctrl+S Transfer List Transfer Lista &Transfer List &Transfer Lista Ctrl+T Ctrl+T Show Transfer List Pokaži Transfer Listu Hub Search Potraga u Hub-u Show Hub Search Pokaži potragu u hub-u About O Aplikaciji &About... &O Aplikaciji... About the application O Aplikaciji About About the application O O Aplikaciji New Version Nova verzija &New Version... &Nova verzija... Check for new version Provjeri ima li nova verzija New Version Check for new version Nova verzija Provjeri ima li nova verzija What's &This Šta je &Ovo &File &Datoteka &View &Izgled &Action &Pokaži &Window &Prozor &Help &Pomoć Ready. Aplikacija je spremna. (no error message from socket) (nema greške u socket-u) TCP listen failed, change to passive mode ! TCP neradi kako treba, prebacite aplikaciju u pasivni modus ! Quit... Zatvori... Open options dialog... Otvori prozor postavke... Exiting application... Zatvaram aplikaciju... Toggle toolbar... Vidi Alat liniju... Toggle statusbar... Vidi status liniju... About... O Aplikaciji... New version... Nova Verzija... Show/hide transfer list window ... Pokaži/sakri transfer prozor ... Show/hide hub search window ... Pokaži/sakri prozor od hub pretrage ... Can't get version info from server Nemogu da dobijem verziju od servera Current version is: Trenutna verzija je: Normal Prisutan &Normal &Normalno Ctrl+N Ctrl+N Set away mode Uključi nisam tu modus Away Odsutan &Away &Nisam tu Ctrl+A Ctrl+A Hub List Hub Lista Show Hub List Pokaži Hub Listu Show/hide hub list window ... Pokaži/sakri hub prozor ... H&ub List H&ub Lista Ctrl+U Ctrl+U Minimize Smanji &Minimize &Smanji Minimize all windows Smanji sve prozore Minimize Minimize all windows Smanji Smanji sve prozore Action Akcija Quick Options Brze Opcije Quick options Brze Opcije F12 F12 Context menu for a few options Meni za par opcija Download mode: Ask Način download-a: Pitaj me Download mode: Single Download modus: Pojedinačni Download mode: Multi Način download-a: Grupni Spy Špiun Show Spy Pokaži Špiuna Show/hide spy window ... Pokaži/sakri špiun prozor ... Users Korisnici Ctrl+F Ctrl+F Show users: search tab and friends tab POkaži korisnike: potraga tab i prijatelji tab Do you really want to quit? Da li stvarno želite da isključite dcgui? Exiting application... aborted Dcgui se zatvara... odustajem od zatvaranja Show/hide users window ... Pokaži/sakri korisnički prozor ... Away &Mode Prisutan/Odsutan &Modus Close chat windows Zatvori chat prozore Close all chat windows Zatvori sve prozore sa razgovorima Close chat windows Close all chat windows Zatvori sve prozore sa razgovorima Zatvori sve prozore sa razgovorima Close disconnected hubs Zatvori sve isključene hub Close all disconnected hub windows Zatvori sve prozore od isključenih hub-va Close disconnected hubs Close all disconnected hub windows Zatvori sve isključene hub-ve Zatvori sve prozore od isključenih hub-va Tile &Horizontally Poredaj &Horizontalno Tiles all windows horizontally Poredaj sve prozore horizontalno Reload Plugins Ponovo uključi sve dodatke &Reload Plugins &Ponovo uključi sve dodatke Dock Fiksiraj na određeno mjesto &Dock &Fiksiraj na određeno mjesto Dock the application Fiksiraj aplikaciju na određeno mjesto Dock Dock the application Fiksiraj na određeno mjesto Fiksiraj aplikaciju na određeno mjesto Hub &Search Hub &Potraga S&py Š&piun Ctrl+P Ctrl+P Dock/Undock application... Fiksiraj/Nefiksiraj aplikaciju... Filelist browser Preglednik Open filelist browser Otvori preglednik Exit Quits the application. Exit Zatvara aplikaciju. Toolbar Enables/disables the toolbar. Alat Uključuje/isključuje alat. Statusbar Enables/disables the statusbar. Statuslinija Uključi/Isključi status-liniju. Dock Dock the application. Fiksiraj Fiksiraj/Nefiksiraj aplikaciju. Cascade Cascades all windows. Naizmjenično Naizmjenično postavlja sve prozore. Tile Vertically Poredaj Vertikalno &Tile Vertically &Poredaj Vertikalno Tiles all windows vertically Poredaj sve prozore vertikalno Tile Vertically Tiles all windows vertically. Poredaj vertikalno Poredaj sve prozore vertikalno. Tiles all windows horizontally. Poredaj sve prozore horizontalno. Tile Horizontally Tiles all windows horizontally. Poredaj Horizontalno Poredaj sve prozore horizontalno. Minimize all windows. Smanji sve prozore. Minimize Minimize all windows. Smanji Smanji sve prozore. Close chat windows. Zatvori razgovor prozore. Close all chat windows. Zatvori sve razgovor prozore. Close chat windows Close all chat windows. Zatvori razgovor prozore Zatvori sve razgovor prozore. Close disconnected hubs. Zatvori isključene hub-ve. Close all disconnected hub windows. Zatvori sve isključene hub-ve. Close disconnected hubs Close all disconnected hub windows. Zatvori isključene hub-ve Zatvori sve isključene hub prozore. Show Hub List. Pokaži Hub Listu. Show Transfer List. Pokaži Transfer Listu. Show Hub Search. Pokaži potragu u hub-u. Show users: search tab and friends tab. Pokaži korisnike: potraga tab i prijatelji tab. Set away mode. Postavi Odsutan modus. About the application. O aplikaciji. About About the application. O O aplikaciji. Support Podrška &Support... &Podrška... Latest release Zadnja verzija &Latest release... &Zadnja verzija... Latest release Show latest release. Zadnja verzija Pokaži zadnju verziju. Recreate share Ponovo napravi djeljenje kataloge RX/TX Traffic. RX/TX Saobraćaj. Available disc space. Slobodan prostor. Refresh share finished. Učitavanje dijeljenih kataloga je završeno. Refresh share in progress. Učitavanje je u toku. Refresh share already in progress. Učitavanje je već u toku. Can't get release info from server Nemogu da dobijem "vrijeme izdanja" informaciju sa servera latest release is: zadnje izdanje je: Latest release... Zadnje izdanje... Show update manager Pokaži Menadžera za opdatiranje Show/hide update manager window ... Pokaži/sakri menadžera za opdatiranje ... Warning license file not found ! Pažnja licencirana datoteka nije nađena ! Tabbar Tab-linija Enables/disables the tabbar Uključuje/Isključuje tab-liniju Tabbar Enables/disables the tabbar. Tab-linija Uključuje/Isključuje tab-liniju. Show Search Spy. Pokaži špijun pretragu. Tab Bar Tab-linija Toggle tabbar... Pregledaj Tab-liniju... Connect to Valknut hub Prikljući se na Valknut hub Support Connect to the Valknut hub. Podrška Priključi se na Valknut hub. Filelist browser local Preglednik dijeljenih kataloga Open local filelist browser Otvori Preglednik za lokalne datoteke &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Update Manager Menadžer za opdatiranje Ratio: Overall: (Up: , Down: ) This session: Valknut Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Javni Bookmarks Omiljeni Hub-vi Add Bookmark Dodaj hub u listu Error Greška Please enter a hubname. Molim vas da upišete hub-ime. Please enter a hubhost. Molim vas da upišete hub-host. Edit Bookmark Izmjeni omiljene hub-ve Remove bookmarks Izbriši omiljene hub-ve You are sure ? Jesi li siguran ? Remove Izbriši Cancel Odustani Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Napravi Hub Profil Please enter the profile name Molim vas da date ime profilu Save profile Sačuvaj profil Do you want to save your changes? Da li želiš da sačuvaš izmjene? Save Sačuvaj Cancel Odustani Are you sure? Delete profile for DCHubSearch Connect to local udp port failed. ( Konekcija na lokalnu UDP kapiju nije uspjela. ( No hubs found. Ni jedna hub nije nadjena. Hub Search Error Potraga u hub nije uspjela No connected hubs found. Nijedna priključena hub nije nađena. Select download folder Izaberi katalog za datoteku Select search Izaberi potragu Please select an search Molim te da izberes jednu potragu Please select a connected hub. Molim vas izberite jednu od priključenih hub-ve. Select file for Izaberi datoteku za USER KORISNIK FILE DATOTEKA List download Lista download Not connected to required hub! Niste priključeni u potrebni hub ! Connect Priključi se Cancel Odustani save file dialog spremi dialog datoteke Choose a filename to save under Izaveri ime datoteke open file dialog otvori dialog za datoteke Choose a file to open Izaberi koju ces datoteku da otvoris External search is allready running ! Potraga je već u toku ! Please add a search ! Molim te dodaj potragu ! Start Startaj Stop Stani Multi Search only work in active mode ! Multi potraga radi samo u aktivnom modusu ! External search is already running! Vanjska potraga je već u toku! Please add a search! Molim vas da upišete potragu! Multi Search only work in active mode! Grupna potraga radi samo u aktivnom modusu! Filelist download Datoteka-lista download Folder Katalog Unknown Nepoznato None Nijedan Directory File Datoteka Search ended with %1 results %1 results were filtered on upaljeno Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Morate da upišete potvđen 'Fake Host' ! You must enter a valid interface ! Morate da upišete potvđen interfejs ! You must enter a valid tcp listen port ! Morate da upišete postojeću tcp kapiju ! You must enter a valid udp listen port ! Morate da upišete postojeću udp kapiju ! You must enter a valid nick ! Morate da upišete postojeći nadimak ! Interface IP : Interfejs IP : Can't get interface IP ! Nemogu da dobijem IP interfejsa ! Select download folder Iazberite download katalog Select share folder Izaberite dijeljeni katalog Select language file Izaberite jezik HubList URL URL od hub liste Please enter a url Molim vas da upišete url Share list not available Lista dijeljenih stvari nije dostupna bytes bytes Total shared: Totalno dijeljeno: Share List Info Info o dijeljenoj listi You change the client mode ! Please restart DCGUI ! Promijenili ste korisnički modus ! Molim vas da ponovo startate aplikaciju ! My Moj Select sound file Izaberite zvuk Select sound player Izaberite player au wav wav All Files Sve vrste datoteke Host IP : Host IP : Can't get Host IP ! Nemogu da dobijem Host IP ! Select download finished folder Izaberite katalog za gotove download-e You must set a Download Folder ! Morate da postavite download katalog ! Download Finished Folder and Download Folder must be different ! Katalog za gotove download-e mora biti različit od običnog download kataloga ! You must enter a valid search nick ! Morate da upišete postojeći nadimak za traženje ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Aplikacija sluša na kapiji < 1024 ! Možete da koristite dcgui kao root i aktivnom modusu ! Other Ostalo Log Log Sound Zvuk General Generalno GUI GUI Chat Razgovor Transfer Transfer Connection Konekcija Mode MOdus Settings Postavke DCGUI DCGUI Identify Prepoznaj Folder Katalog Interface List Interfejs lista Please select an interface Molim vas da izaberete interfejs No interfaces found ! Interfejs nije nađen ! Select data folder Izaberite data katalog User Korisnik Select log file Izaberite datoteku za log Security Sigurnost Select a browser Izaberite preglednik Compressed list size (HE3/BZ): Veličina kopresovane liste (HE3/BZ): Select transfer cert Izaberite transfer sertifikat Select transfer key Izaberite transfer ključ Edit Alias Izmjeni Alias Please enter a new alias Molim vas da upišete movi alias Browse Share List Pregledag listu dijeljenih stvari Add new nick name filter Dodaj novi nadimak u filter Please enter a nick Molim vas da upišete nadimak Chat Timestamp Vrijeme Razgovora Chat Local Nick Razgovor Lokalno Nadimak Chat Local Text Razgovor Lokalno Tekst Chat Remote Nick Razgovor Udaljeno Nadimak Chat Remote Text Razgovor Udaljenog Tekst Chat Status Nick Razgovor Status Nadimak Chat Status Text Razgovor Status Tekst Public Chat Timestamp Vrijeme Javnog Razgovora Public Chat Local Nick Javni Razgovor Lokalni Nadimak Public Chat Local Text Javni Razgovor Lokalni Tekst Public Chat Remote Nick Javni Razgovor Udaljeni Nadimak Public Chat Remote Text Javni Razgovor Udaljeni Tekst Public Chat Status Nick Javni Razgovor Status Nadimak Public Chat Status Text Javni Privatni Status Tekst Public Private Chat Nick Javni Privatni Razgovor Tekst Public Private Chat Text Javni Privatni Razgovor Tekst Can't save Image ! Nemogu da sačuvam Sliku ! Can't load Image ! Nemogu da koristim Sliku ! Select a 64x64 Photo Izaberite sliku dimenzije 64x64 You must set a Download Folder! Izaberite katalog download-e! Download Finished Folder and Download Folder must be different! Download gotovih datoteka katalog mora biti različit od download kataloga! You must enter a valid 'Fake Host'! Moraš da upišeš postojeći 'Fake Host'! You must enter a valid interface! Moraš da upišeš postojeći interfejs! You must enter a valid tcp listen port! Moraš da upišeš postojeću tcp kapiju! You must enter a valid udp listen port! Moraš da upišeš postojeću udp kapiju! You must enter a valid nick! Moraš da upišeš postojeći nadimak! You must enter a valid search nick! Moraš da upišeš postojeći nadimak za potragu! Can't save Image! Nemogu da sačuvam sliku! Can't load Image! Nemogu da pokažem sliku! Host IP: Host IP: Can't get Host IP! Nemogu da dobijem Host IP! Interface IP: Interfejs IP: Can't get interface IP! Nemogu da dobijem interfejs IP! No interfaces found! Nijedan interfejs nađen! Chat Say Razgovor kaže Latest release... ZaZadnje izdanje... Can't get your ip Nemogu da dobijem tvoj IP Public Chat ME Nick Javni Razgovor JA Nadimak Hub Lists Hub Lista Valknut Valknut You change the client mode! Please restart Valknut! Promjenili ste klijent modus! Molim startajte ponovo Valknut! You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Namjestili ste Valknut da sluša na kapiji < 1024! Možete da koristite Valknut kao root u aktivnom modusu! Compressed list size (HE3/BZ/XML): Kompresovana veličina liste (HE3/BZ/XML): Edit url Auto Responses Filelist browser Preglednik Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Nađi Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Korisnik DCServerList Add Bookmark Dodaj zabilješku Edit Bookmark Izmjeni zabilješku Select profle Izaberi profil Please select an profile Molim vas da izaberete jedan profil Public Javni Bookmarks Omiljeni Hub-vi Error Greška Remove Izbriši Cancel Odustani DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Sačekaj Idle NIšta se ne dešava Run Transfer je u toku Transfer Transfer Error Greška Download Download Upload Upload Unknown Nepoznato Pause Pauza Hub offline Hub nije dostupna User offline Korisnik nije dostupan User busy Korisnik je zauzet Send error Poašalji grećku Change Transfer-Rate Promjeni Transfer-Rate Please enter a Transfer-Rate [B/s] (0=off) Molim vas da upišete Transfer-Rate [B/s] (0=off) Change File-Priority Promjenite prioritet datoteka Please enter a priority Molim vas da upišete prioritet Handshake Konekcija je u toku Nothing Ništa Filebrowser Preglednik Try Connect Pokušaj da se priključiš User and Hub not found in the queue ! Korisnik i Hub nisu nađeni u redu za čekanje ! Nick: Nadimak: Hub: Hub: Remove Transfer Izbriši transfer You are sure ? Jesi li siguran ? Remove Izbriši Cancel Odustani My Moj Browse Share List Pregledag listu dijeljenih stvari Share list not available Lista dijeljenih stvari nije dostupna None Nijedan File Datoteka %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Prevodilac Choose a language Izaberi jezik Chinese Simplified to English Engleski Chinese Traditional Dutch Holandski French Francuski German Njemački Greek Grčki Italian Italianski Japanese Korean Portuguese Russian Ruski Spanish Španski Detect language Arabic Bulgarian Chinese Croatian Czech Češki Danish Danski Finnish Finski Hindi Norwegian Norveški Polish Poljski Romanian Rumunski Swedish Švedski OK OK Cancel Odustani Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUpdateManager Download failed Download nije uspjeo Update finished Opdatiranje je završeno Download content Sadržaj download-a Download content failed Sadržaj download-a nije uspjeo Download update.xml Download update.xml Download update.xml failed Download update.xm nije uspjeo Update available for Opdatiranje dostupno za update(s) available datoteka za opdatiranje je dostupno Update available but no bz2 support for Opdatiranje dostupno ali nema bz2 podršku za DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Ime Server Server Description Opis Users Korisnici Country Shared Djeljeno Minimum share Extra QObject Download Download Download To Download u katalog Download As Download kao Browse User Files Pregledaj datoteke korisnika Private Chat Privatni razgovor Kick Kick Force Move Nasilno premjesti Update User Ponovo učitaj djeljene datoteke ovog korisnika Connect Priključi se Disconnect Isključi se Reload Userlist Ponovo učitaj listu korisnika Connect To Hub Uključi se na hub Add Dodaj Add Bookmark Dodaj u omiljene hub-ve Edit Izmjeni Edit Bookmark Izmjeni omiljene hub-ve Remove Izbriši Close Transfer Zatvori transfer Info Info Try Connect Pokušaj da se priključiš Remove from Queue Izbriši iz reda Remove Transfer from Queue and Disk Izbriši transfer iz iz reda i sa diska Add Slot to User Daj ovom korisniku slot Add Permanent Slot to User Daj ovom korisniku stalni slot Remove Slot from user Izbriši slot ovom korisniku Save Queue Spremi red Update Server Opdatiraj server Update all Server Opdatiraj sve servere Change Transfer-Rate Promjeni Transfer-Rate Copy row to Clipboard Kopiraj red u Clipboard Copy column to Clipboard Kopiraj kolonu u Clipboard File Info Datoteka info Connect To All Hubs Uključi se na sve dostupne hub-ve Search for clones Traži klonove Remove complete from Queue Izbriši gotove download-e iz reda Load Učitaj Save Sačuvaj Edit Hub Profiles Izmjeni hub postavke Set Hub Profile Stavi hub profil Add this extra source Dodaj ovaj ekstra download Edit transfer Izmjeni transfer Edit file priority Izmjeni prioritet za datoteku Translate Prevedi Translator Prevodilac Disable group Onesposobi grupu Group by File Grupiši prema datoteci Group by Size Grupiši prema veličini Group by Nick Grupiši prema nadimku Group by free Slots Grupiši prema slobodnim slots-ma Group by Hub Grupiši prema hub-ma Group by Path Grupiši prema mjestu download-a Group by Host Grupiši prema host-u Copy Kopiraj Clear Obriši Select all Markiraj sve Close Zatvori Group Grupa Hide Sakri Refresh Filelist Osvježi listu Pause Queue Puziraj red Resume Queue Nastavi red Insert Smiley Izaberi smješka Add Friend Dodaj kao prijatelja Czech Češki Danish Danski Dutch Holandski Finnish Finski France Francuski German Njemački Hungarian Mađarski Icelandic Islandski Italy Italianski Norwegian Norveški Polish Poljski Romanian Rumunski Spanish Španski Swedish Švedski Copy Link Kopiraj link Text Encoding Tekst Encoding Request secure chat Traži zaštićeni razgovor Close secure chat Zatvori zaštićeni razgovor Input Unos Output Izlaz Check client version Provjeri klijent verziju Profile editor Profil meSnadžer Reset Poništi Dock Fiksiraj na određeno mjesto Undock Nefiksiraj Exit Izađi Latvian Latviski Russian Ruski Slovak Slovački Custom Po želji Add Permanent Dodaj Stalni Group by Hash Grupiraj po hašu Upload Slot Upload Slot Bosnian Bosanski English Engleski French Francuski Greek Grčki Italian Italianski Repair File Popravi Datoteku Repair BIN sectors Popravi BIN Sektore Brazilian Brazilski Search for clones by TTH Copy magnet link User: Korisnik: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) ( izaberi da dodaš vec postojećem download-u ) File download Download Datoteke A same file is already in the queue! Ista datoteka je već u redu! Start a multi-download Startaj grupni download Cancel Odustani File is already in the queue but not mark as a multi-download! Datoteka je već u redu ali nije obilježena kao grupni download! File is already in the queue with a different size! Ista datoteka je već u redu ali ima različitu veličinu! File already downloaded! Datoteka je vec skinuta! Enter byte range (m-n) Upiši byte vrijednosti (m-n) Repair BIN Sectors Popravi BIN Sektore Enter sector range (m[-n]) Upiši sektor vrijednosti (m-n) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Datoteka vec postoji! Resume Nastavi prekinuti download Overwrite Spremi preko postojece datoteke File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Group by total Slots Download Folder Katalog za download Zoom in Zoom out Group by IP SearchSpyModel Text Tekst Count Brojač Time UserListModel Nick Nadimak Comment Komentar Tag Tag Speed Brzina Email Share IP IP Lock/PK Lock/PK Supports Podrška valknut-0.4.9/valknut/ts/valknut.is.ts0000664000076400007640000116432011144234504016133 0ustar ejsejs DCBrowseFileTree Select destination Veldu áfangastað Select a filename Veldu skráarnafn <wrong length> <röng lengd> DCChat Message not send ! Boð ekki send ! Private Chat: Einka spjall: Chat Cleared. Spjall hreinsað. Translation: Þýðing: Translation failed: Þýðing tókst ekki: Current mode: Núgildandi hamur: active virkur passive hlutlaus Refresh share in progress. Endurlesning deilihluta í gangi. Refresh share allready in progress. Endurlesning deilihluta er nú þegar í gangi. Switch timestamp Víxla tímastimpli Send advertisment. Senda auglýsingu. Wrong parameter for '/join' Röng færibreyta fyrir '/join' Join to: Ganga í: Wrong parameter for '/msg' Röng færibreyta fyrir '/msg' Private message send. Einka skilaboð send. Private message not send ! Einka skilaboð ekki send ! Away message disabled. Fjarverandi boð óvirk. Away message set. Fjarverandi boð virk. Line is encrypted. Lína er dulkóðuð. Line is not encrypted. Lína er ekki dulkóðuð. Choose a filename to save under Help: /refresh - refresh share /ts - switch time display in chat on/off /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /msg &lt;nick&gt; &lt;message&gt; - send private message Select download folder Veldu niðurhals möppu Select file for Veldu skrá fyrir Photo received. Only allowed in private chat. Photo encode error. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Nikk: Operator: yes no Comment: Speed: Hraði: EMail: Shared: Away: on off Version: Unknown Óþekkt Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Parts: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bæti Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Tímarof í tengingu Error: ' Villa: ' Validate denide Sannreyningu hafnað Sorry, client work in passive mode Því miður, biðlari vinnur í hlutlausum ham Redirect to Vísað til Password - Lykilorð - Please enter your password Sláðu inn lykilorðið þitt Wrong password Rangt lykilorð OP Force Move Fært með OP-valdi Please enter host Sláðu inn host Please enter a message Sláðu inn skilaboð Redirect disabled Vísun óvirk OP Kick OP sparkað Please enter a reason Sláðu inn ástæðu User: Notandi: Connected Tengdur Disconnected Aftengdur Use password from profile Nota lykilorð úr sniði Password from profile is empty Lykilorð úr sniði er tómt No profile found for this hub Ekkert snið fannst fyrir þennan höbb users notendur Hubname change: Höbb-nafnabreyting: User rejoin the hub. Noandi endurtengdist höbbinum. User left the hub. Notandi yfirgaf höbbinn. Hub Höbb We left the hub. Joins: Parts: Chat List Spjall listi Line is encrypted. Lína er dulkóðuð. Line is not encrypted. Lína er ekki dulkóðuð. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK Áfram Cancel Hætta við Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Any Hvað sem er DCDebug Send error Sendi villa Send Senda Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About Um OK Áfram Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Niðurhal skráa Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Skráar rýnir File Skrá Size Stærð Files Skrár Shared Deilt DCDialogChat Form1 Form1 &Send &Senda DCDialogChat DCDialogClient Form1 Form1 User Notandi Nick Nikk Comment Athugasemd Speed Hraði EMail Póstfang Bytes Bæti 0 0 Share Deilt Chat List Spjall listi DCDialogClient User(s) ... DCDialogConnectionManager Connection Tenging DCDialogDebug Comment Athugasemd &Save Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Send Senda Receive Taka á móti Both OK Áfram Cancel Hætta við malloc info DCDialogEditServer Form1 Form1 Settings Stillingar Name Nafn Host Þjónn Description Lýsing Cancel Hætta við Accept Áfram Password Lykilorð DCDialogEditServer &Profile Profile Snið Nick Nikk EMail Póstfang Auto Connect Sjálfvirk tenging Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Path Slóð DCDialogEditTransfer Edit Transfer Breyta flutningi Settings Stillingar Nick Nikk Hub name Höbb nafn Hub address Höbb vistfang Cancel Hætta við Accept Áfram Known hubs Þekktir höbbar DCDialogFileBrowser Form1 Form1 New Column Nýr dálkur Name Nafn Size Stærð File Type Skráartegund Open Save Vista Type Tegund TTH Folder Mappa Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Uppl. um skráar flutning File Skrá Size Stærð Done Lokið Hash Sources DCDialogForceMove OP Force Move Fært með OP-valdi Please enter a host Please enter a message Sláðu inn skilaboð OK Áfram Cancel Hætta við DCDialogGetURL Get URL Sækja URL Cancel Hætta við DCDialogHubFilter Hub Filter Höbb sía Filter Sía Min. User Lágm. fjöldi Notenda Contains Inniheldur Cancel Hætta við Save Vista Name Nafn Server Þjónn Description Lýsing Settings Stillingar DCDialogHubListManager Hub List Public Almennt Name Nafn Server Þjónn Description Lýsing User Notandi double click to hide the toolbar edit filter delete filter Filter Sía add filter double click to show the toolbar Bookmarks Bókamerki connect tengjast Users Notendur Shared Deilt Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Vista Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Bæta við Edit bookmark. Edit Breyta Remove bookmark. Remove Fjarlægja DCDialogHubProfile Edit hub Profiles Breyta sniði höbbs Profile Snið Create Búa til Delete Eyða Save Vista Settings Stillingar Password Lykilorð OK Áfram Auto Connect Sjálfvirk tenging Cancel Hætta við Hub profile editor Nick Nikk Description Lýsing EMail Póstfang Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Niðurstöður Nick Nikk File Skrá Size Stærð Slot Sæti Hub Höbb Path Slóð Log Log Search Leit Stop Stöðva Results: Niðurstöður: Connected Hubs Tengdir höbbar Bookmark Hubs Bókmerkja höbb Filter Sía Type Tegund At Least Að minnsta kosti At Most Í mesta lagi KB KB MB MB Any Hvað sem er MP3 MP3 Compressed Þjappað Document Skjöl Executable Keyrsluskrár Picture Myndir Video Myndbönd Folder Mappa Hub Search Höbb leit Host Þjónn Threads Þræðir GB GB Free Slots Laus sæti Max Free Slots (0=off) Mest laus sæti (0=af) Exact Nákvæmlega B B 0/0 0/0 0 0 Search in path+file name only Leita eingöngu í slóð+skráarnafni Search History Leitarsaga History Saga Hubs Höbbar Hub Options Höbb stillingar Connected Hub Tengdir höbbar Refresh Endurlesa Public Hubs Almennir höbbar Expert Sérfræðingur User Notandi Search User Leita að notanda Reset Clients Live filters Include: Exclude: Apply Mode Hamur Add Bæta við Start Start the search. Add a search to the searchqueue Filtered Hubs Multi Search Enable Tag Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Nafn Size Stærð Exact size Action Aðgerð Start search Add to download queue Do nothing Do the same action next time without asking OK Áfram Cancel Hætta við DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Stillingar Identify ID Information Upplýsingar E-Mail: Póstfang: Nick: Nikk: Description: Lýsing: Speed: Hraði: 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Gervihn.samband ISDN ISDN Anti-Spam (email at home dot com) And-Spam (notandi at heima dot is) Transfer Flutningur Share Folders Deildar möppur Info Uppl. Add Bæta við Remove Fjarlægja Download Folder Niðurhals mappa Browse Skoða Upload Options Upphals stillingar Connection Tenging Settings Stillingar Mode Hamur Active Mode Virkur hamur Passive Mode Hlutlaus hamur Passive Mode Settings Stillingar hlutlauss hams Active Mode Settings Stillingar virks hams TCP Listen Port: TCP hlustunar port: 412 412 Hub Search Höbba leit UDP Listen Port: UDP hlustunar port: Use ip from interface (ppp0,eth0) Nota IP-tölu frá netkorti (ppp0,eth0) Test Prófa Interface IP IP-tala netkorts Wrong IP "Röng" IP tala GUI Viðmót GUI Options Stillingar viðmóts Other Annað Other Options Aðrar stillingar Hublist Höbbalisti Store local Geyma staðbundið Save Vista Cancel Hætta við Theme Þema Language File Tungumálaskrá Reconnect Counter (0=off) Endurtengingar teljari (0=af) Reconnect Timeout (sec.) Endurtenginga tímarof (sek.) Allow Force Move Leyfa tilfæringar með valdi Source Url's Uppruna URL URL URL Max. upload slots (0=off) Mesti fjöldi upphals sæta (0=af) Application Font Leturgerð forrits Rebuild Endurbyggja Maximal upload connections. Mesti fjöldi upphals tenginga. Transferrate for each slot. Flutningshraði fyrir hvert sæti. Transfer Request Timings Tímar flutningsbeiðna Resend Timeout (sec.) Endursendinga tímarof (sek.) Response Timeout (sec.) Svar tímarof (sek.) Hub Connections Höbb tengingar Sound Hljóð External Player Utanaðkomandi spilari Chat Spjall Units Einingar Auto Sjálfvirkt Byte Bæti GByte GBæti KByte KBæti MByte MBæti General Almennt Disable Sound Aftengja hljóð Play a sound when receiving a message Spila hljóð þegar boð eru móttekin Play a sound when disconnecting from a hub Spila hljóð þegar aftengst er höbb Play a sound when receiving first message Spila hljóð þegar firstu boð eru móttekin Play a sound when sending a message Spila hljóð þegar boð eru send Play a sound when connecting to a hub Spila hljóð þegar tengst er höbb Disable sound when away Aftengja hljóð þegar fjarverandi Files Skrár Player Spilari Sound Files Hljóð skrár Connect Tengjast Preview Forskoðun Disconnect Aftengjast Send Senda Receive Taka á móti 1st Receive Fyrsta móttaka Log Log Timestamp Tímastimpill Private Chat Einka spjall Hub Chat Höbb spjall Download Queue Niðurhals röð Save Queue in minutes (0=off) Vista röð í mínútum (0=af) Move Finished Files to this Folder (empty = disabled) Færa kláraðar skrár í þessa möppu (tómt=ekki færa) Use wrong ip/hostname (Firewall/Portforward) Nota "ranga" IP-tölu/þjónsnafn (Eldveggur/port-framvísun) No multi hub search ! No incoming connections ! Ekki marg-höbba leitir ! Engar inn-tengingar ! Send warn message to remote user on active mode request Senda viðvörun til fjartengdra notenda þegar beðið er um virka tengingu Show Status Messages Sýna stöðu skilaboð Open Private Chat Window Opna einka spjall glugga Transfer Options Flutnings stillingar Transfer View Flutningasýn Chunk Percent Sneiðar prósenta File Percent Skráar prósenta Chunk Size Sneiðar stærð Download Rate Niðurhals hraði File Size Skráar stærð Search Nick: Leitar Nikk: Remaining Time Tími eftir Send hide private chat to public chat Senda dulið einka spjall í almennt spjall Chat options Spjall stillingar upload upphal download niðurhal Add Description Tag (<DCGUI ....>) Bæta við lýsingartagi (<DCGUI ...>) Max. rate B/s (0=off) Mesti hraði B/s (0=af) Folder Mappa New Column Nýr dálkur Away Message: Fjarverandi skilaboð: Get Sækja Refuse private chat messages from offline users Neita einka spjallboðum frá ótengdum notendum Your line speed. Línu hraði þinn. Your nick. Nikk nafnið þitt. The nick for hub searches. Nikk nafnið sem notað er fyrir leitir á höbbum. Your EMail. Póstfang þitt. Enable/Disable the Anti-spam option. Virkja/óvirkja And-Spam aðgerðina. A little description. Lítil lýsing. Add a tag to the description that show some information from you. Bæta við tagi sem sýnir einhverjar upplýsingar frá þér. The tcp listen port for incoming connections. TCP portið sem notað er til að hlusta eftir inn-tenginum. The udp listen port for incoming search results. UDP portið sem notað er til þess að hlusta eftir innkomandi leitartengingum. Get the ip from the interface. Sækja IP tölu frá netkorti. Select a interface. Veldu netkort. Get the ip from the host. Sækja IP-tölu frá þjóni. The time between a reconnect. Timinn milli endurtenginga. How often we reconnect to a hub. Hversu oft endurtengjast á höbb. Rebuild your sharelist. Endurbyggja lista yfir deildar skrár. Add a folder to your sharelist. Bæta við möppu í lista yfir deildar skrár. Remove a folder from your sharelist. Fjarlægja möppu úr listanum yfir deildar skrár. Show some information about your sharelist. Sýna upplýsingar um lista yfir deildar skrár. Browse your own share list. Skoða listann þinn yfir deildar skrár. Time to wait for a transfer response from the remote user. Tími sem bíða á eftir flutnings viðbrögðum frá fjartengdum notendum. Time to wait before a new transfer request is send to the remote user. Tími sem bíða á þangað til beiðni um flutning er aftur send fjartnegdum notanda. Test the new theme. Prófa nýja þemað. Open the chat window on incoming messages. Opna spjall glugga fyrir ný skilaboð sem berast. Enable emoticons in chat Leyfa 'emoticons' í spjalli Data Folder Gagna mappa Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Show Version Tag in User-Description Sýna útgáfunúmer í notenda-lýsingu Messages Skilaboð Query on exit Spyrja þegar lokað Logfile Logskrá Logfile enabled Logskrá virk Security Öryggi Flood Protection Flóðavarnir Kick Message Spark boð Private Address Space (rfc1918) Einka-vistfangs-svæði (RFC1918) Ignore private address space connections Hunsa einka-vistfangs-svæðis tengingar Query Spyrja Client Biðlari User-List Options Stillingar notenda lista User-List right alignment Hægri jöfnun notenda lista Don't Display Messages after X retry (0=off) Ekki birta skilaboð eftur X tilraunir (0=af) Kick the user for flooding (only for Operators) Sparka notanda fyrir að skapa flóð (aðeins fyrir Oppa) Show send button Sýna senda hnapp Dynamic upload rate Kvikur upphals hraði Hide popups of more than Fela uppstökk með fleirum en Send message with Senda boð með lines (0=off) línum (0=af) Browser Skoðari Use tab for every chat window Nota flipa fyrir sérhvern spjall glugga Color remote Litur fjartengds Client options Color Transfer Cert/Key If user quits hub, stop following transfers Upload Upphal Both Download Niðurhal None Auto-Search for new sources Download Rate Single Download Rate Multi Remaining Time Single Remaining Time Multi Path Slóð Alias Edit Breyta Edit a folder from the sharelist. Open File Dialog. Add a URL to the list. Remove a URL from the list. 28.8Kbps 28.8Kbps Enable logging Append date to log file name Nick name filter Disable logging for public chat Append hub name to log file name Append hub host to log file name Forward private to public chat Away Prefix: Select Language. Check and recreate sharelist on startup seconds Away after Auto Away Mode Show joins and parts Comment Athugasemd Speed Hraði EMail Póstfang Share Deilt Photo Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Nafn Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Eðlilegt Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect tengjast Public Almennt reload endurhlaða Name Nafn Server Þjónn Description Lýsing User Notandi update uppfæra 0 0 servers þjónar Bookmarks Bókamerki Hub List Höbb listi Filter Sía Add Bæta við Edit Breyta Del Eyða 0/0 0/0 DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Spæjari Spy On/Off Spæjari af/á Clear Hreinsa Statistic Active: 0 0 Reject: Results: Niðurstöður: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Flutningslisti Nick Nikk State Staða Transfer Flutningur File Skrá Wait Bið Size Stærð Log Log Slots Sæti Hub Höbb 0/0 0/0 Files Skrár Local File / Nick Heima skrá / Nikk Size / Hub Stærð / Höbb Remote File Fjarlæg skrá Server/User IP Þjónn/Notanda IP-tala File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK Áfram Cancel Hætta við DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Spjall PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Nafn Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK Áfram Cancel Hætta við DCDialogUserCommandLines User Command Lines For On Use for all nicks OK Áfram Cancel Hætta við DCDialogUsersList Users List Notenda listi Friends Vinir User Notandi Server name Nafn þjóns Description Lýsing Photo Slot Sæti Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Atriði Files Skrár Total Samtals Directories Skráarsöfn Root Directory Rótar-skráarsafn <wrong length> <röng lengd> file skrá Select destination Veldu áfangastað Select a filename Veldu skráarnafn Filebrowser Choose a file Choose a filename to save under Folder Mappa Download contents? Download the contents of " Failed to load filelist Unable to load OK Áfram Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Skrá does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Niðurhal skráa File allready download Skrá hefur þegar verið halað niður File allready exist ! Skrá er þegar til ! Resume Endurupptaka Overwrite Yfirskrifa Cancel Hætta við Start Multi Download Hefja marg-niðurhal File allready in the queue and not mark as multi download ! Skrá er þegar í röð en ekki merkt fyrir marg-niðurhal ! File allready in the queue with a different size ! Skrá er þegar í röð en er af annari stærð ! You can start a Multi Download ! Marg-niðurhal mögulegt ! The same user/file is allready in the queue ! Sama skrá frá sama notanda er þegar í röðinni ! A same file is allready in the queue ! Samskonar skrá er þegar í röðinni ! If you want to download all files in this mode ? Viltu sækja allar skrár á þennan hátt ? Not connected to required hub! Ekki tengdur þeim höbb sem þarf ! Connect Tengjast (choose an existing download to add to) (veldu niðurhal sem bæta á við) DCFileTransferInfo File Transfer Info Uppl. um skráar flutning DCGuiApp Options Stillingar &Options S&tillingar Ctrl+O Ctrl+O Open option dialog Opna stillinga gluggan Exit Hætta Ctrl+Q Ctrl+Q Quits the application Hættir í forritinu Exit Quits the application Hætta Hættir í forritinu Toolbar Tólarönd Tool&bar &Tólarönd Enables/disables the toolbar Sýnir/felur tólaröndina Toolbar Enables/disables the toolbar Tólarönd Sýnir/felur tólaröndina Statusbar Stöðurönd &Statusbar &Stöðurönd Enables/disables the statusbar Sýnir/felur stöðuröndina Statusbar Enables/disables the statusbar Stöðurönd Sýnir/felur stöðuröndina Cascade Stafla &Cascade Staf&la Cascades all windows Staflar öllum gluggum Cascade Cascades all windows Stagla Staflar öllum gluggum Tile Flísaleggja &Tile &Flísaleggja Tiles all windows Flísaleggja alla glugga Tile Tiles all windows Flísaleggja Flísaleggja alla glugga Ctrl+S Ctrl+S Transfer List Flutningslisti &Transfer List &Flutningslisti Ctrl+T Ctrl+T Show Transfer List Sýna flutningslista Hub Search Höbba leit &Hub Search Höbba &leit Ctrl+H Ctrl+H Show Hub Search Sýna höbba leit About Um &About... &Um... About the application Upplýsingar um forritið About About the application Um Upplýsingar um forritið New Version Ný útgáfa &New Version... &Ný Útgáfa... Check for new version Athuga hvort út er komin ný útgáfa New Version Check for new version Ný útgáfa Athuga hvort út er komin ný útgáfa What's &This &Hvað er þetta &File &Skrá &View S&koða &Action &Aðgerð &Window &Gluggi &Help &Hjálp Ready. Til reiðu. (no error message from socket) (engin villuboð frá tengingu) TCP listen failed, change to passive mode ! TCP hlustun klikkaði, skiptip í hlutlausan ham ! Quit... Hætta ... Open options dialog... Opnar stillinga glugga ... Exiting application... Hætti í forriti ... Toggle toolbar... Víxla tólarönd ... Toggle statusbar... Víxla stöðurönd ... About... Um ... New version... Ný útgáfa ... Show/hide transfer list window ... Sýna/fela flutnings lista glugga ... Show/hide hub search window ... Sýna/fela höbba leitar glugga ... Can't get version info from server Fékk ekki upplýsingar um útgáfu frá þjón Current version is: Núverandi útgáfa er: Normal Eðlilegt &Normal &Eðlilegt Ctrl+N Ctrl+N Set away mode Setja sem fjarverandi Away Fjarverandi &Away &Fjarverandi Ctrl+A Ctrl+A Hub List Höbba listi Show Hub List Sýna höbba lista Show/hide hub list window ... Sýna/fela höbba lista glugga ... H&ub List &Höbba listi Ctrl+U Ctrl+U Minimize Minnka &Minimize &Minnka Minimize all windows Minnka alla glugga Minimize Minimize all windows Minnka Minnka alla glugga Action Aðgerð Quick Options Flýtistillingar Quick options Flýtistillingar F12 F12 Context menu for a few options Samhengis valmynd fyrir nokkrar stillingar Download mode: Ask Niðurhalsmáti: Spyrja Download mode: Single Niðurhalsmáti: Einfalt Download mode: Multi Niðurhalsmóti: Margfalt Spy Spæjari &Spy &Spæjari Show Spy Sýna spæjara Show/hide spy window ... Sýna/fela spæjara glugga ... Users Notendur Ctrl+F Ctrl+F Show users: search tab and friends tab Sýna notendur: leitarflipa og vinaflipa Do you really want to quit? Viltu örugglega hætta? Exiting application... aborted Hætti í forriti ... hætt við Show/hide users window ... Sýna/fela notenda glugga ... Away &Mode Tile &Horizontally Reload Plugins &Reload Plugins &Dock Dock the application Hub &Search S&py Ctrl+P Dock/Undock application... Refresh share in progress. Endurlesning deilihluta í gangi. Refresh share allready in progress. Endurlesning deilihluta er nú þegar í gangi. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Almennt Bookmarks Bókamerki Add Bookmark Bæta við bókarmerki Error Villa Edit Bookmark Remove bookmarks You are sure ? Remove Fjarlægja Cancel Hætta við Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Búa til höbb snið Please enter the profile name Sláðu inn nafn á höbb sniðinu Save profile Do you want to save your changes? Save Vista Cancel Hætta við Are you sure? Delete profile for DCHubSearch Connect to local udp port failed. ( Tenging að heima UDP porti tókst ekki. ( No hubs found. Engir höbbar fundust. Hub Search Error Villa við leit að höbb No connected hubs found. Engir tengdir höbbar fundust. Select download folder Veldu niðurhals möppu Select search Veldu leit Please select an search Vinsamlegast veldu leit Please select a connected hub. Vinsamlegast veldu tengdan höbb. Select file for Veldu skrá fyrir No search found. Engin leit fannst. USER FILE Not connected to required hub! Ekki tengdur þeim höbb sem þarf ! Connect Tengjast Cancel Hætta við Choose a filename to save under Choose a file to open Start Stop Stöðva Filelist download Please add a search! Multi Search only work in active mode! Folder Mappa Unknown Óþekkt None Directory File Skrá Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Þú verður að slá inn gildan 'Plat-þjón' ! You must enter a valid interface ! Þú verður að slá inn gilt netkort ! You must enter a valid tcp listen port ! Þú verður að slá inn gilt TCP hlustunar port ! You must enter a valid udp listen port ! Þú verður að slá inn gilt UDP hlustunar port ! You must enter a valid nick ! Þú verður að slá inn gilt Nikk ! Interface IP : IP tala netkorts : Can't get interface IP ! Get ekki sótt IP-tölu netkorts ! Select download folder Veldu niðurhals möppu Select share folder Veldu möppu til að deila Select language file Veldu tungumálaskrá HubList URL Höbb lista URL Please enter a url Vinsamlegast sláðu inn URL Share list not available Listi yfir deildar skrár er ekki til staðar bytes bæti Total shared: Samtals deilt: Share List Info Deili-lista upplýsingar You change the client mode ! Please restart DCGUI ! Biðlara ham var breytt ! Vinsamlegast endurræsið DCGUI ! My Mitt Select sound file Veldu hljóðskrá Select sound player Veldu hljóð spilara au au wav wav All Files Allar skrár Host IP : IP-tala þjóns : Can't get Host IP ! Get ekki sótt IP-tölu þjóns ! Select download finished folder Veldu möppu fyrir kláruð niðurhöl You must set a Download Folder ! Þú verður að tiltaka niðurhals möppu ! Download Finished Folder and Download Folder must be different ! Mappa fyrir kláruð niðurhöl verður að vera önnur en niðurhals mappan ! You must enter a valid search nick ! Þú verður að slá inn gilt Nikk ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Þegar hlustað er á porti fyrir neðan 1024 þá þarf að keyra DCGUI undir 'root' aðgangi í virkum ham ! Other Annað Log Log Sound Hljóð General Almennt Files Skrár GUI Viðmót Chat Spjall Transfer Flutningur Connection Tenging Mode Hamur Settings Stillingar DCGUI DCGUI Identify ID Folder Mappa Interface List Netkorta listi Please select an interface Vinsamlegast veldu netkort No interfaces found ! Engin netkort fundust ! Select data folder Feldu gagna möppu User Notandi Select log file Veldu log skrá Security Öryggi Select a browser Veldu skoðara Compressed list size (HE3/BZ): Stærð þjappaðs skráarlista (HE3/BZ): Select transfer cert Select transfer key Add new nick name filter Please enter a nick Chat Timestamp Chat Local Nick Chat Local Text Chat Remote Nick Chat Remote Text Chat Status Nick Chat Status Text Public Chat Timestamp Public Chat Local Nick Public Chat Local Text Public Chat Remote Nick Public Chat Remote Text Public Chat Status Nick Public Chat Status Text Public Private Chat Nick Public Private Chat Text Select a 64x64 Photo You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Biðlari DCServerList Add Bookmark Bæta við bókarmerki Edit Bookmark Breyta bókamerki Select profle Veldu snið Please select an profile Vinsamlegast veldu snið Public Almennt Bookmarks Bókamerki DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Bið Idle Laus Run Keyrir Transfer Flutningur Error Villa Download Niðurhal Upload Upphal Unknown Óþekkt Pause Hvíld Hub offline Höbb ótengur User offline Notandi ótengdur User busy Notandi upptekinn Send error Sendi villa Change Transfer-Rate Breyta flutningshraða Please enter a Transfer-Rate [B/s] (0=off) Sláðu inn flutningshraða [B/s] (0=ótakmarkað) Change File-Priority Breyta forgangi skráar Please enter a priority Sláðu inn forgang Remove Fjarlægja Cancel Hætta við Try Connect Reyna tengingu User and Hub not found in the queue ! Nick: Nikk: Hub: Remove Transfer You are sure ? My Mitt Share list not available Listi yfir deildar skrár er ekki til staðar None File Skrá %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Þýðandi Choose a language Veldu tungumál Chinese Simplified to English Chinese Traditional Dutch French German Greek Italian Japanese Korean Portuguese Russian Spanish Detect language Arabic Bulgarian Chinese Croatian Czech Danish Finnish Hindi Norwegian Polish Romanian Swedish OK Áfram Cancel Hætta við Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Nafn Server Þjónn Description Lýsing Users Notendur Country Shared Deilt Minimum share Extra QObject Download Niðurhal Download To Niðurhal til Download As Niðurhal sem Browse User Files Skoða skrár notanda Private Chat Einka spjall Kick Sparka Force Move Færa með valdi Update User Uppfæra notanda Connect Tengja Disconnect Aftengja Reload Userlist Endurhlaða notendalista Connect To Hub Tengjast höbb Add Bæta við Add Bookmark Bæta við bókarmerki Edit Breyta Edit Bookmark Breyta bókarmerki Remove Fjarlægja Close Transfer Stöðva flutning Info Upplýsingar Try Connect Reyna tengingu Remove from Queue Fjarlægja úr röð Remove Transfer from Queue and Disk Fjarlægja flutninga úr röð og af diski Add Slot to User Gefa notanda sæti Add Permanent Slot to User Gefa notanda sæti til frambúðar Remove Slot from user Fjarlægja sæti frá notanda Save Queue Vista röð Update Server Uppfæra þjón Update all Server Uppfæra alla þjóna Change Transfer-Rate Breyta flutningshraða Copy row to Clipboard Afrita röð á smellispjald Copy column to Clipboard Afrita dálk á smellispjald File Info Skráar upplýsingar Connect To All Hubs Tengjast öllum höbbum Search for clones Leita að klónum Remove complete from Queue Fjarlægja algerlega úr röð Load Sækja Save Vista Edit Hub Profiles Breyta höbb sniði Set Hub Profile Setja höbb snið Add this extra source Bæta við auka uppsprettu Edit transfer Breyta flutning Edit file priority Breyta forgangi skráar Translate Þýða Translator Þýðandi Disable group Óvirkja hóp Group by File Raða eftir skrá Group by Size Raða eftir stærð Group by Nick Raða eftir Nikk Group by free Slots Raða eftir lausum sætum Group by Hub Raða eftir höbb Group by Path Raða eftir slóð Group by Host Raða eftir þjón Copy Afrita Clear Hreinsa Select all Velja allt Close Loka Group Röðun Hide Refresh Filelist Pause Queue Resume Queue Insert Smiley Add Friend Czech Danish Dutch Finnish German Hungarian Icelandic Norwegian Polish Romanian Spanish Swedish Copy Link Request secure chat Close secure chat Check client version Add Permanent Profile editor Group by Hash Reset Dock Undock Exit Hætta Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Notandi: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (veldu niðurhal sem bæta á við) File download Niðurhal skráa A same file is already in the queue! Start a multi-download Cancel Hætta við File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Endurupptaka Overwrite Yfirskrifa File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Ekki tengdur þeim höbb sem þarf ! Group by total Slots Download Folder Niðurhals mappa Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Nikk Comment Athugasemd Tag Speed Hraði Email Share Deilt IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.pl.ts0000664000076400007640000112640611144234504016136 0ustar ejsejs DCBrowseFileTree Select destination Wybierz katalog docelowy Select a filename Wybierz nazwę pliku <wrong length> <zły rozmiar> Choose a filename to save under Wybierz nazwę pliku pod którą zapisać DCChat Message not send ! Wiadomość nie wysłana ! Private Chat: Rozmowa prywatna: Chat Cleared. Okno rozmowy wyczyszczone. Translation: Tłumaczenie: Translation failed: Tłumaczenie nie powiodło się: Current mode: Aktualny tryb: active aktywny passive pasywny Refresh share in progress. Odświeżanie listy plików trwa. Refresh share allready in progress. Odświeżanie listy plików już trwa. Switch timestamp Send advertisment. Wyślij reklamę. Wrong parameter for '/join' Błędny parametr polecenia '/join' Join to: Dołącz do: Wrong parameter for '/msg' Błędny parametr polecenia '/msg' Private message send. Wiadomość prywatna wysłana. Private message not send ! Wiadomość prywatna nie wysłana ! Away message disabled. Wiadomość niedostępności wyłączona. Away message set. Wiadomość niedostępności włączona. Line is encrypted. Linia jest zaszyfrowana. Line is not encrypted. Linia jest nie zaszyfrowana. Choose a filename to save under Wybierz nazwe pliku pod którą zapisać Help: Pomoc: /clear - clear the chat window /clear - czyści okno rozmowy /mode - show current mode /mode - wyświetla aktualny tryb /refresh - refresh share /refresh - odświerza listę udostępnionych plików /ts - switch time display in chat on/off /ts - przelącza wyświetlanie czasu w oknie rozmowy /dcgui - send an advertisment to the hub /dcgui - wysyła reklamę na hub /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;adres&gt; - rozłącza z obecnie połączonego huba i łączy się z innym hubem /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;kstwka&gt; &lt;wiadomość&gt; - wyślij prywatną wiadomość /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;wiadomość&gt; - wyślij automatycznie &lt;wiadomość&gt; do użytkownika w wypadku Twojej niedostęþnośći. Jeżeli &lt;wiadomość&gt; jest pusta, blokuje wysyłanie wiadomości. Select download folder Wybierz katalog pobierania Select file for Wybierz plik dla Text Encoding Kodowanie tekstu Choose a codec Wybierz kodowanie Only allowed in private chat. Dozwolone tylko na prywatnym czacie. Photo encode error. Błąd kodowania zdjęcia. Photo received. Ściągnięto zdjęcie. Refresh share already in progress. Odświerzanie listy plików właśnie trwa. Chat: Rozmowa: Message not sent! Wiadomość nie wysana! /clear - clears the chat window /clear - czyści okno rozmowy /mode - shows the current mode /mode - pokaż obecny tryb /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /fav - dodaj hub do ulubionych /now - send current time to the chat /raw - send raw message Get info failed. Pobranie informacji nieudane. Info: Informacja: Nick: Pseudonim: Operator: yes tak no nie Comment: Opis: Speed: Połączenie: EMail: E-Mail: Shared: Away: on Włączone off Wyłączone Version: Wersja: Unknown Nieznane Tag: tag: day dzień days dni hour godzina hours godziny minute minuta minutes minuty Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Slot dodany dla Added to friend list Dodany do ulubionych Add bookmark hub Dodany do ulubionych Private message sent. Prywatna wiadomość wysłana. Private message not sent! Prywatna wiadomość niewysłana! The user is using an old version or not using Valknut Photo not found. Zdjęcie nie znalezione. Can't read your photo. Nie można odczytwać twojego zdjęcia. Photo not sent. Zdjęcie nie wysłane. Photo sent. Zdjęcie wysłane. /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Wejśćia: Parts: Wyjścia: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list /ignore &lt;nick&gt; - do not show main chat lines from the user /ignore &lt;nick&gt; - nie pokazuj w głównym czacie lini od użytkownika /unignore &lt;nick&gt - show main chat lines from the user again /unignore &lt;nick&gt - pokazuj w głównym czacie linie od użytkownika Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. Error was: Shell command event not found in list Unknown command, try /dchelp /ratio [show] - show share ratio [to other users] /newlog - start a new logfile No command entered. Process still running after seconds, killing process... ratio: overall: uploads downloads this session: New log timestamp: Warning: log timestamp not enabled. Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Hub Hub Chat List Lista czatu Line is encrypted. Linia jest zaszyfrowana. Line is not encrypted. Linia jest nie zaszyfrowana. Disconnect. Rozłącz. Connect. Połącz. Connected Połączony Connection timeout Error: ' Błąd: ' Disconnected Rozłączony We left the hub. Your Nick is already in use. Twój nick jest aktualnie w użyciu. Redirect to Przekierowanie do Redirect disabled Przekierowanie wyłączone Hubname change: Zmiana nazwy huba: Use password from profile Użyj hasła z profilu Password from profile is empty Hasło z profilu jest puste No profile found for this hub Nie znaleziono profilu dla tego huba Password - Hasło - Please enter your password Proszę podaj swoje hasło Wrong password Nieprawidłowe hasło User rejoin the hub. Użytkownik powrócił na hub. Joins: Wejśćia: User left the hub. Użytkownik opuścił hub. Parts: Wyjścia: User: Użytkownik: users użytkownicy OP Kick OP Wykop Please enter a reason Proszę podać powód OP Force Move OP Wymuś ruch Please enter host Proszę podać hosta Please enter a message Proszę podać wiadomość Close chat tab Zamknij zakładkę czatu Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) Nie możesz pobierać ode mnie ponieważ obaj jesteśmy w trybie pasywnym (automatyczna wiadomość) Downloads filelist Pobrana lista plików User command for Polecenie użytkownika dla OK OK Cancel Anuluj Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Włącz Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Kolumny Any Każdy DCDebug Send error Wyślij błąd Could not send the data. Error '%1'. Nie można wysłać danych. Send Wyślij Thanks for your help. Dziękujemy za twoją pomoc. Save error Zapisz błąd Can't open file '%1' for writing. Nie można utworzyć pliku do zapisu. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About Informacje o Valknut OK OK Authors Autorzy License Licencja Sponsor Sponsor Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Portions (C) 2006-2007 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Portions (C) 2006-2007 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Portions (C) 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Portions (C) 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Pobieranie pliku Download mode? Multi Return Single Esc Download all files in this mode DCDialogChat &Send &Wyślij DCDialogChat DCDialogChat DCDialogClient DCDialogClient DCDialogClient 0 0 User(s) Użytkownicy Share Udostępnione ... ... Nick Pseudonim Comment Opis Tag Tag Speed Połączenie EMail E-Mail IP IP Lock/PK Lock/PK Supports Wsparcia Chat List Lista czatu User Użytkownik DCDialogConnectionManager Connection Połączenie DCDialogDebug DCGUI Crash Handler DCGUI Crash Handler Comment Komentarz &Save &Zapisz Save to file. Zapisz do pliku. S&end &Wyślij Send bugreport. Wyślij raport błędu. E&xit &Wyjście Exit. Wyjście. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Żaden Send Wyślij Receive Both OK OK Cancel Anuluj malloc info DCDialogEditServer DCDialogEditServer DCDialogEditServer &Cancel &Anuluj &OK &OK &Profile &Profil Settings Ustawienia Host Host Description Opis Name Nazwa Profile Profil Password Hasło Nick Pseudonim EMail E-Mail Auto Connect Połącz przy starcie Tag Tag Secure Socket Layer Użyj SSL Extended hub count Rozszerzony licznik huba Suppress nicks Filtrowani użytkownicy A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Wyrażenie regularne dotyczące pseudonimów użytkowników, którego zadaniem jest blokowanie okienek popup. Przykład "Hub|Bot|Spammer". Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Edycja udostępnionego katalogu Alias Alias Path Ścieżka &Cancel &Anuluj &OK &OK DCDialogEditTransfer Edit Transfer Edytuj transfer Settings Ustawienia Nick Użytkownik Hub name Nazwa huba Hub address Adres huba Known hubs Znane huby &Cancel &Anuluj &OK &OK DCDialogFileBrowser Open Otwórz Save Zapisz Encoding: Kodowanie: Name Nazwa Size Rozmiar Type Rodzaj TTH TTH Form1 Form1 Remote: Zdalny: Folder Katalog Exact Size Dokładny rozmiar Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Informacja o transferowanym pliku File Plik Size Rozmiar Hash Hash Sources Ilość źródeł DCDialogForceMove OP Force Move OP Wymuś ruch Please enter a host Please enter a message Proszę podać wiadomość OK OK Cancel Anuluj DCDialogGetURL Get URL Zdobądź URL &Cancel &Anuluj DCDialogHubFilter Hub Filter Filtr dla huba Settings Ustawienia Description Opis Min. User Minimum użytkowników Server Serwer Filter Filtr Name Nazwa Contains Zawiera &OK &OK &Cancel &Anuluj DCDialogHubListManager Hub List Lista hubów Public Publiczny Name Nazwa Server Adres Description Opis User Użytkownicy double click to hide the toolbar Podwójny klik ukrywa pasek narzędzi edit filter Edytuj filtrowanie delete filter Usuń filtrowanie Filter Filtrowanie update public hublist Uaktualnij publiczną liste hubów add filter Dodaj filtrowanie reload public hublist Odśwież publiczną liste hubów double click to show the toolbar Podwójny klik pokazuje pasek narzędzi Bookmarks Ulubione connect Połącz Users Ulubieni użytkownicy Country Kraj Shared Udostępniono Extra Dodatkowe Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Włącz sortowanie Enable sorting of the bookmarks. Save Zapisz Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Dodaj Edit bookmark. Edit Edytuj Remove bookmark. Remove Usuń DCDialogHubProfile Hub profile editor Edycja profilu huba Profile Profil &OK &OK &Cancel &Anuluj Settings Ustawienia Nick Pseudonim Password Hasło Description Opis EMail E-Mail Auto Connect Połącz przy starcie Tag Tag Secure Socket Layer Użyj SSL Delete Usuń Extended hub count Rozszerzony licznik huba Suppress nicks Filtrowani użytkownicy A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Wyrażenie regularne dotyczące pseudonimów użytkowników, którego zadaniem jest blokowanie okienek popup. Przykład "Hub|Bot|Spammer". Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Hub Search Wyszukiwanie Search Wyszukiwanie Mode Tryb Results Wyniki File Plik Size Rozmiar Hash Hash Nick Pseudonim Hub Hub Path Ścieżka Host Host User Użytkownik Log Logi Results: Wyniki: 0 0 0/0 0/0 Start Start Start the search. Rozpocznij wyszukiwanie. Add Dodaj Add a search to the searchqueue Dodaj do kolejki szukania Filter Filtr B B KiB kB MiB MB GiB GB At Least Przynajmniej At Most Nie więcej Exact Dokładnie Type Typ Any Każdy Audio Muzyka Compressed Archiwum Document Dokument Executable Program Picture Plik graficzny Video Film Folder Katalog TTHash TTH Reset Wyczyść Hubs Huby Hub Options Opcje huba Connected Hub Połączony hub Connected Hubs Połączone huby Refresh Odśwież Public Hubs Huby publiczne Bookmark Hubs Ulubione huby Filtered Hubs Przefiltrowane huby Live filters Filtrowanie wyników wyszukiwania Max Free Slots (0=off) Maksymalna liczba wolnych slotów (0=wyłącz) Search in path+file name only Szukaj tylko w nazwie pliku i ścieżce Free Slots Wolne sloty Include: Włączyć: Exclude: Wykluczyć: Apply Akceptuj Expert Zaawansowane Clients Klientów Multi Search Multi Wyszukiwanie Enable Tag Włącz Taga Total Slots Wszystkie sloty Purge Usuń Clear the search history Wyczyść historie wyszukania Count Licznik Ready Overall search status Clear search string and set search size, size mode and file type to default TTH TTH Any size At least At most Maximum results Unlimited IP IP DCDialogMagnet Magnet Link Details Link TTH TTH Name Nazwa Size Rozmiar Exact size Action Akcja Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Anuluj DCDialogMessage DCDialogMessage DCDialogMessage Do not show this again. Nie pokazuj tego ponownie. DCDialogOptions Options Ustawienia &Save &Zapisz &Cancel &Anuluj Identify Identyfikacja Information Twoje dane Nick: Pseudonim: Description: Opis: E-Mail: E-Mail: Search Nick: Wyszukiwany pseudonim: A little description. Add Description Tag (<DCGUI ....>) Add a tag to the description that show some information from you. Away Message: Autmatyczna wiadomość podczas nieobecności: Your line speed. Speed: Szybkość łącza: Away Prefix: Prefiks w opisie podczas nieobecności: Anti-Spam (email at home dot com) Anty-Spam ( nazwa at nazwa dot domena) Enable/Disable the Anti-spam option. Your nick. Twój pseudonim. The nick for hub searches. Your EMail. Photo Zdjęcie Transfer Transfer Move Finished Files to this Folder (empty = disabled) Przenieś pobrane pliki do katalogu (brak = wyłącz) Open File Dialog. Download Folder Katalog pobierania Share Folders Udostępnione katalogi Path Ścieżka Alias Alias Rebuild your sharelist. Odśwież swoją listę plików. Browse your own share list. Show some information about your sharelist. Add a folder to your sharelist. Remove a folder from your sharelist. Edit a folder from the sharelist. Check and recreate sharelist on startup Sprawdzanie i odświeżanie listy udostępnionych przy starcie Disable hash list Settings Ustawienia Download Queue Transfer Request Timings Time to wait for a transfer response from the remote user. Time to wait before a new transfer request is send to the remote user. Resend Timeout (sec.) Response Timeout (sec.) Maximal upload connections. Dynamic upload rate If user quits hub, stop following transfers Download Pobieranie Upload Both None Żaden Auto-Search for new sources Connection Połączenie Mode Tryb Active Mode Passive Mode Passive Mode Settings Send warn message to remote user on active mode request No multi hub search ! No incoming connections ! Active Mode Settings Hub Search Wyszukiwanie UDP Listen Port: The udp listen port for incoming search results. IP, Hostname or Interface Test Get the ip from the host. Get Interface Select a interface. Get Internet IP IP or Hostname Network Interface Listen on IP Hub Connections Reconnect Timeout (sec.) The time between a reconnect. How often we reconnect to a hub. Allow Force Move Private Address Space (rfc1918) Ignore private address space connections GUI Wygląd General Language File Select Language. Theme Test the new theme. Units Auto Byte GiB GB KiB kB MiB MB Application Font Data Folder Query Query on exit Query on File Delete Messages Show Status Messages Transfer View Chunk Percent File Percent File Size Chunk Size Remaining Time Single Download Rate Single Remaining Time Multi Download Rate Multi Chat Czat Chat options Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Send message with Color Open Private Chat Window Open the chat window on incoming messages. Use tab for every chat window Show send button Show joins and parts Forward private to public chat Enable emoticons in chat Client Client options seconds Away after Auto Away Mode User-List right alignment Columns Kolumny Tag Tag Speed Połączenie Share Udostępnione EMail E-Mail IP IP Supports Wsparcie Sound Dźwięki Sound Files Play a sound when disconnecting from a hub Play a sound when sending a message Play a sound when receiving a message Play a sound when connecting to a hub Play a sound when receiving first message Disable Sound Disable sound when away External Player Log Logi Timestamp Private Chat Wyślij prywatną wiadomość Hub Chat Logfile Logfile enabled Enable logging Append date to log file name Nick name filter Disable logging for public chat Append hub name to log file name Append hub host to log file name Hub Lists Listy Hubów Source Url's Add a URL to the list. Edit hublist url. Remove a URL from the list. Store local Security Bezpieczeństwo Flood Protection Kick the user for flooding (only for Operators) Kick Message Transfer Cert/Key Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Wyrażenie regularne dotyczące pseudonimów użytkowników, którego zadaniem jest blokowanie okienek popup. Przykład "Hub|Bot|Spammer". Commands Custom chat commands Name Nazwa Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Pobrana lista plików Icons Ikony Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Lista plików Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks Ignoruj użytkowników A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Plugin folder Other Inny Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Background color Kolor tła Enable Włącz Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Domyślna przeglądarka Uncheck to use your default desktop web browser. Reverse chat colors Odwróć kolory czata Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Obecny Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList Hub List Lista hubów Public Publiczna Name Nazwa Server Serwer Description Opis User Użytkownik double click to hide the toolbar Podwójne kliknięcie ukrywa pasek narzędziowy edit filter Edytuj filtr delete filter Usuń filtr Filter Filtr update public hublist Uaktualnij publiczną listę hubów add filter Dodaj filtr reload public hublist Przeładuj publiczną listę hubów double click to show the toolbar Podwójne kliknięcie pokazuje pasek narzędziowy Bookmarks Ulubione connect Połącz DCDialogSplash Valknut Valknut DCDialogSpy Spy Agent wyszukiwania Text Tekst Count Licznik Clear Wyczyść Statistic Statystyki Active: Aktywne: 0 0 Reject: Odrzucone: Results: Rezultatów: Search Error: Błędne wyszukiwania: Result Error: Błędne rezultaty: Passive: Pasywne: Time Czas Spy Enabled Szpiegowanie aktywne Ignore TTH searches Ignoruj wyszukiwania po TTH DCDialogTransfer Transfer List Lista transferów Transfer Transfer Nick Użytkownik Hub Hub File Name Nazwa pliku Remote File Plik zdalny Local File Plik lokalny Wait Oczekujące Hub/File Hub \ Plik IP/Size IP \ Rozmiar State Status Files Pliki Local File / Nick Plik lokalny \ Użytkownik Size / Hub Rozmiar \ Hub Slots Sloty Log Logi TTH TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Anuluj DCDialogUpdateManager Update Manager Menadżer Aktualizacji Update Aktualizuj Check update Sprawdź aktualizacje DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Czat PM Prywatna wiadomość Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Nazwa Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Anuluj DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Anuluj DCDialogUsersList User Użytkownik Users List Ulubieni użytkownicy Photo Zdjęcie Slot Slot Ignore Ingoruj DCEditServer Please enter a hubname. Wprowadź proszę nazwę huba. Please enter a hubhost. Wprowadź proszę host huba. DCFileBrowser Filebrowser Lista plików open filelist dialog Otwórz plik dialogu Choose a file Wybierz plik save file dialog Zapisz plik dialogu Choose a filename to save under Wybierz nazwę pliku do zapisu file plik Items Elementów Files Plików Total Razem Directories Katalogów <wrong length> <zły rozmiar> Root Directory Katalog główny Select destination Wybierz katalog docelowy Select a filename Wybierz nazwę pliku Folder Katalog Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Wszystkie pliki Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Plik does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Żaden Directory Katalog Modern XML Filelists (uncompressed) Search by TTH Szukaj po TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Pobieranie pliku A same file is already in the queue! Taki sam plik znajduje się już w kolejce! Start a multi-download Pobieranie pliku w trybie multi Cancel Anuluj Repair File Naprawa pliku Repair BIN Sectors Napraw BIN sektory File already exists! Plik aktualnie instnieje! You can start a multi-download! Rozpocząć multi pobieranie? Do you want to download all files in this mode? Czy chcesz aby wszystkie pliki były pobierane w tym trybie? Not connected to required hub! Nie połączony z wymaganym hubem! Connect Połącz DCFileTransferInfo File Transfer Info Informacja o transferowanym pliku DCGuiApp Options Ustawienia &Options &Ustawienia Ctrl+O Open option dialog Ustawienia Filelist browser Lista plików Open filelist browser Filelist browser local Otwórz własną listę plików Open local filelist browser Quick Options Ustawienia pobierania Quick options F12 Download mode: Ask Tryb pobierania: Pytaj Download mode: Single Tryb pobierania: Pojedynczy Download mode: Multi Tryb pobierania: Multi Reload Plugins Przeładuj pluginy &Reload Plugins &Przeładuj pluginy Exit Wyjście Ctrl+Q Quits the application Exit Quits the application. Tabbar Zakładki Enables/disables the tabbar Toolbar Pasek narzędzi Tool&bar Pasek &narzędzi Enables/disables the toolbar Toolbar Enables/disables the toolbar. Statusbar Pasek stanu &Statusbar Pasek s&tanu Enables/disables the statusbar Statusbar Enables/disables the statusbar. Dock Zadokuj &Dock &Zadokuj Dock the application Cascade Kaskadowo &Cascade &Kaskadowo Cascades all windows Cascade Cascades all windows. Tile Vertically Sąsiadująco w poziomie &Tile Vertically &Sąsiadująco w poziomie Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tile &Horizontally Sąsiadująco w p&ionie Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize Minimalizuj &Minimize &Minimalizuj Minimize all windows. Minimize Minimize all windows. Close chat windows. Zamknij czatów prywatnych. Close all chat windows. Close disconnected hubs. Zamknij rozłączonych hubów. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Hub List Lista hubów H&ub List Lista &hubów Ctrl+U Show Hub List. Pokaż lisŧę hubów. Transfer List Transfery &Transfer List &Transfery Ctrl+T Show Transfer List. Pokaż transfery. Hub Search Wyszukiwanie Hub &Search &Wyszukiwanie Ctrl+S Show Hub Search. Pokaż wyszukiwanie. Spy Agent wyszukiwania S&py A&gent wyszukiwania Ctrl+P Show Search Spy. Pokaż Agenta wyszukiwania. Users Ulubieni użytkownicy Ctrl+F Normal Obecny &Normal O&becny Ctrl+N Away Nieobecny &Away &Nieobecny Ctrl+A About Informacje o Valknut &About... &Informacje o Valknut... About the application. Support Wsparcie &Support... &Wsparcie... Connect to Valknut hub Support Connect to the Valknut hub. Latest release Ostatnia wersja &Latest release... O&statnia wersja... Away &Mode Inform&acja o nieobecności What's &This Co &To &File &Plik &View &Widok &Action &Akcja &Window &Okno &Help &Pomoc Action Akcja Show Hub List Pokaż lisŧę hubów Show Hub Search Pokaż wyszukiwanie Show Transfer List Pokaż transfery Show Spy Pokaż Agenta wyszukiwania Recreate share Odśwież swoją listę plików Show update manager Pokaż Menadżer aktualizacji Tab Bar Ready. Gotowy. RX/TX Traffic. Available disc space. Quit... Do you really want to quit? Refresh share finished. Odświeżanie listy plików zakończone. Open options dialog... Refresh share in progress. Odświeżanie listy plików trwa. Refresh share already in progress. Odświerzanie listy plików właśnie trwa. Exiting application... Exiting application... aborted Toggle tabbar... Toggle toolbar... Toggle statusbar... Dock/Undock application... Warning license file not found ! latest release is: Ostatnia wersja to: Latest release... Ostatnia wersja... Show/hide transfer list window ... Show/hide hub list window ... Show/hide spy window ... Show/hide users window ... Manual Pomoc &Manual... &Pomoc... Online User Manual. Dock Application Zadokuj aplikację The system tray icon must be enabled to dock the application. Update Manager Menadżer aktualizacji The update manager is disabled. Menadżer aktualizacji jest wyłączony. Ratio: Overall: (Up: , Down: ) This session: Valknut Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Odśwież listę plików Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Publiczne Bookmarks Ulubione Add Bookmark Dodaj do ulubionych Error Błąd Please enter a hubname. Wprowadź proszę nazwę huba. Please enter a hubhost. Wprowadź proszę host huba. Edit Bookmark Edytuj ulubiony Remove bookmarks Usuń ulubiony You are sure ? Czy na pewno? Remove Usuń Cancel Anuluj Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Save profile Zapisz profil Do you want to save your changes? Chcesz zapisać swoje zmiany? Save Zapisz Cancel Anuluj Are you sure? Delete profile for DCHubSearch Start Szukaj Stop Zatrzymaj Hub Search Error Please add a search! Multi Search only work in active mode! Please select a connected hub. No connected hubs found. No hubs found. Nie znaleziono huba. USER UŻYTKOWNIK FILE PLIK Select download folder Wybierz katalog pobierania Select file for Wybierz plik dla Filelist download Not connected to required hub! Nie połączony z wymaganym hubem! Connect Połącz Cancel Anuluj save file dialog Zapisz plik dialogu Choose a filename to save under Choose a file to open Wybierz plik do otwarcia Folder Katalogi Unknown Nieznany None Żaden Directory Katalog File Plik Search ended with %1 results %1 results were filtered on Włączone Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Wyszukiwanie Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions Security Bezpieczeństwo Hub Lists Listy Hubów Log Logi Sound Dźwięki GUI Wygląd User Użytkownik Chat Czat Transfer Transfer General Connection Połączenie Settings Ustawienia Mode Tryb Valknut Valknut Identify Identyfikacja You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Nie można zapisać obrazka! Can't load Image! Select a 64x64 Photo Wbyierz zdjęcie o rozmiarze 64x64 Add new nick name filter Please enter a nick Host IP: Can't get Host IP! Interface IP: Can't get interface IP! Interface List Please select an interface No interfaces found! Select sound player Select transfer cert Select transfer key Select a browser au wav All Files Wszystkie pliki Select sound file Select download folder Wybierz katalog pobierania Select download finished folder Select data folder Select log file Select share folder Chat Timestamp Chat Local Nick Chat Local Text Chat Remote Nick Chat Remote Text Chat Status Nick Chat Status Text Public Chat Timestamp Public Chat Local Nick Public Chat Local Text Public Chat Remote Nick Public Chat Remote Text Public Chat Status Nick Public Chat Status Text Public Private Chat Nick Public Private Chat Text Chat Say Public Chat ME Nick Share list not available Lista plików niedostępna Compressed list size (HE3/BZ/XML): bytes Total shared: Share List Info Select language file HubList URL Please enter a url Edit url Auto Responses Filelist browser Lista plików Icons Ikony Menus Commands Error getting IP Operator Nick Yes Tak No Nie Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Other Inny Select plugin folder Delete menu command? Delete " Kasuj " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Czekaj Idle Bezczynny Run Wykonaj Hub offline Hub odłączony User offline Użytkownik odłączony User busy Użytkownik zajęty Send error Wyślij błąd Unknown Nieznany Transfer Transfer Error Błąd Pause Pauza My Moja Browse Share List Przeglądaj listę plików Share list not available Lista plików niedostępna Change Transfer-Rate Zmień ograniczenie transferu Please enter a Transfer-Rate [B/s] (0=off) Podaj wartość ograniczenia transferu [b/s] (0=bez limitu) Try Connect Próba połączenia User and Hub not found in the queue ! Użytkownik i Hub nie znajdują się w kolejce! Nick: Użytkownik: Hub: Hub: Remove Transfer Usuń transfer You are sure ? Czy jesteś pewny? Remove Usuń Cancel Anuluj Change File-Priority Zmień piorytet pobierania Please enter a priority Podaj wartość piorytetu None Żaden File Plik %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory Katalog DCTranslator Translator Tłumacz Choose a language Wybierz język Chinese Simplified to English Angielski Chinese Traditional Dutch Holenderski French Francuski German Niemiecki Greek Grecki Italian Włoski Japanese Korean Portuguese Russian Rosyjski Spanish Hiszpański Detect language Arabic Bulgarian Chinese Croatian Czech Czeski Danish Duński Finnish Fiński Hindi Norwegian Norweski Polish Polski Romanian Rumuński Swedish Szwedzki OK OK Cancel Anuluj Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUpdateManager Download failed Pobieranie nieudane Update finished Aktualizacja skończona Download content Treść pobrana Download content failed Pobranie treści nieudane Download update.xml Pobierz update.xml Download update.xml failed Pobieranie update.xml nieudane Update available but no bz2 support for Aktualizacja dostępna ale bez wsparcia dla bz2 Update available for Aktualizacja dostępna dla update(s) available Aktualizacja dostępna DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Stały slot Ignore Ignoruj Grant permanent slot Przyznaj slot na stałe Remove permanent slot Zabierz stały slot Ignore chat messages Show chat messages PublicHubsModel Name Nazwa Server Description Opis Users Ulubieni użytkownicy Country Kraj Shared Udostępniono Minimum share Extra Dodatkowe QObject Download Pobierz Download To Pobierz do Download As Pobierz jako Repair File Napraw plik Repair BIN sectors Napraw BIN sektory Add this extra source Dodaj jako dodatkowe źródło Browse User Files Pobierz listę plików Check client version Sprawdź wersję klienta Private Chat Wyślij prywatną wiadomość Kick Kopnij Force Move Wymuś ruch Update User Uaktualnij dane Connect Połącz Disconnect Rozłącz Reload Userlist Przeładuj listę plików Connect To Hub Połącz z hubem Connect To All Hubs Połącz z wszystkim hubami Add Dodaj Add Bookmark Dodaj ulubiony Edit Edytuj Edit Bookmark Edytuj ulubiony Remove Usuń Close Transfer Zamknij transfer Info Informacja Try Connect Próbuj połaczenia Pause Queue Pauzuj kolejkę Resume Queue Wznów kolejkę Remove from Queue Usuń z kolejki Remove complete from Queue Usuń całkowicie z kolejki Remove Transfer from Queue and Disk Usuń plik z kolejki i dysku Add Permanent Dodaj na stałe Save Queue Zapisz kolejkę Update Server Uaktualnij adres Update all Server Uaktualnij wszystkie adresy Change Transfer-Rate Zmień ograniczenie transferu Copy row to Clipboard Kopiuj wiersz do schowka Copy column to Clipboard Kopiuj kolumne do schowka File Info Informacje Search for clones Szukaj podobnych Load Załaduj Save Zapisz Profile editor Edycja profilu Edit transfer Edytuj transfer Edit file priority Edytuj priorytet pliku Translate Przetłumacz Translator Tłumacz Insert Smiley Dodaj emotkę Add Friend Dodaj do ulubionych Request secure chat Prośba o bezpieczny czat Close secure chat Zamkni bezpieczny czat Disable group Nie grupuj Group by File Po nazwie Group by Size Po rozmiarze Group by Nick Po użytkowniku Group by Hash Po hashu Group by free Slots Po wolnych slotach Group by Hub Po hubie Group by Path Po ścieżce Group by Host Po hostcie Copy Kopiuj Copy Link Kopiuj odnośnik Clear Wyczyść Select all Zaznacz wszystko Close Zamknij Hide Ukryj Refresh Filelist Odśwież swoją listę plików Reset Wyczyść Dock Zadokuj Undock Oddokuj Exit Wyjście Bosnian Bośniacki Brazilian Brazylijski Czech Czeski Danish Duński Dutch Holenderski English Angielski Finnish Fiński French Francuski German Niemiecki Greek Grecki Hungarian Węgierski Icelandic Islandzki Italian Włoski Latvian Łotewski Norwegian Norweski Polish Polski Romanian Rumuński Russian Rosyjski Slovak Słowacki Spanish Hiszpański Swedish Szwedzki Text Encoding Kodowanie tekstu Group Grupowanie Custom Zwyczajnie Upload Slot Dodatkowy slot Search by TTH Szukaj po TTH Copy TTH to clipboard Kopiuj TTH do schowka Look up TTH at Bitzi.com Sprawdź TTH na Bitzi.com Search for clones by TTH Szukaj podobnych po TTH Copy magnet link Kopiuj magnetyczny odnośnik User: Użytkownik: Get user IP Pobierz IP użytkownika User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) File download Pobieranie pliku A same file is already in the queue! Taki sam plik znajduje się już w kolejce! Start a multi-download Pobieranie pliku w trybie multi Cancel Anuluj File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Napraw BIN sektory Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Plik aktualnie instnieje! Resume Overwrite File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Nie połączony z wymaganym hubem! Group by total Slots Download Folder Katalog pobierania Zoom in Zoom out Group by IP SearchSpyModel Text Tekst Count Licznik Time Czas UserListModel Nick Comment Tag Tag Speed Połączenie Email Share Udostępnione IP IP Lock/PK Lock/PK Supports valknut-0.4.9/valknut/ts/Makefile.in0000664000076400007640000003040411144264654015535 0ustar ejsejs# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = valknut/ts DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/valknut-qt4.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DCLIB_CFLAGS = @DCLIB_CFLAGS@ DCLIB_LIBS = @DCLIB_LIBS@ DEBUGCOMPILE = @DEBUGCOMPILE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAMEWORK_DIR = @FRAMEWORK_DIR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LRELEASE = @LRELEASE@ LTLIBOBJS = @LTLIBOBJS@ LUPDATE = @LUPDATE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_FLAGS = @PACKAGE_FLAGS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ QT3SUPPORT_CFLAGS = @QT3SUPPORT_CFLAGS@ QT3SUPPORT_LIBS = @QT3SUPPORT_LIBS@ QTCORE_CFLAGS = @QTCORE_CFLAGS@ QTCORE_LIBS = @QTCORE_LIBS@ QTGUI_CFLAGS = @QTGUI_CFLAGS@ QTGUI_LIBS = @QTGUI_LIBS@ QTNETWORK_CFLAGS = @QTNETWORK_CFLAGS@ QTNETWORK_LIBS = @QTNETWORK_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SERIAL = @SERIAL@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UIC = @UIC@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ TRANSLATIONS = \ $(srcdir)/valknut.bs.ts \ $(srcdir)/valknut.cs.ts \ $(srcdir)/valknut.da.ts \ $(srcdir)/valknut.de.ts \ $(srcdir)/valknut.el.ts \ $(srcdir)/valknut.en_GB.ts \ $(srcdir)/valknut.es.ts \ $(srcdir)/valknut.fi.ts \ $(srcdir)/valknut.fr.ts \ $(srcdir)/valknut.hu.ts \ $(srcdir)/valknut.is.ts \ $(srcdir)/valknut.it.ts \ $(srcdir)/valknut.lv.ts \ $(srcdir)/valknut.nb.ts \ $(srcdir)/valknut.nl.ts \ $(srcdir)/valknut.pl.ts \ $(srcdir)/valknut.pt_br.ts \ $(srcdir)/valknut.ro.ts \ $(srcdir)/valknut.rus.ts \ $(srcdir)/valknut.sk.ts \ $(srcdir)/valknut.sr.ts \ $(srcdir)/valknut.sr@latin.ts \ $(srcdir)/valknut.sv.ts QM_FILES = \ valknut.bs.qm \ valknut.cs.qm \ valknut.da.qm \ valknut.de.qm \ valknut.el.qm \ valknut.en_GB.qm \ valknut.es.qm \ valknut.fi.qm \ valknut.fr.qm \ valknut.hu.qm \ valknut.is.qm \ valknut.it.qm \ valknut.lv.qm \ valknut.nb.qm \ valknut.nl.qm \ valknut.pl.qm \ valknut.pt_br.qm \ valknut.ro.qm \ valknut.rus.qm \ valknut.sk.qm \ valknut.sr@latin.qm \ valknut.sr.qm \ valknut.sv.qm all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu valknut/ts/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu valknut/ts/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile all-local installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am all-local check check-am clean clean-generic \ clean-libtool clean-local distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-data-local install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am all-local: $(QM_FILES) install-data-local: $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/translation $(INSTALL_DATA) $(QM_FILES) $(DESTDIR)$(pkgdatadir)/translation clean-local: rm -vf $(QM_FILES) # because with "lrelease translations.pro" you cannot specify the output directory # for the .qm files and they end up in $(srcdir) regardless of $(builddir) # this is necessary valknut.bs.qm : $(srcdir)/valknut.bs.ts $(LRELEASE) $< -qm $@ valknut.cs.qm : $(srcdir)/valknut.cs.ts $(LRELEASE) $< -qm $@ valknut.da.qm : $(srcdir)/valknut.da.ts $(LRELEASE) $< -qm $@ valknut.de.qm : $(srcdir)/valknut.de.ts $(LRELEASE) $< -qm $@ valknut.el.qm : $(srcdir)/valknut.el.ts $(LRELEASE) $< -qm $@ valknut.en_GB.qm : $(srcdir)/valknut.en_GB.ts $(LRELEASE) $< -qm $@ valknut.es.qm : $(srcdir)/valknut.es.ts $(LRELEASE) $< -qm $@ valknut.fi.qm : $(srcdir)/valknut.fi.ts $(LRELEASE) $< -qm $@ valknut.fr.qm : $(srcdir)/valknut.fr.ts $(LRELEASE) $< -qm $@ valknut.hu.qm : $(srcdir)/valknut.hu.ts $(LRELEASE) $< -qm $@ valknut.is.qm : $(srcdir)/valknut.is.ts $(LRELEASE) $< -qm $@ valknut.it.qm : $(srcdir)/valknut.it.ts $(LRELEASE) $< -qm $@ valknut.lv.qm : $(srcdir)/valknut.lv.ts $(LRELEASE) $< -qm $@ valknut.nb.qm : $(srcdir)/valknut.nb.ts $(LRELEASE) $< -qm $@ valknut.nl.qm : $(srcdir)/valknut.nl.ts $(LRELEASE) $< -qm $@ valknut.pl.qm : $(srcdir)/valknut.pl.ts $(LRELEASE) $< -qm $@ valknut.pt_br.qm : $(srcdir)/valknut.pt_br.ts $(LRELEASE) $< -qm $@ valknut.ro.qm : $(srcdir)/valknut.ro.ts $(LRELEASE) $< -qm $@ valknut.rus.qm : $(srcdir)/valknut.rus.ts $(LRELEASE) $< -qm $@ valknut.sk.qm : $(srcdir)/valknut.sk.ts $(LRELEASE) $< -qm $@ valknut.sr@latin.qm : $(srcdir)/valknut.sr.ts $(LRELEASE) $< -qm $@ valknut.sr.qm : $(srcdir)/valknut.sr@latin.ts $(LRELEASE) $< -qm $@ valknut.sv.qm : $(srcdir)/valknut.sv.ts $(LRELEASE) $< -qm $@ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: valknut-0.4.9/valknut/ts/valknut.cs.ts0000664000076400007640000120255611144234504016131 0ustar ejsejs DCBrowseFileTree Select destination Uložit do Select a filename Výběr souboru <wrong length> <špatná délka> Choose a filename to save under Vyberte název souboru pro uložení DCChat Message not send ! Zprava neodeslána ! Private Chat: Privatní chat: Chat Cleared. Chat vyčištěn. Translation: Překlad: Translation failed: Překlad selhal: Current mode: Aktuální režim: active aktivní passive pasivní Refresh share in progress. Probíhá obnova seznamu sdílených souborů. Refresh share allready in progress. Obnova seznamu sdílených souborů již probíhá. Switch timestamp Přepnout údaj o čase Send advertisment. Oznámení odesláno. Wrong parameter for '/join' Špatný parametr pro '/join' Join to: Připojit se k: Wrong parameter for '/msg' Špatný parametr pro '/msg' Private message send. Privátní zpráva odeslána. Private message not send ! Privátní zpráva neodeslána ! Away message disabled. Zpráva pro nepřítomnost zakázána. Away message set. Zpráva v nepřítomnosti odeslána. Line is encrypted. Linka je šifrována. Line is not encrypted. Linka není šifrována. Help: Nápověda: /clear - clear the chat window /clear - vyčistí okno s chatem /mode - show current mode /mode - zobrazí aktuální režim /refresh - refresh share /refresh - obnoví sdílení /ts - switch time display in chat on/off /ts - zapne/vypne údaj o čase v chatu /dcgui - send an advertisment to the hub /dcgui - odešle oznámení do hubu Choose a filename to save under Vyberte název souboro pro uložení /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;adresa&gt; - odpojení od aktuálně připojeného hubu a připojení k jinému /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;přezdívkak&gt; &lt;zpráva&gt; - odešle soukromou zprávu /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;zpráva&gt; - odešle automatickou zprávu pro soukromé zprávy; pokud je zpráva prázdná, zakáže odesílání Select download folder Vyberte složku pro stahování Select file for Vyberte soubor pro Text Encoding Kódování textu Choose a codec Výberte kodek Photo received. Only allowed in private chat. Photo encode error. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Přezdívka: Operator: yes no Comment: Speed: Rychlost: EMail: Shared: Away: on off Version: Unknown Neznámý Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Parts: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytů Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Spojení vypršelo Error: ' Chyba: ' Validate denide Ověření: zakázán Redirect to Přesměrován na Password - Heslo - Please enter your password Prosím zadejte své heslo Wrong password Špatné heslo OP Force Move OP nucený přesun Please enter host Prosím vložte název počítače Please enter a message Vložte zprávu Redirect disabled Přesměrování zakázáno OP Kick OP Kick Please enter a reason Napište důvod User: Uživatel: Connected Připojeno Disconnected Odpojeno Use password from profile Použít heslo z profilu Password from profile is empty Heslo v profilu je prázdné No profile found for this hub Tento hub nemá žádný profil users uživatelů Hubname change: Změna názvu hubu: User rejoin the hub. Uživatel se znovu přidal k hubu. User left the hub. Uživatel opustil hub. Hub Hub Sorry, client works in passive mode Je mi líto, klient pracuje pouze v pasivním režimu We left the hub. Opustil jste hub. Joins: Parts: Chat List Seznam chatů Line is encrypted. Linka je šifrována. Line is not encrypted. Linka není šifrována. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Storno Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Any Jakýkoliv DCDebug Send error Chyba při posílání Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About O aplikaci OK OK Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Soubor uložen Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Prohlízeč souborů File Soubor Size Velikost Files Soubory Shared Sdílené DCDialogChat Form1 Form1 &Send O&deslat DCDialogChat DCDialogClient Form1 Form1 User Uživatel Nick Přezdívka Comment Komentář Speed Rychlost EMail EMail Bytes Bytů 0 0 Share Sdílení Chat List Seznam chatů DCDialogClient User(s) ... DCDialogConnectionManager Connection Spojení DCDialogDebug Comment Komentář &Save &Uložit Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Nic Send Receive Both Oba OK OK Cancel Storno malloc info DCDialogEditServer Form1 Form1 Settings Nastavení Name Název Host Host Description Popis Cancel Storno Accept Potvrdit Password Heslo Autoconnect Automatické připojení DCDialogEditServer &Cancel &Zrušit &Profile Profile Profil Nick Přezdívka EMail EMail Auto Connect Automatické připojení Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Přezdívka Path Cesta &Cancel &Zrušit DCDialogEditTransfer Edit Transfer Upravit přenos Settings Nastavení Nick Přezdívka Hub name Název hubu Hub address Adresa hubu Cancel Storno Accept Potvrdit Known hubs Známé huby &Cancel &Zrušit DCDialogFileBrowser Form1 Form1 New Column Nový sloupec Name Název Size Velikost File Type Typ souboru Open Save Uložit Type Typ TTH Folder Složka Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Informace o přenosu File Soubor Size Velikost Done Hotovo Hash Sources DCDialogForceMove OP Force Move OP nucený přesun Please enter a host Please enter a message Vložte zprávu OK OK Cancel Storno DCDialogGetURL Get URL Načíst URL Cancel Storno &Cancel &Zrušit DCDialogHubFilter Hub Filter Filtr hubu Filter Filtr Min. User Min. uživatelů Contains Obsahuje Cancel Storno Save Uložit Name Název Server Server Description Popis Settings Nastavení &Cancel &Zrušit DCDialogHubListManager Hub List Seznam hubů Public Veřejné Name Název Server Server Description Popis double click to hide the toolbar dvojklikem se skryje nástrojová lišta edit filter úprava filtru delete filter smaže filtr Filter Filtr update public hublist aktualizace veřejných hubů add filter přidá filtr reload public hublist znovu aktualizuje seznam veřejných hubů double click to show the toolbar dvojklikem se zobrazí nástrojová lišta Bookmarks Oblíbené connect připojit Users Uživatelé Shared Sdílené Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Uložit Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Přidat Edit bookmark. Edit Upravit Remove bookmark. Remove DCDialogHubProfile Edit hub Profiles Upravit profil hubu Profile Profil Create Vytvořit Delete Smazat Settings Nastavení Password Heslo OK OK Auto Connect Automatické připojení Cancel Storno Hub profile editor &Cancel &Zrušit Nick Přezdívka Description Popis EMail EMail Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Hub Search Vyhledávání v hubech Results Výsledky File Soubor Size Velikost Nick Přezdívka Slot Slot Hub Hub Path Cesta Host Host Log Log Search Hledat Results: Výsledky: Connected Hubs Připojené huby Bookmark Hubs Oblíbené huby Filter Filtr Type Typ At Least Nejméně At Most Nejvíce KB KB MB MB Any Jakýkoliv MP3 MP3 Compressed Komprimované Document Dokument Executable Spustitelné Picture Obrázek Video Video Folder Složka GB GB Free Slots Volné sloty Max Free Slots (0=off) Max. volných slotů (0=vyp.) Exact Přesně B B 0/0 0/0 0 0 Search in path+file name only Hledat pouze v cestě+souborech Search History Historie hledání History Historie Hubs Huby Hub Options Vlastnosti hubu Connected Hub Připojený hub Refresh Obnovit Public Hubs Veřejné huby Expert Expert User Uživatel Reset Obnovit Clients Klienti Live filters Funkční filtry Include: Zahrnout: Exclude: Nezahrnout: Apply Použít Mode Režim Add Přidat User/File Uživatel/Soubor Search for a user or a file. Vyhledá uživatele nebo soubor. Start Spustit Start the search. Spustí vyhledávání. Add a search to the searchqueue Přidá vyhledávání do fronty Filtered Hubs Filtrované huby Multi Search Vícenásobné vyhledávání Enable Tag Povolit označení Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Název Size Velikost Exact size Action Akce Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Storno DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Předvolby Identify Identifikace Information Informace E-Mail: E-Mail: Nick: Přezdívka: Description: Popis: Speed: Rychlost: 56Kbps 56Kbps 33.6Kbps 33.6Kbps Satellite Satelit ISDN ISDN DSL DSL Cable Kabel LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Spam (email at home dot com) Transfer Přenos Share Folders Sdílené složky Download Folder Adresář pro ukládání Upload Options Nastavení pro upload Connection Spojení Settings Nastavení Mode Režim Active Mode Aktivní režim Passive Mode Pasivní režim Passive Mode Settings Nastavení pasivního režimu Active Mode Settings Nastavení aktivního režimu TCP Listen Port: TCP port: 412 412 Hub Search Vyhledávání UDP Listen Port: UDP port: Use ip from interface (ppp0,eth0) Použí IP z rozhraní (ppp0, eth0) Test Test Interface IP IP rozhraní Wrong IP Špatná IP GUI GUI GUI Options Nastavení GUI Theme Téma Language File Soubor s překladem jiného jazyka Other Ostatní Other Options Ostatní nastavení Hublist Seznam hubů Store local Uložit lokálně Reconnect Counter (0=off) Počet pokusů o připojení (0=vyp.) Reconnect Timeout (sec.) Prodleva mezi pokusy (sek.) Allow Force Move Povolit nucený přesun Max. upload slots (0=off) Max. počet upload slotů (0=vyp) Source Url's Zdrojové URL URL URL Application Font Font aplikace Maximal upload connections. Maximalní počet upload spojení. Transfer Request Timings Časování pokusu o přenos Resend Timeout (sec.) Timeout (poslání žádosti) Response Timeout (sec.) Timeout (odpověď) v sekundách Hub Connections Počet spojení k hubu Sound Zvuk External Player Externí přehrávač Chat Pokec Units Jednotky Auto Auto Byte Bajty GByte GB KByte KB MByte MB General Obecné Disable Sound Zakázat zvuk Play a sound when receiving a message Při příjmu zprávy přehrát zvuk Play a sound when disconnecting from a hub Při odpojení od hubu přehrát zvuk Play a sound when receiving first message Při příjmu první zprávy přehrát zvuk Play a sound when sending a message Při odeslání zprávy přehrát zvuk Play a sound when connecting to a hub Při napojení na hub přehrát zvuk Disable sound when away Zakázat zvuk v době nepřítomnosti Player Přehrávač Sound Files Zvukové soubory Log Log Timestamp Údaj o čase Private Chat Soukromý chat Hub Chat Pokec na hubu Download Queue Fronta se stahovanými soubory Save Queue in minutes (0=off) Uložit frontu každých minut (0=vyp.) Move Finished Files to this Folder (empty = disabled) Přesunout dokončené soubory do této složky (prázdné = vypnuto) Use wrong ip/hostname (Firewall/Portforward) Použít špatnou IP/název počítače (Firewall/Portforward) No multi hub search ! No incoming connections ! Žádné vyhledávání ve více hubech ! Žádná příchozí spojení ! Send warn message to remote user on active mode request Odeslat varovnou zprávu vzdálenému uživateli v aktivním režimu Show Status Messages Zobrazit zprávy o stavu Open Private Chat Window Otevřít okno pro soukromý chat Transfer Options Volby pro přenos Transfer View Zobrazení přenosu Chunk Percent File Percent Procento souboru Chunk Size File Size Velikost souboru Search Nick: Vyhledávací přezdívka: Chat options Volby pro pokec upload upload download stahování Add Description Tag (<DCGUI ....>) Přidat značku z popisem (<DCGUI ....>) Folder Složka New Column Nový sloupec Away Message: Zpráva v nepřítomnosti: Get Načíst Your line speed. Rychlost vaší linky. Your nick. Vaše přezdívka. The nick for hub searches. Přezdívka pro vyhledávání v hubech. Your EMail. Váš Email. Enable/Disable the Anti-spam option. Povolit/zakázat anti-spam volbu. A little description. Jednoduchý popis. Add a tag to the description that show some information from you. Přidá značku do popis informací o vás. The tcp listen port for incoming connections. TCP port pro naslouchání pro příchozí spojení. The udp listen port for incoming search results. UDP port pro naslouchání pro příchozí spojení. Get the ip from the interface. Načte IP z rozhraní. Select a interface. Vyberte rozhraní. Get the ip from the host. Načte IP z počítače. The time between a reconnect. Prodleva mezi pokusy o znovu připojení. How often we reconnect to a hub. Jak často se znovu připojit k hubu. Rebuild your sharelist. Znovu vytvoří seznam pro sdílení. Add a folder to your sharelist. Přidá složku do seznamu sdílených. Remove a folder from your sharelist. Odstraní složku ze seznamu pro sdílení. Show some information about your sharelist. Zobrazit informace o vašem seznamu sdílení. Browse your own share list. Prohlédnout vlastní seznam sdílení. Time to wait for a transfer response from the remote user. Čas čekání na odpověď na přenos od vzdáleného uživatele. Time to wait before a new transfer request is send to the remote user. Čas čekání před novým požadavkem na přenos od vzdáleného uživatele. Test the new theme. Otestovat nové téma. Open the chat window on incoming messages. Při příchozích zprávách otevřít okno s chatem. Enable emoticons in chat Povolit emotikony v rozhovoru Data Folder Datová složka Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Show Version Tag in User-Description Zobrazit info o verzi v popisu uživatele Messages Zprávy Query on exit Dotaz při ukončení Logfile Soubor s logy Logfile enabled Logování povoleno Security Bezpečnost Flood Protection Obrana proti tapetování Kick Message Zpráva při vykopnutí Private Address Space (rfc1918) Privátní rozsah adres (rfc1918) Ignore private address space connections Ignorovat připojení z privátního adresního prostoru Query Dotaz Client Klient User-List right alignment Zarovnat seznam uživatelů doprava Don't Display Messages after X retry (0=off) Nezobrazovat zprávy po X pokusech (0=vyp.) Kick the user for flooding (only for Operators) Vykopnout uživatele při tapetování (pouze Operátor) Show send button Zobrazit tlačítko pro odeslání Dynamic upload rate Dynamický poměr pro upload Hide popups of more than Skrýt popup při více jak Send message with Odeslat zprávu s lines (0=off) řádek (0=vyp.) Browser Prohlížeč Use tab for every chat window Použít panel pro každé okno s chatem Allow send private messages to offline users Povolit odeslání privátní zprávy uživatelům, kteří jsou offline Max. paragraphs (0=off) Max. odstavců (0=vyp.) Client options Vlastnosti klienta Show client windows minimized Zobrazit okno klienta minimalizované Max. uploads to user (0=off) Maximum uploadů k uživateli (0=vypne) Color Barva Transfer Cert/Key Přenést certifikát/klíč User quitting hub Uživatel opouští hub If user quits hub, stop following transfers Pokud uživatel opustí hub, přerušit běžící přenosy Upload Upload Both Oba Download Stažení None Nic Auto-Search Automatické vyhledávání Auto-Search for new sources Automatické vyhledávání nových zdrojů Download Rate Single Poměr pro jednotlivé stahování Download Rate Multi Poměr pro násobné stahování Remaining Time Single Zbývající čas pro jeden přenos Remaining Time Multi Zbývající čas pro vícenasobný přenos Reload every hour (0=off) Znovu nahrát každou hodinu (0=vypne) &Save &Uložit &Cancel &Zrušit 28.8Kbps 28.8Kbps Away Prefix: Open File Dialog. Otevře dialog pro výběr souboru. Path Cesta Alias Přezdívka Recreate every hour (0=off) Obnovit každou hodinu (0=vypne) Edit a folder from the sharelist. Upravit složku ze seznamu sdílení. Check and recreate sharelist on startup Zkontrolovat a znovy vytvořit seznam při spuštění Max. rate KB/s (0=off) Max. poměr KB/s (0=vypne) Select Language. Výběr jazyka. Forward private to public chat Přeposlat privátní zprávy do veřejného chatu Ignore offline users Ignorovat offline uživatele Enable logging Povolit logování Append date to log file name Přidat datum k souboru s logy Nick name filter Filtr přezdívky Enable nick name filter Povolit filtr pro přezdívky Disable logging for public chat Zakázat logování pro věřejný chat Append hub name to log file name Přidat k názvu souboru s logy název hubu Append hub host to log file name Přidat k názvu souboru s logy název počítače Add a URL to the list. Přidá URL do seznamu. Remove a URL from the list. Odebere URL ze seznamu. Show joins and parts seconds Away after Auto Away Mode Comment Komentář Speed Rychlost EMail EMail Share Sdílení Photo Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Název Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normalní Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect připojit Public Veřejné Name Název Server Server Description Popis User Uživatelů Bookmarks Oblíbené Hub List Seznam hubů Filter Filtr double click to hide the toolbar dvojklikem se skryje nástrojová lišta edit filter úprava filtru delete filter smaže filtr update public hublist aktualizace veřejných hubů add filter přidá filtr reload public hublist znovu aktualizuje seznam veřejných hubů double click to show the toolbar dvojklikem se zobrazí nástrojová lišta DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Čmuchat Spy On/Off Čmuchání zapnout/vypnout Clear Vyčistit Statistic Active: 0 0 Reject: Results: Výsledky: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Seznam přenosů Nick Přezdívka State Status Transfer Přenos File Soubor Wait Fronta Size Velikost Log Log Slots Sloty Hub Hub 0/0 0/0 Files Soubory Local File / Nick Lokální soubor / přezdívka Size / Hub Velikost / Hub Remote File Vzdálený soubor Server/User IP Server/IP uživatele double click to hide the toolbar dvojklikem se skryje nástrojová lišta double click to show the toolbar dvojklikem se zobrazí nástrojová lišta File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Storno DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Pokec PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Název Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Storno DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Storno DCDialogUsersList Users List Seznam uživatelů Friends Kamarádi User Uživatel Photo Slot Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Položky Files Soubory Total Celkem Directories Adresáře Root Directory Kořenový adresář <wrong length> <špatná délka> file soubor Select destination Výběr cíle Select a filename Výběr souboru Filebrowser Prohlízeč souborů Choose a file save file dialog dialog pro uložení souboru Choose a filename to save under Folder Složka Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Soubor does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Nic Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Soubor uložen File allready download Soubor je již stažen File allready exist ! Soubor již existuje ! Resume Obnovit Overwrite Přepsat Cancel Storno Start Multi Download Spustit stahování z více zdrojů File allready in the queue and not mark as multi download ! Soubor je již ve frontě pro stahování a není označen pro více současných stahování ! File allready in the queue with a different size ! Ve frontě je již tento soubor s jinou délkou ! You can start a Multi Download ! Můžete spustit stahování z více zdrojů ! A same file is allready in the queue ! Ve frontě je již stejný soubor ! If you want to download all files in this mode ? Chcete stáhnout všechny soubory v tomto režimu ? Not connected to required hub! Nejste připojeni k požadovanému hubu! Connect Připojit (choose an existing download to add to) (vyberte existující stahování pro přidání) DCFileTransferInfo File Transfer Info Informace o přenosu DCGuiApp Options Volby &Options &Volby Ctrl+O Ctrl+O Open option dialog Otevře dialog s vlastnostmi Exit Konec Ctrl+Q Ctrl+Q Quits the application Ukončit aplikaci Exit Quits the application Konec Ukončit aplikaci Toolbar Nástrojová lišta Tool&bar Nás&trojová lišta Enables/disables the toolbar Povolit/zakázat nástrojovou lištu Toolbar Enables/disables the toolbar Nástrojová lišta Povolit/vypnout nástrojovou lištu Statusbar Stavová lišta &Statusbar &Stavová lišta Enables/disables the statusbar Povolit/zakázat stavovou lištu Statusbar Enables/disables the statusbar Stavová lišta Zapnout/vypnout stavovou lištu Cascade Kaskáda &Cascade &Kaskáda Cascades all windows Kaskádovitě všechna okna Cascade Cascades all windows Kaskáda Kaskáda pro všechna okna Tile Dlaždice &Tile &Dlaždice Tiles all windows Dlaždice pro všechna okna Tile Tiles all windows Dlaždice Dlaždice pro všechna okna Ctrl+S Ctrl+S Transfer List Seznam přenosů &Transfer List Se&znam přenosů Ctrl+T Ctrl+T Show Transfer List Zobrazit seznam přenosů Hub Search Vyhledávání v hubu &Hub Search Vyhledávání v &hubu Ctrl+H Ctrl+H Show Hub Search Zobrazit vyhledávání v hubech About O aplikaci &About... &O aplikaci... About the application O aplikaci About About the application O.. O aplikaci New Version Nová verze &New Version... &Nová verze... Check for new version Zjistit, zda je nová verze New Version Check for new version Nová verze Zkusit, zda je nová verze What's &This Co je &to &File &Soubor &View &Zobrazit &Action &Akce &Window &Okno &Help &Nápověda Ready. Připraven. (no error message from socket) (žádné chybové hlášky ze soketu) TCP listen failed, change to passive mode ! Naslouchání na TCP neuspěšné - změňte na pasivní režim ! Quit... Ukončit... Open options dialog... Otevře dialog s volbami... Exiting application... Ukončuji aplikaci... Toggle toolbar... Přepne nástrojovou lištu... Toggle statusbar... Přepne stavovou lištu... About... O aplikaci... New version... Nová verze... Show/hide transfer list window ... Zobrazit/skrýt okno s přenosem ... Show/hide hub search window ... Zobrazit/skrýt okno s vyhledáváním ... Can't get version info from server Nemohu získat ze serveru informaci o verzi Current version is: Aktuální verze je: Normal Normalní &Normal &Normalní Ctrl+N Ctrl+N Set away mode Nastavit režim nepřítomnosti Away Mimo &Away &Mimo Ctrl+A Ctrl+A Hub List Seznam hubů Show Hub List Zobrazit seznam hubů Show/hide hub list window ... Zobrazit/skrýt okno se seznamem hubů... H&ub List Seznam h&ubů Ctrl+U Ctrl+U Minimize Minimalizovat &Minimize &Minimalizovat Minimize all windows Minimalizovat všechna okna Minimize Minimize all windows Minimalizovat Minimalizuje všechna okna Action Akce Quick Options Rychlé volby Quick options Rychlé volby F12 F12 Context menu for a few options Kontextové menu pro několik voleb Download mode: Ask Režim stahování: Dotaz Download mode: Single Režim stahování: Normální Download mode: Multi Režim stahování: Vícenásobný Spy Čmuchat &Spy Čmu&chat Show Spy Zobrazit čmuchala Show/hide spy window ... Zobrazit/skrýt okno s čmuchalem ... Users Uživatelé Ctrl+F Ctrl+F Show users: search tab and friends tab Zobrazení uživatelů: vyhledávání a přátelé v panelu Do you really want to quit? Opravdu chcete skončit? Exiting application... aborted Ukončuji aplikaci... přerušení Show/hide users window ... Zobrazit/skrýt okno s uživateli ... Away &Mode Režim &nepřítomnosti Close chat windows Zavřít okna s chatem Close all chat windows Zavřít všechna okna s chatem Close chat windows Close all chat windows Zavřít okna s chatem Zavřít všechna okna s chatem Close disconnected hubs Zavřít odpojené huby Close all disconnected hub windows Zavřít všechna okna odpojených hubů Close disconnected hubs Close all disconnected hub windows Zavřít odpojené huby Zavřít všechna okna odpojených hubů Reload Plugins Načte znovu zásuvné moduly &Reload Plugins &Načíst znovu zásuvné moduly Tile &Horizontally Uspořádat &horizontálně Tiles all windows horizontally Uspořádá všechna okna horizontálně Tile Horizontally Tiles all windows horizontally Uspořádat horizontálně Uspořádá všechna okna horizontálně &Dock Dock the application Hub &Search S&py Ctrl+P Dock/Undock application... Refresh share in progress. Probíhá obnova seznamu sdílených souborů. Refresh share allready in progress. Obnova seznamu sdílených souborů již probíhá. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Veřejné Bookmarks Oblíbené Add Bookmark Přidat k oblíbeným Error Chyba Edit Bookmark Remove bookmarks You are sure ? Opravdu chcete odebrat přenos ? Remove Odebrat Cancel Storno Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Vytvořit profil hubu Please enter the profile name Zadejte prosím název profilu Save profile Do you want to save your changes? Save Uložit Cancel Storno Are you sure? Delete profile for DCHubSearch Hub Search Error Chyba při vyhledávání v hubu Connect to local udp port failed. ( Připojení k lokálnímu UDP portu selhalo. ( No connected hubs found. Nebyly nalezeny připojené huby. No hubs found. Nenalezeny žádné huby. Select download folder Vyberte složku pro stahování Select search Vyberte hledání Please select an search Vyberte prosím co hledat Please select a connected hub. Vyberte prosím připojený hub. Select file for Vyberte soubor pro USER UŽIVATEL FILE SOUBOR List download Seznam stažených souborů Not connected to required hub! Nejste připojeni k požadovanému hubu! Connect Připojit Cancel Storno save file dialog dialog pro uložení souboru Choose a filename to save under Vyberte název souboro pro uložení open file dialog otevře dialog pro výběr souboru Choose a file to open Vyberte soubor pro otevření External search is allready running ! Externí prohledávání již probíhá! Please add a search ! Přidejte prosím hledaný výraz ! Start Spustit Stop Zastavit Multi Search only work in active mode ! Vícenásobné vyhledávání funguje pouze v aktivním režimu ! Filelist download Please add a search! Multi Search only work in active mode! Folder Složka Unknown Neznámý None Nic Directory File Soubor Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Musíte vložit platného 'Fake Hosta' ! You must enter a valid interface ! Musíte vložit platný název rozhraní ! You must enter a valid tcp listen port ! Musíte vložit platný TCP port ! You must enter a valid udp listen port ! Musíte vložit platný UDP port ! You must enter a valid nick ! Musíte vložit platnou pžezdívku ! Interface IP : IP rozhraní : Can't get interface IP ! Nemohu zjistit IP rozhraní ! Select download folder Vyberte složku pro stahování Select share folder Vyberte složku pro sdílení Select language file Vyberte soubor s jazykovým překladem Share list not available Seznam sdílených položek není dostupný bytes bajty Total shared: Celkem sdíleno: Share List Info Info o seznam sdílení HubList URL URL hublistu Please enter a url Prosím zadejte url You change the client mode ! Please restart DCGUI ! Změnili jste režim klienta ! Prosím restartujte DCGUI ! My Moje Select sound file Vybrat zvukový soubor Select sound player Vybrat přehrávač zvuku au au wav wav All Files Všechny soubory Host IP : IP adresa : Can't get Host IP ! Nelze získat IP adresu ! Select download finished folder Vyberte složku pro dokončené stahování You must set a Download Folder ! Musíte vybrat složku pro stahování ! Download Finished Folder and Download Folder must be different ! Složka pro stahování dokončených a nedokončených souborů musí být odlišná ! You must enter a valid search nick ! Musíte zadat platnou přezdívku pro vyhledávání ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Naslouchání je na portu < 1024 ! Takto může dcgui používat v aktivním režimu pouze root ! Other Ostatní Log Log Sound Zvuk General Obecné GUI GUI Chat Pokec Transfer Přenos Connection Spojení Mode Režim Settings Nastavení DCGUI DCGUI Identify Identifikace Folder Složka Interface List Seznam rozhraní Please select an interface Prosím vyberte rozhraní No interfaces found ! Žádné rozhraní nenalezeno ! Select data folder Vyberte složku pro data User Uživatel Select log file Vyberte soubor pro logy Security Bezpečnost Select a browser Vyberte prohlížeč Compressed list size (HE3/BZ): Velikost komprimovaného seznamu (HE3/BZ): Select transfer cert Výběr certifikátu pro přenos Select transfer key Vyběr klíče pro přenos Add new nick name filter Přidat nový filtr na přezdívky Please enter a nick Zadejte prosím přezdívku Browse Share List Procházet seznam sdílení Edit Alias Upravit přezdívku Please enter a new alias Zadejte prosím novou přezdívku Chat Timestamp Časové razítko chatu Chat Local Nick Lokální přezdívka pro chat Chat Local Text Lokální text pro chat Chat Remote Nick Přezdívka pro vzdálený chat Chat Remote Text Text pro vzdálený chat Chat Status Nick Stav přezdívky pro chat Chat Status Text Stav textu pro chat Public Chat Timestamp Časové razítko veřejného chatu Public Chat Local Nick Lokální přezdívka pro veřejný chat Public Chat Local Text Lokální text pro veřejný chat Public Chat Remote Nick Přezdívka pro vzdálený veřejný chat Public Chat Remote Text Text pro vzdálený veřejný chat Public Chat Status Nick Stav přezdívky pro veřejný chat Public Chat Status Text Stav textu pro veřejný chat Public Private Chat Nick Soukromá přezdívka pro veřejný chat Public Private Chat Text Soukromá text pro veřejný chat Select a 64x64 Photo You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Klient DCServerList Add Bookmark Přidat k oblíbeným Edit Bookmark Upravit oblíbené Select profle Vybrat profil Please select an profile Prosím vyberte profil Public Veřejné Bookmarks Oblíbené DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Čeká Idle Nečinný Run Probíhá Transfer Přenos Error Chyba Download Stahuji Upload Upload Unknown Neznámý Pause Pauza Hub offline Hub offline User offline Uživatel je offline User busy Není volný slot Send error Chyba při posílání Change Transfer-Rate Změnit přenosovou rychlost Please enter a Transfer-Rate [B/s] (0=off) Zadejte přenosovou rychlost [B/s] (0=vyp.) Change File-Priority Změnit prioritu souboru Please enter a priority Zadejte prosím prioritu Handshake Podpora přenosu Nothing Nic Remove Transfer Odebrání přenosu You are sure ? Opravdu chcete odebrat přenos ? Remove Ano Cancel Storno Filebrowser Prohlízeč souborů Try Connect Zkusit připojení User and Hub not found in the queue ! Ve frontě není ani uživatel ani hub ! Nick: Přezdívka: Hub: Hub: My Moje Browse Share List Procházet seznam sdílení Share list not available Seznam sdílených položek není dostupný None Nic File Soubor %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Překlad Choose a language Výběr jazyka Chinese Simplified to English Chinese Traditional Dutch Holandsky French German Německy Greek Italian Japanese Korean Portuguese Russian Spanish Španělsky Detect language Arabic Bulgarian Chinese Croatian Czech Česky Danish Dánsky Finnish Finsky Hindi Norwegian Norsky Polish Polsky Romanian Rumunsky Swedish Švédsky OK OK Cancel Storno Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Název Server Server Description Popis Users Uživatelé Country Shared Sdílené Minimum share Extra QObject Download Stáhnout Download To Stáhnout do Download As Stáhnout jako Browse User Files Prohlédnout soubory uživatele Private Chat Soukromý chat Kick Vykopnout Force Move Nucený přesun Update User Update uživatele Connect Připojit Disconnect Odpojit Reload Userlist Obnovit seznam uživatelů Connect To Hub Připojit se k hubu Add Přidat Add Bookmark Přidat k oblíbeným Edit Upravit Edit Bookmark Upravit oblíbený Remove Odebrat Close Transfer Ukončit přenos Info Info Try Connect Zkusit připojení Remove from Queue Odstranit z fronty Remove Transfer from Queue and Disk Odstranit přenos z fronty a disku Add Slot to User Přidat uživateli slot Add Permanent Slot to User Přidat stálý slot uživateli Remove Slot from user Vzít uživateli slot Save Queue Uložit frontu Update Server Aktualizace serveru Update all Server Aktualizace všech serverů Change Transfer-Rate Změnit rychlost přenosu Copy row to Clipboard Zkopírovat do schránky Copy column to Clipboard Zkopírovat sloupec do schránky File Info Informace o souboru Connect To All Hubs Připojit se ke všem hubům Search for clones Hledat podobné Remove complete from Queue Odebrat dokončené z fronty Load Nahrát Save Uložit Edit Hub Profiles Upravit profil hubu Set Hub Profile Nastavit profil hubu Add this extra source Přidat extra zdroj Edit transfer Upravit přenos Edit file priority Upravit prioritu souboru Translate Přeložit Translator Překladatel Disable group Zakázat skupinu Group by File Seskupit podle souboru Group by Size Seskupit podle velikosti Group by Nick Seskupit podle přezdívky Group by free Slots Seskupit podle volných slotů Group by Hub Seskupit podle hubů Group by Path Seskupit podle cesty Group by Host Seskupit podle počítačů Copy Kopírovat Clear Vyprázdnit Select all Vybrat vše Close Zavřít Group Seskupit Hide Schovat Refresh Filelist Obnovit seznam sdílených souborů Pause Queue Pozastavit frontu Resume Queue Obnovit frontu Insert Smiley Vložit smajlík Add Friend Přidá kamaráda Copy Link Zkopíruje odkaz Czech Česky Danish Dánsky Dutch Holandsky Finnish Finsky France Francouzsky German Německy Hungarian Maďarsky Icelandic Italy Italsky Norwegian Norsky Polish Polsky Romanian Rumunsky Spanish Španělsky Swedish Švédsky Text Encoding Kódování textu Request secure chat Close secure chat Check client version Add Permanent Profile editor Group by Hash Reset Obnovit Dock Undock Exit Konec Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Uživatel: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (vyberte existující stahování pro přidání) File download Soubor uložen A same file is already in the queue! Start a multi-download Cancel Storno File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Obnovit Overwrite Přepsat File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Nejste připojeni k požadovanému hubu! Group by total Slots Download Folder Adresář pro ukládání Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Přezdívka Comment Komentář Tag Speed Rychlost Email Share Sdílení IP Lock/PK Supports valknut-0.4.9/valknut/ts/Makefile.am0000664000076400007640000000551611106337236015525 0ustar ejsejsTRANSLATIONS = \ $(srcdir)/valknut.bs.ts \ $(srcdir)/valknut.cs.ts \ $(srcdir)/valknut.da.ts \ $(srcdir)/valknut.de.ts \ $(srcdir)/valknut.el.ts \ $(srcdir)/valknut.en_GB.ts \ $(srcdir)/valknut.es.ts \ $(srcdir)/valknut.fi.ts \ $(srcdir)/valknut.fr.ts \ $(srcdir)/valknut.hu.ts \ $(srcdir)/valknut.is.ts \ $(srcdir)/valknut.it.ts \ $(srcdir)/valknut.lv.ts \ $(srcdir)/valknut.nb.ts \ $(srcdir)/valknut.nl.ts \ $(srcdir)/valknut.pl.ts \ $(srcdir)/valknut.pt_br.ts \ $(srcdir)/valknut.ro.ts \ $(srcdir)/valknut.rus.ts \ $(srcdir)/valknut.sk.ts \ $(srcdir)/valknut.sr.ts \ $(srcdir)/valknut.sr@latin.ts \ $(srcdir)/valknut.sv.ts QM_FILES = \ valknut.bs.qm \ valknut.cs.qm \ valknut.da.qm \ valknut.de.qm \ valknut.el.qm \ valknut.en_GB.qm \ valknut.es.qm \ valknut.fi.qm \ valknut.fr.qm \ valknut.hu.qm \ valknut.is.qm \ valknut.it.qm \ valknut.lv.qm \ valknut.nb.qm \ valknut.nl.qm \ valknut.pl.qm \ valknut.pt_br.qm \ valknut.ro.qm \ valknut.rus.qm \ valknut.sk.qm \ valknut.sr@latin.qm \ valknut.sr.qm \ valknut.sv.qm all-local: $(QM_FILES) install-data-local: $(mkinstalldirs) $(DESTDIR)$(pkgdatadir)/translation $(INSTALL_DATA) $(QM_FILES) $(DESTDIR)$(pkgdatadir)/translation clean-local: rm -vf $(QM_FILES) # because with "lrelease translations.pro" you cannot specify the output directory # for the .qm files and they end up in $(srcdir) regardless of $(builddir) # this is necessary valknut.bs.qm : $(srcdir)/valknut.bs.ts $(LRELEASE) $< -qm $@ valknut.cs.qm : $(srcdir)/valknut.cs.ts $(LRELEASE) $< -qm $@ valknut.da.qm : $(srcdir)/valknut.da.ts $(LRELEASE) $< -qm $@ valknut.de.qm : $(srcdir)/valknut.de.ts $(LRELEASE) $< -qm $@ valknut.el.qm : $(srcdir)/valknut.el.ts $(LRELEASE) $< -qm $@ valknut.en_GB.qm : $(srcdir)/valknut.en_GB.ts $(LRELEASE) $< -qm $@ valknut.es.qm : $(srcdir)/valknut.es.ts $(LRELEASE) $< -qm $@ valknut.fi.qm : $(srcdir)/valknut.fi.ts $(LRELEASE) $< -qm $@ valknut.fr.qm : $(srcdir)/valknut.fr.ts $(LRELEASE) $< -qm $@ valknut.hu.qm : $(srcdir)/valknut.hu.ts $(LRELEASE) $< -qm $@ valknut.is.qm : $(srcdir)/valknut.is.ts $(LRELEASE) $< -qm $@ valknut.it.qm : $(srcdir)/valknut.it.ts $(LRELEASE) $< -qm $@ valknut.lv.qm : $(srcdir)/valknut.lv.ts $(LRELEASE) $< -qm $@ valknut.nb.qm : $(srcdir)/valknut.nb.ts $(LRELEASE) $< -qm $@ valknut.nl.qm : $(srcdir)/valknut.nl.ts $(LRELEASE) $< -qm $@ valknut.pl.qm : $(srcdir)/valknut.pl.ts $(LRELEASE) $< -qm $@ valknut.pt_br.qm : $(srcdir)/valknut.pt_br.ts $(LRELEASE) $< -qm $@ valknut.ro.qm : $(srcdir)/valknut.ro.ts $(LRELEASE) $< -qm $@ valknut.rus.qm : $(srcdir)/valknut.rus.ts $(LRELEASE) $< -qm $@ valknut.sk.qm : $(srcdir)/valknut.sk.ts $(LRELEASE) $< -qm $@ valknut.sr@latin.qm : $(srcdir)/valknut.sr.ts $(LRELEASE) $< -qm $@ valknut.sr.qm : $(srcdir)/valknut.sr@latin.ts $(LRELEASE) $< -qm $@ valknut.sv.qm : $(srcdir)/valknut.sv.ts $(LRELEASE) $< -qm $@ valknut-0.4.9/valknut/ts/valknut.it.ts0000664000076400007640000120153611144234504016135 0ustar ejsejs DCBrowseFileTree Select destination Seleziona destinazione Select a filename Seleziona il nome file <wrong length> <lunghezza errata> Choose a filename to save under Scegli un nome file in cui salvare DCChat Message not send ! Messaggio non spedito ! Private Chat: Chat Privata: Chat Cleared. Chat Pulita. Translation: Traduzione: Translation failed: Traduzione fallita: Current mode: Modalità corrente: active attiva passive passiva Refresh share in progress. Aggiornamento condivisioni in corso. Refresh share allready in progress. Aggiornamento condivisioni già in corso. Switch timestamp Inverti il timestamp Send advertisment. Invuia avviso. Wrong parameter for '/join' Parametro errato per '/join' Join to: Collega a: Wrong parameter for '/msg' Parametro errato per '/msg' Private message send. Inviato messaggio privato. Private message not send ! Messaggio privato non inviato ! Away message disabled. Messaggio di Away disabilitato. Away message set. Messaggio di Away configurato. Line is encrypted. La linea è crittografata. Line is not encrypted. La linea non è crittografata. Help: Aiuto: /clear - clear the chat window /clear - pulisce la finestra chat /mode - show current mode /mode - mostra la modalità corrente /refresh - refresh share /refresh - aggiorna le condivisioni /ts - switch time display in chat on/off /ts - attiva/disattiva il tempo nella chat /dcgui - send an advertisment to the hub /dcgui - invia un avviso all'hub Choose a filename to save under Scegli un nome file sul quale salvare /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;address&gt; - disconnette dall'hub attuale e connette ad un altro hub /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nick&gt; &lt;message&gt; - invia un messaggio privato /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;message&gt; - imposta una risposta automatica per i messaggi privati; se il messaggio è vuoto... disabilitato Select download folder Select file for Selezione file per Photo received. Only allowed in private chat. Photo encode error. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Alias: Operator: yes no Comment: Speed: Velocità: EMail: Shared: Away: on off Version: Unknown Sconosciuto Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Invio Ctrl + Enter Ctrl + Invio Enter Invio Joins: Parts: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Timeout di Connessione Error: ' Errore: ' Validate denide Accesso negato Redirect to Redirezione verso Password - Password - Please enter your password Inserire la password Wrong password Password errata OP Force Move OP Redirezione Forzata Please enter host Inserire l'host Please enter a message Inserire un messaggio Redirect disabled Redirezione disabilitata OP Kick OP Kick Please enter a reason Inserire un motivo User: Utente: Connected Connesso Disconnected Disconnesso Use password from profile Usa password da profilo Password from profile is empty La password da profilo è nulla No profile found for this hub Nessun profilo trovato per questo hub users utenti Hubname change: Cambio nome Hub: User rejoin the hub. L' Utente si è riconnesso all'hub. User left the hub. L' Utente ha lasciato l'hub. Hub Hub Sorry, client works in passive mode Spiacente, il client lavora in modalità passiva We left the hub. Joins: Parts: Chat List Lista Chat Line is encrypted. La linea è crittografata. Line is not encrypted. La linea non è crittografata. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Annulla Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Any Qualsiasi DCDebug Send error Errore di invio Send Invia Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About A proposito OK OK Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Download file Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Sfoglia File File File Size Dimensione Files Files Shared Condiviso DCDialogChat Form1 Form1 &Send &Invia DCDialogChat DCDialogClient Form1 Form1 User Utente Nick Alias Comment Commento Speed Velocità EMail EMail Bytes Bytes 0 0 Share Condivisione Chat List Lista Chat DCDialogClient User(s) ... ... DCDialogDebug Comment Commento &Save Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Nessuno Send Invia Receive Ricevi Both Entrambi OK OK Cancel Annulla malloc info DCDialogEditServer Form1 Form1 Settings Impostazioni Name Nome Host Host Description Descrizione Cancel Annulla Accept Accetta Password Password DCDialogEditServer &Profile Profile Profilo Nick Alias EMail EMail Auto Connect Connetti Automaticamente Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Path Percorso DCDialogEditTransfer Edit Transfer Modifica Trasferimento Settings Impostazioni Nick Alias Hub name Nome Hub Hub address Indirizzo Hub Cancel Annulla Accept Accetta Known hubs Hub conosciuti DCDialogFileBrowser Form1 Form1 New Column Nuova Colonna Name Nome Size Dimensione File Type Tipo File Open Save Salva Type Tipo TTH Folder Cartella Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Informazioni Trasferimento File File File Size Dimensione Done Terminato Hash Sources DCDialogForceMove OP Force Move OP Redirezione Forzata Please enter a host Please enter a message Inserire un messaggio OK OK Cancel Annulla DCDialogGetURL Get URL Ricerca URL Cancel Annulla DCDialogHubFilter Hub Filter Filtra Hub Filter Filtro Min. User Utenti Minimo Contains Contiene Cancel Annulla Save Salva Name Nome Server Server Description Descrizione Settings Impostazioni DCDialogHubListManager Hub List Lista Hub Public Pubblici Name Nome Server Server Description Descrizione User Utente double click to hide the toolbar doppio click per nascondere la toolbar edit filter modifica filtro delete filter elimina filtro Filter Filtro update public hublist aggiorna lista pubblica degli hub add filter aggiungi filtro reload public hublist ricarica lista pubblica degli hub double click to show the toolbar doppio click per mostrare la toolbar Bookmarks Preferiti connect connetti Users Utenti Shared Condiviso Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Salva Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Aggiungi Edit bookmark. Edit Modifica Remove bookmark. Remove Rimuovi DCDialogHubProfile Edit hub Profiles Modifica Profilo hub Profile Profilo Create Crea Delete Elimina Settings Impostazioni Password Password OK OK Auto Connect Connetti Automaticamente Cancel Annulla Hub profile editor Nick Alias Description Descrizione EMail EMail Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Risultati Nick Alias File File Size Dimensione Slot Slot Hub Hub Path Percorso Log Log Search Cerca Results: Risultati: Connected Hubs Hub Connessi Bookmark Hubs Hub nei Preferiti Filter Filtro Type Tipo At Least Minimo At Most Massimo KB KB MB MB Any Qualsiasi MP3 MP3 Compressed Compresso Document Documento Executable Eseguibile Picture Immagine Video Video Folder Cartella Hub Search Cerca Hub Host Host GB GB Free Slots Slot Liberi Max Free Slots (0=off) Max Slot Liberi (0=nessuno) Exact Esattamente B B 0/0 0/0 0 0 Search in path+file name only Cerca solo nel percorso-nome file Search History Cerca nella Cronologia History Cronologia Hubs Hubs Hub Options Opzioni per l'Hub Connected Hub Hub Connessi Refresh Aggiorna Public Hubs Hub Pubblici Expert Esperto User Utente Reset Cancella Clients Ricorrenza client da esaminare per ogni hub (1=cerca su tutte le liste dell'hub) Live filters Filtri attivi Include: Includi: Exclude: Escludi: Apply Applica Mode Modalità Add Aggiungi User/File Utente/File Search for a user or a file. Cerca un utente o un file. Start Inizia Start the search. Inizia la ricerca. Add a search to the searchqueue Aggiungi una ricerca nella coda delle ricerche Filtered Hubs Multi Search Enable Tag Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Nome Size Dimensione Exact size Action Azione Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Annulla DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Opzioni Identify Identità Information Informazioni E-Mail: E-Mail: Nick: Alias: Description: Descrizione: Speed: Velocità: 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Satellite ISDN ISDN DSL DSL Cable Cavo LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Spam (email at home dot com) Transfer Trasferimenti Share Folders Cartelle Condivise Info Informazioni Add Aggiungi Remove Rimuovi Download Folder Cartella di Download Browse Sfoglia Upload Options Opzioni di Upload Connection Connessioni Settings Impostazioni Mode Modalità Active Mode Modalità Attiva Passive Mode Modalità Passiva Passive Mode Settings Impostazioni Modalità Passiva Active Mode Settings Impostazioni Modalità Attiva TCP Listen Port: Porta TCP in Ascolto: 412 412 Hub Search Cerca nell'Hub UDP Listen Port: Porta UDP in Ascolto: Use ip from interface (ppp0,eth0) Usa IP da scheda di rete (ppp0,eth0) Test Prova Interface IP IP dell' Interfaccia Wrong IP IP Errato GUI GUI GUI Options Opzioni GUI Other Altro Other Options Altre Opzioni Hublist Lista Hub Store local Salva in locale Save Salva Cancel Annulla Theme Tema Language File File Lingua Reconnect Counter (0=off) Contatore Riconnessioni (0=disabilitato) Reconnect Timeout (sec.) Tempo di attesa fra Riconnessioni (sec.) Allow Force Move Permetti Redirezione Forzata Source Url's Sorgente dell'URL URL URL Max. upload slots (0=off) Max Slot per Upload (0=disabilitato) Application Font Font per L'Applicazione Rebuild Ricostruisci Maximal upload connections. Numero massimo di connessioni in Upload. Transferrate for each slot. Transferrate per ogni slot. Transfer Request Timings Tempi di Richiesta Trasferimento Resend Timeout (sec.) Timeout Reinvio (sec.) Response Timeout (sec.) Timeout di Risposta (sec.) Hub Connections Connessioni all'Hub Sound Suono External Player Player Esterno Chat Chat Units Unità Auto Auto Byte Byte GByte GByte KByte KByte MByte MByte General Generale Disable Sound Suono Disabilitato Play a sound when receiving a message Emetti un suono quando ricevi un messaggio Play a sound when disconnecting from a hub Emetti un suono quando sei disconnesso da un hub Play a sound when receiving first message Emetti un suono alla ricezione del primo messaggio Play a sound when sending a message Emetti un suono quando invii un messaggio Play a sound when connecting to a hub Emetti un suono quando sei connesso all'hub Disable sound when away Disabilita suoni quando sei Away Files Files Player Player Sound Files File Sonori Connect Connetti Preview Anteprima Disconnect Disconnetti Send Invia Receive Ricevi 1st Receive Prima Ricezione Log Log Timestamp Timestamp Private Chat Chat Privata Hub Chat Chat dell'Hub Download Queue Coda dei Download Save Queue in minutes (0=off) Salva Coda ogni X minuti (0=disabilitato) Move Finished Files to this Folder (empty = disabled) Sposta i Download completati in questa Cartella (vuoto = disabilitato) Use wrong ip/hostname (Firewall/Portforward) Usa un ip/nomehost fittizio (Firewall/Portforward) No multi hub search ! No incoming connections ! Nessuna ricerca multipla ! Nessuna connessione in ingresso ! Send warn message to remote user on active mode request Invia un messaggio di avviso all'utente remoto se richiede modalità attiva Show Status Messages Mostra i Messaggi di Stato Open Private Chat Window Apri finestra di Chat Privata Transfer Options Opzioni Trasferimento Transfer View Vista Trasferimenti Chunk Percent Percentuale miniDownload File Percent Percentuale del File Chunk Size Dimensione miniDownload File Size Dimensione File Search Nick: Alias di Ricerca: Send hide private chat to public chat Invia chat privata nascosta in chat pubblica Chat options Opzioni Chat upload upload download download Add Description Tag (<DCGUI ....>) Aggiungi Descrizione (<DCGUI ....>) Max. rate B/s (0=off) Max. rate B/s (0=off) Folder Cartella New Column Nuova Colonna Away Message: Messaggio di Away: Get Ottieni Refuse private chat messages from offline users Rifiuta messaggi privati da utenti disconnessi Your line speed. Velocità della linea. Your nick. Alias. The nick for hub searches. L'alias per le ricerche nell'hub. Your EMail. Email. Enable/Disable the Anti-spam option. Abilita/Disabilita l'opzione Anti-spam. A little description. Una breve descrizione. Add a tag to the description that show some information from you. Aggiungi alla descrizione le tue informazioni personali. The tcp listen port for incoming connections. La porta tcp per le connessioni in ingresso. The udp listen port for incoming search results. La porta udp per le ricerche in ingresso. Get the ip from the interface. Ottieni l'IP dalla scheda di rete. Select a interface. Selezione scheda di rete. Get the ip from the host. Ottieni l'IP dall'host. The time between a reconnect. Il tempo tra una riconnessione. How often we reconnect to a hub. Con quale frequenza dobbiamo riconnetterci all'hub. Rebuild your sharelist. Ricostruisci la tua lista. Add a folder to your sharelist. Aggiungi una cartella alla tua lista. Remove a folder from your sharelist. Rimuovi una cartella alla tua lista. Show some information about your sharelist. Mostra alcune informazioni in merito alla tua lista. Browse your own share list. Sfoglia la tua stessa lista. Time to wait for a transfer response from the remote user. Tempo di attesa per un trasferimento da un utente remoto. Time to wait before a new transfer request is send to the remote user. Tempo di attessa per l'invio di una nuova richiesta trasferimento all'utente remoto. Test the new theme. Prova il nuovo tema. Open the chat window on incoming messages. Apri la finestra chat per i messaggi ricevuti. Enable emoticons in chat Abilita emoticons in chat Data Folder Cartella Dati Ctrl + Enter Ctrl + Invio Enter Invio Alt + Enter Alt + Invio Alt + S Alt + S Show Version Tag in User-Description Mostra la versione nella Descrizione-Utente Messages Messaggi Query on exit Chiedi se uscire Logfile Logfile Logfile enabled Logfile abilitato Security Sicurezza Flood Protection Protezione Flood Kick Message Messaggio di Kick Private Address Space (rfc1918) Indirizzi Privati (rfc1918 - 192.168/10.0/etc...) Ignore private address space connections Ignora connessioni da indirizzi privati Query Conferme Client Client User-List right alignment Lista-Utenti allineata a destra Don't Display Messages after X retry (0=off) Non Mostrare Messaggi dopo X tentativi (0=disabilitato) Kick the user for flooding (only for Operators) Kikka l'utente per flood (solo per Operatori) Show send button Mostra il bottone di Invio Dynamic upload rate Upload rate dinamica Hide popups of more than Nascondi i popup con più di Send message with Invia il messaggio con lines (0=off) linee (0=disabilitato) Browser Internet Browser Use tab for every chat window Usa lo spazio tab per ogni finestra chat Allow send private messages to offline users Permetti l'invio di messaggi privati ad utenti disconnessi Max. paragraphs (0=off) Max. righe (0=disabilitato) Client options Opzioni client Show client windows minimized Mostra la versione del client minimizzata Recreate sharelist on startup if total filesize has changed Ricrea la lista all'avvio se la dimensione totale è cambiata Max. uploads to user (0=off) Max. upload per utente (0=disabilitato) Color Colore Remote text Testo remoto Remote nick Alias remoto Transfer Cert/Key Certificato/Chiave di trasferimento User quitting hub L'utente sta uscendo dall'hub If user quits hub, stop following transfers Se l'utente lascia l'hub, ferma i seguenti trasferimenti Upload Upload Both Entrambi Download Download None Nessuno Auto-Search Ricerca Automatica Auto-Search for new sources Ricerca Automatica di nuovi cloni Download Rate Single Download Rate per scaricamenti singoli Download Rate Multi Download Rate per scaricamenti multipli Remaining Time Single Tempo rimanente per download singolo Remaining Time Multi Tempo rimanente per download multiplo Path Percorso Alias Edit Modifica Edit a folder from the sharelist. Open File Dialog. Add a URL to the list. Remove a URL from the list. 28.8Kbps 28.8Kbps Enable logging Append date to log file name Nick name filter Disable logging for public chat Append hub name to log file name Append hub host to log file name Forward private to public chat Away Prefix: Select Language. Check and recreate sharelist on startup seconds Away after Auto Away Mode Show joins and parts Comment Commento Speed Velocità EMail EMail Share Condivisione Photo Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Nome Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normale Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect connetti Public Pubblici Name Nome Server Server Description Descrizione User Utente Bookmarks Preferiti Hub List Lista Hub Filter Filtro double click to hide the toolbar doppio click per nascondere la toolbar edit filter modifica filtro delete filter elimina filtro ... ... update public hublist aggiorna lista pubblica degli hub add filter aggiungi filtro reload public hublist ricarica lista pubblica degli hub double click to show the toolbar doppio click per mostrare la toolbar DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Spia Spy On/Off Spia Abilitato/Disabilitato Clear Pulisci Statistic Active: 0 0 Reject: Results: Risultati: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Lista Trasferimenti Nick Alias State Stato Transfer Trasferimento File File Wait Attesa Size Dimensione Log Log Slots Slots Hub Hub 0/0 0/0 Files Files Local File / Nick File/Alias Locale Size / Hub Dimensione/Hub Remote File File Remoto Server/User IP Server/IP Utente double click to hide the toolbar doppio click per nascondere la toolbar double click to show the toolbar doppio click per mostrare la toolbar File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Annulla DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Nome Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Annulla DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Annulla DCDialogUsersList Users List Lista Utenti Friends Amici User Utente Server name Nome del Server Description Descrizione Photo Slot Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Items Files Files Total Totale Directories Cartelle Root Directory Cartella Principale <wrong length> <lunghezza errata> file file Select destination Selezione destinazione Select a filename Selezione un nome file Filebrowser Sfoglia File Choose a file save file dialog Salva file con nome Choose a filename to save under Folder Cartella Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File File does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Nessuno Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Download file File allready download File già in download File allready exist ! Il file è già presente ! Resume Recupera Overwrite Sovrascrivi Cancel Annulla Start Multi Download Inizia un Download Multiplo File allready in the queue and not mark as multi download ! File già presente nella coda e non marcato come download multiplo ! File allready in the queue with a different size ! File già presente nella coda con una dimensione differente ! You can start a Multi Download ! Comincia un Download Multiplo ! A same file is allready in the queue ! Un file identico è già presente nella coda ! If you want to download all files in this mode ? Vuoi scaricare tutti i file con questa modalità ? Not connected to required hub! Non connesso all'hub richiesto! Connect Connetti (choose an existing download to add to) (scegli un download esistente a cui aggiungere) DCFileTransferInfo File Transfer Info Informazioni Trasferimento File DCGuiApp Options Opzioni &Options &Opzioni Ctrl+O Ctrl+O Open option dialog Apri la finestra Opzioni Exit Esci Ctrl+Q Ctrl+Q Quits the application Esci dall'applicazione Exit Quits the application Esci Esce dall'applicazione Toolbar Barra dei Tool Tool&bar &Barra dei Tool Enables/disables the toolbar Abilita/Disabilita la toolbar Toolbar Enables/disables the toolbar Barra dei Tool Abilita/Disabilita barra dei tool Statusbar Barra di Stato &Statusbar Barra di &Stato Enables/disables the statusbar Abilita/Disabilita la barra di stato Statusbar Enables/disables the statusbar Barra di Stato Abilita/Disabilita la barra di stato Cascade Cascata &Cascade &Cascata Cascades all windows A cascata tutte le finestre Cascade Cascades all windows Cascata A cascata tutte le finestre Tile Disponi &Tile &Disponi Tiles all windows Disponi tutte le finestre Tile Tiles all windows Disponi Disponi tutte le finestre Ctrl+S Ctrl+S Transfer List Lista Trasferimenti &Transfer List Lista &Trasferimenti Ctrl+T Ctrl+T Show Transfer List Mostra Lista Trasferimenti Hub Search Ricerca nell'Hub &Hub Search Ricerca nell'&Hub Ctrl+H Ctrl+H Show Hub Search Mostra la Ricerca nell'Hub About A proposito &About... &A proposito... About the application A proposito del programma About About the application A proposito A proposito del programma New Version Nuova Versione &New Version... &Nuova Versione... Check for new version Controlla se esiste una nuova versione New Version Check for new version Nuova Versione Controlla se esiste una nuova versione What's &This Cos'è &Questo &File &File &View &Vista &Action &Azione &Window &Finestra &Help &Aiuto Ready. Pronto. (no error message from socket) (nessun messaggio di errore dal socket) TCP listen failed, change to passive mode ! impossibile l'ascolto per il TCP, cambiare in modalità passiva ! Quit... Esci... Open options dialog... Apri la finestra delle Opzioni... Exiting application... Uscita dall'applicazione... Toggle toolbar... Abilita toolbar... Toggle statusbar... Abilita barra di stato... About... A proposito... New version... Nuova versione... Show/hide transfer list window ... Mostra/nascondi la lista dei trasferimenti... Show/hide hub search window ... Mostra/nascondi la finestra di ricerca... Can't get version info from server Impossibile ottenere informazioni sulla versione dal server Current version is: La versione corrente è: Normal Normale &Normal &Normale Ctrl+N Ctrl+N Set away mode Imposta Away Away Away &Away &Away Ctrl+A Ctrl+A Hub List Lista Hub Show Hub List Mostra Lista Hub Show/hide hub list window ... Mostra/nasconi la lista hub ... H&ub List Lista H&ub Ctrl+U Ctrl+U Minimize Minimizza &Minimize &Minimizza Minimize all windows Minimizza tutte le finestre Minimize Minimize all windows Minimizza Minimizza tutte le finestre Action Azione Quick Options Opzioni Veloci Quick options Opzioni veloci F12 F12 Context menu for a few options Menu per poche opzioni Download mode: Ask Modalità Download: Chiedi Download mode: Single Modalità Download: Singolo Download mode: Multi Modalità Download: Multi Spy Spia &Spy &Spia Show Spy Mostra finestra Spia Show/hide spy window ... Mostra/nascondi finestra Spia... Users Utenti Ctrl+F Ctrl+F Show users: search tab and friends tab Mostra utenti in: finestra di ricerca e finestra amici Do you really want to quit? Vuoi davvero uscire? Exiting application... aborted Uscita dall'applicazione... interrotta Show/hide users window ... Mostra/nascondi finestra utenti... Away &Mode Modalità &Away Close chat windows Chiudi le finestre chat Close all chat windows Chiudi tutte le finestre chat Close chat windows Close all chat windows Chiudi le finestre chat Chiudi tutte le finestre chat Close disconnected hubs Chiudi gli hub disconnessi Close all disconnected hub windows Chiudi tutte le finestre degli hub disconnessi Close disconnected hubs Close all disconnected hub windows Chiudi gli hub disconnessi Chiudi tutte le finestre degli hub disconnessi Tile &Horizontally Reload Plugins &Reload Plugins &Dock Dock the application Hub &Search S&py Ctrl+P Dock/Undock application... Refresh share in progress. Aggiornamento condivisioni in corso. Refresh share allready in progress. Aggiornamento condivisioni già in corso. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Pubblici Bookmarks Preferiti Add Bookmark Error Errore Edit Bookmark Modifica Preferiti Remove bookmarks You are sure ? Sei sicuro ? Remove Rimuovi Cancel Annulla Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Crea un Profilo Hub Please enter the profile name Inserisci il nome del profilo Save profile Do you want to save your changes? Save Salva Cancel Annulla Are you sure? Delete profile for DCHubSearch Connect to local udp port failed. ( Connessione alla porta udp locale non riuscita. ( No hubs found. Nessun hub trovato. Hub Search Error Errore Ricerca nell'Hub No connected hubs found. Nessun hub connesso trovato. Select download folder Selezione la cartella di download Select search Seleziona ricerca Please select an search Inserisci un termine di ricerca Please select a connected hub. Selezione un hub connesso. Select file for Selezione file per USER UTENTE FILE FILE List download Lista dei download Not connected to required hub! Non connesso all'hub richiesto! Connect Connetti Cancel Annulla save file dialog Salva file con nome Choose a filename to save under Scegli un nome file in cui salvare open file dialog Apri le opzioni per il file Choose a file to open Scegli un file da aprire External search is allready running ! Ricerca esterna già attiva ! Please add a search ! Inserisci un termine di ricerca ! Start Inizia Stop Ferma Filelist download Please add a search! Multi Search only work in active mode! Folder Cartella Unknown Sconosciuto None Nessuno Directory File File Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Devi inserire un valido 'Host Fittizio' ! You must enter a valid interface ! Devi inserire una schede di rete valida ! You must enter a valid tcp listen port ! Devi inserire una porta tcp valida ! You must enter a valid udp listen port ! Devi inserire una porta udp valida ! You must enter a valid nick ! Devi inserire un valido alias ! Interface IP : IP della scheda : Can't get interface IP ! Non riesco ad ottenere l'IP della scheda ! Select download folder Seleziona un cartella per i download Select share folder Seleziona una cartella condivisa Select language file Seleziona un file di lingua HubList URL URL della Lista Hub Please enter a url Inserire una url Share list not available Lista non disponibile bytes bytes Total shared: Totale condiviso: Share List Info Informazioni sulla Lista You change the client mode ! Please restart DCGUI ! Hai cambiato la modalità del client ! Devi riavviare DCGUI ! My Mio Select sound file Selezione un file audio Select sound player Seleziona il player au au wav wav All Files Tutti i File Host IP : Host IP : Can't get Host IP ! Non riesco ad ottenere l'IP dell'Host ! Select download finished folder Seleziona la cartella per i download terminati You must set a Download Folder ! Devi specificare una Cartella di Download ! Download Finished Folder and Download Folder must be different ! La Cartella dei Download Terminati e la Cartella Temporanea dei Download devono essere differenti ! You must enter a valid search nick ! Devi inserire un alias valido ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! La tua porta di ascolto è inferiore a 1024 ! Il programma deve essere lanciato da root per la modalità attiva ! Other Altro Log Log Sound Suono General Generale Files Files GUI GUI Chat Chat Transfer Trasferimento Connection Connessione Mode Modalità Settings Impostazioni DCGUI DCGUI Identify Identità Folder Cartella Interface List Lista delle schede di rete Please select an interface Seleziona una scheda di rete No interfaces found ! Nessuna scheda di rete trovata ! Select data folder Seleziona la cartella dati User Utente Select log file Seleziona il file di log Security Sicurezza Select a browser Seleziona un browser Compressed list size (HE3/BZ): Lista Compressa (HE3/BZ): Select transfer cert Seleziona un certificato per i trasferimenti Select transfer key Seleziona una chiave per i trasferimenti Add new nick name filter Please enter a nick Chat Timestamp Chat Local Nick Chat Local Text Chat Remote Nick Chat Remote Text Chat Status Nick Chat Status Text Public Chat Timestamp Public Chat Local Nick Public Chat Local Text Public Chat Remote Nick Public Chat Remote Text Public Chat Status Nick Public Chat Status Text Public Private Chat Nick Public Private Chat Text Select a 64x64 Photo You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Client DCServerList Add Bookmark Aggiungi nei Preferiti Edit Bookmark Modifica Preferiti Select profle Seleziona un profilo Please select an profile Selezionare un profilo Public Pubblici Bookmarks Preferiti DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Attendi Idle Idle Run Run Transfer Trasferimento Error Errore Download Download Upload Upload Unknown Sconosciuto Pause Pausa Hub offline Hub disconnesso User offline Utente disconnesso User busy Utente occupato Send error Errore di invio Change Transfer-Rate Cambia il Transfer-Rate Please enter a Transfer-Rate [B/s] (0=off) Inserire un Transfer-Rate [B/s] (0=disabilitato) Change File-Priority Cambia la Priorità del File Please enter a priority Inserisci la priorità Handshake Handshake Nothing Nulla Remove Transfer Rimuovi Trasferimento You are sure ? Sei sicuro ? Remove Rimuovi Cancel Annulla Filebrowser Sfoglia File Try Connect Prova a Connettere User and Hub not found in the queue ! Nick: Alias: Hub: My Mio Share list not available Lista non disponibile None Nessuno File File %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Traduttore Choose a language Scegli una lingua Chinese Simplified to English Chinese Traditional Dutch French German Greek Italian Japanese Korean Portuguese Russian Spanish Detect language Arabic Bulgarian Chinese Croatian Czech Danish Finnish Hindi Norwegian Polish Romanian Swedish OK OK Cancel Annulla Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Nome Server Server Description Descrizione Users Utenti Country Shared Condiviso Minimum share Extra QObject Download Download Download To Download In Download As Download Come Browse User Files Sfoglia File dell'Utente Private Chat Chat Privata Kick Kick Force Move Redirezione Forzata Update User Aggiorna Utente Connect Connetti Disconnect Disconnetti Reload Userlist Ricarica Lista Utenti Connect To Hub Connetti all'Hub Add Aggiungi Add Bookmark Aggiungi ai Preferiti Edit Modifica Edit Bookmark Modifica Preferiti Remove Rimuovi Close Transfer Chiudi Trasferimento Info Informazioni Try Connect Prova a Connettere Remove from Queue Rimuovi dalla Coda Remove Transfer from Queue and Disk Rimuovi Trasferimento dalla Coda e dal Disco Add Slot to User Assegna Slot all'Utente Add Permanent Slot to User Assegna uno Slot Permanente all'Utente Remove Slot from user Rimuovi Slot all'Utente Save Queue Salva Coda Update Server Aggiorna Server Update all Server Aggiorna tutti i Server Change Transfer-Rate Cambia il Transfer-Rate Copy row to Clipboard Copia riga negli Appunti Copy column to Clipboard Copia colonna negli Appunti File Info Informazioni sul File Connect To All Hubs Connetti a Tutti gli Hub Search for clones Cerca Cloni Remove complete from Queue Rimuovi download completi dalla Coda Load Carica Save Salva Edit Hub Profiles Modifica Profili Hub Set Hub Profile Imposta Profilo Hub Add this extra source Aggiungi quest'altra origine al download corrispondente Edit transfer Modifica trasferimento Edit file priority Modifica priorità file Translate Traduci Translator Traduttore Disable group Disabilita gruppo Group by File Raggruppa per File Group by Size Raggruppa per Dimensione Group by Nick Raggruppa per Alias Group by free Slots Raggruppa per Slot liberi Group by Hub Raggruppa per Hub Group by Path Raggruppa per Percorso Group by Host Raggruppa per Host Copy Copia Clear Pulisci Select all Seleziona tutto Close Chiudi Group Gruppo Hide Nascondi Refresh Filelist Aggiorna Lista File Pause Queue Metti in pausa la Coda Resume Queue Riprendi la Coda Insert Smiley Add Friend Czech Danish Dutch Finnish German Hungarian Icelandic Norwegian Polish Romanian Spanish Swedish Copy Link Request secure chat Close secure chat Check client version Add Permanent Profile editor Group by Hash Reset Cancella Dock Undock Exit Esci Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Utente: User Commands Enter Invio Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (scegli un download esistente a cui aggiungere) File download Download file A same file is already in the queue! Start a multi-download Cancel Annulla File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Recupera Overwrite Sovrascrivi File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Non connesso all'hub richiesto! Group by total Slots Download Folder Cartella di Download Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Alias Comment Commento Tag Speed Velocità Email Share Condivisione IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.hu.ts0000664000076400007640000124453111144234504016137 0ustar ejsejs DCChat Private Chat: Privát chat Chat Cleared. Chat törölve Translation: Fordítás: Translation failed: Fordítás sikertelen: Current mode: Aktuális mód: active aktív passive passzív Refresh share in progress. A megosztás frissítése folyamatban. Switch timestamp Időbélyeg kapcsoló Send advertisment. Kliensreklámot küld Wrong parameter for '/join' Hibás paraméter a '/join'-hoz Join to: Kapcsolódva: Wrong parameter for '/msg' Hibás paraméter a '/msg'-hez Away message disabled. Távollét üzenet letiltva. Away message set. Távollét üzenet beállítva. Line is encrypted. A kapcsolat titkosítva Line is not encrypted. A kapcsolat nincs titkosítva. Help: Segítség: /refresh - refresh share /refresh -- megosztás frissítése /ts - switch time display in chat on/off /ts - ki/be kapcsolja az idő kijelzését a chat ablakban Choose a filename to save under Válassz fáljnevet a mentéshez /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;address&gt; - a jelenleg csatlakozott hub elhagyása és csatlakozás egy másikhoz hubhoz /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nick&gt; &lt;message&gt; - privát üzenet küldése /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;message&gt; - automatikus válasz beállítása privát üzenetekre; ha az üzenet üres, kikapcsolás Select download folder Válaszd ki a letöltési mappát Select file for Válaszd ki a fájlt Text Encoding Szöveg kódolás Choose a codec Válassz kodeket Photo received. Kép érkezett. Only allowed in private chat. Csak privát chatben engedélyezett Photo encode error. Kép kódolási hiba Refresh share already in progress. Megosztás frissítése folyamatban. Chat: Chat: Message not sent! Üzenet küldése sikertelen! /clear - clears the chat window /clear - törli a chat ablakot /mode - shows the current mode /mode - megmutatja az aktuális módot /dcgui or /adv - send an advertisment to the hub /dcgui vagy /adv - egy ismertetőt küld a hub-ra /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;message&gt; - hub elhagyása választaható üzenettel /uptime - show dcgui-qt uptime /uptime - megmuttaja a dcgui-qt futási idejét /ls &lt;nick&gt; - get share list from user /ls &lt;nick&gt; - fájllista letöltése a felhasználótól /grant &lt;nick&gt; - grant user a slot /grant &lt;nick&gt; - /grant &lt;nick&gt; - slot biztosítása a felhasználónak /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;nick&gt; - állandó slot biztosítása a felhasználónak /friend &lt;nick&gt; - add user to friend list /friend &lt;nick&gt; - felhasználó felvétele a barátok listájára /fav - add hub to bookmark list /fav - a hub felvétele a könyvjelzők közé /info - show user info /info - megmutatja a felhasználói információt /now - send current time to the chat /now - elküldi az aktuális időt a chatre Get info failed. Információ kérése sikertelen. Info: Info: Nick: Nicknév: Operator: Operátor: yes igen no nem Comment: Megjegyzés: Speed: Sebesség: EMail: EMail: Shared: Megosztva: Away: Távollét: on be off ki Version: Verzió: Unknown Ismeretlen Tag: Tag: Uptime Futási idő day nap days napok hour óra hours órák minute perc minutes percek Download sharelist from Fájllista letöltése No nick, try /dchelp Nem adtál meg nicknevet, bróbáld meg ezt: /dchelp Permanent slot added for Állandó slot hozzáadva Slot added for Slot hozzáadva Added to friend list Felvéve a barátok listájára Add bookmark hub Hub felvétele a könyvjelzők közé Private message sent. Privát üzenet elküldve Private message not sent! Privát üzenet nincs elkültve! The user is using an old version or not using DCGUI-QT A felhasználó régi DCGUI-QT-t vagy nem DCGUI-QT-t használ Photo not found. Kép nem található Can't read your photo. A képet nem lehet olvasni Photo not sent. Kép nincs elküldve Photo sent. Kép elküldve /raw - send raw message /raw - nyers üzenet küldése Download DCGUI-QT from http://dcgui.berlios.de It does everything ! Works on almost any platform you can think of and makes you coffee. Töltsd le a DCGUI-QT-t a http://dcgui.berlios.de -ről Mindent megcsinál ! Majdnem minden platformom fut amit el tudsz képzelni és kávét is főz The user is using an old version or not using Valknut A felhasználó régi Valknutot, vagy nem Valknutot használ /adv - send an advertisment to the hub /adv - Kliensreklámot küld a hubnak Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Csatlakozik: Parts: Távozik: /rebuild - remove no longer present files from hash database /rebuild - Eltávolítja a nem található fájlokat a megosztásból /slots &lt;N&gt; - set number of upload slots to N /slots &lt;N&gt; - Feltöltési slotok számát állítja be N-re /uptime [show] - show valknut uptime [to other users] /uptime [show] - valknut futási idejét mutatja [más felhasználóknak] /info &lt;nick&gt; - show user info /info &lt;nick&gt; - Felhasználó információi /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat sh &lt;command&gt; &lt;args...&gt; - Shell parancs kimenet elküldése a chatre /disablesorting - disable sorting of the user list /disablesorting - Felhasználólista rendezés tiltása /enablesorting - enable sorting of the user list /enablesorting - Felhasználólista rendezés engedélyezése /ignore &lt;nick&gt; - do not show main chat lines from the user /ignore &lt;nick&gt; - Ne mutassa a felhasználó sorait a közös chatben Valknut uptime Valknut futási ideje Rebuild share in progress. Megosztás újraépítése folyamatban Refresh/rebuild already in progress. Megosztás frissítése/újraépítése már folyamatban. Invalid number of upload slots specified. Érvénytelen feltöltési slot szám. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Töltsd le a DCGUI-QT-t a http://dcgui.berlios.de -ről Mindent megcsinál ! Majdnem minden platformom fut amit el tudsz képzelni és kávét is főz Command produced no visible output. A parancs nem eredményezett megjeleníthető kimenetet. Process was killed or crashed. A folyamat le lett állítva vagy összeomlott. Failed to start shell command. Sikertelen a shell parancs indítása Disabled user list sorting. Felhasználó lista rendezés letiltva. Enabled user list sorting. Felhasználó lista rendezés engedélyezve. /ratio [show] - show share ratio [to other users] /ratio [show] - fel/letölés arány mutatása [más felhasználóknak is] ratio: overall: arány: összesen: uploads feltöltések downloads letöltések this session: jelenlegi folyamat: Unknown command, try /dchelp Ismeretlen parancs, próbáld a /dchelp-et /unignore &lt;nick&gt; - show main chat lines from the user again /unignore &lt;nick&gt; - Letiltott elhasználó sorainak mutatásas ismét /newlog - start a new logfile /newlog - új logfájl kezdése No command entered. Nincs parancs megadva. New log timestamp: Új log időbélyegző Warning: log timestamp not enabled. Figyelem: Log időbélyegző nincs engedélyezve. Error was: Hiba történt: Shell command event not found in list a Shell parancs nem található a listában Process still running after A folyamat még fut seconds, killing process... másodperc után, leállítás... Process still running after 2 minutes, killing process... A folyamat 2 perc után is fut, folyamat leállítása Bytes Setting upload slots to on. off. Process exited with status A folyamat kilépett státusz is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Kapcsolódási idő túllépve Error: ' Hiba: ' Redirect to Átirányítva Password - Jelszó - Please enter your password Kérlek add meg a jelszavad Wrong password Hibás jelszó OP Force Move OP átirányítás Please enter host Kérlek adj meg egy kiszolgálót Please enter a message Kérlek add meg az üzenetet Redirect disabled Átirányítás letiltva OP Kick OP Kick Please enter a reason Kérlek adj meg egy okot User: Felhasználó: Connected Kapcsolódva Disconnected Szétkapcsolva Use password from profile Jelszó használata profilból Password from profile is empty A jelszó a profilban üres No profile found for this hub Nincs profil ehhez a hub-hoz users felhasználók Hubname change: Hub név változás: User rejoin the hub. Felhasználó újra csatlakozott a hub-hoz. User left the hub. A felhasználó elhagyta a hub-ot. Hub Hub We left the hub. Elhagytuk a hub-ot. Joins: Csatlakozik: Parts: Kilép: Chat List Chat lista Line is encrypted. A vonal titkosítva. Line is not encrypted. A vonal nincs titkosítva. Your Nick is already in use. Ez a nicknév már használatban van. Sorry, this client works in passive mode Sajnálom, a kliens passzív módban működik Disconnect. Szétkapcsolás Connect. Kapcsolódás. Close chat tab Chat fül bezárása Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) Elnézést, de nem fog tudni rólam letölteni, mivel mind ketten passzív módban vagyunk. Downloads filelist Fájllista letöltése User command for Felhasználói parancs OK OK Cancel Mégsem Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub Hub szerinti IP cím használata in Options -> Connection -> Mode to use this value. Columns Oszlopok Any Minden DCDebug Send error Küldési hiba Could not send the data. Error '%1'. Adat küldése nem lehetséges. HIba '%1'. Send Küld Thanks for your help. Köszönjük a segítséget. Save error Mentési hiba Can't open file '%1' for writing. Nem lehet megnyitni a '%1' fájlt írásra. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About Névjegy OK OK Authors Szerzők License Licensz Sponsor Támogatók DCGUI-QT - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de DCGUI-QT - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Honlap: http://dcgui.berlios.de Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Portions (C) 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Valknut - Egy Direct Connect fájlmegosztó kliens (C) 2001-2004 Mathias Küster Részletek (C) 2006-2008 Edward Sheldrake Honlap: http://wxdcgui.sourceforge.net Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Fájl letöltés Download mode? Multi Return Single Esc Download all files in this mode DCDialogChat &Send &(S)Küldés DCDialogChat DCDialogChat DCDialogClient User Felhasználó Nick Nicknév Comment Megjegyzés Speed Sebesség EMail EMail 0 0 Share Megosztás Chat List Chat lista ... ... Tag Tag User(s) Felhasználó(k) DCDialogClient IP IP Lock/PK Lock/PK Supports Támogatás DCDialogConnectionManager Connection Kapcsolat DCDialogDebug DCGUI Crash Handler DCGUI összeomlás kezelő Send bugreport. Hibajelentés küldése. Exit. Kilépés. Save to file. Mentés fájlba. Comment Megjegyzés &Save Menté&s S&end &Küldés E&xit K&ilépés Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Egyik sem Send Küld Receive Both Mindkettő OK OK Cancel Mégsem malloc info DCDialogEditServer Settings Beállítások Name Név Host Kiszolgáló Description Leírás Password Jelszó DCDialogEditServer Profile Profil Auto Connect Automata csatlakozás Nick Nicknév Secure Socket Layer Biztonságos kapcsolat (SSL) &Cancel &Mégsem &OK &OK &Profile &Profil Tag Tag EMail EMail Extended hub count Részletes hubszám Suppress nicks Nicknevek letiltása A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. A megadott nicknevetől nem fogad felugró privát üzeneteket. Pl. "Hub|Bot|Spammer" megadása letiltja a Hub, Bot, Spammer nevűek privát üzeneteit. Remote encoding Távoli kódolás Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Megosztási útvonal szerkesztése Alias Megosztásban szereplő név Path Elérési út &Cancel &Mégsem &OK &OK DCDialogEditTransfer Edit Transfer Átvitel szerkesztése Settings Beállítások Nick Nicknévnév Hub name Hub név Hub address Hub cím Known hubs Ismert hub-ok &Cancel &Mégsem &OK &OK DCDialogFileBrowser New Column Új oszlop Name Név Size Méret Open Megnyitás Save Mentés Encoding: Kódolás: Type Típus TTH TTH Form1 Form1 Folder Mappa Exact Size Pontos méret Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Fájl átvitel info File Fájl Size Méret Done Kész Hash Hash Sources Források DCDialogForceMove OP Force Move OP átirányítás Please enter a host Please enter a message Kérlek add meg az üzenetet OK OK Cancel Mégsem DCDialogGetURL Get URL URL kérés &Cancel &Mégsem DCDialogHubFilter Hub Filter Hub szűrő Filter Szűrő Min. User Min. felhasználó Contains Tartalamazza Name Név Server Kiszolgáló Description Leírás Settings Beállítás &OK &OK &Cancel &Mégsem DCDialogHubListManager Hub List Hublista Public Publikus Name Név Server Kiszolgáló Description Leírás User Felhasználó double click to hide the toolbar dupla kattintás az eszköztár elrejtéséhez edit filter szűrő szerkesztése delete filter szűrő törlése Filter Szűrő update public hublist publikus hublista frissítése add filter szűrő hozzáadása reload public hublist publikus hublista újra letöltése double click to show the toolbar dupla kattintás az eszköztár megjelenítéséhez Bookmarks Kedvenc hubok connect csatlakozás Users Felhasználók Country Ország Shared Megosztva Minimum Share Minimum megosztás Extra Extra Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Mozgatás felfelé Change the order of the bookmarks. Move down Mozgatás lefelé Enable sorting Enable sorting of the bookmarks. Save Mentés Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Edit bookmark. Edit Szerkesztés Remove bookmark. Remove Eltávolítás DCDialogHubProfile Profile Profil Settings Beállítások Password Jelszó Auto Connect Automata csatlakozás Hub profile editor Hub profil szerkesztő Nick Nicknév &OK &OK &Cancel &Mégsem Tag Tag EMail EMail Description Leírás Secure Socket Layer Biztonságos kapcsolat (SSL) Delete Törlés Extended hub count Részletes hubszám Suppress nicks Nicknevek tiltása A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. A megadott nicknevetől nem fogad felugró privát üzeneteket. Pl. "Hub|Bot|Spammer" megadása letiltja a Hub, Bot, Spammer nevűek privát üzeneteit. Remote encoding Távoli kódolás Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Találatok Nick Nicknév File Fájl Size Méret Slot Slot Hub Hub Path Elérési út Log Log Search Keresés Results: Találatok: Connected Hubs Csatlakozott Hubok Bookmark Hubs Kedvenc Hubok Filter Szűrő Type Típus At Least Legalább At Most Legfeljebb KB KB MB MB Any Minden Compressed Tömörített Document Dokumentum Executable Vérgrehajtó Picture Kép Video Videó Folder Könyvtár Hub Search Keresés a hubokon Host Kiszolgáló GB GB Free Slots Szabad slotok Max Free Slots (0=off) Max. szabad slot (0=ki) Exact Pontos B B 0/0 0/0 0 0 Search in path+file name only Keresés csak elérési út+fájlnevekben Hubs Hubok Hub Options Hub beállítások Connected Hub Csatlakozott hub Refresh Frissítés Public Hubs Publikus hubok Expert Haladó User Felhasználó Reset Visszaállítás Clients Kliensek Live filters Élő szűrők Include: Beleértve: Exclude: Kizárva: Apply Alkalmaz Mode Mód Add Hozzáad User/File Felhasználó/Fájl Search for a user or a file. Fájl vagy felhasználó keresése. Start Indítás Start the search. Keresés indítása. Add a search to the searchqueue Keresés hozzáadása a keresési sorhoz Filtered Hubs Szűrt hubok Multi Search Több hubon keresés Enable Tag Tag engedélyezése Audio Audió Hash Hash TTHash TTHash KiB KiB MiB MiB GiB GiB Total Slots Slotok összesen Purge Törlés Clear the search history Előző keresések törlése Count Mennyiség Ready Overall search status Clear search string and set search size, size mode and file type to default TTH TTH Any size At least At most Maximum results Unlimited IP IP DCDialogMagnet Magnet Link Details Link TTH TTH Name Név Size Méret Exact size Action Műveletek Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Mégsem DCDialogMessage DCDialogMessage DCDialogMessage Do not show this again. Ne mutasd ismét. DCDialogOptions Options Beállítások Identify Azonosítás Information Információ E-Mail: EMail: Nick: Nicknév: Description: Leírás: Speed: Sebesség: Anti-Spam (email at home dot com) Spam védelem (email at home dot com) Transfer Átvitel Share Folders Megosztott mappák Download Folder Letöltési mappa Upload Options Feltöltési beállítások Connection Kapcsolat Settings Beállítás Mode Mód Active Mode Aktív mód Passive Mode Passzív mód Passive Mode Settings Passzív mód beállításai Active Mode Settings Aktív mód beállításai TCP Listen Port: TCP Port: 412 412 Hub Search Keresés UDP Listen Port: UDP port: Test Teszt GUI GUI GUI Options GUI beállítások Other Egyéb Other Options Egyéb beállítások Hublist Hublista Store local Tárolás helyben Theme Téma Language File Nyelvi fájl Reconnect Counter (0=off) Újracsatlakozás számláló (0=ki) Reconnect Timeout (sec.) Újracsatlakozás idő túllépés (sec.) Allow Force Move Átirányítás engedélyezése Source Url's Forrás URL URL URL Max. upload slots (0=off) Max. feltöltési slot (0=ki) Application Font Betűtípus Maximal upload connections. Maximális feltöltési kapcsolatok. Transfer Request Timings Átvitel kérés időzítése Resend Timeout (sec.) Újraküldési idő túllépés (sec.) Response Timeout (sec.) Válasz időtúllépés (sec.) Hub Connections Hub csatlakozások Sound Hang External Player Külső lejátszó Chat Chat Units Mértékegység Auto Auto Byte Bájt GByte GBájt KByte KBájt MByte MBájt General Általános Disable Sound Hangok letiltása Play a sound when receiving a message Hang lejátsása üzenet érkezésekor Play a sound when disconnecting from a hub Hang lejátszása hub szétkapcsolásakor Play a sound when receiving first message Hang lejátszása az első üzenet érkezésekor Play a sound when sending a message Hang lejátszása üzenet küldésekor Play a sound when connecting to a hub Hang lejátszása hubhoz csatlakozáskor Disable sound when away Hangok letiltása távollétkor Player Lejátszó Sound Files Hangfájlok Log Log Timestamp Időbélyeg Private Chat Privát chat Hub Chat Közös chat Download Queue Letöltési sor Save Queue in minutes (0=off) Sor mentése percekben (0=ki) Move Finished Files to this Folder (empty = disabled) Letöltött fájlok áthelyezése ebbe a mappába (üres = letiltva) No multi hub search ! No incoming connections ! Nincs egyszerre több hubon keresés! Nincs bejövő kapcsolat! Send warn message to remote user on active mode request Figyelmeztető üzenet köldése a távoli felhasználónak aktív mód kérése esetén Show Status Messages Státusz üzenetek megjelenítése Open Private Chat Window Magán beszélgetés ablak nyitása Transfer Options Átviteli beállítások Transfer View Átvitel nézet Chunk Percent Darab százalék File Percent Fájl százalék Chunk Size Darab méret File Size Fájl méret Search Nick: Nicknév keresése: Chat options Chat beállítások upload feltöltés download letöltés Add Description Tag (<DCGUI ....>) Klienstípus megjelenítése a tagben (<DCGUI....>) Folder Mappa New Column Új oszlop Away Message: Távollét üzenet Your line speed. Kapcsolatod sebessége Your nick. Nickneved The nick for hub searches. Nicknév a keresésekhez. Your EMail. EMail címed: Enable/Disable the Anti-spam option. Spam-ellenes beállítás engedélyezése/ letiltása . A little description. Egy kis leírás. Add a tag to the description that show some information from you. Címke hozzáadása a leíráshoz, némi információt ad rólad. The tcp listen port for incoming connections. TCP port a bejövő kapcsolatokhoz. The udp listen port for incoming search results. UDP port a bejövő keresési eredményekhez. Select a interface. Válasz egy eszközt. Get the ip from the host. IP cím kérése a géptől. The time between a reconnect. Az újrakapcsolódások közti idő. How often we reconnect to a hub. Újrakapcsolódás gyakorisága a hubhoz. Rebuild your sharelist. Megosztás újraépítése. Add a folder to your sharelist. Mappa hozzáadása a megosztáshoz. Remove a folder from your sharelist. Mappa eltávolítása a megosztásból. Show some information about your sharelist. Információ megjelenítése a megosztásról. Browse your own share list. Saját megosztás böngészése. Time to wait for a transfer response from the remote user. Várakozási idő az átviteli válaszhoz a távoli felhasználótól. Time to wait before a new transfer request is send to the remote user. Várakozási idő az új átviteli kérés küldése előtt a távoli felhasználónak. Test the new theme. Az új téma kipróbálása. Open the chat window on incoming messages. Chat ablak megnyitása bejövő üzenet érkezésekor. Enable emoticons in chat Emoticonok engedélyezése a chatben Data Folder Adat mappa Ctrl + Enter Enter Alt + Enter Alt + S Messages Üzenetek Query on exit Lekérdezés kilépéskor Logfile Logfájl Logfile enabled Logfájl engedélyezve Security Biztonság Flood Protection Flood védelem Kick Message Kick üzenet Private Address Space (rfc1918) Privát címtartomány (rfc1918) Ignore private address space connections Privát címtartományi kapcsolatok figyelmen kívül hagyása Query Lekérdezés Client Kliens User-List right alignment Felhasználó lista jobbra rendezése Don't Display Messages after X retry (0=off) Ne jelenjenek üzenetek meg x próbálkozás után (0=ki) Kick the user for flooding (only for Operators) Felhasználó kirúgása flood miatt (Csak operátoroknak) Show send button Küldés gomb látszik Dynamic upload rate Dinamikus feltöltési érték Hide popups of more than Felugró ablakok elrejtése, ha több mint Send message with Üzenet küldése lines (0=off) sorok (0=ki) Browser Böngésző Use tab for every chat window Fül használata minden chat ablakban Max. paragraphs (0=off) Max. bekezdés (0=ki) Client options Kliens beállítások Show client windows minimized Kliens ablakok minimalizálva mutatása Max. uploads to user (0=off) Max. feltöltések egy felhasználóhoz (0=ki) Color Szín Transfer Cert/Key Átvitel aláírás / kulcs User quitting hub Felhasználó kilép a hubról If user quits hub, stop following transfers Hubról kilépő felhasználó átviteleinek letiltása Upload Feltöltés Both Mindkettő Download Letöltés None Egyik sem Auto-Search Automata keresés Auto-Search for new sources Új források automata keresése Download Rate Single Egyszálas letöltési érték Download Rate Multi Többszálas letöltési érték Remaining Time Single Egyszálas: fennmaradó idő Remaining Time Multi Többszálas: fennmaradó idő Max. rate KB/s (0=off) Max. érték KiB (0=off) Path Útvonal Alias Álnév Edit a folder from the sharelist. Mappa szerkesztése a megosztásban. Open File Dialog. Fájl megnyitása ablak. Add a URL to the list. URL hozzáadása a listához. Remove a URL from the list. URL törlése a listáról. Enable logging Loggolás engedélyezése Append date to log file name Dátum huzzáfüzése a logfájl nevéhez Nick name filter Nicknév szűrő Enable nick name filter Nicknév szűrő engedélyezése Disable logging for public chat Közös chat loggolásának tiltása Append hub name to log file name Hub nevének hozzáfűzése a logfájl nevéhez Append hub host to log file name Hub gépnevének hozzáfűzése a logfájl nevéhez &Save Menté&s &Cancel &Mégsem Forward private to public chat Privát chat továbbítása a közösbe(csak te látod) Away Prefix: Távollét előtag: Select Language. Válassz nyelvet. Recreate every hour (0=off) Óránkénti újraépítés (0=ki) Check and recreate sharelist on startup Megosztás ellenőrzése és újbóli létrehozása induláskor seconds másodperc után Away after Távollét Auto Away Mode Automata távollét mód Ignore messages to offline users Offline felhasználónak küldött üzenet figyelmen kívül hagyása Ignore messages from offline users Offline felhasználótól érkezett üzenet figyelmen kívül hagyása Show joins and parts Ki - és belépések megjelenítése Columns Oszlopok Comment Megjegyzés Speed Sebesség EMail EMail Share Megosztás Photo Kép Query on File Delete Lekérdezés fájl törlésekor Tag Tag IP, Hostname or Interface IP, gépnév vagy hálózati eszköz IP or Hostname IP vagy gépnév Network Interface Hálózati eszköz Listen on IP Listen on IP IP IP Lock PK Lock PK Supports Támogatás Get Internet IP IP cím lekérdezése Get Interface Hálózati eszköz kiválasztása Update every hour (0=off) Frissítés óránként (0=ki) Hub Lists Hublisták Disable hash list Hash lista kikapcsolása GiB GiB KiB KiB MiB MiB Edit hublist url. Hublistacím szerkesztése Extended hub count in tag (H:3/2/1) Részletes hubszám a tagben (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Ha bekapcsolod, a hubszám így jelenik meg: H:Normál/Regisztrált/Operátor, egyébként H:összesen csatlakoztatott hubok száma Do not share dot files and folders Ne kerüljenek ponttal kezdődő mappák és fájlok a megosztásba If checked, files and folders starting with "." will not be shared. Ha bekapcsolod a "."-vel kezdődő fájlok nem lesznek megosztva Small file size (bytes) Kis fájl méretw (bájtban) The maximum size of files for which extra upload slots will be granted. Maximális fájlméret amihez extra feltöltési slot jár. Compressed transfers Tömörített átvitelek Enable compressed transfers Tömörített átvitelek engedélyezése Time between auto-searches (seconds) Automata keresések közti idő (másodperc) Use IP address from the hub Hub szerinti IP cím használata Enable compressed hub to client communication (EXPERIMENTAL) Hub és kliens közti tömörített adatátvitel használata (KÍSÉRLETI) Joins and parts only for friends Csak a barátok ki-és belépését jelenítse meg Do not open chat windows for Ne nyisson chat ablakot A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. A megadott nicknevetől nem fogad felugró privát üzeneteket. Pl. "Hub|Bot|Spammer" megadása letiltja a Hub, Bot, Spammer nevűek privát üzeneteit. Commands Parancsok Custom chat commands Egyéni chat parancsok Name Név Command Parancs Right click to add or remove commands, left click on text to edit it. Jobb katt parancshozzáadás/törléshez, bal klikk a szerkesztéséhez. Menus Menük Custom menu commands Egyéni menü parancsok Context Kontextus Double clicking a user Dupla katt a felhasználón Opens private chat Privát chatablakot nyit Downloads filelist Fájllistát letölt Icons Ikonok Icon themes Ikon témák Emoticons Emotikonok Application Icons Alkalmazás ikonok Userlist icons Felhasználólista ikonok To ensure all icons are changed, please restart valknut. Az ikonok megváltoztatásához indítsd újra a valknutot. Filelist browser Fájllista böngésző Filelist browser settings Fájllista böngésző beállításai Also show folders in the right pane Mappákat is mutasd a jobboldali mezőben Sort folders in the right pane on top Mappák rendezése a jobboldali mező tetején Show folders sizes in the left pane Mappaméretek mutatása a baloldali mezőben Listen to the sound file. Hangfájl meghallgatása Play a sound when your nick is mentioned in public chat Hang lejátszása ha a nickedet beírják a közös chatben Open File Dialog Fálj megnyitása ablak Log completed downloads Kész letöltések logolása Log completed uploads Kész feltöltése logolása Log all transfer details Minden átviteli részlet logolása Generate Generálás Create a new key and certificate pair. Új kulcs és tanúsítvány készítése Auto Responses Automata válaszok Auto Response Settings Automata válaszok beállításai Enable auto responder for public chat Automata válaszok engedélyezése a közös chatben Enable auto responder for private messages Automata válaszok engedélyezése a privát chatben Minimum seconds between auto responses Minimum idő két válasz közt (másodperc) Ignore nicks Nicknevek figyelmen kívül hagyása A QT regular expression of nicks to not auto respond to, case insensitive. QT szabványos kifejezés a figyelmen kívül hagyandó nickekhey, nem esetérzékeny (?) Trigger Aktiváló kifejezés Case Sensitive Esetérzékenység Response Válasz Remote Encoding Távoli kódolás For a list of valid encodings, run "iconv -l" Az érvényes kódolások listájához futtasd: "iconv -l" Advanced Haladó Read file buffer size (bytes) Fájl olvasási pufferméret (bájt) If you experience slow uploads in a LAN, try increasing this value. Ha lassű feltöltést tapasztalsz LAN-on keresztül, próbáld növelni az értéket. %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Context is sum of: 1 = Hub, 2 = User %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= a Tag-ed %[mydescription]= %[myDE]= a leírásod %[myemail]= %[myEM]= Email címed %[myshare]= %[mySS]= Megosztásod mérete (pontos) %[myshareshort] = %[mySSshort]= Megosztásod mérete (mért. egységekkel) %[myip]= %[myI4]= IP címed %[nick]= %[userNI]= A felhasználó nickje %[tag]= %[userTAG]= A felhasználó tagje %[description]= %[userDE]= A felhasználó leírása %[email]= %[userEM]= A felhasználó email címe %[share]= %[userSS]= A felhasználó megosztásának pontos mérete %[shareshort]= %[userSSshort] = A felhasználó megosztásának mérete mértékegységekben %[ip]= %[userI4]= A felhasználó IP címe (ha ismert) %[line:reason]= Ablakot nyit a (kick)ok beviteléhez. Idő és dátum meghatározók nézd meg az strftime-ot további infókért(3). %c= Alap dátum és idő %d= A hónap napja mint szám (01-től 31-ig) %m= Az év hónapja mint szám (01-től től 12-ig) %y= Az év mint 4 számjegyű szám %H= Óra 24-órás formátumban (00-tól 23-ig) %M= Perc mint szám (00-tól 59-ig) %S= Másodperc mint szám (00-tól 60-ig) Összefüggés: 1 = Hub, 2 = Felhasználó Adjust hub details in search results Hub részleteinek beállítása a keresési eredményekben Only used if searching a single connected hub. Csak akkor használt ha csak egy hubon keresünk. Send unknown /commands as chat Ismeretlen /parancsok elküldése a chatbe If true, undefined chat commands will be sent to the hub. Ha bekapcsolod, a nem meghatározott parancsokat el fogja küldeni a hubnak. Plugin folder Plugin mappa You must close and re-open each hub to use the new setting. Select "None" to disable text encoding conversions. Be kell zárni majd ismét megnyitni minden hub ablakát az új beállítás alkalmazásához. Válaszd a "None" opciót a szövegkódolás kikapcsolásához Tab nick completion options Tabulátoros nick-kiegészítés beállításai Tab completion matches by Tabulátoros kiegészítési találatok rendezése Containing anywhere Akárhol tartalmaz Starting with Így kezdődik Ignore all tags (text inside []) Minden []-ben lévő szöveg kihagyása Maximum paragraphs (0=off) Max. bekezdés (0=ki) Hide popups of more lines than (0=off) Felugró ablakok elrejtése ha ennyi sornál több (0=ki) Unknown chat commands Ismeretlen chatparancsok Exceptions Kivételek A comma separated list of commands. Vesszővel elválasztott parancsok listája Shell command (/sh) options Shell parancsok beállításai (/sh) Use threads to wait for shell commands to finish Végrehajtási szál használata a shell parancsok lefutásának megváráshoz Seconds to wait for shell commands when not using threads Várakozás ha nem használunk végrehajtási szálat(másodperc) Open folders in the right pane by double clicking them Mappák megnyitása a jobb mezőben duppla kattintásra Include a menu item for removing public hubs Legyen egy menüpont a publikus hubok törléséhez Enabling this option will slow closing valknut Ezen funkció engedélyezése lelassítja a valknut leállását Disable features for old clients Régi kliens támogatás kikapcsolása Disable support for the ADCGet command when hash list is disabled ADCGet parancs támogatásának kikapcsolása ha az indexlista is kikapcsolt Disable support for XML filelists when hash list is disabled XML fájllista-támogatás kikapcsolása ha az indexlista is kikapcsolt This only applies to outgoing client connections. Hub and incoming connections are not checked. Ez csak a kimenő kapcsolatokra vonatkozik. A hub és bejövő kapcsolatokat nem ellenőrzi Allow all connections Minden kapcsolat engedélyezése Allow private address space connections only Csak a belső hálózati kapcsolatok engedélyezése Menu command settings Menü-parancs beállítások Add commands received from the hub to the menus Hubtól érkező menü-parancsok hozzádása Use a submenu for custom menu commands Almenü használata az egyéni menü-parancsoknál Add a new menu command to the list. Új parancs hozzáadása a listához. Edit an existing menu command. Menü-parancs szerkesztése. Remove an existing menu command from the list. Menü-parancs eltávolítása a lsitáról. Move up Mozgatás felfelé Change the order of the commands. Parancsok sorrend megváltoztatása. Move down Mozgatás lefelé %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) %[mynick]= %[myNI]= A nickneved %[mytag]= %[myTAG]= A taged %[mydescription]= %[myDE]= A leírásod %[myemail]= %[myEM]= Email címed %[myshare]= %[mySS]= Megosztásod mérete (pontosan) %[myshareshort] = %[mySSshort]= Megosztásod mérete (mért. egységekben) %[myip]= %[myI4]= IP címed %[nick]= %[userNI]= Felhasználó nickneve %[tag]= %[userTAG]= Felhasználó tagje %[description]= %[userDE]= Fehasználó leírása %[email]= %[userEM]= Felhasználó email címe %[share]= %[userSS]= Felhasználó megosztásának pontos mérete bájtban %[shareshort]= %[userSSshort] = Felhasználó megosztásának mérete mértékegységekben %[ip]= %[userI4]= Felhasználó IP címe (ha ismert) %[line:reason]= Az "ok megadása" ablakba írt szöveg Idő és dátum meghatározás, további infóért nézd meg az strftime(3)-at. %c= Alapértelmezett dátum és idő %d= A hónap napja mint szám (01-től 31-ig) %m= Az év hónapja mint szám (01-től 12-ig) %y= Az év mint 4 jegyű szám %H= Óra 24-órás formátumban (00-tól 23-ig) %M= Perc mint szám (00-tól 59-ig) %S= Másodperc mint szám (00-tól 60-ig) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normál Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList Hub List Hublista Public Publikus Name Név Server Kiszolgáló Description Leírás User Felhasználó double click to hide the toolbar dupla katt az eszköztár elrejtéséhez edit filter szűrő szerkesztése delete filter szűrő törlése Filter Szűrő update public hublist publikus hub lista frissítése add filter szűrő hozzáadása reload public hublist publikus hub lista újra letöltése double click to show the toolbar dupla katt az eszköztár megjelenítéséhez Bookmarks Könyvjelzők connect csatlakozás DCDialogSplash Dcgui Dcgui Valknut Valknut DCDialogSpy Spy Kém Spy On/Off Kém be / ki Clear Törlés Text Szöveg Count Mennyiség Statistic Statisztika Active: Aktív: 0 0 Reject: Elutasítva: Results: Eredmény: Search Error: Keresési hiba: Result Error: Eredmény hiba: Passive: Passzív: Time Idő Spy Enabled Kém engedélyezve Ignore TTH searches TTH keresések mellőzése DCDialogTransfer Transfer List Átvitel lista Nick Nicknév State Állapot Transfer Átvitel Wait Várakozás Log Log Slots Slotok Hub Hub Files Fájl Local File / Nick Helyi fájl / nicknév Size / Hub Méret / Hub Remote File Távoli fájl Local File Helyi fájl File Name Fájlnév Hub/File Hub / Fájl IP/Size IP / Méret TTH TTH DCDialogTranslatorSettings Translator Settings Fordító beállításai Choose a provider Válassz szolgáltatót Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Yahoo Babelfish beállításai Choose the languages Válassz nyelvet Settings for Google Translate Google Translate beállításai Input language beviteli nyelv Output language Kimeneti nyelv OK OK Cancel Mégsem DCDialogUpdateManager Update Manager Frissítéskezelő Update Frissítés Check update Frissítés ellenőrzése DCDialogUserCommandEditor User Command Editor Egyéni parancs szerkesztő Command Type Parancs típus Separator Elválasztó Raw Nyers(raw) Chat Chat PM Privát chat Context Összefüggés Hub Menu Hub menü User Menu Felhasználó menü Search Menu Keresés menü Filelist Menu Fájllista menü Parameters Paraméterek Name Név Command Parancs Hub IP / DNS (empty = All, 'op' = where operator) Hub IP / DNS (üres = mind, 'op' = ahol operátor) To (empty for selected user) Cél (ha üres, kiválasztott felhasználó) Send once per nick Csak egyszer küld nickenként Text sent to hub Szöveg elküldve a hubnak OK OK Cancel Mégsem DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Mégsem DCDialogUsersList User Felhasználók Friend-List Barátok listája Users List Felhasználók listája Photo Kép Slot Slot Ignore Mellőzés DCEditServer Please enter a hubname. Kérlek adj meg egy hubnevet. Please enter a hubhost. Kérlek adj meg egy hubcímet. DCFileBrowser Items Elemek Files Fájlok Total Összes Directories Könyvtárak Root Directory Gyökérkönyvtár <wrong length> <hIbás hossz> file fájl Select destination Cél kiválasztása Select a filename Fájlnév kiválastása open filelist dialog Fájllista megnyitás ablak Choose a file Válassz egy fájlt save file dialog Fájl mentése ablak Choose a filename to save under Válaszd ki a mentendő fájl nevét Filebrowser Fájlböngésző Folder Mappa Download contents? Tartalom letöltése? Download the contents of " " tartalmának letöltése Failed to load filelist Sikertelen fájllista betöltés Unable to load Sikertelen betöltés OK OK Modern XML Filelists Modern XML fájllisták Old BZ2 Text Filelists Régi BZ2 szöveges fájllisták Very old HE3 Text Filelists Nagyon régi HE3 szöveges fájllisták Old Valknut Filelists Régi valknut fájllisták All files Minden fájl Cannot save file Nem sikerült a fájl mentése No data available to save. Nem áll adat rendelkezésre a mentéshez. Error saving file Hiba a mentés közben Failed to save A mentés sikertelen. Cannot open list now Nem lehet megnyitni a listát Filelist browser is busy Fájllista böngésző elfoglalt Error opening own filelist A Fájllista böngésző elfoglalt Failed to open your own filelist Saját fájllista megnyitása sikertelen Error opening filelist Fájllista megnyitása sikertelen File Fájl does not exist. nem létezik. is likely not a valid filelist valószínűleg nem érvényes fájllista Processing filelist... Fájllista feldolgozás... Cannot download Nem lehet letölteni Could not find the path for Az elérési út nem található None Egyik sem Directory Könyvtár Modern XML Filelists (uncompressed) Search by TTH TTH szerinti keresés Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Fájl letöltés Resume Folytatás Overwrite Felülírás Cancel Mégsem Not connected to required hub! Nem vagy csatlakozva a szükséges hubhoz! Connect Csatlakozás (choose an existing download to add to) (válassz egy létező letöltést amihez hozzáadhatom) A same file is already in the queue! Ugyanez a fájl már a sorban van! Start a multi-download Többszálas letöltés indítása File is already in the queue but not mark as a multi-download! A fájl már a sorban van de nincs megjelölve mint többszálas letöltés! File is already in the queue with a different size! A fájl(név) már a sorban van másik mérettel! File already downloaded! A fájl már letöltve! File already exists! A fájl már létezik! You can start a multi-download! Indíthatsz többszálas letöltést! Do you want to download all files in this mode? Az összes fájlt ebben a módban szeretnéd letölteni? File is already in the queue but not mark as a multi-download! Fájl már a sorban van de nincs megjelölve mint többszálas letöltés! Repair File Fájl kijavítása Enter byte range (m-n) Írd be a bájttartományt (m-n) Repair BIN Sectors BIN szektorok javítása Enter sector range (m[-n]) Írd be a szektortartományt (m[-n]) File already exists in your finished downloads folder A fájl már létezik a befejezett letöltések mappában It will be overwritten when the download finishes Felülírás a letöltés végén lesz DCFileTransferInfo File Transfer Info Fájl átvitel info DCGuiApp Options Beállítások &Options &Beállítások Ctrl+O Ctrl+O Open option dialog Beállítások ablak megnyitása Exit Kilépés Ctrl+Q Ctrl+Q Quits the application Kilépés a programból Toolbar Eszköztár Tool&bar &Eszköztár Enables/disables the toolbar Eszköztár engedélyezés / letiltás Statusbar Státuszsor &Statusbar &Státuszsor Enables/disables the statusbar Sztátuszsor engedélyezés / letiltás Cascade Lépcsőzetes &Cascade &Lépcsőzetes Cascades all windows Minden ablak lépcsőzetesen Ctrl+S Ctrl+S Transfer List Átvitel lista &Transfer List &Átvitel lista Ctrl+T Ctrl+T Show Transfer List Átvitel lista megjelenítése Hub Search Keresés Show Hub Search Keresés megjelenítése About Névjegy &About... &Névjegy... What's &This Mi &ez &File &Fájl &View &Nézet &Action &Műveletek &Window &Ablak &Help &Segítség Ready. Kész. Quit... Kilépés... Open options dialog... Beállítások ablak megnyitása... Exiting application... Kilépés a programból... Toggle toolbar... Eszköztár váltás... Toggle statusbar... Státuszsor váltás... Show/hide transfer list window ... Átvitel ablak megjelenítése / elrejtése... Show/hide hub search window ... Keresés ablak megjelenítése / elrejtése... Normal Normál &Normal &Normál Ctrl+N Ctrl+N Away Távol &Away &Távol Ctrl+A Ctrl+A Hub List Hublista Show Hub List Hublista megjelenítése Show/hide hub list window ... Hublista ablak megjelenítése / elrejtése... H&ub List &Hublista Ctrl+U Ctrl+U Minimize Kis méretű &Minimize &Kis méretű Action Műveletek Quick Options Gyors beállítások Quick options Gyors beállítások F12 F12 Download mode: Ask Letöltési mód : Rákérdez Download mode: Single Letöltési mód : Egyszerű Download mode: Multi Letöltési mód : Többszálas Spy Kém Show Spy Kém megjelenítése Show/hide spy window ... Kém ablak megjelenítése / elrejtése... Users Felhasználók Ctrl+F Ctrl+F Do you really want to quit? Tényleg kilépsz? Exiting application... aborted Kilépés a programból... megszakítva Show/hide users window ... Felhasználók ablak megjelenítése / elrejtése... Away &Mode &Távollét mód Tile &Horizontally Mozaik &vízszintesen Reload Plugins Plugin újratöltése &Reload Plugins &Plugin újratöltése Dock Dokkolás &Dock &Dokkolás Dock the application Program dokkolása panelba Hub &Search Kere&sés S&py &Kém Ctrl+P Ctrl+P Dock/Undock application... Program ki- be dokkolása... Recreate share Megosztás újbóli elkészítése Refresh share in progress. Megosztás frissítése folyamatban. Exit Quits the application. Kilépés Kilép a programból. Toolbar Enables/disables the toolbar. Eszköztár Engedélyezi / letiltja az eszköztárat. Statusbar Enables/disables the statusbar. Státuszsor Engedélyezi / letiltja a státuszsort. Dock Dock the application. Dokkolás Dokkolja a programot a panelba. Cascade Cascades all windows. Lépcsőzetes Minden ablakot lépcsőzetesen rendez el. Tiles all windows horizontally. Összes ablak elrendezése vízszintesen. Tile Horizontally Tiles all windows horizontally. Rendezés vízszintesen Összes ablakot elrendezi vízszintesen. Minimize all windows. Minden ablak minimalizálása. Minimize Minimize all windows. Minimalizálás Minden ablakot minimalizál. Close chat windows. Chat ablak bezárása. Close all chat windows. Minden chat ablak bezárása. Close chat windows Close all chat windows. Chat ablak bezárása. Minden chat ablakot bezár. Close disconnected hubs. Szétkapcsolt hubok bezárása. Close all disconnected hub windows. Minden szétkapcsolt hub bezárása. Close disconnected hubs Close all disconnected hub windows. Szétkapcsolt hubok bezárása Bezárja az összes szétkapcsolt hub-ot. Show Hub List. Hublista megjelenítése. Show Transfer List. Átvitel lista megjelenítése. Show Hub Search. Keresés megjelenítése. Show users: search tab and friends tab. Felhsználók megjelenítése: keresési címke és a barátok címke. Set away mode. Távollét mód beállítása. About the application. A programról. About About the application. Névjegy A program névjegye. Support Támogatás &Support... &Támogatás... Connect to DCGUI-QT hub Kapcsolódás a DCGUI-QT hubhoz Support Connect to the DCGUI-QT hub. Támogatás Kapcsolódás a DCGUI-QT hubhoz. Refresh share finished. A megosztások frissítése kész. Refresh share already in progress. Megosztás frissítése már folyamatban. RX/TX Traffic. F/K forgalom. Available disc space. Rendelkezésre álló lemezterület. Tile Vertically Rendezás függőlegesen &Tile Vertically Rendezés &függőlegesen Tiles all windows vertically Összes ablak elrendezése függőlegesen Tile Vertically Tiles all windows vertically. Rendezés függőlegesen Összes ablakot elrendezi függőlegesen. Filelist browser Fájllista böngésző Open filelist browser Fájllista böngésző megnyitása Latest release Legfrissebb verzió &Latest release... &Legfrissebb verzió... Latest release Show latest release. Legfrissebb verzió Megmutatja a legfrissebb verziót. Can't get release info from server Nem lehet beszerezni a verzió információt a kiszolgálóról latest release is: legfrissebb verzió: Latest release... Legfrissebb verzió... Show update manager Frissítéskezelő megjelenítése Show/hide update manager window ... Frissítéskezelő megjelenítése / elrejtése ... Warning license file not found ! Figyelem, a licensz Fájl nem található ! Tabbar Fülsáv Enables/disables the tabbar Fülsáv engedélyezése/tiltása Tabbar Enables/disables the tabbar. Fülsáv Engedélyezi/letiltja a fülsávot. Show Search Spy. Keresés kém mutatása Tab Bar Fül sáv Toggle tabbar... Fülsáv elhúzása... Connect to Valknut hub Csatlakozás a Valknut hubhoz Support Connect to the Valknut hub. Támogatás Csatlakozz a Valknut hubhoz. Filelist browser local Saját fájllista böngésző Open local filelist browser Helyi fájllista böngésző megnyitása Manual Használati utasítás &Manual... &Használati utasítás... Online User Manual. Online használati utasítás Manual Online User Manual. Használati utasítás Online használati utasítás. Dock Application Alkalmazás dokkolása The system tray icon must be enabled to dock the application. A tálca-ikonnak engedélyezve kell lennia az alkalmazás dokkolásához. Update Manager Frissítéskezelő The update manager is disabled. Frissítéskezelő letiltva. Ratio: Overall: Arány: Összesen: (Up: (Fel: , Down: Le: ) This session: ) jelenlegi folyamat: Valknut Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Publikus Bookmarks Kedvenc hubok Add Bookmark Felvétel a kedvenc hubokhoz Error Hiba Please enter a hubname. Kérlek adj meg egy hubnevet. Please enter a hubhost. Kérlek adj meg egy hubcímet. Edit Bookmark Kedvenc hubok szerkesztése Remove bookmarks Kedvenc hub törlése You are sure ? Biztos vagy benne? Remove Eltávolítás Cancel Mégsem Remove public hub Publikus hub törlése Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Save profile Profil mentése Do you want to save your changes? El akarod menteni a változásokat? Save Mentés Cancel Mégsem Are you sure? Delete profile for DCHubSearch No hubs found. Hubok nem találhatók. Hub Search Error Hub keresési hiba No connected hubs found. Nem található csatlakozott hub. Select download folder Válaszd ki a letöltési mappát Please select a connected hub. Kérlek válassz ki egy csatlakoztatott hub-ot. Select file for Válaszd ki a fájlt USER Felhasználó FILE Fájl Not connected to required hub! Nem vagy csatlakozva a szükséges hubhoz! Connect Csatlakozás Cancel Mégsem save file dialog fájl mentése ablak Choose a filename to save under Válassz fáljnevet a mentéshez open file dialog fájl megnyitása ablak Choose a file to open Válassz ki egy fájlt a megnyitáshoz Start Indítás Stop Állj Filelist download Fájllista letöltés External search is already running! Külső keresés már fut! Please add a search! Kérlek adj meg egy keresni valót! Multi Search only work in active mode! Többhubos keresés csak aktív módban működik! Folder Mappa Unknown Ismeretlen None Egyik sem Directory Könyvtár File Fájl Search ended with %1 results %1 results were filtered on be Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions Select download folder Válaszd ki a letöltési mappát Select share folder Válassz megosztási mappát Select language file Válassz nyelvi fájl HubList URL Hub lista URL Please enter a url Kérlek adj meg egy URL-t Share list not available Megosztás nem áll rendelkezésre bytes bájtok Total shared: Összes megosztás: Share List Info Megosztás infó My My Select sound file Válassz hangfájlt Select sound player Válassz lejátszót au au wav wav All Files Minden fájl Select download finished folder Válassz a befejezett letöltésekhez mappát Other Egyéb Log Log Sound Hang General Általános GUI GUI Chat Chat Transfer Átvitel Connection Kapcsolat Mode Mód Settings Beállítások DCGUI DCGUI Identify Azonosító Folder Mappa Interface List Hálózati eszköz lista Please select an interface Kérlek válasz egy hálózati eszközt Select data folder Válassz adat mappát User Felhasználó Select log file Válaszd ki a logfájlt Security Biztonság Select a browser Válassz böngészőt Compressed list size (HE3/BZ): Tömörített lista mérete (HE3/BZ): Select transfer cert Válassz átviteli tanusítványt Select transfer key Válassz átviteli kulcsot Browse Share List Megosztás böngészése Add new nick name filter Nicknév szűrő hozzáadása Please enter a nick Kérlek adj meg egy nicknevet Chat Timestamp Chat időbélyeg Chat Local Nick Chat, helyi nicknév Chat Local Text Chat, helyi szöveg Chat Remote Nick Chat, távoli nicknév Chat Remote Text Csevej távoli szöveg Chat Status Nick Chat, állapot jelző nicknév Chat Status Text Chat, állapot jelző szöveg Public Chat Timestamp Közös chat, időbélyeg Public Chat Local Nick Közös chat, helyi nicknév Public Chat Local Text Közös chat, helyi szöveg Public Chat Remote Nick Közös chat, távoli nicknév Public Chat Remote Text Közös chat, távoli szöveg Public Chat Status Nick Közös chat, állapot jelző nicknév Public Chat Status Text Közös chat, állapot jelző szöveg Public Private Chat Nick Közös chatbe továbbított privát chat nicknév Public Private Chat Text Közös chatbe továbbított privát chat szöveg Select a 64x64 Photo Válassz ki egy 64x64-es képet You change the client mode! Please restart DCGUI! Megváltoztattad a kliens módot! Kérlek indítsd újra a DCGUI-t! You must set a Download Folder! Be kell állítanod egy letöltési mappát! Download Finished Folder and Download Folder must be different! Kész letöltési mappának és a befejezetlennek kölönbözőnek kell lennie! You must enter a valid 'Fake Host'! Érvényes 'hamis gép-et' kell beállítanod! You must enter a valid interface! Érvényes hálózati eszközt kell megadnod! You must enter a valid tcp listen port! Érvényes TCP portot kell megadnod! You must enter a valid udp listen port! Érvényes UDP portot kell megadnod! You have set DCGUI-QT to listen on a port < 1024! You can run DCGUI-QT only as root in active mode! A DCGUI-QT-nak beállított port <1024! Aktív módban így csak rootként futtathatod a DCGUI-QT-t! You must enter a valid nick! Érvényes nicknevet kell megadnod! You must enter a valid search nick! Érvényes keresési nicknevet kell megadnod! Can't save Image! Nem menthető kép! Can't load Image! Kép nem tölthető be! Can't get Host IP! Nem sikerült a gép IP megállapítása No interfaces found! Nem talátam hálózati eszközt! Can't get interface IP! Nem sikerült a hálózati eszköz IP megállaptása! Chat Say Chat mondja Host IP: Gép IP: Interface IP: Hál. Eszk. IP: Latest release... Legfrissebb verzió... Can't get your ip Nem lehet az IP-det megállapítani Hub Lists Hub Lista Public Chat ME Nick Közös chat ME nicknév Valknut Valknut You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! A Valknutnak beállított port <1024! Aktív módban így csak rootként futtathatod a Valknutot! Compressed list size (HE3/BZ/XML): Tömörített listaméret Edit url URL szerkesztés Auto Responses Automata válaszok Filelist browser Fájllista böngésző Icons Ikonok Menus Menük Commands Parancsok You changed the client mode! Please restart Valknut! Megváltoztattad a kliens módot. Kérlek indítsd újra a Valknutot! Error getting IP Hiba az IP megszerzésekor Operator Nick Operátor Nicknév Yes Igen No Nem Case sensitive Esetérzékeny Case insensitive Nem esetérzékeny Overwrite? Felülírás? Replace existing key/cert? Cseréled a létező kulcsot/tanusítványt? Could not create folder for key Nem sikerült mappát létrehozni a kulcsnak Could not create Létrehozás sikertelen Could not create folder for cert Nem sikerült mappát létrehozni a tanusítványnak Could not start openssl 1 Sikertelen az openssl 1 indítása Make sure the openssl program is in your PATH. Biztosítsd hogy az openssl program benne legyen a PATH-ban Error occurred while running openssl 1 Hiba történt az openssl 1 futásakor Could not start openssl 2 Nem sikerült elindítani az openssl 2-t Error occurred while running openssl 2 Hiba történt az openssl 2 futásakor Select plugin folder Válassz plugin mappát Delete menu command? Törlöd a menü-parancsot? Delete " Törlés " Get Internet IP IP cím lekérdezése Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Kliens DCShellCommandRunner Command produced no visible output. A parancs nem eredményezett megjeleníthető kimenetet. Process exited with status A folyamat kilépett státusz Process was killed or crashed. A folyamat le lett állítva vagy összeomlott. Process still running after 2 minutes, killing process... A folyamat 2 perc után is fut, folyamat leállítása DCTransferView Wait Várakozás Idle Tétlen Run Fut Transfer Átvitel Error Hiba Unknown Ismeretlen Pause Szünet Hub offline Hub offline User offline Felhasználó offline User busy Felhasználó foglalt Send error Küldési hiba Change Transfer-Rate Átviteli sebesség megváltoztatása Please enter a Transfer-Rate [B/s] (0=off) Kérlek add meg az átviteli sebességet (B/s) (0= ki) Change File-Priority Fájl prioritás megváltoztatása Please enter a priority Kérlek add meg a prioritást Try Connect Próbálj csatlakozni User and Hub not found in the queue ! Felhasználó és a hub nem található a sorban! Nick: Nicknév: Hub: Hub: Remove Transfer Átvitel törlése You are sure ? Biztos vagy benne? Remove Eltávolítás Cancel Mégsem My My Browse Share List Megosztás böngészése Share list not available Megosztás lista nem áll rendelkezésre None Egyik sem File Fájl %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory Könyvtár DCTranslator Translator Fordító Choose a language Válassz nyelvet Chinese Simplified egyszerüsített kínai to nak English Angol Chinese Traditional Hagyományos kínai Dutch Holland French Francia German Német Greek Görög Italian Olasz Japanese Japán Korean Koreai Portuguese Portugál Russian Orosz Spanish Spanyol Detect language Nyelv meghatározása Arabic Arab Bulgarian Bolgár Chinese Kínai Croatian Horvát Czech Cseh Danish Dán Finnish Finn Hindi Hindi Norwegian Norvég Polish Lengyel Romanian Román Swedish Svéd Translator Settings Fordító beállításai Choose a provider Válassz szolgáltatót Settings for Yahoo Babelfish Yahoo Babelfish beállításai Choose the languages Válassz nyelvet Settings for Google Translate Google Translate beállításai Input language beviteli nyelv Output language Kimeneti nyelv OK OK Cancel Mégsem Unknown translation provider Ismeretlen fordítás szolgáltató The translation could not be found in the HTML received. A fordítás nem található a fogadott HTML kódban. This likely means that Ez általában azt jelenti hogy changed their system and this feature no longer works. megváltoztatták a rendszerüket és ez a funkció így nem működik. DCUpdateManager Download failed Letöltés sikertelen Update finished Frissítés kész Download content Tartalom letöltése Download content failed Tartalom letöltése sikertelen Download update.xml update.xml letöltése Download update.xml failed update.xml letöltése sikertelen Update available for Frissítés elérhető update(s) available frissítések elérhető(k) Update available but no bz2 support for Frissítés elérhető, de nincs bz2 támogatás hozzá DCUserCommandEditor User Command Editor Egyéni parancs szerkesztő Name and command must not be empty. A név és a parancs mező nem lehet üres. Separator Elválasztó DCUsersList Permanent slot Állandó slot Ignore Mellőzés Grant permanent slot Állandó slot biztosítása Remove permanent slot Állandó slot eltávolítása Ignore chat messages Show chat messages PublicHubsModel Name Név Server Kiszolgáló Description Leírás Users Felhasználók Country Ország Shared Megosztva Minimum share Extra Extra QObject Download Letöltés Download To Letöltés ide Download As Letöltés mint Browse User Files Felhasználó fájljainak böngészése Private Chat Privát chat Kick Kick Force Move Átirányítás Update User Felhasználó frissítése Connect Csatlakozás Disconnect Szétkapcsolva Reload Userlist Felhasználólista újbóli letöltése Connect To Hub Csatlakozás hubhoz Add Hozzáadás Add Bookmark Felvétel a kedvencek közé Edit Szerkesztés Edit Bookmark Kedvenc hubok szerkesztése Remove Eltávolítás Close Transfer Átvitel bezárása Info Info Try Connect Csatlakozás próba Remove from Queue Törlés a sorból Remove Transfer from Queue and Disk Átvitel törlése a sorból és a lemezről Save Queue Sor mentése Update Server Kiszolgáló frissítése Update all Server Minden kiszolgáló frissítése Change Transfer-Rate Átviteli sebesség megváltoztatása Copy row to Clipboard Sor másolása a vágólapra Copy column to Clipboard Oszlop másolása a vágólapra File Info Fájl info Connect To All Hubs Csatlakozás az összes hubhoz Search for clones Azonos fájlok keresése Remove complete from Queue Befejezettek törlése a sorból Load Betöltés Save Mentés Add this extra source Forrás hozzáadása Edit transfer Átvitel szerkesztése Edit file priority Fájl prioritás szerkesztése Translate Fordítás Translator Fordító Disable group Csoport letiltása Group by File Fájl szerinti csoportosítás Group by Size Méret szerinti csoportosítás Group by Nick Nicknév szerinti csoportosítás Group by free Slots Szabad slot szerinti csoportosítás Group by Hub Hub szerinti csoportosítás Group by Path Elérési út szerinti csoportosítás Group by Host Gép szerinti csoportosítás Copy Másolás Clear Törlés Select all Mindent kiválaszt Close Bezárás Group Csoport Hide Elrejtés Refresh Filelist Fájllista frissítése Pause Queue Sor szüneteltetése Resume Queue Sor folytatása Insert Smiley Smiley beillesztése Add Friend Barát hozzáadása Czech Cseh Danish Dán Dutch Holland Finnish Finn German Német Hungarian Magyar Icelandic Izlandi Norwegian Norvég Polish Lengyel Romanian Román Spanish Spanyol Swedish Svéd Copy Link Link másolása Text Encoding Szövegkódolás Request secure chat Biztonságos chat kérése Close secure chat Biztonságos chat bezárása Input Bevitel Output Kimenet Profile editor Profil szerkesztő Reset Visszaállítás Dock Dokkolás Undock Elengedés Exit Kilépés Custom Egyéni Latvian Lett Russian Orosz Slovak Szlovák Check client version Kliens verzió ellenőrzése Add Permanent Állandó hozzáadás Group by Hash Index szerinti csoportosítás Upload Slot Feltöltési slot Bosnian Bosnyák English Angol French Francia Greek Görög Italian Olasz Repair File Fájl kijavítása Repair BIN sectors BIN szektorok javítása Brazilian Brazil (portugál) Search by TTH TTH szerinti keresés Copy TTH to clipboard TTH másolása a vágólapra Look up TTH at Bitzi.com TTH keresése a bitzi.com-on Search for clones by TTH Azonos fájlok keresése TTH szerint Copy magnet link Magnetlink másolása User: Felhasználó: Get user IP Felhasználó IP megszerzése Command produced no visible output. A parancs nem eredményezett megjeleníthető kimenetet. Process exited with status A folyamat kilépett státusz Process was killed or crashed. A folyamat le lett állítva vagy összeomlott. Failed to start shell command. Sikertelen a shell parancs indítása User Commands Egyéni parancsok Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (válassz egy létező letöltést amihez hozzáadhatom) File download Fájl letöltés A same file is already in the queue! Ugyanez a fájl már a sorban van! Start a multi-download Többszálas letöltés indítása Cancel Mégsem File is already in the queue but not mark as a multi-download! Fájl már a sorban van de nincs megjelölve mint többszálas letöltés! File is already in the queue with a different size! A fájl(név) már a sorban van másik mérettel! File already downloaded! A fájl már letöltve! Enter byte range (m-n) Írd be a bájttartományt (m-n) Repair BIN Sectors BIN szektorok javítása Enter sector range (m[-n]) Írd be a szektortartományt (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! A fájl már létezik! Resume Folytatás Overwrite Felülírás File already exists in your finished downloads folder A fájl már létezik a befejezett letöltések mappában It will be overwritten when the download finishes Felülírás a letöltés végén lesz Download manager returned unknown value: Not connected to required hub! Nem vagy csatlakozva a szükséges hubhoz! Group by total Slots Download Folder Letöltési mappa Zoom in Zoom out Group by IP SearchSpyModel Text Szöveg Count Mennyiség Time Idő UserListModel Nick Comment Megjegyzés Tag Tag Speed Sebesség Email Share Megosztás IP IP Lock/PK Lock/PK Supports Támogatás valknut-0.4.9/valknut/ts/valknut.sr.ts0000664000076400007640000126731411144234504016153 0ustar ejsejs DCBrowseFileTree Select destination Изаберите одредиште Select a filename Изаберите назив датотеке <wrong length> <неисправна величина> Choose a filename to save under Изаберите назив датотеке под којим ће се сачувати DCChat Private Chat: Приватан разговор: Chat Cleared. Разговор је очишћен. Translation: Превод: Translation failed: Превод није успео: Current mode: Тренутни режим: active активан passive пасиван Refresh share in progress. Освежиавање дељених датотека је у току. Switch timestamp Промени ознаку времена Send advertisment. Пошаљи рекламу. Wrong parameter for '/join' Погрешан параметар за наредбу „/join“ Join to: Приступи на: Wrong parameter for '/msg' Погрешан параметар за наредбу „/msg“ Away message disabled. Порука за одсуство је онемогућена. Away message set. Порука за одсуство је постављена. Line is encrypted. Линија је криптована. Line is not encrypted. Линија није криптована. Help: Помоћ: /refresh - refresh share /refresh - освежава дељене датотеке /ts - switch time display in chat on/off /ts - укључује/искључује приказ ознаке времена у разговору Choose a filename to save under Изаберите датотеку у коју ће се чувати /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;адреса&gt; - прекидање везе са тренутно повезаним хабом и повезивање на други хаб /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;надимак&gt; &lt;порука&gt; - слање приватне поруке /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;порука&gt; - постављање аутоматског одговора за приватне поруке; ако је порука празна, онемогућава га Select download folder Изабериде директоријум за преузимање Select file for Изаберите датотеку за Photo received. Фотографија је преузета. Only allowed in private chat. Дозвољено само у приватном разговору. Photo encode error. Декодирање фотографије није успело. Refresh share already in progress. Освежавање дељених датотека је већ у току. Chat: Разговор: Message not sent! Порука није послата! /clear - clears the chat window /clear - брише прозор разговора /mode - shows the current mode /mode - приказује тренутни режим /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;порука&gt; - прекида везу са собом уз слање опционе поруке /ls &lt;nick&gt; - get share list from user /ls &lt;надимак&gt; - добавља списак дељених датотека од корисника /grant &lt;nick&gt; - grant user a slot /grant &lt;надимак&gt; - додељује слот за корисника /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;nick&gt; - додељује перманентни слот за корисника /friend &lt;nick&gt; - add user to friend list /friend &lt;надимак&gt; - додаје корисника на списак пријатеља /fav - add hub to bookmark list /fav - додаје хаб на списак омиљених /now - send current time to the chat /now - шаље тренутно време у разговор Get info failed. Грешка при добављању информације. Info: Инфо: Nick: Надимак: Operator: Оператер: yes да no не Comment: Коментар: Speed: Брзина: EMail: Е-пошта: Shared: Дељено: Away: Одсутан: on укључено off искључено Version: Верзија: Unknown Непознато Tag: Таг: day дан days дана hour сат hours сати minute минут minutes минута Download sharelist from Преузимање списка дељених датотека од No nick, try /dchelp Надимак не постоји, консултујте /dchelp Permanent slot added for Додељен је перманентни слот за Slot added for Додељен је слот за Added to friend list Додат у списак пријатеља Add bookmark hub Додај омиљени хаб Private message sent. Послата је приватна порука. Private message not sent! Приватна порука није послата! Photo not found. Фотографија не постоји. Can't read your photo. Не могу да прочитам Вашу фотографију. Photo not sent. Фотографија није послата. Photo sent. Фотографија је послата. /raw - send raw message /raw - слање сирове поруке The user is using an old version or not using Valknut Корисник користи застарелу верзију или не користи Валкнут /adv - send an advertisment to the hub /adv - шаље рекламу на хаб Alt + S алт + С Alt + Enter алт + ентер Ctrl + Enter ктрл + ентер Enter ентер Joins: Приступа: Parts: Одлази: /rebuild - remove no longer present files from hash database /rebuild - уклања непостојеће датотеке из хеш базе /slots &lt;N&gt; - set number of upload slots to N /slots &lt;Н&gt; - поставља број слотова за слање на Н /uptime [show] - show valknut uptime [to other users] /uptime [show] - приказује трајање сесије Валкнута [осталим корисницима] /info &lt;nick&gt; - show user info /info &lt;надимак&gt; - приказује информације о кориснику /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /sh &lt;наредба&gt; &lt;аргументи...&gt; - шаље у разговор резултат наредбе из шкољке /disablesorting - disable sorting of the user list /disablesorting - онемогућава поредак у списку корисника /enablesorting - enable sorting of the user list /enablesorting - омогућава поредак у списку корисника /ignore &lt;nick&gt; - do not show main chat lines from the user /ignore &lt;надимак&gt; - не приказује поруке од корисника у јавном разговору Valknut uptime Сесија Валкнута Rebuild share in progress. Освежавање базе дељених датотека је у току. Refresh/rebuild already in progress. Освежавање/поновна изградња је у току. Invalid number of upload slots specified. Одредили сте неисправан број слотова. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Преузмите Валкнут са http://wxdcgui.sourceforge.net Он може свашта нешто! Ради на свакој платформи коју можете да замислите, пере феш и кува кафу. Command produced no visible output. Наредба је вратила невидљиви излаз. Process was killed or crashed. Процес је прекинут или се срушио. Failed to start shell command. Неуспешно покретање наредбе шкољке. Disabled user list sorting. Поредак у листи корисника је онемогућен. Enabled user list sorting. Поредак у листи корисника је омогућен. /ratio [show] - show share ratio [to other users] /ratio [show] - приказује однос дељења [осталим корисницима] ratio: overall: однос: просечно: uploads послато downloads преузето this session: ова сесија: Unknown command, try /dchelp Непозната наредба, консултујте /dchelp /unignore &lt;nick&gt; - show main chat lines from the user again /unignore &lt;надимак&gt; - поново приказује поруке од корисника у главном разговору /newlog - start a new logfile /newlog - започињање нове датотеке дневника No command entered. Нисте унели наредбу. New log timestamp: Временска ознака новог дневника: Warning: log timestamp not enabled. Упозорење: ознака времена дневника није омогућена. Error was: Дошло је до грешке: Shell command event not found in list Догађај наредбе шкољке није пронађен у списку Process still running after Процес траје и након seconds, killing process... секуди, убијам процес... Process still running after 2 minutes, killing process... Процес је активан већ 2 минута, убијам процес... Bytes бајтова Setting upload slots to Постави број слотова за слање на on. укључен. off. искључен. Process exited with status Процес је окончан са стањем is not in ignore list није у списку игнорисаних /ignore &lt;nick&gt; - do not show chat messages from the user /ignore &lt;надимак&gt; - не приказуј поруке у разговору од корисника /unignore &lt;nick&gt; - show chat messages from the user again /unignore &lt;надимак&gt; - поново приказуј поруке у разговору од корисника Ignoring chat from Игноришем разговор од Showing chat from Приказујем разговор од Sent away message: Послата је порука за одсуство: Supports encryption: Подржана енкрипција: Upload slots: Слотова за слање: Wrong parameter for '/raw' Погрешан параметар за „/raw“ /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Истекло је време за повезивање Error: ' Грешка: „ Redirect to Преусмеравање на Password - Лозинка - Please enter your password Унесите Вашу лозинку Wrong password Погрешна лозинка OP Force Move ОП форсирано преусмеравање Please enter host Унесите адресу одредишта Please enter a message Унесите поруку Redirect disabled Преусмеравање је онемогућено OP Kick ОП избацивање Please enter a reason Унесите разлог User: Корисник: Connected Повезан Disconnected Ван мреже Use password from profile Користи лозинку из профила Password from profile is empty Лозинка у профилу није постављена No profile found for this hub За овај хаб не постоји профил users корисника Hubname change: Назив хаба је промењен: User rejoin the hub. Корисник је поново ушао на хаб. User left the hub. Корисник је напустио хаб. Hub Хаб We left the hub. Напустили смо хаб. Joins: Приступа: Parts: Напушта: Chat List Списак разговора Line is encrypted. Линија је криптована. Line is not encrypted. Линија није криптована. Your Nick is already in use. Ваш надимак је већ у употреби. Disconnect. Ван везе. Connect. Повезан. Close chat tab Затвори језичак разговора Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) Извињавам се, нећете моћи да преузимате од мене, јер смо и ја и Ви у пасивном режиму. (ово је аутоматска порука) Downloads filelist Списак датотека за преузимање User command for Корисничка наредба за OK У реду Cancel Обустави Flood Detected Откривено је флудовање Cannot display user with empty nick. Приказ корисника са празним надимком није могућ. Cannot display operator with empty nick. Приказ оператера са празним надимком није могућ. Hub gave us our IP: Хаб нам је дао наш ИП: Enable Омогући Use IP address from the hub Користи ИП адресу са хаба in Options -> Connection -> Mode to use this value. у Опцијама -> Повезивање -> Режим за употребу ове вредности Columns Колоне Any све DCDebug Send error Пријављивање грешке Could not send the data. Error '%1'. Није могуће послати податке. Грешка „%1“. Send Пошаљи Thanks for your help. Хвала Вам за помоћ. Save error Сачувај грешку Can't open file '%1' for writing. Није могуће отворити датотеку „%1“ за упис. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About О програму OK У реду Authors Аутори License Лиценца Sponsor Спонзор Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Portions (C) 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Валкнут - клијент за размену датотека директним повезивањем (C) 2001-2004 Mathias Küster Делимично (C) 2006-2008 Edward Sheldrake Веб страна: http://wxdcgui.sourceforge.net Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Преузимање датотеке Download mode? Multi Return Single Esc Download all files in this mode DCDialogChat &Send &Пошаљи DCDialogChat DCDialogChat DCDialogClient User Корисник Nick Надимак Comment Коментар Speed Брзина EMail Е-пошта 0 0 Share Дељено Chat List Списак разговора ... ... Tag Таг User(s) Корисник(а) DCDialogClient DCDialogClient IP ИП Lock/PK Закључано/ПК Supports Подржано DCDialogConnectionManager Connection Повезивање DCDialogDebug DCGUI Crash Handler DCGUI Crash Handler Send bugreport. Пријављивање грешке. Exit. Изађи. Save to file. Сачувај у датотеку. Comment Коментар &Save &Сачувај S&end &Пошаљи E&xit &Излаз Valknut Crash Handler Валкнутов хватач грешака DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Send Пошаљи Receive Both Оба OK У реду Cancel Обустави malloc info DCDialogEditServer Settings Подешавања Name Назив Host Хост Description Опис Password Лозинка DCDialogEditServer DCDialogEditServer Profile Профил Auto Connect Аутоматско повезивање Nick Надимак Secure Socket Layer Слој безбедног сокета &Cancel &Обустави &OK &У реду &Profile &Профил Tag Таг EMail Е-пошта Extended hub count Проширени број хабова Suppress nicks Игнориши надимке A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регуларни изрази надимака за које неће излазити искачући прозор. На пример „Hub|Bot|Spammer“ препознаће Hub или Bot или Spammer. Remote encoding Удаљени кôдни распоред Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Уређивање путање за дељење Alias Алијас Path Путања &Cancel &Обустави &OK &У реду DCDialogEditTransfer Edit Transfer Уређивање преноса Settings Подешавања Nick Надимак Hub name Назив хаба Hub address Адреса хаба Known hubs Познати хабови &Cancel &Обустави &OK &У реду DCDialogFileBrowser Name Назив Size Величина Open Отвори Save Сачувај Type Врста TTH ТТХ Form1 Form1 Folder Директоријум Exact Size Тачна величина Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Информације о датотеци File Датотека Size Величина Hash Хеш Sources Извори DCDialogForceMove OP Force Move ОП форсирано преусмеравање Please enter a host Please enter a message Унесите поруку OK У реду Cancel Обустави DCDialogGetURL Get URL Добављање адресе &Cancel &Обустави DCDialogHubFilter Hub Filter Филтер хабова Filter Филтер Min. User Мин. корисник Contains Садржи Name Назив Server Сервер Description Опис Settings Подешавања &OK &У реду &Cancel &Обустави DCDialogHubListManager Hub List Списак хабова Public Јавни Name Назив Server Сервер Description Опис double click to hide the toolbar дупли клик за сакривање траке алата edit filter уреди филтер delete filter уклони филтер Filter Филтер update public hublist освежи списак јавних хабова add filter додај филтер reload public hublist поново учитај списак јавних хабова double click to show the toolbar дупли клик за приказивање траке алата Bookmarks Омиљени connect повежи Users Корисника Country Држава Shared Дељено Minimum Share Минимално за дељење Extra Посебно Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Горе Change the order of the bookmarks. Промена поретка омиљених. Move down Доле Enable sorting Омогући сортирање Enable sorting of the bookmarks. Омогућава сортирање омиљених. Save Сачувај Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Чува омиљене у датотеку за поставке. Омиљени се чувају аутоматски и ово у свакодневном раду није потребно. Add bookmark. Add Додај Edit bookmark. Edit Уреди Remove bookmark. Remove Уклони DCDialogHubProfile Profile Профил Settings Подешавања Password Лозинка Auto Connect Ауто повезивање Hub profile editor Уређивач профила хаба Nick Надимак &OK &У реду &Cancel &Обустави Tag Таг EMail Е-пошта Description Опис Secure Socket Layer Слој безбедног сокета Delete Уклони Extended hub count Проширени број хабова Suppress nicks Игнориши надимке A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регуларни изрази надимака за које се неће отварати прозор разговора. На пример „Hub|Bot|Спемер“ ће игнорисати Hub или Bot или Спемер. Remote encoding Удаљени кôдни распоред Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Резултати Nick Надимак File Датотека Size Величина Hub Хаб Path Путања Log Дневник Search Тражи Results: Резултати: Connected Hubs Повезани хабови Bookmark Hubs Омиљени хабови Filter Филтер Type Врста At Least најмање At Most највише Any све Compressed архиве Document документи Executable програми Picture слике Video видео Folder директоријуми Hub Search Претрага хаба Host Хост Free Slots Слободни слотови Max Free Slots (0=off) Највише слободних слотова (0 за искључено) Exact тачно B B 0/0 0/0 0 0 Search in path+file name only Тражи само у путањи и називу датотеке Hubs Хабови Hub Options Опције хаба Connected Hub Повезани хабови Refresh Освежи Public Hubs Јавни хабови Expert Напредно User Корисник Reset Ресетуј Clients Клијената Live filters Филтери уживо Include: Укључи: Exclude: Искључи: Apply Примени Mode Режим Add Додај Start Покрени Start the search. Започни претрагу. Add a search to the searchqueue Додај претрагу у ред за претраживање Filtered Hubs Филтрирани хабови Multi Search Вишеструка претрага Enable Tag Омогући таг Audio звук Hash Хеш TTHash ТТХеш KiB KiB MiB MiB GiB GiB Total Slots Укупно слотова Purge Очисти Clear the search history Чишћење историје претраживања Count Број Ready Спреман Overall search status Просечан резултат претраге Clear search string and set search size, size mode and file type to default TTH ТТХ Any size Све величине At least Најмање At most Највише Maximum results Максимално резултата Unlimited Неограничено IP ИП DCDialogMagnet Magnet Link Details Link TTH ТТХ Name Назив Size Величина Exact size Action Акција Start search Add to download queue Do nothing Do the same action next time without asking OK У реду Cancel Обустави DCDialogMessage DCDialogMessage DCDialogMessage Do not show this again. Не приказуј поново ово питање. DCDialogOptions Options Опције Identify Лично Information Подаци E-Mail: Е-пошта: Nick: Надимак: Description: Опис: Speed: Брзина: Anti-Spam (email at home dot com) Заштита од нежељене поште (е-пошта на серверу тачка рс) Transfer Пренос Share Folders Дељени директоријуми Download Folder Директоријум за преузимање Upload Options Опције слања Connection Веза Settings Подешавања Mode Режим Active Mode Активан режим Passive Mode Пасиван режим Passive Mode Settings Подешавања пасивног режима Active Mode Settings Подешавања активног режима TCP Listen Port: ТЦП порт: Hub Search Претраживање хаба UDP Listen Port: УДП порт: Test Проба GUI Сучеље GUI Options Опције сучеља Store local Сачувај локално Theme Тема Language File Језичка датотека Reconnect Counter (0=off) Бројач поновног повезивања (0 за искључено) Reconnect Timeout (sec.) Период поновног повезивања (секунди) Allow Force Move Дозволи форсирано преусмеравање Source Url's Изворне адресе URL Адреса Max. upload slots (0=off) Максимално слотова за слање (0 за искључено) Application Font Фонт сучеља Maximal upload connections. Максималан број веза за слање. Transfer Request Timings Време за захтев преноса Resend Timeout (sec.) Период поновног слања (секунди) Response Timeout (sec.) Период одзива (секунди) Hub Connections Везе са хабовима Sound Звук External Player Спољашни плејер Chat Разговор Units Јединице Auto Аутоматски Byte Бајт General Опште Disable Sound Искључи звук Play a sound when receiving a message Репродукуј звук када примим поруку Play a sound when disconnecting from a hub Репродукуј звук када напустим хаб Play a sound when receiving first message Репродукуј звук када примим прву поруку Play a sound when sending a message Репродукуј звук када пошаљем поруку Play a sound when connecting to a hub Репродукуј звук када приступим хабу Disable sound when away Искључи звук када сам одсутан Player Плејер Sound Files Звучне датотеке Log Дневник Timestamp Ознака времена Private Chat Приватан разговор Hub Chat Јавни разговор Download Queue Ред за преузимање Save Queue in minutes (0=off) Сачувај ред на сваких Н минута (0 за искључено) Move Finished Files to this Folder (empty = disabled) Премести завршене датотеке у овај директоријум (оставите празно за игнорисање) No multi hub search ! No incoming connections ! Без претраге на више хабова. Без долазних веза! Send warn message to remote user on active mode request Пошаљи упозорење удаљеном кориснику при захтеву активног режима Show Status Messages Прикажи поруку о статусу Open Private Chat Window Отвори прозор приватног разговора Transfer Options Опције преноса Transfer View Преглед преноса Chunk Percent Постотак дела File Percent Постотак датотеке Chunk Size Величина дела File Size Величина датотеке Search Nick: Надимак претраживања: Chat options Опције разговора upload слање download преузимање Add Description Tag (<DCGUI ....>) Додај опсини таг (<DCGUI ....>) Folder Директоријум New Column Нова колона Away Message: Порука за одсуство: Your line speed. Брзина Ваше везе. Your nick. Ваш надимак. The nick for hub searches. Надимак за претраживања хаба. Your EMail. Адреса Ваше е-поште. Enable/Disable the Anti-spam option. Омогући/искључи опцију заштите од спема. A little description. Кратак опис. Add a tag to the description that show some information from you. Додај таг у опис који приказује податке о Вама. The tcp listen port for incoming connections. ТЦП порт за праћење долазних веза. The udp listen port for incoming search results. УДП порт за праћење приспелих резултата претраживања. Select a interface. Изаберите интерфејс. Get the ip from the host. Узми ИП од хоста. The time between a reconnect. Пауза између поновног повезивања. How often we reconnect to a hub. Колико често ћемо се поновно повезивати на хаб. Rebuild your sharelist. Освежи списак дељених датотека. Add a folder to your sharelist. Додај директоријум у списак дељених датотека. Remove a folder from your sharelist. Уклони директоријум из списка дељених датотека. Show some information about your sharelist. Прикажи информације о списку дељених датотека. Browse your own share list. Преглед властитог списка дељених датотека. Time to wait for a transfer response from the remote user. Период за који ће се чекати на одговор преноса од удаљениг корисника. Time to wait before a new transfer request is send to the remote user. Период за који ће се чекати пре упућивања новог захтева за пренос удаљеном кориснику. Test the new theme. Испробај нову тему. Open the chat window on incoming messages. Отвори прозор за разговор при приспећу поруке. Enable emoticons in chat Омогући емотиконе у разговору Data Folder Директоријум података Ctrl + Enter ктрл + ентер Enter ентер Alt + Enter алт + ентер Alt + S алт + С Messages Поруке Query on exit Упит при излазу Logfile Датотека дневника Logfile enabled Омогући дневник Security Безбедност Flood Protection Заштита од понављања истих порука Kick Message Порука за избацивање Private Address Space (rfc1918) Опсег приватног простора (RFC1918) Ignore private address space connections Игнориши повезивање из опсега приватног простора Query Упит Client Клијент User-List right alignment Десно поравнање списка корисника Don't Display Messages after X retry (0=off) Не приказуј поруке након Н понављања (0 за искључено) Kick the user for flooding (only for Operators) Избаци корисника због понављања (само за оператере) Show send button Прикажи дугме за слање Dynamic upload rate Динамички однос слања Send message with Шаљи поруке са Browser Прегледач Use tab for every chat window Користи језичак за прозор сваког разговора Client options Опције клијента Show client windows minimized Прикажи минимизовани прозор клијента Max. uploads to user (0=off) Максималан број слања кориснику (0 за искључено) Color Боје Transfer Cert/Key Сертификат и кључ за пренос User quitting hub Корисник напушта хаб If user quits hub, stop following transfers Када корисник напусти хаб, прекини следећи пренос Upload Слање Both Оба Download Преузимање None Ништа Auto-Search Ауто претраживање Auto-Search for new sources Аутоматко тражење нових извора Download Rate Single Однос преузимања (један извор) Download Rate Multi Однос преузимања (више извора) Remaining Time Single Преостало време (један извор) Remaining Time Multi Преостало време (више извора) Max. rate KB/s (0=off) Максималан однос KB/s (0 за искључено) Path Путања Alias Алијас Edit a folder from the sharelist. Уреди директоријум из списка дељених датотека. Open File Dialog. Дијалог за отварање датотеке. Add a URL to the list. Додавање адресе у списак. Remove a URL from the list. Уклањање адресе из списка. Enable logging Омогућено бележење Append date to log file name Допуни датумом назив датотеке за дневник Nick name filter Филтер надимака Enable nick name filter Омогући филтрирање надимака Disable logging for public chat Искључи записивање јавног разговора Append hub name to log file name Додај назив хаба у назив датотеке дневника Append hub host to log file name Додај хост хаба у назив датотеке дневника &Save &Сачувај &Cancel &Обустави Forward private to public chat Проследи приватни на јавни разговор Away Prefix: Префикс за одсуство: Select Language. Изаберите језик. Recreate every hour (0=off) Поново направи сваких Н сати (0 за искључено) Check and recreate sharelist on startup Провери и поново направи списак дељених датотека по покретању програма seconds секунди Away after Одсутан након Auto Away Mode Аутоматски режим за одсуство Ignore messages to offline users Занемари поруке за неповезане кориснике Ignore messages from offline users Занемари поруке од неповезаних корисника Show joins and parts Прикажи уласке и изласке Columns Колоне Comment Коментар Speed Брзина EMail Е-пошта Share Дељено Photo Фото Query on File Delete Стави у ред при уклањању датотеке Tag Таг IP, Hostname or Interface ИП, хост или интерфејс IP or Hostname ИП или хост Network Interface Мрежни интерфејс Listen on IP Надгледај ИП IP ИП Lock PK Закључан ПК Supports Подржано Get Internet IP Препознај спољни ИП Get Interface Препознај интерфејс Update every hour (0=off) Освежи на сваких Н сати (0 за искључено) Hub Lists Спискови Disable hash list Не прави хеш списак GiB GiB KiB KiB MiB MiB Edit hublist url. Уреди адресу хабова. Extended hub count in tag (H:3/2/1) Прошири број хабова у тагу (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Ако је омогућено, број хабова ће бити приказан као H:Обичан/Регистрован/ОП, у супротном H:Збирно. Do not share dot files and folders Немој да делиш датотеке и директоријуме „тачке“ If checked, files and folders starting with "." will not be shared. Ако је укључено, датотеке и директоријуми пији назив почиње са „.“ неће бити дељени. Small file size (bytes) Мале датотеке (бајтова) The maximum size of files for which extra upload slots will be granted. Максимална величина датотеке за које је обавезан слот за слање. Compressed transfers Компримовани преноси Enable compressed transfers Омогућава компримоване преносе Time between auto-searches (seconds) Пауза између аутоматских претраживања (секунди) Use IP address from the hub Користи ИП адресу са хаба Enable compressed hub to client communication (EXPERIMENTAL) Омогући компримовану комуникацију хаба и клијента (ЕКСПЕРИМЕНТАЛНО) Joins and parts only for friends Уласци и изласци само за пријатеље Do not open chat windows for Не отварај прозор разговора за A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Регуларни изрази за надимке за које неће изаћи прозор за разговор, нпр. „Хаб|Бот|Спамер“ препознаће надимке Хаб или Бот или Спамер. Commands Наредбе Custom chat commands Корисничке наредбе разговора Name Назив Command Наредба Right click to add or remove commands, left click on text to edit it. Десни клик за додавање или уклањање наредбе, леви клик на текст за уређивање. Menus Мени Custom menu commands Мени са корисничким наредбама Context Контекст Double clicking a user Двоклик на корисника Opens private chat Отвара приватан разговор Downloads filelist Преузима списак датотека Icons Иконе Icon themes Теме икона Emoticons Емотикони Application Icons Иконе програма Userlist icons Иконе списка корисника To ensure all icons are changed, please restart valknut. Рестартујте Валкнут како би били сигурни да су учитане све иконе. Filelist browser Прегледач Filelist browser settings Подешавања прегледача списка датотека Also show folders in the right pane Прикажи директоријуме у десном окну Sort folders in the right pane on top Поређај директоријуме у десном окну на врху Show folders sizes in the left pane Прикажи величину директоријума у левом окну Listen to the sound file. Преслушавање звучне датотеке. Play a sound when your nick is mentioned in public chat Звучно обавештење када се помене Ваш надимак у јавном разговору Open File Dialog Дијалог за отварање датотеке Log completed downloads Бележи завршена преузимања у дневник Log completed uploads Бележи завршена слања у дневник Log all transfer details Бележи податке о свим преносима Generate Направи Create a new key and certificate pair. Прављење новог пара кључа и сертификата. Auto Responses Ауто одговори Auto Response Settings Подешавања аутоматских одговора Enable auto responder for public chat Омогући аутоматско одговарање у јавном разговору Enable auto responder for private messages Омогући звучни одговор за приватне разговоре Minimum seconds between auto responses Најкраћа пауза између два аутоматска одговора Ignore nicks Игнориши надимке A QT regular expression of nicks to not auto respond to, case insensitive. Qt регуларни изрази надимака за које не важи ауто одговор (величина није битна). Trigger Окидач Case Sensitive Величина је битна Response Одговор Remote Encoding Удаљени кôдни распоред For a list of valid encodings, run "iconv -l" За списак валидних кôдних распореда, покрените „iconv -l“ Advanced Напредно Read file buffer size (bytes) Величина бафера за читање датотеке (бајтова) If you experience slow uploads in a LAN, try increasing this value. Ако Вам је слање у локалној мрежи споро, покушајте да повећате ову вредност. %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Context is sum of: 1 = Hub, 2 = User %[mynick]= %[myNI]= Ваш надимак %[mytag]= %[myTAG]= Ваш таг %[mydescription]= %[myDE]= Ваш опис %[myemail]= %[myEM]= Ваша е-пошта %[myshare]= %[mySS]= Тачна величина Ваших дељених датотека %[myshareshort] = %[mySSshort]= Величина Ваших дељених датотека (са јединицама) %[myip]= %[myI4]= Ваша ИП адреса %[nick]= %[userNI]= Корисников надимак %[tag]= %[userTAG]= Корисников таг %[description]= %[userDE]= Корисников опис %[email]= %[userEM]= Корисникова е-пошта %[share]= %[userSS]= Тачна величина корисникових дељених датотека %[shareshort]= %[userSSshort] = Величина корисникових дељених датотека (са јединицама) %[ip]= %[userI4]= Корисникова ИП адреса (ако је позната) %[line:reason]= Текст упитног дијалога који пита за „разлог“ Форматирање датума и времена, за више консултујте strftime(3). %c= Подразумевани датум и време %d= Дан у месецу као број (01 до 31) %m= Месец у години као број (01 до 12) %y= Година са четири цифре %H= Сат у 24-часовном формату (00 до 23) %M= Минут као број (00 до 59) %S= Секунда као број (00 до 60) Контекст је збир: 1 = хаб, 2 = корисник Adjust hub details in search results Прилагоди детаље о хабу у резултатима претраге Only used if searching a single connected hub. Користи се само за претраживање на једном хабу. Send unknown /commands as chat Шаљи непознате /наредбе као разговор If true, undefined chat commands will be sent to the hub. Ако је омогућено, непознате наредбе разговора ће бити послате на хаб. Plugin folder Директоријум додатака You must close and re-open each hub to use the new setting. Select "None" to disable text encoding conversions. Морате да затворите и поново отворите сваки хаб за примену нових подешавања. Изаберите „None“ за онемогућавање кодирања текста за разговоре. Tab nick completion options Оције довршавања надимка табулатором Tab completion matches by Довршавање табулатором се подудара са Containing anywhere Налази се било где Starting with Почиње са Ignore all tags (text inside []) Игнориши све тагове (текст унутар []) Maximum paragraphs (0=off) Максимално пасуса (0 за искључено) Hide popups of more lines than (0=off) Не приказуј упозорење за више од Н линија (0 за искључено) Unknown chat commands Непозната наредба разговора Exceptions Изузеци A comma separated list of commands. Списак наредби раздвојених запетом. Shell command (/sh) options Опције наредби шкољке (/sh) Use threads to wait for shell commands to finish Користи нити за чекање извршења наредбе шкољке Seconds to wait for shell commands when not using threads Колико се секунди чека наредба шкољке када се нити не користе Open folders in the right pane by double clicking them Отварање директоријума у десном окну двокликом на њих Include a menu item for removing public hubs Омогући ставку менија за уклањање јавних хабова Enabling this option will slow closing valknut Омогућавање ове опције ће успорити затварање валкнута Other Друго Disable features for old clients Искључивање могућности за старе клијенте Disable support for the ADCGet command when hash list is disabled Искључи подршку за ADCGet наредбу када је искључен хеш списак Disable support for XML filelists when hash list is disabled Искључи подршку за XML спискове датотека када је искључен хеш списак This only applies to outgoing client connections. Hub and incoming connections are not checked. Ово се примењује само на одлазна повезивања. Хаб и долазна повезивања се не проверавају. Allow all connections Дозволи сва повезивања Allow private address space connections only Дозволи само повезивање у оквиру приватних адреса Menu command settings Подешавања наредби менија Add commands received from the hub to the menus Додај у мени наредбе преузете од хаба Use a submenu for custom menu commands Користи подмени за кориснички одређене наредбе Add a new menu command to the list. Додај нову наредбу менија у списак. Edit an existing menu command. Уреди постојећу наредбу менија. Remove an existing menu command from the list. Уклони из списка постојећу наредбу менија. Move up Горе Change the order of the commands. Промени редослед наредбе. Move down Доле %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) %[mynick]= %[myNI]= Ваш надимак %[mytag]= %[myTAG]= Ваш таг %[mydescription]= %[myDE]= Ваш опис %[myemail]= %[myEM]= Ваша е-пошта %[myshare]= %[mySS]= Тачна величина Ваших дељених датотека %[myshareshort] = %[mySSshort]= Величина Ваших дељених датотека (са јединицама) %[myip]= %[myI4]= Ваша ИП адреса %[nick]= %[userNI]= Корисников надимак %[tag]= %[userTAG]= Корисников таг %[description]= %[userDE]= Корисников опис %[email]= %[userEM]= Корисникова е-пошта %[share]= %[userSS]= Тачна величина корисникових дељених датотека %[shareshort]= %[userSSshort] = Величина корисникових дељених датотека (са јединицама) %[ip]= %[userI4]= Корисникова ИП адреса (ако је позната) %[line:reason]= Текст упитног дијалога који пита за „разлог“ Форматирање датума и времена, за више консултујте strftime(3). %c= Подразумевани датум и време %d= Дан у месецу као број (01 до 31) %m= Месец у години као број (01 до 12) %y= Година са четири цифре %H= Сат у 24-часовном формату (00 до 23) %M= Минут као број (00 до 59) %S= Секунда као број (00 до 60) Background color Боја позадине Enable Омогући Transfers (TCP) Преноси (ТЦП) Standard Listen Port: Стандардни долазни порт: The tcp listen port for standard incoming connections. ТЦП порт за прихватање долазних веза. Encrypted Listen Port: Криптовани долазни порт: The tcp listen port for incoming encrypted connections. ТЦП порт за прихватање криптованих долазних веза. Custom Browser Кориснички прегледач Uncheck to use your default desktop web browser. Онемогућите да би се користио подразумевани веб прегледач окружења. Reverse chat colors Реверзне боје разговора Certificate Сертификат Private Key Приватни кључ Enable SSL transfers with old valknut versions Омогући ССЛ преносе са старијим верзијама Валкнута Old versions could not encrypt the initial handshaking commands which includes your nick. Старије верзије не могу да криптују коменде почетног руковања које садрже Ваш надимак. Recreate every hour Поново направи сваког сата Disabled Онемогућено Save Queue in minutes Сачувај ред на сваких Н минута Maximum upload slots Максимално слотова за салње Unlimited Неограничено Maximum rate KiB/s Максималан однос KiB/s Maximum uploads to user Максималан број слања по кориснику Searching Претраживање Search delay (seconds) Пауза између претраживања (секунде) Reconnect Counter Бројач поновних повезивања Never reconnect Не повезуј се поново Never hide popups Не сакривај искачуће прозоре Maximum paragraphs Максимално пасуса Hide popups of more lines than Сакриј искачуће прозоре са више линија од Update every hour Ажурирање сваких Н сати Don't Display Messages after X retry Не приказуј поруке након Н покушаја Open new hub windows Отвори прозор за нови хаб Minimized Минимизован Normal Уобичајено Maximized Максимизован Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogSplash Valknut Валкнут DCDialogSpy Spy Надзор Clear Очисти Text Текст Count Број Statistic Статистика Active: Активно: 0 0 Reject: Одбијено: Results: Резултат: Search Error: Грешка у претрази: Result Error: Грешка у резултатима: Passive: Пасивно: Time Време Spy Enabled Надгледање је омогућено Ignore TTH searches Игнориши ТТХ претраге DCDialogTransfer Transfer List Списак преноса Nick Надимак State Стање Transfer Пренос Wait Послови Log Дневник Slots Слотови Hub Хаб Files Датотеке Local File / Nick Моја датотека/надимак Size / Hub Величина/хаб Remote File Удаљена датотека Local File Моја датотека File Name Назив датотеке Hub/File Хаб/датотека IP/Size Адреса/величина TTH ТТХ DCDialogTranslatorSettings Translator Settings Подешавања преводиоца Choose a provider Изаберите преводиоца Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Подешавања за Yahoo Babelfish Choose the languages Изаберите језике Settings for Google Translate Подешавања за Google Translate Input language Улазни језик Output language Излазни језик OK У реду Cancel Обустави DCDialogUpdateManager Update Manager Менаџер надоградње Update Надогради Check update Провери да ли постоји нова верзија DCDialogUserCommandEditor User Command Editor Уређивач корисничке наредбе Command Type Врста наредбе Separator Раздвајач Raw Сирово Chat Разговор PM Приватан разговор Context Контекст Hub Menu Мени хаба User Menu Мени корисника Search Menu Мени претраживања Filelist Menu Мени списка датотека Parameters Параметри Name Назив Command Наредба Hub IP / DNS (empty = All, 'op' = where operator) ИП хаба / ДНС (празно за Све, „op“ за оператера) To (empty for selected user) За (празо за изабраног корисника) Send once per nick Пошаљи једном по надимку Text sent to hub Текст за слање на хаб OK У реду Cancel Обустави DCDialogUserCommandLines User Command Lines For On Use for all nicks OK У реду Cancel Обустави DCDialogUsersList User Корисник Users List Списак корисника Photo Фотографија Slot Слот Ignore Игнориши DCEditServer Please enter a hubname. Унесите назив хаба. Please enter a hubhost. Унесите хост хаба. DCFileBrowser Items ставки Files датотеке Total укупно Directories директоријуми Root Directory Корени директоријум <wrong length> <погрешна величина> file датотека Select destination Изаберите одредиште Select a filename Изаберите назив датотеке open filelist dialog отвара дијалог са списком датотека Choose a file Изаберите датотеку save file dialog дијалог за чување датотеке Choose a filename to save under Изаберите назив под којим ће датотека бити сачувана Filebrowser Прегледач датотека Folder Директоријум Download contents? Преузимање садржаја? Download the contents of " Преузми садржај из „ Failed to load filelist Неуспешно учитавање списка Unable to load Учитавање није могуће OK У реду Modern XML Filelists Савремеан ИксМЛ списак датотека Old BZ2 Text Filelists Стари БЗип2 текстуални списак датотека Very old HE3 Text Filelists Застарели ХЕ3 текстуални списак датотека Old Valknut Filelists Стари Валкнут списак датотека All files Све датотеке Cannot save file Није могуће сачувати датотеку No data available to save. Нема података за чување. Error saving file Грешка при писању датотеке Failed to save Неуспело чување Cannot open list now Сада није могуће отворити списак Filelist browser is busy Прегледач списка датотека је заузет Error opening own filelist Грешка при отварању личног списка датотека Failed to open your own filelist Неуспело отварање личног списка датотека Error opening filelist Грешка при отварању списка датотека File Датотека does not exist. не постоји. is likely not a valid filelist изгледа као неисправан списак датотека Processing filelist... Обрађујем списак датотека... Cannot download Не могу да преузмем Could not find the path for Не могу да пронађем путању за None Нема Directory Директоријум Modern XML Filelists (uncompressed) Нове XML листе датотека (некомпресоване) Search by TTH Тражи ТТХ Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Преузимање датотеке Resume Настави Overwrite Препиши Cancel Обустави Not connected to required hub! Нисте повезани на потребан хаб! Connect Повежи Start a multi-download Покрени преузимање из више извора File is already in the queue with a different size! Датотека се већ налази у реду за преузимање са различитом величином! File already downloaded! Датотека је већ преузета! File already exists! Датотека већ постоји! You can start a multi-download! Можете започети преузимање из више извора! Do you want to download all files in this mode? Да ли желите да све датотеке преузимате у овом режиму? Repair File Поправи датотеку File already exists in your finished downloads folder Датотека већ постоји у директоријуму преузетих датотека It will be overwritten when the download finishes Биће преписана када се преузимање заврши DCFileTransferInfo File Transfer Info Информације о датотеци DCGuiApp Options Опције &Options &Опције Ctrl+O ктрл + О Open option dialog Отвори дијалог са опцијама Exit Излаз Ctrl+Q ктрл + И Quits the application Затвори програм Toolbar Трака алата Tool&bar Трака &алата Enables/disables the toolbar Прикажи/сакриј траку алата Statusbar Статусна трака &Statusbar &Статусна трака Enables/disables the statusbar Прикажи/сакриј статусну траку Cascade Каскадно &Cascade &Каскадно Cascades all windows Наслажи све прозоре каскадно Ctrl+S ктрл + К Transfer List Списак преноса &Transfer List Списак &преноса Ctrl+T ктрл + П Show Transfer List Прикажи списак преноса Hub Search Претраживање хаба Show Hub Search Прикажи претраживање хаба About О програму &About... &О програму... What's &This Шта је о&во &File &Датотека &View &Поглед &Action &Акције &Window Про&зор &Help По&моћ Ready. Спреман. Quit... Затвори... Open options dialog... Отварам дијалог опција... Exiting application... Затварам програм... Toggle toolbar... Мењам статус видљивости траке алата... Toggle statusbar... Мењам статус видљивости статусне траке... Show/hide transfer list window ... Приказујем/сакривам прозор са списком преноса... Show/hide hub search window ... Приказујем/сакривам прозор за претраживање хаба... Normal Уобичајено &Normal &Уобичајено Ctrl+N ктрл + У Away Одсутан &Away &Одсутан Ctrl+A ктрл + О Hub List Списак хабова Show Hub List Прикажи списак хабова Show/hide hub list window ... Приказујем/сакривам прозор са списком хабова... H&ub List Списак &хабова Ctrl+U ктрл + Х Minimize Минимизуј &Minimize &Минимизуј Action Акција Quick Options Брзе опције Quick options Брзе опције F12 F12 Download mode: Ask Режим преузимања: питај Download mode: Single Режим преузимања: један извор Download mode: Multi Режим преузимања: више извора Spy Надзор Show Spy Прикажи надзор Show/hide spy window ... Приказујем/сакривам прозор за надзор... Users Корисници Ctrl+F ктрл + К Do you really want to quit? Да ли заиста желите да затоврите програм? Exiting application... aborted Затварање програма... обустављено Show/hide users window ... Приказујем/сакривам прозор корисника... Away &Mode Режим &одсуства Tile &Horizontally Наслажи &хоризонтално Reload Plugins Поново учитај додатке &Reload Plugins Поново &учитај додатке Dock Сакриј &Dock &Сакриј Dock the application Сакриј програм у системску касету Hub &Search &Претраживање хаба S&py &Шпијунирање Ctrl+P ктрл + Ш Dock/Undock application... Сакривање/приказивање програма... Recreate share Поново направи списак дељених датотека Refresh share in progress. Освежавање списка дељених датотека је у току. Exit Quits the application. Излазак Излазак из програма. Toolbar Enables/disables the toolbar. Трака алата Приказује/сакрива траку алата. Statusbar Enables/disables the statusbar. Статусна трака Приказује/сакрива статустну траку. Dock Dock the application. Сакривање Спушта програм у системску касету. Cascade Cascades all windows. Каскадно Слаже прозоре каскадно. Tiles all windows horizontally. Наслажи све прозоре водоравно. Tile Horizontally Tiles all windows horizontally. Водоравно слагање Слаже све прозоре водоравно. Minimize all windows. Минимизуј све прозоре. Minimize Minimize all windows. Минимизовање Минимизује све прозоре. Close chat windows. Затвори прозор разговора. Close all chat windows. Затвори све прозоре разговора. Close chat windows Close all chat windows. Затварање прозора разговора Затвара све прозоре разговора. Close disconnected hubs. Затвори неповезане хабове. Close all disconnected hub windows. Затвори прозоре свих неповезаних хабова. Close disconnected hubs Close all disconnected hub windows. Затварање неповезаних хабова Затвара прозоре свих неповезаних хабова. Show Hub List. Прикажи списак хабова. Show Transfer List. Прикажи списак преноса. Show Hub Search. Прикажи претраживање хаба. Show users: search tab and friends tab. Прикажи кориснике: језичци претраге и пријатеља. Set away mode. Постави режим за одсуство. About the application. Подаци о програму. About About the application. О програму Информације о програму. Support Подршка &Support... &Подршка... Refresh share finished. Освежавање списка дељених датотека и завршено. Refresh share already in progress. Освежавање списка дељених датотека је већ у току. RX/TX Traffic. ПР/ПО пренос. Available disc space. Доступан простор на диску. Tile Vertically Наслажи усправно &Tile Vertically &Наслажи усправно Tiles all windows vertically Наслажи све прозоре усправно Tile Vertically Tiles all windows vertically. Наслажи усправно Слагање свих прозора усправно. Filelist browser Прегледач списка датотека Open filelist browser Отвори прегледач списка датотека Latest release Провери да ли ј еобјављено новије издање програма &Latest release... &Најновије издање... Latest release Show latest release. Најновије издање Приказује најновије издање. Can't get release info from server Не могу да добавим информације о издању са сервера latest release is: најновије издање је: Latest release... Најновије издање... Show update manager Прикажи управника надоградње Show/hide update manager window ... Приказујем/сакривам прозор управника надоградње... Warning license file not found ! Упозорење: датотека лиценце није пронађена! Tabbar Трака језичака Enables/disables the tabbar Прикажи/сакриј траку језичака Tabbar Enables/disables the tabbar. Трака језичака Приказује/сакрива траку језичака. Show Search Spy. Прикажи надзор претраживања. Tab Bar Трака језичака Toggle tabbar... Промени приказ траке језичака... Connect to Valknut hub Повезивање на валкнут хаб Support Connect to the Valknut hub. Подршка Повезивање на валкнут хаб. Filelist browser local Прегледач локалног списка датотека Open local filelist browser Отвори прегледач локалног списка датотека Manual Упутство &Manual... &Упутство... Online User Manual. Упутство за кориснике на мрежи. Manual Online User Manual. Упутство Упутство за кориснике на мрежи. Dock Application Сакривање програма The system tray icon must be enabled to dock the application. Икона у системској касети мора да буде омогућена како би се програм сакрио. Update Manager Управник надоградње The update manager is disabled. Управник надоградње није омогућен. Ratio: Overall: Однос: просечно: (Up: (послато: , Down: , преузето: ) This session: ) Ова сесија: Valknut Валкнут Connected to Повезан на hubs хабова Using dclib Користи dclib Dock/Undock Усидри/увећај Remove tray icon Уклони иконицу из системске касете Open options dialog Отвори дијалог за опције Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Освежи дељене датотеке Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut Валкнут Using QT(R) Користи QT(R) System Tray Icon Икона у системској касети Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Јавни Bookmarks Омиљени Add Bookmark Додавање омиљеног хаба Error Грешка Please enter a hubname. Унесите назив хаба. Please enter a hubhost. Унесите хост хаба. Edit Bookmark Уређивање омиљеног хаба Remove bookmarks Уклањање омиљеног хаба You are sure ? Да ли сте сигурни? Remove Уклони Cancel Обустави Remove public hub Уклони јавни хаб Add hub filter Додај филтер хабова A filter with that name already exists Филтер са тим називом већ постоји Edit hub filter Уреди филтер хабова Delete hub filter Уклони филтер хабова Filter not found Филтер не постоји Error removing hub " DCHubProfile Save profile Чување профила Do you want to save your changes? Да ли желите да сачувате измене? Save Сачувај Cancel Обустави Are you sure? Да ли сте сигурни? Delete profile for Уклањање профила за DCHubSearch No hubs found. Хабови нису пронађени. Hub Search Error Грешка тражења хабова No connected hubs found. Нема повезаних хабова. Select download folder Изаберите директоријум за преузимање Please select a connected hub. Изаберите повезани хаб. Select file for Изаберите датотеку за USER КОРИСНИК FILE ДАТОТЕКА Not connected to required hub! Нисте повезани на потребан хаб! Connect Повежи Cancel Обустави save file dialog дијалог за чување датотеке Choose a filename to save under Изаберите назив под којим ће бити сачувано open file dialog дијалог за отварање датотеке Choose a file to open Изаберите датотеку за отварање Start Тражи Stop Заустави Filelist download Списак преузимања External search is already running! Спољно претраживање је у току! Please add a search! Додајте претраживање! Multi Search only work in active mode! Вишеструко претраживање функционише само у активном режиму! Folder Директоријум Unknown Непознато None Нема Directory Директоријум File Датотека Search ended with %1 results Претрага је окончана са %1 резултата %1 results were filtered Филтрирано је %1 резултата on укључено Ready Спреман Other search... Друга претага... Auto search... Аутоматска претрага... Search... Претрага... Auto search finished Аутоматска претрага је окончана %1 - %2 Results %1 - %2 резултата %1 items %1 ставки Another search is already running! У току је друга претрага! Search for "%1" on %2 Тражим „%1“ на %2 all connected hubs свим повезаним хабовима %1 filtered public hubs %1 филтрираних јавних хабова all public hubs свим јавним хабовима all bookmark hubs свим омиљеним хабовима %1 - Searching %1 - Тражим Hub Search Претраживање хабова Another search is running. Stop other search? У току је друга претрага. Да прекинем другу претрагу? Folder download Add search Invalid TTH DCOptions Select download folder Изаберите директоријум за преузимање Select share folder Изаберите директоријум за дељење Select language file Изаберите језичку датотеку HubList URL Адреса списка хабова Please enter a url Унесите адресу Share list not available Списак за дељење није доступан bytes бајтова Total shared: Укупно дељено: Share List Info Информације о списку дељених Select sound file Изаберите звучну датотеку Select sound player Изаберите плејер au au wav wav All Files Све датотеке Select download finished folder Изаберите диркторијум за завршена преузимања Log Дневник Sound Звук General Опште GUI Сучеље Chat Разговор Transfer Пренос Connection Веза Mode Режим Settings Подешавања Identify Лично Folder Директоријум Interface List Списак интерфејса Please select an interface Изаберите интерфејс Select data folder Изаберите директоријум података User Корисник Select log file Изаберите датотеку дневника Security Безбедност Select a browser Изаберите прегледач Select transfer cert Изаберите сертификат за пренос Select transfer key Изаберите кључ за пренос Add new nick name filter Додај нови филтер кадимка Please enter a nick Унесите надимак Chat Timestamp Временска ознака у разговору Chat Local Nick Мој надимак у разговору Chat Local Text Мој текст у разговору Chat Remote Nick Туђи надимак у разговору Chat Remote Text Туђи текст у разговору Chat Status Nick Надимак за стање у разговору Chat Status Text Текст за стање у разговору Public Chat Timestamp Временска ознака у јавном разговору Public Chat Local Nick Мој надимак у јавном разговору Public Chat Local Text Мој текст у јавном разговору Public Chat Remote Nick Туђи надимак у јавном разговору Public Chat Remote Text Туђи текст у јавном разговору Public Chat Status Nick Надимак за стање у јавном разговору Public Chat Status Text Текст за стање у јавном разговору Public Private Chat Nick Надимак приватног у јавном разговору Public Private Chat Text Текст приватног у јавном разговору Select a 64x64 Photo Изаберите фотографију 64×64 You must set a Download Folder! Морате да изаберете директоријум за преузимање! Download Finished Folder and Download Folder must be different! Директоријум за завршено преузимање и преузимање у току морају да се разликују! You must enter a valid 'Fake Host'! Морате унети исправан „лажни хост“! You must enter a valid interface! МОрате унети исправан интерфејс! You must enter a valid nick! Морате унети исправан надимак! You must enter a valid search nick! Морате унети исправан надимак за претрагу! Can't save Image! Не могу да сачувам слику! Can't load Image! Не могу да учитам слику! Can't get Host IP! Не могу да препознам ИП хоста! No interfaces found! Интерфејс није пронађен! Can't get interface IP! Не могу да препознам ИП интерфејса! Chat Say Надзор разговора Host IP: ИП хоста: Interface IP: ИП интерфејса: Public Chat ME Nick МОЈ надимак у јавном разговору Hub Lists Списак хабова Valknut Валкнут You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Подесили сте Валкнут да слуша на порту мањем од 1024! У активном режиму можете да покренете Валкнут само као администратор! Compressed list size (HE3/BZ/XML): Валичина компримованог списка (HE3/BZ/XML): Edit url Уреди адресу Auto Responses Ауто одговор Filelist browser Прегледач Icons Иконе Menus Мени Commands Наредбе You changed the client mode! Please restart Valknut! Променили сте режим клијента! Рестартујте Валкнут! Error getting IP Грешка при откривању ИП Operator Nick Надимак оператера Yes Да No Не Case sensitive Величина је битна Case insensitive Величина није битна Overwrite? Преписати? Replace existing key/cert? Замена постојећег кључа/серфитиката? Could not create folder for key Не могу да направим директоријум за кључ Could not create Није могуће направити Could not create folder for cert Не могу да направим директоријум за сертификат Could not start openssl 1 Не могу да покренем openssl 1 Make sure the openssl program is in your PATH. Проверите да ли је openssl програм у Вашој путањи (PATH). Error occurred while running openssl 1 Настала је грешка при покретању openssl 1 Could not start openssl 2 Не могу да покренем openssl 2 Error occurred while running openssl 2 Настала је грешка при покретању openssl 2 Select plugin folder Изаберите директоријум додатака Other Друго Delete menu command? Уклањање наредбе менија? Delete " Уклони " Get Internet IP Препознај спољни ИП Unexpected response from Неочекивани одговор од does not look valid не изгледа као валидан Standard and encrypted port must be different. Стандардни и криптовани порт се морају разликовати. Unlimited Неограничено Uploads Downloads Shares Remote Encoding Удаљени кôдни распоред These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Клијент DCShellCommandRunner Command produced no visible output. Наредба је вратила невидљиви излаз. Process exited with status Процес је окончан са стањем Process was killed or crashed. Process still running after 2 minutes, killing process... Процес је активан већ 2 минута, убијам процес... DCTransferView Wait Сачекајте Idle На чекању Run У току Transfer Пренос Error Грешка Unknown Непознато Pause Пауза Hub offline Хаб је искључен User offline Корисник није повезан User busy Корисник је заузет Send error Пошаљи грешку Change Transfer-Rate Промени однос преноса Please enter a Transfer-Rate [B/s] (0=off) Change File-Priority Промени приоритет Please enter a priority Унесите приоритет Try Connect Покушај повезивање User and Hub not found in the queue ! Корисник и хаб нису пронађени у реду! Nick: Надимак: Hub: Хаб: Remove Transfer Уклони пренос You are sure ? Да ли сте сигурни? Remove Уклони Cancel Обустави My Моје None Ништа File Датотека %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory Директоријум DCTranslator Translator Преводилац Chinese Simplified Кинески поједностављени to у English енглески Chinese Traditional традиционални кинески Dutch холаднски French француски German немачки Greek грчки Italian италијански Japanese јапански Korean корејански Portuguese португалски Russian руски Spanish шпански Detect language Откриј језик Arabic арапски Bulgarian бугарски Chinese кинески Croatian хрватски Czech чешки Danish дански Finnish фински Hindi хунду Norwegian норвешки Polish пољски Romanian романски Swedish шведски Translator Settings Подешавања преводиоца Choose a provider Изаберите преводиоца Settings for Yahoo Babelfish Подешавања за Yahoo Babelfish Choose the languages Изаберите језике Settings for Google Translate Подешавања за Google Translate Input language Улазни језик Output language Излазни језик OK У реду Cancel Обустави Unknown translation provider Непознати преводилац The translation could not be found in the HTML received. Превод није пронађен у примљеном HTML-у. This likely means that Ово значи да changed their system and this feature no longer works. је промењен систем и ова могућност више не функционише. DCUpdateManager Download failed Неуспело преузимање Update finished Надоградња је завршена Download content Преузимање садржаја Download content failed Преузимање садржаја није успело Download update.xml Преузимам update.xml Download update.xml failed Преузимање update.xml није успело Update available for Доступна је надоградња за update(s) available надоградња(е) доступно Update available but no bz2 support for Доступна је надоградња али нема bz2 подршке за DCUserCommandEditor User Command Editor Уређивач корисничке наредбе Name and command must not be empty. Назив и наредба не могу бити празни. Separator Раздвајач DCUsersList Permanent slot Перманентни слот Ignore Игнориши Grant permanent slot Додели перманентни слот Remove permanent slot Уклони перманентни слот Ignore chat messages Игнориши поруке разговора Show chat messages Прикажи поруке разговора PublicHubsModel Name Назив Server Сервер Description Опис Users Country Држава Shared Дељено Minimum share Extra Посебно QObject Download Преузми Download To Преузми у Download As Преузми као Browse User Files Прегледај корисникове датотеке Private Chat Приватан разговор Kick Избаци Force Move Форсирај преусмеравање Update User Освежи корисника Connect Повежи се Disconnect Ван мреже Reload Userlist Освежи списак корисника Connect To Hub Повежи се на хаб Add Додај Add Bookmark Додај омиљено Edit Уреди Edit Bookmark Уреди омиљено Remove Уклони Close Transfer Прекини пренос Info Информације Try Connect Покушај повезивање Remove from Queue Уклони из реда Remove Transfer from Queue and Disk Уклони пренос из реда и са диска Save Queue Сачувај ред Update Server Освежи сервер Update all Server Освежи све сервере Change Transfer-Rate Промени однос преноса Copy row to Clipboard Умножи ред у клипборд Copy column to Clipboard Умножи колону у клипборд File Info Информације о датотеци Connect To All Hubs Повежи се на све хабове Search for clones Тражи клонове Remove complete from Queue Уклони завршене из реда Load Учитај Save Сачувај Add this extra source Додај овај екстра извор Edit transfer Уреди пренос Edit file priority Уреди приоритед датотеке Translate Преведи Translator Преводилац Disable group Онемогући груписање Group by File Групиши по датотекама Group by Size Групиши по величини Group by Nick Групиши по надимку Group by free Slots Групиши по слободним слотовима Group by Hub Групиши по хабовима Group by Path Групиши по путањама Group by Host Групиши по хосту Copy Умножи Clear Обриши Select all Изабери све Close Затвори Group Групиши Hide Сакриј Refresh Filelist Освежи списак датотека Pause Queue Паузирај пренос Resume Queue Започни пренос Insert Smiley Уметни смешак Add Friend Додај пријатеља Czech чешки Danish дански Dutch холандски Finnish фински German немачки Hungarian мађарски Icelandic исландски Norwegian норвешки Polish пољски Romanian румунски Spanish шпански Swedish шведски Copy Link Умножи везу Request secure chat Захтевај безбедан разговор Close secure chat Затвори безбедан разговор Profile editor Уређивач профила Reset Ресетуј Dock Угради Undock Издвој Exit Излаз Custom Произвољно Latvian литвански Russian руски Slovak словачки Check client version Провери верзију клијента Add Permanent Додај перманентно Group by Hash Групиши по хешу Upload Slot Слотова за слање Bosnian бошњачки English енглески French француски Greek грчки Italian италијански Repair File Поправи датотеку Repair BIN sectors Поправи БИН делове Brazilian бразилски Search by TTH Тражи ТТХ Copy TTH to clipboard Умножи ТТХ у клипборд Look up TTH at Bitzi.com Потражи ТТХ на Bitzi.com Search for clones by TTH Тражи клонове по ТТХ Copy magnet link Умножи магнетну везу User: Корисник: Get user IP Добави корисникову ИП Command produced no visible output. Наредба је вратила невидљиви излаз. Process exited with status Процес је окончан са стањем Process was killed or crashed. Процес је прекинут или срушен. Failed to start shell command. Неуспело покретање наредбе шкољке. User Commands Корисничке наредбе Enter ентер Serbian (Cyrillic) српски (ћирилица) Serbian (Latin) српски (латиница) (choose an existing download to add to) (изаберите постојећи пренос коме ће се додати) File download Преузимање датотеке A same file is already in the queue! Иста датотека је већ у реду за преузимање! Start a multi-download Покрени преузимање из више извора Cancel Обустави File is already in the queue but not mark as a multi-download! Датотека се већ налази у реду за преузимање али није означена за пренос из више извора! File is already in the queue with a different size! Датотека се већ налази у реду за преузимање са различитом величином! File already downloaded! Датотека је већ преузета! Enter byte range (m-n) Унесите распон бајтова (а-б) Repair BIN Sectors Поправка БИН сектора Enter sector range (m[-n]) Унесите распон сектора (а[-б]) Invalid start position. Неисправна почетна позиција. Invalid end position. Неисправна крајња позиција. Invalid number of sectors. Неисправан број сектора. Invalid range entered. Унет је неисправан распон. File already exists! Датотека већ постоји! Resume Настави Overwrite Препиши File already exists in your finished downloads folder Датотека већ постоји у директоријуму преузетих датотека It will be overwritten when the download finishes Биће преписана када се преузимање заврши Download manager returned unknown value: Управник преузимања је вратио непознату вредност: Not connected to required hub! Нисте повезани на потребан хаб! Group by total Slots Групиши по укупном броју слотова Download Folder Директоријум за преузимање Zoom in Zoom out Group by IP SearchSpyModel Text Текст Count Број Time Време UserListModel Nick Надимак Comment Коментар Tag Таг Speed Брзина Email Share Дељено IP ИП Lock/PK Закључано/ПК Supports Подржано valknut-0.4.9/valknut/ts/valknut.pt_br.ts0000664000076400007640000131703611144234504016632 0ustar ejsejs DCBrowseFileTree Select destination Selecionar destino Select a filename Selecionar arquivo <wrong length> <tamanho inválido> Choose a filename to save under Escolha um nome para salvar o arquivo DCChat Message not send ! Mensagem não enviada! Private Chat: Chat privado: Chat Cleared. Chat limpo. Send Clipboard Enviar Clipboard Translation: Tradução: Translation failed: Tradução falhou: Current mode: Modo atual: active ativo passive passivo Refresh share in progress. Atualizando arquivos compartilhados. Refresh share allready in progress. Atualização já iniciada. Switch timestamp Mudar marcação de tempo Send advertisment. Enviar propaganda. Wrong parameter for '/join' Parâmetro incorreto para '/join' Join to: Entrar em: Wrong parameter for '/msg' Parâmetro incorreto para '/msg' Private message send. Mensagem privada enviada. Private message not send ! Mensagem privada não enviada! Away message disabled. Mensagem de ausência desabilitada. Away message set. Mensagem de ausência ligada. Line is encrypted. A linha está encriptada. Line is not encrypted. A linha não está encriptada. Help: Ajuda: /clear - clear the chat window /clear - limpa a janela de chat /mode - show current mode /mode - mostra o modo atual /refresh - refresh share /refresh - atualiza arquivos compartilhados /ts - switch time display in chat on/off /ts - liga/desliga a marcação de tempo no chat /dcgui - send an advertisment to the hub /dcgui - envia uma propaganda ao hub Choose a filename to save under Escolha um nome para salvar o arquivo /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;endereço&gt; - desconecta do hub atual e se conecta a um outro hub /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nick&gt; &lt;mensagem&gt; - envia uma mensagem privada /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;mensagem&gt; - grava uma resposta automática para mensagens privadas. Se a mensagem estiver vazia, então desabilita o recurso Select download folder Escolha o diretório de downloads Select file for Selecione arquivo para Text Encoding Codificação do Texto Choose a codec Escolha um codec Photo received. Foto recebida. Only allowed in private chat. Somente permitido em chat privado. Client use wrong version. O cliente usa uma versão errada. No Photo found. Nenhuma foto encontrada. Can't read photo. Impossível ler a foto. Photo encode error. Erro na codificação da foto. Photo not send. Foto não enviada. Photo send. Foto enviada. Download DCGUI-QT from http://dc.ketelhot.de It does everything, and makes you coffee Baixe o DCGUI-QT em http://dc.ketelhot.de Ele faz de tudo, e você faz o café Refresh share already in progress. Atualização da lista já iniciada. Chat: Chat: Message not sent! Mensagem não enviada! /clear - clears the chat window /clear - limpa a janela de chat /mode - shows the current mode /mode - mostra o modo atual /dcgui or /adv - send an advertisment to the hub /dcgui ou /adv - envia uma propaganda ao hub /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;message&gt; - desconecta-se do canal com uma mensagem opcional /ls &lt;nick&gt; - get share list from user /ls &lt;nick&gt; - pega lista de arquivos do usuário /grant &lt;nick&gt; - grant user a slot /grant &lt;nick&gt; - dar um slot ao usuário /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;nick&gt; - dar um slot permanente ao usuário /friend &lt;nick&gt; - add user to friend list /friend &lt;nick&gt; - adiciona o usuário à lista de amigos /fav - add hub to bookmark list /fav - adiciona o hub à lista de favoritos /info - show user info /info - mostra suas informações /now - send current time to the chat /now - mostra a hora atual no chat /raw - send raw message /raw - envia mensagem sem alteração (raw) Get info failed. Falha ao pegar informações Info: Info: Nick: Nick: Operator: Operador yes sim no não Comment: Comentário: Speed: Velocidadee: EMail: Shared: Compartilhado: Away: Ausente: on ligado off desligado Version: Versão Unknown Desconhecido Tag: day dia days dias hour hora hours horas minute minuto minutes minutos Download sharelist from Baixar lista de arquivos de No nick, try /dchelp Nenhum nick, tente /dchelp Permanent slot added for Slot permanente adicionado para Slot added for Slot adicionado para Added to friend list Adicionado à lista de amigos Add bookmark hub Adicionar bookmark do hub Private message sent. Mensagem privada enviada. Private message not sent! Mensagem privada não enviada! Photo not found. Foto não encontrada. Can't read your photo. Não foi possível ler sua foto. Photo not sent. Foto não enviada. Photo sent. Foto enviada. /uptime - show valknut uptime /uptime - mostra há quanto tempo o programa está rodando The user is using an old version or not using Valknut O usuário está usando uma versão antiga ou não está usando o Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Entradas: Parts: Saídas: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Timeout da conexão. Error: ' Erro: ' Validate denide Validar denide Sorry, client work in passive mode Desculpe, o cliente trabalha em modo passivo Redirect to Redirecionado para Password - Senha - Please enter your password Por favor, digite sua senha Wrong password Senha incorreta You must enter a search word. Você deve colocar uma palavra. Search Error Erro na busca OP Force Move Mudança forçada pelo OP Please enter host Por favor, introduza um host Please enter a message Por favor, introduza uma mensagem Redirect disabled Redirecionamento desabilitado Private chat only in current hub ! Chat privado somente no hub atual! Select download folder Escolha o diretório de downloads Select file Escolha o arquivo OP Kick OP Kick Please enter a reason Introduza um motivo User: Usuário: Connected Conectado Disconnected Desconectado Chat Cleared. Chat limpo. Use password from profile Usar senha do perfil Password from profile is empty A senha do perfil está vazia No profile found for this hub Nenhum perfil encontrado para este hub Current mode: Modo atual: active ativo passive passivo Refresh share in progress. Atualizando arquivos compartilhados. Refresh share allready in progress. Atualização já iniciada. Switch timestamp Mudar marcação de tempo Send advertisment. Enviar propaganda. Wrong parameter for '/join' Parâmetro incorreto para '/join' Join to: Entrar em: Wrong parameter for '/msg' Parâmetro incorreto para '/msg' Private message send. Mensagem privada enviada. Private message not send ! Mensagem privada não enviada! Away message disabled. Mensagem de ausência desligada. Away message set. Mensagem de ausência ligada. users usuários Hubname change: Mudança no nome do hub: User rejoin the hub. O usuário reconectou ao hub. User left the hub. O usuário saiu do hub. Hub Hub Sorry, client works in passive mode Desculpe, o cliente trabalha em modo passivo We left the hub. Nós saímos do hub. Joins: Entradas: Parts: Saídas: Chat List Lista de chat Line is encrypted. A linha está escriptada. Line is not encrypted. A linha não está encriptada. Your Nick is already in use. Seu nick ja está em uso. Sorry, this client works in passive mode Desculpe, este cliente trabalha em modo passivo Disconnect. Desconectar. Connect. Conectar. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Cancelar Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Colunas Any Qualquer DCDebug Send error Erro no envio Could not send the data. Error '%1'. Não foi possível enviar dados. Erro '%1'. Send Enviar Thanks for your help. Obrigado pela sua ajuda Save error Erro ao salvar Can't open file '%1' for writing. Não foi possível abrir o arquivo '%1' para escrita. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About Sobre OK OK Authors Autores License Licensa Sponsor Apoio Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de Valknut - Um cliente de compartilhamento Direct Connect (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Baixar arquivo Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Navegador de arquivos File Arquivo Size Tamanho Files Arquivos Shared Compartilhado DCDialogChat Form1 Form1 Hide Ocultar Clear Limpar Send Clipboard Enviar Clipboard &Send &Enviar DCDialogChat DCDialogClient Form1 Form1 User Usuário Nick Nick Comment Comentário Speed Velocidade EMail EMail Bytes Bytes Chat Chat Hub Hub Spy Espião On/Off Ligado/Desligado Search Buscar File Arquivo Size Tamanho Slot Slot Path Caminho Results: Resultados: Filter Filtro At Least Pelo menos At Most No máximo KB KB MB MB Any Qualquer MP3 MP3 Compressed Comprimidos Document Documentos Executable Executável Picture Fotos Video Video Folder Diretório Type Tipo Results Resultados 0 0 Share Compartilhado Host Host GB GB Max Free Slots (0=off) Slots livres como máximo (0=desativado) Free Slots Slots livres Send Enviar Chat List Lista de chats DCDialogClient User(s) Usuário(s) ... Supports Suporte DCDialogConnectionManager Connection Conexão DCDialogDebug DCGUI Crash Handler Manipulador de Crashes do DCGUI Comment Comentário &Save &Salvar Save to file. Salvar para arquivo. S&end E&nviar Send bugreport. Enviar notificação de bug. E&xit S&air Exit. Sair. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Nenhuma Send Enviar Receive Recebir Both Ambas OK OK Cancel Cancelar malloc info DCDialogEditServer Form1 Form1 Settings Configuração Name Nome Host Host Description Descrição Cancel Cancelar Accept Aceitar Password Senha Autoconnect Autoconectar DCDialogEditServer &Cancel &Cancelar &Profile &Perfil Profile Perfil Nick EMail EMail Auto Connect Autoconectar Tag Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Editar caminho compartilhado Alias Alias Path Caminho &Cancel &Cancelar DCDialogEditTransfer Edit Transfer Editar Transferência Settings Configuração Nick Apelido Hub name Nome do Hub Hub address Direção do Hub Cancel Cancelar Accept Aceitar Known hubs Hubs conhecidos &Cancel &Cancelar DCDialogFileBrowser Form1 Form1 New Column Nova coluna Name Nome Size Tamanho File Type Tipo de arquivo Open Abrir Save Salvar Encoding: Codificação: Type Tipo TTH Folder Diretório Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Informação de transferência de arquivo File Arquivo Size Tamanho Done Feito Hash Sources Fontes DCDialogForceMove OP Force Move Mudança forçada pelo OP Please enter a host Please enter a message Por favor, introduza uma mensagem OK OK Cancel Cancelar DCDialogGetURL Get URL Obter URL Cancel Cancelar &Cancel &Cancelar DCDialogHubFilter Hub Filter Filtro do Hub Filter Filtro Min. User Min. Usuários Contains Contém Cancel Cancelar Save Salvar Name Nome Server Servidor Description Descrição Settings Configuração &Cancel &Cancelar DCDialogHubListManager Hub List Lista de Hubs Public Publico Name Nome Server Servidor Description Descrição User Usuário double click to hide the toolbar clique duplo para esconder a barra de ferramentas edit filter editar filtro delete filter apagar filtro Filter Filtro update public hublist atualizar lista de hubs públicos add filter adicionar filtro reload public hublist recarregar lista de hubs públicos double click to show the toolbar clique duplo para mostrar a barra de ferramentas Bookmarks Favoritos connect conectar Users Usuários Shared Compartilhado Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Salvar Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Adicionar Edit bookmark. Edit Editar Remove bookmark. Remove Remover DCDialogHubProfile Edit hub Profiles Editar perfis do Hub Profile Perfil Create Criar Delete Apagar Save Salvar Settings Configuração Password Senha OK OK Auto Connect Autoconectar Cancel Cancelar Hub profile editor Editor de perfis de Hubs &Cancel &Cancelar Nick Description Descrição EMail EMail Tag Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Resultados Nick Apelido (nick) File Arquivo Size Tamanho Slot Slot Hub Hub Path Caminho Log Log Search Buscar Stop Parar Results: Resultados: Connected Hubs Hubs conectados Bookmark Hubs Hubs Favoritos Filter Filtrar Type Tipo At Least Pelo menos At Most No máximo KB KB MB MB Any Qualquer MP3 MP3 Compressed Comprimidos Document Documentos Executable Executável Picture Fotos Video Vídeo Folder Diretório Hub Search Busca de Hub Host Host Threads Assuntos (Threads) GB GB Free Slots Slots livres Max Free Slots (0=off) Slots livres máx. (0=desativado) Exact Exato B B 0/0 0/0 0 0 Search in path+file name only Buscar em caminho+nome de arquivo somente Search History Histórico de busca History Histórico Hubs Hubs Hub Options Opções do Hub Connected Hub Hub conectado Refresh Atualizar Public Hubs Hubs públicos Expert Expert User Usuário Reset Reiniciar Clients Clientes Live filters Filtros vivos Include: Incluir: Exclude: Excluir: Apply Aplicar Mode Modo Add Adicionar User/File Usuário/Arquivo Search for a user or a file. Buscar um usuário ou arquivo. Start Iniciar Start the search. Iniciar a busca. Add a search to the searchqueue Adicionar uma busca à fila de buscas Filtered Hubs Hubs filtrados Multi Search Multi busca Enable Tag Ativar Tag Audio KiB MiB GiB Total Slots Purge Clear the search history Count Quantidade Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Nome Size Tamanho Exact size Action Ação Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Cancelar DCDialogMessage DCDialogMessage Do not show this again. Não mostrar novamente. DCDialogOptions Options Opções Identify Identificação Information Informação E-Mail: E-Mail: Nick: Apelido (nick): Description: Descrição: Speed: Velocidade: 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Satélite ISDN RDSI DSL ADSL Cable Cable LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Spam (email at servidor ponto com) Transfer Transferência Share Folders Diretórios compartilhados Info Informação Add Adicionar Remove Remover Download Folder Diretório de downloads Browse Navegar Upload Options Opções de upload Connection Conexão Settings Configurações Mode Modo Active Mode Modo Ativo Passive Mode Modo Passivo Passive Mode Settings Configuração do modo passivo Active Mode Settings Configuração do modo ativo TCP Listen Port: Porta TCP de escuta: 412 412 Hub Search Busca de hub UDP Listen Port: Porta UDP de escuta: Use ip from interface (ppp0,eth0) Usar ip da interface (ppp0,eth0) Test Testar Interface IP IP da interface Wrong IP IP incorreto GUI GUI GUI Options Opções de GUI Other Outro Other Options Outras opções Hublist Lista de hubs Store local Armazenameto local Save Salvar Cancel Cancelar Windows Janelas Theme Tema Language File Arquivo de idioma Reconnect Counter (0=off) Contador de reconexão (0=desativado) Reconnect Timeout (sec.) Timeout de reconexão (seg.) Allow Force Move Permitir mudança forçada Source Url's Url's fonte URL URL Max. upload slots (0=off) Máx. slots de upload (0=desativado) Application Font Fonte do programa Rebuild Reconstruir Maximal upload connections. Conexões máximas de upload. Transferrate for each slot. Taxa de transferência para cada slot. Transfer Request Timings Tempo de espera de transferência Resend Timeout (sec.) Tempo de espera para reenvio (seg.) Response Timeout (sec.) Tempo de espera de resposta (seg.) Hub Connections Conexões aos hubs Sound Som External Player Reprodutor externo Chat Chat Units Unidades Auto Auto Byte Byte GByte GByte KByte KByte MByte MByte General Geral Disable Sound Desativar som Play a sound when receiving a message Reproduzir um som quando receber uma mensagem Play a sound when disconnecting from a hub Reproduzir um som quando desconectar de um hub Play a sound when receiving first message Reproduzir um som quando receber a primera mensagem Play a sound when sending a message Reproduzir um som quando enviar uma mensagem Play a sound when connecting to a hub Reproduzir um som quando conectar a um hub Disable sound when away Desativar som no modo ausente Files Arquivos Player Reprodutor Sound Files Arquivos de som Connect Conectar Preview Previsão Disconnect Desconectar Send Enviar Receive Recebir 1st Receive 1o recebido Log Log Timestamp Hora Private Chat Chat privado Hub Chat Chat do hub Download Queue Fila de downloads Save Queue in minutes (0=off) Salvar fila de downloads, em minutos (0=desativado) Move Finished Files to this Folder (empty = disabled) Mover downloads terminadas para este diretório (vazio = desabilitar) Use wrong ip/hostname (Firewall/Portforward) Usar ip/nome de host inválido (Firewall/reendereço de portas) No multi hub search ! No incoming connections ! Sem busca multi-hub! Sem receber conexões! Send warn message to remote user on active mode request Enviar mensagem de alerta ao usuário remoto em pedido de modo ativo Status Messages Mensagens de status Show Status Messages Mostrar mensagens de status Open Private Chat Window Abrir janela de chat privado Transfer Options Opções de transferência Transfer View Ver transferências Chunk Percent Porcentagem de download File Percent Porcentagem do arquivo Chunk Size Tamanho do bloco Download Rate Taxa de download File Size Tamanho do arquivo Search Nick: Nick de busca: Remaining Time Tempo restante Send hide private chat to public chat Enviar chat privado oculto ao chat público Chat options Opções do chat Message filter Filtro de mensagens Hide popups of more than ? lines (0=off) Ocultar janelas emergentes maiores que ? linhas (0=desativado) upload upload download download Add Description Tag (<DCGUI ....>) Adicionar tag de descrição (<DCGUI...>) Max. rate B/s (0=off) Máx. taxa B/s (0=desativado) Folder Diretório New Column Nova coluna Away Message: Mensagem de ausência: Get Pegar Refuse private chat messages from offline users Recusar mensagens de chat privado de usuários desconectados Your line speed. Velocidade de sua linha. Your nick. Seu apelido The nick for hub searches. Apelido para buscas nos hubs Your EMail. Seu EMail. Enable/Disable the Anti-spam option. Ativar/Desativar a opção Anti-spam A little description. Uma pequena descrição Add a tag to the description that show some information from you. Adicionar uma tag à descrição que mostre alguma informação sobre você The tcp listen port for incoming connections. A porta de escuta tcp para receber conexões. The udp listen port for incoming search results. A porta de escuta udp para receber resultados de busca. Get the ip from the interface. Obter o ip da interface. Select a interface. Selecionar uma interface. Get the ip from the host. Obter o ip do host. The time between a reconnect. Tempo entre reconexões. How often we reconnect to a hub. Quantas vezes reconectar a um hub. Rebuild your sharelist. Reconstruir lista de compartilhamentos. Add a folder to your sharelist. Adicionar uma diretório à lista de compartilhamentos. Remove a folder from your sharelist. Apagar uma diretório de sua lista de compartilhamentos. Show some information about your sharelist. Mostra alguma informação sobre sua lista de compartilhamentos. Browse your own share list. Navegar pela sua lista de compartilhamentos. Time to wait for a transfer response from the remote user. Tempo para esperar pela resposta de transferência do usuário remoto. Time to wait before a new transfer request is send to the remote user. Tempo para esperar entre pedidos de transferência enviados ao usuário remoto. Test the new theme. Testar o novo tema. Open the chat window on incoming messages. Abrir a janela de chat ao receber mensagem. Enable emoticons in chat Ativar emoctions no chat Data Folder Diretório de dados Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S User Usuário Show Version Tag in User-Description Mostrar tag de versão na descrição do usuário Messages Mensagens Query on exit Perguntar ao sair Logfile Arquivo de histórico Logfile enabled Histórico ativado Security Segurança Flood Protection Proteção contra flood Kick Message Mensagem de expulsão Private Address Space (rfc1918) Espaço de endereço privado (rfc1918) Ignore private address space connections Ignorar espaço de endereços privados em conexões Query Preguntar Client Cliente User-List right alignment Alinhar a lista de usuário à direita Don't Display Messages after X retry (0=off) Não mostrar mensagens depois de X tentativas (0=desativado) Kick the user for flooding (only for Operators) Expulsar o usuário por abuso (só para Operadores) Show send button Mostrar botão de enviar Dynamic upload rate Taxa de upload dinâmica Hide popups of more than Ocultar popups maiores que Send message with Enviar mensagem com lines (0=off) linhas (0=desativado) Browser Navegador Use tab for every chat window Usar abas para cada janela de chat Max. paragraphs (0=off) Parágrafos máximos (0=desativado) Client options Opções do cliente Show client windows minimized Mostrar janelas de cliente minimizadas Max. uploads to user (0=off) Máx. uploads ao usuário (0=desativado) Color Cores Transfer Cert/Key Cert/Chave de transferência User quitting hub Usuário saindo do hub If user quits hub, stop following transfers Se o usuário sair do hub, interromper as transferências Upload Upload Both Ambas Download Download None Nenhuma Auto-Search Busca automática Auto-Search for new sources Buscar automaticamente novas fontes Download Rate Single Taxa de download simples Download Rate Multi Taxa de download múltiplo Remaining Time Single Tempo restante simples Remaining Time Multi Tempo restante múltiplo Reload every hour (0=off) Recarregar a cada hora (0=desativado) Max. rate KB/s (0=off) Taxa máxima KB/s (0=desativado) Path Caminho Alias Alias Edit Editar Edit a folder from the sharelist. Editar uma diretório na lista de compartilhamentos. Open File Dialog. Abrir diálogo de arquivo. Add a URL to the list. Adicionar uma URL à lista. Remove a URL from the list. Apagar uma URL da lista. 28.8Kbps 28.8Kbps Enable logging Ativar histórico Append date to log file name Adicionar data ao nome do arquivo do histórico Nick name filter Filtro de nomes e apelidos Enable nick name filter Ativar filtro de nomes e apelidos Disable logging for public chat Desativar histórico para chat público Append hub name to log file name Adicionar nome do hub ao nome do arquivo de histórico Append hub host to log file name Adicionar host do hub ao nome do arquivo de histórico &Save &Salvar &Cancel &Cancelar Forward private to public chat Encaminhar mensagens privadas ao chat público Away Prefix: Prefixo de ausente: Select Language. Selecionar idioma. Recreate every hour (0=off) Recriar a cada hora (0=desativado) Check and recreate sharelist on startup Verificar e recriar a lista de compartilhamentos ao iniciar seconds segundos Away after Ausente depois de Auto Away Mode Modo de auto ausência Ignore messages to offline users Ignorar mensagens para usuários desconectados Ignore messages from offline users Ignorar mensagens de usuários desconectados Show joins and parts Mostrar entradas e saídas Columns Colunas Comment Comentário Speed Velocidade EMail EMail Share Compartilhado Photo Foto Query on File Delete Perguntar antes de deletar arquivos IP, Hostname or Interface IP, Hostname ou interface Get Interface Pegar Interface Get Internet IP Pegar IP IP or Hostname IP ou Hostname Network Interface Interface de Rede Listen on IP Escutar no IP Tag Tag Supports Suporte Update every hour (0=off) Atualizar a cada hora (0=desligado) Hub Lists Listas de Hub Disable hash list Desabilitar lista de hash GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Nome Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Navegador de lista de arquivos Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect conectar Public Público reload recarregar Name Nome Server Servidor Description Descrição User Usuário update atualizar 0 0 servers servidores Bookmarks Favoritos Hub List Lista de Hub's Contains: Contém: Min. users: Usuários mín: Filter Filtro Add Adicionar Edit Editar Del Apagar 0/0 0/0 double click to hide the toolbar clique duplo para esconder a barra de ferramentas edit filter editar filtro delete filter apagar filtro update public hublist atualizar lista de hubs públicos add filter adicionar filtro reload public hublist recarregar lista de hubs públicos double click to show the toolbar clique duplo para mostrar a barra de ferramentas DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Espião Spy On/Off Espião Ativado/Desativado Clear Limpar Text Texto Count Quantidade Statistic Estatísticas Active: Ativo: 0 0 Reject: Rejeitar: Results: Resultados: Search Error: Erro na busca: Result Error: Erro no resultado: Passive: Passivo: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Lista de transferências Nick Nick State Estado Transfer Transferência File Arquivo Wait Espera Size Tamanho Log Log Slots Slots Hub Hub 0/0 0/0 Files Arquivos Local File / Nick Arquivo local / Nick Size / Hub Tamanho / Hub Remote File Arquivo remoto Server/User IP IP do servidor/usuário double click to hide the toolbar clique duplo para esconder a barra de ferramentas double click to show the toolbar Clique duplo para mostrar a barra de ferramentas File Name Nome do arquivo Local File Arquivo local Hub/File Hub/Arquivo IP/Size IP/Tamanho TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Cancelar DCDialogUpdateManager Update Manager Gerenciador de atualização Update Atualizar Check update Checar atualização DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Nome Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Cancelar DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Cancelar DCDialogUsersList User Usuário Description Descrição Friend-List Lista de amigos Users List Photo Foto Slot Slot Ignore DCEditServer Please enter a hubname. Por favor, coloque um nome Please enter a hubhost. Por favor, coloque um host DCFileBrowser Items Ítens Files Arquivos Total Total Directories Diretórios Root Directory Diretório raiz <wrong length> <tamanho inválido> file arquivo Select destination Selecionar destino Select a filename Selecione um arquivo Filebrowser Navegador open filelist dialog abrir diálogo da lista de arquivos Choose a file Escolha um arquivo save file dialog diálogo para salvar arquivo Choose a filename to save under Escolha um nome para salvar o arquivo Folder Diretório Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Arquivo does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Nenhuma Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Baixar arquivo File allready download Arquivo já baixado File allready exist ! O arquivo já existe! Resume Continuar Overwrite Sobreescrever Cancel Cancelar Start Multi Download Iniciar MultiDownload File allready in the queue and not mark as multi download ! O arquivo está na fila e não está marcado para multidownload! File allready in the queue with a different size ! O arquivo está na lista com um tamanho diferente! You can start a Multi Download ! Você pode iniciar um download múltiplo! The same user/file is allready in the queue ! O mesmo usuário/arquivo ja está na lista! A same file is allready in the queue ! Há um arquivo igual na lista! If you want to download all files in this mode ? Deseja baixar todos os arquivos neste modo? Not connected to required hub! Não conectado ao hub requerido! Connect Conectar (choose an existing download to add to) (selecione um download existente para adicionar) A same file is already in the queue! Um mesmo arquivo já está na lista Start a multi-download Iniciar um multi-download File is already in the queue but not mark as a multi-download! O arquivo já está na fila, mas não marcado como multi-download File is already in the queue with a different size! O arquivo já está na fila com um tamanho diferente! File already downloaded! Arquivo já baixado File already exists! O arquivo já existe! You can start a multi-download! Você pode iniciar um multi-download! Do you want to download all files in this mode? Deseja baixar todos os arquivos neste modo? Repair File Reparar arquivo Enter byte range (m-n) Introduza o intervalo de dados (m-n) Repair BIN Sectors Reparar setores BIN Enter sector range (m[-n]) Introduza o intervalo de setor (m[-n]) DCFileTransferInfo File Transfer Info Informação de transferência de arquivo DCGuiApp Options Opções &Options &Opções Ctrl+O Ctrl+O Open option dialog Abrir dialogo de opções Exit Sair Ctrl+Q Ctrl+Q Quits the application Sai do programa Exit Quits the application Sair Sai do programa Toolbar Barra de ferramentas Tool&bar &Barra de ferramentas Enables/disables the toolbar Ativar/desativar barra de ferramentas Toolbar Enables/disables the toolbar Barra de ferramentas Ativa/desativa a barra de ferramentas Statusbar Barra de status &Statusbar &Barra de status Enables/disables the statusbar Ativa/desativa a barra de status Statusbar Enables/disables the statusbar Barra de status Ativa/desativa a barra de status Cascade Cascata &Cascade &Cascata Cascades all windows Todas as janelas em cascata Cascade Cascades all windows Cascata Todas as janelas em cascata Tile Mosaico &Tile &Mosaico Tiles all windows Todas as janelas em mosaico Tile Tiles all windows Mosaico Todas as janelas em mosaico Ctrl+S Ctrl+S Transfer List Lista de transferências &Transfer List Lista de &transferências Ctrl+T Ctrl+T Show Transfer List Mostrar lista de transferências Hub Search Busca do hub &Hub Search Busca do &Hub Ctrl+H Ctrl+H Show Hub Search Mostrar buscas About Sobre &About... &Sobre... About the application Sobre o programa About About the application Sobre Sobre o programa New Version Nova versão &New Version... &Nova versão... Check for new version Verificar se há uma nova versão New Version Check for new version Nova versão Verificar se há uma nova versão What's &This O que é &isto &File &Arquivo &View &Ver &Action &Ação &Window &Janela &Help &Ajuda Ready. Pronto. (no error message from socket) (não há mensagens de erro do socket) TCP listen failed, change to passive mode ! Escuta TCP falhou, mude para o modo passivo! Quit... Sair... Do your really want to quit? Deseja realmente sair? Open options dialog... Abrir diálogo de opções... Exiting application... Saindo do programa... Toggle toolbar... Mudar barra de ferramentas... Toggle statusbar... Mudar barra de status... About... Sobre... New version... Nova versão... Show/hide transfer list window ... Mostrar/ocultar janela de lista de transferências... Show/hide hub search window ... Mostrar/ocultar janela de busca... Can't get version info from server Impossível obter informação sobre a versão no servidor Current version is: A versão atual é: Normal Normal &Normal &Normal Ctrl+N Ctrl+N Set away mode Colocar em modo ausente Away Ausente &Away &Ausente Ctrl+A Ctrl+A Hub List Lista de Hubs Show Hub List Mostrar lista de hubs Show/hide hub list window ... Mostrar/ocultar janela de lista de hubs ... H&ub List Lista de H&ubs Ctrl+U Ctrl+U Minimize Minimizar &Minimize &Minimizar Minimize all windows Minimizar todas as janelas Minimize Minimize all windows Minimizar Minimizar todas as janelas Action Ação Quick Options Opções rápidas Quick options Opções rápidas F12 F12 Context menu for a few options Menu de contexto para algumas opções Download mode: Ask Modo de download: Perguntar Download mode: Single Modo de download: Individual Download mode: Multi Modo de download: Multi Spy Espião Show Spy Mostrar espião Show/hide spy window ... Mostrar/Ocultar a janela do espião ... Users Usuários Ctrl+F Ctrl+F Show users: search tab and friends tab Mostrar usuários: aba de busca e de amigos Do you really want to quit? Realmente deseja sair? Exiting application... aborted Saindo do programa... abortado Show/hide users window ... Mostrar/ocultar janela de usuários... Away &Mode Modo &Ausente Close chat windows Fechar janelas de chat Close all chat windows Fechar todas as janelas de chat Close chat windows Close all chat windows Fechar janelas de chats Fechar todas as janelas de chats Close disconnected hubs Fechar hubs desconectados Close all disconnected hub windows Fechar todas as janelas de hubs desconectados Close disconnected hubs Close all disconnected hub windows Fechar hubs desconectados Fechar todas as janelas de hubs desconectados Tile &Horizontally Mosaico &Horizontal Tiles all windows horizontally Organizar janelas horizontalmente Tile Horizontally Tiles all windows horizontally Mosaico horizontal Mosaico horizontal com todas as janelas Reload Plugins Recarregar plugins &Reload Plugins &Recarregar plugins Dock Acoplar &Dock &Acoplar Dock the application Acoplar o programa Dock Dock the application Acoplar Acoplar o programa Hub &Search Busca &no Hub S&py Es&pião Ctrl+P Ctrl+P Dock/Undock application... Acoplar/desacoplar programa... Recreate share Recriar compartilhamento Refresh share in progress. Atualização em progresso. Refresh share allready in progress. Atualização já iniciada. Latest release Última versão &Latest release... &Última versão... Latest release Show latest release. Última versão Mostrar a última versão. Can't get release info from server Não foi possível obter informações sobre a versão latest release is: a última versão é: Latest release... Última versão... Filelist browser Navegador de lista de arquivos Open filelist browser Abrir navegador de lista de arquivos Exit Quits the application. Sair Sai do programa. Toolbar Enables/disables the toolbar. Barra de ferramentas Mostra/esconde a barra de ferramentas Statusbar Enables/disables the statusbar. Barra de status Mostra/esconde a barra de status. Cascade Cascades all windows. Tile Vertically Mosaico vertical &Tile Vertically &Mosaico vertical Tiles all windows vertically Organizar as janelas verticalmente Tile Vertically Tiles all windows vertically. Mosaico vertical Organiza as janelas verticalmente Tiles all windows horizontally. Organiza as janelas horizontalmente. Tile Horizontally Tiles all windows horizontally. Mosaico horizontal Organiza as janelas horizontalmente. Minimize all windows. Minimiza todas as janelas. Minimize Minimize all windows. Minimizar Minimiza todas as janelas. Close chat windows. Fechar janelas de chat Close all chat windows. Fechar todas as janelas de chat. Close chat windows Close all chat windows. Fechar janelas de chat Fecha todas as janelas de chat. Close disconnected hubs. Fechar hubs desconectados Close all disconnected hub windows. Fechar todas as janelas de hubs desconectados. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Mostrar lista de Hubs Show Transfer List. Mostrar lista de transferências Show Hub Search. Mostrar busca Show users: search tab and friends tab. Mostrar usuários: aba de busca e aba de amigos Set away mode. Ligar modo ausente. About the application. Sobre o programa. About About the application. Sobre Sobre o programa. Support Suporte &Support... &Suporte... Show update manager Mostrar gerenciador de atualizações RX/TX Traffic. Tráfego RECEBIDO/ENVIADO. Available disc space. Espaço livre em disco. Refresh share finished. Atualização concluída. Refresh share already in progress. Atualização já iniciada. Warning license file not found ! Licensa de aviso não encontrada! Show/hide update manager window ... Mostrar/esconder janela de atualizações... Tabbar Barra de abas Enables/disables the tabbar Habilitar/desabilitar barra de abas Tabbar Enables/disables the tabbar. Barra de abas Habilitar/desabilitar barra de abas. Show Search Spy. Mostrar espião de buscas. Tab Bar Barra de abas Toggle tabbar... Fixar barra de abas... Connect to Valknut hub Conectar ao hub do Valknut Support Connect to the Valknut hub. Filelist browser local Navegador da lista de arquivos local Open local filelist browser Abrir lista de arquivos local &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Janelas Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Público Bookmarks Favoritos Add Bookmark Adicionar favorito Error Erro Please enter a hubname. Por favor, coloque um nome Please enter a hubhost. Por favor, coloque um host Edit Bookmark Editar favorito Remove bookmarks Remover favoritos You are sure ? Tem certeza? Remove Remover Cancel Cancelar Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Criar perfil de Hub Please enter the profile name Por favor, coloque o nome do perfil Save profile Salvar perfil Do you want to save your changes? Deseja salvar as alterações? Save Salvar Cancel Cancelar Are you sure? Delete profile for DCHubSearch You must enter a search word. Você deve introduzir uma palavra para buscar. Connect to local udp port failed. ( Conexão à puerta udp local falhou. ( No hubs found. Nenhum hub encontrado. Hub Search Error Erro na busca do hub No connected hubs found. Nenhum hub conectado encontrado. Select download folder Selecione o diretório de downloads Select search Escolha uma busca Please select an search Por favor selecione uma busca Please select a connected hub. Por favor selecione um hub conectado. Select file for Selecionar arquivo para (choose an existing download to add to) (selecione um download existente para adicionar) USER USUÁRIO FILE ARQUIVO Not connected to required hub! Não conectado ao hub requerido! Connect Conectar Cancel Cancelar save file dialog diálogo de guardado de arquivo Choose a filename to save under Escolha um nome de arquivo para salvar open file dialog diálogo para abrir arquivo Choose a file to open Escolha um arquivo para abrir External search is allready running ! Busca externa já iniciada! Please add a search ! Por favor adicione uma busca! Start Iniciar Stop Parar Multi Search only work in active mode ! Busca múltipla só funciona no modo ativo! Filelist download Lista de downloads External search is already running! Busca externa já iniciada! Please add a search! Por favor adicione uma busca! Multi Search only work in active mode! Busca múltipla só funciona no modo ativo! Folder Diretório Unknown Desconhecido None Nenhuma Directory File Arquivo Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Escolha um 'Host Fake' válido! You must enter a valid interface ! Escolha uma interface válida! You must enter a valid tcp listen port ! Escolha uma porta TCP válida para escuta! You must enter a valid udp listen port ! Escolha uma porta UDP válida para escuta! You must enter a valid nick ! Escolha um apelido válido! Interface IP : IP da interface : Can't get interface IP ! Impossível pegar o IP da interface! Select download folder Escolha um diretório de downloads Select share folder Escolha um diretório para compartilhar Select language file Escolha o arquivo de idioma HubList URL URL da lista de hubs Please enter a url Por favor, introduza uma url Share list not available Lista de compartilhamento não disponível Compressed list size: Tamanho da lista compactada: bytes bytes Total shared: Total compartilhado: Share List Info Informação da lista de compartilhamento You change the client mode ! Please restart DCGUI ! Você mudou o modo do cliente! Por favor, reinicie o DCGUI! My Meu Select sound file Escolha um arquivo de som Select sound player Escolha um reprodutor de som au au wav wav All Files Todos os arquivos Host IP : IP do host: Can't get Host IP ! Não foi possível pegar o IP do host! Select download finished folder Escolha o diretório de downloads finalizados You must set a Download Folder ! Você deve escolher um diretório de downloads! Download Finished Folder and Download Folder must be different ! O diretório de downloads finalizados e de downloads incompletos devem ser diferentes! You must enter a valid search nick ! Você deve escolher um apelido de busca válido! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Você está escutando numa porta < 1024! Você só pode rodar o dcgui como root em modo ativo! Other Outro Log Log Sound Som General Geral Files Arquivos GUI GUI Chat Chat Transfer Transferência Connection Conexão Mode Modo Settings Configurações DCGUI DCGUI Identify Identificação Folder Diretório Interface List Lista de interfaces Please select an interface Por favor selecione uma interface No interfaces found ! Nenhuma interface encontrada! Select data folder Escolha o diretório de dados User Usuário Select log file Escolha o arquivo de histórico Security Segurança Select a browser Selecione um navegador Compressed list size (HE3/BZ): Tamanho de lista compactada (HE3/BZ): Select transfer cert Selecionar certificado de transferência Select transfer key Selecionar chave de transferência Edit Alias Editar apelido Please enter a new alias Por favor introduza um novo apelido Browse Share List Navegar pela lista de arquivos Add new nick name filter Adicionar novo apelido para o filtro Please enter a nick Por favor introduza um apelido Chat Timestamp Marcação de hora no chat Chat Local Nick Apelido no chat local Chat Local Text Texto do chat local Chat Remote Nick Apelido no chat remoto Chat Remote Text Texto do chat remoto Chat Status Nick Apelido no status do chat Chat Status Text Texto de status do chat Public Chat Timestamp Marcação de hora no chat público Public Chat Local Nick Apelido do chat público local Public Chat Local Text Texto do chat público local Public Chat Remote Nick Apelido em chat público remoto Public Chat Remote Text Texto do chat público remoto Public Chat Status Nick Nick em status do chat público Public Chat Status Text Texto de status no chat público Public Private Chat Nick Apelido nos chat público e privado Public Private Chat Text Texto dos chat público e privado Can't save Image ! Impossível salvar a imagem! Can't load Image ! Impossível carregar a imagem! Select a 64x64 Photo Escolha uma foto de 64x64 You must set a Download Folder! Você deve selecionar um diretório de downloads Download Finished Folder and Download Folder must be different! Diretórios de Download terminados e incompletos devem ser diferentes! You must enter a valid 'Fake Host'! Escolha um 'Fake Host' válido! You must enter a valid interface! Escolha uma interface válida! You must enter a valid tcp listen port! Escolha uma porta TCP válida para escuta You must enter a valid udp listen port! Escolha uma porta UDP válida para escuta You must enter a valid nick! Escolha um apelido válido! You must enter a valid search nick! Você deve escolher um apelido de busca válido! Can't save Image! Impossível salvar imagem! Can't load Image! Impossível carregar imagem! Host IP: IP do host: Can't get Host IP! Impossível pegar IP do host! Interface IP: IP da interface: Can't get interface IP! Impossível pegar IP da interface! No interfaces found! Nenhuma interface encontrada! Latest release... Última versão... Can't get your ip Não foi possível pegar seu IP Chat Say Dizer no Chat Public Chat ME Nick Apelido MIM no chat público Hub Lists Listas de Hub You change the client mode! Please restart Valknut! Você mudou o modo do cliente! Por favor, reinicie o Valknut! You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Você configurou o Valknut pra escutar numa porta menor que 1024! Isso só é possível como root em modo ativo! Compressed list size (HE3/BZ/XML): Tamanho da lista compactada (HE3/BZ/XML): Edit url Auto Responses Filelist browser Navegador de lista de arquivos Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Pegar IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Cliente DCServerList Add Bookmark Adicionar favorito Edit Bookmark Editar favorito Select profile Selecionar perfil Please select an profile Por favor, selecione um perfil Public Público Bookmarks Favoritos DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Espere Idle Ocioso Run Ativo Transfer Transferência Error Erro Download Download Upload Upload Unknown Desconhecido Pause Pausar Hub offline Hub desconectado User offline Usuário desconectado User busy Usuário ocupado Send error Erro no envio Change Transfer-Rate Mudar taxa de transferência Please enter a Transfer-Rate [B/s] (0=off) Por favor, introduza uma taxa de transferência [B/s] (0=desativado) Change File-Priority Mudar prioridade do arquivo Please enter a priority Por favor indique uma prioridade Handshake Negociação Nothing Nada Remove Remover Cancel Cancelar Filebrowser Navegador de arquivos Try Connect Tentar conectar User and Hub not found in the queue ! O usuário e o hub não estão na fila! Nick: Apelido: Hub: Hub: Remove Transfer Remover transferência You are sure ? Você tem certeza? My Meu Browse Share List Navegar por lista de arquivos Share list not available Lista de arquivos não disponível None Nenhuma File Arquivo %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Tradutor Choose a language Escolha um idioma Chinese Simplified to English Chinese Traditional Dutch Dutch French German German Greek Italian Japanese Korean Portuguese Russian Spanish Espanhol Detect language Arabic Bulgarian Chinese Croatian Czech Czech Danish Danish Finnish Finnish Hindi Norwegian Norwegian Polish Polish Romanian Romanian Swedish Swedish OK OK Cancel Cancelar Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUpdateManager Download failed Download falhou Update finished Atualização terminada Download content Baixar conteúdo Download content failed Download do conteúdo falhou Download update.xml Baixando update.xml Download update.xml failed Download do update.xml falhou Update available but no bz2 support for Atualização disponível mas não há suporte a bz2 Update available for Atualização disponível para update(s) available atualização(ões) diponível(eis) DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Nome Server Servidor Description Descrição Users Usuários Country Shared Compartilhado Minimum share Extra QObject Download Download Download To Baixar para Download As Baixar como Browse User Files Ver arquivos do usuário Private Chat Chat privado Kick Expulsar Force Move Forçar mudança Update User Atualizar usuário Connect Conectar Disconnect Desconectar Reload Userlist Recarregar lista de usuários Connect To Hub Conectar ao hub Add Adicionar Add Bookmark Adicionar favorito Edit Editar Edit Bookmark Editar favorito Remove Remover Close Transfer Fechar transferência Info Info Try Connect Tentar conectar Remove from Queue Apagar da fila Remove Transfer from Queue and Disk Apagar transferência da fila e do disco Add Slot to User Adicionar slot ao usuário Add Permanent Slot to User Adicionar slot permanente ao usuário Remove Slot from user Retirar slot do usuário Save Queue Salvar fila Update Server Atualizar servidor Update all Server Atualizar todos os servidores Change Transfer-Rate Mudar taxa de transferência Copy row to Clipboard Copiar fila para o Clipboard Copy column to Clipboard Copiar coluna para o Clipboard File Info Informação do arquivo Connect To All Hubs Conectar a todos os hubs Search for clones Buscar clones Remove complete from Queue Apagar completamente da fila Load Carregar Save Salvar Edit Hub Profiles Editar perfis de hub Set Hub Profile Estabelecer perfil do hub Add this extra source Adicionar esta fonte extra Edit transfer Editar transferência Edit file priority Editar prioridade do arquivo Translate Traduzir Translator Tradutor Disable group Desativar grupo Group by File Agrupar por arquivo Group by Size Agrupar por tamanho Group by Nick Agrupar por apelido Group by free Slots Agrupar por slots livres Group by Hub Agrupar por hub Group by Path Agrupar por caminho Group by Host Agrupar por host Copy Copiar Clear Limpar Select all Selecionar todo Close Fechar Group Agrupar Hide Ocultar Refresh Filelist Atualizar lista de arquivos Pause Queue Pausar fila Resume Queue Continuar fila Insert Smiley Inserir emoction Add Friend Adicionar como amigo Czech Czech Danish Danish Dutch Dutch Finnish Finnish France France German German Hungarian Hungarian Icelandic Icelandic Italy Italy Norwegian Norwegian Polish Polish Romanian Romanian Spanish Espanhol Swedish Swedish Copy Link Copiar link Text Encoding Codificação de texto Request secure chat Pedir chat seguro Close secure chat Fechar chat seguro Input Entrada Output Saída Check client version Checar versão do cliente Add Permanent Adicionar permanente Profile editor Editor de perfil Group by Hash Agrupar por Hash Reset Reiniciar Dock Acoplar Undock Desacoplar Exit Sair Bosnian English French Greek Italian Latvian Russian Slovak Custom Pessoal Upload Slot Slot de Upload Repair File Reparar arquivo Repair BIN sectors Reparar setores BIN Brazilian Search for clones by TTH Copy magnet link User: Usuário: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (selecione um download existente para adicionar) File download Baixar arquivo A same file is already in the queue! Um mesmo arquivo já está na lista Start a multi-download Iniciar um multi-download Cancel Cancelar File is already in the queue but not mark as a multi-download! O arquivo já está na fila, mas não marcado como multi-download File is already in the queue with a different size! O arquivo já está na fila com um tamanho diferente! File already downloaded! Arquivo já baixado Enter byte range (m-n) Introduza o intervalo de dados (m-n) Repair BIN Sectors Reparar setores BIN Enter sector range (m[-n]) Introduza o intervalo de setor (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! O arquivo já existe! Resume Continuar Overwrite Sobreescrever File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Não conectado ao hub requerido! Group by total Slots Download Folder Diretório de downloads Zoom in Zoom out Group by IP SearchSpyModel Text Texto Count Quantidade Time UserListModel Nick Comment Comentário Tag Tag Speed Velocidade Email Share Compartilhado IP Lock/PK Supports Suporte valknut-0.4.9/valknut/ts/valknut.nb.ts0000664000076400007640000122174311144234504016122 0ustar ejsejs DCBrowseFileTree Select destination Velg mål Select a filename Velg filnavn <wrong length> <feil lengde> Choose a filename to save under Velg et filnavn for å lagre som DCChat Message not send ! Melding ikke sendt ! Private Chat: Privat chat: Chat Cleared. Chat nullstilt. Translation: Oversettelse: Translation failed: Oversettelse feilet: Current mode: Nåværende modus: active aktiv passive passiv Refresh share in progress. Fornyelse av deling under arbeid. Refresh share allready in progress. Fornyelse av deling allerede i arbeid. Switch timestamp Bytt tidsstempel Send advertisment. Send reklame. Wrong parameter for '/join' Galt parameter for '/join' Join to: Bli med i: Wrong parameter for '/msg' Galt parameter for '/msg' Private message send. Send privat beskjed. Private message not send ! Privat beskjed ikke sendt ! Away message disabled. Bortemelding deaktivert. Away message set. Bortemelding aktivert. Line is encrypted. Linjen er kryptert. Line is not encrypted. Linjen er ikke kryptert. Help: Hjelp: /clear - clear the chat window /clear - tømmer samtalevindu /mode - show current mode /mode - viser nåværende modus /refresh - refresh share /refresh - oppdaterer delinger /ts - switch time display in chat on/off /ts - slår av og på tidsvisning i samtale /dcgui - send an advertisment to the hub /dcgui - send reklame til hub Choose a filename to save under Velg et filnavn for å lagre som /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;address&gt; - kople fra tilkoplet tjener og kople til en annen tjener /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nick&gt; &lt;message&gt; - send en privat melding /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;message&gt; - sett automatisk respons for private meldinger; hvis meldingen er tom, deaktiver den Select download folder Velg nedlastingsmappe Select file for Velg fil for Text Encoding Tekstkoding Choose a codec Velg kodek Photo received. Bilde mottat. Only allowed in private chat. Kun tillatt i privat samtale. Client use wrong version. Klient bruker feil versjon. No Photo found. Intet foto funnet. Can't read photo. Kan ikke lese foto. Photo encode error. Feil ved fotokoding. Photo not send. Bildet ble ikke sendt. Photo send. Bilde sendt. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Kallenavn: Operator: yes no Comment: Speed: Hastighet: EMail: Shared: Away: on off Version: Unknown Ukjent Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Ankomster: Parts: Avkoblinger: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Delt Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Forbindelse tidsavbrytt Error: ' Feil: ' Validate denide Validering nektet Sorry, client work in passive mode Beklager, klienten er i passivt modus Redirect to Omkoblet til Password - Passord - Please enter your password Skriv inn passord Wrong password Galt passord OP Force Move OP Tvungen Flytt Please enter host Skriv inn vertsnavn Please enter a message Skriv inn en beskjed Redirect disabled Tvungen flytt deaktivert OP Kick OP spark Please enter a reason Skriv inn grunn User: Bruker: Connected Tilkoblet Disconnected Frakoblet Use password from profile Bruk passord fra profil Password from profile is empty Passord fra profil er tomt No profile found for this hub Ingen profil funnet for denne tjeneren users brukere Hubname change: Tjenernavn endret: User rejoin the hub. Bruker gjennoppkoblet tjeneren. User left the hub. Bruker forlot tjeneren. Hub Tjener Sorry, client works in passive mode Beklager, klienten er i passiv modus We left the hub. Vi forlot tjeneren. Joins: Ankomster: Parts: Avkoblinger: Chat List Prateliste Line is encrypted. Linjen er kryptert. Line is not encrypted. Linjen er ikke kryptert. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Avbryt Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Kolonner Any Alt DCDebug Send error Sendefeil Send Send Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Velg et filnavn for å lagre som Text (*.txt) DCDialogAbout About Om OK OK Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Fil nedlasting Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Fil Behandler File Fil Size Størrelse Files Filer Shared Delt DCDialogChat Form1 Fra1 &Send &Send DCDialogChat DCDialogClient Form1 Skjema1 User Bruker Nick Kallenavn Comment Kommentar Speed Hastighet EMail E-Post Bytes Delt 0 0 Share Dele Chat List Prateliste DCDialogClient User(s) ... DCDialogConnectionManager Connection Forbindelse DCDialogDebug Comment Kommentar &Save &Lagre Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Ingen Send Send Receive Motta Both Begge OK OK Cancel Avbryt malloc info DCDialogEditServer Form1 Skjema1 Settings Innstillinger Name Navn Host Tjener Description Beskrivelse Cancel Avbryt Accept Godta Password Passord Autoconnect Koble til automatisk DCDialogEditServer &Cancel &Avbryt &Profile Profile Profil Nick EMail E-Post Auto Connect Tilknytt automatisk Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Alias Path Filsti &Cancel &Avbryt DCDialogEditTransfer Edit Transfer Endre Overføring Settings Alernativer Nick Brukernavn Hub name Tjener navn Hub address Tjener adresse Cancel Avbryt Accept Godta Known hubs Kjente tjenere &Cancel &Avbryt DCDialogFileBrowser Form1 Skjema1 New Column Ny kollonne Name Navn Size Størrelse File Type Filtype Open Save Type Type TTH Folder Mappe Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Filoverføringsinformasjon File Fil Size Størrelse Done Fullført Hash Sources DCDialogForceMove OP Force Move OP Tvungen Flytt Please enter a host Please enter a message Skriv inn en beskjed OK OK Cancel Avbryt DCDialogGetURL Get URL Hent URL Cancel Avbryt &Cancel &Avbryt DCDialogHubFilter Hub Filter Tjener filter Filter Filter Min. User Min. Brukere Contains Inneholder Cancel Avbryt Save Lagre Name Navn Server Tjener Description Beskrivelse Settings &Cancel &Avbryt DCDialogHubListManager Hub List Tjener liste Public Offentlig Name Navn Server Tjener Description Beskrivelse User Bruker double click to hide the toolbar dobbeltklikk for å gjemme verktøylinjen edit filter rediger filter delete filter slett filter Filter Filter update public hublist oppdater offentlig tjenerliste add filter legg til filter reload public hublist last offentlig tjenerliste på nytt double click to show the toolbar Bookmarks Bokmerker connect tilknytt Users Brukere Shared Delt Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Legg til Edit bookmark. Edit Endre Remove bookmark. Remove Fjern DCDialogHubProfile Edit hub Profiles Endre tjenerprofil Profile Profil Create Lag Delete Slett Save Lagre Settings Innstillinger Password Passord OK OK Auto Connect Tilknytt automatisk Cancel Avbryt Hub profile editor &Cancel &Avbryt Nick Description Beskrivelse EMail E-Post Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Søkeresultater Nick Kallenavn File Filnavn Size Størrelse Slot Plasser Hub Tjener Path Filsti Log Logg Search Søk Stop Stopp Results: Resultater: Connected Hubs Tilknyttede tjenere Bookmark Hubs Bokmerkede tjenere Filter Filter Type Type At Least Minimum At Most Maksimum KB KB MB MB Any Alt MP3 MP3 Compressed Komprimert Document Dokument Executable Kjørbar Picture Bilde Video Video Folder Mappe Hub Search Tjener søk Host Vert Threads Tråder GB GB Free Slots Ledige plasser Max Free Slots (0=off) Maksimalt ledige plasser (0=av) Exact Nøyaktig B B 0/0 0/0 0 0 Search in path+file name only Søk kun i sti+filnavn Search History Søkehistorie History Historie Hubs Tjenere Hub Options Søk på tjener(e) Connected Hub Kun valgt tjener Refresh Oppdater Public Hubs Alle tjenere Expert Ekspert User Bruker Search User Søk bruker Reset Nullstill Clients Klienter Live filters Aktive filtre Include: Inkluder: Exclude: Ekskluder: Apply Bruk Mode Modus Add Legg til User/File Bruker/Fil Search for a user or a file. Søk etter en bruker eller en fil. Start Begynn Start the search. Begynn søket. Add a search to the searchqueue Legg til et søk i køen Filtered Hubs Filtrerte tjenere Multi Search Multisøk Enable Tag Aktiver Merke Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Navn Size Størrelse Exact size Action Handling Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Avbryt DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Innstillinger Identify Identitet Information Informasjon E-Mail: E-Post: Nick: Kallenavn: Description: Beskrivelse: Speed: Hastighet: 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Sattelitt ISDN ISDN DSL DSL Cable Kabel LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Søppelpost (epost at vert dot no) Transfer Overføring Share Folders Delte mapper Info Info Add Legg til Remove Fjern Download Folder Nedlastingsmappe Browse Søk Upload Options Opplastingsalternativer Connection Forbindelse Settings Innstillinger Mode Modus Active Mode Aktiv modus Passive Mode Passiv modus Passive Mode Settings Alternativer for passiv modus Active Mode Settings Alternativer for aktiv modus TCP Listen Port: TCP lytteport: 412 412 Hub Search Tjener Søk UDP Listen Port: UDP lytteport: Use ip from interface (ppp0,eth0) Bruk IP fra forbindelse (ppp0,eth0) Test Test Interface IP Forbindelse IP Wrong IP Gal IP GUI GUI GUI Options GUI alternativer Other Andre Other Options Andre alternativer Hublist Tjenerliste Store local Lagre lokal Save Lagre Cancel Avbryt Theme Tema Language File Språk Fil Reconnect Counter (0=off) Gjennoppta teller (0=av) Reconnect Timeout (sec.) Gjennoppta tidsavbrudd (sek.) Allow Force Move Tillat Tvungen Flytt Source Url's Lagre Url'er URL URL Max. upload slots (0=off) Maks. opplastingsplasser (0=av) Application Font Program Skrifttype Rebuild Gjennoppbygg Maximal upload connections. Maksimale opplastings forbindelser. Transferrate for each slot. Overføringshastighet for hver plass. Transfer Request Timings Overføringsforespørsels Tider Resend Timeout (sec.) Gjensend Tidsgrense (sek.) Response Timeout (sec.) Svar Tidsgrense (sek.) Hub Connections Tjener Forbindelser Sound Lyd External Player Ekstern Avspiller Chat Prat Units Enheter Auto Automatisk Byte Tegn GByte GByte KByte KByte MByte MByte General Generell Disable Sound Skru av lyd Play a sound when receiving a message Spill lyd ved mottak av beskjed Play a sound when disconnecting from a hub Spill lyd når forbindelse til tjener brytes Play a sound when receiving first message Spill lyd når første beskjed mottas Play a sound when sending a message Spill lyd når beskjed sendes Play a sound when connecting to a hub Spill lyd når en tjener tilknyttes Disable sound when away Skru av lyd når borte Files Filer Player Avspiller Sound Files Lyd Filer Connect Tilknytt Preview Forhåndsvis Disconnect Frakobl Send Send Receive Motta 1st Receive 1ste Mottak Log Logg Timestamp Tidsstempel Private Chat Privat Prat Hub Chat Tjener Prat Download Queue Nedlastingskø Save Queue in minutes (0=off) Lagre Kø i intervall (minutter, 0=av) Move Finished Files to this Folder (empty = disabled) Flytt Fullførte Filer til denne Mappen (tom=skrudd av) Use wrong ip/hostname (Firewall/Portforward) Bruk gal ip/vertsnavn (Brannmur) No multi hub search ! No incoming connections ! Ikke multi-tjener søk! Ingen inngående forbindelser ! Send warn message to remote user on active mode request Send advarsel til tilknyttet bruker ved aktiv-modus forespørsel Show Status Messages Vis Status Beskjeder Open Private Chat Window Åpne Privat Prat Vindu Transfer Options Overføringsalternativer Transfer View Overføringsvisning Chunk Percent Fildel Prosent File Percent Fil Prosent Chunk Size Fildel størrelse Download Rate Nedlastingshastighet File Size Fil Størrelse Search Nick: Søk Kallenavn: Remaining Time Gjennværende Tid Send hide private chat to public chat Send skjult privat prat til offentlig prat Chat options Prat Alternativer upload send download motta Add Description Tag (<DCGUI ....>) Legg til Klientbeskrivelse (<DCGUI ...>) Max. rate B/s (0=off) Maks hastighet B/s (0=av) Folder Mappe New Column Ny Kolonne Away Message: Borte Beskjed: Get Hent Refuse private chat messages from offline users Nekt privat prat beskjeder fra frakoblede brukere Your line speed. Din linjehastighet. Your nick. Ditt kallenavn. The nick for hub searches. Kallenavn ved tjenersøk. Your EMail. Din E-Post. Enable/Disable the Anti-spam option. Aktiver/Deaktiver anti-søppelpost valg. A little description. En kort beskrivelse. Add a tag to the description that show some information from you. Legg til en beskrivelse som gir litt informasjon om deg. The tcp listen port for incoming connections. Tcp lytteport for innkomne forbindelser. The udp listen port for incoming search results. Udp lytteport for innkomne søkeresultater. Get the ip from the interface. Hent IP fra grensesnittet. Select a interface. Velg et grensesnitt. Get the ip from the host. Hent IP fra verten. The time between a reconnect. Tiden mellom hver gjenoppkobling. How often we reconnect to a hub. Hvor ofte vi gjennoppkobler til en tjener. Rebuild your sharelist. Gjennoppbygg delte filer-liste. Add a folder to your sharelist. Legg mappe til delte filer. Remove a folder from your sharelist. Fjern mappe fra delte filer. Show some information about your sharelist. Vis informasjon om delte filer. Browse your own share list. Vis dine delte filer. Time to wait for a transfer response from the remote user. Tid å vente for overføringsrespons fra tilknyttet bruker. Time to wait before a new transfer request is send to the remote user. Tid å vente før overføringsønske sendes tilknyttet bruker. Test the new theme. Prøv nytt tema. Open the chat window on incoming messages. Åpne prat vindu ved innkomne beskjeder. Enable emoticons in chat Bruk smilbilder i prat Data Folder Data Mappe Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S Show Version Tag in User-Description Vis versjonsinformasjon i Bruker-beskrivelse Messages Beskjeder Query on exit Forespørsel ved avsluttning Logfile Loggfil Logfile enabled Loggfil brukes Security Sikkerhet Flood Protection Tekstflom Beskyttelse Kick Message Sparke beskjed Private Address Space (rfc1918) Privat Adresse Rom (rfc1918) Ignore private address space connections Ignorer private adresserom-forbindelser Query Forespørsel Client Klient User-List Options Bruker-Liste Valg User-List right alignment Høyrejuster bruker-liste Don't Display Messages after X retry (0=off) Ikke vis meldinger etter X forsøk (0=av) Kick the user for flooding (only for Operators) Spark bruker for tekstflom (kun for Operatører) Show send button Vis sendeknapp Dynamic upload rate Dynamisk opplastingshastighet Hide popups of more than Gjem oppspretsvinduer hvis mer enn Send message with Send melding med lines (0=off) linjer (0=av) Browser Nettleser Use tab for every chat window Bruk fane for hvert pratevindu Color remote Farge fjernkontroll Max. paragraphs (0=off) Maks antall paragrafer (0 = av) Client options Klientinnstillinger Show client windows minimized Vis klientvinduer minimert Max. uploads to user (0=off) Maks opplastinger til bruker (0 = av) Color Farge Transfer Cert/Key Overførings Sert/Nøkkel User quitting hub Bruker kopler fra tjener If user quits hub, stop following transfers Dersom brukeren kopler fra tjeneren, avslutt følgende overføringer Upload Last opp Both Begge Download Last ned None Ingen Auto-Search Auto-Søk Auto-Search for new sources Søk automatisk etter nye kilder Download Rate Single Nedlastingsrate Enkel Download Rate Multi Nedlastingsrate Flere Remaining Time Single Gjenværende tid Enkel Remaining Time Multi Gjenværende tid Flere Reload every hour (0=off) Oppdater hver time (0 = av) Max. rate KB/s (0=off) Maks rate KB/s (0 = av) Path Filsti Alias Alias Edit Endre Edit a folder from the sharelist. Rediger en katalog fra delingslisten. Open File Dialog. Åpne fildialog. Add a URL to the list. Legg til en URL i listen. Remove a URL from the list. Fjern en URL fra listen. 28.8Kbps 28.8Kbps Enable logging Slå på logging Append date to log file name Legg til dato i filnavnet til loggen Nick name filter Kallenavnfilter Enable nick name filter Aktiver kallenavnfilter Disable logging for public chat Deaktiver logging av offentlig samtale Append hub name to log file name Legg til tjenerens navn i loggens filnavn Append hub host to log file name Legg til tjenerens vertsnavn til loggens filnavn &Save &Lagre &Cancel &Avbryt Forward private to public chat Videresend privat til offentlig samtale Away Prefix: Borteprefiks: Select Language. Velg Språk. Recreate every hour (0=off) Gjenlag hver time (0 = av) Check and recreate sharelist on startup Sjekk og gjenlag delingsliste ved oppstart seconds sekunder Away after Borte etter Auto Away Mode Automatisk Bortemodus Ignore messages to offline users Ignorer meldinger til avkoblete brukere Ignore messages from offline users Ignorer meldinger fra avkoblete brukere Show joins and parts Vis ankomster og avkoblinger Columns Kolonner Comment Kommentar Speed Hastighet EMail E-Post Share Dele Photo Bilde Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Navn Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect tilknytt Public Offentlig reload last om Name Navn Server Tjener Description Beskrivelse User Bruker update oppdater 0 0 servers tjenere Bookmarks Bokmerker Hub List Tjener liste Filter Filter Add Legg til Edit Endre Del Slett 0/0 0/0 double click to hide the toolbar dobbeltklikk for å gjemme verktøylinjen edit filter rediger filter delete filter slett filter update public hublist oppdater offentlig tjenerliste add filter legg til filter reload public hublist last offentlig tjenerliste på nytt double click to show the toolbar dobbeltklikk for å vis verktøylinjen DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Spioner Spy On/Off Spioner Av/På Clear Nullstill Statistic Active: 0 0 Reject: Results: Resultater: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Overføringsliste Nick Kallenavn State Status Transfer Overføring File Fil Wait Overføringskø Size Størrelse Log Logg Slots Plasser Hub Tjener 0/0 0/0 Files Filer Local File / Nick Lokal Fil / Kallenavn Size / Hub Størrelse / Tjener Remote File Tilknyttet Fil Server/User IP Tjener/Bruker IP double click to hide the toolbar dobbeltklikk for å gjemme verktøylinjen double click to show the toolbar dobbeltklikk for å vise verktøylinjen File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Avbryt DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Prat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Navn Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Avbryt DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Avbryt DCDialogUsersList Users List Bruker liste Friends Venner User Bruker Server name Tjener navn Description Beskrivelse Friend-List Venneliste Photo Bilde Slot Plasser Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser Items Elementer Files Filer Total Total Directories Mapper Root Directory Rot Mappe <wrong length> <feil lengde> file fil Select destination Velg mål Select a filename Velg filnavn Filebrowser Filfinner Choose a file save file dialog lagre fildialog Choose a filename to save under Velg et filnavn for å lagre som Folder Mappe Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Ingen Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Fil nedlasting File allready download Filen hentes allerede File allready exist ! Filen finnes allerede ! Resume Fortsett Overwrite Skriv over Cancel Avbryt Start Multi Download Start Flerbruker-Nedlasting File allready in the queue and not mark as multi download ! Filen er allerede i køen og ikke er ikke merket som flerbruker-nedlasting! File allready in the queue with a different size ! Filen er allerede i køen med en annen størrelse ! You can start a Multi Download ! Du kan starte flerbruker-nedlasting ! The same user/file is allready in the queue ! Den samme brukeren/filen er allerede i køen ! A same file is allready in the queue ! En lik fil er allerede i køen ! If you want to download all files in this mode ? Vil du hente alle filene med denne modusen ? Not connected to required hub! Ikke tilknyttet krevd tjener ! Connect Tilknytt (choose an existing download to add to) (velg en eksisterende nedlastning å legge til) DCFileTransferInfo File Transfer Info Filoverføringsinformasjon DCGuiApp Options Innstillinger &Options &Innstillinger Ctrl+O Ctrl+I Open option dialog Åpner vinduet for programinnstillinger Exit Avslutt Ctrl+Q Ctrl+Q Quits the application Avslutter programmet (anbefales ikke) Exit Quits the application Avslutt Avslutter programmet (overføringskøen lagres automatisk) Toolbar Verktøylinje Tool&bar Verktøy&linje Enables/disables the toolbar Skru av/på verktøylinjen Toolbar Enables/disables the toolbar Verktøylinje Skru av/på verktøylinje Statusbar Statuslinje &Statusbar &Statuslinje Enables/disables the statusbar Skru av/på statuslinje Statusbar Enables/disables the statusbar Statuslinje Skru av/på statuslinje Cascade Vinduer i Kortstokk &Cascade &Vinduer i Kortstokk Cascades all windows Ordner alle vinduer i kortstokk Cascade Cascades all windows Vinduer i Kortstokk Organiserer alle vinduene som en kortstokk Tile Vinduer side ved side &Tile Vinduer &Side ved side Tiles all windows Vinduer Side ved Side Tile Tiles all windows Side ved Side Stiller opp alle vinduene side ved side Ctrl+S Ctrl+P Transfer List Overføringsvindu &Transfer List &Overføringsvindu Ctrl+T Ctrl+O Show Transfer List Vis Overføringsvindu Hub Search Søkevindu &Hub Search &Søkevindu Ctrl+H Ctrl+S Show Hub Search Vis Søkevindu About Om &About... &Om... About the application Om programmet About About the application Om Om programmet New Version Ny Versjon &New Version... &Ny Versjon... Check for new version Sjekk for ny versjon New Version Check for new version Ny versjon Sjekk for ny versjon What's &This Hva er &Dette &File &Fil &View &Vis &Action &Handling &Window V&indu &Help &Hjelp Ready. Klar. (no error message from socket) (ingen feilmelding fra støpsel) TCP listen failed, change to passive mode ! TCP lytteport feilet, bytter til passiv modus ! Quit... Avslutt... Open options dialog... Åpne alternativer dialog... Exiting application... Avslutter programmet... Toggle toolbar... Slå av/på verktøylinje... Toggle statusbar... Slå av/på statuslinje... About... Om... New version... Ny versjon... Show/hide transfer list window ... Vis/gjem overføringsliste vinduet ... Show/hide hub search window ... Vis/gjem tjener søk vinduet ... Can't get version info from server Kan ikke hente versjonsinformasjon fra tjener Current version is: Nåværende versjon er: Normal Normal &Normal &Normal Ctrl+N Ctrl+N Set away mode Velg borte modus Away Borte &Away &Borte Ctrl+A Ctrl+A Hub List Tjener liste Show Hub List Vis Tjener Liste Show/hide hub list window ... Vis/gjem tjener liste vindu ... H&ub List &Tjenerliste Ctrl+U Ctrl+T Minimize Minimer alle vinduer &Minimize &Minimer alle vinduer Minimize all windows Minimer alle vinduer Minimize Minimize all windows Minimer Minimer alle vinduer Action Handling Quick Options Hurtigvalg Quick options Hurtigvalg F12 F12 Context menu for a few options Kontekst meny for et fåtall valg Download mode: Ask Nedlastingsmodus: Spør Download mode: Single Nedlastingsmodus: En bruker Download mode: Multi Nedlastingsmodus: Flerbruker Spy Spiorner &Spy S&pioner Show Spy Vis spion Show/hide spy window ... Vis/gjem spion vindu ... Users Brukere Ctrl+F Ctrl+F Show users: search tab and friends tab Vis brukere: søke fane og venner fane Do you really want to quit? Vil du virkelig avslutte? Exiting application... aborted Avsluttet programmet... avbrutt Show/hide users window ... Vis/gjem brukervindu ... Away &Mode Borte&modus Close chat windows Lukke samtalevinduer Close all chat windows Lukk alle samtalevinduer Close chat windows Close all chat windows Lukk samtalevinduer Lukk alle samtalevinduer Close disconnected hubs Lukk frakoblete tjenere Close all disconnected hub windows Lukk alle frakoblete tjenervinduer Close disconnected hubs Close all disconnected hub windows Lukk frakoblete tjenere Lukk alle frakoblete tjenervinduer Tile &Horizontally Side om side &Horisontalt Tiles all windows horizontally Legger vinduene side om side horisontalt Tile Horizontally Tiles all windows horizontally Side om side horisontalt Legger vinduene side om side horisontalt Reload Plugins Gjenlast programtillegg &Reload Plugins Gjenlast p&rogramtillegg Dock Fest &Dock &Fest Dock the application Fest programmet Dock Dock the application Fest Fest programmet Hub &Search Tjener &Søk S&py S&pioner Ctrl+P Ctrl+P Dock/Undock application... Fest/Løsne program... Refresh share in progress. Fornyelse av deling under arbeid. Refresh share allready in progress. Fornyelse av deling allerede i arbeid. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Offentlig Bookmarks Bokmerker Add Bookmark Legg til Bokmerke Error Feil Edit Bookmark Endre Bokmerke Remove bookmarks You are sure ? Remove Fjern Cancel Avbryt Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Lag tjenerprofil Please enter the profile name Skriv inn navn på tjenerprofil Save profile Do you want to save your changes? Cancel Avbryt Are you sure? Delete profile for DCHubSearch Connect to local udp port failed. ( Tilkobling til lokal udp port feilet. ( No hubs found. Ingen tjenere funnet. Hub Search Error Tjener Søk Feil No connected hubs found. Ingen tilknyttede tjenere funnet. Select download folder Velg nedlastingsmappe Select search Velg søk Please select an search Vennligst velg et søk Please select a connected hub. Vennligst velg en tilknyttet tjener. Select file for Velg fil for No search found. Ingen søk funnet. USER BRUKER FILE FIL List download Listenedlasting Not connected to required hub! Ikke tilknyttet krevd tjener! Connect Tilknytt Cancel Avbryt save file dialog lagre fildialog Choose a filename to save under Velg et filnavn for å lagre som open file dialog åpne fildialog Choose a file to open Velg en fil som skal åpnes External search is allready running ! Eksternt søk er allerede i gang! Please add a search ! Vennligst legg til et søk! Start Start Stop Stopp Multi Search only work in active mode ! Multisøk fungerer kun i aktiv modus! Filelist download Please add a search! Multi Search only work in active mode! Folder Mappe Unknown Ukjent None Ingen Directory File Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Du må skrive inn en gyldig 'Falsk vert' ! You must enter a valid interface ! Du må skrive inn et gyldig grensesnitt ! You must enter a valid tcp listen port ! Du må skrive inn en gyldig tcp lytteport ! You must enter a valid udp listen port ! Du må skrive inn en gyldig udp lytteport ! You must enter a valid nick ! Du må skrive inn et gyldig kallenavn ! Interface IP : Grensesnitt IP : Can't get interface IP ! Kan ikke hente grensesnitt-IP ! Select download folder Velg nedlastingsmappe Select share folder Velg mappe for deling Select language file Velg språkfil HubList URL TjenerListe URL Please enter a url Skriv inn en url Share list not available Delt fil-liste ikke tilgjengelig bytes tegn Total shared: Totalt delt: Share List Info Delt filliste informasjon You change the client mode ! Please restart DCGUI ! Du har forandret klientmodus ! Vennligst restart DcGui ! My Min Select sound file Velg lydfil Select sound player Velg lydavspiller au au wav wav All Files Alle filer Host IP : Vert IP : Can't get Host IP ! Kan ikke hente vert IP ! Select download finished folder Velg mappe for fullførte overføringer You must set a Download Folder ! Du må velge en mappe for nedlasting ! Download Finished Folder and Download Folder must be different ! Mappe for fullført og pågående overføring må være forskjellig ! You must enter a valid search nick ! Du må skrive inn et gyldig søkekallenavn ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Du lytter på en port < 1024 ! Du kan kun kjøre dcgui som root i aktiv modus ! Other Annet Log Logg Sound Lyd General Generellt Files Filer GUI GUI Chat Prat Transfer Overføring Connection Forbindelse Mode Modus Settings Alternativer DCGUI DCGUI Identify Identifiser Folder Mappe Interface List Grensesnittsliste Please select an interface Vennligst velg et grensesnitt No interfaces found ! Ingen grensesnitt funnet ! Select data folder Velg data mappe User Bruker Select log file Velg log fil Security Sikkerhet Select a browser Velg en nettleser Compressed list size (HE3/BZ): Komprimert liste størrelse (HE3/BZ): Select transfer cert Velg overførings sert Select transfer key Velg overføringsnøkkel Edit Alias Rediger Alias Please enter a new alias Vennligst tast inn et nytt alias Browse Share List Bla i Delingslisten Add new nick name filter Legg til nytt kallenavnfilter Please enter a nick Vennligst tastinn kallenavn Chat Timestamp Samtale Tidsmerking Chat Local Nick Samtale Lokalt Kallenavn Chat Local Text Samtale Lokal Tekst Chat Remote Nick Samtale Eksternt Kallenavn Chat Remote Text Samtale Ekstern Tekst Chat Status Nick Samtale Status Kallenavn Chat Status Text Samtale Status Tekst Public Chat Timestamp Offentlig Samtale Tidsmerking Public Chat Local Nick Offentlig Samtale Lokalt Kallenavn Public Chat Local Text Offentlig Samtale Lokal Tekst Public Chat Remote Nick Offentlig Samtale Eksternt Kallenavn Public Chat Remote Text Offentlig Samtale Ekstern Tekst Public Chat Status Nick Offentlig Samtale Status Kallenavn Public Chat Status Text Offentlig Samtale Status Tekst Public Private Chat Nick Offentlig Privat Samtale Kallenavn Public Private Chat Text Offentlig Privat Samtale Tekst Can't save Image ! Kan ikke lagre bilde ! Can't load Image ! Kan ikke laste bilde ! Select a 64x64 Photo Velg et 64x64 bilde You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Klient DCServerList Add Bookmark Legg til Bokmerke Edit Bookmark Endre Bokmerke Select profle Velg profil Please select an profile Vennligst velg en profil Public Offentlig Bookmarks Bokmerker DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Vent Idle Inaktiv Run Kjører Transfer Overfører Error Feil Download Mottar Upload Sender Unknown Ukjent Pause Pause Hub offline Tjener frakoblet User offline Bruker frakoblet User busy Bruker opptatt Send error Sendefeil Change Transfer-Rate Endre Overføringshastighet Please enter a Transfer-Rate [B/s] (0=off) Skriv inn overføringshastighet [B/s] (0=av) Change File-Priority Endre fil-prioritet Please enter a priority Skriv inn prioritet Handshake Håndhilsning Nothing Ingenting Remove Fjern Cancel Avbryt Filebrowser Filfinner Try Connect Prøv å tilknytte bruker User and Hub not found in the queue ! Bruker og tjener finnes ikke i kø ! Nick: Kallenavn: Hub: Tjener: Remove Transfer You are sure ? My Min Browse Share List Bla i Delingslisten Share list not available Delt fil-liste ikke tilgjengelig None Ingen File %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Oversetter Choose a language Velg et språk Chinese Simplified to English Chinese Traditional Dutch Nederlandsk French German Tysk Greek Italian Japanese Korean Portuguese Russian Spanish Spansk Detect language Arabic Bulgarian Chinese Croatian Czech Tjekkisk Danish Dansk Finnish Finsk Hindi Norwegian Norsk Polish Polsk Romanian Rumensk Swedish Svensk OK OK Cancel Avbryt Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Navn Server Tjener Description Beskrivelse Users Brukere Country Shared Delt Minimum share Extra QObject Download Last ned Download To Last ned Til Download As Last ned Som Browse User Files List Brukers Filer Private Chat Privat prat Kick Spark Force Move Tvungen flytt Update User Oppdater Bruker Connect Tilknytt Disconnect Bryt forbindelse Reload Userlist Gjenlast Brukerliste Connect To Hub Tilknytt tjener Add Legg til Add Bookmark Legg til Bokmerke Edit Endre Edit Bookmark Endre Bokmerke Remove Fjern Close Transfer Avbryt Overføring Info Info Try Connect Prøv å tilknytte bruker Remove from Queue Fjern fra kø Remove Transfer from Queue and Disk Fjern overføring fra kø og harddisk Add Slot to User Gi bruker plass Add Permanent Slot to User Gi bruker permanent plass Remove Slot from user Fjern plass fra bruker Save Queue Lagre kø Update Server Oppdater tjener Update all Server Oppdater alle Tjenere Change Transfer-Rate Endre overføringshastighet Copy row to Clipboard Kopier rad til utklippstavle Copy column to Clipboard Kopier kolonne til utklippstavle File Info Filinformasjon Connect To All Hubs Tilknytt Alle Tjenere Search for clones Søk etter identiske filer Remove complete from Queue Fjern fullførte fra køen Load Last Save Lagr Edit Hub Profiles Endre Tjener Profiler Set Hub Profile Velg Tjener Profil Add this extra source Legg til ekstra kilde Edit transfer Endre overføring Edit file priority Endre filprioritet Translate Overføringshastighet Translator Oversetter Disable group Deaktiver gruppering Group by File Grupper etter fil Group by Size Grupper etter størrelse Group by Nick Grupper etter Kallenavn Group by free Slots Grupper etter Ledige Plasser Group by Hub Grupper etter Tjener Group by Path Grupper etter Filsti Group by Host Grupper etter vert Copy Kopier Clear Nullstill Select all Velg alt Close Lukk Group Grupper Hide Gjem Refresh Filelist Oppdater filliste Pause Queue Sett kø på pause Resume Queue Gjenoppstart Kø Insert Smiley Sett inn smilefjes Add Friend Legg til venn Czech Tjekkisk Danish Dansk Dutch Nederlandsk Finnish Finsk France Fransk German Tysk Hungarian Ungarsk Icelandic Islandsk Italy Italiensk Norwegian Norsk Polish Polsk Romanian Rumensk Spanish Spansk Swedish Svensk Copy Link Kopier Lenke Text Encoding Tekstkoding Request secure chat Forespør sikker samtale Close secure chat Lukk sikker samtale Input Inndata Output Utdata Check client version Add Permanent Profile editor Group by Hash Reset Nullstill Dock Fest Undock Exit Avslutt Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Bruker: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (velg en eksisterende nedlastning å legge til) File download Fil nedlasting A same file is already in the queue! Start a multi-download Cancel Avbryt File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Fortsett Overwrite Skriv over File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Group by total Slots Download Folder Nedlastingsmappe Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Comment Kommentar Tag Speed Hastighet Email Share Dele IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.sk.ts0000664000076400007640000101570111144234504016133 0ustar ejsejs DCChat Translation: Translation failed: Line is encrypted. Line is not encrypted. Select download folder Select file for Chat Cleared. Choose a filename to save under Refresh share in progress. Private Chat: Help: /refresh - refresh share /ts - switch time display in chat on/off /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /msg &lt;nick&gt; &lt;message&gt; - send private message Current mode: active passive Switch timestamp Send advertisment. Wrong parameter for '/join' Join to: Wrong parameter for '/msg' Away message disabled. Away message set. Only allowed in private chat. Photo encode error. Photo received. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Operator: yes no Comment: Speed: EMail: Shared: Away: on off Version: Unknown Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Joins: Parts: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Hub Connected Connection timeout Error: ' Disconnected We left the hub. Redirect to Redirect disabled Hubname change: Use password from profile Password from profile is empty No profile found for this hub Password - Please enter your password Wrong password User rejoin the hub. Joins: User left the hub. Parts: User: users OP Kick Please enter a reason Chat List Line is encrypted. Line is not encrypted. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Any DCDebug Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Download mode? Multi Return Single Esc Download all files in this mode DCDialogChat &Send DCDialogChat DCDialogClient 0 Share Chat List DCDialogClient User(s) ... DCDialogDebug Comment &Save Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Send Receive Both malloc info DCDialogEditServer Settings Name Host Description Password DCDialogEditServer &Profile Profile Nick EMail Auto Connect Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Path DCDialogEditTransfer Edit Transfer Settings Nick Hub name Hub address Known hubs DCDialogFileBrowser Name Size Open Save Type TTH Folder Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info File Size Hash Sources DCDialogForceMove OP Force Move Please enter a host Please enter a message DCDialogHubFilter Hub Filter Filter Min. User Contains Name Server Description Settings DCDialogHubListManager Hub List Public Name Server Description double click to hide the toolbar edit filter delete filter Filter add filter double click to show the toolbar Bookmarks connect Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Edit bookmark. Edit Remove bookmark. Remove DCDialogHubProfile Profile Settings Password Auto Connect Hub profile editor Nick Description EMail Tag Secure Socket Layer Delete Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Hub Search Search Mode Results File Size Nick Hub Path Host User Log Results: 0 0/0 Start Start the search. Add Add a search to the searchqueue Filter B Type Any Compressed Document Executable Picture Video Folder Reset Hubs Hub Options Connected Hub Connected Hubs Refresh Public Hubs Bookmark Hubs Filtered Hubs Live filters Max Free Slots (0=off) Search in path+file name only Free Slots Include: Exclude: Apply Expert Clients Multi Search Enable Tag Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Size Exact size Action Start search Add to download queue Do nothing Do the same action next time without asking DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Identify Information Nick: Description: E-Mail: Search Nick: A little description. Add Description Tag (<DCGUI ....>) Add a tag to the description that show some information from you. Away Message: Your line speed. Speed: Away Prefix: Anti-Spam (email at home dot com) Enable/Disable the Anti-spam option. Your nick. The nick for hub searches. Your EMail. Photo Transfer Move Finished Files to this Folder (empty = disabled) Open File Dialog. Download Folder Share Folders Path Alias Rebuild your sharelist. Browse your own share list. Show some information about your sharelist. Add a folder to your sharelist. Remove a folder from your sharelist. Edit a folder from the sharelist. Check and recreate sharelist on startup Settings Download Queue Transfer Request Timings Time to wait for a transfer response from the remote user. Time to wait before a new transfer request is send to the remote user. Resend Timeout (sec.) Response Timeout (sec.) Maximal upload connections. Dynamic upload rate If user quits hub, stop following transfers Download Upload Both None Auto-Search for new sources Connection Mode Active Mode Passive Mode Active Mode Settings Hub Search UDP Listen Port: The udp listen port for incoming search results. Test Select a interface. Get the ip from the host. Passive Mode Settings No multi hub search ! No incoming connections ! Send warn message to remote user on active mode request Hub Connections Reconnect Timeout (sec.) The time between a reconnect. How often we reconnect to a hub. Allow Force Move Private Address Space (rfc1918) Ignore private address space connections GUI General Language File Select Language. Theme Test the new theme. Units Auto Byte Application Font Data Folder Query Query on exit Query on File Delete Messages Show Status Messages Transfer View Chunk Percent File Percent Chunk Size File Size Download Rate Single Download Rate Multi Remaining Time Single Remaining Time Multi Chat Chat options Ctrl + Enter Enter Alt + Enter Alt + S Send message with Color Open Private Chat Window Open the chat window on incoming messages. Use tab for every chat window Show send button Show joins and parts Forward private to public chat Enable emoticons in chat Client Client options seconds Away after Auto Away Mode User-List right alignment Sound Sound Files Play a sound when disconnecting from a hub Play a sound when sending a message Play a sound when receiving a message Play a sound when connecting to a hub Play a sound when receiving first message Disable Sound Disable sound when away External Player Log Timestamp Private Chat Hub Chat Logfile Logfile enabled Nick name filter Enable logging Append hub name to log file name Disable logging for public chat Append hub host to log file name Append date to log file name Source Url's Add a URL to the list. Remove a URL from the list. Store local Security Flood Protection Kick the user for flooding (only for Operators) Kick Message Transfer Cert/Key IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Other Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogSplash Valknut DCDialogSpy Spy Clear Statistic Active: 0 Reject: Results: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Transfer Nick State Wait Files Local File / Nick Size / Hub Remote File Slots Hub Log File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub DCDialogUserCommandLines User Command Lines For On Use for all nicks DCDialogUsersList User Users List Photo Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser file Items Files Total Directories Root Directory Select destination Select a filename Filebrowser Choose a file Choose a filename to save under Folder Download contents? Download the contents of " Failed to load filelist Unable to load Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTransferInfo File Transfer Info DCGuiApp &Options Ctrl+O Quick Options Quick options F12 Download mode: Ask Download mode: Single Download mode: Multi Reload Plugins &Reload Plugins Exit Ctrl+Q Quits the application Toolbar Tool&bar Enables/disables the toolbar &Statusbar Enables/disables the statusbar &Dock Dock the application &Cascade Cascades all windows Tile &Horizontally &Minimize H&ub List Ctrl+U Transfer List &Transfer List Ctrl+T Hub &Search Ctrl+S S&py Ctrl+P Users Ctrl+F &Normal Ctrl+N &Away Ctrl+A &About... Away &Mode &File &View &Action &Window &Help Ready. Quit... Do you really want to quit? Open options dialog... Refresh share in progress. Exiting application... Exiting application... aborted Toggle toolbar... Toggle statusbar... Dock/Undock application... Show/hide transfer list window ... Show/hide hub list window ... Show/hide spy window ... Show/hide users window ... Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Bookmarks Add Bookmark Edit Bookmark Remove bookmarks You are sure ? Remove Cancel Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Save profile Do you want to save your changes? Are you sure? Delete profile for DCHubSearch Start Stop Hub Search Error Please select a connected hub. No connected hubs found. No hubs found. USER FILE Select download folder Select file for Filelist download Not connected to required hub! Connect Cancel Choose a filename to save under Choose a file to open Please add a search! Multi Search only work in active mode! Folder Unknown None Directory File Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions Security Log Sound GUI Chat Transfer General Connection Settings Mode Identify Select a 64x64 Photo Add new nick name filter Please enter a nick Interface List Please select an interface Select sound player Select transfer cert Select transfer key Select a browser au wav All Files Select sound file Select download folder Select download finished folder Select data folder Select log file Select share folder Chat Timestamp Chat Local Nick Chat Local Text Chat Remote Nick Chat Remote Text Chat Status Nick Chat Status Text Public Chat Timestamp Public Chat Local Nick Public Chat Local Text Public Chat Remote Nick Public Chat Remote Text Public Chat Status Nick Public Chat Status Text Public Private Chat Nick Public Private Chat Text bytes Total shared: Share List Info Select language file HubList URL Please enter a url You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Other Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Unknown Wait Idle Run Hub offline User offline User busy Send error Transfer Error Pause Change Transfer-Rate Please enter a Transfer-Rate [B/s] (0=off) Try Connect User and Hub not found in the queue ! Nick: Hub: Remove Transfer You are sure ? Remove Cancel Change File-Priority Please enter a priority My None File %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Chinese Simplified to English Chinese Traditional Dutch French German Greek Italian Japanese Korean Portuguese Russian Spanish Detect language Arabic Bulgarian Chinese Croatian Czech Danish Finnish Hindi Norwegian Polish Romanian Swedish Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Server Description Users Country Shared Minimum share Extra QObject Download Download To Download As Add this extra source Browse User Files Private Chat Kick Force Move Update User Connect Disconnect Reload Userlist Connect To Hub Connect To All Hubs Add Add Bookmark Edit Edit Bookmark Remove Close Transfer Info Try Connect Pause Queue Resume Queue Remove from Queue Remove complete from Queue Remove Transfer from Queue and Disk Save Queue Update Server Update all Server Change Transfer-Rate Copy row to Clipboard Copy column to Clipboard File Info Search for clones Load Save Edit transfer Edit file priority Translate Translator Insert Smiley Add Friend Request secure chat Close secure chat Disable group Group by File Group by Size Group by Nick Group by free Slots Group by Hub Group by Path Group by Host Copy Copy Link Clear Select all Close Hide Refresh Filelist Czech Danish Dutch Finnish German Hungarian Icelandic Norwegian Polish Romanian Spanish Swedish Group Check client version Add Permanent Profile editor Group by Hash Reset Dock Undock Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: User Commands Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) File download A same file is already in the queue! Start a multi-download Cancel File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Overwrite File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Group by total Slots Download Folder Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Comment Tag Speed Email Share IP Lock/PK Supports valknut-0.4.9/valknut/ts/valknut.fr.ts0000664000076400007640000140726411144234504016136 0ustar ejsejs DCBrowseFileTree Download Télécharger Download Dir Dossier de téléchargement Select destination Sélectionner une destination Select a filename Sélectionner un nom de fichier <wrong length> <mauvaise longueur> Choose a filename to save under Choisissez un nom de fichier pour la sauvegarde DCChat Private Chat: Dialogue Privé: Message not send ! Message non envoyé ! Private Chat: Dialogue Privé: Chat Cleared. Dialogue effacé. Send Clipboard Envoi vers le presse-papier Translation: Traduction: Translation failed: Tranduction échouée: Current mode: Mode courant: active actif passive passif Refresh share in progress. Raffraichissement du partage en cours. Refresh share allready in progress. Raffraichissement du partage déjà en cours. Switch timestamp Changer date et heure Send advertisment. Envoyer un avertissement. Wrong parameter for '/join' Mauvais paramètre pour '/join' Join to: Joindre: Wrong parameter for '/msg' Mauvais paramètre pour '/msg' Private message send. Message privé envoyé. Private message not send ! Message privé non envoyé ! Away message disabled. Message d'absence désactivé. Away message set. Message d'absence enregistré. Line is encrypted. La ligne est encryptée. Line is not encrypted. La ligne n'est pas encryptée. Help: Aide: /clear - clear the chat window /clear - Efface la fenêtre de dialogue /mode - show current mode /mode - Affiche le mode courant /refresh - refresh share /refresh - Raffraichissement du partage /ts - switch time display in chat on/off /ts - Active l'affichage de l'heure dans les dialogues on/off /dcgui - send an advertisment to the hub /dcgui - envoi un avertissement au hub /join <address> - disconnect from currently connected hub and connect to another hub /join <adresse> - se déconnecte du hub courant et se connecte à un autre hub /msg <nick> <message> - send private message /msg <nom> <message> - envoi un message privé /away <message> - set automatic response for private messages; if the message is empty, disable it /away <message> - Active l'envoi de message automatique pour les dialogues privés ; si le message est vide, désactive l'envoi Choose a filename to save under Choisissez un nom de fichier pour la sauvegarde /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;adresse&gt; - Déconnexion du hub courant et connexion à un autre hub /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nom&gt; &lt;message&gt; - Envoyer un message privé /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;message&gt; - Active la réponse automatique pour les messages privés, désactivé si le message est vide Select download folder Sélectionner le dossier de téléchargement Select file for Choisissez le fichier pour Text Encoding Encodage du texte Choose a codec Choisissez un codec Download DCGUI-QT from http://dc.ketelhot.de It does everything, and makes you coffee Télécharger DCGUI-QT depuis http:/dc.ketelhot.de Il fait tout, et même le café Only allowed in private chat. Autorisé seulement en dialogue privé. Client use wrong version. Le client utilise une mauvaise version. No Photo found. Pas de photo trouvée. Can't read photo. Ne peut lire la photo. Photo encode error. Erreur dans l'encodage de la photo. Photo not send. Photo non envoyée. Photo send. Photo envoyée. Photo received. Photo reçue. Refresh share already in progress. Raffraichissement du partage déjà en cours. Chat: Dialogue: Message not sent! Message non envoyé! /clear - clears the chat window /clear - Efface la fenêtre de dialogue /mode - shows the current mode /mode - Affiche le mode courant /dcgui or /adv - send an advertisment to the hub /dcgui ou /adv - Envoi un avertissement au hub /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;message&gt; - Déconnexion du canal avec un message optionnel /ls &lt;nick&gt; - get share list from user /ls &lt;nick&gt; - Récupérer la liste de partage de l'utilisateur /grant &lt;nick&gt; - grant user a slot /grant &lt;nick&gt; - Donner un slot à un utilisateur /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;nick&gt; - Donner un slot permanent à un utilisateur /friend &lt;nick&gt; - add user to friend list friend &lt;nick&gt; - Ajouter un utilisateur à la liste des amis /fav - add hub to bookmark list /fav - Ajouter le hub à la liste des favoris /info - show user info /info - Afficher les informations de l'utilisateur /now - send current time to the chat /now - Envoyer l'heure actuelle au dialogue /raw - send raw message /raw - Envoyer un message brut Get info failed. Récupération d'information ratée. Info: Info: Nick: Nom : Operator: Operateur: yes oui no non Comment: Commentaire: Speed: Vitesse : EMail: EMail: Shared: Partagé: Away: Absent: on Activé off Désactivé Version: Version: Unknown Inconnu Tag: Marque: Uptime Temps de fonctionnement day jour days jours hour heure hours heures minute minute minutes minutes Download sharelist from Télécharger la liste de partage à partir de No nick, try /dchelp Pas de nom, essayer /dchelp Permanent slot added for Slot permanent ajouté pour Slot added for Slot ajouté pour Added to friend list Ajouté à la liste des amis Add bookmark hub Ajouter un hub favoris Private message sent. Message privé envoyé. Private message not sent! Message privé non envoyé ! Photo not found. Photo non trouvée. Can't read your photo. Impossible de lire votre photo. Photo not sent. Photo non envoyée. Photo sent. Photo envoyée. /uptime - show valknut uptime /uptime - afficher le temps de fonctionnement de valknut Download Valknut from http://dcgui.berlios.de It does everything ! Works on almost any platform you can think of and makes you coffee. Télécharger Valknut à l'adresse http://dcgui.berlios.de Il fait tout ! Fonctionne sur la plupart des plates-formes auquelles vous pouvez penser et fait votre café. The user is using an old version or not using Valknut L'utilisateur a une vieille version ou n'utilise pas Valknut /adv - send an advertisment to the hub Alt + S Alt + S Alt + Enter Alt + Enter Ctrl + Enter Ctrl + Enter Enter Enter Joins: Arrivée: Parts: Départ: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Octets Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Problème de connexion Error: ' Erreur: ' Validate denide Validation refusée Sorry, client work in passive mode Désolé, le client utilise le mode passif Redirect to Redirection vers Password - Mot de passe - Please enter your password Entrez votre mot de passe svp Wrong password Mot de passe incorrect You must enter a search word. Vous devez entrer un mot à rechercher. Private Chat Dialogue Privé Browse User Files Explorer les fichiers de l'utilisateur Download File Télécharger le fichier Disconnect Se Déconnecter Connect Se Connecter Search Error Erreur de recherche Kick Sortir Force Move Bannir OP Force Move Déplacement obligé par un OP Please enter host Entrer l'hôte svp Please enter a message Entrer un message svp Redirect disabled Redirection désactivée Private chat only in current hub ! Dialogue privé seulement dans le hub courant ! Update User Mettre à jour l'utilisateur Reload Userlist Recharger la liste de l'utilisateur Select download folder Sélectionner le dossier de téléchargement Select file Sélectionner un fichier OP Kick Sorti par un OP Please enter a reason Entrez une raison svp User: Utilisateur: Connected Connecté Disconnected Déconnecté Chat Cleared. Chat effacé. Use password from profile Utilise le mot de passe du profil Password from profile is empty Le mot de passe du profil est vide No profile found for this hub Pas de profil pour ce hub users utilisateurs Hubname change: Changement du nom du hub: User rejoin the hub. Un utilisateur a rejoint le hub. User left the hub. Un utilisateur a quitter le hub. Hub Hub Sorry, client works in passive mode Désolé, l'utilisateur travaille en mode passif We left the hub. Nous avons quitté le hub. Joins: Arrivée: Parts: Départ: Chat List Liste du dialogue Line is encrypted. La ligne est encryptée. Line is not encrypted. La ligne n'est pas encryptée. Your Nick is already in use. Votre nom est déjà utilisé. Sorry, this client works in passive mode Désolé, ce client est en mode passif Disconnect. Déconnexion. Connect. Connexion. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Cancel Annuler Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Columns Colonnes Any N'importe DCDebug Send error Envoyer erreur Could not send the data. Error '%1'. Impossible d'envoyer les données. Erreur '%1'. Send Envoyer Thanks for your help. Merci pour votre aide. Save error Sauver l'erreur Can't open file '%1' for writing. Impossible d'ouvrir le fichier '%1' en écriture. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Choisissez un nom de fichier pour la sauvegarde Text (*.txt) DCDialogAbout About Au sujet de OK OK Authors Auteurs License Licence Sponsor Sponsor Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Homepage: http://dcgui.berlios.de Valknut - Un client de partage de fichiers compatible à Direct Connect(new line) (new line) (C) 2001-2004 Mathias Küster(new line) (new line) Page web: http://dcgui.berlios.de Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Télécharger Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Explorateur File Fichier Size Taille Files Fichiers Shared Partagés DCDialogChat Form1 Feuille1 Hide Cacher Clear Nettoyer Send Clipboard Envoi vers le presse-papier &Send &Envoyer en_de en_de en_fr en_fr en_zh en_zh en_it en_it en_ja en_ja en_ko en_ko en_pt en_pt en_es en_es zh_en zh_en fr_en fr_en fr_de fr_de de_en de_en de_fr de_fr it_en it_en ja_en ja_en ko_en ko_en pt_en pt_en ru_en ru_en es_en es_en DCDialogChat DCDialogClient Form1 Feuille1 User Utilisateur Nick Nom Comment Commentaire Speed Vitesse EMail EMail Bytes Octets Chat Dialogue Hub Hub Spy Espionner On/Off On/Off Search Recherche File Fichier Size Taille Slot Slot Path Chemin Results: Résultats: Filter Filtre At Least Au Moins At Most Au Plus KB Ko MB Mo Any N'importe MP3 MP3 Compressed Compressé Document Document Executable Executable Picture Image Video Vidéo Folder Répertoire Type Type Results Résultats 0 0 Share Partage Host Hôte GB Go Max Free Slots (0=off) Maximum de Slots Libres (0=off) Free Slots Slots Libres Send Envoyer Chat List Liste du dialogue DCDialogClient DCDialogClient User(s) Utilisateur(s) ... ... Tag Marque IP IP Lock/PK Bloquer/PK Supports Supports DCDialogConnectionManager Connection Connexion DCDialogDebug DCGUI Crash Handler DCGUI Crash Handler Comment Commentaire &Save &Sauver Save to file. Sauver dans le fichier. S&end &Envoyer Send bugreport. Envoyer un rapport de bogue. E&xit E&xit Exit. Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Aucun Send Envoyer Receive Recevoir Both Les deux OK OK Cancel Annuler malloc info DCDialogEditServer Form1 Feuille1 Settings Paramètres Name Nom Host Hôte Description Description Cancel Annuler Accept Accepter Password Mot de passe Autoconnect Connexion automatique DCDialogEditServer DCDialogEditServer &Cancel &Annuler &OK &OK &Profile &Profile Profile Profil Nick Nom EMail EMail Auto Connect Connexion automatique Tag Marque Secure Socket Layer couche de sockets sécurisée Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Editer le chemin de partage Alias Alias Path Chemin &Cancel &Annuler &OK &OK DCDialogEditTransfer Edit Transfer Editer le transfert Settings Paramètres Nick Nom Hub name Nom du hub Hub address Adresse du hub Cancel Annuler Accept Accepter Known hubs Hubs connus &Cancel &Annuler &OK &OK DCDialogFileBrowser Form1 Feuille1 New Column Nouvelle colonne Name Nom Size Taille File Type Type de fichier Open Ouvrir Save Sauver Encoding: Encodage: Type Type TTH TTH Folder Répertoire Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Information Transferts Fichiers File Fichier Size Taille Done Terminé Hash Hachage Sources Sources DCDialogForceMove OP Force Move Déplacement obligé par un OP Please enter a host Please enter a message Entrer un message svp OK OK Cancel Annuler DCDialogGetURL Get URL Récupérer l'adresse Cancel Annuler &Cancel &Annuler DCDialogHubFilter Hub Filter Filtre du hub Filter Filtre Min. User Utilisateur Min Contains Contient Cancel Annuler Save Sauver Name Nom Server Serveur Description Description Settings Paramètres &OK &OK &Cancel &Annuler DCDialogHubListManager Hub List Liste des hubs Public Public Name Nom Server Serveur Description Description User Utilisateur double click to hide the toolbar double clic pour cacher la barre d'outils edit filter editer le filtre delete filter supprimer le filtre Filter Filtre update public hublist Mettre à jour la liste publique des hubs add filter ajouter un filtre reload public hublist Recharger la liste publique des hubs double click to show the toolbar double clic pour afficher la barre d'outils Bookmarks Favoris connect Se Connecter Users Utilisateurs Shared Partagés Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Sauver Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Ajouter Edit bookmark. Edit Editer Remove bookmark. Remove Supprimer DCDialogHubProfile Edit hub Profiles Editer les profils des hubs Profile Profil Create Créer Delete Effacer Save Sauver Settings Paramètres Password Mot de passe OK OK Auto Connect Connexion automatique Cancel Annuler Hub profile editor Editeur de profil de hub &OK &OK &Cancel &Annuler Nick Nom Description Description EMail EMail Tag Marque Secure Socket Layer couche de sockets sécurisée Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch HubSearch HubSearch Results Résultats Nick Nom File Fichier Size Taille Slot Slot Hub Hub Path Chemin Log Journal Search Recherche Stop Stop Results: Résultats: Search Options Options de Recherche Connected Hubs Hubs Connectés Available Hubs Hubs Disponibles Bookmark Hubs Hubs Favoris Filter Filtre Type Type At Least Au Moins At Most Au Plus KB Ko MB Mo Any N'importe MP3 MP3 Compressed Compressé Document Document Executable Executable Picture Image Video Vidéo Folder Répertoire Hub Search Recherche dans des Hubs Host Hôte Threads Processus GB Go Free Slots Slots Libres Max Free Slots (0=off) Maximum de Slots Libres (0=off) Exact Exact B B 0/0 0/0 0 0 Search in path+file name only Chercher uniquement dans le nom de dossier + fichier ... ... Search History Historique de recherche History Historique Hubs Hubs Hub Options Options du hub Connected Hub Hub connecté Refresh Rafraichir Public Hubs Hubs publics Expert Expert User Utilisateur Search User Chercher un utilisateur Reset Remise à zéro Clients Utilisateurs Live filters Filtres actifs Include: Inclure: Exclude: Exclure: Apply Appliquer Mode Mode Add Ajouter User/File Utilisateur/Fichier Search for a user or a file. Chercher pour utilisateur ou pour un fichier. Start Lancer Start the search. Lancer la recherche. Add a search to the searchqueue Ajouter une recherche dans file d'attente Filtered Hubs Hubs filtrés Multi Search Recherches multiples Enable Tag Activer le marquage Hash Hachage Audio Audio TTHash TTHash KiB Kb MiB Mb GiB Gb Total Slots Purge Clear the search history Count Compteur Ready Overall search status Clear search string and set search size, size mode and file type to default TTH TTH Any size At least At most Maximum results Unlimited IP IP DCDialogMagnet Magnet Link Details Link TTH TTH Name Nom Size Taille Exact size Action Action Start search Add to download queue Do nothing Do the same action next time without asking OK OK Cancel Annuler DCDialogMessage DCDialogMessage DCDialogMessage Do not show this again. Ne plus afficher cela plus tard. DCDialogOptions Options Options Identify Identification Information Informations E-Mail: Adresse EMail : Nick: Nom : Description: Description : Speed: Vitesse : 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Satellite ISDN ISDN DSL DSL Cable Câble LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Filtre Anti-Spam (email at home dot com) Transfer Transfert Filetransfer Transfert de fichiers Share Folders Répertoires partagés Rebuild List Reconstruire la liste Info Informations Add Ajouter Remove Supprimer Download Folder Dossier de téléchargement Browse Explorer Upload Options Options d'envoi Max. simultaneous uploads: Nombre max. de téléchargements simultanés: Limit transferrate (0=off) Taux de transfert limite (0=off) Byte/sec. Octet/sec. Connection Connexion Settings Paramètres Mode Mode Active Mode Mode Actif Passive Mode Mode Passif Passive Mode Settings Configuration du Mode Passif No multi hub search ! No incoming connections ! Pas de recherche sur plusieurs hubs! Pas de connection entrante ! Active Mode Settings Configuration du Mode Actif TCP Listen Port: Port d'écoute TCP: 412 412 Hub Search Afficher la Recherche sur le Hub Recherche sur le Hub UDP Listen Port: Port d'écoute UDP: Use ip from interface (ppp0,eth0) Utiliser l'IP de l'interface (ppp0,eth0) Test Essayer Use wrong ip (Firewall/Portforward) Utiliser une mauvaise IP (Pare-feu/Redirection de port) Interface IP IP de l'interface Wrong IP Fausse IP GUI Affichage GUI Options Options d'affichage open private chat window Ouverture d'une fenêtre de dialogue Other Autres Other Options Autres Options Hublist Liste des Hubs Store local Stocker localement Save Sauver Cancel Annuler Windows Fenêtre Theme Thème Language File Fichier de langue Connections Connections Reconnect Counter (0=off) Compteur de reconnexions (0=off) Reconnect Timeout (sec.) Temps avant la reconnexion (sec.) Allow Force Move Permettre le déplacement forcé Source Url's Urls Sources URL URL Max. upload slots (0=off) Maximum de slots pour l'envoi (0=off) change size values automatically to kb/mb/gb Changer automatiquement la taille en ko/mo/go Application Font Police de l'application Rebuild Reconstruire Maximal upload connections. Maximum de connexion pour l'envoi. Transferrate for each slot. Taux de transfert pour chaque Slot. Transfer Request Timings Temps de transfert requis Resend Timeout (sec.) Intervalle de renvoi (sec.) Response Timeout (sec.) Intervalle de réception (sec.) Hub Connections Connexions aux Hubs Sound Son External Player Son externe Enable Sound Activé le Son Chat Dialogue Units Unités Auto Auto Byte Octets GByte Goctets KByte Koctets MByte Moctets General Général Disable Sound Désactiver le son Play a sound when receiving a message Jouer un son à la réception d'un message Play a sound when disconnecting from a hub Jouer un son lors de la déconnexion d'un hub Play a sound when receiving first message Jouer un son lors de la réception du premier message Play a sound when sending a message Jouer un son lors de l'envoi d'un message Play a sound when connecting to a hub Jouer un son lors de la connexion à un hub Disable sound when away Désactiver le son pendant votre absence Files Fichiers Player Lecteur Sound Files Fichiers sons Connect Se Connecter Preview Aperçu Disconnect Se Déconnecter Send Envoyer Receive Recevoir 1st Receive 1ere Réception Log Journal Timestamp Date et heure Private Chat Dialogue Privé Hub Chat Dialogue du hub Download Queue File de téléchargement Save Queue in minutes (0=off) Sauver la file (en minutes) (0=off) Move Finished Files to this Folder (empty = disabled) Déplacer les fichiers terminés vers ce dossier (vide = ne rien faire) Use wrong ip/hostname (Firewall/Portforward) Utiliser un faux IP/Nom de connexion (Parefeu/Masquage de port) No multi hub search ! No incoming connections ! Pas de recherche multi-hubs ! Pas de connexions entrantes ! Send warn message to remote user on active mode request Envoyer un message d'avertissement à un utilisateur distant pour une demande de mode actif Status Messages Messages d'états Show Status Messages Afficher les messages d'états Open Private Chat Window Ouvrir un fenêtre de dialogue privée Transfer Options Options de transfert Transfer View Affichage de transfert Chunk Percent Pourcentage des tronçons File Percent Pourcentage du fichier Chunk Size Taille du tronçon Download Rate Taux de téléchargement File Size Taille du fichier Search Nick: Nom de recherche : Remaining Time Temps restant Send hide private chat to public chat Evoyer le dialogue privé caché vers le dialogue public Chat options Options du dialogue Message filter Filtre de message Hide popups of more than ? lines (0=off) Cacher les menus de plus de ? lignes (0=off upload Envoi download Téléchargement Add Description Tag (<DCGUI ....>) Ajouter (<DCGUI>) dans le nom d'utilisateur Max. rate B/s (0=off) Taux maximum B/s (0=off) Folder Répertoire New Column Nouvelle colonne Away Message: Message d'absence: Get Prendre Refuse private chat messages from offline users Refuser le dialogue des utilisateurs absents Your line speed. La vitesse de votre ligne. Your nick. Votre nom. The nick for hub searches. Votre nom pour la recherche. Your EMail. Votre adresse EMail. Enable/Disable the Anti-spam option. Activer/Désactiver l'option anti-spam. A little description. Une petite description. Add a tag to the description that show some information from you. Ajouter une marque dans la description qui montre des informations sur vous. The tcp listen port for incoming connections. Le port d'écoute tcp pour les connexions entrantes. The udp listen port for incoming search results. Le port d'écoute udp pour les résultats de recherche. Get the ip from the interface. Utiliser l'IP de l'interface. Select a interface. Choisir une interface. Get the ip from the host. Prendre l'IP de l'hote. The time between a reconnect. Temps avant la reconnexion. How often we reconnect to a hub. Combien avant la reconnexion à un hub. Rebuild your sharelist. Reconstruire la liste de partage. Add a folder to your sharelist. Ajouter un répertoire à la liste de partage. Remove a folder from your sharelist. Enlever un répertoire de la liste de partage. Show some information about your sharelist. Afficher des informations sur votre liste de partage. Browse your own share list. Voir votre propre liste de partage. Time to wait for a transfer response from the remote user. Temps d'attente pour la réponse d'un transfert distant. Time to wait before a new transfer request is send to the remote user. Temps d'attente avant le lancement d'une nouvelle requête à l'utilisateur distant. Test the new theme. Tester le nouveau thème. Open the chat window on incoming messages. Ouvrir la fenêtre de dialogue pour les messages entrants. Emoticons Icônes Enable emoticons in chat Activer les icônes dans les dialogues Data Folder Répertoire de données Send Chat with Envoyer dialogue avec Ctrl + Enter Ctrl + Enter Enter Enter Alt + Enter Alt + Enter Alt + S Alt + S User Utilisateur User Options Options de l'utilisateur Show Version Tag in User-Description Marquer la version dans la description de l'utilisateur Messages Messages Query on exit Requête en quittant Logfile Fichier journal Logfile enabled Journal activé Security Sécurité Flood Protection Protection contre saturation Don't Display Messages after: (1<=off) Ne pas afficher les messages après: (1<=off) If Op kick user After: (Don't Display Message <= off) Si l'OP banni l'utilisateur après: (Ne pas afficher les messages <=off) Kick Message Message de banissement Private Address Space (rfc1918) Classes d'adresses privées (RFC1918) Ignore private address space connections Ignorer les connexions de classes d'adresses privées Query Requête Client Utilisateur User-List Options Options de la liste des utilisateurs User-List right alignment Alignement à droite de la liste des utilisateurs Don't Display Messages after X retry (0=off) Ne pas afficher les messages après X essais (0=off) Kick the user for flooding (only for Operators) Bannir l'utilisateur pour saturation (Uniquement les opérateurs) Show send button Afficher le bouton envoyer Use Utiliser to send the message Pour envoyer le message Dynamic upload rate Taux d'envoi dynamique Hide popups of more than Cacher les menus de plus de Send message with Envoyer un message avec lines (0=off) lignes (0=off) Browser Explorateur Use tab for every chat window Utiliser Tab pour toutes les fenêtres de dialogue Color remote Couleur distante Allow send private messages to offline users Autoriser l'envoi de message privé pour les utilisateurs non connectés Max. paragraphs (0=off) Paragraphe max. (0=off) Client options Options de l'utilisateur Show client windows minimized Minimiser l'affichage de la fenêtre utilisateur Recreate sharelist on startup if total filesize has changed Recréer la liste de partage si la taille totale des fichiers a changé Max. uploads to user (0=off) Maximum d'envoi pour l'utilisateur (0=off) Color Couleur Remote text Texte distant Remote nick Nom distant Transfer Cert/Key Transfert Cert/Clé User quitting hub L'utilisateur quitte le hub If user quits hub, stop following transfers Si l'utilisateur quitte le hub, stopper les transferts suivants Upload Envoi Both Les deux Download Téléchargement None Aucun Auto-Search Recherche automatique Auto-Search for new sources Recherche automatique pour les nouvelles sources Download Rate Single Taux de téléchargement simple Download Rate Multi Taux de téléchargement multiple Remaining Time Single Temps restant simple Remaining Time Multi Temps restant multiple Reload every hour (0=off) Recharger toutes les heures (0=off) Max. rate KB/s (0=off) Taux Maxi KB/s (0=off) Path Chemin Alias Alias Edit Editer Edit a folder from the sharelist. Editer un répertoire de la liste de partage. Open File Dialog. Ouvrir une fenêtre de choix de fichier. Add a URL to the list. Ajouter une URL à la liste. Remove a URL from the list. Enveler une URL de la liste. 28.8Kbps 28.8Kbps Enable logging Autoriser la journalisation Append date to log file name Ajouter la date au nom du fichier journal Nick name filter Filtre sur le nom Enable nick name filter Activer le filtre sur le nom Disable logging for public chat Désactiver le journal pour le dialogue public Append hub name to log file name Ajouter le nom du hub au fichier journal Append hub host to log file name Ajouter l'adresse du hub au fichier journal &Save &Sauver &Cancel &Annuler Forward private to public chat Transférer les messages privés vers le dialogue public Ignore offline users Ignorer les utilisateurs déconnectés Away Prefix: Préfixe d'absence: Select Language. Choisir un langage. Recreate every hour (0=off) Recréer toutes les heures (0=off) Check and recreate sharelist on startup Vérifier et recréer la liste de partage au démarrage seconds secondes Away after Absent après Auto Away Mode Mode d'absence automatique Ignore messages to offline users Ignorer les messages vers les utilisateurs déconnectés Ignore messages from offline users Ignorer les messages des utilisateurs déconnectés Show joins and parts Afficher les arrivées et les départs Photo Photo Columns Colonnes Comment Commentaire Speed Vitesse EMail EMail Share Partage Query on File Delete Confirmer en cas de suppression de fichier IP, Hostname or Interface IP, nom de l'ordinateur ou interface Get Interface Récupérer l'interface Get Internet IP Récupérer l'adresse Internet IP or Hostname IP ou nom de l'ordinateur Network Interface Interface réseau Listen on IP Ecouter sur l'IP Tag Marque IP IP Lock PK Bloquer PK Supports Supports Update every hour (0=off) Mise à jour chaque heure (0=off) Hub Lists Listes des hubs Disable hash list Désactive la liste de hachage GiB Gb KiB Kb MiB Mb Edit hublist url. Editer l'URL de la liste des hubs. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Nom Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Explorateur de liste de fichiers Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList Server List Liste des serveurs connect Se Connecter Public Public reload Recharger Name Nom Server Serveur Description Description User Utilisateur update Mise à jour 0 0 servers serveurs Bookmarks Favoris Hub List Liste des hubs Filter Filtre Add Ajouter Edit Editer Del Supprimer 0/0 0/0 double click to hide the toolbar double clic pour cacher la barre d'outils edit filter editer le filtre delete filter supprimer le filtre ... ... update public hublist Mettre à jour la liste publique des hubs add filter ajouter un filtre reload public hublist Recharger la liste publique des hubs double click to show the toolbar double clic pour montrer la barre d'outils DCDialogSplash Form1 Feuille1 Dcgui Dcgui Valknut Valknut DCDialogSpy Spy Espionner Spy On/Off Espionnage On/Off Clear Nettoyer Text Texte Count Compteur Statistic Statistique Active: Actif: 0 0 Reject: Rejet: Results: Résultats: Search Error: Erreur de recherche: Result Error: Erreur de résultat: Passive: Passif: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Liste des transferts Nick Nom Server Serveur State Etat Transfer Transfert File Fichier Wait En Attente Size Taille Log Log Slots Slots Hub Hub 0/0 0/0 Files Fichiers Local File / Nick Fichier/Nom Local Size / Hub Taille / Hub Remote File Fichier distant Extended Allonger Server/User IP Serveur / Utilisateur (IP) double click to hide the toolbar double clic pour cacher la barre d'outils double click to show the toolbar double clic pour activer la barre d'outils File Name Nom de fichier Local File Fichier local Hub/File hub/fichier IP/Size IP/Taille TTH TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK Cancel Annuler DCDialogUpdateManager Update Manager Gestionnaire de mise à jour Update Mise à jour Check update Vérifier la mise à jour DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Dialogue PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Nom Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK Cancel Annuler DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK Cancel Annuler DCDialogUsersList Users List Liste des utilisateurs Friends Amis User Utilisateur Server name Nom du serveur Description Description Friend-List Liste des amis Photo Photo Slot Slot Ignore DCEditServer Please enter a hubname. SVP Entrez un nom de hub. Please enter a hubhost. SVP Entrez un nom d'ordinateur. DCFileBrowser Items Eléments Files Fichiers Total Total Directories Répertoires Root Directory Répertoire racine <wrong length> <mauvaise longueur> file Fichier Select destination Sélectionner une destination Select a filename Sélectionner un nom de fichier Filebrowser Explorateur de fichiers open filelist dialog Ouvrir une fenêtre de liste de fichiers Choose a file Choisissez un fichier save file dialog sauver un fichier de dialogue Choose a filename to save under Choisissez un nom de fichier pour la sauvegarde Folder Répertoire Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Fichier does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Aucun Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Télécharger File allready download Le fichier a déjà été téléchargé File allready exist ! Le fichier existe déjà ! Resume Continuer Overwrite Ecraser Cancel Annuler Start Multi Download Lancer un téléchargement multiple File allready in the queue and not mark as multi download ! Fichier déjà dans la liste et non marqué comme téléchargement multiple ! File allready in the queue with a different size ! Fichier déjà dans la liste mais avec une taille différente ! You can start a Multi Download ! Vous pouvez démarrer un téléchargement multiple ! The same user/file is allready in the queue ! Le même utilisateur/fichier est déjà dans la liste ! A same file is allready in the queue ! Un fichier identique est déjà dans la liste ! If you want to download all files in this mode ? Souhaitez-vous télécharger tous les fichiers dans ce mode ? Not connected to required hub! Pas connecté sur le hub requis ! Connect Se Connecter The same user/file is already in the queue ! Le même utilisateur/fichier est déjà dans la file d'attente ! File already in the queue and not marked as multi download ! Fichier déjà dans la file d'attente et non marqué comme un téléchargement multiple ! File already in the queue with a different size ! Fichier déjà dans la file d'attente avec une taille différente ! (choose an existing download to add to) (ajouter dans un téléchargement existant) A same file is already in the queue! Un même fichier est déjà dans la file d'attente ! Start a multi-download Démarrer un téléchargement multiple File is already in the queue but not mark as a multi-download! Le fichier est déjà dans la file d'attente mais non marqué comme un téléchargement multiple ! File is already in the queue with a different size! Le fichier est déjà dans la file d'attente avec une taille différente ! File already downloaded! Fichier déjà téléchargé ! File already exists! Le fichier existe déjà ! You can start a multi-download! Vous pouvez démarre un téléchargement multiple ! Do you want to download all files in this mode? Voulez-vous télécharger tous les fichiers dans ce mode ? Repair File Réparer le fichier Enter byte range (m-n) Entrez un rang d'octets (m-n) Repair BIN Sectors Réparer les secteurs BIN Enter sector range (m[-n]) Entrez un rang de secteur (m[-n]) DCFileTransferInfo File Transfer Info Information Transferts Fichiers DCGuiApp Options Options &Options &Options Ctrl+O Ctrl+O Open option dialog Ouvrir la boîte à dialogue des options Exit Quitter E&xit E&xit Ctrl+Q Ctrl+Q Quits the application Quitter l'application Exit Quits the application Quitter Quitte l'application Toolbar Barre d'outils Tool&bar Barre d'&outils Enables/disables the toolbar Barre d'outils Activer/Désacitver barre d'outils Toolbar Enables/disables the toolbar Barre d'outils Activer/Désacitver barre d'outils Statusbar Barre de status &Statusbar Barre de &status Enables/disables the statusbar Barre de Status Activer/Désacitver barre de status Statusbar Enables/disables the statusbar Barre de Status Activer/Désacitver barre de status Cascade Cascade &Cascade &Cascade Cascades all windows Mettre en cascade toutes les fenêtres Cascade Cascades all windows Mettre en cascade Mettre en cascade toutes les fenêtres Tile Mosaïque &Tile &Mosaïque Tiles all windows Afficher toutes les fenêtre en Mosaïque Tile Tiles all windows Mosaïque Afficher toutes les fenêtre en Mosaïque Server List Liste des serveurs &Server List Liste des &serveurs Ctrl+S Ctrl+S Show Server List Afficher la Liste des serveurs Transfer List Liste de transfert &Transfer List Liste des &transferts Ctrl+T Ctrl+T Show Transfer List Afficher la Liste de transfert Hub Search Recherche dans les Hubs &Hub Search &Recherche dans les Hubs Ctrl+H Ctrl+H Show Hub Search Afficher la Recherche sur le Hub About Au sujet de &About... &Au sujet de... About the application Au sujet de l'application About About the application Au sujet de Au sujet de l'application New Version Vérifier s'il existe une nouvelle version &New Version... &Vérifier s'il existe une nouvelle version... Check for new version Vérifie s'il existe une nouvelle version New Version Check for new version Nouvelle Version Vérifier s'il existe une nouvelle version What's &This &Qu'est ce que &File &Fichier &View &Voir &Action &Action &Window Fe&nêtre &Help &Aide Ready. Prêt. (no error message from socket) (pas de message d'erreur du socket) TCP listen failed, change to passive mode ! Echec de l'écoute TCP, utilisation du mode passif ! Quit... Quitter... Do your really want to quit? Voulez vous vraiment fermer l'application? Open options dialog... Ouvrir la boîte à dialogue des options... Exiting application... Fermeture de l'application... Toggle toolbar... Agir sur la barre d'outils... Toggle statusbar... Agir sur la barre de status... About... Au sujet de... New version... Gestion des versions... Show/hide transfer list window ... Montrer/cacher la fenêtre Liste de transfert ... Show/hide server list window ... Montrer/cacher la fenêtre Liste des serveurs ... Show/hide hub search window ... Montrer/cacher la fenêtre Recherche sur le Hub ... file operations Opérations sur le fichier Can't get version info from server Ne peut obtenir la version depuis le serveur Current version is: La version actuelle est : Normal Normal &Normal &Normal Ctrl+N Ctrl+N Set away mode Passer en mode absence Away Absent &Away &Absent Ctrl+A Ctrl+A Hub List Liste des hubs Show Hub List Afficher la liste des hubs Show/hide hub list window ... Afficher/masquer la liste des hubs... H&ub List Liste des h&ubs Ctrl+U Ctrl+U Ctrl+X Ctrl+X Minimize Minimiser &Minimize &Minimisez Minimize all windows Minimisez toutes les fenêtres Minimize Minimize all windows Minimisez Minimisez toutes les fenêtres Action Action Quick Options Options Rapides Quick options Options rapides F12 F12 Context menu for a few options Menu contextuel pour quelques options Download mode: Ask Mode de téléchargement : Demander Download mode: Single Mode de téléchargement : Simple Download mode: Multi Mode de téléchargement : Multiple Spy Espionner &Spy E&spionner Show Spy Afficher l'espion Show/hide spy window ... Affichez/Cachez la fenêtre espion ... Users Utilisateurs Ctrl+F Ctrl+F Show users: search tab and friends tab Affichage utilisateurs : Tabulation de recherche et tabulation des amis Do you really want to quit? Voulez-vous vraiment quitter ? Exiting application... aborted Quitter l'application... annulé Show/hide users window ... Affichez/Cachez la fenêtre des utilisateurs ... Away &Mode &Mode d'absence Close chat windows Fermer la fenêtre de dialogue Close all chat windows Fermer toutes les fenêtres de dialogues Close chat windows Close all chat windows Fermer la fenêtre de dialogue Fermer toutes les fenêtres de dialogue Close disconnected hubs Fermer les hubs déconnectés Close all disconnected hub windows Fermer toutes les fenêtres des hubs déconnectés Close disconnected hubs Close all disconnected hub windows Fermer les hubs déconnectés Fermer toutes les fenêtres des hubs déconnectés Tile &Horizontally Mozaïque &horizontale Tiles all windows horizontally Mosaïque Afficher toutes les fenêtre en MosaïqueMosaïque Afficher toutes les fenêtre en MosaïqueMozaïque horizontale de toutes les fenêtres Tile Horizontally Tiles all windows horizontally Mozaïque horizontale Mozaïque horizontale de toutes les fenêtres Reload Plugins Recharger les plugins &Reload Plugins &Recharger les plugins Dock Barre des tâches &Dock Barre &des tâches Dock the application Dock Dock the application Iconifier Iconifier l'application Hub &Search Recherche dan&s des hubs S&py Es&pionner Ctrl+P Ctrl+P Dock/Undock application... Iconifié/Désiconifié l'application... Recreate share Recréer le partage Refresh share in progress. Raffraichissement du partage en cours. Refresh share allready in progress. Raffraichissement du partage déjà en cours. Latest release Dernière version &Latest release... &Dernière version... Latest release Show latest release. Dernière version Afficher la dernière version. Can't get release info from server Ne peut pas obtenir l'information de dégagement du serveur latest release is: La dernière version est : Latest release... Dernière version... Filelist browser Explorateur de liste de fichiers Open filelist browser Ouvrir l'explorateur de liste de fichiers Exit Quits the application. Exit Quitte l'application. Toolbar Enables/disables the toolbar. Barre d'outils Active/Désactive la barre d'outils. Statusbar Enables/disables the statusbar. Barre de statut activée/Désactiver la barre de statut. Dock Dock the application. Coupler Coupler l'application. Cascade Cascades all windows. Cascader Cascader toutes les fenêtres. Tile Vertically Mozaïque verticale &Tile Vertically &Mozaïque verticale Tiles all windows vertically Mozaïque verticale de toutes les fenêtres Tile Vertically Tiles all windows vertically. Mozaïque verticale Mozaïque verticale de toutes les fenêtres. Tiles all windows horizontally. Mozaïque horizontale de toutes les fenêtres. Tile Horizontally Tiles all windows horizontally. Mozaïque horizontale Mozaïque horizontale de toutes les fenêtres. Minimize all windows. Minimisez toutes les fenêtres. Minimize Minimize all windows. Minimisez Minimisez toutes les fenêtres. Close chat windows. Fermez les fenêtres de dialogue. Close all chat windows. Fermez toutes les fenêtres de dialogue. Close chat windows Close all chat windows. Fermer les fenêtres de dialogue Fermer toutes les fenêtres de dialogue. Close disconnected hubs. Fermer les hubs déconnectés. Close all disconnected hub windows. Fermer tous les hubs déconnectés. Close disconnected hubs Close all disconnected hub windows. Fermer les hubs déconnectés Fermer toutes les fenêtres des hubs déconnectés. Show Hub List. Afficher la liste des hubs. Show Transfer List. Afficher la liste des transferts. Show Hub Search. Afficher les recherches dans les hubs. Show users: search tab and friends tab. Affichage utilisateurs: Barre de recherche et barre d'amis. Set away mode. Activer le mode absent. About the application. A propos de l'application. About About the application. A propos A propos de l'application. Support Support &Support... &Support... Show update manager Afficher le gestionnaire de mise à jour RX/TX Traffic. Traffic RX/TX. Available disc space. Espace disque libre. Refresh share finished. Raffraichissement du partage terminé. Refresh share already in progress. Rafraichissement du partage déjà en cours. Warning license file not found ! Attention fichier de licence non trouvé ! Show/hide update manager window ... Affiche/cache la fenêtre du gestionnaire de mise à jour... Tabbar Barre de tabulation Enables/disables the tabbar Active/Désactive la barre de tabulation Tabbar Enables/disables the tabbar. Barre de tabulation Active/Désactive la barre de tabulation. Show Search Spy. Afficher les recherches espionnes. Tab Bar Barre de tabulation Toggle tabbar... Basculer la barre de tabulation... Connect to Valknut hub Se connecter au hub Valknut Support Connect to the Valknut hub. Support Se connect au hub Valknut. Filelist browser local Explorateur local de liste de fichiers Open local filelist browser Ovrir l'explorateur local de liste de fichiers &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Update Manager Gestionnaire de mise à jour Ratio: Overall: (Up: , Down: ) This session: Valknut Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Fenêtre Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Public Bookmarks Favoris Add Bookmark Ajouter un favoris Error Erreur Please enter a hubname. SVP Entrez un nom de hub. Please enter a hubhost. SVP Entrez un nom d'ordinateur. Edit Bookmark Editer le favoris Remove bookmarks Supprimer le favoris You are sure ? Etes vous sûr ? Remove Supprimer Cancel Annuler Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Créer un profil pour le hub Please enter the profile name Entrez le nom du profil Save profile Sauver le profile Do you want to save your changes? Voulez vous sauvegarder vos changements ? Save Sauver Cancel Annuler Are you sure? Delete profile for DCHubSearch Serverlist done Listage des serveurs effectué Search on: [ Rechercher sur: [ Hubsearch is only available in active mode. La recherche sur les hubs est seulement disponible en mode acif. You must enter a search word. Vous devez entrez un mot à rechercher. Connect to local udp port failed. ( Echec de la connection sur le port UDP local. ( No hubs found. Pas de hubs trouvés. Hub Search Error Erreur de recherche sur le HUB No connected hubs found. Pas de hubs connectés trouvés. Connect to Hub Connection au Hub Download File Télécharger le fichier SocketError on Erreur de connexion sur Hub is full on Le Hub est plein sur Force move on Déplacement forcé sur Select download folder Sélectionner le dossier de téléchargement Select file Sélectionner un fichier Validate denide Validation refusée Select search Sélectionnez la recherche Please select an search Sélectionnez une recherche Please select a connected hub. Choississez un hub connecté. Select file for Choisissez le fichier pour (choose an existing download to add to) (ajouter dans un téléchargement existant) No search found. Pas de réponse trouvée. Please enter a searchstring. SVP, entrez une phrase à rechercher. USER UTILISATEUR FILE FICHIER List download Liste téléchargement Not connected to required hub! Pas connecté sur le hub requis ! Connect Se Connecter Cancel Annuler save file dialog sauver un fichier de dialogue Choose a filename to save under Choisissez un nom de fichier pour la sauvegarde open file dialog Ouvrir un fichier de dialogue Choose a file to open Choisisser un fichier à ouvrir External search is allready running ! Recherche externe déjà en cours ! Please add a search ! Ajouter une recherche svp ! Start Lancer Stop Arrêter Multi Search only work in active mode ! Les recherches multiples fonctionnent uniquement en mode actif ! Filelist download Télécharger la liste de fichiers External search is already running! Recherche externe déjà en cours ! Please add a search! SVP Ajouter une recherche ! Multi Search only work in active mode! Les recherches multiples fonctionnent uniquement en mode actif ! Folder Répertoire Unknown Inconnu None Aucun Directory File Fichier Search ended with %1 results %1 results were filtered on Activé Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCMenuHandler Download Télécharger Download To Télécharger vers Download As Enregistrer sous Browse User Files Explorer les fichiers de l'utilisateur Private Chat Dialogue Privé Kick Sortir Force Move Bannir Update User Mettre à jour l'utilisateur Connect Se Connecter Disconnect Se Déconnecter Reload Userlist Recharger la liste de l'utilisateur Connect To Hub Se connecter au Hub Add Ajouter Add Bookmark Ajouter Favoris Edit Editer Edit Bookmark Editer Favoris Remove Supprimer Close Transfer Clore le transfert Info Informations Try Connect Essayer de se connecter Remove from Queue Retirer de la File Remove Transfer from Queue and Disk Retirer le transfert de la File et du Disque Add Slot to User Ajouter un Slot à l'utilisateur Remove Slot from user Retirer un Slot à l'utilisateur Add Permanent Slot to User Ajouter un Slot Permanent pour l'Utilisateur Save Queue Sauver la file d'attente Update Server Mise à jour du serveur Update all Server Mise à jour de tous les serveurs Change Transfer-Rate Changer la vitesse de transfert Copy row to Clipboard Copier la ligne dans le presse-papier Copy column to Clipboard Copier la colonne dans le presse-papier DCOptions You must enter a valid 'Fake Host' ! Vous devez entrer un 'Faux Hôte' valide ! You must enter a valid interface ! Vous devez entrer une interface valide ! You must enter a valid tcp listen port ! Vous devez entrez un port TCP vailde ! You must enter a valid udp listen port ! Vous devez entrez un port UDP vailde ! You must enter a valid nick ! Vous devez entrer un nom valide ! Interface IP : Interface IP: Can't get interface IP ! Ne peut utiliser l'interface IP ! Select download folder Sélectionner le dossier de téléchargement Select share folder Selectionner les dossiers à partager Select language file Sélectionner un fcihier langage HubList URL URL de la liste des Hubs Please enter a url Entrez une URL svp Share list not available Liste de partage non disponible Compressed list size: Taille de la liste compressée: bytes octets Total shared: Total partagé: Share List Info Info sur la liste des partages You change the client mode ! Please restart DCGUI ! Vous avez changez le mode du client ! Redémarrer DCGUI SVP ! My Mon/Mes Select sound file Sélectionnez le fichier son Select sound player Sélectionnez un lecteur de son au au wav wav All Files Tous les fichiers Host IP : IP de l'hôte : Can't get Host IP ! Ne peut déterminer l'adresse IP ! Select download finished folder Sélectionnez le dossier des téléchargements achevés You must set a Download Folder ! Vous devez sélectionner un dossier de téléchargement ! Download Finished Folder and Download Folder must be different ! Les dossiers de téléchargement et de téléchargements achevés doivent être différents ! You listen on a port <= 1024 ! You can run dcgui only as root in active mode ! Vous utilisez un port <= 1024 ! Vous ne pouvez utiliser dcgui qu'en mode root et en actif ! You must enter a valid search nick ! Vous devez entrer un pseudo de recherche valide ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Vous utilisez un port TCP plus petit que 1024, vous devez utiliser dcgui en tant que root et en mode actif ! Other Autres Log Journal Sound Son General Général Files Fichiers GUI Affichage Chat Dialogue Transfer Transfert Connection Connexion Mode Mode Settings Paramètres DCGUI DCGUI Identify Identification Folder Répertoire Interface List List de l'interface Please select an interface SVP choisissez une interface No interfaces found ! Pas d'interface trouvée ! Select data folder Choissisez un répertoire de données User Utilisateur Select log file Choisissez le fichier journal Security Sécurité Select a browser Choisissez un explorateur Compressed list size (HE3/BZ): Taille de la liste compressée (HE3/BZ): Select transfer cert Choisissez le cert. de transfert Select transfer key Choisissez la clé de transfert Edit Alias Editer un alias Please enter a new alias SVP Entrer un nouvel alias Browse Share List Parcourir la liste de partage Add new nick name filter Ajouter un filtre sur le nom Please enter a nick SVP Entrer un nom Chat Timestamp Date et heure du dialogue Chat Local Nick Nom local du dialogue Chat Local Text Texte du dialogue Chat Remote Nick Nom distant du dialogue Chat Remote Text Texte distant du dialogue Chat Status Nick Nom de statut du dialogue Chat Status Text Texte de statut du dialogue Public Chat Timestamp Date et heure du dialogue public Public Chat Local Nick Nom local du dialogue public Public Chat Local Text Texte local du dialogue public Public Chat Remote Nick Nom distant du dialogue public Public Chat Remote Text Texte distant du dialogue public Public Chat Status Nick Nom de statut du dialogue public Public Chat Status Text Texte de statut du dialogue public Public Private Chat Nick Nom du dialogue privé public Public Private Chat Text Texte du dialogue privé public Can't save Image ! Ne peut sauver l'image ! Can't load Image ! Ne peut charger l'image ! Select a 64x64 Photo Choisir un photo de 64x64 You must set a Download Folder! Vous devez sélectionner un dossier de téléchargement ! Download Finished Folder and Download Folder must be different! Les répertoires de transferts terminés et en cous doivent être différents ! You must enter a valid 'Fake Host'! Vous devez rentrer un 'faux ordinateur' valide ! You must enter a valid interface! Vous devez entrer une interface valide ! You must enter a valid tcp listen port! Vous devez entrer un port d'écoute TCP valide ! You must enter a valid udp listen port! Vous devez entrer un port d'écoute UDP valide ! You must enter a valid nick! Vous devez entrer un nom valide ! You must enter a valid search nick! Vous devez entrer un nom de recherche valide ! Can't save Image! Impossible de sauver l'image ! Can't load Image! Impossible de charger l'image ! Host IP: IP de l'ordinateur: Can't get Host IP! Impossible d'obtenir l'IP de l'ordinateur ! Interface IP: IP de l'interface: Can't get interface IP! Impossible d'obtenir l'IP de l'interface ! No interfaces found! Aucune interface trouvée ! Latest release... Dernière version... Can't get your ip Impossible d'obtenir votre IP Chat Say Le dialogue a dit Public Chat ME Nick Mon nom de dialoge public Hub Lists Listes ds hubs Valknut Valknut You change the client mode! Please restart Valknut! Voius avez changé de mode, SVP redémarrez Valknut ! You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Vous avez positionné Valknut pour écouter sur un port inférieur à 1024, vous ne pouvez utiliser Valknut qu'en root en mode actif ! Compressed list size (HE3/BZ/XML): Taille de la liste compressée (HE3/BZ/XML): Edit url Editer l'URL Auto Responses Filelist browser Explorateur de liste de fichiers Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Récupérer l'adresse Internet Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Utilisateur DCServerList Add Ajouter Edit Editer Remove Supprimer Connect Se Connecter Add Bookmark Ajouter un favoris Edit Bookmark Editer les favoris Select profle Sélectionnez le profil Please select an profile Séléctionnez un profil Public Public Bookmarks Favoris DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransfer Connected Connecté Disconnected Déconnecté Error: ' Erreur: ' Connection Timeout Problème de connection Upload Envoi Download Téléchargement DCTransferView Timeout: Timeout: Disconnected Déconnecté Wait Attente Cancel Transfer Annuler le Transfert Close Transfer Clore le transfert Show User List Montrer la Liste des utilisateurs Cancel wait Annuler attente Waiting ... En attente ... Send request failed Echec de l'envoi de la requête Send request ... Envoyer la requête ... Idle ... Idle ... Send request timeout Envoyer le timeout requis Transfer ... Transfert ... Remove Transfer Supprimer le transfert Try Connect Essayer de se connecter Connect Hub Se connecter au Hub Info Informations Queue Information... Informations sur la file... Idle Attente Run Exécuter Transfer Transfert Error Erreur Download Télécharge Upload Envoi Unknown Inconnu Pause Pause Hub offline Hub hors ligne User offline Utilisateur hors ligne User busy Utilisateur occupé Send error Envoyer erreur Change Transfer-Rate Changer le taux de transfert Please enter a Transfer-Rate [B/s] (0=off) Entrer un taux de transfert [B/s] (0=off) Change File-Priority Change la priorité du fichier Please enter a priority SVP Entrez une priorité Handshake Négociation connexion Nothing Rien You are sure ? Etes vous sur ? Remove Supprimer Cancel Annuler Filebrowser Explorateur de fichiers User and Hub not found in the queue ! Utilisateur et hub non trouvé dans la file d'attente ! Nick: Nom : Hub: Hub: My Mon/Mes Browse Share List Parcourir la liste de partage Share list not available Liste de partage non disponible None Aucun File Fichier %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Translator Traducteur Choose a language Choisir un langage Chinese Simplified to English Anglais Chinese Traditional Dutch Hollandais French Français German Allemand Greek Grecque Italian Italien Japanese Korean Portuguese Russian Russe Spanish Espagnol Detect language Arabic Bulgarian Chinese Croatian Czech Tchèque Danish Danois Finnish Finlandais Hindi Norwegian Norvègien Polish Polonais Romanian Roumain Swedish Suèdois OK OK Cancel Annuler Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUpdateManager Download failed Téléchargement raté Update finished Mise à jour terminée Download content Téléchargement du contenu Download content failed Téléchargement du contenu raté Download update.xml Téléchargement update.xml Download update.xml failed Téléchargement update.xml raté Update available but no bz2 support for Mise à jour disponible mais pas de support bz2 pour Update available for Mise à jour disponible pour update(s) available mise(s) à jour disponible(s) DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Nom Server Serveur Description Description Users Utilisateurs Country Shared Partagés Minimum share Extra QObject Download Télécharger Download To Télécharger vers Download As Télécharger sous Browse User Files Explorer les fichiers de l'utilisateur Private Chat Dialogue Privé Kick Sortir Force Move Rediriger Update User Mettre à jour l'utilisateur Connect Se Connecter Disconnect Se Déconnecter Reload Userlist Recharger la liste de l'utilisateur Connect To Hub Se connecter au Hub Add Ajouter Add Bookmark Ajouter Favoris Edit Editer Edit Bookmark Editer Favoris Remove Supprimer Close Transfer Clore le transfert Info Informations Try Connect Essayer de se connecter Remove from Queue Retirer de la File Remove Transfer from Queue and Disk Retirer le transfert de la File et du Disque Add Slot to User Ajouter un Slot à l'utilisateur Add Permanent Slot to User Ajouter un Slot Permanent pour l'Utilisateur Remove Slot from user Retirer un Slot de l'utilisateur Save Queue Sauver la file d'attente Update Server Mise à jour du serveur Update all Server Mise à jour de tous les serveurs Change Transfer-Rate Changer le taux de transfert Copy row to Clipboard Copier la ligne dans le presse-papier Copy column to Clipboard Copier la colonne dans le presse-papier File Info Information sur le fichier Connect To All Hubs Se connecter à tous les hubs Search for clones Rechercher des clones Remove complete from Queue Enlever les fichiers complets de la file Download In Télécharger vers (téléchargement multiple) Load Charger Save Sauver Edit Hub Profiles Editer les profils des hub Set Hub Profile Sélectionner les profils des hub Add this extra source Ajouter cette nouvelle source Edit transfer Editer le transfert Edit file priority Editer les priorités du fichiers Translate Traduire Translator Traducteur Disable group Désactiver le groupe Group by File Grouper par fichier Group by Size Grouper par taille Group by Nick Grouper par nom Group by free Slots Grouper par slots libres Group by Hub Grouper par hub Group by Path Grouper par chemin Group by Host Grouper par hôte Copy Copie Clear Efface Select all Tout sélectionner Close Fermer Group Grouper Hide Cacher Refresh Filelist Rafraichir la liste des fichiers Pause Queue Mettre la file en pause Resume Queue Relancer la file d'attente Insert Smiley Insérer un "sourire" Add Friend Ajouter un ami Czech Tchèque Danish Danois Dutch Hollandais Finnish Finlandais France Français German Allemand Hungarian Hongrois Icelandic Islandais Italy Italien Norwegian Norvègien Polish Polonais Romanian Roumain Spanish Espagnol Swedish Suèdois Copy Link Copier le lien Text Encoding Encodage du texte Request secure chat Demander un dialogue sécurisé Close secure chat Fermer un dialogue sécurisé Input Entrée Output Sortie Check client version Vérifier la version du client Add Permanent Ajouter définitivement Profile editor Editeur de profile Group by Hash Grouper par hachage Reset Remise à zéro Dock Barre des tâches Undock Revenir en fenêtre Exit Quitter Bosnian Bosnien English Anglais French Français Greek Grecque Italian Italien Latvian Letton Russian Russe Slovak Slovaque Custom Différent Upload Slot Slot d'envoi Repair File Réparer le fichier Repair BIN sectors Réparer les secteurs BIN Brazilian Brésilien Search for clones by TTH Copy magnet link User: Utilisateur: User Commands Enter Enter Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) (ajouter dans un téléchargement existant) File download Télécharger A same file is already in the queue! Un même fichier est déjà dans la file d'attente ! Start a multi-download Démarrer un téléchargement multiple Cancel Annuler File is already in the queue but not mark as a multi-download! Le fichier est déjà dans la file d'attente mais non marqué comme un téléchargement multiple ! File is already in the queue with a different size! Le fichier est déjà dans la file d'attente avec une taille différente ! File already downloaded! Fichier déjà téléchargé ! Enter byte range (m-n) Entrez un rang d'octets (m-n) Repair BIN Sectors Réparer les secteurs BIN Enter sector range (m[-n]) Entrez un rang de secteur (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Le fichier existe déjà ! Resume Continuer Overwrite Ecraser File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Pas connecté sur le hub requis ! Group by total Slots Download Folder Dossier de téléchargement Zoom in Zoom out Group by IP SearchSpyModel Text Texte Count Compteur Time UserListModel Nick Nom Comment Commentaire Tag Marque Speed Vitesse Email Share Partage IP IP Lock/PK Bloquer/PK Supports Supports valknut-0.4.9/valknut/ts/valknut.sr@latin.ts0000664000076400007640000120531211144234504017271 0ustar ejsejs DCBrowseFileTree Select destination Izaberite odredište Select a filename Izaberite naziv datoteke <wrong length> <neispravna veličina> Choose a filename to save under Izaberite naziv datoteke pod kojim će se sačuvati DCChat Private Chat: Privatan razgovor: Chat Cleared. Razgovor je očišćen. Translation: Prevod: Translation failed: Prevod nije uspeo: Current mode: Trenutni režim: active aktivan passive pasivan Refresh share in progress. Osvežiavanje deljenih datoteka je u toku. Switch timestamp Promeni oznaku vremena Send advertisment. Pošalji reklamu. Wrong parameter for '/join' Pogrešan parametar za naredbu „/join“ Join to: Pristupi na: Wrong parameter for '/msg' Pogrešan parametar za naredbu „/msg“ Away message disabled. Poruka za odsustvo je onemogućena. Away message set. Poruka za odsustvo je postavljena. Line is encrypted. Linija je kriptovana. Line is not encrypted. Linija nije kriptovana. Help: Pomoć: /refresh - refresh share /refresh - osvežava deljene datoteke /ts - switch time display in chat on/off /ts - uključuje/isključuje prikaz oznake vremena u razgovoru Choose a filename to save under Izaberite datoteku u koju će se čuvati /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /join &lt;adresa&gt; - prekidanje veze sa trenutno povezanim habom i povezivanje na drugi hab /msg &lt;nick&gt; &lt;message&gt; - send private message /msg &lt;nadimak&gt; &lt;poruka&gt; - slanje privatne poruke /away &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it /away &lt;poruka&gt; - postavljanje automatskog odgovora za privatne poruke; ako je poruka prazna, onemogućava ga Select download folder Izaberide direktorijum za preuzimanje Select file for Izaberite datoteku za Photo received. Fotografija je preuzeta. Only allowed in private chat. Dozvoljeno samo u privatnom razgovoru. Photo encode error. Dekodiranje fotografije nije uspelo. Refresh share already in progress. Osvežavanje deljenih datoteka je već u toku. Chat: Razgovor: Message not sent! Poruka nije poslata! /clear - clears the chat window /clear - briše prozor razgovora /mode - shows the current mode /mode - prikazuje trenutni režim /bye &lt;message&gt; - disconnect from channel with an optional message /bye &lt;poruka&gt; - prekida vezu sa sobom uz slanje opcione poruke /ls &lt;nick&gt; - get share list from user /ls &lt;nadimak&gt; - dobavlja spisak deljenih datoteka od korisnika /grant &lt;nick&gt; - grant user a slot /grant &lt;nadimak&gt; - dodeljuje slot za korisnika /grantp &lt;nick&gt; - grant user a permanent slot /grantp &lt;nick&gt; - dodeljuje permanentni slot za korisnika /friend &lt;nick&gt; - add user to friend list /friend &lt;nadimak&gt; - dodaje korisnika na spisak prijatelja /fav - add hub to bookmark list /fav - dodaje hab na spisak omiljenih /now - send current time to the chat /now - šalje trenutno vreme u razgovor Get info failed. Greška pri dobavljanju informacije. Info: Info: Nick: Nadimak: Operator: Operater: yes da no ne Comment: Komentar: Speed: Brzina: EMail: E-pošta: Shared: Deljeno: Away: Odsutan: on uključeno off isključeno Version: Verzija: Unknown Nepoznato Tag: Tag: day dan days dana hour sat hours sati minute minut minutes minuta Download sharelist from Preuzimanje spiska deljenih datoteka od No nick, try /dchelp Nadimak ne postoji, konsultujte /dchelp Permanent slot added for Dodeljen je permanentni slot za Slot added for Dodeljen je slot za Added to friend list Dodat u spisak prijatelja Add bookmark hub Dodaj omiljeni hab Private message sent. Poslata je privatna poruka. Private message not sent! Privatna poruka nije poslata! Photo not found. Fotografija ne postoji. Can't read your photo. Ne mogu da pročitam Vašu fotografiju. Photo not sent. Fotografija nije poslata. Photo sent. Fotografija je poslata. /raw - send raw message /raw - slanje sirove poruke The user is using an old version or not using Valknut Korisnik koristi zastarelu verziju ili ne koristi Valknut /adv - send an advertisment to the hub /adv - šalje reklamu na hab Alt + S alt + S Alt + Enter alt + enter Ctrl + Enter ktrl + enter Enter enter Joins: Pristupa: Parts: Odlazi: /rebuild - remove no longer present files from hash database /rebuild - uklanja nepostojeće datoteke iz heš baze /slots &lt;N&gt; - set number of upload slots to N /slots &lt;N&gt; - postavlja broj slotova za slanje na N /uptime [show] - show valknut uptime [to other users] /uptime [show] - prikazuje trajanje sesije Valknuta [ostalim korisnicima] /info &lt;nick&gt; - show user info /info &lt;nadimak&gt; - prikazuje informacije o korisniku /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /sh &lt;naredba&gt; &lt;argumenti...&gt; - šalje u razgovor rezultat naredbe iz školjke /disablesorting - disable sorting of the user list /disablesorting - onemogućava poredak u spisku korisnika /enablesorting - enable sorting of the user list /enablesorting - omogućava poredak u spisku korisnika /ignore &lt;nick&gt; - do not show main chat lines from the user /ignore &lt;nadimak&gt; - ne prikazuje poruke od korisnika u javnom razgovoru Valknut uptime Sesija Valknuta Rebuild share in progress. Osvežavanje baze deljenih datoteka je u toku. Refresh/rebuild already in progress. Osvežavanje/ponovna izgradnja je u toku. Invalid number of upload slots specified. Odredili ste neispravan broj slotova. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Preuzmite Valknut sa http://wxdcgui.sourceforge.net On može svašta nešto! Radi na svakoj platformi koju možete da zamislite, pere feš i kuva kafu. Command produced no visible output. Naredba je vratila nevidljivi izlaz. Process was killed or crashed. Proces je prekinut ili se srušio. Failed to start shell command. Neuspešno pokretanje naredbe školjke. Disabled user list sorting. Poredak u listi korisnika je onemogućen. Enabled user list sorting. Poredak u listi korisnika je omogućen. /ratio [show] - show share ratio [to other users] /ratio [show] - prikazuje odnos deljenja [ostalim korisnicima] ratio: overall: odnos: prosečno: uploads poslato downloads preuzeto this session: ova sesija: Unknown command, try /dchelp Nepoznata naredba, konsultujte /dchelp /unignore &lt;nick&gt; - show main chat lines from the user again /unignore &lt;nadimak&gt; - ponovo prikazuje poruke od korisnika u glavnom razgovoru /newlog - start a new logfile /newlog - započinjanje nove datoteke dnevnika No command entered. Niste uneli naredbu. New log timestamp: Vremenska oznaka novog dnevnika: Warning: log timestamp not enabled. Upozorenje: oznaka vremena dnevnika nije omogućena. Error was: Došlo je do greške: Shell command event not found in list Događaj naredbe školjke nije pronađen u spisku Process still running after Proces traje i nakon seconds, killing process... sekudi, ubijam proces... Process still running after 2 minutes, killing process... Proces je aktivan već 2 minuta, ubijam proces... Bytes bajtova Setting upload slots to Postavi broj slotova za slanje na on. uključen. off. isključen. Process exited with status Proces je okončan sa stanjem is not in ignore list nije u spisku ignorisanih /ignore &lt;nick&gt; - do not show chat messages from the user /ignore &lt;nadimak&gt; - ne prikazuj poruke u razgovoru od korisnika /unignore &lt;nick&gt; - show chat messages from the user again /unignore &lt;nadimak&gt; - ponovo prikazuj poruke u razgovoru od korisnika Ignoring chat from Ignorišem razgovor od Showing chat from Prikazujem razgovor od Sent away message: Poslata je poruka za odsustvo: Supports encryption: Podržana enkripcija: Upload slots: Slotova za slanje: Wrong parameter for '/raw' Pogrešan parametar za „/raw“ /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Isteklo je vreme za povezivanje Error: ' Greška: „ Redirect to Preusmeravanje na Password - Lozinka - Please enter your password Unesite Vašu lozinku Wrong password Pogrešna lozinka OP Force Move OP forsirano preusmeravanje Please enter host Unesite adresu odredišta Please enter a message Unesite poruku Redirect disabled Preusmeravanje je onemogućeno OP Kick OP izbacivanje Please enter a reason Unesite razlog User: Korisnik: Connected Povezan Disconnected Van mreže Use password from profile Koristi lozinku iz profila Password from profile is empty Lozinka u profilu nije postavljena No profile found for this hub Za ovaj hab ne postoji profil users korisnika Hubname change: Naziv haba je promenjen: User rejoin the hub. Korisnik je ponovo ušao na hab. User left the hub. Korisnik je napustio hab. Hub Hab We left the hub. Napustili smo hab. Joins: Pristupa: Parts: Napušta: Chat List Spisak razgovora Line is encrypted. Linija je kriptovana. Line is not encrypted. Linija nije kriptovana. Your Nick is already in use. Vaš nadimak je već u upotrebi. Disconnect. Van veze. Connect. Povezan. Close chat tab Zatvori jezičak razgovora Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) Izvinjavam se, nećete moći da preuzimate od mene, jer smo i ja i Vi u pasivnom režimu. (ovo je automatska poruka) Downloads filelist Spisak datoteka za preuzimanje User command for Korisnička naredba za OK U redu Cancel Obustavi Flood Detected Otkriveno je fludovanje Cannot display user with empty nick. Prikaz korisnika sa praznim nadimkom nije moguć. Cannot display operator with empty nick. Prikaz operatera sa praznim nadimkom nije moguć. Hub gave us our IP: Hab nam je dao naš IP: Enable Omogući Use IP address from the hub Koristi IP adresu sa haba in Options -> Connection -> Mode to use this value. u Opcijama -> Povezivanje -> Režim za upotrebu ove vrednosti Columns Kolone Any sve DCDebug Send error Prijavljivanje greške Could not send the data. Error '%1'. Nije moguće poslati podatke. Greška „%1“. Send Pošalji Thanks for your help. Hvala Vam za pomoć. Save error Sačuvaj grešku Can't open file '%1' for writing. Nije moguće otvoriti datoteku „%1“ za upis. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About O programu OK U redu Authors Autori License Licenca Sponsor Sponzor Valknut - A Direct Connect filesharing client (C) 2001-2004 Mathias Küster Portions (C) 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net Valknut - klijent za razmenu datoteka direktnim povezivanjem (C) 2001-2004 Mathias Küster Delimično (C) 2006-2008 Edward Sheldrake Veb strana: http://wxdcgui.sourceforge.net Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Preuzimanje datoteke Download mode? Multi Return Single Esc Download all files in this mode DCDialogChat &Send &Pošalji DCDialogChat DCDialogChat DCDialogClient User Korisnik Nick Nadimak Comment Komentar Speed Brzina EMail E-pošta 0 0 Share Deljeno Chat List Spisak razgovora ... ... Tag Tag User(s) Korisnik(a) DCDialogClient DCDialogClient IP IP Lock/PK Zaključano/PK Supports Podržano DCDialogConnectionManager Connection Povezivanje DCDialogDebug DCGUI Crash Handler DCGUI Crash Handler Send bugreport. Prijavljivanje greške. Exit. Izađi. Save to file. Sačuvaj u datoteku. Comment Komentar &Save &Sačuvaj S&end &Pošalji E&xit &Izlaz Valknut Crash Handler Valknutov hvatač grešaka DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Send Pošalji Receive Both Oba OK U redu Cancel Obustavi malloc info DCDialogEditServer Settings Podešavanja Name Naziv Host Host Description Opis Password Lozinka DCDialogEditServer DCDialogEditServer Profile Profil Auto Connect Automatsko povezivanje Nick Nadimak Secure Socket Layer Sloj bezbednog soketa &Cancel &Obustavi &OK &U redu &Profile &Profil Tag Tag EMail E-pošta Extended hub count Prošireni broj habova Suppress nicks Ignoriši nadimke A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Regularni izrazi nadimaka za koje neće izlaziti iskačući prozor. Na primer „Hub|Bot|Spammer“ prepoznaće Hub ili Bot ili Spammer. Remote encoding Udaljeni kôdni raspored Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Uređivanje putanje za deljenje Alias Alijas Path Putanja &Cancel &Obustavi &OK &U redu DCDialogEditTransfer Edit Transfer Uređivanje prenosa Settings Podešavanja Nick Nadimak Hub name Naziv haba Hub address Adresa haba Known hubs Poznati habovi &Cancel &Obustavi &OK &U redu DCDialogFileBrowser Name Naziv Size Veličina Open Otvori Save Sačuvaj Type Vrsta TTH TTH Form1 Form1 Folder Direktorijum Exact Size Tačna veličina Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Informacije o datoteci File Datoteka Size Veličina Hash Heš Sources Izvori DCDialogForceMove OP Force Move OP forsirano preusmeravanje Please enter a host Please enter a message Unesite poruku OK U redu Cancel Obustavi DCDialogGetURL Get URL Dobavljanje adrese &Cancel &Obustavi DCDialogHubFilter Hub Filter Filter habova Filter Filter Min. User Min. korisnik Contains Sadrži Name Naziv Server Server Description Opis Settings Podešavanja &OK &U redu &Cancel &Obustavi DCDialogHubListManager Hub List Spisak habova Public Javni Name Naziv Server Server Description Opis double click to hide the toolbar dupli klik za sakrivanje trake alata edit filter uredi filter delete filter ukloni filter Filter Filter update public hublist osveži spisak javnih habova add filter dodaj filter reload public hublist ponovo učitaj spisak javnih habova double click to show the toolbar dupli klik za prikazivanje trake alata Bookmarks Omiljeni connect poveži Users Korisnika Country Država Shared Deljeno Minimum Share Minimalno za deljenje Extra Posebno Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Gore Change the order of the bookmarks. Promena poretka omiljenih. Move down Dole Enable sorting Omogući sortiranje Enable sorting of the bookmarks. Omogućava sortiranje omiljenih. Save Sačuvaj Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Čuva omiljene u datoteku za postavke. Omiljeni se čuvaju automatski i ovo u svakodnevnom radu nije potrebno. Add bookmark. Add Dodaj Edit bookmark. Edit Uredi Remove bookmark. Remove Ukloni DCDialogHubProfile Profile Profil Settings Podešavanja Password Lozinka Auto Connect Auto povezivanje Hub profile editor Uređivač profila haba Nick Nadimak &OK &U redu &Cancel &Obustavi Tag Tag EMail E-pošta Description Opis Secure Socket Layer Sloj bezbednog soketa Delete Ukloni Extended hub count Prošireni broj habova Suppress nicks Ignoriši nadimke A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Regularni izrazi nadimaka za koje se neće otvarati prozor razgovora. Na primer „Hub|Bot|Spemer“ će ignorisati Hub ili Bot ili Spemer. Remote encoding Udaljeni kôdni raspored Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Rezultati Nick Nadimak File Datoteka Size Veličina Hub Hab Path Putanja Log Dnevnik Search Traži Results: Rezultati: Connected Hubs Povezani habovi Bookmark Hubs Omiljeni habovi Filter Filter Type Vrsta At Least najmanje At Most najviše Any sve Compressed arhive Document dokumenti Executable programi Picture slike Video video Folder direktorijumi Hub Search Pretraga haba Host Host Free Slots Slobodni slotovi Max Free Slots (0=off) Najviše slobodnih slotova (0 za isključeno) Exact tačno B B 0/0 0/0 0 0 Search in path+file name only Traži samo u putanji i nazivu datoteke Hubs Habovi Hub Options Opcije haba Connected Hub Povezani habovi Refresh Osveži Public Hubs Javni habovi Expert Napredno User Korisnik Reset Resetuj Clients Klijenata Live filters Filteri uživo Include: Uključi: Exclude: Isključi: Apply Primeni Mode Režim Add Dodaj Start Pokreni Start the search. Započni pretragu. Add a search to the searchqueue Dodaj pretragu u red za pretraživanje Filtered Hubs Filtrirani habovi Multi Search Višestruka pretraga Enable Tag Omogući tag Audio zvuk Hash Heš TTHash TTHeš KiB KiB MiB MiB GiB GiB Total Slots Ukupno slotova Purge Očisti Clear the search history Čišćenje istorije pretraživanja Count Broj Ready Spreman Overall search status Prosečan rezultat pretrage Clear search string and set search size, size mode and file type to default TTH TTH Any size Sve veličine At least Najmanje At most Najviše Maximum results Maksimalno rezultata Unlimited Neograničeno IP IP DCDialogMagnet Magnet Link Details Link TTH TTH Name Naziv Size Veličina Exact size Action Akcija Start search Add to download queue Do nothing Do the same action next time without asking OK U redu Cancel Obustavi DCDialogMessage DCDialogMessage DCDialogMessage Do not show this again. Ne prikazuj ponovo ovo pitanje. DCDialogOptions Options Opcije Identify Lično Information Podaci E-Mail: E-pošta: Nick: Nadimak: Description: Opis: Speed: Brzina: Anti-Spam (email at home dot com) Zaštita od neželjene pošte (e-pošta na serveru tačka rs) Transfer Prenos Share Folders Deljeni direktorijumi Download Folder Direktorijum za preuzimanje Upload Options Opcije slanja Connection Veza Settings Podešavanja Mode Režim Active Mode Aktivan režim Passive Mode Pasivan režim Passive Mode Settings Podešavanja pasivnog režima Active Mode Settings Podešavanja aktivnog režima TCP Listen Port: TCP port: Hub Search Pretraživanje haba UDP Listen Port: UDP port: Test Proba GUI Sučelje GUI Options Opcije sučelja Store local Sačuvaj lokalno Theme Tema Language File Jezička datoteka Reconnect Counter (0=off) Brojač ponovnog povezivanja (0 za isključeno) Reconnect Timeout (sec.) Period ponovnog povezivanja (sekundi) Allow Force Move Dozvoli forsirano preusmeravanje Source Url's Izvorne adrese URL Adresa Max. upload slots (0=off) Maksimalno slotova za slanje (0 za isključeno) Application Font Font sučelja Maximal upload connections. Maksimalan broj veza za slanje. Transfer Request Timings Vreme za zahtev prenosa Resend Timeout (sec.) Period ponovnog slanja (sekundi) Response Timeout (sec.) Period odziva (sekundi) Hub Connections Veze sa habovima Sound Zvuk External Player Spoljašni plejer Chat Razgovor Units Jedinice Auto Automatski Byte Bajt General Opšte Disable Sound Isključi zvuk Play a sound when receiving a message Reprodukuj zvuk kada primim poruku Play a sound when disconnecting from a hub Reprodukuj zvuk kada napustim hab Play a sound when receiving first message Reprodukuj zvuk kada primim prvu poruku Play a sound when sending a message Reprodukuj zvuk kada pošaljem poruku Play a sound when connecting to a hub Reprodukuj zvuk kada pristupim habu Disable sound when away Isključi zvuk kada sam odsutan Player Plejer Sound Files Zvučne datoteke Log Dnevnik Timestamp Oznaka vremena Private Chat Privatan razgovor Hub Chat Javni razgovor Download Queue Red za preuzimanje Save Queue in minutes (0=off) Sačuvaj red na svakih N minuta (0 za isključeno) Move Finished Files to this Folder (empty = disabled) Premesti završene datoteke u ovaj direktorijum (ostavite prazno za ignorisanje) No multi hub search ! No incoming connections ! Bez pretrage na više habova. Bez dolaznih veza! Send warn message to remote user on active mode request Pošalji upozorenje udaljenom korisniku pri zahtevu aktivnog režima Show Status Messages Prikaži poruku o statusu Open Private Chat Window Otvori prozor privatnog razgovora Transfer Options Opcije prenosa Transfer View Pregled prenosa Chunk Percent Postotak dela File Percent Postotak datoteke Chunk Size Veličina dela File Size Veličina datoteke Search Nick: Nadimak pretraživanja: Chat options Opcije razgovora upload slanje download preuzimanje Add Description Tag (<DCGUI ....>) Dodaj opsini tag (<DCGUI ....>) Folder Direktorijum New Column Nova kolona Away Message: Poruka za odsustvo: Your line speed. Brzina Vaše veze. Your nick. Vaš nadimak. The nick for hub searches. Nadimak za pretraživanja haba. Your EMail. Adresa Vaše e-pošte. Enable/Disable the Anti-spam option. Omogući/isključi opciju zaštite od spema. A little description. Kratak opis. Add a tag to the description that show some information from you. Dodaj tag u opis koji prikazuje podatke o Vama. The tcp listen port for incoming connections. TCP port za praćenje dolaznih veza. The udp listen port for incoming search results. UDP port za praćenje prispelih rezultata pretraživanja. Select a interface. Izaberite interfejs. Get the ip from the host. Uzmi IP od hosta. The time between a reconnect. Pauza između ponovnog povezivanja. How often we reconnect to a hub. Koliko često ćemo se ponovno povezivati na hab. Rebuild your sharelist. Osveži spisak deljenih datoteka. Add a folder to your sharelist. Dodaj direktorijum u spisak deljenih datoteka. Remove a folder from your sharelist. Ukloni direktorijum iz spiska deljenih datoteka. Show some information about your sharelist. Prikaži informacije o spisku deljenih datoteka. Browse your own share list. Pregled vlastitog spiska deljenih datoteka. Time to wait for a transfer response from the remote user. Period za koji će se čekati na odgovor prenosa od udaljenig korisnika. Time to wait before a new transfer request is send to the remote user. Period za koji će se čekati pre upućivanja novog zahteva za prenos udaljenom korisniku. Test the new theme. Isprobaj novu temu. Open the chat window on incoming messages. Otvori prozor za razgovor pri prispeću poruke. Enable emoticons in chat Omogući emotikone u razgovoru Data Folder Direktorijum podataka Ctrl + Enter ktrl + enter Enter enter Alt + Enter alt + enter Alt + S alt + S Messages Poruke Query on exit Upit pri izlazu Logfile Datoteka dnevnika Logfile enabled Omogući dnevnik Security Bezbednost Flood Protection Zaštita od ponavljanja istih poruka Kick Message Poruka za izbacivanje Private Address Space (rfc1918) Opseg privatnog prostora (RFC1918) Ignore private address space connections Ignoriši povezivanje iz opsega privatnog prostora Query Upit Client Klijent User-List right alignment Desno poravnanje spiska korisnika Don't Display Messages after X retry (0=off) Ne prikazuj poruke nakon N ponavljanja (0 za isključeno) Kick the user for flooding (only for Operators) Izbaci korisnika zbog ponavljanja (samo za operatere) Show send button Prikaži dugme za slanje Dynamic upload rate Dinamički odnos slanja Send message with Šalji poruke sa Browser Pregledač Use tab for every chat window Koristi jezičak za prozor svakog razgovora Client options Opcije klijenta Show client windows minimized Prikaži minimizovani prozor klijenta Max. uploads to user (0=off) Maksimalan broj slanja korisniku (0 za isključeno) Color Boje Transfer Cert/Key Sertifikat i ključ za prenos User quitting hub Korisnik napušta hab If user quits hub, stop following transfers Kada korisnik napusti hab, prekini sledeći prenos Upload Slanje Both Oba Download Preuzimanje None Ništa Auto-Search Auto pretraživanje Auto-Search for new sources Automatko traženje novih izvora Download Rate Single Odnos preuzimanja (jedan izvor) Download Rate Multi Odnos preuzimanja (više izvora) Remaining Time Single Preostalo vreme (jedan izvor) Remaining Time Multi Preostalo vreme (više izvora) Max. rate KB/s (0=off) Maksimalan odnos KB/s (0 za isključeno) Path Putanja Alias Alijas Edit a folder from the sharelist. Uredi direktorijum iz spiska deljenih datoteka. Open File Dialog. Dijalog za otvaranje datoteke. Add a URL to the list. Dodavanje adrese u spisak. Remove a URL from the list. Uklanjanje adrese iz spiska. Enable logging Omogućeno beleženje Append date to log file name Dopuni datumom naziv datoteke za dnevnik Nick name filter Filter nadimaka Enable nick name filter Omogući filtriranje nadimaka Disable logging for public chat Isključi zapisivanje javnog razgovora Append hub name to log file name Dodaj naziv haba u naziv datoteke dnevnika Append hub host to log file name Dodaj host haba u naziv datoteke dnevnika &Save &Sačuvaj &Cancel &Obustavi Forward private to public chat Prosledi privatni na javni razgovor Away Prefix: Prefiks za odsustvo: Select Language. Izaberite jezik. Recreate every hour (0=off) Ponovo napravi svakih N sati (0 za isključeno) Check and recreate sharelist on startup Proveri i ponovo napravi spisak deljenih datoteka po pokretanju programa seconds sekundi Away after Odsutan nakon Auto Away Mode Automatski režim za odsustvo Ignore messages to offline users Zanemari poruke za nepovezane korisnike Ignore messages from offline users Zanemari poruke od nepovezanih korisnika Show joins and parts Prikaži ulaske i izlaske Columns Kolone Comment Komentar Speed Brzina EMail E-pošta Share Deljeno Photo Foto Query on File Delete Stavi u red pri uklanjanju datoteke Tag Tag IP, Hostname or Interface IP, host ili interfejs IP or Hostname IP ili host Network Interface Mrežni interfejs Listen on IP Nadgledaj IP IP IP Lock PK Zaključan PK Supports Podržano Get Internet IP Prepoznaj spoljni IP Get Interface Prepoznaj interfejs Update every hour (0=off) Osveži na svakih N sati (0 za isključeno) Hub Lists Spiskovi Disable hash list Ne pravi heš spisak GiB GiB KiB KiB MiB MiB Edit hublist url. Uredi adresu habova. Extended hub count in tag (H:3/2/1) Proširi broj habova u tagu (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Ako je omogućeno, broj habova će biti prikazan kao H:Običan/Registrovan/OP, u suprotnom H:Zbirno. Do not share dot files and folders Nemoj da deliš datoteke i direktorijume „tačke“ If checked, files and folders starting with "." will not be shared. Ako je uključeno, datoteke i direktorijumi piji naziv počinje sa „.“ neće biti deljeni. Small file size (bytes) Male datoteke (bajtova) The maximum size of files for which extra upload slots will be granted. Maksimalna veličina datoteke za koje je obavezan slot za slanje. Compressed transfers Komprimovani prenosi Enable compressed transfers Omogućava komprimovane prenose Time between auto-searches (seconds) Pauza između automatskih pretraživanja (sekundi) Use IP address from the hub Koristi IP adresu sa haba Enable compressed hub to client communication (EXPERIMENTAL) Omogući komprimovanu komunikaciju haba i klijenta (EKSPERIMENTALNO) Joins and parts only for friends Ulasci i izlasci samo za prijatelje Do not open chat windows for Ne otvaraj prozor razgovora za A regular expression of nicks to not popup chat windows for. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Regularni izrazi za nadimke za koje neće izaći prozor za razgovor, npr. „Hab|Bot|Spamer“ prepoznaće nadimke Hab ili Bot ili Spamer. Commands Naredbe Custom chat commands Korisničke naredbe razgovora Name Naziv Command Naredba Right click to add or remove commands, left click on text to edit it. Desni klik za dodavanje ili uklanjanje naredbe, levi klik na tekst za uređivanje. Menus Meni Custom menu commands Meni sa korisničkim naredbama Context Kontekst Double clicking a user Dvoklik na korisnika Opens private chat Otvara privatan razgovor Downloads filelist Preuzima spisak datoteka Icons Ikone Icon themes Teme ikona Emoticons Emotikoni Application Icons Ikone programa Userlist icons Ikone spiska korisnika To ensure all icons are changed, please restart valknut. Restartujte Valknut kako bi bili sigurni da su učitane sve ikone. Filelist browser Pregledač Filelist browser settings Podešavanja pregledača spiska datoteka Also show folders in the right pane Prikaži direktorijume u desnom oknu Sort folders in the right pane on top Poređaj direktorijume u desnom oknu na vrhu Show folders sizes in the left pane Prikaži veličinu direktorijuma u levom oknu Listen to the sound file. Preslušavanje zvučne datoteke. Play a sound when your nick is mentioned in public chat Zvučno obaveštenje kada se pomene Vaš nadimak u javnom razgovoru Open File Dialog Dijalog za otvaranje datoteke Log completed downloads Beleži završena preuzimanja u dnevnik Log completed uploads Beleži završena slanja u dnevnik Log all transfer details Beleži podatke o svim prenosima Generate Napravi Create a new key and certificate pair. Pravljenje novog para ključa i sertifikata. Auto Responses Auto odgovori Auto Response Settings Podešavanja automatskih odgovora Enable auto responder for public chat Omogući automatsko odgovaranje u javnom razgovoru Enable auto responder for private messages Omogući zvučni odgovor za privatne razgovore Minimum seconds between auto responses Najkraća pauza između dva automatska odgovora Ignore nicks Ignoriši nadimke A QT regular expression of nicks to not auto respond to, case insensitive. Qt regularni izrazi nadimaka za koje ne važi auto odgovor (veličina nije bitna). Trigger Okidač Case Sensitive Veličina je bitna Response Odgovor Remote Encoding Udaljeni kôdni raspored For a list of valid encodings, run "iconv -l" Za spisak validnih kôdnih rasporeda, pokrenite „iconv -l“ Advanced Napredno Read file buffer size (bytes) Veličina bafera za čitanje datoteke (bajtova) If you experience slow uploads in a LAN, try increasing this value. Ako Vam je slanje u lokalnoj mreži sporo, pokušajte da povećate ovu vrednost. %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Context is sum of: 1 = Hub, 2 = User %[mynick]= %[myNI]= Vaš nadimak %[mytag]= %[myTAG]= Vaš tag %[mydescription]= %[myDE]= Vaš opis %[myemail]= %[myEM]= Vaša e-pošta %[myshare]= %[mySS]= Tačna veličina Vaših deljenih datoteka %[myshareshort] = %[mySSshort]= Veličina Vaših deljenih datoteka (sa jedinicama) %[myip]= %[myI4]= Vaša IP adresa %[nick]= %[userNI]= Korisnikov nadimak %[tag]= %[userTAG]= Korisnikov tag %[description]= %[userDE]= Korisnikov opis %[email]= %[userEM]= Korisnikova e-pošta %[share]= %[userSS]= Tačna veličina korisnikovih deljenih datoteka %[shareshort]= %[userSSshort] = Veličina korisnikovih deljenih datoteka (sa jedinicama) %[ip]= %[userI4]= Korisnikova IP adresa (ako je poznata) %[line:reason]= Tekst upitnog dijaloga koji pita za „razlog“ Formatiranje datuma i vremena, za više konsultujte strftime(3). %c= Podrazumevani datum i vreme %d= Dan u mesecu kao broj (01 do 31) %m= Mesec u godini kao broj (01 do 12) %y= Godina sa četiri cifre %H= Sat u 24-časovnom formatu (00 do 23) %M= Minut kao broj (00 do 59) %S= Sekunda kao broj (00 do 60) Kontekst je zbir: 1 = hab, 2 = korisnik Adjust hub details in search results Prilagodi detalje o habu u rezultatima pretrage Only used if searching a single connected hub. Koristi se samo za pretraživanje na jednom habu. Send unknown /commands as chat Šalji nepoznate /naredbe kao razgovor If true, undefined chat commands will be sent to the hub. Ako je omogućeno, nepoznate naredbe razgovora će biti poslate na hab. Plugin folder Direktorijum dodataka You must close and re-open each hub to use the new setting. Select "None" to disable text encoding conversions. Morate da zatvorite i ponovo otvorite svaki hab za primenu novih podešavanja. Izaberite „None“ za onemogućavanje kodiranja teksta za razgovore. Tab nick completion options Ocije dovršavanja nadimka tabulatorom Tab completion matches by Dovršavanje tabulatorom se podudara sa Containing anywhere Nalazi se bilo gde Starting with Počinje sa Ignore all tags (text inside []) Ignoriši sve tagove (tekst unutar []) Maximum paragraphs (0=off) Maksimalno pasusa (0 za isključeno) Hide popups of more lines than (0=off) Ne prikazuj upozorenje za više od N linija (0 za isključeno) Unknown chat commands Nepoznata naredba razgovora Exceptions Izuzeci A comma separated list of commands. Spisak naredbi razdvojenih zapetom. Shell command (/sh) options Opcije naredbi školjke (/sh) Use threads to wait for shell commands to finish Koristi niti za čekanje izvršenja naredbe školjke Seconds to wait for shell commands when not using threads Koliko se sekundi čeka naredba školjke kada se niti ne koriste Open folders in the right pane by double clicking them Otvaranje direktorijuma u desnom oknu dvoklikom na njih Include a menu item for removing public hubs Omogući stavku menija za uklanjanje javnih habova Enabling this option will slow closing valknut Omogućavanje ove opcije će usporiti zatvaranje valknuta Other Drugo Disable features for old clients Isključivanje mogućnosti za stare klijente Disable support for the ADCGet command when hash list is disabled Isključi podršku za ADCGet naredbu kada je isključen heš spisak Disable support for XML filelists when hash list is disabled Isključi podršku za XML spiskove datoteka kada je isključen heš spisak This only applies to outgoing client connections. Hub and incoming connections are not checked. Ovo se primenjuje samo na odlazna povezivanja. Hab i dolazna povezivanja se ne proveravaju. Allow all connections Dozvoli sva povezivanja Allow private address space connections only Dozvoli samo povezivanje u okviru privatnih adresa Menu command settings Podešavanja naredbi menija Add commands received from the hub to the menus Dodaj u meni naredbe preuzete od haba Use a submenu for custom menu commands Koristi podmeni za korisnički određene naredbe Add a new menu command to the list. Dodaj novu naredbu menija u spisak. Edit an existing menu command. Uredi postojeću naredbu menija. Remove an existing menu command from the list. Ukloni iz spiska postojeću naredbu menija. Move up Gore Change the order of the commands. Promeni redosled naredbe. Move down Dole %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) %[mynick]= %[myNI]= Vaš nadimak %[mytag]= %[myTAG]= Vaš tag %[mydescription]= %[myDE]= Vaš opis %[myemail]= %[myEM]= Vaša e-pošta %[myshare]= %[mySS]= Tačna veličina Vaših deljenih datoteka %[myshareshort] = %[mySSshort]= Veličina Vaših deljenih datoteka (sa jedinicama) %[myip]= %[myI4]= Vaša IP adresa %[nick]= %[userNI]= Korisnikov nadimak %[tag]= %[userTAG]= Korisnikov tag %[description]= %[userDE]= Korisnikov opis %[email]= %[userEM]= Korisnikova e-pošta %[share]= %[userSS]= Tačna veličina korisnikovih deljenih datoteka %[shareshort]= %[userSSshort] = Veličina korisnikovih deljenih datoteka (sa jedinicama) %[ip]= %[userI4]= Korisnikova IP adresa (ako je poznata) %[line:reason]= Tekst upitnog dijaloga koji pita za „razlog“ Formatiranje datuma i vremena, za više konsultujte strftime(3). %c= Podrazumevani datum i vreme %d= Dan u mesecu kao broj (01 do 31) %m= Mesec u godini kao broj (01 do 12) %y= Godina sa četiri cifre %H= Sat u 24-časovnom formatu (00 do 23) %M= Minut kao broj (00 do 59) %S= Sekunda kao broj (00 do 60) Background color Boja pozadine Enable Omogući Transfers (TCP) Prenosi (TCP) Standard Listen Port: Standardni dolazni port: The tcp listen port for standard incoming connections. TCP port za prihvatanje dolaznih veza. Encrypted Listen Port: Kriptovani dolazni port: The tcp listen port for incoming encrypted connections. TCP port za prihvatanje kriptovanih dolaznih veza. Custom Browser Korisnički pregledač Uncheck to use your default desktop web browser. Onemogućite da bi se koristio podrazumevani veb pregledač okruženja. Reverse chat colors Reverzne boje razgovora Certificate Sertifikat Private Key Privatni ključ Enable SSL transfers with old valknut versions Omogući SSL prenose sa starijim verzijama Valknuta Old versions could not encrypt the initial handshaking commands which includes your nick. Starije verzije ne mogu da kriptuju komende početnog rukovanja koje sadrže Vaš nadimak. Recreate every hour Ponovo napravi svakog sata Disabled Onemogućeno Save Queue in minutes Sačuvaj red na svakih N minuta Maximum upload slots Maksimalno slotova za salnje Unlimited Neograničeno Maximum rate KiB/s Maksimalan odnos KiB/s Maximum uploads to user Maksimalan broj slanja po korisniku Searching Pretraživanje Search delay (seconds) Pauza između pretraživanja (sekunde) Reconnect Counter Brojač ponovnih povezivanja Never reconnect Ne povezuj se ponovo Never hide popups Ne sakrivaj iskačuće prozore Maximum paragraphs Maksimalno pasusa Hide popups of more lines than Sakrij iskačuće prozore sa više linija od Update every hour Ažuriranje svakih N sati Don't Display Messages after X retry Ne prikazuj poruke nakon N pokušaja Open new hub windows Otvori prozor za novi hab Minimized Minimizovan Normal Uobičajeno Maximized Maksimizovan Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Windows Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogSplash Valknut Valknut DCDialogSpy Spy Nadzor Clear Očisti Text Tekst Count Broj Statistic Statistika Active: Aktivno: 0 0 Reject: Odbijeno: Results: Rezultat: Search Error: Greška u pretrazi: Result Error: Greška u rezultatima: Passive: Pasivno: Time Vreme Spy Enabled Nadgledanje je omogućeno Ignore TTH searches Ignoriši TTH pretrage DCDialogTransfer Transfer List Spisak prenosa Nick Nadimak State Stanje Transfer Prenos Wait Poslovi Log Dnevnik Slots Slotovi Hub Hab Files Datoteke Local File / Nick Moja datoteka/nadimak Size / Hub Veličina/hab Remote File Udaljena datoteka Local File Moja datoteka File Name Naziv datoteke Hub/File Hab/datoteka IP/Size Adresa/veličina TTH TTH DCDialogTranslatorSettings Translator Settings Podešavanja prevodioca Choose a provider Izaberite prevodioca Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Podešavanja za Yahoo Babelfish Choose the languages Izaberite jezike Settings for Google Translate Podešavanja za Google Translate Input language Ulazni jezik Output language Izlazni jezik OK U redu Cancel Obustavi DCDialogUpdateManager Update Manager Menadžer nadogradnje Update Nadogradi Check update Proveri da li postoji nova verzija DCDialogUserCommandEditor User Command Editor Uređivač korisničke naredbe Command Type Vrsta naredbe Separator Razdvajač Raw Sirovo Chat Razgovor PM Privatan razgovor Context Kontekst Hub Menu Meni haba User Menu Meni korisnika Search Menu Meni pretraživanja Filelist Menu Meni spiska datoteka Parameters Parametri Name Naziv Command Naredba Hub IP / DNS (empty = All, 'op' = where operator) IP haba / DNS (prazno za Sve, „op“ za operatera) To (empty for selected user) Za (prazo za izabranog korisnika) Send once per nick Pošalji jednom po nadimku Text sent to hub Tekst za slanje na hab OK U redu Cancel Obustavi DCDialogUserCommandLines User Command Lines For On Use for all nicks OK U redu Cancel Obustavi DCDialogUsersList User Korisnik Users List Spisak korisnika Photo Fotografija Slot Slot Ignore Ignoriši DCEditServer Please enter a hubname. Unesite naziv haba. Please enter a hubhost. Unesite host haba. DCFileBrowser Items stavki Files datoteke Total ukupno Directories direktorijumi Root Directory Koreni direktorijum <wrong length> <pogrešna veličina> file datoteka Select destination Izaberite odredište Select a filename Izaberite naziv datoteke open filelist dialog otvara dijalog sa spiskom datoteka Choose a file Izaberite datoteku save file dialog dijalog za čuvanje datoteke Choose a filename to save under Izaberite naziv pod kojim će datoteka biti sačuvana Filebrowser Pregledač datoteka Folder Direktorijum Download contents? Preuzimanje sadržaja? Download the contents of " Preuzmi sadržaj iz „ Failed to load filelist Neuspešno učitavanje spiska Unable to load Učitavanje nije moguće OK U redu Modern XML Filelists Savremean IksML spisak datoteka Old BZ2 Text Filelists Stari BZip2 tekstualni spisak datoteka Very old HE3 Text Filelists Zastareli HE3 tekstualni spisak datoteka Old Valknut Filelists Stari Valknut spisak datoteka All files Sve datoteke Cannot save file Nije moguće sačuvati datoteku No data available to save. Nema podataka za čuvanje. Error saving file Greška pri pisanju datoteke Failed to save Neuspelo čuvanje Cannot open list now Sada nije moguće otvoriti spisak Filelist browser is busy Pregledač spiska datoteka je zauzet Error opening own filelist Greška pri otvaranju ličnog spiska datoteka Failed to open your own filelist Neuspelo otvaranje ličnog spiska datoteka Error opening filelist Greška pri otvaranju spiska datoteka File Datoteka does not exist. ne postoji. is likely not a valid filelist izgleda kao neispravan spisak datoteka Processing filelist... Obrađujem spisak datoteka... Cannot download Ne mogu da preuzmem Could not find the path for Ne mogu da pronađem putanju za None Nema Directory Direktorijum Modern XML Filelists (uncompressed) Nove XML liste datoteka (nekompresovane) Search by TTH Traži TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Preuzimanje datoteke Resume Nastavi Overwrite Prepiši Cancel Obustavi Not connected to required hub! Niste povezani na potreban hab! Connect Poveži Start a multi-download Pokreni preuzimanje iz više izvora File is already in the queue with a different size! Datoteka se već nalazi u redu za preuzimanje sa različitom veličinom! File already downloaded! Datoteka je već preuzeta! File already exists! Datoteka već postoji! You can start a multi-download! Možete započeti preuzimanje iz više izvora! Do you want to download all files in this mode? Da li želite da sve datoteke preuzimate u ovom režimu? Repair File Popravi datoteku File already exists in your finished downloads folder Datoteka već postoji u direktorijumu preuzetih datoteka It will be overwritten when the download finishes Biće prepisana kada se preuzimanje završi DCFileTransferInfo File Transfer Info Informacije o datoteci DCGuiApp Options Opcije &Options &Opcije Ctrl+O ktrl + O Open option dialog Otvori dijalog sa opcijama Exit Izlaz Ctrl+Q ktrl + I Quits the application Zatvori program Toolbar Traka alata Tool&bar Traka &alata Enables/disables the toolbar Prikaži/sakrij traku alata Statusbar Statusna traka &Statusbar &Statusna traka Enables/disables the statusbar Prikaži/sakrij statusnu traku Cascade Kaskadno &Cascade &Kaskadno Cascades all windows Naslaži sve prozore kaskadno Ctrl+S ktrl + K Transfer List Spisak prenosa &Transfer List Spisak &prenosa Ctrl+T ktrl + P Show Transfer List Prikaži spisak prenosa Hub Search Pretraživanje haba Show Hub Search Prikaži pretraživanje haba About O programu &About... &O programu... What's &This Šta je o&vo &File &Datoteka &View &Pogled &Action &Akcije &Window Pro&zor &Help Po&moć Ready. Spreman. Quit... Zatvori... Open options dialog... Otvaram dijalog opcija... Exiting application... Zatvaram program... Toggle toolbar... Menjam status vidljivosti trake alata... Toggle statusbar... Menjam status vidljivosti statusne trake... Show/hide transfer list window ... Prikazujem/sakrivam prozor sa spiskom prenosa... Show/hide hub search window ... Prikazujem/sakrivam prozor za pretraživanje haba... Normal Uobičajeno &Normal &Uobičajeno Ctrl+N ktrl + U Away Odsutan &Away &Odsutan Ctrl+A ktrl + O Hub List Spisak habova Show Hub List Prikaži spisak habova Show/hide hub list window ... Prikazujem/sakrivam prozor sa spiskom habova... H&ub List Spisak &habova Ctrl+U ktrl + H Minimize Minimizuj &Minimize &Minimizuj Action Akcija Quick Options Brze opcije Quick options Brze opcije F12 F12 Download mode: Ask Režim preuzimanja: pitaj Download mode: Single Režim preuzimanja: jedan izvor Download mode: Multi Režim preuzimanja: više izvora Spy Nadzor Show Spy Prikaži nadzor Show/hide spy window ... Prikazujem/sakrivam prozor za nadzor... Users Korisnici Ctrl+F ktrl + K Do you really want to quit? Da li zaista želite da zatovrite program? Exiting application... aborted Zatvaranje programa... obustavljeno Show/hide users window ... Prikazujem/sakrivam prozor korisnika... Away &Mode Režim &odsustva Tile &Horizontally Naslaži &horizontalno Reload Plugins Ponovo učitaj dodatke &Reload Plugins Ponovo &učitaj dodatke Dock Sakrij &Dock &Sakrij Dock the application Sakrij program u sistemsku kasetu Hub &Search &Pretraživanje haba S&py &Špijuniranje Ctrl+P ktrl + Š Dock/Undock application... Sakrivanje/prikazivanje programa... Recreate share Ponovo napravi spisak deljenih datoteka Refresh share in progress. Osvežavanje spiska deljenih datoteka je u toku. Exit Quits the application. Izlazak Izlazak iz programa. Toolbar Enables/disables the toolbar. Traka alata Prikazuje/sakriva traku alata. Statusbar Enables/disables the statusbar. Statusna traka Prikazuje/sakriva statustnu traku. Dock Dock the application. Sakrivanje Spušta program u sistemsku kasetu. Cascade Cascades all windows. Kaskadno Slaže prozore kaskadno. Tiles all windows horizontally. Naslaži sve prozore vodoravno. Tile Horizontally Tiles all windows horizontally. Vodoravno slaganje Slaže sve prozore vodoravno. Minimize all windows. Minimizuj sve prozore. Minimize Minimize all windows. Minimizovanje Minimizuje sve prozore. Close chat windows. Zatvori prozor razgovora. Close all chat windows. Zatvori sve prozore razgovora. Close chat windows Close all chat windows. Zatvaranje prozora razgovora Zatvara sve prozore razgovora. Close disconnected hubs. Zatvori nepovezane habove. Close all disconnected hub windows. Zatvori prozore svih nepovezanih habova. Close disconnected hubs Close all disconnected hub windows. Zatvaranje nepovezanih habova Zatvara prozore svih nepovezanih habova. Show Hub List. Prikaži spisak habova. Show Transfer List. Prikaži spisak prenosa. Show Hub Search. Prikaži pretraživanje haba. Show users: search tab and friends tab. Prikaži korisnike: jezičci pretrage i prijatelja. Set away mode. Postavi režim za odsustvo. About the application. Podaci o programu. About About the application. O programu Informacije o programu. Support Podrška &Support... &Podrška... Refresh share finished. Osvežavanje spiska deljenih datoteka i završeno. Refresh share already in progress. Osvežavanje spiska deljenih datoteka je već u toku. RX/TX Traffic. PR/PO prenos. Available disc space. Dostupan prostor na disku. Tile Vertically Naslaži uspravno &Tile Vertically &Naslaži uspravno Tiles all windows vertically Naslaži sve prozore uspravno Tile Vertically Tiles all windows vertically. Naslaži uspravno Slaganje svih prozora uspravno. Filelist browser Pregledač spiska datoteka Open filelist browser Otvori pregledač spiska datoteka Latest release Proveri da li j eobjavljeno novije izdanje programa &Latest release... &Najnovije izdanje... Latest release Show latest release. Najnovije izdanje Prikazuje najnovije izdanje. Can't get release info from server Ne mogu da dobavim informacije o izdanju sa servera latest release is: najnovije izdanje je: Latest release... Najnovije izdanje... Show update manager Prikaži upravnika nadogradnje Show/hide update manager window ... Prikazujem/sakrivam prozor upravnika nadogradnje... Warning license file not found ! Upozorenje: datoteka licence nije pronađena! Tabbar Traka jezičaka Enables/disables the tabbar Prikaži/sakrij traku jezičaka Tabbar Enables/disables the tabbar. Traka jezičaka Prikazuje/sakriva traku jezičaka. Show Search Spy. Prikaži nadzor pretraživanja. Tab Bar Traka jezičaka Toggle tabbar... Promeni prikaz trake jezičaka... Connect to Valknut hub Povezivanje na valknut hab Support Connect to the Valknut hub. Podrška Povezivanje na valknut hab. Filelist browser local Pregledač lokalnog spiska datoteka Open local filelist browser Otvori pregledač lokalnog spiska datoteka Manual Uputstvo &Manual... &Uputstvo... Online User Manual. Uputstvo za korisnike na mreži. Manual Online User Manual. Uputstvo Uputstvo za korisnike na mreži. Dock Application Sakrivanje programa The system tray icon must be enabled to dock the application. Ikona u sistemskoj kaseti mora da bude omogućena kako bi se program sakrio. Update Manager Upravnik nadogradnje The update manager is disabled. Upravnik nadogradnje nije omogućen. Ratio: Overall: Odnos: prosečno: (Up: (poslato: , Down: , preuzeto: ) This session: ) Ova sesija: Valknut Valknut Connected to Povezan na hubs habova Using dclib Koristi dclib Dock/Undock Usidri/uvećaj Remove tray icon Ukloni ikonicu iz sistemske kasete Open options dialog Otvori dijalog za opcije Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Osveži deljene datoteke Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut Valknut Using QT(R) Koristi QT(R) System Tray Icon Ikona u sistemskoj kaseti Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Javni Bookmarks Omiljeni Add Bookmark Dodavanje omiljenog haba Error Greška Please enter a hubname. Unesite naziv haba. Please enter a hubhost. Unesite host haba. Edit Bookmark Uređivanje omiljenog haba Remove bookmarks Uklanjanje omiljenog haba You are sure ? Da li ste sigurni? Remove Ukloni Cancel Obustavi Remove public hub Ukloni javni hab Add hub filter Dodaj filter habova A filter with that name already exists Filter sa tim nazivom već postoji Edit hub filter Uredi filter habova Delete hub filter Ukloni filter habova Filter not found Filter ne postoji Error removing hub " DCHubProfile Save profile Čuvanje profila Do you want to save your changes? Da li želite da sačuvate izmene? Save Sačuvaj Cancel Obustavi Are you sure? Da li ste sigurni? Delete profile for Uklanjanje profila za DCHubSearch No hubs found. Habovi nisu pronađeni. Hub Search Error Greška traženja habova No connected hubs found. Nema povezanih habova. Select download folder Izaberite direktorijum za preuzimanje Please select a connected hub. Izaberite povezani hab. Select file for Izaberite datoteku za USER KORISNIK FILE DATOTEKA Not connected to required hub! Niste povezani na potreban hab! Connect Poveži Cancel Obustavi save file dialog dijalog za čuvanje datoteke Choose a filename to save under Izaberite naziv pod kojim će biti sačuvano open file dialog dijalog za otvaranje datoteke Choose a file to open Izaberite datoteku za otvaranje Start Traži Stop Zaustavi Filelist download Spisak preuzimanja External search is already running! Spoljno pretraživanje je u toku! Please add a search! Dodajte pretraživanje! Multi Search only work in active mode! Višestruko pretraživanje funkcioniše samo u aktivnom režimu! Folder Direktorijum Unknown Nepoznato None Nema Directory Direktorijum File Datoteka Search ended with %1 results Pretraga je okončana sa %1 rezultata %1 results were filtered Filtrirano je %1 rezultata on uključeno Ready Spreman Other search... Druga pretaga... Auto search... Automatska pretraga... Search... Pretraga... Auto search finished Automatska pretraga je okončana %1 - %2 Results %1 - %2 rezultata %1 items %1 stavki Another search is already running! U toku je druga pretraga! Search for "%1" on %2 Tražim „%1“ na %2 all connected hubs svim povezanim habovima %1 filtered public hubs %1 filtriranih javnih habova all public hubs svim javnim habovima all bookmark hubs svim omiljenim habovima %1 - Searching %1 - Tražim Hub Search Pretraživanje habova Another search is running. Stop other search? U toku je druga pretraga. Da prekinem drugu pretragu? Folder download Add search Invalid TTH DCOptions Select download folder Izaberite direktorijum za preuzimanje Select share folder Izaberite direktorijum za deljenje Select language file Izaberite jezičku datoteku HubList URL Adresa spiska habova Please enter a url Unesite adresu Share list not available Spisak za deljenje nije dostupan bytes bajtova Total shared: Ukupno deljeno: Share List Info Informacije o spisku deljenih Select sound file Izaberite zvučnu datoteku Select sound player Izaberite plejer au au wav wav All Files Sve datoteke Select download finished folder Izaberite dirktorijum za završena preuzimanja Log Dnevnik Sound Zvuk General Opšte GUI Sučelje Chat Razgovor Transfer Prenos Connection Veza Mode Režim Settings Podešavanja Identify Lično Folder Direktorijum Interface List Spisak interfejsa Please select an interface Izaberite interfejs Select data folder Izaberite direktorijum podataka User Korisnik Select log file Izaberite datoteku dnevnika Security Bezbednost Select a browser Izaberite pregledač Select transfer cert Izaberite sertifikat za prenos Select transfer key Izaberite ključ za prenos Add new nick name filter Dodaj novi filter kadimka Please enter a nick Unesite nadimak Chat Timestamp Vremenska oznaka u razgovoru Chat Local Nick Moj nadimak u razgovoru Chat Local Text Moj tekst u razgovoru Chat Remote Nick Tuđi nadimak u razgovoru Chat Remote Text Tuđi tekst u razgovoru Chat Status Nick Nadimak za stanje u razgovoru Chat Status Text Tekst za stanje u razgovoru Public Chat Timestamp Vremenska oznaka u javnom razgovoru Public Chat Local Nick Moj nadimak u javnom razgovoru Public Chat Local Text Moj tekst u javnom razgovoru Public Chat Remote Nick Tuđi nadimak u javnom razgovoru Public Chat Remote Text Tuđi tekst u javnom razgovoru Public Chat Status Nick Nadimak za stanje u javnom razgovoru Public Chat Status Text Tekst za stanje u javnom razgovoru Public Private Chat Nick Nadimak privatnog u javnom razgovoru Public Private Chat Text Tekst privatnog u javnom razgovoru Select a 64x64 Photo Izaberite fotografiju 64×64 You must set a Download Folder! Morate da izaberete direktorijum za preuzimanje! Download Finished Folder and Download Folder must be different! Direktorijum za završeno preuzimanje i preuzimanje u toku moraju da se razlikuju! You must enter a valid 'Fake Host'! Morate uneti ispravan „lažni host“! You must enter a valid interface! MOrate uneti ispravan interfejs! You must enter a valid nick! Morate uneti ispravan nadimak! You must enter a valid search nick! Morate uneti ispravan nadimak za pretragu! Can't save Image! Ne mogu da sačuvam sliku! Can't load Image! Ne mogu da učitam sliku! Can't get Host IP! Ne mogu da prepoznam IP hosta! No interfaces found! Interfejs nije pronađen! Can't get interface IP! Ne mogu da prepoznam IP interfejsa! Chat Say Nadzor razgovora Host IP: IP hosta: Interface IP: IP interfejsa: Public Chat ME Nick MOJ nadimak u javnom razgovoru Hub Lists Spisak habova Valknut Valknut You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Podesili ste Valknut da sluša na portu manjem od 1024! U aktivnom režimu možete da pokrenete Valknut samo kao administrator! Compressed list size (HE3/BZ/XML): Valičina komprimovanog spiska (HE3/BZ/XML): Edit url Uredi adresu Auto Responses Auto odgovor Filelist browser Pregledač Icons Ikone Menus Meni Commands Naredbe You changed the client mode! Please restart Valknut! Promenili ste režim klijenta! Restartujte Valknut! Error getting IP Greška pri otkrivanju IP Operator Nick Nadimak operatera Yes Da No Ne Case sensitive Veličina je bitna Case insensitive Veličina nije bitna Overwrite? Prepisati? Replace existing key/cert? Zamena postojećeg ključa/serfitikata? Could not create folder for key Ne mogu da napravim direktorijum za ključ Could not create Nije moguće napraviti Could not create folder for cert Ne mogu da napravim direktorijum za sertifikat Could not start openssl 1 Ne mogu da pokrenem openssl 1 Make sure the openssl program is in your PATH. Proverite da li je openssl program u Vašoj putanji (PATH). Error occurred while running openssl 1 Nastala je greška pri pokretanju openssl 1 Could not start openssl 2 Ne mogu da pokrenem openssl 2 Error occurred while running openssl 2 Nastala je greška pri pokretanju openssl 2 Select plugin folder Izaberite direktorijum dodataka Other Drugo Delete menu command? Uklanjanje naredbe menija? Delete " Ukloni " Get Internet IP Prepoznaj spoljni IP Unexpected response from Neočekivani odgovor od does not look valid ne izgleda kao validan Standard and encrypted port must be different. Standardni i kriptovani port se moraju razlikovati. Unlimited Neograničeno Uploads Downloads Shares Remote Encoding Udaljeni kôdni raspored These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client Klijent DCShellCommandRunner Command produced no visible output. Naredba je vratila nevidljivi izlaz. Process exited with status Proces je okončan sa stanjem Process was killed or crashed. Process still running after 2 minutes, killing process... Proces je aktivan već 2 minuta, ubijam proces... DCTransferView Wait Sačekajte Idle Na čekanju Run U toku Transfer Prenos Error Greška Unknown Nepoznato Pause Pauza Hub offline Hab je isključen User offline Korisnik nije povezan User busy Korisnik je zauzet Send error Pošalji grešku Change Transfer-Rate Promeni odnos prenosa Please enter a Transfer-Rate [B/s] (0=off) Change File-Priority Promeni prioritet Please enter a priority Unesite prioritet Try Connect Pokušaj povezivanje User and Hub not found in the queue ! Korisnik i hab nisu pronađeni u redu! Nick: Nadimak: Hub: Hab: Remove Transfer Ukloni prenos You are sure ? Da li ste sigurni? Remove Ukloni Cancel Obustavi My Moje None Ništa File Datoteka %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory Direktorijum DCTranslator Translator Prevodilac Chinese Simplified Kineski pojednostavljeni to u English engleski Chinese Traditional tradicionalni kineski Dutch holadnski French francuski German nemački Greek grčki Italian italijanski Japanese japanski Korean korejanski Portuguese portugalski Russian ruski Spanish španski Detect language Otkrij jezik Arabic arapski Bulgarian bugarski Chinese kineski Croatian hrvatski Czech češki Danish danski Finnish finski Hindi hundu Norwegian norveški Polish poljski Romanian romanski Swedish švedski Translator Settings Podešavanja prevodioca Choose a provider Izaberite prevodioca Settings for Yahoo Babelfish Podešavanja za Yahoo Babelfish Choose the languages Izaberite jezike Settings for Google Translate Podešavanja za Google Translate Input language Ulazni jezik Output language Izlazni jezik OK U redu Cancel Obustavi Unknown translation provider Nepoznati prevodilac The translation could not be found in the HTML received. Prevod nije pronađen u primljenom HTML-u. This likely means that Ovo znači da changed their system and this feature no longer works. je promenjen sistem i ova mogućnost više ne funkcioniše. DCUpdateManager Download failed Neuspelo preuzimanje Update finished Nadogradnja je završena Download content Preuzimanje sadržaja Download content failed Preuzimanje sadržaja nije uspelo Download update.xml Preuzimam update.xml Download update.xml failed Preuzimanje update.xml nije uspelo Update available for Dostupna je nadogradnja za update(s) available nadogradnja(e) dostupno Update available but no bz2 support for Dostupna je nadogradnja ali nema bz2 podrške za DCUserCommandEditor User Command Editor Uređivač korisničke naredbe Name and command must not be empty. Naziv i naredba ne mogu biti prazni. Separator Razdvajač DCUsersList Permanent slot Permanentni slot Ignore Ignoriši Grant permanent slot Dodeli permanentni slot Remove permanent slot Ukloni permanentni slot Ignore chat messages Ignoriši poruke razgovora Show chat messages Prikaži poruke razgovora PublicHubsModel Name Naziv Server Server Description Opis Users Country Država Shared Deljeno Minimum share Extra Posebno QObject Download Preuzmi Download To Preuzmi u Download As Preuzmi kao Browse User Files Pregledaj korisnikove datoteke Private Chat Privatan razgovor Kick Izbaci Force Move Forsiraj preusmeravanje Update User Osveži korisnika Connect Poveži se Disconnect Van mreže Reload Userlist Osveži spisak korisnika Connect To Hub Poveži se na hab Add Dodaj Add Bookmark Dodaj omiljeno Edit Uredi Edit Bookmark Uredi omiljeno Remove Ukloni Close Transfer Prekini prenos Info Informacije Try Connect Pokušaj povezivanje Remove from Queue Ukloni iz reda Remove Transfer from Queue and Disk Ukloni prenos iz reda i sa diska Save Queue Sačuvaj red Update Server Osveži server Update all Server Osveži sve servere Change Transfer-Rate Promeni odnos prenosa Copy row to Clipboard Umnoži red u klipbord Copy column to Clipboard Umnoži kolonu u klipbord File Info Informacije o datoteci Connect To All Hubs Poveži se na sve habove Search for clones Traži klonove Remove complete from Queue Ukloni završene iz reda Load Učitaj Save Sačuvaj Add this extra source Dodaj ovaj ekstra izvor Edit transfer Uredi prenos Edit file priority Uredi priorited datoteke Translate Prevedi Translator Prevodilac Disable group Onemogući grupisanje Group by File Grupiši po datotekama Group by Size Grupiši po veličini Group by Nick Grupiši po nadimku Group by free Slots Grupiši po slobodnim slotovima Group by Hub Grupiši po habovima Group by Path Grupiši po putanjama Group by Host Grupiši po hostu Copy Umnoži Clear Obriši Select all Izaberi sve Close Zatvori Group Grupiši Hide Sakrij Refresh Filelist Osveži spisak datoteka Pause Queue Pauziraj prenos Resume Queue Započni prenos Insert Smiley Umetni smešak Add Friend Dodaj prijatelja Czech češki Danish danski Dutch holandski Finnish finski German nemački Hungarian mađarski Icelandic islandski Norwegian norveški Polish poljski Romanian rumunski Spanish španski Swedish švedski Copy Link Umnoži vezu Request secure chat Zahtevaj bezbedan razgovor Close secure chat Zatvori bezbedan razgovor Profile editor Uređivač profila Reset Resetuj Dock Ugradi Undock Izdvoj Exit Izlaz Custom Proizvoljno Latvian litvanski Russian ruski Slovak slovački Check client version Proveri verziju klijenta Add Permanent Dodaj permanentno Group by Hash Grupiši po hešu Upload Slot Slotova za slanje Bosnian bošnjački English engleski French francuski Greek grčki Italian italijanski Repair File Popravi datoteku Repair BIN sectors Popravi BIN delove Brazilian brazilski Search by TTH Traži TTH Copy TTH to clipboard Umnoži TTH u klipbord Look up TTH at Bitzi.com Potraži TTH na Bitzi.com Search for clones by TTH Traži klonove po TTH Copy magnet link Umnoži magnetnu vezu User: Korisnik: Get user IP Dobavi korisnikovu IP Command produced no visible output. Naredba je vratila nevidljivi izlaz. Process exited with status Proces je okončan sa stanjem Process was killed or crashed. Proces je prekinut ili srušen. Failed to start shell command. Neuspelo pokretanje naredbe školjke. User Commands Korisničke naredbe Enter enter Serbian (Cyrillic) srpski (ćirilica) Serbian (Latin) srpski (latinica) (choose an existing download to add to) (izaberite postojeći prenos kome će se dodati) File download Preuzimanje datoteke A same file is already in the queue! Ista datoteka je već u redu za preuzimanje! Start a multi-download Pokreni preuzimanje iz više izvora Cancel Obustavi File is already in the queue but not mark as a multi-download! Datoteka se već nalazi u redu za preuzimanje ali nije označena za prenos iz više izvora! File is already in the queue with a different size! Datoteka se već nalazi u redu za preuzimanje sa različitom veličinom! File already downloaded! Datoteka je već preuzeta! Enter byte range (m-n) Unesite raspon bajtova (a-b) Repair BIN Sectors Popravka BIN sektora Enter sector range (m[-n]) Unesite raspon sektora (a[-b]) Invalid start position. Neispravna početna pozicija. Invalid end position. Neispravna krajnja pozicija. Invalid number of sectors. Neispravan broj sektora. Invalid range entered. Unet je neispravan raspon. File already exists! Datoteka već postoji! Resume Nastavi Overwrite Prepiši File already exists in your finished downloads folder Datoteka već postoji u direktorijumu preuzetih datoteka It will be overwritten when the download finishes Biće prepisana kada se preuzimanje završi Download manager returned unknown value: Upravnik preuzimanja je vratio nepoznatu vrednost: Not connected to required hub! Niste povezani na potreban hab! Group by total Slots Grupiši po ukupnom broju slotova Download Folder Direktorijum za preuzimanje Zoom in Zoom out Group by IP SearchSpyModel Text Tekst Count Broj Time Vreme UserListModel Nick Nadimak Comment Komentar Tag Tag Speed Brzina Email Share Deljeno IP IP Lock/PK Zaključano/PK Supports Podržano valknut-0.4.9/valknut/ts/README.rus0000664000076400007640000000226410523776621015165 0ustar ejsejsThis is localisation for Valknut in russian language v0.0-1. Makes by Stan Novogorudski. Please send all amendments, improvements and remarks to steam@steam-virtuality.de ------------------------------------------------------------ Valknut v0.0-1. . , steam@steam-virtuality.de ------------------------------------------------------------ Dies ist die Valknut lokalisation fuer russische sprache v0.0-1. Gemacht bei Stan Novogroudski. Bitte senden Sie alle Verbesserungen, Anmerkungen und Anregungen an steam@steam-virtuality.de ------------------------------------------------------------ ********************************************************************* * www.steam-virtuality.de * *^o^ __ __ ^o^* * steam@steam-virtuality.de * \|/ * / / \ \ * * StasN@gmx.net * @ @ * \ \ / / * * Phone: +491723132427 *---oOOo-(_)-oOOo---* |_| |_| * * ICQ: 140674538 * *^o^ ^o^* *********************************************************************valknut-0.4.9/valknut/ts/README0000664000076400007640000000112010523776621014343 0ustar ejsejsLanguages --------- valknut.bs.ts - Bosnian valknut.cs.ts - Czech valknut.da.ts - Danish valknut.de.ts - German valknut.el.ts - Greek valknut.en_GB.ts - English valknut.es.ts - Spanish valknut.fi.ts - Finnish valknut.fr.ts - French valknut.hu.ts - Hungarian valknut.is.ts - Icelandic valknut.it.ts - Italian valknut.lv.ts - Latvian valknut.nb.ts - Norwegian valknut.nl.ts - Dutch valknut.pl.ts - Polish valknut.pt_br.ts - Bra. Portuguese valknut.ro.ts - Romanian valknut.rus.ts - Russian valknut.sk.ts - Slovak valknut.sv.ts - Swedish valknut-0.4.9/valknut/ts/valknut.nl.ts0000664000076400007640000116505311144234504016135 0ustar ejsejs DCBrowseFileTree Select destination Kies bestemming Select a filename Kies bestandsnaam <wrong length> <verkeerd lengte> DCChat Message not send ! Bericht niet verzonden ! Private Chat: Privé Chat: Chat Cleared. Chat Gewist. Send Clipboard Verzend Kladblok Translation: Translation failed: Line is encrypted. Line is not encrypted. Choose a filename to save under Refresh share in progress. Help: /refresh - refresh share /ts - switch time display in chat on/off Current mode: active passive Switch timestamp Send advertisment. Wrong parameter for '/join' Join to: Wrong parameter for '/msg' Away message disabled. Away message set. /join &lt;address&gt; - disconnect from currently connected hub and connect to another hub /msg &lt;nick&gt; &lt;message&gt; - send private message Select download folder Kies download map Select file for Photo received. Only allowed in private chat. Photo encode error. Refresh share already in progress. Chat: Message not sent! /clear - clears the chat window /mode - shows the current mode /bye &lt;message&gt; - disconnect from channel with an optional message /ls &lt;nick&gt; - get share list from user /grant &lt;nick&gt; - grant user a slot /grantp &lt;nick&gt; - grant user a permanent slot /friend &lt;nick&gt; - add user to friend list /fav - add hub to bookmark list /now - send current time to the chat /raw - send raw message Get info failed. Info: Nick: Nick: Operator: yes no Comment: Speed: Snelheid: EMail: Shared: Away: on off Version: Unknown Onbekent Tag: day days hour hours minute minutes Download sharelist from No nick, try /dchelp Permanent slot added for Slot added for Added to friend list Add bookmark hub Private message sent. Private message not sent! Photo not found. Can't read your photo. Photo not sent. Photo sent. The user is using an old version or not using Valknut /adv - send an advertisment to the hub Joins: Parts: /rebuild - remove no longer present files from hash database /slots &lt;N&gt; - set number of upload slots to N /uptime [show] - show valknut uptime [to other users] /info &lt;nick&gt; - show user info /sh &lt;command&gt; &lt;args...&gt; - send output of shell command to chat /disablesorting - disable sorting of the user list /enablesorting - enable sorting of the user list Valknut uptime Rebuild share in progress. Invalid number of upload slots specified. Download Valknut from http://wxdcgui.sourceforge.net It does everything ! Works on almost any platform you can think of and makes you coffee. Command produced no visible output. Process was killed or crashed. Failed to start shell command. Disabled user list sorting. Enabled user list sorting. /ratio [show] - show share ratio [to other users] ratio: overall: uploads downloads this session: Unknown command, try /dchelp /newlog - start a new logfile No command entered. New log timestamp: Warning: log timestamp not enabled. Error was: Shell command event not found in list Process still running after seconds, killing process... Bytes Bytes Setting upload slots to on. off. Process exited with status is not in ignore list /ignore &lt;nick&gt; - do not show chat messages from the user /unignore &lt;nick&gt; - show chat messages from the user again Ignoring chat from Showing chat from Sent away message: Supports encryption: Upload slots: Wrong parameter for '/raw' /validate - check hash database for errors A share operation is already in progress. Validate hash database in progress. /away &lt;message&gt; - toggle away mode, optionally set message /back - disable away mode /awaymsg &lt;message&gt; - set automatic response for private messages; if the message is empty, disable it Away mode off. Away mode on: DCClient Connection timeout Connectie timeout Error: ' Fout: ' Validate denide Toestaan ontzeggen Sorry, client work in passive mode Sorry, client werkt in passieve modus Redirect to Doorsturen naar Password - Wachtwoord - Please enter your password Gelieve uw wachtwoord in te geven Wrong password Verkeert wachtwoord You must enter a search word. Je moet een zoek term ingeven. Search Error Zoek Fout OP Force Move OP Dwing Move Please enter host Gelieve een host in te geven Please enter a message Gelieve een bericht in te geven Redirect disabled Doorsturen uitgeschakelt Private chat only in current hub ! Privé chat alleen in deze hub ! Select download folder Kies download map Select file Kies bestand OP Kick OP Kick Please enter a reason Gelieve een reden in te geven User: Gebruiker : Connected Verbonden Disconnected Niet Verbonden Chat Cleared. Chat Gewist. Use password from profile Gebruik wachtwoord van profiel Password from profile is empty Wachtwoord van profiel in leeg No profile found for this hub Geen profiel gevonden voor deze hub Hub Hub Hubname change: User rejoin the hub. User left the hub. users We left the hub. Joins: Parts: Chat List Line is encrypted. Line is not encrypted. Your Nick is already in use. Disconnect. Connect. Close chat tab Sorry, you will not be able to download from me, because we are both in passive mode. (automated message) OK OK Flood Detected Cannot display user with empty nick. Cannot display operator with empty nick. Hub gave us our IP: Enable Use IP address from the hub in Options -> Connection -> Mode to use this value. Any Alle DCDebug Send error Versturings fout Send Verzend Save error Can't open file '%1' for writing. Getting information about the crash... Failed to get more information about the crash. The %1 program is required to get the information. Exit code: %1 Error messages: Choose a filename to save under Text (*.txt) DCDialogAbout About Over OK OK Authors License Valknut - A Direct Connect filesharing client Copyright 2001-2004 Mathias Küster Copyright 2006-2008 Edward Sheldrake Homepage: http://wxdcgui.sourceforge.net DCDialogAskDownloadMode File download Bestand download Download mode? Multi Return Single Esc Download all files in this mode DCDialogBrowseFileTree File Browser Bestands Verkenner File Bestand Size Grote Files Bestanden Shared Gedeelt DCDialogChat Form1 Blad1 Hide Verberg Clear Wis Send Clipboard Verstuur Kladblok &Send DCDialogChat DCDialogClient Form1 Blad1 User Gebruiker Nick Nick Comment Commentaar Speed Snelheid EMail EMail Bytes Bytes Chat Chat Hub Hub Spy Spioneer On/Off Aan/Uit Search Zoek File Bestand Size Grote Slot Slot Path Path Results: Resultaten: Filter Filter At Least Minstens At Most Maximum KB KB MB MB Any Alle MP3 MP3 Compressed gecomprimeert Document Document Executable Uitvoerbaar Picture Foto Video Video Folder Map Type Type Results Resultaten 0 0 Share Gedeelde Host Host GB GB Max Free Slots (0=off) Maximum vrije slots (0 = uit) Free Slots Vrije Slots Chat List DCDialogClient User(s) ... DCDialogConnectionManager Connection Verbinding DCDialogDebug Comment Commentaar &Save Save to file. E&xit Exit. Valknut Crash Handler DCDialogDebugSettings Debug Settings Console output Minimal Verbose Extra verbose Network socket log None Send Verzend Receive Ontvang Both OK OK malloc info DCDialogEditServer Form1 Blad1 Settings Instellingen Name Naam Host Host Description Beschrijving Cancel Annuleren Accept Aanvaarden Password Wachtwoord DCDialogEditServer &Profile Profile Profiel Nick Nick EMail EMail Auto Connect Automatisch Verbinden Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogEditSharePath Edit share path Alias Path Path DCDialogEditTransfer Edit Transfer Settings Instellingen Nick Nick Hub name Hub address Known hubs Accept Aanvaarden DCDialogFileBrowser Form1 Blad1 Name Naam Size Grote Open Save Bewaar Type Type TTH Folder Map Exact Size Go to user Filelist Browser Find Next DCDialogFileTransferInfo File Transfer Info Bestands Overdracht Informatie File Bestand Size Grote Done Klaar Hash Sources DCDialogForceMove OP Force Move OP Dwing Move Please enter a host Please enter a message Gelieve een bericht in te geven OK OK DCDialogGetURL Get URL Haal URL Cancel Annuleren DCDialogHubFilter Hub Filter Filter Filter Min. User Contains Save Bewaar Name Naam Server Server Description Beschrijving Settings Instellingen DCDialogHubListManager Hub List Hublijst Public Publiek Name Naam Server Server Description Beschrijving User Gebruiker double click to hide the toolbar edit filter delete filter Filter Filter add filter double click to show the toolbar Bookmarks Favorieten connect Verbind Shared Gedeelt Update public hublist. Adds new hubs from configured hublists without removing any existing hubs. Reload public hublist. Clears all public hubs then loads configured hublists. Move up Change the order of the bookmarks. Move down Enable sorting Enable sorting of the bookmarks. Save Bewaar Save the bookmarks to the configuration file. Bookmarks are saved automatically and this is not normally needed. Add bookmark. Add Toevoegen Edit bookmark. Edit Wijzigen Remove bookmark. Remove Verwijderen DCDialogHubProfile Edit hub Profiles Wijzig hub profiel Profile Profiel Create Maak Delete Verwijder Save Bewaar Settings Instellingen Password Wachtwoord OK OK Auto Connect Automatisch Verbinden Hub profile editor Nick Nick Description Beschrijving EMail EMail Tag Secure Socket Layer Extended hub count Remote encoding Open chat exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. DCDialogHubSearch Results Resultaten Nick Nick File Bestand Size Grote Slot Slot Hub Hub Path Path Log Log Search Zoek Stop Stop Results: Resultaten: Connected Hubs Verbonden Hubs Bookmark Hubs Favoriete Hubs Filter Filter Type Type At Least Minstens At Most Maximum KB KB MB MB Any Alle MP3 MP3 Compressed gecomprimeert Document Document Executable Uitvoerbaar Picture Foto Video Video Folder Map Hub Search Zoek Fout Host Host Threads Threads GB GB Free Slots Vrije Slots Max Free Slots (0=off) Maximum vrije slots (0 = uit) Exact Exact B B 0/0 0/0 0 0 Search in path+file name only Zoek in path+bestand alleen Search History Doorzoek Geschiedenis History Geschiedenis Hubs Hubs Hub Options Hub Opties Connected Hub Verbonden Hub Refresh Vernieuwen Public Hubs Publieke Hubs Expert Expert User Gebruiker Reset Clients Live filters Include: Exclude: Apply Mode Modus Add Toevoegen Start Start the search. Add a search to the searchqueue Filtered Hubs Multi Search Enable Tag Audio KiB MiB GiB Total Slots Purge Clear the search history Count Ready Overall search status Clear search string and set search size, size mode and file type to default TTH Any size At least At most Maximum results Unlimited IP DCDialogMagnet Magnet Link Details Link TTH Name Naam Size Grote Exact size Action Start search Add to download queue Do nothing Do the same action next time without asking OK OK DCDialogMessage DCDialogMessage Do not show this again. DCDialogOptions Options Opties Identify Identificeer Information Informatie E-Mail: E-Mail: Nick: Nick: Description: Beschrijving: Speed: Snelheid: 56Kbps 56Kbps 33.6Kbps 33.6Kbps 22.8Kbps 22.8Kbps Satellite Satellite ISDN ISDN DSL DSL Cable Cable LAN(T1) LAN(T1) LAN(T3) LAN(T3) Anti-Spam (email at home dot com) Anti-Spam (email op home dot com) Transfer Overdracht Filetransfer Bestands Overdracht Share Folders Deel Mappen Rebuild List Herbouw lijst Info Informatie Add Toevoegen Remove Verwijderen Download Folder Download map Browse Blader Upload Options Upload Opties Max. simultaneous uploads: Max. gelijktijdige uploads Limit transferrate (0=off) Limiteer overdrachtssnelheid (0 = uit) Byte/sec. Byte/sec. Connection Verbinding Settings Instellingen Mode Modus Active Mode Actieve Modus Passive Mode Passieve Modus Passive Mode Settings Passieve Modus Instellingen No multi hub search ! No incoming connections ! Geen multi hub zoeken ! Geen inkomende verbindingen ! Active Mode Settings Actieve Modus Instellingen TCP Listen Port: TCP Ontvang Poort: 412 412 Hub Search Hub doorzoeken UDP Listen Port: UDP Ontvang Poort: Use ip from interface (ppp0,eth0) Gebruik ip van interface (ppp0,eth0) Test Test Use wrong ip (Firewall/Portforward) Gebruik fout ip (Firewall/Portforward) Interface IP Interface IP Wrong IP Verkeert IP GUI GUI GUI Options GUI Opties open private chat window Open priv�chat venster Other Andere Other Options Andere Opties Hublist Hublijst Store local Bewaar lokaal Save Bewaar Cancel Annuleer Windows Vensters Theme Thema Language File Taal Bestand Connections Verbindingen Reconnect Counter (0=off) Herverbinden Teller (0=uit) Reconnect Timeout (sec.) Herverbinden Timeout (sec.) Allow Force Move Sta Force Move toe Source Url's Bron Url's URL URL Max. upload slots (0=off) Max. upload sloten (o=uit) change size values automatically to kb/mb/gb Verander waardes automatish naar kb/mb/gb Application Font Programma Lettertype Rebuild Herbouw Maximal upload connections. Maximale upload verbindingen. Transferrate for each slot. Overdracht snelheid voor ieder slot. Transfer Request Timings Transfer Aanvraag Timings Resend Timeout (sec.) Herstuur Timeout (sec.) Response Timeout (sec.) Beantwoord timeout(sec.) Hub Connections Hub verbindingen Sound Geluid External Player Andere Speler Enable Sound Gebruik Geluid Chat Chat Units Delen Auto Automatisch Byte Byte GByte GByte KByte KByte MByte MByte General Algemeen Disable Sound Gebruik geen geluid Play a sound when receiving a message Speel een geluid bij het ontvangen van een bericht Play a sound when disconnecting from a hub Speel een geluid bij het verbreken van de verbinding Play a sound when receiving first message Speel een geluid bij het ontvangen van het eerste bericht Play a sound when sending a message Speel een geluid bij verzenden van een bericht Play a sound when connecting to a hub Speel een geluid bij het verbinden met de hub Disable sound when away Schakel geluid uit bij afwezigheid Files Bestanden Player Speler Sound Files geluids bestanden Connect Verbind Preview Bekijk Disconnect Verbreek verbinding Send Verzend Receive Ontvang 1st Receive 1ste Ontvangen Log Log Timestamp Timestamp Private Chat Privé Chat Hub Chat Hub Chat Download Queue Download rij Save Queue in minutes (0=off) Bewaar rij in minuten (0=uit) Move Finished Files to this Folder (empty = disabled) Verplaats complete bestanden naar deze map (leeg = uitgeschakelt) Use wrong ip/hostname (Firewall/Portforward) Gebruik fout ip/hostnaam (Firewall/Portforwad) No multi hub search ! No incoming connections ! Geen multi hub zoeken! Geen inkomende verbindingen ! Send warn message to remote user on active mode request Verzend waarschuwings bericht naar de gerbuiker bij aanvraag voor actieve modus Status Messages Status Berichten Show Status Messages Toon Status Berichten Open Private Chat Window Open Privé Chat Venster Transfer Options Overdracht Opties Transfer View Overdracht bekijken Chunk Percent Stuk Procent File Percent Bestands Percentage Chunk Size Stuk Grote Elapsed Time Verstreken Tijd Download Rate Download Snelheid File Size Bestands Grote Search Nick: Zoek Nick: Remaining Time Resterende Tijd Send hide private chat to public chat Verstuur privé chat naar publieke chat Chat options Chat Opties Message filter Berichten filter Hide popups of more than ? lines (0=off) Verberg popups van meer dan ? lijnen (0=uit) Away Message: Your line speed. The nick for hub searches. Your EMail. Enable/Disable the Anti-spam option. A little description. Add Description Tag (<DCGUI ....>) Add a tag to the description that show some information from you. Your nick. The udp listen port for incoming search results. Select a interface. Get the ip from the host. The time between a reconnect. How often we reconnect to a hub. Private Address Space (rfc1918) Ignore private address space connections Folder Map Rebuild your sharelist. Add a folder to your sharelist. Remove a folder from your sharelist. Show some information about your sharelist. Browse your own share list. Time to wait for a transfer response from the remote user. Time to wait before a new transfer request is send to the remote user. Dynamic upload rate Test the new theme. Data Folder Query Query on exit Messages Use tab for every chat window Open the chat window on incoming messages. Enable emoticons in chat Show send button Ctrl + Enter Enter Alt + Enter Alt + S Send message with Client Client options User-List right alignment Logfile Logfile enabled Security Flood Protection Kick the user for flooding (only for Operators) Kick Message Color Transfer Cert/Key If user quits hub, stop following transfers Upload Upload Both Download Download None Auto-Search for new sources Download Rate Single Download Rate Multi Remaining Time Single Remaining Time Multi Path Path Alias Edit Wijzigen Edit a folder from the sharelist. Open File Dialog. Add a URL to the list. Remove a URL from the list. 28.8Kbps 28.8Kbps Enable logging Append date to log file name Nick name filter Disable logging for public chat Append hub name to log file name Append hub host to log file name Forward private to public chat Away Prefix: Select Language. Check and recreate sharelist on startup seconds Away after Auto Away Mode Show joins and parts Comment Commentaar Speed Snelheid EMail EMail Share Gedeelde Photo Query on File Delete IP, Hostname or Interface Get Interface Get Internet IP IP or Hostname Network Interface Listen on IP Hub Lists Disable hash list GiB KiB MiB Edit hublist url. Extended hub count in tag (H:3/2/1) If checked, hub count will be shown as H:Normal/Reg/OP, otherwise H:Total will be shown. Do not share dot files and folders If checked, files and folders starting with "." will not be shared. Small file size (bytes) The maximum size of files for which extra upload slots will be granted. Compressed transfers Enable compressed transfers Use IP address from the hub Enable compressed hub to client communication (EXPERIMENTAL) Joins and parts only for friends Commands Custom chat commands Name Naam Command Menus Custom menu commands Double clicking a user Opens private chat Downloads filelist Icons Icon themes Emoticons Application Icons Userlist icons To ensure all icons are changed, please restart valknut. Filelist browser Filelist browser settings Also show folders in the right pane Sort folders in the right pane on top Show folders sizes in the left pane Listen to the sound file. Play a sound when your nick is mentioned in public chat Open File Dialog Log completed downloads Log completed uploads Log all transfer details Generate Create a new key and certificate pair. Auto Responses Auto Response Settings Enable auto responder for public chat Enable auto responder for private messages Minimum seconds between auto responses Ignore nicks A QT regular expression of nicks to not auto respond to, case insensitive. Trigger Case Sensitive Response Remote Encoding For a list of valid encodings, run "iconv -l" Advanced Read file buffer size (bytes) If you experience slow uploads in a LAN, try increasing this value. Adjust hub details in search results Only used if searching a single connected hub. Send unknown /commands as chat If true, undefined chat commands will be sent to the hub. Plugin folder Tab nick completion options Tab completion matches by Containing anywhere Starting with Ignore all tags (text inside []) Unknown chat commands Exceptions A comma separated list of commands. Shell command (/sh) options Use threads to wait for shell commands to finish Seconds to wait for shell commands when not using threads Open folders in the right pane by double clicking them Include a menu item for removing public hubs Enabling this option will slow closing valknut Disable features for old clients Disable support for the ADCGet command when hash list is disabled Disable support for XML filelists when hash list is disabled This only applies to outgoing client connections. Hub and incoming connections are not checked. Allow all connections Allow private address space connections only Menu command settings Add commands received from the hub to the menus Use a submenu for custom menu commands Add a new menu command to the list. Edit an existing menu command. Remove an existing menu command from the list. Move up Change the order of the commands. Move down %[mynick]= %[myNI]= Your nick %[mytag]= %[myTAG]= Your tag %[mydescription]= %[myDE]= Your description %[myemail]= %[myEM]= Your email %[myshare]= %[mySS]= Your share (exact) %[myshareshort] = %[mySSshort]= Your share (with units) %[myip]= %[myI4]= Your IP address %[nick]= %[userNI]= The user's nick %[tag]= %[userTAG]= The user's tag %[description]= %[userDE]= The user's description %[email]= %[userEM]= The user's email %[share]= %[userSS]= The user's exact share in bytes %[shareshort]= %[userSSshort] = The user's share with units %[ip]= %[userI4]= The user's IP address (if known) %[line:reason]= Text from an input dialog asking for "reason" Time and date specifiers, for more see strftime(3). %c= The default date and time %d= The day of the month as a number (01 to 31) %m= The month of the year as a number (01 to 12) %y= The year as a four digit number %H= The hour using 24-hour clock (00 to 23) %M= The minute as a number (00 to 59) %S= The second as a number (00 to 60) Transfers (TCP) Standard Listen Port: The tcp listen port for standard incoming connections. Encrypted Listen Port: The tcp listen port for incoming encrypted connections. Custom Browser Uncheck to use your default desktop web browser. Reverse chat colors Certificate Private Key Enable SSL transfers with old valknut versions Old versions could not encrypt the initial handshaking commands which includes your nick. Recreate every hour Disabled Save Queue in minutes Maximum upload slots Unlimited Maximum uploads to user Searching Search delay (seconds) Reconnect Counter Never reconnect Never hide popups Maximum paragraphs Hide popups of more lines than Update every hour Don't Display Messages after X retry Open new hub windows Minimized Normal Normaal Maximized Shares Share Settings Downloads Download Settings Maximum rate Minimum segment size MiB Uploads Upload Settings You must close and re-open each hub to use the new setting. Open extra slots When total upload rate is below KiB/s Maximum extra slots to open Open chat window exceptions A regular expression of nicks. For example "Hub|Bot|Spammer" will match Hub or Bot or Spammer. Chat logging Magnet links Clicking magnet links in chat Open dialog Start search Do nothing Enable obsolete peer protocol extensions Tab Page Right click to add or remove commands, double click on text to edit it. Allow sending chat to offline users Show chat from offline users Send message Colors Chat text Custom chat background Lists Alternating row colors DCDialogServerList connect Verbind Public Publiek reload Herlaad Name Naam Server Server Description Beschrijving User Gebruiker update Update 0 0 servers Servers Bookmarks Favorieten Hub List Hublijst 0/0 0/0 Filter Filter Edit Wijzigen Add Toevoegen DCDialogSplash Dcgui Dcgui Valknut DCDialogSpy Spy Spioneer Clear Wis Statistic Active: 0 0 Reject: Results: Resultaten: Search Error: Result Error: Passive: Spy Enabled Ignore TTH searches DCDialogTransfer Transfer List Overdracht Lijst Nick Nick State Status Transfer Overdracht File Bestand Wait Wacht Size Grote Log Log Slots Slot Hub Hub 0/0 0/0 Files Bestanden Local File / Nick Lokaal Bestand / Nick Size / Hub Grote / Hub Remote File Bestand op afstand Extended Uitgebouwde Server/User IP Server/Gebruiker IP File Name Local File Hub/File IP/Size TTH DCDialogTranslatorSettings Translator Settings Choose a provider Yahoo Babelfish Google Translate Settings for Yahoo Babelfish Choose the languages Settings for Google Translate Input language Output language OK OK DCDialogUserCommandEditor User Command Editor Command Type Separator Raw Chat Chat PM Context Hub Menu User Menu Search Menu Filelist Menu Parameters Name Naam Command Hub IP / DNS (empty = All, 'op' = where operator) To (empty for selected user) Send once per nick Text sent to hub OK OK DCDialogUserCommandLines User Command Lines For On Use for all nicks OK OK DCDialogUsersList User Gebruiker Description Beschrijving Users List Photo Slot Slot Ignore DCEditServer Please enter a hubname. Please enter a hubhost. DCFileBrowser file Items Files Bestanden Total Directories Root Directory <wrong length> <verkeerd lengte> Select destination Kies bestemming Select a filename Kies bestandsnaam Filebrowser Choose a file Choose a filename to save under Folder Map Download contents? Download the contents of " Failed to load filelist Unable to load OK OK Modern XML Filelists Old BZ2 Text Filelists Very old HE3 Text Filelists Old Valknut Filelists All files Cannot save file No data available to save. Error saving file Failed to save Cannot open list now Filelist browser is busy Error opening own filelist Failed to open your own filelist Error opening filelist File Bestand does not exist. is likely not a valid filelist Processing filelist... Cannot download Could not find the path for None Directory Modern XML Filelists (uncompressed) Search by TTH Go to user Cannot find user Cannot find hub Find Search string Empty list No more matches. DCFileTool File download Bestand download File allready download Bestand al gedownload File allready exist ! Bestand bestaat al! Resume Hervatten Overwrite Overschrijven Cancel Annuleren Start Multi Download Start Multi Download File allready in the queue and not mark as multi download ! Bestand al in de download rij, maar niet als multi download! File allready in the queue with a different size ! Bestand staat al in de download rij, maar met andere grote ! You can start a Multi Download ! Je kan een Multi Download starten ! The same user/file is allready in the queue ! Het zelfde bestand/gebruiker is al in de download rij ! A same file is allready in the queue ! Een zelfde bestand is al reeds in de download rij ! If you want to download all files in this mode ? Wilt u alle bestanden in deze modus downloaden ? Not connected to required hub! Niet verbonden met de nodige hub! Connect Verbind DCFileTransferInfo File Transfer Info Bestands Overdracht Informatie DCGuiApp Options Opties &Options &Opties Ctrl+O Ctrl+O Open option dialog Open opties venster Exit Exit Ctrl+Q Ctrl+Q Quits the application Stop het programma Exit Quits the application Exit Stop het programma Toolbar Werkbalk Tool&bar Werk&balk Enables/disables the toolbar Werkbalk Aan/Uit Toolbar Enables/disables the toolbar Werkbalk Werkbalk Aan/Uit Statusbar Statusbalk &Statusbar &Statusbalk Enables/disables the statusbar Statusbalk Aan/Uit Statusbar Enables/disables the statusbar Statusbalk Statusbalk Aan/Uit Cascade Cascade &Cascade &Cascade Cascades all windows Cascade alle vensters Cascade Cascades all windows Cascade Cascade alle vensters Tile Tile &Tile &Tile Tiles all windows Tile alle vensters Tile Tiles all windows Tile Tile alle vensters Ctrl+S Transfer List Overdracht Lijst &Transfer List &Overdracht Lijst Ctrl+T Ctrl+T Show Transfer List Toon Overdracht Lijst Hub Search Hub doorzoeken &Hub Search &Hub doorzoeken Ctrl+H Ctrl+H Show Hub Search Toom Hub doorzoeken About Over &About... &Over... About the application Over het programma About About the application Over Over het programma New Version Nieuwe Versie &New Version... &Nieuwe Versie... Check for new version Kijk voor nieuwe versie New Version Check for new version Nieuwe Versie Kijk voor nieuwe versie What's &This Wat is &dit &File &Bestand &View &View &Action &Actie &Window &Venster &Help &Help Ready. Klaar. (no error message from socket) (geen fout bericht van de socket) TCP listen failed, change to passive mode ! TCP ontvangen faalde, verander naar pasieve modus ! Quit... Afsluiten ... Do your really want to quit? Wilt u echt afsluiten ? Open options dialog... Open opties venster... Exiting application... Bezig met afsluiten... Toggle toolbar... Werkbalk Wisselen... Toggle statusbar... Statusbalk Wisselen... About... Over... New version... Nieuwe versie... Show/hide transfer list window ... Toon/Verberg overdrachtslijst venster ... Show/hide hub search window ... Toon/Verberg hub-zoeken venster... file operations Bestand operaties Can't get version info from server Kan de versie info van de server niet krijgen Current version is: Huidige versie is: Normal Normaal &Normal &Normaal Ctrl+N Ctrl+N Set away mode Zet afwezig modus Away Afwezig &Away &Afwezig Ctrl+A Ctrl+A Hub List Hublijst Show Hub List Toon Hublijst Show/hide hub list window ... Toon/verberg Hublijst vernster... H&ub List H&ublijst Ctrl+U Ctrl+U Ctrl+X Verwissel werkbalk Quick Options Quick options F12 Download mode: Ask Download mode: Single Download mode: Multi &Minimize Spy Spioneer Users Ctrl+F Away &Mode Do you really want to quit? Exiting application... aborted Show/hide spy window ... Show/hide users window ... Tile &Horizontally Reload Plugins &Reload Plugins &Dock Dock the application Hub &Search S&py Ctrl+P Dock/Undock application... Refresh share in progress. Filelist browser Open filelist browser Exit Quits the application. Toolbar Enables/disables the toolbar. Statusbar Enables/disables the statusbar. Cascade Cascades all windows. &Tile Vertically Tiles all windows vertically Tile Vertically Tiles all windows vertically. Tiles all windows horizontally. Tile Horizontally Tiles all windows horizontally. Minimize all windows. Minimize Minimize all windows. Close all chat windows. Close all disconnected hub windows. Close disconnected hubs Close all disconnected hub windows. Show Hub List. Show Transfer List. About the application. &Support... RX/TX Traffic. Available disc space. Refresh share finished. Refresh share already in progress. Warning license file not found ! Tabbar Enables/disables the tabbar Show Search Spy. Tab Bar Toggle tabbar... Connect to Valknut hub Support Connect to the Valknut hub. Filelist browser local Open local filelist browser &Manual... Online User Manual. Dock Application The system tray icon must be enabled to dock the application. Ratio: Overall: (Up: , Down: ) This session: Valknut Connected to hubs Using dclib Dock/Undock Remove tray icon Open options dialog Open options dialog Opens a dialog where settings can be changed. Open filelist browser Open an empty filelist browser that you can use to open filelists from disk. Open local filelist browser View the files in your own share. Refresh share Refresh share Update your share to match file changes on disk. Select default download mode Set default download mode to: Ask Download mode: Ask Prompt for single or multi source mode when starting a download. Set default download mode to: Single Download mode: Single Each file will be downloaded from a single user without using chunked downloading. Set default download mode to: Multi Download mode: Multi Each file will be downloaded in multiple chunks possibly from different users. Reload Plugins Scan for new and reload any add-on software. Tabbar Enables/disables the tabbar. The tabbar shows a tab for each hub window. Dock Dock the application. Only the system tray icon will be visible. Close disconnected hubs Hub List Shows the lists of public and bookmarks hubs. Spy The search spy shows incoming searches and search statistics. Show Users List. Users List of favorite users, showing if they are online. Set away mode to normal Away mode: normal Normal mode, away message will not be sent automatically. Set away mode to away. Away mode: normal You will be marked as away and your away message will be sent in response to a new private message. About About the application. Displays version, copyright and licensing information. Manual Online User Manual. Launches the configured web browser. Valknut System Tray Icon Enables/disables the system tray icon System Tray Icon Adds or removes an icon in the system tray area. Open Hub Search. Hub Search Opens a search window where you can search for files. Open hub search window ... Close all chat windows Close all chat windows Close all chat windows. Close all offline chat windows Close all offline chat windows. Close all offline chat windows Close all chat windows where the user is no longer on the hub. Close all filelist windows Close all filelist windows. Close all filelist windows Close all filelist browsers. Close all search windows Close all search windows. Close all search windows Close all search windows. Debug Settings... Settings for debugging Debug Settings Change settings useful for debugging. View mode Windows Vensters Tabs Use windows Use windows Use the classic multiple document interface, the valknut window will contain other windows. Use tabs Use tabs Use tabs for everything similar to recent versions of DC++ and LinuxDC++. Transfer List Shows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers. Using Qt® DCHubListManager Public Publiek Bookmarks Favorieten Add Bookmark Favoriet Toevoegen Error Fout Edit Bookmark Favoriet Wijzigen Remove bookmarks You are sure ? Remove Verwijderen Cancel Remove public hub Add hub filter A filter with that name already exists Edit hub filter Delete hub filter Filter not found Error removing hub " DCHubProfile Create Hub Profile Maak Hub profiel Please enter the profile name Gelieve een profiel naam te geven Save profile Do you want to save your changes? Save Bewaar Are you sure? Delete profile for DCHubSearch You must enter a search word. Je moet een zoek term ingeven. Connect to local udp port failed. ( Verbinding met lokale udp poort faalde ( No hubs found. geen hubs gevonden. Hub Search Error Hub Zoek Fout No connected hubs found. Geen verbonden hubs gevonden. Select download folder Kies download map Select file Kies bestand Select search Kies zoek wijze Please select an search Gelieve een Zoek wijze te kiezen Please select a connected hub. Gelieve een verbonden hub te kiezen. Select file for USER FILE Not connected to required hub! Niet verbonden met de nodige hub! Connect Verbind Cancel Choose a filename to save under Choose a file to open Start Stop Stop Filelist download Please add a search! Multi Search only work in active mode! Folder Map Unknown Onbekent None Directory File Bestand Search ended with %1 results %1 results were filtered Ready Other search... Auto search... Search... Auto search finished %1 - %2 Results %1 items Another search is already running! Search for "%1" on %2 all connected hubs %1 filtered public hubs all public hubs all bookmark hubs %1 - Searching Hub Search Another search is running. Stop other search? Folder download Add search Invalid TTH DCOptions You must enter a valid 'Fake Host' ! Je moet een geldige 'Valse Host' ingeven ! You must enter a valid interface ! Je moet een geldige interface ingeven ! You must enter a valid tcp listen port ! Je moet een geldige tcp ontvang poort ingeven ! You must enter a valid udp listen port ! Je moet een geldige udp ontvang poort ingeven ! You must enter a valid nick ! Je moet een geldige nick ingeven ! Interface IP : IP Interface : Can't get interface IP ! Kan de interface zijn IP niet krijgen ! Select download folder Kies download map Select share folder Kies map om te delen Select language file Kies taal bestand HubList URL Hublijst URL Please enter a url Gelieve een URL in te geven Share list not available Deel lijst niet beschikbaar Compressed list size: gecomprimeerde lijst grote : bytes bytes Total shared: Totaal gedeelt: Share List Info Deel lijst Info You change the client mode ! Please restart DCGUI ! U hebt hebt de client modus verandert ! Gelieve DCGUI te herstarten ! My Mijn Select sound file Kies geluids bestand Select sound player Kies geluid speler au au wav wav All Files Alle bestanden Host IP : Host IP : Can't get Host IP ! Kan de host zijn IP niet krijgen ! Select download finished folder Kies download map voor bestanden die klaar zijn You must set a Download Folder ! U moet een download map kiezen ! Download Finished Folder and Download Folder must be different ! Map voor bestanden die klaar zijn en download map moeten anders zijn ! You must enter a valid search nick ! U moet een geldige zoek nick ingeven ! You listen on a port < 1024 ! You can run dcgui only as root in active mode ! Je ontvangt op een poort < 1024 ! Je kan dcgui in actieve modus alleen als root draaien ! Security Other Andere Log Log Sound Geluid Files Bestanden General Algemeen GUI GUI User Gebruiker Chat Chat Transfer Overdracht Settings Instellingen Folder Map Connection Verbinding Mode Modus Identify Identificeer Interface List Please select an interface Select a browser Select data folder Select log file Select transfer cert Select transfer key Add new nick name filter Please enter a nick Chat Timestamp Chat Local Nick Chat Local Text Chat Remote Nick Chat Remote Text Chat Status Nick Chat Status Text Public Chat Timestamp Public Chat Local Nick Public Chat Local Text Public Chat Remote Nick Public Chat Remote Text Public Chat Status Nick Public Chat Status Text Public Private Chat Nick Public Private Chat Text Select a 64x64 Photo You must set a Download Folder! Download Finished Folder and Download Folder must be different! You must enter a valid 'Fake Host'! You must enter a valid interface! You must enter a valid nick! You must enter a valid search nick! Can't save Image! Can't load Image! Host IP: Can't get Host IP! Interface IP: Can't get interface IP! No interfaces found! Chat Say Public Chat ME Nick Hub Lists You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode! Compressed list size (HE3/BZ/XML): Edit url Auto Responses Filelist browser Icons Menus Commands Error getting IP Operator Nick Yes No Case sensitive Case insensitive Overwrite? Replace existing key/cert? Could not create folder for key Could not create Could not create folder for cert Make sure the openssl program is in your PATH. Error occurred while running openssl 1 Error occurred while running openssl 2 Select plugin folder Delete menu command? Delete " Get Internet IP Unexpected response from does not look valid Standard and encrypted port must be different. Uploads Downloads Shares These options are recommended: These options are not recommended: Settings Problems Setting remote encoding to %1 will disable most conversions. -trigger response Colors Client DCServerList Add Bookmark Favoriet Toevoegen Edit Bookmark Favoriet Wijzigen Select profle Kies profiel Please select an profile Gelieve een profiel te kiezen Public Publiek Bookmarks Favorieten DCShellCommandRunner Command produced no visible output. Process exited with status Process was killed or crashed. Process still running after 2 minutes, killing process... DCTransferView Wait Wacht Idle ijdel Run Bezig Transfer Overdracht Error Fout Download Download Upload Upload Unknown Onbekent Pause Pauze Hub offline Hub is offline User offline gebruiker is offline User busy gebruiker is bezig Send error Versturings fout Change Transfer-Rate Verander Overdracht snelheid Please enter a Transfer-Rate [B/s] (0=off) Gelieve een overdracht snelheid te geven [B/s] (0=off) Change File-Priority Please enter a priority Remove Verwijderen Try Connect Probeer verbinding User and Hub not found in the queue ! Nick: Nick: Hub: Remove Transfer You are sure ? Cancel My Mijn Share list not available Deel lijst niet beschikbaar None File Bestand %1 folders Remove folder from queue User/hub not found No directories queued for that user Directory not found Directory DCTranslator Chinese Simplified to English Chinese Traditional Dutch French German Greek Italian Japanese Korean Portuguese Russian Spanish Detect language Arabic Bulgarian Chinese Croatian Czech Danish Finnish Hindi Norwegian Polish Romanian Swedish OK OK Unknown translation provider The translation could not be found in the HTML received. This likely means that changed their system and this feature no longer works. DCUserCommandEditor User Command Editor Name and command must not be empty. Separator DCUsersList Permanent slot Ignore Grant permanent slot Remove permanent slot Ignore chat messages Show chat messages PublicHubsModel Name Naam Server Server Description Beschrijving Users Country Shared Gedeelt Minimum share Extra QObject Download Download Download To Download naar Download As Download Als Browse User Files Blader de gebruikers bestanden Private Chat Privé Chat Kick Kick Force Move Dwing Move Update User Vernieuw Gebruiker Connect Verbind Disconnect Verbreek verbinding Reload Userlist Herlaad gebruikerslijst Connect To Hub Verbind met de Hub Add Toevoegen Add Bookmark Favoriet Toevoegen Edit Wijzigen Edit Bookmark Favoriet Wijzigen Remove Verwijderen Close Transfer Transfer Sluiten Info Info Try Connect Probeer verbinding Remove from Queue Verwijderen van rij Remove Transfer from Queue and Disk Verwijder overdracht van rij en schijf Add Slot to User Voeg Slot toe aan gebruiker Add Permanent Slot to User Voeg permanent slot aan gebruiker toe Remove Slot from user Verwijder slot van gebruiker Save Queue Bewaar download rij Update Server Vernieuw Server Update all Server Vernieuw alle servers Change Transfer-Rate Verander Overdracht Snelheid Copy row to Clipboard Kopieer rij naar kladblok Copy column to Clipboard kopieer kollom naar kladblok File Info Bestands Informatie Connect To All Hubs Verbind met alle Hubs Search for clones Zoek naar clones Remove complete from Queue Verwijder volledig van download rij Download In Download in Load Laad Save Bewaar Edit Hub Profiles Wijzig Hub Profiel Set Hub Profile Zet Hub Profiel Add this extra source Edit transfer Edit file priority Translate Translator Disable group Group by File Group by Size Group by Nick Group by free Slots Group by Hub Group by Path Group by Host Copy Clear Wis Select all Close Hide Verberg Refresh Filelist Group Pause Queue Resume Queue Insert Smiley Add Friend Czech Danish Dutch Finnish German Hungarian Icelandic Norwegian Polish Romanian Spanish Swedish Copy Link Request secure chat Close secure chat Check client version Add Permanent Profile editor Group by Hash Reset Dock Undock Exit Exit Bosnian English French Greek Italian Latvian Russian Slovak Custom Upload Slot Repair File Repair BIN sectors Brazilian Search for clones by TTH Copy magnet link User: Gebruiker : User Commands Serbian (Cyrillic) Serbian (Latin) (choose an existing download to add to) File download Bestand download A same file is already in the queue! Start a multi-download Cancel File is already in the queue but not mark as a multi-download! File is already in the queue with a different size! File already downloaded! Enter byte range (m-n) Repair BIN Sectors Enter sector range (m[-n]) Invalid start position. Invalid end position. Invalid number of sectors. Invalid range entered. File already exists! Resume Hervatten Overwrite Overschrijven File already exists in your finished downloads folder It will be overwritten when the download finishes Download manager returned unknown value: Not connected to required hub! Niet verbonden met de nodige hub! Group by total Slots Download Folder Download map Zoom in Zoom out Group by IP SearchSpyModel Text Count Time UserListModel Nick Nick Comment Commentaar Tag Speed Snelheid Email Share Gedeelde IP Lock/PK Supports valknut-0.4.9/valknut/docs/0000775000076400007640000000000011144264653013770 5ustar ejsejsvalknut-0.4.9/valknut/docs/en/0000775000076400007640000000000011144264653014372 5ustar ejsejsvalknut-0.4.9/valknut/docs/en/valknut.10000664000076400007640000000777011030240377016142 0ustar ejsejs.\" This -*- nroff -*- file has been generated from .\" DocBook SGML with docbook-to-man on Debian GNU/Linux. ...\" ...\" transcript compatibility for postscript use. ...\" ...\" synopsis: .P! ...\" .de P! \\&. .fl \" force out current output buffer \\!%PB \\!/showpage{}def ...\" the following is from Ken Flowers -- it prevents dictionary overflows \\!/tempdict 200 dict def tempdict begin .fl \" prolog .sy cat \\$1\" bring in postscript file ...\" the following line matches the tempdict above \\!end % tempdict % \\!PE \\!. .sp \\$2u \" move below the image .. .de pF .ie \\*(f1 .ds f1 \\n(.f .el .ie \\*(f2 .ds f2 \\n(.f .el .ie \\*(f3 .ds f3 \\n(.f .el .ie \\*(f4 .ds f4 \\n(.f .el .tm ? font overflow .ft \\$1 .. .de fP .ie !\\*(f4 \{\ . ft \\*(f4 . ds f4\" ' br \} .el .ie !\\*(f3 \{\ . ft \\*(f3 . ds f3\" ' br \} .el .ie !\\*(f2 \{\ . ft \\*(f2 . ds f2\" ' br \} .el .ie !\\*(f1 \{\ . ft \\*(f1 . ds f1\" ' br \} .el .tm ? font underflow .. .ds f1\" .ds f2\" .ds f3\" .ds f4\" '\" t .ta 8n 16n 24n 32n 40n 48n 56n 64n 72n .TH "valknut" "1" .SH "NAME" valknut \(em Multi-platform direct connect client .SH "SYNOPSIS" .PP \fBvalknut [OPTIONS]\fP .SH "DESCRIPTION" .PP \fBValknut\fP is a program the uses the Direct Connect protocol. It is compatible with other DC clients, such as the original DC from Neomodus, DC++, and Shakespeer. .IP "-c " 10 Lets you specify the path where valknut should find its configuration files. Useful if you want to have multiple configurations, eg. for testing. .IP "--check-theme" 10 Displays how many themes/styles are available and exits. .IP "--disable-backtrace" 10 is useful when you have compiled a debug version of valknut. If you want to produce a core file (for a bug report) you have to put this option when launching valknut. .IP "--disable-splash" 10 Startup splash screen is not shown. .IP "--disable-theme" 10 Theme support is turned off. Could be useful if buggy themes are making valknut crash. .IP "--enable-tray" 10 The system tray icon is now controlled from the options dialog, but this option will enable it, ignoring the saved setting. .IP "--disable-tray" 10 The system tray icon is now controlled from the options dialog, but this option will disable it, ignoring the saved setting. Useful if your window manager doesn't support tray icons. .IP "--help" 10 Show the list of command line options and brief help on what they do. .IP "--socketlog " 10 Outputs a log of socket data to the file dcsocket.log. Valid values for param are none, send, recv or both. .IP "--trayicon" 10 Starts the application in tray icon mode, meaning the main window will not be visible. .IP "-v verboselevel 1 " .IP "-vv verboselevel 2 " With level 1 you can see every path on create sharelist and with level 2 you see every path and file. .PP .SS Environment Variables: .IP "http_proxy" If set, the HTTP proxy server to use for downloading public hub lists. Needs to be in the form http://[:port] .PP .SS Keyboard Shortcuts: .IP "Ctrl+A" 10 Set Away Mode -> Away .IP "Ctrl+F" 10 Open Users Window .IP "Ctrl+N" 10 Set Away Mode -> Normal .IP "Ctrl+O" 10 Open Options Window .IP "Ctrl+P" 10 Open Spy Window .IP "Ctrl+Q" 10 Exit Program .IP "Ctrl+S" 10 Open Hub Search Window .IP "Ctrl+T" 10 Open Transfer List Drawer .IP "Ctrl+U" 10 Open Hub List Window .PP This manual page was written for the \fBDebian\fP distribution because the original program did not have a manual page. .SH "SEE ALSO" .PP none .SH "AUTHOR" .PP This manual page was written by Pasi Savilaakso pasi.savilaakso@pp.inet.fi for the \fBDebian\fP system (but may be used by others) with help of Andrew Greig. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts and no Back-Cover Texts. ...\" created by instant / docbook-to-man, Wed 19 Mar 2003, 08:59 valknut-0.4.9/valknut/docs/en/readme.txt0000664000076400007640000000265211041454001016355 0ustar ejsejs## To create a readable version of the manual, install the xmlto program ## and run ## ## xmlto html-nochunks manual.xml ## ## The old method of running openjade directly is below. ################################################################################ ## ## To create a readable version of this manual, uncomment the lines below ## for your specific distribution, and run this file through the shell ## interpreter, e.g. ## ## /bin/sh ./readme.txt ## ## This will create manual.html. ## suse 9.0 #DSL="/usr/share/sgml/docbook/docbook-dsssl-stylesheets/html/docbook.dsl" #DCL="/usr/share/sgml/docbook/docbook-dsssl-stylesheets/dtds/decls/xml.dcl" ## debian sarge #DSL="/usr/share/sgml/docbook/stylesheet/dsssl/modular/html/docbook.dsl" #DCL="/usr/share/sgml/declaration/xml.dcl" ## Fedora 7 #DSL="/usr/share/sgml/docbook/dsssl-stylesheets/html/docbook.dsl" #DCL="/usr/share/sgml/docbook/dsssl-stylesheets/dtds/decls/xml.dcl" #/usr/bin/perl -pi -e 's,docbook/dtd/xml/4.2/docbookx.dtd,/usr/share/sgml/docbook/xml-dtd-4.2-1.0-30.1/docbookx.dtd,g;' manual.xml ## OS X with Fink (requires docbook-dsssl-nwalsh package) #DSL="/sw/share/sgml/dsssl/docbook-dsssl-nwalsh/html/docbook.dsl" #DCL="/sw/share/sgml/dsssl/docbook-dsssl-nwalsh/dtds/decls/xml.dcl" #/usr/bin/perl -pi -e 's,docbook/dtd/xml/4.2/docbookx.dtd,/sw/share/xml/dtd/docbookx/4.2.0/docbookx.dtd,g;' manual.xml openjade -t sgml -V nochunks -d $DSL $DCL manual.xml > manual.html valknut-0.4.9/valknut/docs/en/Makefile.in0000664000076400007640000002302011144264653016434 0ustar ejsejs# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = valknut/docs/en DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/valknut-qt4.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DCLIB_CFLAGS = @DCLIB_CFLAGS@ DCLIB_LIBS = @DCLIB_LIBS@ DEBUGCOMPILE = @DEBUGCOMPILE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAMEWORK_DIR = @FRAMEWORK_DIR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LRELEASE = @LRELEASE@ LTLIBOBJS = @LTLIBOBJS@ LUPDATE = @LUPDATE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_FLAGS = @PACKAGE_FLAGS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ QT3SUPPORT_CFLAGS = @QT3SUPPORT_CFLAGS@ QT3SUPPORT_LIBS = @QT3SUPPORT_LIBS@ QTCORE_CFLAGS = @QTCORE_CFLAGS@ QTCORE_LIBS = @QTCORE_LIBS@ QTGUI_CFLAGS = @QTGUI_CFLAGS@ QTGUI_LIBS = @QTGUI_LIBS@ QTNETWORK_CFLAGS = @QTNETWORK_CFLAGS@ QTNETWORK_LIBS = @QTNETWORK_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SERIAL = @SERIAL@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UIC = @UIC@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu valknut/docs/en/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu valknut/docs/en/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am install-data-local: $(mkinstalldirs) $(DESTDIR)$(mandir)/man1/ $(INSTALL_DATA) $(srcdir)/valknut.1 $(DESTDIR)$(mandir)/man1/ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: valknut-0.4.9/valknut/docs/en/Makefile.am0000664000076400007640000000017711035725452016431 0ustar ejsejsinstall-data-local: $(mkinstalldirs) $(DESTDIR)$(mandir)/man1/ $(INSTALL_DATA) $(srcdir)/valknut.1 $(DESTDIR)$(mandir)/man1/ valknut-0.4.9/valknut/docs/en/manual.xml0000664000076400007640000035461011041454001016362 0ustar ejsejs ]> &appname; Manual Andrew Greig Hanspeter Niederstrasser Edward Sheldrake $Id: manual.xml,v 1.17 2005/02/13 19:15:43 mayhem Exp $ 2003, 2004, 2005 Andrew Greig 2007 Andrew Greig, Hanspeter Niederstrasser 2008 Andrew Greig, Hanspeter Niederstrasser, Edward Sheldrake You can redistribute and/or modify this document under the terms of the GNU General Public Licence as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. For the purpose of applying the GPL to this document, I consider "source code" to refer to the Docbook XML markup. Introduction About this manual This manual began life when I was a new &appname; user, trying to fathom the multitudes of options the program had. As my experience and understanding grew, it dawned on me that I should attempt to write down what I had learned, so others could avoid having such a steep learning experience. I hoped it would also stop people repeatedly asking the same basic questions on the discussion board :) As I'm still not an expert on &appname; this document is nowhere near complete, and is very much a work-in-progress. Your comments, suggestions and corrections are welcomed, please write to me at agreig at flashmail dot com. It is intended that this manual will be kept up-to-date with the latest releases of &appname;. It is currently being updated for the 0.3.10 release. The XML source code of this document is under svn, which can be browsed at . About &appname; &appname; is a program the uses the Direct Connect protocol. It is compatible with other DC clients, such as the original DC from Neomodus, DC++ and derivatives. &appname; also interoperates with all common DC hub software. &appname; was written by Mathias Küster mathen at users dot berlios dot de and is licensed under the GNU GPL. It is written in C++ and uses the cross-platform Qt (TM) library for its GUI. &appname; compiles and runs on Linux, FreeBSD, Mac OS X and Windows. Originally, &appname; was called DCGUI, which unfortunately was very similar to the name of another Linux DC client. It was then renamed to dcgui-qt to avoid confusion. However, trademark problems relating to the use of 'Qt' in the name forced another name change, to the rather unique &appname;. Most occurences of the old names have been replaced, but in some places, such as where it would cause too much disruption, the name hasn't been changed. Official development of &appname; by Mathias Küster stopped after the release of version 0.3.7. At this time, there were several patches floating around in the forums. Edward Sheldrake organized them and put together the unofficial release for &appname; 0.3.8 under the project name wxdcgui. As of this writing, work is ongoing to release version 0.3.11 in the summer of 2007. The original &appname; web site at ceased to resolve on April 1, 2007. Finding out more Homepage: Board/Forum: Contributors The following people have helped make this manual possible, by providing information, text or corrections: Mathias Küster wrote the program up to and including version 0.3.7, and is the source of most facts about it. Edward Sheldrake took over the project from version 0.3.8 onward. Firechild wrote the original Bookmarks and Profiles sections. Jason Starr provided several corrections and explanations of program options. Stefan Huszics corrected my mis-capitalisation of kB, and provided bandwidth figures for some types of internet links. Hanspeter Niederstrasser rewrote the documentation for building on Mac OS X and updated the manual for releases after 0.3.7. Getting &appname; Precompiled Packages Currently, for &appname; 0.3.8 and higher, only the Mac OS X version is available as a precompiled binary package. It can be downloaded from . If you know of other binary releases for current &appname; please post about it at the SourceForge forum: . The official (Berlios hosted) &appname; 0.3.7 download page is now defunct. This was the best place to look for pre-packaged versions of &appname; for various operating systems. Debian packages for 0.3.7 are included in the official 'sarge' stable release, and can be installed by running apt-get install valknut. Gentoo users can do emerge &binaryname;. Contributed binary packages were announced on the now defunct distribution forum. Source Code Released versions of &appname; from 0.3.8 and higher are available at . There are two parts you need, dclib and &binaryname;. You must compile and install dclib first, otherwise &appname; will fail to compile. If you really want to be on the bleeding edge you can get the latest SVN version with the following commands: svn co https://wxdcgui.svn.sourceforge.net/svnroot/wxdcgui/trunk/dclib dclib-svn svn co https://wxdcgui.svn.sourceforge.net/svnroot/wxdcgui/trunk/valknut valknut-qt3-svn svn co https://wxdcgui.svn.sourceforge.net/svnroot/wxdcgui/branches/valknut-qt4 valknut-qt4-svn These commands checkout the latest versions of dclib, QT3 valknut and QT4 valknut. Compiling the source code Feel free to skip this chapter if you have a precompiled version of &appname;. However, if you are interested in helping with development or tracking down bugs, read on. Compiling on Linux Development libraries needed Qt - version 3.3 for the QT3 version or 4.3 or later for the QT4 version pthread libxml2 bzip2 zlib openssl - Optional for using valknut specific encrypted transfers and chat. Debian users may want to do apt-get install libqt3-mt-dev libxml2-dev libbz2-dev libssl-dev. Mandrake users would want to install libxml2-devel, libqt3 and libqt3-devel. Fedora users may use yum install libxml2-devel bzip2-devel zlib-devel openssl-devel and either for QT3 yum install qt3-devel or for QT4 yum install qt-devel. Compiling dclib autoreconf --verbose --install Only for code obtained via svn, not needed for released versions ./configure --enable-debug make make install (you will probably want to run this command as root) Compiling &appname; autoreconf --verbose --install For the QT4 version obtained via svn, not needed for released versions make -f admin/Makefile.common For the QT3 version obtained via svn, not needed for released versions ./configure --enable-debug PKG_CONFIG_PATH=/usr/local/lib/pkgconfig PKG_CONFIG_PATH must contain the folder where dclib.pc is installed make make install (you will probably want to run this command as root) If you get the following error: checking for Qt... configure: error: Qt (>= Qt 3.0) (headers and libraries) not found. Please check your installation! you need to check you have the necessary Qt (TM) libraries installed. If you are certain you do, this command may work instead: ./configure --with-qt-includes=/usr/include/qt3 --with-libdc=/usr/local If you don't have directories such as these you probably haven't installed the development libraries and headers. Once &appname; has been successfully compiled and installed you can then run the program by typing /usr/local/bin/&binaryname; Compiling on Mac OS X There are two ways of running &appname; on OS X: as a native application; or as an X11 application. The native version fits in more neatly with the standard Mac interface, wheras the X11 version requires you to run X as well. The X11 version may feel a bit strange to those with a Mac background, but will feel familiar to those with a UNIX background. The instructions below are for Mac OS X 10.3 Panther and above and are derived from forum posts by drealynn42, Nyzeta, nieder, and others. Users migrating from Linux will note that the build uses dynamic linking. Because Mac OS X binaries also link to system libraries, it is unwieldly to deal with static and dynamic libraries at the same time. Furthermore, the native &appname;.app bundles eliminate the need for static linking. For these reasons, these instructions use only dynamic linking when building &appname;. Prerequisites First, you have to decide whether you wish to use the X11 or the native Aqua version of &appname;. If building the X11 version, you have to install Apple's X11 and X11-SDK from the system install discs (X11User.pkg is on the System DVD, X11SDK.pkg is on the XCode DVD). Alternatively, you can also install an X11 system using Fink (see below). Do not install both Apple's X11 and Fink's x11/xorg at the same time as this will cause serious issues. Read this FAQ entry for ways to troubleshoot your X11 installation if you accidentally installed both. Install XCode Tools from the CD that came with the OS. If you don't have the disc, you can download XCode from Apple (free registration required). Make sure you choose to customize the install, and select all the SDK packages (EXCEPT X11-SDK IF YOU'RE NOT USING APPLE'S X11). Install Fink and FinkCommander (FinkCommander is optional but provides a graphical interface to Fink). The official Fink website is . Follow the installation instructions at . Run FinkCommander. Update the binary and rsync (preferred) or cvs descriptions, then find each of the packages listed below and install them. bzip2 bzip2-dev libpng3 libxml2 system-openssl qt3 if building the X11 version qt3-dev if building the X11 version xorg if building the X11 &appname; version and not using Apple's X11 release qt3mac if building the native Aqua &appname; version qt3mac-dev if building the native Aqua &appname; version Download the dclib and &appname; source code. Expand the files to somewhere convenient, for example your user directory. Open /Applications/Utilities/Terminal.app to compile dclib and &appname;. Setting up your system To compile &appname; you need to set up your environment correctly so that the compiler can find all your files. Enter the following lines at the Terminal.app prompt: export PKG_CONFIG_PATH=/tmp/dcguibuild/lib/pkgconfig:$PKG_CONFIG_PATH export CFLAGS="-I/sw/lib/system-openssl/include -I/sw/include $CFLAGS " export LDFLAGS="-L/sw/lib/system-openssl/lib -L/sw/lib $LDFLAGS" Compile dclib cd to the dclib source folder. For example, if you put the dclib-¤tversion;.tar.bz2 folder in your user directory, enter cd dclib-¤tversion;. If the folder is within another folder, you will have to enter cd that-folder/dclib-¤tversion;. Then enter the following commands when prompted: ./configure --prefix=/tmp/dcguibuild make make install This will finish installing dclib into a temporary directory. If you plan on using the X11 version of &appname;, it might be better to replace the value after --prefix to /usr/local or some other more permanent location. Compile &appname; Compile &appname; for X11 cd to the &appname; folder within the source folder. For example, enter cd &binaryname;-¤tversion;. Then enter the following commands: ./configure --with-ssl-dir=/sw/lib/system-openssl -- or if you get an error about qt3 -- ./configure --with-ssl-dir=/sw/lib/system-openssl --with-extra-libs=/sw/lib --with-extra-includes=/sw/include --with-qt-dir=/sw --with-qt-includes=/sw/include/qt make make install If you get checking for X... configure: error: Can't find X includes. Please check your installation and add the correct paths! and you are using Apple's X11, the X11 SDK was probably not installed correctly. Use your XCode Install CD to install this package then try again. The &appname; program is now installed in /usr/local/bin. Test tha the program compiled successfully by typing /usr/local/bin/&binaryname;. You may get some warnings, which you can ignore. The main thing is if the program starts up. Keep in mind that this program will only run inside X11, so X11 must be running first. If you are using Fink's X11 (xorg or xfree86), you can also install the applex11tools package to make your X11 installation look nicer. If you have previously used the native &appname; 0.2.19 version, you will find this version feels quite different since it is run in X11, but it basically operates the same. All of your files and settings will carry over, so don't worry about losing anything. Compile the native Aqua &appname; cd to the &appname; folder within the source folder. For example, enter cd &binaryname;-¤tversion;. Then enter the following: ./configure --with-ssl-dir=/sw/lib/system-openssl --enable-osx --enable-mac -- or if you get an error about qt3 -- ./configure --with-ssl-dir=/sw/lib/system-openssl --enable-osx --enable-mac --with-extra-libs=/sw/lib --with-extra-includes=/sw/include/ --with-qt-dir=/sw/lib/qt3mac --with-qt-includes=/sw/lib/qt3mac/include make make install-osx-standalone-app You will now have a directory called &appname;.app in the location where you are building. To copy it to your Desktop, enter the following command cp -Rp &appname;.app ~/Desktop. Once the &appname; application is copied there, you can move it to wherever you want on your computer (such as /Users/(YOURNAME)/Applications) or /Applications. To run the native &appname;, simply double click the &appname; icon. Troubleshooting Upon ./configure, if you get: checking for xml2-config... /usr/bin/xml2-config checking for libxml - version >= 2.0.0... *** libxml header files (version 2.5.4) do not match *** xml2-config (version 2.6.7) no configure: error: libxml2 must be installed. then there is a problem with the installed xml libraries. Make sure that libxml2 and libxml2-shlibs are both installed with FinkCommander. Alternatively, add --disable-xmltest to the ./configure commands above (both for dclib and &appname;) to bypass the check for libxml. Building a static application on Mac OS X While not necessary, it is possible to build &appname; as a (partial) static application on Mac OS X. During the compilation of dclib, add the following parameters to the ./configure step: --enable-static --disable-shared. When compiling &appname;, add the following code to the ./configure step: --enable-link-static. This will create a &binaryname; executable with dclib built in. However, all the other required libraries will still be dynamically linked to the executable and will still need to be present when running &appname;. Using a package manager to install &appname; &appname; is also available as a package within the Fink distribution. As of this writing there are no precompiled binaries for &appname; 0.3.8 and higher, but if you wish to install from source, Fink takes care of downloading, building and installing all the necessary dependencies with a single command. To install the X11 version of &appname; install the package &binaryname;-x11. To install the native Aqua version, install the package &binaryname;-aqua. Once everything is finished, the X11 version can be run from Terminal.app (or an xterm) with the command /sw/bin/&binaryname; (Notice that it is located in /sw and not /usr/local to avoid conflicts with anything you installed on your own). The native Aqua version installs an alias in /Applications/Fink that can be run by double-clicking it from within Finder. Compiling on OpenBSD The following commands have been used to successfully build &appname; on OpenBSD 3.6. Compiling dclib LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" ./configure gmake gmake install Compiling &appname; export PATH=$PATH:/usr/local/lib/qt3/bin-mt LDFLAGS="-L/usr/local/lib" CFLAGS="-I/usr/local/include" PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig" ./configure --with-qt-libraries=/usr/local/lib/qt3 --with-qt-includes=/usr/local/include/X11/qt3 gmake gmake install Making a Debug build If &appname; crashes unexpectedly, then you can help the developers work out why by running a debug build. The differences from a normal build are: Add --enable-debug to the ./configure line for dclib. Add --enable-debug --enable-link-static to the ./configure line for &appname;. Don't run "make install" in the &binaryname; directory, instead run the program from the compilation directory, e.g. cd &binaryname;; ./&binaryname; If it crashes you can send the developers the backtrace output. Submitting a bug report You need to supply the following information: Distribution Qt (TM) version &appname;/dclib version If it is a self compiled source or rpm (rpm distribution) Bug description Running &appname; Command-line options Usually you can start &appname; without any command-line options and it will work fine. These options are mainly for testing and debugging use. Show the list of command line options and brief help on what they do. Startup splash screen is not shown. Turns off theme support. Could be useful if buggy themes are making &appname; crash. Turns on the tray icon, ignoring the saved setting from the options dialog. Turns off the tray icon, ignoring the saved setting from the options dialog. Useful if your window manager doesn't support tray icons. Causes the program to display how many themes/styles are available then exit. This option is only useful with debug versions of &appname;. It will cause &appname; to write a core file if it crashes, which can be used as part of a bug report. Lets you specify the path where &appname; should find its configuration files. Useful if you want to have multiple configurations, e.g. for testing. Enables verbose output, which shows all paths added on sharelist creation. Enables extra verbose output, which shows all files and paths added on sharelist creation. Starts the application in tray icon mode, meaning the main window will not be visible. Outputs a log of socket data to the file dcsocket.log. Valid values for param are none, send, recv or both. Environment Variables http_proxy If set, the HTTP proxy server to use for downloading public hub lists. Needs to be in the form http://<server>[:port] A quick way to run &appname; with a proxy would be to type something like the following into a terminal: export http_proxy=http://192.168.0.1:8080 &binaryname; Help! It won't run! Mismatched Qt (TM) version A common problem asked about on the &appname; board is an error on startup that looks like this: Checking Qt (TM) version ... Compiled for '3.0.5' using '3.1.2' Checking Qt (TM) privates ... &appname;: relocation error: &appname;: undefined symbol: _ZN19QSharedDoubleBufferC1EbbP7QPixmap The second line gives a hint as to what is wrong: the version of Qt (TM) that &appname; was compiled for doesn't match the version that you have on your system. There are a few ways of correcting this: If you have installed a precompiled &appname; .rpm or .deb, you may need a different package. Try to find one that was compiled for the version of Qt (TM) you have. Alternatively you could install a different version of the Qt (TM) runtime libraries to match what &appname; is expecting. If you can't find a precompiled version that works on your system, try getting a source package (.src.rpm or deb-src) and compiling that. If you have compiled &appname; from source, make sure your development Qt (TM) libraries are the same version as your runtime libraries. It is possible to have multiple versions installed at once, so make sure the right one in being used. Segmentation fault If you get something like this: Checking Qt (TM) version ... Compiled for '3.0.5' using '3.0.5' Checking Qt (TM) privates ... private test ok ! PARITY : 64 64 Signal (11) received, stackdump follows; eax='00000000', ebx='00000000', ecx='00000000', edx='00000000', eip='00000000' --- retaddr=0x0, ebp=0x0 it could be a bug, or it could be your configuration files are corrupt. Try renaming your ~/.dc folder temporarily, then run &appname; again. If it works fine then it was a problem with the configuration files. However if it continues to crash, check the &appname; board for others having similar problems with that version. You may want to compile a debug build. This will provide more information on the crash, which can help the developers find the cause. Getting started &appname; can be a bit bewildering the first time you use it, so here is a quick-start guide to get you on your way. Set necessary options The very first time you run &appname; you will be presented with an options screen before the main program loads. You need to set a few things before continuing. On the Identify tab, fill in the following fields: Nick: A nickname to identify yourself. Search Nick: A different nickname. Speed: Your internet connection speed. On the Transfer tab: Download Folder: Where you want downloaded files to go. Share Folders: You need to make some of your files available for others. Click the "Add" button (the one that looks like a sheet of paper with a green plus symbol) and choose a folder to share. Click the blue icon with the swirly arrow to update your list of shared files, then click the "Save" button. Get a list of hubs and connect to one Ok, &appname; is now open fully, but it isn't doing much yet. Click the "Action" menu, and choose "Hub List". Click the swirly arrow icon to get a list of hubs. This may take a minute, so be patient. The Hub List window should now be full of strangely-named hubs. Choose one that looks interesting, and has lots of users, and double-click its name. A new window will open up. Within a short time you should start seeing messages about connecting. If nothing happens, or you get disconnected, close the window and try again with another hub. Find and download files If you've made it this far, you're nearly there. Its time to grab some files. Click the "Action" menu, and choose "Hub Search". In the space below the word "Search", type in a word or two, then click "Start". Click the "Results" tab, and see what turns up. It may take a minute or two before all the results are in. Double-click the name of one of the found files to tell &appname; you want to download it. You might get some messages about multi-download. Its ok to say Yes to these. Click the "Action" menu, and choose "Transfer List". This will show you the progress (if any) of your download. Options Identify Nick The name you will be identified by in DC hubs. Search Nick This is the name &appname; will use when it is searching multiple hubs, such as all Public hubs or Bookmarked hubs. The names of users in a hub must be unique, and since &appname; may search a hub you are already connected to, using a different nick here will avoid a name conflict. Email Your email address, if you want others to know what it is. Can be blank. Anti-spam If you have provided your email address in the option above, this setting modifies the way it is displayed. Instead of your address taking the form yourname@yourisp.com, it will appear as yourname at yourisp dot com. This is intended to make it difficult for spammers to 'harvest' your address with automated tools. Usually doesn't hurt to leave this enabled. Photo Allows you to specify an image file as a photo of yourself. Description Space for you to put a free-form comment. This is often used to tell others information about your share (e.g. lots of Anime) or your connection (e.g. 256kbit/s upstream). Make sure you replace the default description with something useful to your fellow users. Add Description Tag When enabled a 'tag' containing system information will be added to your description. It is a good idea to turn this on, as it lets others see some basic info on your configuration, saving them from have to ask you for it. Many hubs require that tags be displayed. The tag will be in the format <DCGUI V:version,M:mode,H:hubs,S:slots,L:limit> where: version is the version of &appname; you are running. mode is A if you are in active mode, or P if you are in passive mode. hubs is the number of hubs you are currently connected to. slots is the number of public slots you have set. limit is the per-transfer upload rate limit, in kB/s. This will only appear if an upload rate limit has been set. Away Prefix This string will be put in front of your description and tag when you are in away mode. Speed Lets you tell others what sort of internet connection you have, so they can estimate what sort of transfer speed they can get from you. Be honest, its easy to tell if someone is overstating their bandwidth, and is a kickable offense in many hubs. Away Message If you are in away mode and someone tries to send you a Private Message, &appname; will automatically reply with this text. You could put a friendly message telling people that you are away and when you will be back. Transfer Folder Download Folder Files that are in the process of being download are placed in this folder. Its a good idea to have a specific directory for this purpose, so you don't clutter up other locations. It is also recommended that you NOT share this directory, as people don't want your incomplete files. Move Finished Files to this Folder If you set this to a directory instead of leaving it blank, &appname; will move completely downloaded files from the Download folder to here. This is useful feature, as it saves you the task of identifying finished files yourself. You could share this directory if you wanted to quickly propogate you downloads to others. Share Folders This is the list of folders that you are sharing to the world. You can share as many folders as you like with the Add button, or unshare a folder by selecting it and pressing Remove. By default shared folders are listed using their actual name. If you want to make things neater you can change the alias of a folder, by selecting the folder and clicking the edit button. Once you have set up your shares, make sure you press the Rebuild button. This generates a list of all your shared files for others to browse. Clicking on the Browse button will show you what this file list looks like. The Info button tells you the size of your share, and how big the file list is. The file list is stored in three compressed formats, text compressed with HE3, text compressed with Bzip2 and in XML format compressed with Bzip2. All modern clients use the XML format list and only old versions will use the text formats. To be a good DC citizen, keep your share tidy and organised as much as you can. Arrange files into subfolders so they are easier for others to find. Give files meaningful names so they are easy to identify. For example, if you have an English-subtitled first episode of the Anime "Now and Then, Here and There", a good filename would be: Anime/Now and Then, Here and There (eng subbed)/Now and Then, Here and There - 01.avi. A bad filename would be: Stuff/nowandthen1.avi The more you share the better DC is for everyone, so share as much as you can. However, make sure what you are sharing are things people will actually want. Don't share system files or incomplete downloads. Don't share your home directory or any directory containing personal information. Certain hubs have their own specific rules about what are 'useless' files, so make sure you read the rules and follow them. Many hubs have automated scripts that will kick you if they find files that are against their rules. Check and recreate sharelist on startup It is good practice to rebuild your sharelist every time you change what files you are sharing. This option will help you out if you keep forgetting to refresh your share. It will do an automatic rebuild on startup if it detects there has been a change. Note that if you have been renaming files the rebuild might not be triggered, so you should do a manual rebuild, either by clicking the button above this option, or typing /refresh in the main chat window. Also note that if you have a big share you may find this causes slow startup times. Disable hash list A hash is a way of uniquely identifying a file. By default &appname; will calculate a hash value for all of your files and include the info in your share list, which will help others identify your files. However this can be a CPU and disk intensive process that could take several hours, so this option allows you to disable this process. However if you disable this process then the vast majority of users running recent DC++ versions will not be able to download from you, and you will very likely be kicked from the hub. Valknut will add "NOTTH" to your tag if you disable the hash list. Recreate every hour &appname; can automatically recreate your sharelist at a set interval. Select the number of hours to elapse between each refresh, or 0 to disable this feature. Settings Save queue in minutes The transfer queue is &appname;'s record of what files you are trying to download, and from where. This is constantly being updated while the program runs, but usually it is only written to disk when you exit the program. If you often run &appname; for long periods and are concerned about losing the state of your downloads, set this to a number greater than 0. This will indicate how often &appname; should save its transfer list to disk. Note you can also manually save the queue by choosing "Save Queue" after right-clicking in the Wait list. Max Upload Slots Upload slots, often referred to as just 'slots', are how you control the number of people connected to you at one time. The more slots you have, the more people can download files from you (you are 'uploading' the files to them). However, each connected person gets a corresponding fraction of your bandwidth, so the more slots you have open, the slower each individual's download will proceed. It is therefore important to balance the number of slots with the speed of your internet link. This option sets the number of 'public' slots, that are available for anyone to use to download from you. In addition, you can grant individual users that are in addition to the public slots. So, for example, you could have four public slots, and grant three of your friends a slot, meaning up to seven people could download from you at once. There are also several other 'special' slots that are controlled by &appname;. There are: Slots for admins to download your share list. Hub admins are the people who run the hubs your connect to. Most admins want to be able to check your share list to make sure you are following the rules of their hub. They can't download your other files this way, they can only get your share list. There are always three (3) of these slots. Slots for others to get your share list. This lets others find what you are sharing even if all your normal slots are full. This is a helpful feature for other users, unfortunately not all DC clients currently provide this. There are three (3) of these slots. Slots for files less that 16kb in size. Very small files don't take long to download, so slots are made available to make them easy to get. There are three (3) of these slots. For the sake of those downloading from you, try to set the number of slots so that transfers run at a decent rate. Keep in mind that if you grant lots of slots things will slow down for everyone. Dynamic Upload Rate The max upload rate setting (below) puts a cap on how fast each upload can go. However, not all users may be able to upload from you at that rate, meaning some of your bandwidth is not being used. This feature lets those who are fast downloaders use the 'spare' left over from slow downloaders, while still keeping the overall upload rate within the limits set. An example: if you had 5 slots, limited to 10 kB/s each, and dynamic upload enabled. If no-one else was downloading from you, a single user could transfer at 50 kB/s. Without dynamic upload, they would be limited to 10 kB/s, leaving the other 40 kB/s unused. Max upload rate This sets a limit (in kilobytes per second) on how fast each slot will be allowed to upload from you. You may want to do this to stop fast uploaders from taking more than a fair share of bandwidth, or to restrict your upstream rate generally. What you set this to will be shown in your description tag, and enabling it is frowned upon in many hubs. Max download rate This setting helps &appname; make efficient use of your download bandwidth, but it is not a hard limit. It works quite differently from the upload rate setting above. A value entered here will prevent &appname; from starting more downloads if your overall download rate is already at or above this speed. This will tend to keep fewer, faster downloads running, instead of dozens of downloads crawling along. Max uploads to user If this value is increased from its default of 1, users are permitted to download more than one file from you at a time. This also means they will be taking up extra slots. The default is recommended. Resend Timeout After &appname; fails to connect to someone (e.g. if all their slots were full) it will wait this many seconds before it tries to connect again. Best not set this too low, or &appname; will be constantly trying to reconnect, 'hammering' the remote users. This is unfriendly and wastes computer and network resources. Response Timeout If &appname; is trying to connect to a remote user, but doesn't get a response for this many seconds, it will give up and close the connection. This value needs to be high enough to allow slow or busy clients time to respond to you. User quitting hub It is good manners, and often a hub rule, that you stay in a hub while you are downloading from others in the hub. These settings are typically used to disconnent people who start a download from you and then quit the hub. Auto-search for new sources If you often leave &appname; running unattended, this setting will help you get your downloads finished. Under certain conditions, &appname; will automatically search for new download locations for files in your queue. If it finds any, they will be added to the transfer list. However, to prevent this putting excessive load on hubs, the following criteria must be met before an auto-search will happen: the configured time has passed since the last auto-search no downloads are currently running you have a file with priority 0 a hash exists for that file it is a multi download only new sources, i.e. with a different nick, will be added Connection Mode Active or Passive Mode Active mode should be used when other DC clients can connect directly to you from the internet. If you are not directly contactable, e.g. because of firewalls or NATs, you will need to use Passive mode instead. If you're not sure, start off in active mode, and if you can't seem to get any search results or file lists, switch to passive. Active mode is preferable because it lets you search and download from every user in a hub. Passive mode limits you to only Active users, and multi-hub search isn't possible. If you have control over your firewall, see the firewall section for information on how you can set up active mode. Active Mode Settings IP or Hostname If you are behind a NAT and have forwarded the appropriate ports, enable this setting and enter the public IP address of your router in the space provided. The test button will confirm the program receives packets sent to that IP. The 'Get Internet IP' button will work out your public IP address automatically. If you have a dynamically assigned public IP, you may want to register a hostname with a dynamic DNS provider, then put this hostname here instead. This way you won't have to update this setting each time your ISP gives you a different public IP. Network Interface If the computer running &appname; has a publicly accessible IP address, you'll want this option. Select the network interface that has the public IP by clicking on the 'Get Interface' button and choosing from the list. As an example, if you connect to the internet via a modem, and you also have a local ethernet network, then the interface you want would likely be ppp0. Use IP address from the hub The box should usually be checked so that you will use the IP address that the hub detects you have and sends to you. Most hubs will not allow you to use any other IP address as a security measure. TCP Listen Port This specifies the port number &appname; will listen on for TCP connections (e.g. for file transfers etc.). It defaults to 9176, and you can usually leave it at that. You need to make sure that incoming connections to this port can get through your firewall. UDP Listen Port Search results will be sent directly to you on this UDP port. It defaults to 9176. Make sure your firewall allows through UDP packets destined to this port. Listen on IP If you have multiple IP addresses on one interface, you may need to specify which IP you want &appname; to use here. Otherwise leave this blank. Passive Mode Settings Send warn message to remote user on active mode request. If you are in passive mode, and a remote user who is also in passive mode tries to download a file from you, the transfer won't work. Usually the attempt will fail silently, and many users don't realise why they can't get files from you. This option, if enabled, will send an automated private message to the remote user, telling them that you are in passive mode. Settings Reconnect Counter If a hub disconnects you, &appname; will try to automatically reconnect. This can be useful if a hub briefly goes down (e.g. its owner reboots their computer) as &appname; will reconnect and continue. This counter sets how many times it will try before it gives up. You can set it to 0 to turn it off, so that &appname; will only reconnect when told to manually. Don't set it too high, else if you are banned from a hub (it happens) &appname; will waste lots of time trying to reconnect over and over. Reconnect Timeout How long &appname; will wait between attempts to reconnect to a hub. Don't set it too low or you will use up all your connection attempts before giving transient problems a chance to get sorted out. Allow Force Move Many hubs will redirect you to another hub in some situations (e.g. if they are full). This is known as a force move. If you disable this option, a redirect will be treated as a failure to connect, so &appname; will try to connect to the hub again. Ignore private address space connections Certain IP address are only intended for use on private networks, but not on the internet. Enabling this option will prevent people with private addresses (e.g. the people on your LAN) from connecting to you. GUI General Language File If English isn't your preferred language, you can have the text in &appname; translated. Use this option to choose the appropriate language file to use. You will need to restart &appname; for this to take effect. Theme You can change the appearance of the buttons, dialogs and windows in &appname; all at once by choosing a different theme. Click the test button to see what a theme looks like. Units Numeric values are used heavily in &appname;, for things like file sizes and transfer rates. When this setting is on Auto, these numbers will be shown in whatever unit is most appropriate. If you prefer to have all values in the same unit, choose that instead. Application Font Lets you choose the font style and size that will be used. Uncheck the box to use your system's default font. Data Folder Where &appname; should find other files it needs, such as emoticon images and language translation files. Show Status Messages Status messages are short lines of information &appname; prints in chat windows, such as <&appname;> Connected when you connect to a hub, and in response to chat commands. Disabling this option will stop these messages from appearing. Query on Exit When activated, &appname; will ask you to confirm you really want to quit when you try to close the program. Helps to stop you exiting unintentionally and stuffing up all your transfers. Query on File Delete When enbaled, this option will make &appname; prompt you for confirmation whenever you delete a file from your queue. Transfer The transfer view can show up to eight pieces of information for each file being transferred. You will probably want display only some of this data, so you can see the state of your transfers without getting information overload. Chunk Percent &appname; doesn't try and download a whole file in one piece, instead it downloads 'chunks' of about 1MB at a time. Enabling this option will display a percentage that indicates how much of the current chunk is complete. On fast connections this value tends to change rapidly, as chunks are completed and new ones started. File Percent What percentage of the file has been downloaded. Chunk Size Displays the position, in bytes, of the start of the chunk, the current position in the chunk, and the end of the chunk. File Size Shows the number of bytes downloaded against the size of the whole file. Download Rate Single How fast this individual transfer is progressing. Remaining Time Single How long before this individual transfer will be completed at the current rate. Download Rate Multi If you are using multi-downloads, the above 'single' options won't show realistic figures for the whole file. This option displays the overall download rate of all running sources for a file. Remaining Time Multi Similarly, this shows the amount of time remaining to download the whole file at the combined multi-download rate. Chat Open Private Chat Window Use tab for every chat window Enable emoticons in chat When this option is enabled, certain combinations of characters will be replaced by emoticon images. For example :( will be replaced with a small picture of a sad face. Show send button After typing in a message you can send it by pressing enter, or if this option is enabled there will be a button you can click to send the message. Forward private to public chat When enabled, private chat text will also appear in main chat. No-one else can see it, it just saves you having to switch chat windows. It may make conversations hard to follow. Make sure you switch back to the private window before replying. Show joins and parts When this option is on, notification messages will appear in main chat when users enter or leave the hub. Useful on quiet hubs, however can result in a constant flood of messages on large/busy hubs. Ignore messages to offline users If you try and send a message to someone who has gone offline, and this option is enabled, &appname; will refuse to send the message and print a warning. Ignore messages from offline users Sometimes you receive messages from users who aren't in the user list, e.g. hub security scripts or bots. Turning on this option will stop these messages being displayed. Max paragraphs Hide popups of more than x lines Send message with The default key to send a chat message is the Enter key. You can start a new line in your chat without sending the message by pressing Ctrl+Enter. If you prefer different behaviour, this option will let you specify what key combination should be used to send a message. Browser When you click on a URL that is displayed in a chat window, &appname; will attempt to open it in a web browser. You can specify the browser to use here. If the program is in your path you can just give its name e.g. mozilla or you can browse for the full path e.g. /usr/bin/mozilla Color The text in the chat windows can be given different colours, based on the source of the message. You could make your messages stand out from other chat text, or use light coloured text so it is legible against a dark background. You can set the colour of a type of text by double-clicking on its name and choosing from the palette. Client Show client windows minimized User-List right alignment When selected, the user list will appear on the right hand side of the hub window, with the chat on the left. Otherwise the chat will be on the right, and the userlist on the left. Note that this only takes effect when you connect to a hub, the windows for hubs you are already connected to don't change. Auto Away Mode Will automatically put you into away mode if you are idle for more than the set number of seconds. Columns Lets you select which information is shown in the user list. Does not affect already connected hub windows. Sound You can choose to have sounds played when various events happen in &appname;. Sounds are disabled by default. Log Logfile &appname; can write a log of its activity, such as files successfully downloaded. To enable logging, select this option and specify a file that &appname; should log information to. Useful for debugging. Timestamp Private Chat If enabled, each message in private chat will have the time it was sent displayed beside it. Timestamp Hub Chat If enabled, each message in the main hub chat will have a timestamp displayed beside it. Chat Logging Various options to configure when and how &appname; logs chat conversations. Hub Lists Store local Whether &appname; should keep a local copy of the hub list. Reload every hour If this is set to a value greater that zero, then &appname; will automatically reload the hub list after that many hours have passed. This way your hublist will always be up-to-date. Only use this option when you really need to, as it will produce extra traffic on the servers providing the hub lists. Source URLs These URLs are where &appname; gets its list of public hubs from. You can add and remove sources of hub lists, or un-tick a list to prevent it being used. Security Flood Protection These options are to protect you from antisocial people who like to fill the chat screen with the same message over and over, otherwise known as flooding. Don't Display messages after X retry If the same message appears this many times, &appname; will automatically hide any more copies of it. This greatly reduces the impact of flooders. Kick the user for flooding. If you are an operator, you have the ability to kick people off the hub. This option will automatically kick users who are flooding the chat. Kick Message This is the reason that will be given if a person is kicked by &appname; for flooding the chat. Transfer Cert/Key These options are to do with SSL transfers [FIXME] Hub List You can open the hub list window by clicking the toolbar icon, or by choosing Ctrl+UActionHub List from the menu. The first toolbar lets you reload or update the list of hubs, and apply filters. The second lets you enter the address of a hub manually. If you know the address of a hub enter it into the box and click the connect button . Getting a list of public hubs Before you can do anything with DC you need to connect to at least one hub. This window will give you a list of public hubs for you to browse through. You can connect to a hub simply by double-clicking its name in the list. However, when you first run &appname; there are no hubs listed here. You need to click on the Reload Public Hublist button to get the list. The list is obtained from special locations that provide this service, see for information about the source urls. A progress bar will appear at the right of the second toolbar while the reload is happening. Public hubs are usually run by generous users on their personal computers, which tends to mean they come and go fairly frequently. If you find that hubs in your list no longer exist when you try to connect to them, its probably time to update your list. Clicking the Update Public Hublist button will do that. Using Filters At the of writing there are over 3000 public DC hubs available. To make it easier for you to find hubs that are of interest to you, you can filter the list to only show certain hubs. Creating a filter If you were a fan of Anime (Japanese animation) you might want to only see hubs that are anime-related. You would do this as follows: Click the Add Filter button Enter a name for the filter in the Filter field. Enter the word 'anime' in the Contains field. Tick the box next to Description. You should now have a window that looks something like this: Click the Save button. From the Filter drop-down list. choose your new filter 'anime' The hub list will now only show hubs that contain the word 'anime' in their description. The tab at the top of the window shows how many out of all the hubs are being displayed. In this case only 244 of 3247 public hubs matched the filter. You can browse through the list and double-click a hub to connect to it. Editing a filter Often, the best hubs are those that have the most people connected to them. We can refine our filter to only display hubs that have at least a minimum number of users. Click the edit filter button to display the settings of the filter. Set the value in the Min. User field to a decent number e.g. 200, then click Save. The hublist now displays only hubs with 200 or more users that have the word 'anime' in the description. You can also modify a filter so it looks for matching words in the hub name or the hub address. If you tick more than one option, then the words can appear in any of the selected fields. Deleting a filter If you no longer need a particular filter you can delete it. Choose the filter you want to delete from the list of filters so it is the active filter. Then click the Delete Filter button Viewing all public hubs If you would like to revert back to viewing all the available public hubs, choose the 'Default' filter from the list. Note that you can't edit or delete the Default filter. Bookmarks Bookmarks let you easily keep track of your favourite hubs. The public server list is not always reliable, so bookmarking hubs you find interesting is a good thing to do. To access your Bookmarks, open the Hub List window and click on the Bookmarks tab. Creating a Bookmark There are several ways to create a Bookmark: From the public hub list: Right-click the hub you want, and select "Add Bookmark". From a Hub Search: Right-click a search result, and select "Add Bookmark". From the bookmarked hubs list: Right-click anywhere on the Bookmarks list, and select "Add". With this method, you'll have to manually enter the hub name, host (server), and description. From within the hub: type /fav in the chat window. Editing a Bookmark You can change any Bookmark name, server, or description by right-clicking the Bookmark and selecting "Edit". Deleting a Bookmark You can delete a Bookmark by selecting it, right-clicking and selecting "Remove". You can also delete multiple bookmarks by selecting more than one and removing in the same manner. Connecting to a Bookmarked hub You can connect to a Bookmark hub in the same manner as connecting to a server in the Public list. Simply double-click it, or right-click and select "Connect". Updating Servers If you find you cannot connect to a Bookmarked hub for an extended period (hubs are run on people's home computers usually and may have some down times by default), right-click the Bookmark and select "Update Server". This is useful should the hub have changed their server name/location, as it will update your Bookmark to the new location. You can also update all Bookmarked servers at once with right-click "Update All Servers". Profiles You can specify certain options, such as your nickname and description, on a per-hub basis by using Profiles. Other possibilities include making certain hubs connect automatically when you start &appname;, and hubs requiring authentication be set up so you login automatically without having to enter your password each time. Profile are managed in the Bookmarks tab in the Hub List window. Creating a Profile In the Bookmarks window, right click on the hub you want to set a profile for and select "Edit". In the hub settings window, tick the "Profile" box then click the "Profile" button. If you are going to use a nickname different from your default one on this hub, enter it in the space labelled "Nick" If this profile is going to be used for a hub where a password is required, enter the password. Otherwise leave it blank. Fill in the other options as required if your default settings aren't sufficient for this hub. If you want the hub to open automatically when you start &appname;, mark the "Auto Connect" box. You can specify that &appname; should use SSL when connecting to this hub by selecting the "Secure Socket Layer" option. Click "OK" when finished. Managing Hub Profiles To check what profiles are set, right-click anywhere on the list of Bookmarks, and select "Profile editor". Select the hub from the drop-down list at the top, and the profile settings for that hub will be displayed for editing. Select "OK" when finished, and most settings will take effect immediately. You can also edit profile settings by following the instructions in "Creating a Profile" above. Transfer List Transfer Shows transfers that are in progress. Wait Lists the users you are waiting to get files from. Files Lists the files you are waiting to download. Slots Shows what download slots you have granted to other users. Log Shows detailed information on the connection and transfer process. Hub Search This is one of the most powerful parts of &appname; and you will spend a lot of time using it. To get the most out of the DC network you need to know how to search effectively. Mechanics of searching When you open the Hub Search window, type in a query and click 'Search', the following happens: Your search query is sent to the hubs you are connected to. Each hub passes the query onto each client connected to it. If a client has files that match the query, they send a response: If you are in active mode, the client sends the response directly to you. If you are in passive mode, the client sends the response to the hub, which then passes it onto you. &appname; sorts out the responses and displays them. If you are in passive mode you won't see search results from others in passive mode, as you won't be able to get their files anyway. You will find a lot more files if you are active! By default &appname; stops waiting for responses after two minutes. This is usually heaps of time for all the results to trickle in. You can stop it sooner by clicking on the 'Stop' button. Most clients have a maximum number of responses they will give to one query, commonly about 10. If you search for common words this prevents hundreds or thousands of matches coming back from each client. Each search puts a load on the hubs and every client connected to it. Searches happen regardless of slots. The 'Spy' function shows the amount of searches you are seeing - its a lot! Searching can be abused, often called search-spam. Some hubs kick clients doing lots of rapid searches. Searching wisely The words you search for have a huge impact on what results you will get. Similar files often have very different names, so your search string have to be generic enough to catch relevant files, while not including too many irrelevant ones. Choosing search strings Try not to use too many common words. Searching for 'anime mp3' on an anime hub will give you ridiculous numbers of files of all sorts. You usually want to be more specific. Be careful about file extension that have differnt forms, e.g. mpg vs mpeg. If you put 'mpg' in your search string you may miss files with the alternate extension. Don't put leading zeroes e.g. searching for episode 01 wont find files called episode 1. Limiting file sizes Often there are multiple versions of popular media files, for example an episode of show that has been encoded into an avi of different quality. If you prefer only high-quality avis, you could set the search filter of files at least 200MB, for example. Where to search Selecting which hubs will give you the best search results the fastest. Searching the public hubs will result in &appname; automatically entering and leaving each hub on your hublist, and is not recommended. Finding extra sources Managing search results sorting and grouping filtering browsing files of those that matched search searching for clones Hub Windows This is where you see the hub chat, and the list of users. Spy When you enable the spy function, any search requests you receive will be displayed in this window. This can give you an idea of what other people are searching for. If you are on several large hubs you may be surprised by the sheer volume of search requests &appname; has to handle. Users Also called Friends, if you mark a user as a friend they will appear here, along with an icon indicating if they are online. Menu Options File menu Options Opens the configuration window. Quick Options Choice of download mode: Ask, Single or Multi Multi-download is where &appname; downloads portions of a single file from multiple people at the same time. This feature can greatly speed up the rate your downloads are completed. All you have to do is enable this option, and find more than one source for files. The 'search for clones' option makes this easy. Note that files less than one megabyte in size are never downloaded this way. &appname; gets the first megabyte from each source and compares them to make sure the files are the same. If they are, a message 'hash ok' appears in the log window, and &appname; then reconnects and retrieves a chunk of the file that it doesn't have. Right-clicking on a file in the transfer window and selecting 'File Info' will show you which bits of the file have been received. Filelist browser Allows you to browse the downloaded filelists of others. Filelist browser local Displays your own shared files and directories. Reload Plugins Reloads any plugins &appname; is using. Exit Causes &appname; to close. View menu Tabbar The tab bar sits just below the menu, and lets you switch quickly between open hubs. This option toggles the display of the tab bar on and off. Toolbar Toggles display of the toolbar on and off. The toolbar provides shortcuts to the most-used parts of the program. Statusbar This option toggles the display of the status bar on and off. The status bar appears at the very bottom the main &appname; window. It lists summary information about your slots and transfers. From left to right the information listed is: SL: Slots: <number used>/<number total> <used admin slots>/<used user slots>/<used special slots>. See for more info. UL: Upload rate DL: Download rate RX: Bytes you have received with &appname; since its first run. TX: Bytes you have sent with &appname; since its first run. Available disk space How much space is available on the partition where downloaded files are being saved. L: or S: or H: Share list creation status (only displayed during share list updates). L: shows what percentage of the share list is complete, S: shows what percentage of the search index is complete, H: shows what percentage of the hash calculation is complete. Dock Toggles dock mode on and off. Turning on dock mode shrinks &appname; down into an icon in the system tray or notification area of your window manager. Clicking the icon is another way of shrinking/unshrinking the program. Action menu Away Mode Choice of Normal or Away Plugins What are plugins? A &appname; plugin is a small piece of code that adds some extra function to the program. This allows other developers to write programs that can access &appname;'s internal state, without them having to modify the &appname; source. Currently the only plugin is one which allows you to control &appname; over http. Getting and compiling plugins Plugins aren't included in the core &appname;/dclib distribution, you have to get them seperately. You can obtain the source for the http plugin from svn: svn co https://wxdcgui.svn.sourceforge.net/svnroot/wxdcgui/trunk/plugin dclib-http-plugin-svn As of July 2008, the http plugin requires the latest svn version of dclib, which requires you to run the latest svn version of valknut. Compilation is similar to the rest of &appname;: autoreconf --verbose --install ./configure make make install (as root) HTTP plugin The http plugin allows you to control &appname; via a web browser. This could be really useful if you don't always have physical access to the machine running the client, and a graphical remote control method like VNC is not suitable. Currently the http plugin allows you to see the current state of &appname;, display and cancel transfers and connect to hubs. There is no way at the moment to search or browse filelists, or add new downloads. By default, the http plugin listens on port 1480 and only accepts connections from localhost. Connecting to will present you with a login prompt. The default username is "dcgui" and the password is "admin". Once you are logged in you can change the password and security settings. The configuration of the plugin is stored in ~/.dc/plugin/http.xml Networking issues Why do my downloads slow to a crawl when I am uploading? This is a common problem in the P2P community, and is not unique to &appname;. It is due to the behaviour of the TCP protocol on heavily loaded links. When you are downloading a file, your computer continuously sends 'acknowledgements' or ACKs to the source computer, telling it 'I got those last few bits, send some more'. When you are also uploading flat-out, the acknowledgements take longer to send because they have to queue up behind the data you are uploading. The slower the ACKs are sent, the slower your peers will send you data, thus the slower your download rate. There are two ways of avoiding this problem. The first would be to set an upload rate limit in &appname; to just below your actual maximum upload speed. This will allow a bit of breathing space for those ACK packets to fit into. Unfortunately, most hub operators have an irrational fear of upload limiters, and will kick you from the hub if you use them. The second method works the same way, by artificially limiting your upload speed, and giving priority to ACK packets. However this time it is done outside of &appname;, either by your operating system or an external program. In some ways this is better solution, as it is transparent to &appname;, and can let you manage your bandwidth across other network applications as well. The Linux kernel comes with packet filtering and quality-of-service features. You can make it prioritise acknowledgement packets, letting them "jump the queue" so your downloads and uploads both run as fast as they can. See for full details, including the 'Wondershaper' script. An alternate script with a similar aim is at OpenBSD users have the powerful pf utility. See for a guide to ACK prioritisation. MacOS X users might find this article about throttled lets them do almost the same thing. Windows users may want to try the shareware program Netlimiter, from What port(s) does &appname; use? Unless you have an unusual situation, there is no need to change the port &appname; runs on away from the default 9172. Sure, DC++ and other clients use other ports, so what? It make no functional difference if you are on a different port, the programs tell each other what port they are on and it all works fine. In addition, you really shouldn't try to run &appname; on ports less than 1024, as this requires that you run the program as root, which is *never* a good idea. How do I configure my firewall so I can be in Active mode? There is no one answer to this, as there as so many different types of firewall in use. The basic aim is to get TCP and UDP traffic for port 9172 (by default) to reach the computer running &appname;. If the firewall is on the machine running &appname; then you just need to permit that traffic. If the firewall is a separate device, and is doing NAT, the traffic needs to be forwarded to the &appname; machine. Here are some suggested firewall rules for those with a Linux iptables-based firewall. There is NO GUARANTEE that these rules will work, or that they won't leave your systems wide open. Make sure you know what you are doing before playing with firewall rules, and test afterwards. Use these suggestions AT YOUR OWN RISK. The following assumptions are made: your default INPUT and FORWARD policy is DENY, your default OUTPUT policy is ACCEPT $IPTABLES is the iptables command $PUBLICIP is your public IP address $PRIVATEIP is the internal IP of your firewall $EXTIF is your external network device, e.g. ppp0, eth1 $INTIF is your the internal network device, e.g. eth0 $MYPC is the private IP address of the computer running &appname; behind a NAT Machine running &appname; has a public IP address, e.g. a dialup modem connection. $IPTABLES -A INPUT -i $EXTIF -d $PUBLICIP -p tcp --dport 9176 -j ACCEPT $IPTABLES -A INPUT -i $EXTIF -d $PUBLICIP -p udp --dport 9176 -j ACCEPT Machine running &appname; is behind a NATing Linux firewall. $IPTABLES -t nat -A PREROUTING -d $PUBLICIP -p tcp --dport 9176 -j DNAT --to $MYPC $IPTABLES -t nat -A PREROUTING -d $PUBLICIP -p udp --dport 9176 -j DNAT --to $MYPC $IPTABLES -A FORWARD -o $INTIF -d $MYPC -p tcp --dport 9176 -j ACCEPT $IPTABLES -A FORWARD -o $INTIF -d $MYPC -p udp --dport 9176 -j ACCEPT If you have other machines on your LAN wanting to connect to the NATed machine running &appname;, you need some trickery so the replies come back via the firewall. Add this line after the four above: $IPTABLES -t nat -A POSTROUTING -d $MYPC -s 192.168.1.0/24 -p tcp --dport 9176 -j SNAT --to $PRIVATEIP FAQs Why doesn't &appname; do <favourite feature>, like DC++ does? &appname; isn't a clone, imitation or port of DC++ or other DC clients. It is an independent program that has been written from scratch. Certainly there are similarities between these programs, because they are all trying to do the same job, and good features tend to be implemented in all clients eventually. However that doesn't mean a feature will be added just because some other program does it. Feature requests and suggestions are welcomed, but keep in mind that the developers are trying to make the best DC client they can, not just an imitation of another program. &appname; prints a whole lot of stuff to the console while its running. What does it all mean? [FIXME - I don't feel qualified to answer this] SSL Transfer mode Where can I find out more about Direct Connect? Direct Connect is a program originally written by NeoModus . Many other programs have been written that use the same protocol. See for some details of the DC protocol. Keyboard Shortcuts Ctrl+OOptions Ctrl+QExit Ctrl+UHub List Ctrl+TTransfer List Ctrl+SHub Search Ctrl+PSpy Ctrl+FUsers Ctrl+NAway ModeNormal Ctrl+AAway ModeAway Chat commands These commands can be typed into any chat window. &appname; intercepts the command and acts on it, the command itself is not sent to the hub. /dchelp prints a list of the chat commands that are recognised by &appname;. /clear clears all text from the chat window. Works in public and private chat. /mode shows the mode you are currently in (active or passive) /refresh refreshes your share list. It is good to do this every time you change your share. /rebuild rebuilds your share list. This removes entries from the hash database for files which are no longer in your share, reducing it's size. /ts Toggles on or off the display of timestamps next to chat messages. /dcgui or /adv Sends an advertisement for &appname; to the hub. Don't use too heavily :) /join <address> Disconnects from this hub and connect you to the hub address specified instead. /msg <nick> <message> Sends the private message to the person specified /away <message> Lets you specify a message that someone will see if they send you a private message while you are in away-mode. If the message is blank, then the auto-response is disabled. /bye <message> Disconnect from the hub. If you wish you can provide a signoff message. /uptime Shows you how long &appname; has been running. /ls <nick> Downloads the share list of the user specified. /grant <nick> Grant the user a slot, which is valid for a single download. /grantp <nick> Grant the user a permanent slot, which is valid indefinitely. /friend <nick> Add the user to your friends list. /fav Creates a bookmark for the hub. /info <nick> Shows information about a user. /now Displays the current local time in the chat. Useful for letting others know what time it is where you are. /raw Send raw message. /ignore <nick> All public and private chat messages from the user will not be shown. /unignore <nick> Removes the user from the ignore nick, so that messages from them will be visible again. /sh command arguments... Executes the given command in your operating system and sends it's output to the hub. For example "/sh uptime" will send you system's uptime (/uptime sends the uptime of &appname;). Configuration files The first time it runs &appname; creates a directory called .dc in your home directory. You won't be able to see it with a normal ls but it is there. In that directory will appear the files listed below, for those of you who are curious. Most of the files are in XML format, so are quite informative to read. Like all good *nix programs, if you remove the .dc directory &appname; starts afresh like it had never been run. Not all of these files will always exist, as some are only created when you use certain features. For example, if you haven't created any profiles, you won't have a dcprof.cfg. You may see startup messages such as warning: failed to load external entity "/home/username/.dc/dcprof.cfg". These are just notices, it doesn't indicate a problem. index.lst This is a list of files in your share with directory structure information. dcbookhub.cfg The hubs you have bookmarked are stored here. dcgui.cfg Configuration settings to do with the graphical interface and how it is displayed. Set from the GUI and Sound tabs under Options. dchub.cfg The list of all the public hubs &appname; knows of. dchubfilter.cfg The hub-list filters you have set up. dclib.cfg All the basic, non-gui related options. Set from the Options menu of the program. dcprof.cfg Your hub profiles, e.g. passwords for registration-required hubs. Yes the passwords are stored in plain text. If you are security conscious you should us unimportant passwords or don't save them in your profile. dctra.cfg Your transfer queue, including file information (e.g. sizes, hashes, chunks), download sources and hubs. database.bin, filebase.bin, pathbase.bin These three files make up a binary database of your fileshare. This is used internally by &appname; as it is faster and more memory efficient than text files. searchbase.bin, searchfileindex.bin, searchindex.bin These files are a binary database of keywords from your shared files. &appname; uses this to quickly respond to file searches with minimum overhead. hashbase.bin, hashfilebase.bin, hashpathbase.bin, hashindex.bin, hashleaves.bin These files contain information including the TTH root and leaf data for all files that have ever been shared by &appname;. The data is saved so that if you temporarily unshare a file, you can share it again without hashing it again. All data about no longer shared files may be removed by typing /rebuild into chat. Connection speeds and transfer rates DC is all about sharing files, and the most important thing to many is how fast they can do this. The main factor influencing this is what sort of internet connection you have. In this document (and in the DC community) upload and download rates are often mentioned. However if you are new to this you might not know what rate you have. The speed of a data link is usually given in kilobits per second, abbreviated as kb/s or kbps. A '56k' modem is called that because its maximum downstream rate is 56 kilobits per second. A 'half meg' DSL connection would have a downstream speed of half a megabit per second, or 500 kilobits per second. It is helpful to others if you know, or can find out, what type and speed of connection you have. Many internet links are asymmetric, that is they have two different speeds, one for transfers from the internet to you (downstream) and one for transfers from you to the internet (upstream). The upstream rate is usually less than the downstream, because that is the most efficient arrangement for tasks like web surfing or checking email. Unfortunately its the wrong way round for file sharing applications, like DC. When it comes to transferring files, people are more interested in the speed they will see on their screen while they are downloading. This is usually given in kilobytes per second, or kB/s. Note the capitalisation of the letter B, this is important as it means Bytes insted of bits. To work this out for your link, divide your link speed by eight. Thus a 768kb/s link will let you download at 96kB/s, and a 33.6kb/s analogue modem will have a rate slightly over 4kB/s. Note that when someone asks for your rate, they generally are interested in your upstream rate, which is the one that affects their downloads. kilo (k) = 1000 (one thousand) times, Mega (M) = 1000000 (one million) times, Giga (G) = 1000000000 (one billion) times. [FIXME - correct me if I'm wrong, but in this context 'kilo'=10^3, not 2^10] Examples of common connection types and speeds Connection type Downstream speed Upstream speed 56k modem 56kbps (7kB/s) 33kbps (4kB/s) 64k ISDN 64kbps (8kB/s) 64kbps (8kB/s) 128k ISDN 128kbps (16kB/s) 128kbps (16kB/s) 256/64 ADSL (entry-level in Australia) 256kbps (32kB/s) 64kbps (8kB/s) 512/128 ADSL 512kbps (64kB/s) 128kbps (16kB/s) 512/256 ADSL (entry-level in UK) 512kbps (64kB/s) 256kbps (32kB/s) 768/256 ADSL 768kbps (96kB/s) 256kbps (32kB/s) 1024/256 ADSL 1024kbps (128kB/s) 256kbps (32kB/s) Cable Satellite [FIXME - include comment regarding latency] Chello 2Mbit Leased Line 2Mbps (250kB/s) 2Mbps (250kB/s) T1 1.536 Mbps (192kB/s) T3 28 times T1 speed i.e. 43.008 Mbps (5.376MB/s) 10Mbit Ethernet 10Mbps (1.25MB/s) 10Mbps (1.25MB/s) 100Mbit Ethernet 100Mbps (12.5MB/s) 100Mbps (12.5MB/s) Gigabit Ethernet 1000Mbps (125MB/s) 1000Mbps (125MB/s) OC-1 51.840 Mbps (6.48MB/s) OC-3/12/48/192 3/12/48/192 times OC-1
Glossary ACK - Acknowledgement NAT - Network Address Translation DSL - Digital Subscriber Line Required footer Hosted by sourceforge Insert sourceforge logo link here from valknut.html.
valknut-0.4.9/valknut/docs/en/fdl.xml0000664000076400007640000005404210523776621015671 0ustar ejsejs GNU Free Documentation License Version 1.2, November 2002
0. PREAMBLE The purpose of this License is to make a manual, textbook, or other functional and useful document "free" in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference.
1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or XML using a publicly available DTD, and standard-conforming simple HTML, PostScript or PDF designed for human modification. Examples of transparent image formats include PNG, XCF and JPG. Opaque formats include proprietary formats that can be read and edited only by proprietary word processors, SGML or XML for which the DTD and/or processing tools are not generally available, and the machine-generated HTML, PostScript or PDF produced by some word processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent appearance of the work's title, preceding the beginning of the body of the text. A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title" of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this definition. The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License.
2. VERBATIM COPYING You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies.
3. COPYING IN QUANTITY If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover must present the full title with all words of the title equally prominent and visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using public has access to download using public-standard network protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document.
4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. State on the Title page the name of the publisher of the Modified Version, as the publisher. Preserve all the copyright notices of the Document. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's license notice. Include an unaltered copy of this License. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions it was based on. These may be placed in the "History" section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section. Preserve any Warranty Disclaimers. If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These titles must be distinct from any other section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various parties--for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version.
5. COMBINING DOCUMENTS You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. In the combination, you must combine any sections Entitled "History" in the various original documents, forming one section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled "Dedications". You must delete all sections Entitled "Endorsements".
6. COLLECTIONS OF DOCUMENTS You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document.
7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate.
8. TRANSLATION Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections. You may include a translation of this License, and all the license notices in the Document, and any Warranty Disclaimers, provided that you also include the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title.
9. TERMINATION You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License. Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.
10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See http://www.gnu.org/copyleft/. Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation.
ADDENDUM: How to use this License for your documents To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, replace the "with...Texts." line with this:
with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software.
valknut-0.4.9/valknut/docs/Makefile.in0000664000076400007640000003557011144264653016047 0ustar ejsejs# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = valknut/docs DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/valknut-qt4.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DCLIB_CFLAGS = @DCLIB_CFLAGS@ DCLIB_LIBS = @DCLIB_LIBS@ DEBUGCOMPILE = @DEBUGCOMPILE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAMEWORK_DIR = @FRAMEWORK_DIR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LRELEASE = @LRELEASE@ LTLIBOBJS = @LTLIBOBJS@ LUPDATE = @LUPDATE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_FLAGS = @PACKAGE_FLAGS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ QT3SUPPORT_CFLAGS = @QT3SUPPORT_CFLAGS@ QT3SUPPORT_LIBS = @QT3SUPPORT_LIBS@ QTCORE_CFLAGS = @QTCORE_CFLAGS@ QTCORE_LIBS = @QTCORE_LIBS@ QTGUI_CFLAGS = @QTGUI_CFLAGS@ QTGUI_LIBS = @QTGUI_LIBS@ QTNETWORK_CFLAGS = @QTNETWORK_CFLAGS@ QTNETWORK_LIBS = @QTNETWORK_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SERIAL = @SERIAL@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UIC = @UIC@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = en all: all-recursive .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu valknut/docs/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu valknut/docs/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: check-recursive all-am: Makefile installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f Makefile distclean-am: clean-am distclean-generic distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-generic clean-libtool \ ctags ctags-recursive distclean distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: valknut-0.4.9/valknut/docs/Makefile.am0000664000076400007640000000001611035725452016017 0ustar ejsejsSUBDIRS = en valknut-0.4.9/valknut/dcspy.cpp0000664000076400007640000001475711127122370014672 0ustar ejsejs/*************************************************************************** dcspy.cpp - description ------------------- begin : Fre Nov 8 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcspy.h" #include #include #include #include #include #include #include #include #include #include "dcconfig.h" #include "dciconloader.h" #include "dcmenuhandler.h" #include "searchspymodel.h" #include #include #include "dcguiutils.h" /** */ DCSpy * g_pSpy = 0; /** */ DCSpy::DCSpy( QWidget * parent ) : QWidget( parent ) { setupUi(this); // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiSPY) ); /* Sort A-Z by default not Z-A, no idea why QT default seems strange */ TreeView_SPY->sortByColumn( 0, Qt::AscendingOrder ); model = new SearchSpyModel( this ); TreeView_SPY->setModel( model ); if ( parent && qobject_cast(parent) ) { m_pContainerWindow = new QMdiSubWindow(); m_pContainerWindow->setWidget(this); } else { m_pContainerWindow = 0; } InitDocument(); g_pSpy = this; } /** */ DCSpy::~DCSpy() { g_pSpy = NULL; /* model(s) are deleted automatically */ m_Timer.stop(); if ( m_pContainerWindow ) { m_pContainerWindow->setWidget(0); // otherwise the QMdiSubWindow will delete this again delete m_pContainerWindow; m_pContainerWindow = 0; } } /** */ void DCSpy::InitDocument() { StringMap * map; // restore settings if ( g_pConfig->GetMap("SPYVIEW",map) ) { if ( ((*map)["WIDTH"].toInt() > 0) && ((*map)["HEIGHT"].toInt() > 0) ) { if ( m_pContainerWindow != 0 ) { m_pContainerWindow->setGeometry( (*map)["X"].toInt(), (*map)["Y"].toInt(), (*map)["WIDTH"].toInt(), (*map)["HEIGHT"].toInt() ); } } if ( (*map)["CHECKED"] == "1" ) { CheckBox_ENABLESPY->setChecked(true); } if ( (*map)["HIDETTH"] == "1" ) { CheckBox_HIDETTH->setChecked(true); } if ( map->contains("SORTCOLUMN") && map->contains("SORTORDER") ) { TreeView_SPY->sortByColumn( map->value("SORTCOLUMN").toInt(), DCGuiUtils::SortOrderFromName( map->value("SORTORDER") ) ); } } connect(PushButton_CLEAR, SIGNAL(clicked()), model, SLOT(clear()) ); connect( &m_Timer, SIGNAL(timeout()), this, SLOT(timerDone()) ); connect(TreeView_SPY, SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuSpy( const QPoint & )) ); TreeView_SPY->setAlternatingRowColors( g_pConfig->GetAlternatingRowColors() ); connect( g_pConfig, SIGNAL( alternatingRowColorsChanged( bool ) ), this, SLOT( slotAltRowColors( bool ) ) ); m_Timer.setSingleShot( true ); m_Timer.start( 1000 ); } /** */ void DCSpy::DeInitDocument() { StringMap * map; // save search view settings g_pConfig->GetMap("SPYVIEW",map); if ( m_pContainerWindow ) { (*map)["X"] = QString().setNum(m_pContainerWindow->x()); (*map)["Y"] = QString().setNum(m_pContainerWindow->y()); (*map)["WIDTH"] = QString().setNum(m_pContainerWindow->width()); (*map)["HEIGHT"] = QString().setNum(m_pContainerWindow->height()); (*map)["VISIBLE"] = QString().setNum(m_pContainerWindow->isVisible()); (*map)["MAXIMIZED"] = QString().setNum(m_pContainerWindow->isMaximized()); (*map)["MINIMIZED"] = QString().setNum(m_pContainerWindow->isMinimized()); } (*map)["CHECKED"] = QString().setNum(CheckBox_ENABLESPY->isChecked()); (*map)["HIDETTH"] = QString().setNum(CheckBox_HIDETTH->isChecked()); (*map)["SORTCOLUMN"] = QString::number( model->getSortColumn() ); (*map)["SORTORDER"] = DCGuiUtils::SortOrderName( model->getSortOrder() ); } /** */ void DCSpy::timerDone() { if ( CQueryManager::Instance() ) { // update search stat TextLabel_SEARCHCOUNTACTIVE->setText( QString().setNum( CQueryManager::Instance()->GetStat(essCOUNTACTIVE)) ); TextLabel_SEARCHCOUNTPASSIVE->setText( QString().setNum( CQueryManager::Instance()->GetStat(essCOUNTPASSIVE)) ); TextLabel_SEARCHCOUNTREJECT->setText( QString().setNum( CQueryManager::Instance()->GetStat(essCOUNTREJECT)) ); TextLabel_SEARCHCOUNTERROR->setText( QString().setNum( CQueryManager::Instance()->GetStat(essCOUNTERROR)) ); TextLabel_RESULTCOUNT->setText( QString().setNum( CQueryManager::Instance()->GetStat(essRESULTCOUNT)) ); TextLabel_RESULTCOUNTERROR->setText( QString().setNum( CQueryManager::Instance()->GetStat(essRESULTCOUNTERROR)) ); } m_Timer.setSingleShot( true ); m_Timer.start( 1000 ); } /** search */ void DCSpy::DC_Search( CMessageSearchFile * MessageSearch ) { if ( CheckBox_ENABLESPY->isChecked() ) { QString s = QString::fromAscii(MessageSearch->m_sString.Data()); if ( MessageSearch->m_eFileType == eftHASH ) { if ( CheckBox_HIDETTH->isChecked() ) { return; } s.prepend("TTH:"); } else { s = s.toLower(); } model->search( s ); } } /** */ void DCSpy::slotContextMenuSpy( const QPoint & /* point */ ) { QModelIndexList list = TreeView_SPY->selectionModel()->selectedIndexes(); if ( list.isEmpty() ) { return; } QVariant data = TreeView_SPY->model()->data( list.first() ); QMenu * m = new QMenu(this); QAction * copy = DCMenuHandler::addAction( m, emiCOPY ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == copy ) { QApplication::clipboard()->setText(data.toString()); } } /** */ void DCSpy::closeEvent( QCloseEvent * e ) { QWidget::closeEvent( e ); if ( m_pContainerWindow && m_pContainerWindow->parent() ) { /* Using QMdiArea::removeSubWindow() breaks tabs mode but this works */ m_pContainerWindow->setParent(0); } } /** */ void DCSpy::slotAltRowColors( bool enable ) { TreeView_SPY->setAlternatingRowColors( enable ); } valknut-0.4.9/valknut/dcfilebrowser.cpp0000664000076400007640000013100111136705745016375 0ustar ejsejs/*************************************************************************** dcfilebrowser.cpp - description ------------------- begin : Fre Nov 29 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcfilebrowser.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dcmenuhandler.h" #include "dcconfig.h" #include "dciconloader.h" #include "dcfilebrowseritems.h" #include "dcfilelistdecompressor.h" #include "dcevent.h" // for user menu commands #include "dcclient.h" #include "dcconnectionmanager.h" // for searching by TTH #include "dchubsearch.h" #include "dcfiletool.h" #include #include #include #include // for file type icons #include #include "dcguiutils.h" /** */ DCFileBrowser::DCFileBrowser( QWidget * parent, bool allowopen ) : QWidget( parent ) { setupUi(this); m_bAllowOpen = allowopen; m_bAllowDownload = true; // set caption setWindowTitle(tr("Filebrowser")); setWindowIcon( g_pIconLoader->GetPixmap(eiVIEW_SIDETREE) ); // set width mode ListView_DIRECTORY->setColumnWidthMode( 0, Q3ListView::Maximum ); ListView_FILES->setColumnWidthMode( 0, Q3ListView::Maximum ); ListView_FILES->setColumnWidthMode( 1, Q3ListView::Maximum ); ListView_FILES->setColumnWidthMode( 2, Q3ListView::Maximum ); ListView_FILES->setColumnWidthMode( 3, Q3ListView::Maximum ); ListView_FILES->setColumnWidthMode( 4, Q3ListView::Maximum ); // set right alignment on size columns ListView_DIRECTORY->setColumnAlignment( 1, Qt::AlignRight ); ListView_FILES->setColumnAlignment( 1, Qt::AlignRight ); ListView_FILES->setColumnAlignment( 2, Qt::AlignRight ); // hide the column header - only if not using size column if ( g_pConfig->GetFolderSizesInLeftPane() == false ) { ListView_DIRECTORY->header()->hide(); } m_nShareSize = 0; m_nFileCount = 0; m_pDecomp = 0; m_pFoundDir = 0; m_nFoundFile = 0; ToolButton_OPEN->setIcon( style()->standardIcon(QStyle::SP_DialogOpenButton,0,ToolButton_OPEN) ); ToolButton_SAVE->setIcon( style()->standardIcon(QStyle::SP_DialogSaveButton,0,ToolButton_SAVE) ); ToolButton_GOTO_USER->setIcon( g_pIconLoader->GetPixmap(eiUSERS) ); ToolButton_FIND->setIcon( g_pIconLoader->GetPixmap(eiFILEFIND) ); ToolButton_NEXT->setIcon( g_pIconLoader->GetPixmap(eiNEXT) ); connect( ListView_DIRECTORY, SIGNAL(selectionChanged()), this, SLOT(slotCurrentChangedDirectory()) ); connect( ListView_DIRECTORY, SIGNAL(expanded(Q3ListViewItem*)), this, SLOT(slotExpandedDirectory(Q3ListViewItem*)) ); connect( ListView_DIRECTORY, SIGNAL(collapsed(Q3ListViewItem*)), this, SLOT(slotCollapsedDirectory(Q3ListViewItem*)) ); connect( ListView_DIRECTORY, SIGNAL(contextMenuRequested( Q3ListViewItem *, const QPoint &, int )), this, SLOT(slotRightButtonClickedDirectory(Q3ListViewItem*, const QPoint &, int )) ); connect( ListView_FILES, SIGNAL(contextMenuRequested( Q3ListViewItem *, const QPoint &, int )), this, SLOT(slotRightButtonClickedFiles(Q3ListViewItem*, const QPoint &, int )) ); connect( ListView_FILES, SIGNAL(doubleClicked( Q3ListViewItem *, const QPoint &, int)), this, SLOT(slotItemDoubleClicked( Q3ListViewItem *, const QPoint &, int )) ); connect( ToolButton_OPEN, SIGNAL(clicked()), this, SLOT(slotFileOpen()) ); connect( ToolButton_SAVE, SIGNAL(clicked()), this, SLOT(slotFileSave()) ); connect( ToolButton_GOTO_USER, SIGNAL(clicked()), this, SLOT(slotGotoUser()) ); connect( ToolButton_FIND, SIGNAL(clicked()), this, SLOT(slotFind()) ); connect( ToolButton_NEXT, SIGNAL(clicked()), this, SLOT(slotFindNext()) ); ToolButton_OPEN->setEnabled(m_bAllowOpen); ToolButton_GOTO_USER->setEnabled(false); } /** */ DCFileBrowser::~DCFileBrowser() { ClearView(); if ( m_pDecomp != 0 ) { /* there is no way to stop CBZ::Decompress so we are a bit stuck */ printf("~DCFileBrowser: waiting for thread to finish\n"); m_pDecomp->wait(); printf("~DCFileBrowser: thread finished, cleaning up\n"); if ( m_pDecomp->getData() != 0 ) { delete m_pDecomp->getData(); } if ( m_pDecomp->recompressed != 0 ) { delete m_pDecomp->recompressed; } delete m_pDecomp; } } /** */ void DCFileBrowser::customEvent( QEvent * event ) { if ( event->type() == EVENT_OPEN_FILELIST_FOLDER ) { DCFileBrowserListItem * item = ((DC_OpenFilelistFolderEvent*)event)->m_pItem; ListView_DIRECTORY->clearSelection(); ListView_DIRECTORY->ensureItemVisible( item ); ListView_DIRECTORY->setSelected( item, true ); ListView_DIRECTORY->setCurrentItem( item ); event->accept(); } else { event->ignore(); } } /** */ void DCFileBrowser::slotThreadFinishedLoading( bool ok ) { if ( ok ) { if ( m_pDecomp->recompressed != 0 ) { m_ListData.SetSize(0); m_ListData.Append( m_pDecomp->recompressed->Data(), m_pDecomp->recompressed->Size() ); delete m_pDecomp->recompressed; } ContinueInitTree( m_pDecomp->getData() ); // which will delete the data when it finishes } else { QMessageBox::critical( this, tr("Failed to load filelist"), tr("Unable to load") + " " + m_sFileName ); setWindowTitle(tr("Filebrowser")); EnableGuiElements(); } disconnect( m_pDecomp, SIGNAL(finished(bool)), this, SLOT(slotThreadFinishedLoading(bool)) ); delete m_pDecomp; m_pDecomp = 0; } /** */ void DCFileBrowser::ClearView() { m_pFoundDir = 0; m_nFoundFile = 0; m_FoundFiles.clear(); ListView_FILES->clear(); Q3ListViewItemIterator it( ListView_DIRECTORY ); for ( ; it.current(); it++ ) { // no longer have auto-delete with QT4 QList for ( int i = 0; i < ((DCFileBrowserListItem*)it.current())->m_pFileList.size(); i++ ) { delete ((DCFileBrowserListItem*)it.current())->m_pFileList.at(i); } ((DCFileBrowserListItem*)it.current())->m_pFileList.clear(); } ListView_DIRECTORY->clear(); } /** */ void DCFileBrowser::slotFileOpen() { QString file; if ( m_sFileName.isEmpty() ) { file = QString::fromAscii(g_pConfig->GetFileListPath().Data()); } else { file = m_sFileName; } QString s = QFileDialog::getOpenFileName( this, tr("Choose a file"), file, tr("Modern XML Filelists") + " (*.xml.bz2);;" + tr("Modern XML Filelists (uncompressed)") + " (*.xml);;" + tr("Old BZ2 Text Filelists") + " (*.bz2);;" + tr("Very old HE3 Text Filelists") + " (*.DcLst);;" + tr("Old Valknut Filelists") + " (*.filelist);;" + tr("All files") + " (*)" ); if ( !s.isEmpty() ) { InitTree(QString::null,QString::null,QString::null,s); } } /** */ void DCFileBrowser::slotFileSave() { if ( m_ListData.Size() == 0 ) { QMessageBox::critical( this, tr("Cannot save file"), tr("No data available to save.") ); return; } QString s = QFileDialog::getSaveFileName( this, tr("Choose a filename to save under"), m_sFileName ); if ( s.isEmpty() ) { return; } if ( m_ListData.SaveToFile(s.toAscii().constData()) == false ) { QMessageBox::critical( this, tr("Error saving file"), tr("Failed to save") + " " + s ); } } /** */ void DCFileBrowser::slotCurrentChangedDirectory() { DCFileItem * FileItem; QString s; QList selitems; ulonglong size=0; int items = 0; int citems = 0; Q3ListViewItem * item = 0; Q3ListViewItem * select = 0; // clear filelist ListView_FILES->clear(); // check if only one dir selected if ( DCGuiUtils::SelectedItems( ListView_DIRECTORY, selitems ) == 1 ) { item = selitems.first(); for ( int i = 0; i < ((DCFileBrowserListItem*)item)->m_pFileList.size(); i++ ) { FileItem = ((DCFileBrowserListItem*)item)->m_pFileList.at(i); if ( (g_pConfig->GetFoldersInRightPane() == false) && FileItem->m_bIsDir ) { // do not show it continue; } size += FileItem->m_nSize; DC_FBListViewItem *item1 = new DC_FBListViewItem(ListView_FILES); item1->myvalue = FileItem->m_nSize; item1->mycol = 1; item1->m_bSortTop = false; item1->pDirItem = ((DCFileBrowserListItem*)item); if ( FileItem->m_bIsDir ) { s = tr("Folder"); item1->setPixmap(0,m_FolderPixmap); if ( g_pConfig->GetFoldersInRightPaneOnTop() ) { item1->m_bSortTop = true; } } else { s = CDir::Extension(FileItem->m_sName.toAscii().constData()).Data(); if ( !s.isEmpty() ) { s += " "; s += tr("file"); } eFileTypes type = CFileManager::Instance()->GetFileType(FileItem->m_sName.toAscii().constData()); QPixmap icon; switch (type) { case eftMP3: icon = g_pIconLoader->GetPixmap(eiFILETYPE_MP3); break; case eftARCHIVE: icon = g_pIconLoader->GetPixmap(eiFILETYPE_ARCHIVE); break; case eftDOCUMENT: icon = g_pIconLoader->GetPixmap(eiFILETYPE_DOCUMENT); break; case eftAPPLICATION: icon = g_pIconLoader->GetPixmap(eiFILETYPE_APPLICATION); break; case eftPICTURE: icon = g_pIconLoader->GetPixmap(eiFILETYPE_PICTURE); break; case eftVIDEO: icon = g_pIconLoader->GetPixmap(eiFILETYPE_VIDEO); break; default: icon = g_pIconLoader->GetPixmap(eiFILETYPE_UNKNOWN); break; } item1->setPixmap( 0, icon ); items++; if ( !m_sJumpTo.isEmpty() && (FileItem->m_sName == m_sJumpTo) ) { select = item1; m_sJumpTo = ""; } } item1->setText(0,FileItem->m_sName); item1->setText(1,DCGuiUtils::GetSizeString(FileItem->m_nSize)); item1->setText(2,QString::number(FileItem->m_nSize)); item1->setText(3,s); item1->setText(4,FileItem->m_sHash); } if ( select ) { ListView_FILES->clearSelection(); ListView_FILES->ensureItemVisible( select ); ListView_FILES->setSelected( select, true ); ListView_FILES->setCurrentItem( select ); } /* do not use it again */ m_sJumpTo = ""; } if ( item ) { citems = item->childCount(); } TextLabel_STATUS->setText( QString().setNum(items+citems) + " " + tr("Items") + " - " + QString().setNum(items) + " " + tr("Files") + " (" + DCGuiUtils::GetSizeString(size) + " " + tr("Total") + ") - " + QString().setNum(citems) + " " + tr("Directories") ); TextLabel_STATUS->setToolTip( QString::number(size) + " B" ); } /** */ void DCFileBrowser::slotExpandedDirectory( Q3ListViewItem * item ) { if ( item->parent() != NULL ) item->setPixmap(0,g_pIconLoader->GetPixmap(eiFOLDER_BLUE_OPEN)); } /** */ void DCFileBrowser::slotCollapsedDirectory( Q3ListViewItem * item ) { if ( item->parent() != NULL ) item->setPixmap(0,g_pIconLoader->GetPixmap(eiFOLDER_BLUE)); } /** */ void DCFileBrowser::slotRightButtonClickedDirectory( Q3ListViewItem * item, const QPoint &, int column ) { CreateMenu(item,true,column); } /** */ void DCFileBrowser::slotRightButtonClickedFiles( Q3ListViewItem * item, const QPoint &, int column ) { CreateMenu(item,false,column); } /** */ void DCFileBrowser::AddDirectory( Q3ListViewItem * item, QString name ) { ((DCFileBrowserListItem*)item)->m_sName = name; item->setText(0,name); item->setPixmap(0,m_FolderPixmap); ((DCFileBrowserListItem*)item)->m_nBytes = 0; } /** */ void DCFileBrowser::AddFile( Q3ListViewItem * item, DCFileItem * fileitem ) { // increment filecounter if ( fileitem->m_bIsDir == false ) { m_nFileCount++; m_nShareSize += fileitem->m_nSize; } // add fileitem to filelist ((DCFileBrowserListItem*)item)->m_pFileList.append(fileitem); // add to folder contents size ((DCFileBrowserListItem*)item)->m_nBytes += fileitem->m_nSize; DCFileItem * pFileItem = ((DCFileBrowserListItem*)item)->m_pFileItem; if ( pFileItem != 0 ) { pFileItem->m_nSize = ((DCFileBrowserListItem*)item)->m_nBytes; } } /** */ void DCFileBrowser::InitTree( QString nick, QString hubname, QString hubhost, QString filename, QString jumpto, QStringList dirs ) { if ( filename.isEmpty() ) { return; } if ( m_pDecomp != 0 ) { QMessageBox::critical( this, tr("Cannot open list now"), tr("Filelist browser is busy") ); return; } // store values m_sNick = nick; m_sHubName = hubname; m_sHubHost = hubhost; m_sFileName = filename; m_sJumpTo = jumpto; m_lDownloadDirs = dirs; // first check if filename is our own list if ( filename == "/dev/null/ownfilelist" ) { m_bAllowDownload = false; GetOwnList(); //printf("Size of own list = %lu\n", m_ListData.Size()); if ( (m_sFileName == "myfiles.xml.bz2") || (m_sFileName == "myfiles.txt.bz2") || (m_sFileName == "myfiles.DcLst") ) { // nothing, it all got moved into the thread } else { QMessageBox::critical( this, tr("Error opening own filelist"), tr("Failed to open your own filelist") ); return; } DisableGuiElements(); m_pDecomp = new DCFilelistDecompressor( this, &m_ListData ); connect( m_pDecomp, SIGNAL(finished(bool)), this, SLOT(slotThreadFinishedLoading(bool)) ); m_pDecomp->start(); return; } else { m_bAllowDownload = true; if ( !QFile::exists(filename) ) { QMessageBox::critical( this, tr("Error opening filelist"), tr("File") + " " + filename + " " + tr("does not exist.") ); return; } DisableGuiElements(); m_pDecomp = new DCFilelistDecompressor( this, filename.toAscii().constData() ); connect( m_pDecomp, SIGNAL(finished(bool)), this, SLOT(slotThreadFinishedLoading(bool)) ); m_pDecomp->start(); return; } } /** */ void DCFileBrowser::ContinueInitTree( CString * data ) { /* A bz2 file that decompressed to zero bytes probably... */ if ( (data == 0) || (data->Length() == 0) ) { QMessageBox::critical( this, tr("Error opening filelist"), m_sFileName + " " + tr("is likely not a valid filelist") ); setWindowTitle(tr("Filebrowser")); EnableGuiElements(); return; } Q3ListViewItem * item; // reset count values m_nShareSize = 0; m_nFileCount = 0; ClearView(); // get folder pixmap m_FolderPixmap = g_pIconLoader->GetPixmap(eiFOLDER_BLUE); // disable updates ListView_DIRECTORY->setUpdatesEnabled(false); // parse filename QFileInfo fi(m_sFileName); QString fname = fi.fileName(); if ( (m_sNick.isEmpty()) || (m_sHubName.isEmpty()) || (m_sHubHost.isEmpty()) ) { int i = fname.indexOf('@'); if ( i != -1 ) { m_sNick = fname.left(i); m_sHubHost = fname.mid(i+1); m_sHubHost.remove(".xml.bz2"); m_sHubHost.remove(".bz2"); m_sHubHost.remove(".xml"); m_sHubHost.remove(".DcLst"); m_sHubHost.remove(".filelist"); // replace _ with : before port number int i2 = m_sHubHost.lastIndexOf('_'); if ( i2 != -1 ) { bool ok; m_sHubHost.mid(i2+1).toInt(&ok); if ( ok ) { m_sHubHost = m_sHubHost.left(i2) + ":" + m_sHubHost.mid(i2+1); } } if ( m_sHubName.isEmpty() ) { m_sHubName = m_sHubHost; } } } // set dialog caption if ( m_sNick.isEmpty() ) { fname.remove(".xml.bz2"); fname.remove(".bz2"); fname.remove(".xml"); fname.remove(".DcLst"); fname.remove(".filelist"); m_sNick = fname; } if ( m_sHubName.isEmpty() ) { setWindowTitle( m_sNick + " - " + tr("Filebrowser") ); } else { setWindowTitle( m_sNick + " - " + tr("Filebrowser") + " [" + m_sHubName + "]" ); } // create root item item = new DCFileBrowserListItem( ListView_DIRECTORY ); item->setText(0,tr("Root Directory")); item->setPixmap(0,g_pIconLoader->GetPixmap(eiFOLDER_RED)); ((DCFileBrowserListItem*)item)->m_pFileItem = 0; if ( data->Left(9).Find("setText( QString().setNum(m_nFileCount) + " " + tr("Files") + " (" + DCGuiUtils::GetSizeString(m_nShareSize) + " " + tr("Total") + ")" ); // update tooltip TextLabel_SUMMARY->setToolTip( QString().setNum(m_nShareSize) + " B" ); // update view ListView_DIRECTORY->setUpdatesEnabled(true); ListView_DIRECTORY->triggerUpdate(); // open first tree ListView_DIRECTORY->setOpen(ListView_DIRECTORY->firstChild(),true); EnableGuiElements(); /* download any directories */ for ( QStringList::const_iterator it = m_lDownloadDirs.constBegin(); it != m_lDownloadDirs.constEnd(); ++it ) { DownloadDirectory( *it ); } m_lDownloadDirs.clear(); /* jump to target file or folder */ if ( !m_sJumpTo.isEmpty() ) { JumpTo( m_sJumpTo ); } } /** */ void DCFileBrowser::DisableGuiElements() { setWindowTitle(tr("Processing filelist...")); ToolButton_FIND->setEnabled(false); ToolButton_NEXT->setEnabled(false); ToolButton_OPEN->setEnabled(false); ToolButton_SAVE->setEnabled(false); ToolButton_GOTO_USER->setEnabled(false); ListView_DIRECTORY->setEnabled(false); ListView_FILES->setEnabled(false); } void DCFileBrowser::EnableGuiElements() { ToolButton_FIND->setEnabled(true); ToolButton_NEXT->setEnabled(true); ToolButton_OPEN->setEnabled(m_bAllowOpen); ToolButton_SAVE->setEnabled(true); ListView_DIRECTORY->setEnabled(true); ListView_FILES->setEnabled(true); if ( !m_bAllowOpen || m_sNick.isEmpty() || m_sHubHost.isEmpty() ) { ToolButton_GOTO_USER->setEnabled(false); } else { ToolButton_GOTO_USER->setEnabled(true); } } /** */ void DCFileBrowser::InitTXTTree( Q3ListViewItem * item, CString * data ) { QString s1,sname,slength; long i,j,d; int depth; i = j = 0; while((i=data->Find("\xD\xA",j))>=0) { s1 = data->Mid(j,i-j).Data(); depth=0; while( (s1.indexOf("\x9",depth)) != -1 ) depth++; s1.remove( "\x9" ); if (item) while ( depth < item->depth() ) if ( (item=item->parent()) == 0 ) break; if ( s1.isEmpty() ) s1 = "\\"; if ( !s1.isEmpty() ) { d = s1.lastIndexOf("|"); if ( d != -1 ) // parse file entry { DCFileItem * FileItem = new DCFileItem(); FileItem->m_sName = s1.mid(0,d); FileItem->m_nSize = s1.right(s1.length()-d-1).toULongLong(); FileItem->m_bIsDir = false; AddFile( item, FileItem ); } else // parse dir entry { DCFileItem * FileItem = new DCFileItem(); FileItem->m_sName = s1; FileItem->m_nSize = 0; FileItem->m_bIsDir = true; AddFile( item, FileItem ); if ( item == 0 ) item = new DCFileBrowserListItem( ListView_DIRECTORY ); else item = new DCFileBrowserListItem( item ); ((DCFileBrowserListItem*)item)->m_pFileItem = FileItem; AddDirectory( item, s1 ); } } j = i+2; } // fixup the folder sizes Q3ListViewItem * cur = ListView_DIRECTORY->firstChild(); while ( cur ) { CalcDirSize( cur ); cur = cur->nextSibling(); } } /** */ void DCFileBrowser::InitXMLTree( Q3ListViewItem * item, CString * data ) { CXml * xml = new CXml(); // QString::length() is not the length of the UTF-8 data // but CString::Length() is if ( xml->ParseMemory(data->Data(),data->Length()) && xml->DocFirstChild() ) { // maybe we should just parse the first FileListing? do { if ( (xml->Name() == "FileListing") && xml->FirstChild() ) { ParseXMLTree(xml,item); xml->Parent(); } } while ( xml->NextNode() ); } delete xml; } /** */ void DCFileBrowser::ParseXMLTree( CXml * xml, Q3ListViewItem * item ) { CString s; do { if ( xml->Name() == "File" ) { DCFileItem * FileItem = new DCFileItem(); s = xml->Prop("Name"); FileItem->m_sName = QString::fromUtf8(s.Data()); FileItem->m_nSize = xml->Prop("Size").asULL(); FileItem->m_sHash = xml->Prop("TTH").Data(); FileItem->m_bIsDir = false; AddFile(item,FileItem); } else if ( xml->Name() == "Directory" ) { Q3ListViewItem * item1; item1 = new DCFileBrowserListItem( item ); ((DCFileBrowserListItem*)item1)->m_pFileItem = 0; s = xml->Prop("Name"); AddDirectory(item1,QString::fromUtf8(s.Data())); if ( xml->FirstChild() ) { ParseXMLTree(xml,item1); xml->Parent(); } DCFileItem * FileItem = new DCFileItem(); FileItem->m_sName = QString::fromUtf8(s.Data()); FileItem->m_nSize = ((DCFileBrowserListItem*)item1)->m_nBytes; FileItem->m_bIsDir = true; AddFile(item,FileItem); ((DCFileBrowserListItem*)item1)->m_pFileItem = FileItem; if ( g_pConfig->GetFolderSizesInLeftPane() ) { item1->setText( 1, DCGuiUtils::GetSizeString( ((DCFileBrowserListItem*)item1)->m_nBytes ) ); } } } while ( xml->NextNode() ); } /** */ QString DCFileBrowser::CreateRemotePath( Q3ListViewItem * item ) { QString s; Q3ListViewItem * pitem; if ( !item ) { return s; } pitem = item; s = ((DCFileBrowserListItem*)pitem)->m_sName; while ( (pitem=pitem->parent()) != 0 ) { // check for root entry if ( pitem->parent() != 0 ) { s = ((DCFileBrowserListItem*)pitem)->m_sName + "\\" + s; } } s.replace( "\\\\\\\\", "\\" ); return s; } /** */ void DCFileBrowser::CreateMenu( Q3ListViewItem *, bool direntry, int column ) { int i; QString s; ulonglong size; QString rootPath = QString::null; QString localName = QString::null; QList selitems; Q3ListViewItem * curitem; bool hasFolderItems = false; DCClient * client = 0; QMap addedcommands; if ( direntry ) { i = DCGuiUtils::SelectedItems( ListView_DIRECTORY, selitems ); } else { i = DCGuiUtils::SelectedItems( ListView_FILES, selitems ); QListIterator it ( selitems ); Q3ListViewItem * cur = 0; while ( it.hasNext() ) { cur = it.next(); if ( cur->text(3) == tr("Folder") ) { hasFolderItems = true; break; } } } // nothing on no selection if ( i == 0 ) { return; } else { curitem = selitems.first(); } /* TODO readadd test if ( direntry && (item->parent() == 0) ) { return; } */ QMenu * m = new QMenu(this); QAction * dl = DCMenuHandler::addAction(m, emiDOWNLOAD, m_bAllowDownload); QAction * dl_to = DCMenuHandler::addAction(m, emiDOWNLOAD_TO, m_bAllowDownload); // disable 'download as' on directories QAction * dl_as = DCMenuHandler::addAction(m, emiDOWNLOAD_AS, (m_bAllowDownload && !direntry && !hasFolderItems && (i == 1) ) ); QAction * dl_in = DCMenuHandler::addAction(m, emiDOWNLOAD_IN, (m_bAllowDownload && !direntry && !hasFolderItems) ); DCMenuHandler::addAction(m, emiSEPARATOR); QAction * search_tth = m->addAction( QIcon(g_pIconLoader->GetPixmap(eiFILEFIND)), tr("Search by TTH") ); search_tth->setEnabled( m_bAllowOpen && !direntry && curitem && !(curitem->text(4).isEmpty()) ); DCMenuHandler::addAction(m, emiSEPARATOR); QAction * copycol = DCMenuHandler::addAction(m, emiCOPY_COLUMN_TO_CLIPBOARD, !direntry ); QAction * copyrow = DCMenuHandler::addAction(m, emiCOPY_ROW_TO_CLIPBOARD, !direntry ); QAction * copymagnet = DCMenuHandler::addAction(m, emiCOPYMAGNETLINK, (!direntry && !hasFolderItems )); client = g_pConnectionManager->GetClientForHub( m_sHubName.toAscii().constData(), m_sHubHost.toAscii().constData() ); if ( client != 0 ) { addedcommands = client->AddMenuCommands( m, euccFilelist ); } QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == copycol ) { QString s; for ( int c = 0; c < selitems.size(); c++ ) { curitem = selitems.at(c); s += curitem->text(column); s += "\n"; } s = s.trimmed(); QApplication::clipboard()->setText(s); } else if ( chosen == copyrow ) { int idx; QString s; for ( int c = 0; c < selitems.size(); c++ ) { curitem = selitems.at(c); for( idx = 0; idx < ListView_FILES->columns(); idx++ ) { s += curitem->text(idx); s += " "; } s += "\n"; } s = s.trimmed(); QApplication::clipboard()->setText(s); } else if ( chosen == copymagnet ) { //magnet:?xt=urn:tree:tiger:EOSA5AGTL5SD3VWCF3R2OH2WMGXV3S3R7SYN4YA&xl=708780032&dn=FC-6-i386-disc1.iso QString all; for ( int c = 0; c < selitems.size(); c++ ) { curitem = selitems.at(c); // add tth all += "magnet:?xt=urn:tree:tiger:"; all += curitem->text(4); // add filesize all += "&xl="; all += curitem->text(2); // add filename all += "&dn="; QString filename = QString(QUrl::toPercentEncoding(curitem->text(0))); //fixme DC++ replaces spaces with + character //filename = filename.replace(' ','+'); filename.replace("%20","+"); all += filename; all += "\n"; } // remove trailing "\n" all = all.trimmed(); QApplication::clipboard()->setText(all); } // Check if the user wants a non-default destination else if ( chosen == dl_to ) { rootPath = QFileDialog::getExistingDirectory( this, tr("Select destination") ); if ( rootPath.isEmpty() ) { // If the user cancel, then we don't download return; } } // Should the file be renamed else if ( chosen == dl_as ) { rootPath = QFileDialog::getSaveFileName( this, tr("Select a filename"), selitems.first()->text(0) ); if ( rootPath.isEmpty() ) { return; } QFileInfo fi(rootPath); rootPath = fi.path(); localName = fi.fileName(); if ( rootPath.isEmpty() || localName.isEmpty() ) { return; } } else if ( chosen == dl_in ) { QString localrootpath; QString localname; QString localpath; QString remotePath; if ( !(curitem = selitems.first()) ) return; size = ((DC_QListViewItem *)curitem)->myvalue; QString tth = curitem->text(4); // all files need equal size and TTH for ( int c = 0; c < selitems.size(); c++ ) { curitem = selitems.at(c); if ( size != ((DC_QListViewItem *)curitem)->myvalue ) return; if ( tth != curitem->text(4) ) return; } if ( DCFileTool::SelectFileSource( this, size, tth, localname, localrootpath, localpath ) == false ) { return; } QString remotePathAndFile; for ( int c = 0; c < selitems.size(); c++ ) { curitem = selitems.at(c); s = curitem->text(0); // get the full remote path remotePath = CreateRemotePath(GetDirItem(curitem)); remotePathAndFile = remotePath; remotePathAndFile += "\\"; remotePathAndFile += s; // add transfer to the waitlist DCFileTool::CheckFile( this, m_sNick.toAscii().constData(), m_sHubName.toAscii().constData(), m_sHubHost.toAscii().constData(), remotePathAndFile.toAscii().constData(), localname.toAscii().constData(), localpath.toAscii().constData(), localrootpath.toAscii().constData(), eltFILE, size, curitem->text(4).toAscii().constData(), true); } } else if ( chosen == search_tth ) { DCHubSearch * hubsearch = new DCHubSearch( g_pConnectionManager->GetMdiArea() ); hubsearch->SetSearchForFile( curitem->text(4), eftHASH ); hubsearch->show(); hubsearch->StartSearchWithPrompt(); } else if ( addedcommands.contains( chosen ) ) { DC_UserMenuCommand * umc = addedcommands[ chosen ]; QString usercommand = umc->m_sCommand; QString origUserCommand = usercommand; QString fullfilename, filesize, filesizeshort, filetth, filetype; for ( int c = 0; c < selitems.size(); c++ ) { // filelist browsers are only for the one nick if ( (umc->m_nType == euctRawOnce) && (c > 0) ) { break; } curitem = selitems.at(c); usercommand = client->replaceCommandTags( origUserCommand, m_sNick ); if ( usercommand.isEmpty() ) { // had a %[line:reason] but dialog was cancelled continue; } if ( direntry ) { fullfilename = CreateRemotePath(curitem); filesize.setNum(((DCFileBrowserListItem*)curitem)->m_nBytes); filesizeshort = DCGuiUtils::GetSizeString( ((DCFileBrowserListItem*)curitem)->m_nBytes ); filetth = tr("None"); filetype = tr("Directory"); } else { fullfilename = CreateRemotePath(GetDirItem(curitem)); filesize = curitem->text(2); filesizeshort = curitem->text(1); filetth = curitem->text(4); if ( filetth.isEmpty() ) { filetth = tr("None"); } if ( curitem->text(3) == tr("Folder") ) { filetype = tr("Directory"); } else { filetype = tr("File"); fullfilename += "\\"; fullfilename += curitem->text(0); } } usercommand.replace( "%[file]", fullfilename ); usercommand.replace( "%[fileFN]", fullfilename ); usercommand.replace( "%[filesize]", filesize ); usercommand.replace( "%[fileSI]", filesize ); usercommand.replace( "%[filesizeshort]", filesizeshort ); usercommand.replace( "%[fileSIshort]", filesizeshort ); usercommand.replace( "%[tth]", filetth ); usercommand.replace( "%[fileTR]", filetth ); usercommand.replace( "%[type]", filetype ); //client->m_pHubChat->AddStatus( usercommand.toAscii().constData() ); client->SendString( usercommand.toAscii().constData() ); } } // Is this a download? if ( (chosen == dl) || (chosen == dl_to) || (chosen == dl_as) ) { for ( int c = 0; c < selitems.size(); c++ ) { curitem = selitems.at(c); // directory download from left pane if ( direntry ) { s = curitem->text(0); DownloadPath( rootPath, s, QString::null, curitem ); } else if ( curitem->text(3) == tr("Folder") ) // directory download from right pane { Q3ListViewItem * diritem = GetDirItem( curitem ); if ( diritem == 0 ) { QMessageBox::critical( this, tr("Cannot download"), tr("Could not find the path for ") + curitem->text(0) ); } else { DownloadPath( rootPath, diritem->text(0), QString::null, diritem ); } } // Single file download else { QString remotePath; QString remoteName; // set localname if ( chosen != dl_as ) { localName = curitem->text(0); } // get the full remote path remotePath = CreateRemotePath(GetDirItem(curitem)); remoteName = curitem->text(0); DownloadFile( rootPath, QString(), localName, remotePath, remoteName, ((DC_QListViewItem *)curitem)->myvalue, curitem->text(4) ); } } } } /** */ void DCFileBrowser::DownloadPath( QString rootPath, QString localPath, QString localName, Q3ListViewItem * item ) { QString remotePath; DCFileItem * FileItem = 0; QString s; QString remoteFile; if ( !item ) { return; } // get the full remote path remotePath = CreateRemotePath(item); for ( int i = 0; i < ((DCFileBrowserListItem*)item)->m_pFileList.size(); i++ ) { FileItem = ((DCFileBrowserListItem*)item)->m_pFileList.at(i); if ( FileItem->m_bIsDir == false ) { remoteFile = FileItem->m_sName; DownloadFile( rootPath, localPath, localName, remotePath, remoteFile, FileItem->m_nSize, FileItem->m_sHash ); } } item = item->firstChild(); while( item ) { s = item->text(0); DownloadPath(rootPath,localPath + "\\" + s,localName,item); item = item->nextSibling(); } } /** */ void DCFileBrowser::DownloadFile( QString rootPath, QString localPath, QString localName, QString remotePath, QString remoteName, ulonglong size, QString hash ) { // append filename to the remote path remotePath += "\\"; remotePath += remoteName; if ( localName == QString::null ) { localName = remoteName; } DCFileTool::CheckFile(this, m_sNick.toAscii().constData(), m_sHubName.toAscii().constData(), m_sHubHost.toAscii().constData(), remotePath.toAscii().constData(), localName.toAscii().constData(), localPath.toAscii().constData(), rootPath.toAscii().constData(), eltFILE, size, hash.toAscii().constData() ); } /** Double click to download the item, copied from DCFileBrowser::CreateMenu */ void DCFileBrowser::slotItemDoubleClicked( Q3ListViewItem * item, const QPoint &, int ) { QString rootPath = QString::null; QString localName = QString::null; if ( item == 0 ) // null pointer check, just in case { return; } Q3ListViewItem * diritem = GetDirItem( item ); if ( diritem == 0 ) { QMessageBox::critical( this, tr("Cannot download"), tr("Could not find the path for ") + item->text(0) ); return; } if ( item->text(3) == tr("Folder") ) { // we cannot open the folder since that would delete the existing // Q3ListViewItems, which is not allowed in this slot and causes // random crashes /* Q3ListViewItem * diritem = ListView_DIRECTORY->currentItem(); if ( diritem == 0 ) { printf("Double click a folder needs a ListView_DIRECTORY->currentItem()\n"); return; } for ( diritem = diritem->firstChild(); diritem != 0; diritem = diritem->nextSibling() ) { if ( diritem->text(0) == item->text(0) ) { ListView_DIRECTORY->clearSelection(); ListView_DIRECTORY->ensureItemVisible( diritem ); ListView_DIRECTORY->setSelected( diritem, true ); ListView_DIRECTORY->setCurrentItem( diritem ); break; } } */ if ( g_pConfig->GetOpenFoldersInRightPane() ) { QApplication::postEvent( this, new DC_OpenFilelistFolderEvent( (DCFileBrowserListItem*)diritem ) ); } else if ( m_bAllowDownload ) { // ask for confirmation since this is unusual behaviour int confirm = QMessageBox::question( this, tr("Download contents?"), tr("Download the contents of \"") + diritem->text(0) + "\" ?", QMessageBox::Yes | QMessageBox::No, QMessageBox::No ); if ( confirm == QMessageBox::Yes ) { DownloadPath( rootPath, diritem->text(0), localName, diritem ); } } } else if ( m_bAllowDownload ) { QString remotePath; QString remoteName; // get the full remote path remotePath = CreateRemotePath(diritem); remoteName = item->text(0); DownloadFile( rootPath, QString(), localName, remotePath, remoteName, ((DC_QListViewItem *)item)->myvalue, item->text(4) ); } } /** Only needed for non-xml filelists */ ulonglong DCFileBrowser::CalcDirSize( Q3ListViewItem * item ) { ulonglong total = 0; DCFileBrowserListItem * cur = (DCFileBrowserListItem*) item; QListIterator it( cur->m_pFileList ); DCFileItem * current = 0; while ( it.hasNext()) { current = it.next(); if ( current->m_bIsDir ) { Q3ListViewItem * child = item->firstChild(); while ( child ) { if ( child->text(0) == current->m_sName ) { total += CalcDirSize( child ); break; } child = child->nextSibling(); } } else { total += current->m_nSize; } } DCFileItem * pFileItem = cur->m_pFileItem; if ( pFileItem != 0 ) { pFileItem->m_nSize = total; } cur->m_nBytes = total; if ( g_pConfig->GetFolderSizesInLeftPane() ) { cur->setText( 1, DCGuiUtils::GetSizeString( total ) ); } //printf( "CalcDirSize for %s = %lld\n", item->text(0).toAscii().constData(), total ); return total; } /** */ Q3ListViewItem * DCFileBrowser::GetDirItem( Q3ListViewItem * item ) { if ( item == 0 ) { return 0; } Q3ListViewItem * diritem = ((DC_FBListViewItem*)item)->pDirItem; if ( item->text(3) != tr("Folder") ) { return diritem; } if ( diritem == 0 ) { return 0; } for ( diritem = diritem->firstChild(); diritem != 0; diritem = diritem->nextSibling() ) { if ( diritem->text(0) == item->text(0) ) { return diritem; } } return 0; } /** */ void DCFileBrowser::GetOwnList() { m_ListData.SetSize(0); if ( CFileManager::Instance()->GetShareBuffer( esbtXMLBZ, &m_ListData, false ) == 0 ) { m_sFileName = "myfiles.xml.bz2"; } else if ( CFileManager::Instance()->GetShareBuffer( esbtBZ, &m_ListData, false ) == 0 ) { m_sFileName = "myfiles.txt.bz2"; } else if ( CFileManager::Instance()->GetShareBuffer( esbtHE3, &m_ListData, false ) == 0 ) { m_sFileName = "myfiles.DcLst"; } else { m_sFileName = ""; m_ListData.SetSize(0); } } /** */ bool DCFileBrowser::DownloadDirectory( QString dir ) { bool res = false; bool found = false; QStringList dirs = dir.split( "\\", QString::SkipEmptyParts ); qApp->processEvents(); Q3ListViewItem * curitem = ListView_DIRECTORY->firstChild(); if ( !curitem ) { return res; } for ( QStringList::const_iterator it = dirs.constBegin(); it != dirs.constEnd(); ++it ) { curitem = curitem->firstChild(); while ( curitem ) { if ( curitem->text(0) == *it ) { found = true; break; } curitem = curitem->nextSibling(); } if ( !found ) { return res; } else { found = false; } } if ( curitem ) { DownloadPath( QString::null, curitem->text(0), QString::null, curitem ); res = true; } return res; } /** */ void DCFileBrowser::JumpTo( QString target ) { QStringList parts = target.split( "\\", QString::SkipEmptyParts ); bool found = false; Q3ListViewItem * curitem = ListView_DIRECTORY->firstChild(); Q3ListViewItem * parent; QStringList::const_iterator it = parts.constBegin(); for ( ; it != parts.constEnd(); ++it ) { parent = curitem; curitem = curitem->firstChild(); while ( curitem ) { if ( curitem->text(0) == *it ) { found = true; break; } curitem = curitem->nextSibling(); } if ( !found ) { curitem = parent; break; } else { found = false; } } if ( curitem ) { if ( it != parts.constEnd() ) { m_sJumpTo = *it; } else { m_sJumpTo = ""; } ListView_DIRECTORY->clearSelection(); ListView_DIRECTORY->ensureItemVisible( curitem ); ListView_DIRECTORY->setSelected( curitem, true ); ListView_DIRECTORY->setCurrentItem( curitem ); } else { m_sJumpTo = ""; } } /** */ void DCFileBrowser::slotGotoUser() { DCClient * client = 0; if ( m_sNick.isEmpty() || m_sHubHost.isEmpty() ) { client = 0; } else { client = g_pConnectionManager->GetClientForHub( m_sHubName.toAscii().constData(), m_sHubHost.toAscii().constData() ); } if ( client ) { if ( client->jumpToNick( m_sNick ) ) { client->raise(); client->setFocus(); } else { QMessageBox::information( this, tr("Go to user"), tr("Cannot find user") ); } } else { QMessageBox::information( this, tr("Go to user"), tr("Cannot find hub") ); } } /** */ void DCFileBrowser::slotFind() { bool ok = false; QString text = QInputDialog::getText( this, tr("Find"), tr("Search string"), QLineEdit::Normal, m_sFindString, &ok ); if ( !ok || text.isEmpty() ) { return; } else { m_sFindString = text; m_pFoundDir = 0; m_nFoundFile = 0; m_FoundFiles.clear(); slotFindNext(); } } bool NameLessThan( const DCFileItem * left, const DCFileItem * right ) { return QString::localeAwareCompare( left->m_sName, right->m_sName ) < 0; } bool NameGreaterThan( const DCFileItem * left, const DCFileItem * right ) { return QString::localeAwareCompare( left->m_sName, right->m_sName ) > 0; } bool SizeLessThan( const DCFileItem * left, const DCFileItem * right ) { return left->m_nSize < right->m_nSize; } bool SizeGreaterThan( const DCFileItem * left, const DCFileItem * right ) { return left->m_nSize > right->m_nSize; } bool TTHLessThan( const DCFileItem * left, const DCFileItem * right ) { return QString::localeAwareCompare( left->m_sHash, right->m_sHash ) < 0; } bool TTHGreaterThan( const DCFileItem * left, const DCFileItem * right ) { return QString::localeAwareCompare( left->m_sHash, right->m_sHash ) > 0; } bool ExtLessThan( const DCFileItem * left, const DCFileItem * right ) { /* directory names searched separately so no need to add " file" */ QString left_ext, right_ext; int pos = left->m_sName.lastIndexOf('.'); if ( pos != -1 ) { left_ext = left->m_sName.mid(pos+1); } pos = right->m_sName.lastIndexOf('.'); if ( pos != -1 ) { right_ext = right->m_sName.mid(pos+1); } return QString::localeAwareCompare( left_ext, right_ext ) < 0; } bool ExtGreaterThan( const DCFileItem * left, const DCFileItem * right ) { /* directory names searched separately so no need to add " file" */ QString left_ext, right_ext; int pos = left->m_sName.lastIndexOf('.'); if ( pos != -1 ) { left_ext = left->m_sName.mid(pos+1); } pos = right->m_sName.lastIndexOf('.'); if ( pos != -1 ) { right_ext = right->m_sName.mid(pos+1); } return QString::localeAwareCompare( left_ext, right_ext ) > 0; } /** */ void DCFileBrowser::slotFindNext() { /* * Cannot use QListView::findItem() because we need to * search in file names. * * The search starts from the first directory and * continues from the last found directory and file. */ if ( m_sFindString.isEmpty() ) { /* * copied and pasted to avoid * ending up in a loop of * slotFind() -> slotFindNext() -> slotFind() ... */ bool ok = false; QString text = QInputDialog::getText( this, tr("Find"), tr("Search string"), QLineEdit::Normal, m_sFindString, &ok ); if ( !ok || text.isEmpty() ) { return; } else { m_sFindString = text; m_pFoundDir = 0; m_nFoundFile = 0; m_FoundFiles.clear(); } } if ( !m_pFoundDir ) { m_pFoundDir = (DCFileBrowserListItem*) ListView_DIRECTORY->firstChild(); if ( !m_pFoundDir ) { QMessageBox::information( this, tr("Find"), tr("Empty list") ); return; } } /* * current directory - already searched, * select next item if there is one */ if ( m_pFoundDir == ListView_DIRECTORY->currentItem() ) { Q3ListViewItemIterator selcount( ListView_FILES, Q3ListViewItemIterator::Selected ); if ( selcount.current() ) { ++m_nFoundFile; } if ( m_nFoundFile < m_FoundFiles.size() ) { Q3ListViewItem * vi = ListView_FILES->findItem( m_FoundFiles.at(m_nFoundFile), 0 ); if ( vi ) { ListView_FILES->clearSelection(); ListView_FILES->ensureItemVisible( vi ); ListView_FILES->setSelected( vi, true ); ListView_FILES->setCurrentItem( vi ); return; } } } /* * No more matches in the current directory. * Start/resume walking the tree. */ Q3ListViewItemIterator dir_it( m_pFoundDir ); ++dir_it; bool dirmatches = false; m_nFoundFile = 0; m_FoundFiles.clear(); while ( dir_it.current() ) { DCFileBrowserListItem * fbitem = (DCFileBrowserListItem*) dir_it.current(); /* check if directory name matches */ if ( fbitem->text(0).contains( m_sFindString, Qt::CaseInsensitive ) ) { m_pFoundDir = fbitem; dirmatches = true; } /* search all file names */ QList founditems; for ( QList::const_iterator fnit = fbitem->m_pFileList.constBegin(); fnit != fbitem->m_pFileList.constEnd(); ++fnit ) { /* directory names already searched */ if ( ((*fnit)->m_bIsDir == false) && ((*fnit)->m_sName.contains( m_sFindString, Qt::CaseInsensitive )) ) { m_pFoundDir = fbitem; founditems.append( *fnit ); } } /* sort the found items according to the view */ if ( ListView_FILES->sortOrder() == Qt::AscendingOrder ) { switch ( ListView_FILES->sortColumn() ) { case 0: qStableSort( founditems.begin(), founditems.end(), NameLessThan ); break; case 1: case 2: qStableSort( founditems.begin(), founditems.end(), SizeLessThan ); break; case 3: qStableSort( founditems.begin(), founditems.end(), ExtLessThan ); break; case 4: qStableSort( founditems.begin(), founditems.end(), TTHLessThan ); break; default: break; }; } else { switch ( ListView_FILES->sortColumn() ) { case 0: qStableSort( founditems.begin(), founditems.end(), NameGreaterThan ); break; case 1: case 2: qStableSort( founditems.begin(), founditems.end(), SizeGreaterThan ); break; case 3: qStableSort( founditems.begin(), founditems.end(), ExtGreaterThan ); break; case 4: qStableSort( founditems.begin(), founditems.end(), TTHGreaterThan ); break; default: break; }; } for ( QList::const_iterator found_iter = founditems.constBegin(); found_iter != founditems.constEnd(); ++found_iter ) { m_FoundFiles.append( (*found_iter)->m_sName ); } if ( !dirmatches && !m_FoundFiles.isEmpty() ) { m_sJumpTo = m_FoundFiles.first(); } if ( dirmatches || !m_FoundFiles.isEmpty() ) { ListView_DIRECTORY->clearSelection(); ListView_DIRECTORY->ensureItemVisible( fbitem ); ListView_DIRECTORY->setSelected( fbitem, true ); ListView_DIRECTORY->setCurrentItem( fbitem ); return; } ++dir_it; } QMessageBox::information( this, tr("Find"), tr("No more matches.") ); m_pFoundDir = 0; m_nFoundFile = 0; m_FoundFiles.clear(); } valknut-0.4.9/valknut/dcclient.h0000664000076400007640000001467511131754674015016 0ustar ejsejs/*************************************************************************** dcclient.h - description ------------------- begin : Thu Oct 4 2001 copyright : (C) 2001-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCCLIENT_H #define DCCLIENT_H /** *@author Mathias Küster */ #include #include #include #include #include #include #include #include "DCDialogClient.h" #include class DCChat; class QListWidgetItem; class QEvent; class QShowEvent; class DC_UserMenuCommand; class UserListModel; class FilterOnlyProxy; class DCClient : public QWidget, private Ui::DCDialogClient, public CClient { Q_OBJECT public: /** construtor */ DCClient( QWidget * parent = 0, CString remoteEncoding = CString() ); /** destructor */ virtual ~DCClient(); /** */ void InitDocument(); /** */ void DeInitDocument(); /** chat */ void DC_Chat( CMessageChat * MessageChat ); /** myinfo */ void DC_MyInfo( CMessageMyInfo * MessageMyInfo ); /** nicklist */ void DC_NickList( CMessageNickList * MessageNickList ); /** oplist */ void DC_OpList( CMessageOpList * MessageOpList ); /** hello */ void DC_Hello( CMessageHello * MessageHello ); /** quit */ void DC_Quit( CMessageQuit * MessageQuit ); /** */ void DC_PrivateChat( CMessagePrivateChat * msg, bool bLocal = false ); /** */ void DC_PrivateChat( QString nick, QString fromnick, QString message, bool bLocal = false ); /** usercommand */ void DC_UserCommand( CMessageUserCommand * MessageUserCommand ); /** */ static bool GetOPKickMessage( QString & message, QWidget * parent = 0 ); /** */ static bool GetOPForceMoveMessage( QString & message, QString & host, QWidget * parent = 0 ); /** */ bool OPKick( QString nick, QString message ); /** */ bool OPForceMove( QString nick, QString message, QString host ); /** */ void UpdateStatusBar(); /** */ void CloseChat( DCChat * chat ); /** */ void CloseAllChats( bool onlyOffline ); /** callback function */ virtual int DC_CallBack( CDCMessage * DCMessage ); /** */ QString findNick( QString part, int which ); /** Replaces the %[tag] s in the menu command with their values */ QString replaceCommandTags( QString & command, QString remotenick ); /** Checks for and sends auto responses */ void doAutoResponse( QString nick, QString message, DCChat * chatobject ); /** Jump to the nick in the userlist */ bool jumpToNick( const QString & nick ); /** Enable userlist sorting */ void enableUserListSorting(); /** Disable userlist sorting */ void disableUserListSorting(); /** Centre on MDI area */ void centreOnMdiArea(); /** Get our mdi sub window */ QMdiSubWindow * GetMdiSubWindow() { return m_pContainerWindow; }; /** * Adds all custom (from hub or settings) menu commands to menu. * Returns a map of commands added which are pointers to the * objects stored in DCConfig and must not be deleted. */ QMap AddMenuCommands( QMenu * menu, int context ); private: /** */ void addUser( QString nick ); /** */ void UpdateCaption(); /** */ void SetCrypt( bool b ); /** */ void SetConnection( bool b ); /** deletes all cached MyInfo objects in the hash and empties the hash */ void clearMyInfoCache(); /** * Moved out of InitDocument so it can be called by DCConnectionManager after * the widget is visible, otherwise things are not sized properly */ void InitSizes(); /** * For saving the settings so new hubs will use them * without closing this hubs. */ void saveColumns(); /** the private chat widgets */ QMap m_ChatMap; /** */ CMessageChat m_ChatFloodMessage; /** */ long m_nChatFloodCounter; /** */ bool m_bUserPassword; /** the hubchat widget */ DCChat * m_pHubChat; /** */ bool m_bUseTabWidget; /** Nick of last auto response trigger */ QString lastAutoNick; /** Time of last auto response trigger */ long lastAutoResponseTime; /** Userlist model */ UserListModel * m_pUserListModel; /** Filtering model */ FilterOnlyProxy * m_pProxyModel; /** The MDI window that contains us */ QMdiSubWindow * m_pContainerWindow; /** Last part of a nick for which tab completion requested */ QString lastPart; /** List of nicks matching lastpart */ QStringList lastMatches; /** List of menu commands from the hub */ QList hubcommands; /** */ bool m_bInitSizesDone; protected: /** */ QMutex m_Mutex; /** */ QTimer m_Timer; /** */ QList * m_pMessageList; /** */ QHash * m_pMyInfoHash; /** event filter */ virtual bool eventFilter( QObject * object, QEvent * event ); /** close event handler */ virtual void closeEvent( QCloseEvent * closeevent ); /** overridden so that sizes are initialized on first show() */ virtual void showEvent( QShowEvent * event ); private slots: /** */ void timerDone(); /** */ void slotDoubleClickedUserList( const QModelIndex & index ); /** */ void slotDoubleClickedChatUserList( QListWidgetItem * item ); /** */ void slotContextMenuUserList( const QPoint & ); /** */ void slotDoubleClickedUserChat( QListWidgetItem * item ); /** */ void slotHubConnect(); /** */ void slotSSLInfo(); /** current tab widget change slot */ void slotTabWidgetChatCurrentChange(QWidget*); /** */ void slotTabCornerCloseWidgetClicked(); /** */ void slotContextMenuTabWidgetChat( const QPoint & pos ); /** */ void slotFilterToggled( bool enabled ); /** */ void slotFilterColumn( int column ); /** */ void slotFilterString( const QString & text ); /** context menu for the QHeaderView */ void slotContextMenuHeader( const QPoint & ); /** */ void slotAltRowColors( bool enable ); }; #endif valknut-0.4.9/valknut/dchublistitems.h0000664000076400007640000000341411033105472016224 0ustar ejsejs/*************************************************************************** dchublistitems.h - Items used by DCHubListManager ------------------- begin : Wed Jul 3 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCHUBLISTITEMS_H #define DCHUBLISTITEMS_H /** * @author Edward Sheldrake * * Modified QTreeWidgetItem that has an int attached to it. * This file is not as necessary as the QT3 version which has much more. */ #include class DCBookmarkHubItem : public QTreeWidgetItem { public: /** constructor */ DCBookmarkHubItem( QTreeWidget * parent ) : QTreeWidgetItem( parent ) { }; /** constructor */ DCBookmarkHubItem( QTreeWidgetItem * parent ) : QTreeWidgetItem( parent ) { }; /** destructor */ virtual ~DCBookmarkHubItem() { }; /** * It's really the key of the item in CConfig's ordered bookmark map, which may or * may not be the actual position of the item in the QTreeWidget. */ int position; }; #endif // DCHUBLISTITEMS_H valknut-0.4.9/valknut/dctransferviewitems.h0000664000076400007640000000552211101161016017263 0ustar ejsejs/*************************************************************************** dctransferviewitems.h - Items used by DCTransferView ------------------- begin : Wed Jul 2 2008 copyright : (C) 2002-2004 by Mathias Küster copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCTRANSFERVIEWITEMS_H #define DCTRANSFERVIEWITEMS_H /** * @author Mathias Küster, Edward Sheldrake * * These are just some things used by DCTransferView until it gets * ported to QT4 properly. They have been moved out of dctransferview.h * because other classes do not need to know about them. */ #include #include #include #include #include "dcwidget.h" /** */ class DCTransferQueueChild { public: /** construtor */ DCTransferQueueChild() { pObject = 0; pItem = 0; }; /** destructor */ ~DCTransferQueueChild() { delete pObject; pObject = 0; delete pItem; pItem = 0; }; /** */ CMessageDMFileObject * pObject; /** */ Q3ListViewItem * pItem; }; typedef QMap QueueChildMap; /** */ class DCTransferQueueParent { public: /** constructor, set pointer to 0 */ DCTransferQueueParent() { pItem = 0; }; /** destructor, delete all children */ ~DCTransferQueueParent() { if ( !m_QueueChildMap.isEmpty() ) // normally it is deleted if the map is empty, except on valknut shutdown { for ( QueueChildMap::const_iterator it = m_QueueChildMap.constBegin(); it != m_QueueChildMap.constEnd(); ++it ) { delete it.value(); } m_QueueChildMap.clear(); } delete pItem; pItem = 0; }; /** */ QString sHubName; /** */ QString sHubHost; /** */ QueueChildMap m_QueueChildMap; /** */ Q3ListViewItem * pItem; }; /** */ class DCTransferListItem { public: /** construtor */ DCTransferListItem() { pObject = 0; pItem = 0; }; /** destructor */ ~DCTransferListItem() { delete pObject; pObject = 0; delete pItem; pItem = 0; }; /** */ CMessageDMTransferObject * pObject; /** */ DC_QProgressListItem * pItem; }; #endif // DCTRANSFERVIEWITEMS_H valknut-0.4.9/valknut/dcguiutils.h0000664000076400007640000000546511102701576015371 0ustar ejsejs/*************************************************************************** dcguiutils.h - Valknut Utility Functions ------------------- begin : Thu Jul 3 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCGUIUTILS_H #define DCGUIUTILS_H /** * @author Edward Sheldrake * * This just cleans up a little copied and pasted code, and * wraps dclib's CUtils::GetSizeString because we usually want * the result as a QString and always use the unit from the config * settings. */ #include #include #include // for ulonglong #include class QComboBox; class Q3ListView; class Q3ListViewItem; class QTreeView; class DCGuiUtils { public: /** constructor - does nothing */ DCGuiUtils(); /** destructor - does nothing */ ~DCGuiUtils(); /** Gets the size with units B to TiB from config settings */ static QString GetSizeString( const ulonglong size ); /** Adds the list of encodings to the combo box */ static void AddEncodings( QComboBox * combobox ); /** Returns "Ascending" or "Descending" as a string */ static QString SortOrderName( const Qt::SortOrder order ); /** * Returns Qt::DescendingOrder for "Descending" and Qt::AscendingOrder * for anything else. */ static Qt::SortOrder SortOrderFromName( const QString name ); /** * This resizes all the columns in the list view preserving the * current ratio of column widths. */ static void AdjustColumnWidths( Q3ListView * view, int oldsize ); /** * This resizes all the columns in the tree view preserving the * current ratio of column widths. */ static void AdjustColumnWidths( QTreeView * view, int oldsize ); /** * Adds all selected items to the list. * Returns the number of items in the list. */ static int SelectedItems( Q3ListView * view, QList & list ); /** * Detects the style factory key for the current style of the QApplication. * Involves creating QStyle objects until a match is found. */ static QString DetectAppStyleKey(); }; #endif // DCGUIUTILS_H valknut-0.4.9/valknut/dchubsearch.cpp0000664000076400007640000021052611134733357016026 0ustar ejsejs/*************************************************************************** dchubsearch.cpp - description ------------------- begin : Fri Mar 15 2002 copyright : (C) 2002-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dchubsearch.h" /** Qt (TM) includes */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include //Added by qt3to4: #include #include #include #include #include #include #include #include #include /** */ #include #include #include #ifndef WIN32 #include #endif #include "dcconfig.h" #include "dcclient.h" #include "dcconnectionmanager.h" #include "dchublistmanager.h" #include "dcfiletool.h" #include "dctransferview.h" #include "dcmenuhandler.h" #include "dcwidget.h" #include "dciconloader.h" #include "dcguiutils.h" #include #include #include // for file type icons #include // for saving search results with correct encoding #include // for loading saved search results #include // not in dchubsearch.h any more #include // all for checking a TTH is valid and so not send out useless searches #include #include #include #include "search-result-columns.h" /** */ DCHubSearch::DCHubSearch( QWidget * parent ) : QWidget( parent ) { int idx; lastFileResultsWidth = -1; lastUserResultsWidth = -1; m_eCurrentGrouping = egsrtNONE; m_nFilteredResults = 0; setupUi(this); m_pEmptyGroup = 0; // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiFIND) ); setAttribute(Qt::WA_DeleteOnClose); if ( g_pConnectionManager->GetMdiArea() ) { m_pContainerWindow = g_pConnectionManager->GetMdiArea()->addSubWindow(this); m_pContainerWindow->setWindowIcon( g_pIconLoader->GetPixmap(eiFIND) ); } else { m_pContainerWindow = 0; } // set the ColumnWidthMode to manual, we have to do this // because using the Q3ListView resizeMode AllColumns means that it is // impossible to change the size of the last column // and QTreeView only resizes the last column for( idx = 0; idx < ListView_SEARCHRESULT->columns(); idx++ ) { ListView_SEARCHRESULT->setColumnWidthMode( idx, Q3ListView::Manual ); } /* disable this, we are adjusting the column widths */ TreeWidget_SEARCHRESULTUSER->header()->setStretchLastSection(false); TreeWidget_SEARCHRESULTUSER->sortByColumn( 0, Qt::AscendingOrder ); TreeWidget_SEARCH->sortByColumn( 1, Qt::AscendingOrder ); // right align numeric columns ListView_SEARCHRESULT->setColumnAlignment( RESULTS_COLUMN_SIZE, Qt::AlignRight ); ListView_SEARCHRESULT->setColumnAlignment( RESULTS_COLUMN_FREESLOTS, Qt::AlignRight ); /* not total slots otherwise it's too close to the hub IP address and it's hard to read */ // select at least ComboBox_SEARCHLIMIT->setCurrentIndex(1); // count column is hidden unless results have been grouped ListView_SEARCHRESULT->hideColumn(RESULTS_COLUMN_COUNT); m_pMessageList = new CList(); m_pSearchResultList = new CList(); m_pSearchQueryList = 0; m_pSearchHistory = new CList(); InitDocument(); /* * CSearchManager does not delete the callback function anymore * because multiple search windows will never work with that. */ m_pOurCallback = new CCallback1( this, &DCHubSearch::DC_CallBack ); /* figure out global search state */ switch ( CSearchManager::Instance()->SearchType() ) { case estyNONE: m_eSearchState = egssREADY; Label_GLOBAL_SEARCH_STATUS->setText(tr("Ready")); SetSearchView(true); break; case estySINGLE: case estyMULTI: m_eSearchState = egssOTHER; Label_GLOBAL_SEARCH_STATUS->setText(tr("Other search...")); SetSearchView(false); break; case estyEXTERNAL: m_eSearchState = egssAUTO; Label_GLOBAL_SEARCH_STATUS->setText(tr("Auto search...")); SetSearchView(false); break; } if ( CSearchManager::Instance()->GetCallBackFunction() == 0 ) { CSearchManager::Instance()->SetCallBackFunction( m_pOurCallback ); } m_Timer.setSingleShot( true ); m_Timer.start( 500 ); } /** */ DCHubSearch::~DCHubSearch() { DeInitDocument(); if ( CSearchManager::Instance()->GetCallBackFunction() == m_pOurCallback ) { if ( (m_eSearchState == egssSEARCH) && ((CSearchManager::Instance()->SearchType() == estySINGLE) || (CSearchManager::Instance()->SearchType() == estyMULTI)) ) { CSearchManager::Instance()->StopSearch(); } CSearchManager::Instance()->SetCallBackFunction( 0 ); } delete m_pOurCallback; m_pOurCallback = 0; ClearSearchResults(); TreeWidget_SEARCH->removeEventFilter(this); Combobox_SEARCH->removeEventFilter(this); m_Timer.stop(); SocketCallbackMutex.lock(); // cleanup all lists delete m_pMessageList; m_pMessageList = 0; delete m_pSearchResultList; m_pSearchResultList = 0; delete m_pSearchQueryList; m_pSearchQueryList = 0; delete m_pSearchHistory; m_pSearchHistory = 0; SocketCallbackMutex.unlock(); } /** */ void DCHubSearch::InitDocument() { StringMap * map; // restore settings if ( g_pConfig->GetMap("SEARCHVIEW",map) ) { if ( ((*map)["WIDTH"].toInt() > 0) && ((*map)["HEIGHT"].toInt() > 0) ) { if ( m_pContainerWindow != 0 ) { m_pContainerWindow->resize( (*map)["WIDTH"].toInt(), (*map)["HEIGHT"].toInt() ); } } if ( !((*map)["MAXTHREADS"].isEmpty()) ) { SpinBox_MAXTHREADS->setValue( (*map)["MAXTHREADS"].toInt() ); } if ( !((*map)["GROUPING"].isEmpty()) ) { m_eCurrentGrouping = (eGroupSearchResultType) (*map)["GROUPING"].toInt(); } if ( m_eCurrentGrouping != egsrtNONE ) { ListView_SEARCHRESULT->setRootIsDecorated(true); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_COUNT, ListView_SEARCHRESULT->columnWidth( RESULTS_COLUMN_FREESLOTS ) ); ListView_SEARCHRESULT->setSorting( RESULTS_COLUMN_COUNT ); } if ( map->contains("SORTCOLUMN") ) { ListView_SEARCHRESULT->setSortColumn( map->value("SORTCOLUMN").toInt() ); } if ( map->contains("SORTORDER") ) { ListView_SEARCHRESULT->setSortOrder( DCGuiUtils::SortOrderFromName(map->value("SORTORDER")) ); } } connect( LineEdit_INCLUDE, SIGNAL(returnPressed()), this, SLOT(slotTextFilterResults()) ); connect( LineEdit_EXCLUDE, SIGNAL(returnPressed()), this, SLOT(slotTextFilterResults()) ); connect( PushButton_SEARCH, SIGNAL(clicked()), this, SLOT(slotSearchReturnPressed()) ); connect( PushButton_ADDQUEUE, SIGNAL(clicked()), this, SLOT(slotAddSearchQueue()) ); connect( PushButton_REFRESHCONNECTEDHUBS, SIGNAL(clicked()), this, SLOT(slotRefreshConnectedHubs()) ); connect( PushButton_APPLYTEXTFILTER, SIGNAL(clicked()), this, SLOT(slotTextFilterResults()) ); connect( PushButton_RESETTEXTFILTER, SIGNAL(clicked()), this, SLOT(slotTextFilterReset()) ); connect( PushButton_RESETPARAMS, SIGNAL(clicked()), this, SLOT(slotReset()) ); connect( SpinBox_FREESLOTS, SIGNAL(valueChanged(int)), this, SLOT(slotChangedFreeSlots(int)) ); connect( CheckBox_SEARCHFILEONLY, SIGNAL(toggled(bool)), this, SLOT(slotToggledSearchFileOnly(bool)) ); connect( TabWidget_HUBSEARCH,SIGNAL(currentChanged(QWidget*)), this, SLOT(slotTabWidgetCurrentChange(QWidget*)) ); connect( ListView_SEARCHRESULT,SIGNAL(doubleClicked(Q3ListViewItem*)), this, SLOT(slotDoubleClickedSearchResult(Q3ListViewItem*)) ); connect( ListView_SEARCHRESULT,SIGNAL(contextMenuRequested( Q3ListViewItem *, const QPoint &, int )), this, SLOT(slotRightButtonClickedSearchResult(Q3ListViewItem*, const QPoint &, int )) ); connect( TreeWidget_SEARCH,SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuSearch( const QPoint & )) ); connect( Combobox_SEARCH, SIGNAL(activated(int)), this, SLOT(slotSearchSelected(int)) ); connect( PushButton_PURGEHISTORY, SIGNAL(clicked()), this, SLOT(slotPurgeHistory()) ); connect( ComboBox_SEARCHLIMIT, SIGNAL(currentIndexChanged(int)), this, SLOT(slotSizeLimitChanged(int)) ); connect( &m_Timer, SIGNAL(timeout()), this, SLOT(timerDone()) ); TreeWidget_SEARCH->installEventFilter(this); Combobox_SEARCH->installEventFilter(this); } /** */ void DCHubSearch::DeInitDocument() { StringMap * map; // save search view settings g_pConfig->GetMap("SEARCHVIEW",map); if ( m_pContainerWindow != 0 ) { (*map)["WIDTH"] = QString().setNum(m_pContainerWindow->width()); (*map)["HEIGHT"] = QString().setNum(m_pContainerWindow->height()); } (*map)["MAXTHREADS"] = QString().setNum(SpinBox_MAXTHREADS->value()); (*map)["GROUPING"] = QString().setNum(m_eCurrentGrouping); (*map)["SORTCOLUMN"] = QString::number( ListView_SEARCHRESULT->sortColumn() ); (*map)["SORTORDER"] = DCGuiUtils::SortOrderName( ListView_SEARCHRESULT->sortOrder() ); } /** current tab widget change slot */ void DCHubSearch::slotTabWidgetCurrentChange(QWidget*) { SizeColumnsPreservingRatios(); } /** overridden so that the column widths are initialized on first show() */ void DCHubSearch::showEvent( QShowEvent * event ) { QWidget::showEvent( event ); if ( isVisible() ) { SizeColumnsPreservingRatios(); } } /** resize event handler */ void DCHubSearch::resizeEvent( QResizeEvent * ) { SizeColumnsPreservingRatios(); } /** Initialize or adjust widths of the ListView columns */ void DCHubSearch::SizeColumnsPreservingRatios() { int width; if ( ListView_SEARCHRESULT->isVisible() ) { width = ListView_SEARCHRESULT->width(); if ( width > 0 ) { if ( lastFileResultsWidth == -1 ) { ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_FILE, ((width*7)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_SIZE, ((width*3)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_TTH, ((width*4)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_PATH, ((width*6)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_NICK, ((width*3)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_FREESLOTS, ((width*3)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_TOTALSLOTS, ((width*3)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_IP, ((width*4)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_HUB, ((width*4)/30) ); ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_HOST, ((width*4)/30) ); lastFileResultsWidth = ListView_SEARCHRESULT->width(); } else if ( lastFileResultsWidth != width ) { DCGuiUtils::AdjustColumnWidths( ListView_SEARCHRESULT, lastFileResultsWidth ); lastFileResultsWidth = ListView_SEARCHRESULT->width(); } } } else if ( TreeWidget_SEARCHRESULTUSER->isVisible() ) { width = TreeWidget_SEARCHRESULTUSER->width(); if ( width > 0 ) { if ( lastUserResultsWidth == -1 ) { TreeWidget_SEARCHRESULTUSER->setColumnWidth( 0, width/2 ); TreeWidget_SEARCHRESULTUSER->setColumnWidth( 1, width/2 ); lastUserResultsWidth = TreeWidget_SEARCHRESULTUSER->width(); } else if ( lastUserResultsWidth != width ) { DCGuiUtils::AdjustColumnWidths( TreeWidget_SEARCHRESULTUSER, lastUserResultsWidth ); lastUserResultsWidth = TreeWidget_SEARCHRESULTUSER->width(); } } } } /** event filter */ bool DCHubSearch::eventFilter( QObject * object, QEvent * event ) { if ((event->type() == QEvent::KeyPress)&&((QTreeWidget*)object==TreeWidget_SEARCH)) { QKeyEvent * e = (QKeyEvent*)event; if ( e->key() == Qt::Key_Delete ) { RemoveSelectedSearch(NULL); } } else if ((event->type() == QEvent::KeyPress)&&((QComboBox*)object==Combobox_SEARCH)) { QKeyEvent * e = (QKeyEvent*)event; if((e->key() == Qt::Key_Enter) || (e->key() == Qt::Key_Return )) { slotSearchReturnPressed(); } } return QWidget::eventFilter( object, event ); // standard event processing } /** */ void DCHubSearch::slotSearchSelected(int sel) { CMessageSearchUser *msu; CMessageSearchFile *msf; int i; CDCMessage *hmsg=0; i = 0; while ( (hmsg=(CDCMessage *)m_pSearchHistory->Next((CDCMessage*)hmsg)) != 0 ) { if ( i == sel ) break; i++; } if ( hmsg == 0 ) return; if ( hmsg->m_eType == DC_MESSAGE_SEARCH_USER ) { msu = (CMessageSearchUser *)hmsg; LineEdit_SEARCHSIZE->setText("0"); ComboBox_SEARCHUNIT->setCurrentIndex(0); ComboBox_SEARCHLIMIT->setCurrentIndex(1); ComboBox_SEARCHTYPE->setCurrentIndex(0); } else { msf = (CMessageSearchFile *)hmsg; LineEdit_SEARCHSIZE->setText( QString().setNum(msf->m_nSize) ); ComboBox_SEARCHUNIT->setCurrentIndex(0); if ( msf->m_bSizeLimit ) { switch(msf->m_eSizeType) { case esstATLEAST: ComboBox_SEARCHLIMIT->setCurrentIndex(1); break; case esstATMOST: ComboBox_SEARCHLIMIT->setCurrentIndex(2); break; default: break; } } else { ComboBox_SEARCHLIMIT->setCurrentIndex(0); } ComboBox_SEARCHTYPE->setCurrentIndex(msf->m_eFileType); } } /** */ void DCHubSearch::addHistory( CDCMessage * msg ) { CMessageSearchUser *msu1,*msu2; CMessageSearchFile *msf1,*msf2; CString s1,s2; CDCMessage *hmsg = 0; int i = 0; bool found = false; if ( !msg ) msg = GetSearchObject(); if ( !msg) return; if ( msg->m_eType == DC_MESSAGE_SEARCH_USER ) { msu1 = (CMessageSearchUser *)msg; s1 = msu1->m_sNick; } else { msf1 = (CMessageSearchFile *)msg; s1 = msf1->m_sString; } while ( (hmsg=(CDCMessage *)m_pSearchHistory->Next((CDCMessage*)hmsg)) != 0 ) { if ( msg->m_eType == hmsg->m_eType ) { if ( msg->m_eType == DC_MESSAGE_SEARCH_USER ) { msu2 = (CMessageSearchUser *)hmsg; s2 = msu2->m_sNick; } else { msf2 = (CMessageSearchFile *)hmsg; s2 = msf2->m_sString; } if ( s1 == s2 ) { Combobox_SEARCH->removeItem(i); Combobox_SEARCH->addItem(QString::fromAscii(s1.Data())); m_pSearchHistory->Del(hmsg); m_pSearchHistory->Add(msg); found = true; break; } } i++; } if ( !found ) { m_pSearchHistory->Add(msg); Combobox_SEARCH->addItem(QString::fromAscii(s1.Data())); } Combobox_SEARCH->setCurrentIndex(Combobox_SEARCH->count()-1); } /** */ void DCHubSearch::SetSearchView( bool enabled ) { if ( enabled ) { PushButton_SEARCH->setText(tr("Start")); PushButton_SEARCH->setEnabled(true); } else { PushButton_SEARCH->setText(tr("Stop")); } //LineEdit_SEARCH->setEnabled(enabled); Combobox_SEARCH->setEnabled(enabled); ButtonGroup_HUBS->setEnabled(enabled); SpinBox_MAXTHREADS->setEnabled(enabled); PushButton_ADDQUEUE->setEnabled(enabled); CheckBox_ENABLETAG->setEnabled(enabled); CheckBox_MULTISEARCH->setEnabled(enabled); PushButton_RESETPARAMS->setEnabled(enabled); PushButton_PURGEHISTORY->setEnabled(enabled); TextLabel_TYPE->setEnabled(enabled); ComboBox_SEARCHTYPE->setEnabled(enabled); ComboBox_SEARCHLIMIT->setEnabled(enabled); LineEdit_SEARCHSIZE->setEnabled(enabled); ComboBox_SEARCHUNIT->setEnabled(enabled); Label_MAX_RESULTS->setEnabled(enabled); SpinBox_MAXRESULT->setEnabled(enabled); } /** */ int DCHubSearch::DC_CallBack( CDCMessage * DCMsg ) { SocketCallbackMutex.lock(); int err = -1; if ( (DCMsg != 0) && (m_pMessageList != 0) ) { m_pMessageList->Add( DCMsg ); err = 0; } SocketCallbackMutex.unlock(); return err; } /** */ void DCHubSearch::timerDone() { int i,t; if ( m_eSearchState == egssREADY ) { switch ( CSearchManager::Instance()->SearchType() ) { case estyNONE: break; case estySINGLE: case estyMULTI: if ( CSearchManager::Instance()->GetCallBackFunction() != m_pOurCallback ) { m_eSearchState = egssOTHER; Label_GLOBAL_SEARCH_STATUS->setText(tr("Other search...")); SetSearchView(false); } else { AddLogMessage("Bug: someone else started our search (state=ready type=single/multi)\n"); Label_GLOBAL_SEARCH_STATUS->setText(tr("Search...")); m_eSearchState = egssSEARCH; SetSearchView(false); } break; case estyEXTERNAL: m_eSearchState = egssAUTO; Label_GLOBAL_SEARCH_STATUS->setText(tr("Auto search...")); SetSearchView(false); /* show log message */ ShowResults(false); break; } } else if ( m_eSearchState == egssOTHER ) { switch ( CSearchManager::Instance()->SearchType() ) { case estyNONE: m_eSearchState = egssREADY; Label_GLOBAL_SEARCH_STATUS->setText(tr("Ready")); SetSearchView(true); break; case estySINGLE: case estyMULTI: /* other search is still running */ break; case estyEXTERNAL: m_eSearchState = egssAUTO; Label_GLOBAL_SEARCH_STATUS->setText(tr("Auto search...")); SetSearchView(false); break; } } else if ( m_eSearchState == egssAUTO ) { switch ( CSearchManager::Instance()->SearchType() ) { case estyNONE: /* show any more log messages */ ShowResults(false); AddLogMessage(tr("Auto search finished")); m_eSearchState = egssREADY; Label_GLOBAL_SEARCH_STATUS->setText(tr("Ready")); SetSearchView(true); break; case estySINGLE: case estyMULTI: if ( CSearchManager::Instance()->GetCallBackFunction() != m_pOurCallback ) { m_eSearchState = egssOTHER; Label_GLOBAL_SEARCH_STATUS->setText(tr("Other search...")); SetSearchView(false); } else { AddLogMessage("Bug: someone else started our search (state=auto type=single/multi)\n"); Label_GLOBAL_SEARCH_STATUS->setText(tr("Search...")); m_eSearchState = egssSEARCH; SetSearchView(false); } break; case estyEXTERNAL: /* auto search still running */ /* show any more log messages */ ShowResults(false); break; } } else if ( m_eSearchState == egssSEARCH ) { ShowResults(false); qApp->processEvents(); switch ( CSearchManager::Instance()->SearchType() ) { case estyNONE: m_eSearchState = egssREADY; Label_GLOBAL_SEARCH_STATUS->setText(tr("Ready")); SetSearchView( true ); setWindowTitle( tr("%1 - %2 Results").arg(GetSearchQueryString()).arg(m_pSearchResultList->Count()) ); AddLogMessage( tr("Search ended with %1 results").arg(m_pSearchResultList->Count()) ); if ( m_nFilteredResults > 0 ) { AddLogMessage( tr("%1 results were filtered").arg(m_nFilteredResults) ); } break; case estySINGLE: case estyMULTI: if ( CSearchManager::Instance()->GetCallBackFunction() == m_pOurCallback ) { LineEdit_LOGHUBS->setText( QString().setNum(CSearchManager::Instance()->HubIndex()) + "/" + QString().setNum(CSearchManager::Instance()->HubCount()) + " (" + QString().setNum(CSearchManager::Instance()->HubError()) + ")" ); i=0; if (CSearchManager::Instance()->HubCount()>0) i = ((CSearchManager::Instance()->HubIndex()*100)/CSearchManager::Instance()->HubCount()); ProgressBar_LOGHUBS->setValue(i); i = time(0)-CSearchManager::Instance()->StartTime(); if ( CSearchManager::Instance()->HubIndex() > 0 ) t = ((i*CSearchManager::Instance()->HubCount())/CSearchManager::Instance()->HubIndex()); else t = 0; LineEdit_LOGTIME->setText( (CUtils::GetTimeString(i) + "/" + CUtils::GetTimeString(t)).Data() ); } else { m_eSearchState = egssOTHER; Label_GLOBAL_SEARCH_STATUS->setText(tr("Other search...")); setWindowTitle( tr("%1 - %2 Results").arg(GetSearchQueryString()).arg(m_pSearchResultList->Count()) ); AddLogMessage( tr("Search ended with %1 results").arg(m_pSearchResultList->Count()) ); if ( m_nFilteredResults > 0 ) { AddLogMessage( tr("%1 results were filtered").arg(m_nFilteredResults) ); } } break; case estyEXTERNAL: m_eSearchState = egssAUTO; Label_GLOBAL_SEARCH_STATUS->setText(tr("Auto search...")); setWindowTitle( tr("%1 - %2 Results").arg(GetSearchQueryString()).arg(m_pSearchResultList->Count()) ); AddLogMessage( tr("Search ended with %1 results").arg(m_pSearchResultList->Count()) ); if ( m_nFilteredResults > 0 ) { AddLogMessage( tr("%1 results were filtered").arg(m_nFilteredResults) ); } break; } } // restart timer m_Timer.setSingleShot( true ); m_Timer.start( 500 ); } /** */ void DCHubSearch::ShowResults( bool bClearList ) { CDCMessage *DCMsg; bool bupdate; if ( bClearList ) { ClearSearchResults(); } if ( SocketCallbackMutex.tryLock() == false ) { return; } bupdate = false; if ( m_pMessageList != 0 ) { while( (DCMsg = m_pMessageList->Next(0)) != 0 ) { m_pMessageList->Remove(DCMsg); switch ( DCMsg->m_eType ) { case DC_MESSAGE_SEARCHRESULT: { bool b; b = DC_SearchResult( (CMessageSearchResult *) DCMsg ); if ( b == true ) { DCMsg = 0; bupdate = true; ListView_SEARCHRESULT->setUpdatesEnabled(false); } break; } case DC_MESSAGE_SEARCHRESULT_USER: { CMessageSearchResultUser * msg = (CMessageSearchResultUser*) DCMsg; QTreeWidgetItem * item = new QTreeWidgetItem( TreeWidget_SEARCHRESULTUSER ); item->setText(0,msg->m_sNick.Data()); item->setText(1,msg->m_sHubName.Data()); break; } case DC_MESSAGE_LOG: { DC_LogMessage( (CMessageLog *) DCMsg ); break; } default: { break; } } if ( DCMsg ) delete DCMsg; } } SocketCallbackMutex.unlock(); if ( bupdate ) { ListView_SEARCHRESULT->setUpdatesEnabled(true); ListView_SEARCHRESULT->triggerUpdate(); } } /** search result */ bool DCHubSearch::DC_SearchResult( CMessageSearchResult * MessageSearchResult ) { bool res = false; if ( CSearchManager::Instance()->SearchType() == estyNONE ) { return res; } if ( SpinBox_MAXRESULT->value() > 0 ) { if ( m_pSearchResultList->Count() >= SpinBox_MAXRESULT->value() ) { ++m_nFilteredResults; return res; } } /* SRs will have already been adjusted by CClient if in passive mode */ if ( g_pConfig->GetAdjustSearchResultHubNames() && (g_pConfig->GetMode() == ecmACTIVE) ) { if ( g_pConnectionManager->GetConnectedHubCount() == 1 ) { if ( RadioButton_CONNECTEDHUBS->isChecked() || RadioButton_CONNECTEDSINGLEHUB->isChecked() ) { std::map * hubmap = g_pConnectionManager->GetConnectedHubServerMap(); if ( hubmap != 0 ) { std::map::const_iterator it = hubmap->begin(); if ( it != hubmap->end() ) { MessageSearchResult->m_sHubName = it->first; MessageSearchResult->m_sHubHost = it->second; // printf( "Adjusted hub name to %s\n", it->first.Data() ); // printf( "Adjusted hub host to %s\n", it->second.Data() ); } delete hubmap; } } } else { if ( RadioButton_CONNECTEDSINGLEHUB->isChecked() ) { QString both = ComboBox_CONNECTEDHUBS->currentText(); if ( !both.isEmpty() ) { MessageSearchResult->m_sHubName = both.left( both.lastIndexOf('(') ).toAscii().constData(); int start = both.lastIndexOf('(') + 1; MessageSearchResult->m_sHubHost = both.mid( start, both.length() - (start+1) ).toAscii().constData(); } } } } ShowSearchResult( MessageSearchResult, ListView_SEARCHRESULT ); res = true; m_pSearchResultList->Add(MessageSearchResult); LCDNumber_RESULTS->display( (int) m_pSearchResultList->Count() ); return res; } /** */ Q3ListViewItem * DCHubSearch::ShowSearchResult( CMessageSearchResult * MessageSearchResult, Q3ListView * parent ) { DC_ListResult * item; if ( m_eCurrentGrouping == egsrtNONE ) { item = new DC_ListResult(parent); AddSearchResult( MessageSearchResult, item ); } else { CDir cdir; CString filename, pathname; QString key; int column; DC_ListResult * groupitem; switch ( m_eCurrentGrouping ) { case egsrtFILE: column = RESULTS_COLUMN_FILE; cdir.SplitPathFile(MessageSearchResult->m_sFile,pathname,filename); key = QString::fromAscii(filename.Data()); break; case egsrtSIZE: column = RESULTS_COLUMN_SIZE; key.setNum(MessageSearchResult->m_nSize); break; case egsrtNICK: column = RESULTS_COLUMN_NICK; key = QString::fromAscii(MessageSearchResult->m_sNick.Data()); break; case egsrtSLOTS_FREE: column = RESULTS_COLUMN_FREESLOTS; key.setNum(MessageSearchResult->m_nFreeSlot); break; case egsrtSLOTS_TOTAL: column = RESULTS_COLUMN_TOTALSLOTS; key.setNum(MessageSearchResult->m_nMaxSlot); break; case egsrtHUB: column = RESULTS_COLUMN_HUB; key = QString::fromAscii(MessageSearchResult->m_sHubName.Data()); break; case egsrtPATH: column = RESULTS_COLUMN_PATH; cdir.SplitPathFile(MessageSearchResult->m_sFile,pathname,filename); key = QString::fromAscii(pathname.Data()); break; case egsrtHOST: column = RESULTS_COLUMN_HOST; key = QString::fromAscii(MessageSearchResult->m_sHubHost.Data()); break; case egsrtHASH: column = RESULTS_COLUMN_TTH; key = QString::fromAscii(MessageSearchResult->m_sHash.Data()); break; case egsrtIP: column = RESULTS_COLUMN_IP; key = QString::fromAscii(MessageSearchResult->m_sSrcIP.Data()); break; default: column = RESULTS_COLUMN_FILE; cdir.SplitPathFile(MessageSearchResult->m_sFile,pathname,filename); key = QString::fromAscii(filename.Data()); break; } if ( key.isEmpty() ) { if ( m_pEmptyGroup == 0 ) { m_pEmptyGroup = new DC_ListResult( ListView_SEARCHRESULT ); m_pEmptyGroup->setSelectable( false ); m_pEmptyGroup->mycol = RESULTS_COLUMN_COUNT; m_pEmptyGroup->setOpen( true ); } groupitem = m_pEmptyGroup; } else { groupitem = m_GroupHash.value(key); if ( groupitem == 0 ) { groupitem = new DC_ListResult( ListView_SEARCHRESULT ); groupitem->setSelectable( false ); groupitem->mycol = RESULTS_COLUMN_COUNT; groupitem->setOpen( true ); groupitem->setText( column, key ); m_GroupHash.insert( key, groupitem ); } } item = new DC_ListResult( groupitem ); AddSearchResult( MessageSearchResult, item ); groupitem->myvalue = groupitem->childCount(); groupitem->setText( RESULTS_COLUMN_COUNT, QString().setNum(groupitem->myvalue) ); } return item; } /** */ Q3ListViewItem * DCHubSearch::ShowSearchResult( CMessageSearchResult * MessageSearchResult, DC_ListResult * parent ) { DC_ListResult *item = new DC_ListResult(parent); AddSearchResult( MessageSearchResult, item ); return item; } /** */ bool DCHubSearch::AddSearchResult( CMessageSearchResult * MessageSearchResult, DC_ListResult * item ) { bool res = false; bool visible = true; int i; QString s; CString spath,sname; if ( MessageSearchResult->m_nFreeSlot < (unsigned int)SpinBox_FREESLOTS->value() ) { visible = false; } s = MessageSearchResult->m_sFile.Data(); if (CheckBox_SEARCHFILEONLY->isChecked()) { // Checks if s matches the search pattern QString search_pattern; //for(i=0;i<=LineEdit_SEARCH->text().contains(" ");i++) for(i=0;i<=Combobox_SEARCH->currentText().count(" ");i++) { //search_pattern = LineEdit_SEARCH->text().section(" ",i,i); search_pattern = Combobox_SEARCH->currentText().section(" ",i,i); if ( !(s.contains(search_pattern,Qt::CaseInsensitive) ) ) { visible = false; } } } // split filename and path s = MessageSearchResult->m_sFile.Data(); CDir().SplitPathFile(s.toAscii().constData(),spath,sname); item->myvalue = MessageSearchResult->m_nSize; item->mycol = RESULTS_COLUMN_SIZE; item->setText(RESULTS_COLUMN_FILE,QString::fromAscii(sname.Data())); if (MessageSearchResult->m_bFolder) { item->setText(RESULTS_COLUMN_SIZE,tr("Folder")); item->setPixmap(RESULTS_COLUMN_FILE,g_pIconLoader->GetPixmap(eiFOLDER_BLUE)); } else { item->setText(RESULTS_COLUMN_SIZE,DCGuiUtils::GetSizeString(MessageSearchResult->m_nSize)); eFileTypes type = CFileManager::Instance()->GetFileType(sname); QPixmap icon; switch (type) { case eftMP3: icon = g_pIconLoader->GetPixmap(eiFILETYPE_MP3); break; case eftARCHIVE: icon = g_pIconLoader->GetPixmap(eiFILETYPE_ARCHIVE); break; case eftDOCUMENT: icon = g_pIconLoader->GetPixmap(eiFILETYPE_DOCUMENT); break; case eftAPPLICATION: icon = g_pIconLoader->GetPixmap(eiFILETYPE_APPLICATION); break; case eftPICTURE: icon = g_pIconLoader->GetPixmap(eiFILETYPE_PICTURE); break; case eftVIDEO: icon = g_pIconLoader->GetPixmap(eiFILETYPE_VIDEO); break; default: icon = g_pIconLoader->GetPixmap(eiFILETYPE_UNKNOWN); break; } item->setPixmap(RESULTS_COLUMN_FILE,icon); } item->setText(RESULTS_COLUMN_TTH,MessageSearchResult->m_sHash.Data()); item->setText(RESULTS_COLUMN_NICK,QString::fromAscii(MessageSearchResult->m_sNick.Data())); item->setText(RESULTS_COLUMN_FREESLOTS,QString().setNum(MessageSearchResult->m_nFreeSlot)); item->setText(RESULTS_COLUMN_TOTALSLOTS,QString().setNum(MessageSearchResult->m_nMaxSlot)); item->setText(RESULTS_COLUMN_HUB,QString::fromAscii(MessageSearchResult->m_sHubName.Data())); item->setText(RESULTS_COLUMN_PATH,QString::fromAscii(spath.Data())); item->setText(RESULTS_COLUMN_HOST,MessageSearchResult->m_sHubHost.Data()); item->setText(RESULTS_COLUMN_IP,MessageSearchResult->m_sSrcIP.Data()); item->setVisible(visible); item->setEnabled(visible); return res; } /** */ void DCHubSearch::GroupSearchResults( eGroupSearchResultType type ) { if ( m_eCurrentGrouping == type ) { return; } CMessageSearchResult * msg = 0; ListView_SEARCHRESULT->setUpdatesEnabled(false); ClearSearchResults(); ListView_SEARCHRESULT->setRootIsDecorated((type != egsrtNONE)); m_eCurrentGrouping = type; if ( type == egsrtNONE ) { ListView_SEARCHRESULT->hideColumn(RESULTS_COLUMN_COUNT); while ( (msg = m_pSearchResultList->Next(msg)) != 0 ) { AddSearchResult( msg, new DC_ListResult( ListView_SEARCHRESULT ) ); } } else { ListView_SEARCHRESULT->setColumnWidth( RESULTS_COLUMN_COUNT, ListView_SEARCHRESULT->columnWidth( RESULTS_COLUMN_FREESLOTS ) ); while ( (msg = m_pSearchResultList->Next(msg)) != 0 ) { ShowSearchResult( msg, ListView_SEARCHRESULT ); } ListView_SEARCHRESULT->setSorting( RESULTS_COLUMN_COUNT ); ListView_SEARCHRESULT->sort(); } ListView_SEARCHRESULT->setUpdatesEnabled(true); ListView_SEARCHRESULT->triggerUpdate(); } /** */ void DCHubSearch::DC_LogMessage( CMessageLog * MessageLog ) { AddLogMessage( QString::fromAscii(MessageLog->sMessage.Data()) ); } /** */ void DCHubSearch::AddLogMessage( QString message ) { bool bscroll; if ( TextEdit_LOG->verticalScrollBar()->maximum() == TextEdit_LOG->verticalScrollBar()->value() ) { bscroll = true; } else { bscroll = false; } message = QDateTime::currentDateTime().toString( "yyyy-MM-dd hh:mm.ss " ) + message; TextEdit_LOG->append(message); if ( bscroll ) { // QT3 TextEdit_LOG->scrollToBottom(); // QT3 TextEdit_LOG->moveCursor( Q3TextEdit::MoveEnd, false ); TextEdit_LOG->moveCursor( QTextCursor::End, QTextCursor::MoveAnchor ); } } QString DCHubSearch::GetSearchQueryString() { if ( (TreeWidget_SEARCH->topLevelItemCount() == 1) && (TreeWidget_SEARCH->topLevelItem(0) != 0) ) { return TreeWidget_SEARCH->topLevelItem(0)->text(1); } else { return tr("%1 items").arg( TreeWidget_SEARCH->topLevelItemCount() ); } } /** */ CDCMessage * DCHubSearch::GetSearchObject() { CMessageSearchUser * MessageSearchUser = 0; CMessageSearchFile * MessageSearchFile = 0; //if ( LineEdit_SEARCH->text().isEmpty() ) if ( Combobox_SEARCH->currentText().isEmpty() ) { return 0; } // set searchmode if ( ComboBox_SEARCHTYPE->currentIndex() == 0 ) { MessageSearchUser = new CMessageSearchUser(); //MessageSearchUser->m_sNick = LineEdit_SEARCH->text().toAscii().constData(); MessageSearchUser->m_sNick = Combobox_SEARCH->currentText().simplified().toAscii().constData(); return MessageSearchUser; } MessageSearchFile = new CMessageSearchFile(); MessageSearchFile->m_eFileType = eFileTypes(ComboBox_SEARCHTYPE->currentIndex()); MessageSearchFile->m_sString = Combobox_SEARCH->currentText().simplified().toAscii().constData(); if ( MessageSearchFile->m_eFileType == eftHASH ) { // fix tth MessageSearchFile->m_sString = MessageSearchFile->m_sString.ToUpper(); // cannot check TTH valid here because it comes up twice } MessageSearchFile->m_bLocal = (g_pConfig->GetMode() == ecmPASSIVE); /* CClient handles setting source to the correct nick or IP */ MessageSearchFile->m_nSize = LineEdit_SEARCHSIZE->text().toULongLong(); if ( ComboBox_SEARCHUNIT->currentIndex() == 1 ) { MessageSearchFile->m_nSize *= 1024; } else if ( ComboBox_SEARCHUNIT->currentIndex() == 2 ) { MessageSearchFile->m_nSize *= 1024*1024; } else if ( ComboBox_SEARCHUNIT->currentIndex() == 3 ) { MessageSearchFile->m_nSize *= 1024*1024*1024; } if ( ComboBox_SEARCHLIMIT->currentIndex() == 1 ) { /* disable size limit if search is "at least 0 bytes" */ MessageSearchFile->m_bSizeLimit = (MessageSearchFile->m_nSize > 0); MessageSearchFile->m_eSizeType = esstATLEAST; } else if ( ComboBox_SEARCHLIMIT->currentIndex() == 2 ) { MessageSearchFile->m_bSizeLimit = true; MessageSearchFile->m_eSizeType = esstATMOST; } else if ( ComboBox_SEARCHLIMIT->currentIndex() == 0 ) { MessageSearchFile->m_bSizeLimit = false; MessageSearchFile->m_eSizeType = esstATLEAST; } return MessageSearchFile; } /** */ void DCHubSearch::slotRefreshConnectedHubs() { ComboBox_CONNECTEDHUBS->clear(); std::map * hubmap = g_pConnectionManager->GetConnectedHubServerMap(); if ( hubmap != 0 ) { for ( std::map::const_iterator it = hubmap->begin(); it != hubmap->end(); ++it ) { // add hubname with hubhost ComboBox_CONNECTEDHUBS->addItem( QString::fromAscii((it->first + " (" + it->second +")").Data()) ); } delete hubmap; } } /** */ void DCHubSearch::UpdateHidden( bool SearchFileOnly, int FreeSlots, bool TextFilter ) { Q3ListViewItemIterator iter( ListView_SEARCHRESULT ); ListView_SEARCHRESULT->setUpdatesEnabled(false); for ( ; iter.current(); iter++ ) { bool visible = true; QString path_file; path_file = iter.current()->text(RESULTS_COLUMN_PATH) + iter.current()->text(RESULTS_COLUMN_FILE); if ( SearchFileOnly ) { // Checks if iter.current() path+filename matches the search pattern QString search_pattern; //for(int j=0; j<=LineEdit_SEARCH->text().contains(" "); j++) for(int j=0; j<=Combobox_SEARCH->currentText().count(" "); j++) { //search_pattern = LineEdit_SEARCH->text().section(" ",j,j); search_pattern = Combobox_SEARCH->currentText().section(" ",j,j); if ( !(path_file.contains(search_pattern,Qt::CaseInsensitive)) ) { visible = false; } } } // filtering with include if (TextFilter && (LineEdit_INCLUDE->text().isEmpty() == false)) { /* QString search_pattern; for(int i=0; search_pattern = LineEdit_INCLUDE->text().section(" ",i,i,QString::SectionSkipEmpty); i++) { if ( path_file.find(search_pattern,0,false) == -1 ) { visible = false; } } */ } // filtering with exclude if (TextFilter && (LineEdit_EXCLUDE->text().isEmpty() == false)) { /* QString search_pattern; for(int i=0; search_pattern = LineEdit_EXCLUDE->text().section(" ",i,i,QString::SectionSkipEmpty); i++) { if ( path_file.find(search_pattern,0,false) != -1 ) { visible = false; } } */ } if ( visible ) { if ( iter.current()->text(RESULTS_COLUMN_FREESLOTS).toInt() < FreeSlots ) { visible = false; } } iter.current()->setVisible(visible); iter.current()->setEnabled(visible); } ListView_SEARCHRESULT->setUpdatesEnabled(true); ListView_SEARCHRESULT->triggerUpdate(); } /** */ void DCHubSearch::slotTextFilterResults() { UpdateHidden( CheckBox_SEARCHFILEONLY->isChecked(), SpinBox_FREESLOTS->value(), true ); } /** */ void DCHubSearch::slotTextFilterReset() { UpdateHidden( CheckBox_SEARCHFILEONLY->isChecked(), SpinBox_FREESLOTS->value(), false ); } /** */ void DCHubSearch::slotToggledSearchFileOnly( bool chkstate ) { UpdateHidden( chkstate, SpinBox_FREESLOTS->value() ); } /** */ void DCHubSearch::slotChangedFreeSlots( int free_slots ) { UpdateHidden( CheckBox_SEARCHFILEONLY->isChecked(), free_slots ); } /** */ void DCHubSearch::slotSearchReturnPressed() { if ( m_eSearchState == egssREADY ) { startSearch(); } else { CSearchManager::Instance()->StopSearch(); PushButton_SEARCH->setEnabled(false); } } /** */ void DCHubSearch::startSearch() { CDCMessage * DCMessage; CStringList * hublist = 0; eSearchMode searchmode; eSearchType searchtype; if ( CSearchManager::Instance()->SearchType() != estyNONE ) { QMessageBox::critical( this, tr("Hub Search Error"), tr("Another search is already running!") ); return; } // clear messagelist SocketCallbackMutex.lock(); /* FIXME why not just clear the list? CList has auto-delete */ while ( (DCMessage = m_pMessageList->Next(0)) != 0 ) { m_pMessageList->Del(DCMessage); } m_pSearchResultList->Clear(); SocketCallbackMutex.unlock(); // clear searchresults ClearSearchResults(); TreeWidget_SEARCHRESULTUSER->clear(); // reset counter LCDNumber_RESULTS->display(0); ProgressBar_LOGHUBS->setMinimum(0); ProgressBar_LOGHUBS->setMaximum(100); ProgressBar_LOGHUBS->setValue(0); m_nFilteredResults = 0; // reset LineEdit_LOGTIME->clear(); LineEdit_LOGHUBS->setText("0/0"); // clear the list on new search if only one search in the list if ( (m_pSearchQueryList != 0) && (m_pSearchQueryList->Count() == 1) ) { m_pSearchQueryList->Clear(); TreeWidget_SEARCH->clear(); } // add a new search into empty list if ( (m_pSearchQueryList == 0) || (m_pSearchQueryList->Count() == 0) ) { slotAddSearchQueue(); } addHistory(); if ( (m_pSearchQueryList == 0) || (m_pSearchQueryList->Count() == 0) ) { QMessageBox::critical( this, tr("Hub Search Error"), tr("Please add a search!") ); return; } // single or multi search if ( CheckBox_MULTISEARCH->isChecked() ) { searchtype = estyMULTI; } else { searchtype = estySINGLE; } if ( (g_pConfig->GetMode() == ecmPASSIVE) && (searchtype == estyMULTI) ) { QMessageBox::critical( this, tr("Hub Search Error"), tr("Multi Search only work in active mode!") ); return; } if ( CSearchManager::Instance()->GetCallBackFunction() != m_pOurCallback ) { CSearchManager::Instance()->SetCallBackFunction( m_pOurCallback ); } // set searchmode if ( RadioButton_CONNECTEDSINGLEHUB->isChecked() ) { searchmode = esmCONNECTEDSINGLE; } else if ( RadioButton_CONNECTEDHUBS->isChecked() ) { searchmode = esmCONNECTEDALL; } else if ( RadioButton_FILTEREDHUBS->isChecked() ) { hublist = g_pHubListManager->GetFilteredHubList(); searchmode = esmPUBLIC; } else if ( RadioButton_AVAILABLEHUBS->isChecked() ) { searchmode = esmPUBLIC; } else { searchmode = esmBOOKMARK; } // set max clients CSearchManager::Instance()->MaxClients(SpinBox_MAXTHREADS->value()); // enable/disable tag CSearchManager::Instance()->EnableTag(CheckBox_ENABLETAG->isChecked()); if ( searchmode == esmCONNECTEDSINGLE ) { CString hubname; // get current hubname hubname = ComboBox_CONNECTEDHUBS->currentText().toAscii().constData(); // extract hubhost hubname = hubname.Mid( hubname.FindRev('(')+1, hubname.Length()-hubname.FindRev('(')-2 ); // check for empty hubhost if ( hubname.IsEmpty() ) { QMessageBox::critical( this, tr("Hub Search Error"), tr("Please select a connected hub.") ); return; } else { // add hubhost to the hublist hublist = new CStringList(); hublist->Add( hubname, new CString(hubname) ); AddLogMessage( tr("Search for \"%1\" on %2").arg(GetSearchQueryString(),ComboBox_CONNECTEDHUBS->currentText()) ); if ( CSearchManager::Instance()->StartSearch(searchmode,searchtype,m_pSearchQueryList,hublist) != 0 ) { QMessageBox::critical( this, tr("Hub Search Error"), tr("No connected hubs found.") ); return; } } } else if ( searchmode == esmCONNECTEDALL ) { AddLogMessage( tr("Search for \"%1\" on %2").arg(GetSearchQueryString(),tr("all connected hubs")) ); if ( CSearchManager::Instance()->StartSearch(searchmode,searchtype,m_pSearchQueryList,hublist) != 0 ) { QMessageBox::critical( this, tr("Hub Search Error"), tr("No connected hubs found.") ); return; } } else { if ( searchmode == esmPUBLIC ) { QString whichhubs; if ( hublist ) { whichhubs = tr("%1 filtered public hubs").arg(hublist->Count()); } else { whichhubs += tr("all public hubs"); } AddLogMessage( tr("Search for \"%1\" on %2").arg(GetSearchQueryString(),whichhubs) ); if ( CSearchManager::Instance()->StartSearch(searchmode,searchtype,m_pSearchQueryList,hublist) != 0 ) { delete hublist; QMessageBox::critical( this, tr("Hub Search Error"), tr("No hubs found.") ); return; } } else { AddLogMessage( tr("Search for \"%1\" on %2").arg(GetSearchQueryString(),tr("all bookmark hubs")) ); if ( CSearchManager::Instance()->StartSearch(searchmode,searchtype,m_pSearchQueryList,hublist) != 0 ) { QMessageBox::critical( this, tr("Hub Search Error"), tr("No hubs found.") ); return; } } } // update view SetSearchView( false ); m_eSearchState = egssSEARCH; Label_GLOBAL_SEARCH_STATUS->setText(tr("Search...")); setWindowTitle( tr("%1 - Searching").arg(GetSearchQueryString()) ); return; } /** */ void DCHubSearch::slotAddSearchQueue() { if ( eFileTypes(ComboBox_SEARCHTYPE->currentIndex()) == eftHASH ) { CString tth = Combobox_SEARCH->currentText().simplified().toUpper().toAscii().constData(); CByteArray dst; if ( CBase32::Decode( &dst, &tth ) != CFileHasher::HashSize() ) { if ( QMessageBox::warning( this, tr("Add search"), tr("Invalid TTH"), QMessageBox::Ignore | QMessageBox::Cancel, QMessageBox::Cancel ) == QMessageBox::Cancel ) { return; } } } CDCMessage * msg, *msg1; CMessageSearchUser * MessageSearchUser = 0; CMessageSearchFile * MessageSearchFile = 0; addHistory(); if ( m_pSearchQueryList == 0 ) { m_pSearchQueryList = new CList(); } if ( (msg = GetSearchObject()) == 0 ) { return; } if ( msg->m_eType == DC_MESSAGE_SEARCH_USER ) { MessageSearchUser = (CMessageSearchUser *)msg; } else { MessageSearchFile = (CMessageSearchFile *)msg; } msg1 = 0; while ( (msg1 = m_pSearchQueryList->Next(msg1)) != 0 ) { if ( msg1->m_eType == msg->m_eType ) { //TODO: compare if search already in the list if ( MessageSearchUser ) { if ( ((CMessageSearchUser*)msg1)->m_sNick == MessageSearchUser->m_sNick ) { return; } } else { if ( ((CMessageSearchFile*)msg1)->m_sString == MessageSearchFile->m_sString ) { return; } } } } DC_QSearchTreeWidgetItem *item = new DC_QSearchTreeWidgetItem( TreeWidget_SEARCH ); item->p_msg = msg; if ( MessageSearchUser ) { item->setText(0,tr("USER")); item->setText(1,MessageSearchUser->m_sNick.Data()); } else { item->setText(0,tr("FILE")); item->setText(1,MessageSearchFile->m_sString.Data()); } m_pSearchQueryList->Add(msg); } /** */ void DCHubSearch::slotReset() { Combobox_SEARCH->clearEditText(); LineEdit_SEARCHSIZE->setText("0"); ComboBox_SEARCHUNIT->setCurrentIndex(0); ComboBox_SEARCHLIMIT->setCurrentIndex(1); ComboBox_SEARCHTYPE->setCurrentIndex(1); SpinBox_FREESLOTS->setValue(0); TreeWidget_SEARCH->clear(); if ( m_pSearchQueryList != 0 ) { m_pSearchQueryList->Clear(); } } /** */ void DCHubSearch::slotDoubleClickedSearchResult( Q3ListViewItem * /*item*/ ) { Q3ListViewItem * curitem = ListView_SEARCHRESULT->currentItem(); /* group parents are not selectable */ if ( !curitem || (curitem->isSelectable() == false) ) { return; } if ( curitem->text(RESULTS_COLUMN_SIZE) == tr("Folder") ) { DownloadFolder( curitem ); } else { // add file as new source DCFileTool::AddFileSource( this, curitem->text(RESULTS_COLUMN_NICK).toAscii().constData(), curitem->text(RESULTS_COLUMN_HUB).toAscii().constData(), curitem->text(RESULTS_COLUMN_HOST).toAscii().constData(), (curitem->text(RESULTS_COLUMN_PATH)+curitem->text(RESULTS_COLUMN_FILE)).toAscii().constData(), curitem->text(RESULTS_COLUMN_FILE).toAscii().constData(), CString(), CString(), eltFILE, ((DC_QListViewItem*)curitem)->myvalue, curitem->text(RESULTS_COLUMN_TTH).toAscii().constData() ); } return; /* int i; CString s; CByteArray cba; QByteArray qba; DC_ListResult *item1 = (DC_ListResult*)item; QStoredDrag *sd = new QStoredDrag( "dchubsearch/searchresult", this ); s = item1->text(0).toAscii().constData(); if ( s.Data() != 0 ) cba.Append( s.Data(), s.Length() ); cba.Append("\0",1); s = s.setNum(item1->myvalue); if ( s.Data() != 0 ) cba.Append( s.Data(), s.Length() ); cba.Append("\0",1); for(i=2;i<=6;i++) { s = item1->text(i).toAscii().constData(); if ( s.Data() != 0 ) cba.Append( s.Data(), s.Length() ); cba.Append("\0",1); } qba.assign((const char*)cba.Data(),(unsigned int)cba.Size()); sd->setEncodedData(qba); QDragObject *d = sd; d->dragCopy(); */ } /** */ void DCHubSearch::slotRightButtonClickedSearchResult( Q3ListViewItem * /*item*/, const QPoint &, int column ) { QAction * chosen = 0; ulonglong size; QList selitems; Q3ListViewItem * curitem, * item; bool isadmin = false, allowDL = true, addUserCommands = true; CXml xml; DCClient * client = 0; QMap addedcommands; // user have select items ? DCGuiUtils::SelectedItems( ListView_SEARCHRESULT, selitems ); // cannot download folders yet // check only one hub is selected for user commands QString hubhost; if ( selitems.count() > 0 ) { hubhost = selitems.at(0)->text(RESULTS_COLUMN_HOST); } else { addUserCommands = false; } for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->text(RESULTS_COLUMN_SIZE) == tr("Folder") ) { allowDL = false; } if ( curitem->text(RESULTS_COLUMN_HOST) != hubhost ) { addUserCommands = false; } } // check if admin for admin-menu for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( g_pConnectionManager->IsAdmin(curitem->text(RESULTS_COLUMN_HUB).toAscii().constData(),curitem->text(RESULTS_COLUMN_HOST).toAscii().constData()) == false ) { isadmin = false; break; } else { isadmin = true; } } QMenu *m,*msort; m = new QMenu(this); QAction * dl = DCMenuHandler::addAction( m, emiDOWNLOAD, (selitems.count() > 0) && allowDL ); QAction * dl_to = DCMenuHandler::addAction( m, emiDOWNLOAD_TO, (selitems.count() > 0) && allowDL ); QAction * dl_as = DCMenuHandler::addAction( m, emiDOWNLOAD_AS, (selitems.count() > 0) && allowDL ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * dl_dir = DCMenuHandler::addAction( m, emiDOWNLOAD_FOLDER, (selitems.count() > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * repair = DCMenuHandler::addAction( m, emiDOWNLOAD_REPAIR, (selitems.count() > 0) && allowDL ); QAction * binsec = DCMenuHandler::addAction( m, emiDOWNLOAD_BIN_SECTORS, (selitems.count() > 0) && allowDL ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * dl_in = DCMenuHandler::addAction( m, emiDOWNLOAD_IN, (selitems.count() > 0) && allowDL ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * browse = DCMenuHandler::addAction( m, emiBROWSE_USER_FILES, (selitems.count() > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * copycol = DCMenuHandler::addAction( m, emiCOPY_COLUMN_TO_CLIPBOARD, (selitems.count() > 0) ); QAction * copyrow = DCMenuHandler::addAction( m, emiCOPY_ROW_TO_CLIPBOARD, (selitems.count() > 0) ); QAction * dclink = DCMenuHandler::addAction( m, emiCOPYDCFILELINK, (selitems.count() == 1) ); QAction * magnet = DCMenuHandler::addAction( m, emiCOPYMAGNETLINK, (selitems.count() > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * connhub = DCMenuHandler::addAction( m, emiCONNECT_TO_HUB, (selitems.count() > 0) ); QAction * bookmark = DCMenuHandler::addAction( m, emiADD_BOOKMARK, (selitems.count() > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); // insert submenu msort = DCMenuHandler::addMenu( m, emisGROUP, true ); QAction * nogroup = DCMenuHandler::addAction( msort, emiDISABLE_GROUP, true ); DCMenuHandler::addAction( msort, emiSEPARATOR ); QAction * byfile = DCMenuHandler::addAction( msort, emiGROUP_BY_FILE, true ); QAction * bysize = DCMenuHandler::addAction( msort, emiGROUP_BY_SIZE, true ); QAction * byhash = DCMenuHandler::addAction( msort, emiGROUP_BY_HASH, true ); QAction * bypath = DCMenuHandler::addAction( msort, emiGROUP_BY_PATH, true ); DCMenuHandler::addAction( msort, emiSEPARATOR ); QAction * bynick = DCMenuHandler::addAction( msort, emiGROUP_BY_NICK, true ); QAction * byfreeslots = DCMenuHandler::addAction( msort, emiGROUP_BY_SLOTS_FREE, true ); QAction * bytotalslots = DCMenuHandler::addAction( msort, emiGROUP_BY_SLOTS_TOTAL, true ); QAction * byip = DCMenuHandler::addAction( msort, emiGROUP_BY_IP, true ); DCMenuHandler::addAction( msort, emiSEPARATOR ); QAction * byhub = DCMenuHandler::addAction( msort, emiGROUP_BY_HUB, true ); QAction * byhost = DCMenuHandler::addAction( msort, emiGROUP_BY_HOST, true ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * kick = DCMenuHandler::addAction( m, emiKICK, isadmin && (selitems.count() > 0) ); QAction * forcemove = DCMenuHandler::addAction( m, emiFORCE_MOVE, isadmin && (selitems.count() > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * load = DCMenuHandler::addAction( m, emiLOAD ); QAction * save = DCMenuHandler::addAction( m, emiSAVE, (m_pSearchResultList->Count() > 0) ); if ( addUserCommands ) { curitem = selitems.first(); client = g_pConnectionManager->GetClientForHub( curitem->text(RESULTS_COLUMN_HUB).toAscii().constData(), curitem->text(RESULTS_COLUMN_HOST).toAscii().constData() ); if ( client != 0 ) { addedcommands = client->AddMenuCommands( m, euccSearch ); } } chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } else if ( chosen == dclink ) { CString s; for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); s += "DCFILE://"; s += xml.ToUTF8(curitem->text(RESULTS_COLUMN_HOST).toAscii().constData()); s += "?file="; s += CHttp::Encode((curitem->text(RESULTS_COLUMN_PATH) + curitem->text(RESULTS_COLUMN_FILE)).toAscii().constData()); s += "&size="; s += CString::number(((DC_QListViewItem*)curitem)->myvalue); s += "&nick="; s += CHttp::Encode(curitem->text(RESULTS_COLUMN_NICK).toAscii().constData()); s += "&hub="; s += CHttp::Encode(curitem->text(RESULTS_COLUMN_HUB).toAscii().constData()); if ( !(curitem->text(RESULTS_COLUMN_TTH).isEmpty()) ) { s += "&hash="; s += CHttp::Encode(curitem->text(RESULTS_COLUMN_TTH).toAscii().constData()); } s += "\n"; } QApplication::clipboard()->setText(QString::fromAscii(s.Data()).trimmed()); } else if ( chosen == magnet ) { //magnet:?xt=urn:tree:tiger:EOSA5AGTL5SD3VWCF3R2OH2WMGXV3S3R7SYN4YA&xl=708780032&dn=FC-6-i386-disc1.iso QString text; for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); text += "magnet:?xt=urn:tree:tiger:"; text += curitem->text(RESULTS_COLUMN_TTH); // get size from myvalue used for numeric sorting text += "&xl="; text += QString().setNum(((DC_QListViewItem*)curitem)->myvalue); text += "&dn="; QString filename = QString(QUrl::toPercentEncoding(curitem->text(RESULTS_COLUMN_FILE))); filename.replace("%20","+"); text += filename; text += "\n"; } // remove trailing "\n" text = text.trimmed(); QApplication::clipboard()->setText(text); } else if ( (chosen == dl) || (chosen == dl_as) || (chosen == dl_to) || (chosen == repair) || (chosen == binsec) ) { QString localrootpath; QString localname; // select downloadfolder for all selected files if ( chosen == dl_to ) { localrootpath = QFileDialog::getExistingDirectory( this, tr("Select download folder") ); if ( localrootpath.isEmpty() ) return; } for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); size = ((DC_QListViewItem *)curitem)->myvalue; localname = curitem->text(RESULTS_COLUMN_FILE); if ( (chosen == dl_as) || (chosen == repair) || (chosen == binsec) ) { localrootpath = QFileDialog::getSaveFileName( this, tr("Select file for")+" "+localname, localname ); if ( localrootpath.isEmpty() ) return; QFileInfo fi(localrootpath); localrootpath = fi.path(); localname = fi.fileName(); if ( (localrootpath.isEmpty()) || (localname.isEmpty()) ) return; } // add transfer to the waitlist eRepairType repairtype; if ( chosen == repair ) { repairtype = ertBYTES; } else if ( chosen == binsec ) { repairtype = ertSECTORS; } else { repairtype = ertNONE; } DCFileTool::CheckFile( this, curitem->text(RESULTS_COLUMN_NICK).toAscii().constData(), curitem->text(RESULTS_COLUMN_HUB).toAscii().constData(), curitem->text(RESULTS_COLUMN_HOST).toAscii().constData(), (curitem->text(RESULTS_COLUMN_PATH)+curitem->text(RESULTS_COLUMN_FILE)).toAscii().constData(), localname.toAscii().constData(), CString(), localrootpath.toAscii().constData(), eltFILE, size, curitem->text(RESULTS_COLUMN_TTH).toAscii().constData(), false, repairtype ); } // redraw the list ListView_SEARCHRESULT->triggerUpdate(); } else if ( chosen == dl_in ) { QString localrootpath; QString localname; QString localpath; curitem = selitems.first(); size = ((DC_QListViewItem *)curitem)->myvalue; QString tth = curitem->text(RESULTS_COLUMN_TTH); // all files need equal size and TTH for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( size != ((DC_QListViewItem *)curitem)->myvalue ) return; if ( tth != curitem->text(RESULTS_COLUMN_TTH) ) return; } if ( DCFileTool::SelectFileSource( this, size, tth, localname, localrootpath, localpath ) == false ) { return; } for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); // add transfer to the waitlist DCFileTool::CheckFile( this, curitem->text(RESULTS_COLUMN_NICK).toAscii().constData(), curitem->text(RESULTS_COLUMN_HUB).toAscii().constData(), curitem->text(RESULTS_COLUMN_HOST).toAscii().constData(), (curitem->text(RESULTS_COLUMN_PATH)+curitem->text(RESULTS_COLUMN_FILE)).toAscii().constData(), localname.toAscii().constData(), localpath.toAscii().constData(), localrootpath.toAscii().constData(), eltFILE, size, curitem->text(RESULTS_COLUMN_TTH).toAscii().constData(), true); } // redraw the list ListView_SEARCHRESULT->triggerUpdate(); } else if ( chosen == browse ) { /** add transfer to the waitlist */ CString empty; for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); CString hubname(curitem->text(RESULTS_COLUMN_HUB).toAscii().constData()); CString hubhost(curitem->text(RESULTS_COLUMN_HOST).toAscii().constData()); if ( g_pConnectionManager->IsHubOnline(hubname,hubhost) == ehsNONE ) { switch( QMessageBox::warning( this, tr("Filelist download"), tr("Not connected to required hub!"), tr("Connect"), tr("Cancel"), 0, 0, 1 ) ) { case 0: g_pConnectionManager->Connect(hubname,hubhost); break; case 1: break; } } g_pTransferView->DLM_QueueAdd( curitem->text(RESULTS_COLUMN_NICK).toAscii().constData(), hubname, hubhost, DC_USER_FILELIST, DC_USER_FILELIST, (curitem->text(RESULTS_COLUMN_PATH)+curitem->text(RESULTS_COLUMN_FILE)).toAscii().constData(), empty, eltBUFFER, 0, 0, 0, empty ); } } else if ( chosen == dl_dir ) { for ( int i = 0; i < selitems.size(); i++ ) { DownloadFolder( selitems.at(i) ); } } else if ( chosen == copycol ) { QString s; for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); s += curitem->text(column); s += "\n"; } s = s.trimmed(); QApplication::clipboard()->setText(s); } else if ( chosen == copyrow ) { int idx; QString s; for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); for( idx = 0; idx < ListView_SEARCHRESULT->columns(); idx++ ) { s += curitem->text(idx); s += " "; } s += "\n"; } s = s.trimmed(); QApplication::clipboard()->setText(s); } else if ( chosen == connhub ) { // connect to the hub for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); g_pConnectionManager->Connect( curitem->text(RESULTS_COLUMN_HUB).toAscii().constData(), curitem->text(RESULTS_COLUMN_HOST).toAscii().constData() ); } } else if ( chosen == bookmark ) { // bookmark this hub for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); g_pHubListManager->AddBookmark( curitem->text(RESULTS_COLUMN_HUB), curitem->text(RESULTS_COLUMN_HOST), QString() ); } } else if ( chosen == nogroup ) { GroupSearchResults( egsrtNONE ); } else if ( chosen == byfile ) { GroupSearchResults( egsrtFILE ); } else if ( chosen == bysize ) { GroupSearchResults( egsrtSIZE ); } else if ( chosen == byhash ) { GroupSearchResults( egsrtHASH ); } else if ( chosen == bynick ) { GroupSearchResults( egsrtNICK ); } else if ( chosen == byfreeslots ) { GroupSearchResults( egsrtSLOTS_FREE ); } else if ( chosen == bytotalslots ) { GroupSearchResults( egsrtSLOTS_TOTAL ); } else if ( chosen == byhub ) { GroupSearchResults( egsrtHUB ); } else if ( chosen == bypath ) { GroupSearchResults( egsrtPATH ); } else if ( chosen == byhost ) { GroupSearchResults( egsrtHOST ); } else if ( chosen == byip ) { GroupSearchResults( egsrtIP ); } else if ( chosen == kick ) { // TODO: need a patch to kick a user only one time QString message; if ( ! DCClient::GetOPKickMessage( message, this ) ) { return; } // kick all user while( !selitems.isEmpty() ) { // take and remove this item from the list item = selitems.takeFirst(); // kick this user g_pConnectionManager->OPKick( item->text(RESULTS_COLUMN_HUB), item->text(RESULTS_COLUMN_HOST), item->text(RESULTS_COLUMN_NICK), message ); // search for same entry and remove it for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( (curitem->text(RESULTS_COLUMN_NICK) == item->text(RESULTS_COLUMN_NICK)) && (curitem->text(RESULTS_COLUMN_HUB) == item->text(RESULTS_COLUMN_HUB)) && (curitem->text(RESULTS_COLUMN_HOST) == item->text(RESULTS_COLUMN_HOST)) ) { selitems.removeAt(i); i--; } } } } else if ( chosen == forcemove ) { // TODO: need a patch to move a user only one time QString message, host; if ( ! DCClient::GetOPForceMoveMessage( message, host, this ) ) { return; } // force move all user while( !selitems.isEmpty() ) { // take and remove this item from the list item = selitems.takeFirst(); // force move this user g_pConnectionManager->OPForceMove( item->text(RESULTS_COLUMN_HUB), item->text(RESULTS_COLUMN_HOST), item->text(RESULTS_COLUMN_NICK), message, host ); // search for same entry and remove it for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( (curitem->text(RESULTS_COLUMN_NICK) == item->text(RESULTS_COLUMN_NICK)) && (curitem->text(RESULTS_COLUMN_HUB) == item->text(RESULTS_COLUMN_HUB)) && (curitem->text(RESULTS_COLUMN_HOST) == item->text(RESULTS_COLUMN_HOST)) ) { selitems.removeAt(i); i--; } } } } else if ( chosen == save ) { QString filename = QFileDialog::getSaveFileName( this, tr("Choose a filename to save under") ); if ( !filename.isEmpty() ) { QFile file(filename); if ( file.open( QIODevice::WriteOnly ) ) { CIconv ciconv( g_pConfig->GetLocalEncoding(), g_pConfig->GetRemoteEncoding() ); CString s; CMessageSearchResult * msr = 0; while ( (msr = m_pSearchResultList->Next(msr)) != 0 ) { s = "$SR "; s += ciconv.encode(msr->m_sNick); s += " "; s += ciconv.encode(msr->m_sFile); if ( msr->m_bFolder == false ) { s += 0x05; s += CString::number(msr->m_nSize); } s += " "; s += CString::number(msr->m_nFreeSlot); s += "/"; s += CString::number(msr->m_nMaxSlot); s += 0x05; if ( msr->m_sHash.IsEmpty() ) { s += ciconv.encode(msr->m_sHubName); } else { s += "TTH:"; s += msr->m_sHash; } s += " ("; s += msr->m_sHubHost; s += ")|\n"; file.write(s.Data(),s.Length()); } file.close(); } } } else if ( chosen == load ) { QString filename = QFileDialog::getOpenFileName( this, tr("Choose a file to open") ); if ( !filename.isEmpty() ) { QFile file(filename); if ( file.open( QIODevice::ReadOnly ) ) { m_pSearchResultList->Clear(); ListView_SEARCHRESULT->setUpdatesEnabled(false); ClearSearchResults(); QByteArray buffer; buffer.resize(4096); CString m; int p; CDCMessage * dcmessage = 0; CMessageHandler MessageHandler; while( file.readLine(buffer.data(),buffer.size()) != -1 ) { m = buffer.constData(); p = 0; if ( MessageHandler.Parse(&m,p,&dcmessage) == DC_MESSAGE_SEARCHRESULT ) { m_pSearchResultList->Add( (CMessageSearchResult*) dcmessage ); } } file.close(); eGroupSearchResultType current = m_eCurrentGrouping; // must change m_eCurrentGrouping to anything else // otherwise GroupSearchResults will do nothing if ( m_eCurrentGrouping == egsrtNONE ) { m_eCurrentGrouping = egsrtFILE; } else { m_eCurrentGrouping = egsrtNONE; } GroupSearchResults( current ); ListView_SEARCHRESULT->setUpdatesEnabled(true); ListView_SEARCHRESULT->triggerUpdate(); LCDNumber_RESULTS->display( (int) m_pSearchResultList->Count() ); } } } else if ( addedcommands.contains( chosen ) ) { DC_UserMenuCommand * umc = addedcommands[ chosen ]; QString usercommand = umc->m_sCommand; QString origUserCommand = usercommand; QStringList doneNicks; QString fullfilename, filesize, filesizeshort, filetth, filetype; for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); // check if already done this nick if ( (umc->m_nType == euctRawOnce) && doneNicks.contains(curitem->text(RESULTS_COLUMN_NICK)) ) { continue; } usercommand = client->replaceCommandTags( origUserCommand, curitem->text(RESULTS_COLUMN_NICK) ); if ( usercommand.isEmpty() ) { // had a %[line:reason] but dialog was cancelled continue; } fullfilename = curitem->text(RESULTS_COLUMN_PATH); if ( (!fullfilename.isEmpty()) && (fullfilename.right(1) != "\\") ) { fullfilename += "\\"; } fullfilename += curitem->text(RESULTS_COLUMN_FILE); if ( curitem->text(RESULTS_COLUMN_SIZE) == tr("Folder") ) { filesize = tr("Unknown"); filesizeshort = tr("Unknown"); filetth = tr("None"); filetype = tr("Directory"); } else { filesize.setNum(((DC_QListViewItem*)curitem)->myvalue); filesizeshort = curitem->text(RESULTS_COLUMN_SIZE); filetth = curitem->text(RESULTS_COLUMN_TTH); filetype = tr("File"); } usercommand.replace( "%[file]", fullfilename ); usercommand.replace( "%[fileFN]", fullfilename ); usercommand.replace( "%[filesize]", filesize ); usercommand.replace( "%[fileSI]", filesize ); usercommand.replace( "%[filesizeshort]", filesizeshort ); usercommand.replace( "%[fileSIshort]", filesizeshort ); usercommand.replace( "%[tth]", filetth ); usercommand.replace( "%[fileTR]", filetth ); usercommand.replace( "%[type]", filetype ); client->SendString( usercommand.toAscii().constData() ); doneNicks << curitem->text(RESULTS_COLUMN_NICK); } } } /** */ void DCHubSearch::slotContextMenuSearch( const QPoint & ) { // TODO: handle delete,edit searches (multiselection support) QAction * chosen = 0; QList selitems = TreeWidget_SEARCH->selectedItems(); QMenu * m = new QMenu(this); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE, selitems.count() > 0 ); QAction * clear = DCMenuHandler::addAction( m, emiCLEAR ); chosen = m->exec(QCursor::pos()); delete m; if ( chosen == remove ) { RemoveSelectedSearch(&selitems); } else if ( chosen == clear ) { if ( m_pSearchQueryList ) m_pSearchQueryList->Clear(); TreeWidget_SEARCH->clear(); } } /** */ void DCHubSearch::RemoveSelectedSearch( QList * list ) { QList selitems; DC_QSearchTreeWidgetItem * curitem; if ( !list ) { selitems = TreeWidget_SEARCH->selectedItems(); if ( selitems.size() == 0 ) { return; } list = &selitems; } for ( int i = 0; i < list->size(); i++ ) { curitem = (DC_QSearchTreeWidgetItem *)list->at(i); if ( m_pSearchQueryList ) m_pSearchQueryList->Del(curitem->p_msg); delete curitem; } } /** Clears the history of search strings */ void DCHubSearch::slotPurgeHistory() { Combobox_SEARCH->clear(); slotReset(); m_pSearchHistory->Clear(); TextEdit_LOG->clear(); } /** Disable size entry if size limit not used */ void DCHubSearch::slotSizeLimitChanged( int index ) { if ( index == 0 ) { LineEdit_SEARCHSIZE->setEnabled(false); ComboBox_SEARCHUNIT->setEnabled(false); } else { LineEdit_SEARCHSIZE->setEnabled(true); ComboBox_SEARCHUNIT->setEnabled(true); } } /** */ void DCHubSearch::SetSearchForFile( QString file, eFileTypes filetype, int sizepos, ulonglong size ) { Combobox_SEARCH->setEditText(file); ComboBox_SEARCHUNIT->setCurrentIndex(0); LineEdit_SEARCHSIZE->setText(QString().setNum(size)); ComboBox_SEARCHLIMIT->setCurrentIndex(sizepos); ComboBox_SEARCHTYPE->setCurrentIndex(filetype); TabWidget_SEARCH_PARAMETERS->setCurrentIndex(0); } /** */ void DCHubSearch::StartSearchWithPrompt() { if ( (m_eSearchState == egssREADY) || (QMessageBox::question( this, tr("Hub Search"), tr("Another search is running.\nStop other search?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No ) == QMessageBox::Yes) ) { slotSearchReturnPressed(); } } /** */ void DCHubSearch::ClearSearchResults() { delete m_pEmptyGroup; m_pEmptyGroup = 0; m_GroupHash.clear(); ListView_SEARCHRESULT->clear(); } /** */ void DCHubSearch::DownloadFolder( Q3ListViewItem * item ) { CString hubname(item->text(RESULTS_COLUMN_HUB).toAscii().constData()); CString hubhost(item->text(RESULTS_COLUMN_HOST).toAscii().constData()); if ( g_pConnectionManager->IsHubOnline(hubname,hubhost) == ehsNONE ) { int ret = QMessageBox::warning( this, tr("Folder download"), tr("Not connected to required hub!"), tr("Connect"), tr("Cancel"), 0, 0, 1 ); if ( ret == 0 ) { g_pConnectionManager->Connect(hubname,hubhost); } } CString dir(item->text(RESULTS_COLUMN_PATH).toAscii().constData()); if ( item->text(RESULTS_COLUMN_SIZE) == tr("Folder") ) { dir += item->text(RESULTS_COLUMN_FILE).toAscii().constData(); } g_pTransferView->DLM_QueueAdd( item->text(RESULTS_COLUMN_NICK).toAscii().constData(), hubname, hubhost, DC_USER_FILELIST, DC_USER_FILELIST, dir, dir, eltBUFFER, 0, 0, 0, CString() ); } valknut-0.4.9/valknut/publichubsproxy.cpp0000664000076400007640000000574011100337105016775 0ustar ejsejs/*************************************************************************** publichubsproxy.cpp - Proxy model for public hubs filtering ------------------- begin : Mon Sep 29 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "publichubsproxy.h" /* for DC_HubFilterObject */ #include "dcconfig.h" /** */ PublicHubsProxy::PublicHubsProxy( QObject * parent ) : QSortFilterProxyModel( parent ) { /* these could also be put in the initialisation section */ minusers = 0; inName = false; inAddress = false; inDesc = false; } /** */ PublicHubsProxy::~PublicHubsProxy() { /* nothing */ } /** */ void PublicHubsProxy::setFilter( DC_HubFilterObject * filter ) { if ( filter == 0 ) { minusers = 0; inName = false; inAddress = false; inDesc = false; /* the regexp is not used when no columns are set */ setFilterRegExp( QRegExp(QString(),filterCaseSensitivity()) ); } else { minusers = filter->m_nUser; inName = filter->m_bName; inAddress = filter->m_bServer; inDesc = filter->m_bDescription; setFilterRegExp( QRegExp(filter->m_sContains,filterCaseSensitivity()) ); } } /** */ bool PublicHubsProxy::filterAcceptsRow( int source_row, const QModelIndex & source_parent ) const { const int role = filterRole(); const QAbstractItemModel * sourcemodel = sourceModel(); const QModelIndex hubusers = sourcemodel->index( source_row, 3, source_parent ); if ( sourcemodel->data(hubusers,role).toUInt() < minusers ) { return false; } if ( inName || inAddress || inDesc ) { const QRegExp filter = filterRegExp(); if ( inName ) { const QModelIndex hubname = sourcemodel->index( source_row, 0, source_parent ); if ( sourcemodel->data(hubname,role).toString().contains(filter) ) { return true; } } if ( inAddress ) { const QModelIndex hubaddr = sourcemodel->index( source_row, 1, source_parent ); if ( sourcemodel->data(hubaddr,role).toString().contains(filter) ) { return true; } } if ( inDesc ) { const QModelIndex hubdesc = sourcemodel->index( source_row, 2, source_parent ); if ( sourcemodel->data(hubdesc,role).toString().contains(filter) ) { return true; } } return false; } return true; } valknut-0.4.9/valknut/dcconfig.h0000664000076400007640000010733511133210065014760 0ustar ejsejs/*************************************************************************** dcconfig.h - description ------------------- begin : Fri Mar 1 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCCONFIG_H #define DCCONFIG_H /** *@author Mathias Küster */ #include #include #include #include #include #include // the typedef in dcfriendobject.h prevents the forward // declaration of "class FriendMap;" from working #include "dcfriendobject.h" #include #define USERLIST_XPM_COLUMNS 9 #define USERLIST_XPM_ROWS 32 #define USERLIST_ICON_SIZE 16 /** */ enum eUserSound { eusCONNECT, eusDISCONNECT, eusSEND, eusRECEIVE, eusFIRSTRECEIVE, eusNICKMENTIONED }; /** */ enum eTimeStamp { etsPRIVATECHAT, etsHUBCHAT }; /** */ enum eTransferViewOptions { etvoCHUNKPERCENT, etvoFILEPERCENT, etvoCHUNKSIZE, etvoFILESIZE, etvoDOWNLOADRATESINGLE, etvoELAPSEDTIMESINGLE, etvoDOWNLOADRATEMULTI, etvoELAPSEDTIMEMULTI }; /** */ enum eLogChatOptions { elcoENABLELOGGING, elcoAPPENDDATE, elcoAPPENDHUBNAME, elcoAPPENDHUBHOST, elcoDISABLEPUBLICCHAT, elcoENABLENICKNAMEFILTER, elcoNICKNAMEFILTER_ENABLELOGGING }; /** */ enum eChatColor { eccCHATTIMESTAMP=0, eccCHATLOCALNICK, eccCHATLOCALTEXT, eccCHATREMOTENICK, eccCHATREMOTETEXT, eccCHATSTATUSNICK, eccCHATSTATUSTEXT, eccPUBLICCHATTIMESTAMP, eccPUBLICCHATLOCALNICK, eccPUBLICCHATLOCALTEXT, eccPUBLICCHATREMOTENICK, eccPUBLICCHATREMOTETEXT, eccPUBLICCHATSTATUSNICK, eccPUBLICCHATSTATUSTEXT, eccPUBLICPRIVATECHATNICK, eccPUBLICPRIVATECHATTEXT, eccCHATSAY, eccPUBLICCHATMENICK, eccOPNICK }; /* Download not supported */ enum eMagnetAction { eMagnetPrompt=0, eMagnetSearch, eMagnetDownload, eMagnetNothing }; /* External magnet links not handled */ enum eMagnetSource { eChatMagnet=0, eExternalMagnet }; /* Default application font. Needed from main.cpp too */ #define DEFAULT_APP_FONT "Helvetica,12,-1,5,50,0,0,0,0,0" class QPixmap; class QProcess; class QTextDocument; class CXml; class CMessageMyInfo; /** */ typedef QMap StringMap; /** */ typedef QMap SettingMap; /** */ class DC_EmoticonObject { public: /** construtor */ DC_EmoticonObject() {}; /** destructor */ ~DC_EmoticonObject() {}; /** */ QString m_Text; /** */ int left,top,right,bottom; /** */ int m_nID; }; /** */ class DC_HubFilterObject { public: /** construtor */ DC_HubFilterObject() { m_nUser = 0; m_bName = false; m_bServer = false; m_bDescription = false; }; /** destructor */ ~DC_HubFilterObject() {}; /** */ QString m_sFilterName; /** */ QString m_sContains; /** */ unsigned int m_nUser; /** */ bool m_bName; /** */ bool m_bServer; /** */ bool m_bDescription; }; /** Stores a user command for custom menus */ class DC_UserMenuCommand { public: /** */ DC_UserMenuCommand() { m_nContext = 0; m_nType = -1; }; /** */ ~DC_UserMenuCommand() {}; /** * Command type. Separator, Raw or RawOnce. */ int m_nType; /** The name of the menu command */ QString m_sName; /** The command to send to the hub */ QString m_sCommand; /** Context is which menu(s) to put the command into */ int m_nContext; /** Hub IP / DNS */ QString m_sHubIP; }; /** Stores a user custom chat command */ class DC_UserChatCommand { public: /** */ DC_UserChatCommand() {}; /** */ ~DC_UserChatCommand() {}; /** Name of the command */ QString m_sName; /** Command string to run */ QString m_sCommand; }; /** Stores an auto response trigger and response pair */ class DC_AutoResponseObject { public: /** */ DC_AutoResponseObject() { m_bCaseSensitive = false; }; /** */ ~DC_AutoResponseObject() {}; /** Trigger QT regexp */ QString m_sTrigger; /** Response */ QString m_sResponse; /** Case sensitive or not */ bool m_bCaseSensitive; }; class DCConfig : public QObject, public CConfig { Q_OBJECT public: /** construtor */ DCConfig( CString configpath = CString() ); /** destructor */ virtual ~DCConfig(); /** */ int Load(); /** */ int Save(); /** */ int LoadDCGui(); /** */ int SaveDCGui(); /** */ void ParseDCGuiConfig( CXml * xml ); /** */ int LoadDCHubFilter( QMap * map ); /** */ int SaveDCHubFilter( QMap * map ); /** */ int LoadDCFriendList( FriendMap * map ); /** */ int SaveDCFriendList( FriendMap * map ); /** */ bool GetOpenPrivateChatWindow() const; /** */ void SetOpenPrivateChatWindow( bool b ); /** */ long GetChatMaxParagraph() const; /** */ void SetChatMaxParagraph( long i ); /** */ bool GetChatShowJoinsAndParts() const; /** */ void SetChatShowJoinsAndParts( bool b ); /** */ bool GetChatShowJoinsAndPartsOnlyFav() const; /** */ void SetChatShowJoinsAndPartsOnlyFav( bool b ); /** */ eUnit GetUnit() const; /** */ void SetUnit( eUnit unit ); /** */ bool GetTransferViewOptions( eTransferViewOptions e ) const; /** */ void SetTransferViewOptions( eTransferViewOptions e, bool b ); /** */ QString GetTheme() const; /** */ void SetTheme( QString theme ); /** * 0 is Ctrl + Enter * 1 is Enter * 2 is Alt + Enter * 3 is Alt + S */ int GetSendChat() const; /** */ void SetSendChat( int index ); /** */ QString GetLanguageFile() const; /** */ void SetLanguageFile( QString languagefile ); /** */ bool GetTabBar() const; /** */ void SetTabBar( bool b ); /** */ bool GetToolBar() const; /** */ void SetToolBar( bool b ); /** */ bool GetStatusBar() const; /** */ void SetStatusBar( bool b ); /** */ bool GetUserListRightAlignment() const; /** */ void SetUserListRightAlignment( bool b ); /** */ QPixmap * GetUserIcon( CMessageMyInfo * myinfo ); /** */ void PlaySound( eUserSound usersound ); /** */ void PlaySound( QString file ); /** */ void SetAppFont( QString font ); /** */ QString GetAppFont() const; /** Set enable use of AppFont or use default font */ void SetUseCustomFont( bool b ); /** Get enable use of AppFont or use default font */ bool GetUseCustomFont() const; /** */ bool GetMap( QString name, StringMap *& map ); /** */ void SetAppGeometry( int width, int height ); /** */ void GetAppGeometry( int &width, int &height ); /** */ bool GetSoundDisabled() const; /** */ void SetSoundDisabled( bool disabled ); /** */ bool GetSoundDisabledAway() const; /** */ void SetSoundDisabledAway( bool disabled ); /** */ bool GetExternalSoundPlayer() const; /** */ void SetExternalSoundPlayer( bool externalsoundplayer ); /** */ QString GetExternalPlayer() const; /** */ void SetExternalPlayer( QString externalplayer ); /** */ QString GetSoundFile( eUserSound usersound ); /** */ void SetSoundFile( eUserSound usersound, QString soundfile ); /** */ bool GetSoundEnabled( eUserSound usersound ); /** */ void SetSoundEnabled( eUserSound usersound, bool enabled ); /** */ void SetTimeStamp( eTimeStamp timestamp, bool enabled ); /** */ bool GetTimeStamp( eTimeStamp timestamp ); /** */ void SetLogChatOption( eLogChatOptions elco, bool enabled ); /** */ bool GetLogChatOption( eLogChatOptions elco ); /** */ void SetLogChatNickNameFilter( QStringList list ); /** */ QStringList GetLogChatNickNameFilter(); /** */ bool CheckLogChatNickNameFilter( QString nick ); /** */ bool GetShowStatusMessage() const; /** */ void SetShowStatusMessage( bool disabled ); /** */ bool GetShowTransferWin() const; /** */ void SetShowTransferWin( bool disabled ); /** */ bool GetSendHidePrivateChatToPublicChat() const; /** */ void SetSendHidePrivateChatToPublicChat( bool b ); /** */ bool GetEnableEmoticons() const; /** */ void SetEnableEmoticons( bool b ); /** */ bool GetAutoAwayMode() const; /** */ void SetAutoAwayMode( bool b ); /** */ unsigned int GetAutoAwayTime() const; /** */ void SetAutoAwayTime( unsigned int n ); /** */ virtual void SetAwayMode( eUserAwayMode mode ); /** */ int GetChatMessageMaxLines() const; /** */ void SetChatMessageMaxLines( int i ); /** */ int GetFloodCount() const; /** */ void SetFloodCount( int i ); /** */ bool GetFloodOpKick() const; /** */ void SetFloodOpKick( bool b ); /** */ bool GetThemeSupport() const; /** */ void SetThemeSupport( bool b ); /** */ QString GetBackgroundPixmap() const; /** */ void SetBackgroundPixmap( QString s ); /** */ QString GetBrowser() const; /** */ void SetBrowser( QString s ); /** Open the URL using the browser settings */ void OpenURL( QString url ); /** */ bool GetCustomBrowser() const; /** */ void SetCustomBrowser( bool b ); /** */ unsigned int GetDefaultDownloadMode() const; /** 0:ask, 1:single, 2:multi */ void SetDefaultDownloadMode( unsigned int n, bool emitsig = false ); /** */ bool GetEnableTray() const; /** */ void SetEnableTray( bool b ); /** */ bool GetQueryOnExit() const; /** */ void SetQueryOnExit( bool b ); /** */ bool GetQueryOnFileDelete() const; /** */ void SetQueryOnFileDelete( bool b ); /** */ bool GetShowChatSendButton() const; /** */ void SetShowChatSendButton( bool b ); /** */ bool GetShowChatInTab() const; /** */ void SetShowChatInTab( bool b ); /** */ QString GetChatColor( eChatColor type ) const; /** */ void SetChatColor( eChatColor type, QString s ); /** */ QString GetChatBackgroundColor() const; /** */ bool GetChatBackgroundColorEnabled() const; /** */ void SetChatBackgroundColor( bool enabled, QString color ); /** * 0 = minimized * 1 = normal * 2 = maximized */ int GetOpenClientWindows() const; /** */ void SetOpenClientWindows( int i ); /** */ bool InitMimeSourceFactory(); /** */ QList * EmoticonList(); /** */ QImage & GetEmoticonImage(); /** adds emoticon resources to the text document */ bool AddEmoticons( QTextDocument * document ); /** */ QString GetUserPhotoFileName() const; /** */ void SetUserPhotoFileName( QString s ); /** */ QString GetValknutDataPath() const; /** */ void SetValknutDataPath( QString s ); /** Get the list of user chat commands, caller must delete them */ long GetUserChatCommands( QList * list ); /** Set the list of user chat commands, transfers ownership of the objects to g_pConfig */ void SetUserChatCommands( QList * list ); /** * Instead of copying the list of commands to a DCChat and then deleting them all, * send the text to g_pConfig and get the text with the commands substituted. */ QString ReplaceUserChatCommands( QString text ); /** Get a copy of the list of user menu commands, caller must delete them */ long GetUserMenuCommands( QMap * list ); /** Get pointers to the actual user menu commands */ long GetUserMenuCommandsDirect( QMap * list ); /** Set the list of user menu commands, transfers ownership of the objects to g_pConfig */ void SetUserMenuCommands( QMap * list ); /** Gets the theme for application icons */ QString GetApplicationIconTheme() const; /** Sets the theme for application icons */ void SetApplicationIconTheme( QString s ); /** Gets the theme for emoticons */ QString GetEmoticonTheme() const; /** Sets the theme for emoticons */ void SetEmoticonTheme( QString s ); /** Gets the theme for userlist icons */ QString GetUserListIconTheme() const; /** * Sets the theme for userlist icons. * Clears all cached pixmaps and loads the new image * if the theme has changed. */ void SetUserListIconTheme( QString s ); /** Gets the regexp of nicks to not open chat windows for */ QString GetSuppressedNicks() const; /** Sets the regexp of nicks to not open chat windows for */ void SetSuppressedNicks( QString s ); /** * Gets the action for double clicking a user * 0 is private chat * 1 is download filelist */ int GetDoubleClickAction() const; /** Sets the action for double clicking a user */ void SetDoubleClickAction( int index ); /** Gets if auto responder is enabled for main chat */ bool GetAutoResponderEnabled() const; /** Enables/Disables the auto responder for main chat */ void SetAutoResponderEnabled( bool b ); /** Gets the list of auto response triggers and responses, the caller must delete them */ long GetAutoResponses( QList * list ); /** Sets the list of auto response triggers and responses, transfers ownership of the objects to g_pConfig */ void SetAutoResponses( QList * list ); /** Gets the minimum time between auto-responses */ long GetAutoResponseDelay() const; /** Sets the minimum time between auto-responses */ void SetAutoResponseDelay( long n ); /** Gets list of nicks to not auto respond to */ QString GetAutoResponseIgnores() const; /** Sets list of nicks to not auto respond to */ void SetAutoResponseIgnores( QString s ); /** Gets if the auto responder is enabled for PMs */ bool GetAutoResponderEnabledForPM() const; /** Enables/Disabled the auto responder for private messages */ void SetAutoResponderEnabledForPM( bool b ); /** Gets filelist naming scheme version * This is set internally so that the filelists are renamed * once only when upgrading to 0.3.10. * once only when upgrading to 0.3.17. * * 0 = 0.3.8 or earlier integers * 1 = 0.3.9 base64 encoded * 2 = 0.3.10 human readable nick-hubhost_port.filelist * 3 = setting was abused for searchindex changes * 4 = 0.3.17 human readable nick@hubhost_port.filelist */ int GetFilelistNamingSchemeVersion() const; /** Sets filelist naming scheme version */ void SetFilelistNamingSchemeVersion( int i ); /** Renames the filelists */ void RenameStoredFilelists(); /** Gets QMainWindow saved state */ QByteArray GetQMainWindowState() const; /** Sets QMainWindow state */ void SetQMainWindowState( QByteArray b ); /** Get show folders in right pane of filelist browser */ bool GetFoldersInRightPane() const; /** Set show folders in right pane of filelist browser */ void SetFoldersInRightPane( bool b ); /** Get show subfolder sizes in left pane of filelist browser */ bool GetFolderSizesInLeftPane() const; /** Set show subfolder sizes in left pane of filelist browser */ void SetFolderSizesInLeftPane( bool b ); /** Get sort folders in right pane on top */ bool GetFoldersInRightPaneOnTop() const; /** Set sort folders in right pane on top */ void SetFoldersInRightPaneOnTop( bool b ); /** Get double click right pane folders opens them */ bool GetOpenFoldersInRightPane() const; /** Set double click right pane folders opens them */ void SetOpenFoldersInRightPane( bool b ); /** Get send unknown /commands as chat */ bool GetSendUnknownCommandsAsChat() const; /** Set send unknown /commands as chat */ void SetSendUnknownCommandsAsChat( bool b ); /** Get allowed unknown commands */ QString GetAllowedUnknownCommands() const; /** Set allowed unknown commands */ void SetAllowedUnknownCommands( QString s ); /** Get fix hub details in search results */ bool GetAdjustSearchResultHubNames() const; /** Set fix hub details in search results */ void SetAdjustSearchResultHubNames( bool b ); /** Get remove public hub menu item enabled */ bool GetRemovePublicHubEnabled() const; /** Set remove public hub menu item enabled */ void SetRemovePublicHubEnabled( bool b ); /** Tab completion mode * 0 = contains * 1 = startsWith */ int GetTabCompleteMatchMode() const; /** And set tab completion mode */ void SetTabCompleteMatchMode( int i ); /** Remove [] tags from nicks */ bool GetTabCompleteStripTags() const; /** Set remove [] tags from nicks */ void SetTabCompleteStripTags( bool b ); /** Get use threads for running shell commands from chat */ bool GetThreadsForShellCommands() const; /** Set use threads for running shell commands from chat */ void SetThreadsForShellCommands( bool b ); /** Get shell command timeout (seconds) */ int GetShellCommandTimeout() const; /** Set shell command timeout (seconds) */ void SetShellCommandTimeout( int s ); /** Get use submenu for user commands */ bool GetUserCommandSubmenu() const; /** Set use submenu for user commands */ void SetUserCommandSubmenu( bool b ); /** Get default magnet action */ eMagnetAction GetMagnetAction( eMagnetSource = eChatMagnet ) const; /** Set default magnet action */ void SetMagnetAction( eMagnetAction act, eMagnetSource = eChatMagnet ); /** Get alternating row colors */ bool GetAlternatingRowColors() const; /** Set alternating row colors */ void SetAlternatingRowColors( bool b ); signals: /** emitted when the emoticon theme has changed */ virtual void emoticonThemeChanged(); /** emitted after chat background color settings have changed */ virtual void chatBackgroundColorChanged(); /** emitted after the default download mode has been changed not from the main menu */ virtual void defaultDownloadModeChanged(); /** emitted when the away mode is changed */ virtual void awayModeChanged( eUserAwayMode newmode ); /** emitted when the alternating rows colors setting changes, parameter is new setting */ virtual void alternatingRowColorsChanged( bool enabled ); /** emitted when auto away mode is enabled or disabled */ virtual void autoAwayModeChanged( bool enabled ); private: /** */ QString m_sValknutDataPath; /** */ SettingMap m_guiSettingMap; /** */ bool bOpenPrivateChatWindow; /** */ long m_nChatMaxParagraph; /** */ bool bShowTransferWin; /** */ bool bTabBar; /** */ bool bToolBar; /** */ bool bStatusBar; /** */ bool bUserListRightAlignment; /** */ eUnit m_eUnit; /** */ QString sTheme; /** Needed to avoid removing the QT3 version's theme setting */ QString sThemeQT3; /** */ int m_nSendChat; /** */ bool bThemeSupport; /** */ QString sLanguageFile; /** Application font */ QString sAppFont; /** If true, use sAppFont, if false, use system default font */ bool m_bUseCustomFont; /** Application height */ int iAppHeight; /** Application Width */ int iAppWidth; /** */ bool bSoundDisabled; /** */ bool bSoundDisabledAway; /** */ bool bSoundEnabledConnect; /** */ bool bSoundEnabledDisconnect; /** */ bool bSoundEnabledSend; /** */ bool bSoundEnabledReceive; /** */ bool bSoundEnabledFirstReceive; /** */ bool bSoundEnabledNickMentioned; /** */ bool bExternalSoundPlayer; /** */ QString sExternalPlayer; /** connect sound file */ QString sSoundFileConnect; /** disconnect sound file */ QString sSoundFileDisconnect; /** send sound file */ QString sSoundFileSend; /** receive sound file */ QString sSoundFileReceive; /** first receive sound file */ QString sSoundFileFirstReceive; /** nick said in public chat */ QString sSoundFileNickMentioned; /** */ bool bEnableEmoticons; /** */ bool bTimeStampPrivateChat; /** */ bool bTimeStampHubChat; /** */ bool bShowStatusMessage; /** */ bool bSendHidePrivateChatToPublicChat; /** */ bool bTVChunkPercent; /** */ bool bTVFilePercent; /** */ bool bTVChunkSize; /** */ bool bTVFileSize; /** */ bool bTVDownloadRateSingle; /** */ bool bTVElapsedTimeSingle; /** */ bool bTVDownloadRateMulti; /** */ bool bTVElapsedTimeMulti; /** */ bool m_bLogChatOption_1; /** */ bool m_bLogChatOption_2; /** */ bool m_bLogChatOption_3; /** */ bool m_bLogChatOption_4; /** */ bool m_bLogChatOption_5; /** */ bool m_bLogChatOption_6; /** */ bool m_bLogChatOption_7; /** */ QStringList m_LogChatNickNameFilter; /** */ int iChatMessageMaxLines; /** */ int iFloodCount; /** */ bool m_bFloodOpKick; /** */ QList * m_pEmoticons; /** */ QImage m_EmoticonImage; /** */ QProcess * pProcess; /** */ QPixmap * m_UserIconCache[USERLIST_XPM_COLUMNS][USERLIST_XPM_ROWS]; /** */ QImage m_UserIcons; /** 0:ask, 1:single, 2:multi */ unsigned int iDefaultDownloadMode; /** */ bool m_bAutoAwayMode; /** */ unsigned int m_nAutoAwayTime; /** */ bool m_bEnableTray; /** */ bool bQueryOnExit; /** */ bool bQueryOnFileDelete; /** */ bool bShowChatSendButton; /** */ QString sBackgroundPixmap; /** */ QString sBrowser; /** true to use sBrowser, false to use QDesktopServices */ bool m_bCustomBrowser; /** */ bool bShowChatInTab; /** */ QString m_sChatColor_1; /** */ QString m_sChatColor_2; /** */ QString m_sChatColor_3; /** */ QString m_sChatColor_4; /** */ QString m_sChatColor_5; /** */ QString m_sChatColor_6; /** */ QString m_sChatColor_7; /** */ QString m_sChatColor_8; /** */ QString m_sChatColor_9; /** */ QString m_sChatColor_10; /** */ QString m_sChatColor_11; /** */ QString m_sChatColor_12; /** */ QString m_sChatColor_13; /** */ QString m_sChatColor_14; /** */ QString m_sChatColor_15; /** */ QString m_sChatColor_16; /** */ QString m_sChatColor_17; /** */ QString m_sChatColor_18; /** Colour for operator nick */ QString m_sChatColor_19; /** true to use custom chat background color */ bool m_bChatBackgroundColorEnabled; /** */ QString m_sChatBackgroundColor; /** */ int m_nOpenClientWindows; /** */ bool m_bChatShowJoinsAndParts; /** */ bool m_bChatShowJoinsAndPartsOnlyFav; /** */ QString m_sUserPhotoFileName; /** The list of user customized chat commands */ QList m_lUserChatCommands; /** The list of user customized menu commands - now in order! */ QMap m_UserMenuCommands; /** Theme for application icons */ QString m_sApplicationIconTheme; /** Theme for emoticons */ QString m_sEmoticonTheme; /** Theme for userlist icons */ QString m_sUserListIconTheme; /** Regexp of nicks to not open chat windows for */ QString m_sSuppressedNicks; /** * Action to do on double clicking a user * 0 is private chat * 1 is download filelist */ int m_nDoubleClickAction; /** True if auto responder is enabled for main chat */ bool m_bAutoResponderEnabled; /** True if auto responder is enabled for private messages */ bool m_bAutoResponderEnabledForPM; /** The list of auto response triggers and responses */ QList m_lAutoResponses; /** The time between consequtive auto-responses for a user */ long m_nAutoResponseDelay; /** A list of nicks to not auto respond to */ QString m_sAutoResponseIgnores; /** The filelist naming scheme version. * This is set internally so that the filelists are renamed * once only when upgrading to 0.3.10. */ int m_nFilelistNamingSchemeVersion; /** Saved QT4 QMainWindow state */ QByteArray m_baQMainWindowState; /** Show folders in right pane of filelist browser? */ bool m_bFoldersInRightPane; /** Show subfolder sizes in left pane of filelist browser? */ bool m_bFolderSizesInLeftPane; /** Sort folders in right pane on top */ bool m_bFoldersInRightPaneOnTop; /** Open folders in right pane by double clicking */ bool m_bOpenFoldersInRightPane; /** Send unknown /commands as chat */ bool m_bSendUnknownCommandsAsChat; /** List of allowed unknown commands */ QString m_sAllowedUnknownCommands; /** Adjust hub details in search results */ bool m_bAdjustSearchResultHubNames; /** True if the remove public hub item is enabled */ bool m_bRemovePublicHubEnabled; /** */ int m_nTabCompleteMatchMode; /** */ bool m_bTabCompleteStripTags; /** use threads to start shell commands and wait for them to finish */ bool m_bThreadsForShellCommands; /** how long to wait for shell commands to finish when not using threads */ int m_nShellCommandTimeout; /** if true, user commands start in a submenu */ bool m_bUserCommandSubmenu; /** Use alternating row colors */ bool m_bAlternatingRowColors; /** default magnet action */ eMagnetAction m_eMagnetActionChat; }; /** global config */ extern DCConfig * g_pConfig; /** inline functions */ /** */ inline bool DCConfig::GetOpenPrivateChatWindow() const { return bOpenPrivateChatWindow; } /** */ inline void DCConfig::SetOpenPrivateChatWindow( bool b ) { bOpenPrivateChatWindow = b; } /** */ inline bool DCConfig::GetTabBar() const { return bTabBar; } /** */ inline void DCConfig::SetTabBar( bool b ) { bTabBar = b; } /** */ inline bool DCConfig::GetToolBar() const { return bToolBar; } /** */ inline void DCConfig::SetToolBar( bool b ) { bToolBar = b; } /** */ inline bool DCConfig::GetStatusBar() const { return bStatusBar; } /** */ inline void DCConfig::SetStatusBar( bool b ) { bStatusBar = b; } /** */ inline bool DCConfig::GetUserListRightAlignment() const { return bUserListRightAlignment; } /** */ inline void DCConfig::SetUserListRightAlignment( bool b ) { bUserListRightAlignment = b; } /** */ inline eUnit DCConfig::GetUnit() const { return m_eUnit; } /** */ inline void DCConfig::SetUnit( eUnit unit ) { m_eUnit = unit; } /** */ inline QString DCConfig::GetTheme() const { return sTheme; } /** */ inline void DCConfig::SetTheme( QString theme ) { sTheme = theme; } /** */ inline int DCConfig::GetSendChat() const { return m_nSendChat; } /** */ inline void DCConfig::SetSendChat( int index ) { m_nSendChat = index; } /** */ inline QString DCConfig::GetLanguageFile() const { return sLanguageFile; } /** */ inline void DCConfig::SetLanguageFile( QString languagefile ) { sLanguageFile = languagefile; } inline QString DCConfig::GetAppFont() const { return sAppFont; } inline void DCConfig::SetAppFont(QString font) { sAppFont = font; } /** */ inline bool DCConfig::GetUseCustomFont() const { return m_bUseCustomFont; } /** */ inline void DCConfig::SetUseCustomFont( bool b ) { m_bUseCustomFont = b; } /** */ inline void DCConfig::SetAppGeometry( int width, int height ) { iAppWidth=width;iAppHeight=height; } /** */ inline void DCConfig::GetAppGeometry( int &width, int &height ) { width=iAppWidth;height=iAppHeight; } /** */ inline bool DCConfig::GetSoundDisabled() const { return bSoundDisabled; } /** */ inline void DCConfig::SetSoundDisabled( bool disabled ) { bSoundDisabled = disabled; } /** */ inline bool DCConfig::GetSoundDisabledAway() const { return bSoundDisabledAway; } /** */ inline void DCConfig::SetSoundDisabledAway( bool disabled ) { bSoundDisabledAway = disabled; } /** */ inline bool DCConfig::GetExternalSoundPlayer() const { return bExternalSoundPlayer; } /** */ inline void DCConfig::SetExternalSoundPlayer( bool externalsoundplayer ) { bExternalSoundPlayer = externalsoundplayer; } /** */ inline QString DCConfig::GetExternalPlayer() const { return sExternalPlayer; } /** */ inline void DCConfig::SetExternalPlayer( QString externalplayer ) { sExternalPlayer = externalplayer; } /** */ inline bool DCConfig::GetShowStatusMessage() const { return bShowStatusMessage; } /** */ inline void DCConfig::SetShowStatusMessage( bool b ) { bShowStatusMessage = b; } /** */ inline bool DCConfig::GetShowTransferWin() const { return bShowTransferWin; } /** */ inline void DCConfig::SetShowTransferWin( bool b ) { bShowTransferWin = b; } /** */ inline bool DCConfig::GetThemeSupport() const { return bThemeSupport; } /** */ inline void DCConfig::SetThemeSupport( bool b ) { bThemeSupport = b; } /** */ inline bool DCConfig::GetSendHidePrivateChatToPublicChat() const { return bSendHidePrivateChatToPublicChat; } /** */ inline void DCConfig::SetSendHidePrivateChatToPublicChat( bool b ) { bSendHidePrivateChatToPublicChat = b; } /** */ inline int DCConfig::GetChatMessageMaxLines() const { return iChatMessageMaxLines; } /** */ inline void DCConfig::SetChatMessageMaxLines( int i ) { iChatMessageMaxLines = i; } /** */ inline void DCConfig::SetFloodCount( int i ) { iFloodCount = i; } /** */ inline int DCConfig::GetFloodCount() const { return iFloodCount; } /** */ inline void DCConfig::SetFloodOpKick( bool b ) { m_bFloodOpKick = b; } /** */ inline bool DCConfig::GetFloodOpKick() const { return m_bFloodOpKick; } /** */ inline unsigned int DCConfig::GetDefaultDownloadMode() const { return iDefaultDownloadMode; } /** */ inline bool DCConfig::GetEnableEmoticons() const { return bEnableEmoticons; } /** */ inline void DCConfig::SetEnableEmoticons( bool b ) { bEnableEmoticons = b; } /** */ inline bool DCConfig::GetQueryOnExit() const { return bQueryOnExit; } /** */ inline void DCConfig::SetQueryOnExit( bool b ) { bQueryOnExit = b; } /** */ inline bool DCConfig::GetEnableTray() const { return m_bEnableTray; } /** */ inline void DCConfig::SetEnableTray( bool b ) { m_bEnableTray = b; } /** */ inline bool DCConfig::GetQueryOnFileDelete() const { return bQueryOnFileDelete; } /** */ inline void DCConfig::SetQueryOnFileDelete( bool b ) { bQueryOnFileDelete = b; } /** */ inline bool DCConfig::GetShowChatSendButton() const { return bShowChatSendButton; } /** */ inline void DCConfig::SetShowChatSendButton( bool b ) { bShowChatSendButton = b; } /** */ inline QString DCConfig::GetBackgroundPixmap() const { return sBackgroundPixmap; } /** */ inline void DCConfig::SetBackgroundPixmap( QString s ) { sBackgroundPixmap = s; } /** */ inline QString DCConfig::GetBrowser() const { return sBrowser; } /** */ inline void DCConfig::SetBrowser( QString s ) { sBrowser = s; } /** */ inline bool DCConfig::GetCustomBrowser() const { return m_bCustomBrowser; } /** */ inline void DCConfig::SetCustomBrowser( bool b ) { m_bCustomBrowser = b; } /** */ inline bool DCConfig::GetShowChatInTab() const { return bShowChatInTab; } /** */ inline void DCConfig::SetShowChatInTab( bool b ) { bShowChatInTab = b; } /** */ inline long DCConfig::GetChatMaxParagraph() const { return m_nChatMaxParagraph; } /** */ inline void DCConfig::SetChatMaxParagraph( long i ) { m_nChatMaxParagraph = i; } /** */ inline int DCConfig::GetOpenClientWindows() const { return m_nOpenClientWindows; } /** */ inline void DCConfig::SetOpenClientWindows( int i ) { m_nOpenClientWindows = i; } /** */ inline bool DCConfig::GetAutoAwayMode() const { return m_bAutoAwayMode; } /** */ inline unsigned int DCConfig::GetAutoAwayTime() const { return m_nAutoAwayTime; } /** */ inline void DCConfig::SetAutoAwayTime( unsigned int n ) { m_nAutoAwayTime = n; } /** */ inline bool DCConfig::GetChatShowJoinsAndParts() const { return m_bChatShowJoinsAndParts; } /** */ inline void DCConfig::SetChatShowJoinsAndParts( bool b ) { m_bChatShowJoinsAndParts = b; } /** */ inline bool DCConfig::GetChatShowJoinsAndPartsOnlyFav() const { return m_bChatShowJoinsAndPartsOnlyFav; } /** */ inline void DCConfig::SetChatShowJoinsAndPartsOnlyFav( bool b ) { m_bChatShowJoinsAndPartsOnlyFav = b; } /** */ inline QString DCConfig::GetUserPhotoFileName() const { return m_sUserPhotoFileName; } /** */ inline void DCConfig::SetUserPhotoFileName( QString s ) { m_sUserPhotoFileName = s; } /** */ inline QString DCConfig::GetValknutDataPath() const { return m_sValknutDataPath; } /** */ inline void DCConfig::SetValknutDataPath( QString s ) { m_sValknutDataPath = s; } /** */ inline QString DCConfig::GetApplicationIconTheme() const { return m_sApplicationIconTheme; } /** */ inline void DCConfig::SetApplicationIconTheme( QString s ) { m_sApplicationIconTheme = s; } /** */ inline QString DCConfig::GetEmoticonTheme() const { return m_sEmoticonTheme; } /** */ inline void DCConfig::SetEmoticonTheme( QString s ) { m_sEmoticonTheme = s; } /** */ inline QString DCConfig::GetUserListIconTheme() const { return m_sUserListIconTheme; } /** */ inline QString DCConfig::GetSuppressedNicks() const { return m_sSuppressedNicks; } /** */ inline void DCConfig::SetSuppressedNicks( QString s ) { m_sSuppressedNicks = s; } /** */ inline int DCConfig::GetDoubleClickAction() const { return m_nDoubleClickAction; } /** */ inline void DCConfig::SetDoubleClickAction( int index ) { m_nDoubleClickAction = index; } /** */ inline bool DCConfig::GetAutoResponderEnabled() const { return m_bAutoResponderEnabled; } /** */ inline void DCConfig::SetAutoResponderEnabled( bool b ) { m_bAutoResponderEnabled = b; } /** */ inline long DCConfig::GetAutoResponseDelay() const { return m_nAutoResponseDelay; } /** */ inline void DCConfig::SetAutoResponseDelay( long n ) { m_nAutoResponseDelay = n; } /** */ inline QString DCConfig::GetAutoResponseIgnores() const { return m_sAutoResponseIgnores; } /** */ inline void DCConfig::SetAutoResponseIgnores( QString s ) { m_sAutoResponseIgnores = s; } /** */ inline bool DCConfig::GetAutoResponderEnabledForPM() const { return m_bAutoResponderEnabledForPM; } /** */ inline void DCConfig::SetAutoResponderEnabledForPM( bool b ) { m_bAutoResponderEnabledForPM = b; } /** */ inline int DCConfig::GetFilelistNamingSchemeVersion() const { return m_nFilelistNamingSchemeVersion; } /** */ inline void DCConfig::SetFilelistNamingSchemeVersion( int i ) { m_nFilelistNamingSchemeVersion = i; } /** */ inline QByteArray DCConfig::GetQMainWindowState() const { return m_baQMainWindowState; } /** */ inline void DCConfig::SetQMainWindowState( QByteArray ba ) { m_baQMainWindowState = ba; } /** */ inline bool DCConfig::GetFoldersInRightPane() const { return m_bFoldersInRightPane; } /** */ inline void DCConfig::SetFoldersInRightPane( bool b) { m_bFoldersInRightPane = b; } /** */ inline bool DCConfig::GetFolderSizesInLeftPane() const { return m_bFolderSizesInLeftPane; } /** */ inline void DCConfig::SetFolderSizesInLeftPane( bool b ) { m_bFolderSizesInLeftPane = b; } /** */ inline bool DCConfig::GetFoldersInRightPaneOnTop() const { return m_bFoldersInRightPaneOnTop; } /** */ inline void DCConfig::SetFoldersInRightPaneOnTop( bool b ) { m_bFoldersInRightPaneOnTop = b; } /** */ inline bool DCConfig::GetOpenFoldersInRightPane() const { return m_bOpenFoldersInRightPane; } /** */ inline void DCConfig::SetOpenFoldersInRightPane( bool b ) { m_bOpenFoldersInRightPane = b; } /** */ inline bool DCConfig::GetSendUnknownCommandsAsChat() const { return m_bSendUnknownCommandsAsChat; } /** */ inline void DCConfig::SetSendUnknownCommandsAsChat( bool b ) { m_bSendUnknownCommandsAsChat = b; } /** */ inline QString DCConfig::GetAllowedUnknownCommands() const { return m_sAllowedUnknownCommands; } /** */ inline void DCConfig::SetAllowedUnknownCommands( QString s ) { m_sAllowedUnknownCommands = s; } /** */ inline bool DCConfig::GetAdjustSearchResultHubNames() const { return m_bAdjustSearchResultHubNames; } /** */ inline void DCConfig::SetAdjustSearchResultHubNames( bool b ) { m_bAdjustSearchResultHubNames = b; } /** */ inline bool DCConfig::GetRemovePublicHubEnabled() const { return m_bRemovePublicHubEnabled; } /** */ inline void DCConfig::SetRemovePublicHubEnabled( bool b ) { m_bRemovePublicHubEnabled = b; } /** */ inline int DCConfig::GetTabCompleteMatchMode() const { return m_nTabCompleteMatchMode; } /** */ inline void DCConfig::SetTabCompleteMatchMode( int i ) { m_nTabCompleteMatchMode = i; } /** */ inline bool DCConfig::GetTabCompleteStripTags() const { return m_bTabCompleteStripTags; } /** */ inline void DCConfig::SetTabCompleteStripTags( bool b ) { m_bTabCompleteStripTags = b; } /** */ inline bool DCConfig::GetThreadsForShellCommands() const { return m_bThreadsForShellCommands; } /** */ inline void DCConfig::SetThreadsForShellCommands( bool b ) { m_bThreadsForShellCommands = b; } /** */ inline int DCConfig::GetShellCommandTimeout() const { return m_nShellCommandTimeout; } /** */ inline void DCConfig::SetShellCommandTimeout( int s ) { m_nShellCommandTimeout = s; } /** */ inline bool DCConfig::GetUserCommandSubmenu() const { return m_bUserCommandSubmenu; } /** */ inline void DCConfig::SetUserCommandSubmenu( bool b ) { m_bUserCommandSubmenu = b; } /** */ inline bool DCConfig::GetChatBackgroundColorEnabled() const { return m_bChatBackgroundColorEnabled; } /** */ inline QString DCConfig::GetChatBackgroundColor() const { return m_sChatBackgroundColor; } /** */ inline bool DCConfig::GetAlternatingRowColors() const { return m_bAlternatingRowColors; } #endif valknut-0.4.9/valknut/Makefile.in0000664000076400007640000033373011144264653015116 0ustar ejsejs# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = valknut$(EXEEXT) @WIN32_TRUE@am__append_1 = -Wl,--enable-stdcall-fixup, -Wl,--enable-auto-import, -Wl,--enable-runtime-pseudo-reloc subdir = valknut DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/valknut-qt4.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_valknut_OBJECTS = dcapplicationevents.$(OBJEXT) dcchat.$(OBJEXT) \ dcclient.$(OBJEXT) dcconfig.$(OBJEXT) \ dcconnectionmanager.$(OBJEXT) dcdebug.$(OBJEXT) \ dceditserver.$(OBJEXT) dcedittransfer.$(OBJEXT) \ dcevent.$(OBJEXT) dcfilebrowser.$(OBJEXT) \ dcfilebrowseritems.$(OBJEXT) dcfilelistdecompressor.$(OBJEXT) \ dcfiletool.$(OBJEXT) dcfiletransferinfo.$(OBJEXT) \ dcgui.$(OBJEXT) dcguiutils.$(OBJEXT) dchubfilter.$(OBJEXT) \ dchublistmanager.$(OBJEXT) dchubprofile.$(OBJEXT) \ dchubsearch.$(OBJEXT) dciconloader.$(OBJEXT) \ dcmenuhandler.$(OBJEXT) dcoptions.$(OBJEXT) \ dcpluginmanager.$(OBJEXT) dcshellcommandrunner.$(OBJEXT) \ dcsigterm.$(OBJEXT) dcsplash.$(OBJEXT) dcspy.$(OBJEXT) \ dctransferview.$(OBJEXT) dctranslator.$(OBJEXT) \ dcusercommandeditor.$(OBJEXT) dcuserslist.$(OBJEXT) \ main.$(OBJEXT) cdialogmessage.$(OBJEXT) \ cdialogpicturemap.$(OBJEXT) dcqtextedit.$(OBJEXT) \ dcwidget.$(OBJEXT) filteronlyproxy.$(OBJEXT) \ publichubsmodel.$(OBJEXT) publichubsproxy.$(OBJEXT) \ searchspymodel.$(OBJEXT) userlistmodel.$(OBJEXT) am__objects_1 = dcapplicationevents.moc.$(OBJEXT) dcchat.moc.$(OBJEXT) \ dcclient.moc.$(OBJEXT) dcconfig.moc.$(OBJEXT) \ dcconnectionmanager.moc.$(OBJEXT) dcdebug.moc.$(OBJEXT) \ dceditserver.moc.$(OBJEXT) dcedittransfer.moc.$(OBJEXT) \ dcfilebrowser.moc.$(OBJEXT) \ dcfilelistdecompressor.moc.$(OBJEXT) \ dcfiletransferinfo.moc.$(OBJEXT) dcgui.moc.$(OBJEXT) \ dchubfilter.moc.$(OBJEXT) dchublistmanager.moc.$(OBJEXT) \ dchubprofile.moc.$(OBJEXT) dchubsearch.moc.$(OBJEXT) \ dcoptions.moc.$(OBJEXT) dcshellcommandrunner.moc.$(OBJEXT) \ dcsigterm.moc.$(OBJEXT) dcsplash.moc.$(OBJEXT) \ dcspy.moc.$(OBJEXT) dctransferview.moc.$(OBJEXT) \ dctranslator.moc.$(OBJEXT) dcusercommandeditor.moc.$(OBJEXT) \ dcuserslist.moc.$(OBJEXT) cdialogmessage.moc.$(OBJEXT) \ cdialogpicturemap.moc.$(OBJEXT) dcqtextedit.moc.$(OBJEXT) \ filteronlyproxy.moc.$(OBJEXT) publichubsmodel.moc.$(OBJEXT) \ publichubsproxy.moc.$(OBJEXT) searchspymodel.moc.$(OBJEXT) \ userlistmodel.moc.$(OBJEXT) nodist_valknut_OBJECTS = $(am__objects_1) valknut_OBJECTS = $(am_valknut_OBJECTS) $(nodist_valknut_OBJECTS) valknut_LDADD = $(LDADD) valknut_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) \ $(valknut_LDFLAGS) $(LDFLAGS) -o $@ DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/admin/depcomp am__depfiles_maybe = depfiles CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) CXXLD = $(CXX) CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(valknut_SOURCES) $(nodist_valknut_SOURCES) DIST_SOURCES = $(valknut_SOURCES) RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DCLIB_CFLAGS = @DCLIB_CFLAGS@ DCLIB_LIBS = @DCLIB_LIBS@ DEBUGCOMPILE = @DEBUGCOMPILE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAMEWORK_DIR = @FRAMEWORK_DIR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LRELEASE = @LRELEASE@ LTLIBOBJS = @LTLIBOBJS@ LUPDATE = @LUPDATE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_FLAGS = @PACKAGE_FLAGS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ QT3SUPPORT_CFLAGS = @QT3SUPPORT_CFLAGS@ QT3SUPPORT_LIBS = @QT3SUPPORT_LIBS@ QTCORE_CFLAGS = @QTCORE_CFLAGS@ QTCORE_LIBS = @QTCORE_LIBS@ QTGUI_CFLAGS = @QTGUI_CFLAGS@ QTGUI_LIBS = @QTGUI_LIBS@ QTNETWORK_CFLAGS = @QTNETWORK_CFLAGS@ QTNETWORK_LIBS = @QTNETWORK_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SERIAL = @SERIAL@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UIC = @UIC@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = docs icons sounds ui ts # any header that includes a class which inherits QObject must be # processed by moc to produce a source file # QThread is a QObject in QT4 but not in QT3 NON_MOC_H = \ $(srcdir)/about.h \ $(srcdir)/dcevent.h \ $(srcdir)/dcfilebrowseritems.h \ $(srcdir)/dcfiletool.h \ $(srcdir)/dcfriendobject.h \ $(srcdir)/dcguiutils.h \ $(srcdir)/dchublistitems.h \ $(srcdir)/dciconloader.h \ $(srcdir)/dcmenuhandler.h \ $(srcdir)/dcpluginmanager.h \ $(srcdir)/dctransferviewitems.h \ $(srcdir)/dcwidget.h \ $(srcdir)/search-result-columns.h MOC_H = \ $(srcdir)/dcapplicationevents.h \ $(srcdir)/dcchat.h \ $(srcdir)/dcclient.h \ $(srcdir)/dcconfig.h \ $(srcdir)/dcconnectionmanager.h \ $(srcdir)/dcdebug.h \ $(srcdir)/dceditserver.h \ $(srcdir)/dcedittransfer.h \ $(srcdir)/dcfilebrowser.h \ $(srcdir)/dcfilelistdecompressor.h \ $(srcdir)/dcfiletransferinfo.h \ $(srcdir)/dcgui.h \ $(srcdir)/dchubfilter.h \ $(srcdir)/dchublistmanager.h \ $(srcdir)/dchubprofile.h \ $(srcdir)/dchubsearch.h \ $(srcdir)/dcoptions.h \ $(srcdir)/dcshellcommandrunner.h \ $(srcdir)/dcsigterm.h \ $(srcdir)/dcsplash.h \ $(srcdir)/dcspy.h \ $(srcdir)/dctransferview.h \ $(srcdir)/dctranslator.h \ $(srcdir)/dcusercommandeditor.h \ $(srcdir)/dcuserslist.h \ $(srcdir)/cdialogmessage.h \ $(srcdir)/cdialogpicturemap.h \ $(srcdir)/dcqtextedit.h \ $(srcdir)/filteronlyproxy.h \ $(srcdir)/publichubsmodel.h \ $(srcdir)/publichubsproxy.h \ $(srcdir)/searchspymodel.h \ $(srcdir)/userlistmodel.h MOC_CPP = \ dcapplicationevents.moc.cpp \ dcchat.moc.cpp \ dcclient.moc.cpp \ dcconfig.moc.cpp \ dcconnectionmanager.moc.cpp \ dcdebug.moc.cpp \ dceditserver.moc.cpp \ dcedittransfer.moc.cpp \ dcfilebrowser.moc.cpp \ dcfilelistdecompressor.moc.cpp \ dcfiletransferinfo.moc.cpp \ dcgui.moc.cpp \ dchubfilter.moc.cpp \ dchublistmanager.moc.cpp \ dchubprofile.moc.cpp \ dchubsearch.moc.cpp \ dcoptions.moc.cpp \ dcshellcommandrunner.moc.cpp \ dcsigterm.moc.cpp \ dcsplash.moc.cpp \ dcspy.moc.cpp \ dctransferview.moc.cpp \ dctranslator.moc.cpp \ dcusercommandeditor.moc.cpp \ dcuserslist.moc.cpp \ cdialogmessage.moc.cpp \ cdialogpicturemap.moc.cpp \ dcqtextedit.moc.cpp \ filteronlyproxy.moc.cpp \ publichubsmodel.moc.cpp \ publichubsproxy.moc.cpp \ searchspymodel.moc.cpp \ userlistmodel.moc.cpp valknut_SOURCES = \ $(srcdir)/dcapplicationevents.cpp \ $(srcdir)/dcchat.cpp \ $(srcdir)/dcclient.cpp \ $(srcdir)/dcconfig.cpp \ $(srcdir)/dcconnectionmanager.cpp \ $(srcdir)/dcdebug.cpp \ $(srcdir)/dceditserver.cpp \ $(srcdir)/dcedittransfer.cpp \ $(srcdir)/dcevent.cpp \ $(srcdir)/dcfilebrowser.cpp \ $(srcdir)/dcfilebrowseritems.cpp \ $(srcdir)/dcfilelistdecompressor.cpp \ $(srcdir)/dcfiletool.cpp \ $(srcdir)/dcfiletransferinfo.cpp \ $(srcdir)/dcgui.cpp \ $(srcdir)/dcguiutils.cpp \ $(srcdir)/dchubfilter.cpp \ $(srcdir)/dchublistmanager.cpp \ $(srcdir)/dchubprofile.cpp \ $(srcdir)/dchubsearch.cpp \ $(srcdir)/dciconloader.cpp \ $(srcdir)/dcmenuhandler.cpp \ $(srcdir)/dcoptions.cpp \ $(srcdir)/dcpluginmanager.cpp \ $(srcdir)/dcshellcommandrunner.cpp \ $(srcdir)/dcsigterm.cpp \ $(srcdir)/dcsplash.cpp \ $(srcdir)/dcspy.cpp \ $(srcdir)/dctransferview.cpp \ $(srcdir)/dctranslator.cpp \ $(srcdir)/dcusercommandeditor.cpp \ $(srcdir)/dcuserslist.cpp \ $(srcdir)/main.cpp \ $(srcdir)/cdialogmessage.cpp \ $(srcdir)/cdialogpicturemap.cpp \ $(srcdir)/dcqtextedit.cpp \ $(srcdir)/dcwidget.cpp \ $(srcdir)/filteronlyproxy.cpp \ $(srcdir)/publichubsmodel.cpp \ $(srcdir)/publichubsproxy.cpp \ $(srcdir)/searchspymodel.cpp \ $(srcdir)/userlistmodel.cpp nodist_valknut_SOURCES = \ $(MOC_CPP) # apparently this is needed otherwise automake tries incredibly # hard not to run moc BUILT_SOURCES = $(MOC_CPP) # the library search path. valknut_LDFLAGS = $(QTCORE_LIBS) $(QTGUI_LIBS) $(QTNETWORK_LIBS) \ $(QT3SUPPORT_LIBS) $(DCLIB_LIBS) $(am__append_1) # generated headers will be in ui and there are no headers in $(srcdir)/ui anymore AM_CPPFLAGS = -I$(top_srcdir) -Iui $(PACKAGE_FLAGS) -DVALKNUT_DATAPATH='"$(pkgdatadir)"' AM_CXXFLAGS = @CXXFLAGS@ $(QTCORE_CFLAGS) $(QTGUI_CFLAGS) $(QTNETWORK_CFLAGS) $(QT3SUPPORT_CFLAGS) $(DCLIB_CFLAGS) $(DEBUGCOMPILE) DISTCLEANFILES = $(MOC_CPP) all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: .SUFFIXES: .cpp .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu valknut/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu valknut/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done valknut$(EXEEXT): $(valknut_OBJECTS) $(valknut_DEPENDENCIES) @rm -f valknut$(EXEEXT) $(valknut_LINK) $(valknut_OBJECTS) $(valknut_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdialogmessage.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdialogmessage.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdialogpicturemap.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cdialogpicturemap.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcapplicationevents.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcapplicationevents.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcchat.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcchat.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcclient.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcclient.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcconfig.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcconfig.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcconnectionmanager.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcconnectionmanager.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcdebug.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcdebug.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dceditserver.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dceditserver.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcedittransfer.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcedittransfer.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcevent.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcfilebrowser.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcfilebrowser.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcfilebrowseritems.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcfilelistdecompressor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcfilelistdecompressor.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcfiletool.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcfiletransferinfo.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcfiletransferinfo.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcgui.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcgui.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcguiutils.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dchubfilter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dchubfilter.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dchublistmanager.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dchublistmanager.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dchubprofile.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dchubprofile.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dchubsearch.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dchubsearch.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dciconloader.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcmenuhandler.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcoptions.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcoptions.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcpluginmanager.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcqtextedit.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcqtextedit.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcshellcommandrunner.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcshellcommandrunner.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcsigterm.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcsigterm.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcsplash.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcsplash.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcspy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcspy.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dctransferview.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dctransferview.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dctranslator.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dctranslator.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcusercommandeditor.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcusercommandeditor.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcuserslist.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcuserslist.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dcwidget.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filteronlyproxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filteronlyproxy.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/publichubsmodel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/publichubsmodel.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/publichubsproxy.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/publichubsproxy.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/searchspymodel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/searchspymodel.moc.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userlistmodel.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/userlistmodel.moc.Po@am__quote@ .cpp.o: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .cpp.lo: @am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< dcapplicationevents.o: $(srcdir)/dcapplicationevents.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcapplicationevents.o -MD -MP -MF $(DEPDIR)/dcapplicationevents.Tpo -c -o dcapplicationevents.o `test -f '$(srcdir)/dcapplicationevents.cpp' || echo '$(srcdir)/'`$(srcdir)/dcapplicationevents.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcapplicationevents.Tpo $(DEPDIR)/dcapplicationevents.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcapplicationevents.cpp' object='dcapplicationevents.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcapplicationevents.o `test -f '$(srcdir)/dcapplicationevents.cpp' || echo '$(srcdir)/'`$(srcdir)/dcapplicationevents.cpp dcapplicationevents.obj: $(srcdir)/dcapplicationevents.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcapplicationevents.obj -MD -MP -MF $(DEPDIR)/dcapplicationevents.Tpo -c -o dcapplicationevents.obj `if test -f '$(srcdir)/dcapplicationevents.cpp'; then $(CYGPATH_W) '$(srcdir)/dcapplicationevents.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcapplicationevents.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcapplicationevents.Tpo $(DEPDIR)/dcapplicationevents.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcapplicationevents.cpp' object='dcapplicationevents.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcapplicationevents.obj `if test -f '$(srcdir)/dcapplicationevents.cpp'; then $(CYGPATH_W) '$(srcdir)/dcapplicationevents.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcapplicationevents.cpp'; fi` dcchat.o: $(srcdir)/dcchat.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcchat.o -MD -MP -MF $(DEPDIR)/dcchat.Tpo -c -o dcchat.o `test -f '$(srcdir)/dcchat.cpp' || echo '$(srcdir)/'`$(srcdir)/dcchat.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcchat.Tpo $(DEPDIR)/dcchat.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcchat.cpp' object='dcchat.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcchat.o `test -f '$(srcdir)/dcchat.cpp' || echo '$(srcdir)/'`$(srcdir)/dcchat.cpp dcchat.obj: $(srcdir)/dcchat.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcchat.obj -MD -MP -MF $(DEPDIR)/dcchat.Tpo -c -o dcchat.obj `if test -f '$(srcdir)/dcchat.cpp'; then $(CYGPATH_W) '$(srcdir)/dcchat.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcchat.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcchat.Tpo $(DEPDIR)/dcchat.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcchat.cpp' object='dcchat.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcchat.obj `if test -f '$(srcdir)/dcchat.cpp'; then $(CYGPATH_W) '$(srcdir)/dcchat.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcchat.cpp'; fi` dcclient.o: $(srcdir)/dcclient.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcclient.o -MD -MP -MF $(DEPDIR)/dcclient.Tpo -c -o dcclient.o `test -f '$(srcdir)/dcclient.cpp' || echo '$(srcdir)/'`$(srcdir)/dcclient.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcclient.Tpo $(DEPDIR)/dcclient.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcclient.cpp' object='dcclient.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcclient.o `test -f '$(srcdir)/dcclient.cpp' || echo '$(srcdir)/'`$(srcdir)/dcclient.cpp dcclient.obj: $(srcdir)/dcclient.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcclient.obj -MD -MP -MF $(DEPDIR)/dcclient.Tpo -c -o dcclient.obj `if test -f '$(srcdir)/dcclient.cpp'; then $(CYGPATH_W) '$(srcdir)/dcclient.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcclient.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcclient.Tpo $(DEPDIR)/dcclient.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcclient.cpp' object='dcclient.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcclient.obj `if test -f '$(srcdir)/dcclient.cpp'; then $(CYGPATH_W) '$(srcdir)/dcclient.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcclient.cpp'; fi` dcconfig.o: $(srcdir)/dcconfig.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcconfig.o -MD -MP -MF $(DEPDIR)/dcconfig.Tpo -c -o dcconfig.o `test -f '$(srcdir)/dcconfig.cpp' || echo '$(srcdir)/'`$(srcdir)/dcconfig.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcconfig.Tpo $(DEPDIR)/dcconfig.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcconfig.cpp' object='dcconfig.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcconfig.o `test -f '$(srcdir)/dcconfig.cpp' || echo '$(srcdir)/'`$(srcdir)/dcconfig.cpp dcconfig.obj: $(srcdir)/dcconfig.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcconfig.obj -MD -MP -MF $(DEPDIR)/dcconfig.Tpo -c -o dcconfig.obj `if test -f '$(srcdir)/dcconfig.cpp'; then $(CYGPATH_W) '$(srcdir)/dcconfig.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcconfig.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcconfig.Tpo $(DEPDIR)/dcconfig.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcconfig.cpp' object='dcconfig.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcconfig.obj `if test -f '$(srcdir)/dcconfig.cpp'; then $(CYGPATH_W) '$(srcdir)/dcconfig.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcconfig.cpp'; fi` dcconnectionmanager.o: $(srcdir)/dcconnectionmanager.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcconnectionmanager.o -MD -MP -MF $(DEPDIR)/dcconnectionmanager.Tpo -c -o dcconnectionmanager.o `test -f '$(srcdir)/dcconnectionmanager.cpp' || echo '$(srcdir)/'`$(srcdir)/dcconnectionmanager.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcconnectionmanager.Tpo $(DEPDIR)/dcconnectionmanager.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcconnectionmanager.cpp' object='dcconnectionmanager.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcconnectionmanager.o `test -f '$(srcdir)/dcconnectionmanager.cpp' || echo '$(srcdir)/'`$(srcdir)/dcconnectionmanager.cpp dcconnectionmanager.obj: $(srcdir)/dcconnectionmanager.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcconnectionmanager.obj -MD -MP -MF $(DEPDIR)/dcconnectionmanager.Tpo -c -o dcconnectionmanager.obj `if test -f '$(srcdir)/dcconnectionmanager.cpp'; then $(CYGPATH_W) '$(srcdir)/dcconnectionmanager.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcconnectionmanager.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcconnectionmanager.Tpo $(DEPDIR)/dcconnectionmanager.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcconnectionmanager.cpp' object='dcconnectionmanager.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcconnectionmanager.obj `if test -f '$(srcdir)/dcconnectionmanager.cpp'; then $(CYGPATH_W) '$(srcdir)/dcconnectionmanager.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcconnectionmanager.cpp'; fi` dcdebug.o: $(srcdir)/dcdebug.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcdebug.o -MD -MP -MF $(DEPDIR)/dcdebug.Tpo -c -o dcdebug.o `test -f '$(srcdir)/dcdebug.cpp' || echo '$(srcdir)/'`$(srcdir)/dcdebug.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcdebug.Tpo $(DEPDIR)/dcdebug.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcdebug.cpp' object='dcdebug.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcdebug.o `test -f '$(srcdir)/dcdebug.cpp' || echo '$(srcdir)/'`$(srcdir)/dcdebug.cpp dcdebug.obj: $(srcdir)/dcdebug.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcdebug.obj -MD -MP -MF $(DEPDIR)/dcdebug.Tpo -c -o dcdebug.obj `if test -f '$(srcdir)/dcdebug.cpp'; then $(CYGPATH_W) '$(srcdir)/dcdebug.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcdebug.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcdebug.Tpo $(DEPDIR)/dcdebug.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcdebug.cpp' object='dcdebug.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcdebug.obj `if test -f '$(srcdir)/dcdebug.cpp'; then $(CYGPATH_W) '$(srcdir)/dcdebug.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcdebug.cpp'; fi` dceditserver.o: $(srcdir)/dceditserver.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dceditserver.o -MD -MP -MF $(DEPDIR)/dceditserver.Tpo -c -o dceditserver.o `test -f '$(srcdir)/dceditserver.cpp' || echo '$(srcdir)/'`$(srcdir)/dceditserver.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dceditserver.Tpo $(DEPDIR)/dceditserver.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dceditserver.cpp' object='dceditserver.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dceditserver.o `test -f '$(srcdir)/dceditserver.cpp' || echo '$(srcdir)/'`$(srcdir)/dceditserver.cpp dceditserver.obj: $(srcdir)/dceditserver.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dceditserver.obj -MD -MP -MF $(DEPDIR)/dceditserver.Tpo -c -o dceditserver.obj `if test -f '$(srcdir)/dceditserver.cpp'; then $(CYGPATH_W) '$(srcdir)/dceditserver.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dceditserver.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dceditserver.Tpo $(DEPDIR)/dceditserver.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dceditserver.cpp' object='dceditserver.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dceditserver.obj `if test -f '$(srcdir)/dceditserver.cpp'; then $(CYGPATH_W) '$(srcdir)/dceditserver.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dceditserver.cpp'; fi` dcedittransfer.o: $(srcdir)/dcedittransfer.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcedittransfer.o -MD -MP -MF $(DEPDIR)/dcedittransfer.Tpo -c -o dcedittransfer.o `test -f '$(srcdir)/dcedittransfer.cpp' || echo '$(srcdir)/'`$(srcdir)/dcedittransfer.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcedittransfer.Tpo $(DEPDIR)/dcedittransfer.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcedittransfer.cpp' object='dcedittransfer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcedittransfer.o `test -f '$(srcdir)/dcedittransfer.cpp' || echo '$(srcdir)/'`$(srcdir)/dcedittransfer.cpp dcedittransfer.obj: $(srcdir)/dcedittransfer.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcedittransfer.obj -MD -MP -MF $(DEPDIR)/dcedittransfer.Tpo -c -o dcedittransfer.obj `if test -f '$(srcdir)/dcedittransfer.cpp'; then $(CYGPATH_W) '$(srcdir)/dcedittransfer.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcedittransfer.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcedittransfer.Tpo $(DEPDIR)/dcedittransfer.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcedittransfer.cpp' object='dcedittransfer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcedittransfer.obj `if test -f '$(srcdir)/dcedittransfer.cpp'; then $(CYGPATH_W) '$(srcdir)/dcedittransfer.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcedittransfer.cpp'; fi` dcevent.o: $(srcdir)/dcevent.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcevent.o -MD -MP -MF $(DEPDIR)/dcevent.Tpo -c -o dcevent.o `test -f '$(srcdir)/dcevent.cpp' || echo '$(srcdir)/'`$(srcdir)/dcevent.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcevent.Tpo $(DEPDIR)/dcevent.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcevent.cpp' object='dcevent.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcevent.o `test -f '$(srcdir)/dcevent.cpp' || echo '$(srcdir)/'`$(srcdir)/dcevent.cpp dcevent.obj: $(srcdir)/dcevent.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcevent.obj -MD -MP -MF $(DEPDIR)/dcevent.Tpo -c -o dcevent.obj `if test -f '$(srcdir)/dcevent.cpp'; then $(CYGPATH_W) '$(srcdir)/dcevent.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcevent.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcevent.Tpo $(DEPDIR)/dcevent.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcevent.cpp' object='dcevent.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcevent.obj `if test -f '$(srcdir)/dcevent.cpp'; then $(CYGPATH_W) '$(srcdir)/dcevent.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcevent.cpp'; fi` dcfilebrowser.o: $(srcdir)/dcfilebrowser.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfilebrowser.o -MD -MP -MF $(DEPDIR)/dcfilebrowser.Tpo -c -o dcfilebrowser.o `test -f '$(srcdir)/dcfilebrowser.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfilebrowser.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfilebrowser.Tpo $(DEPDIR)/dcfilebrowser.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfilebrowser.cpp' object='dcfilebrowser.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfilebrowser.o `test -f '$(srcdir)/dcfilebrowser.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfilebrowser.cpp dcfilebrowser.obj: $(srcdir)/dcfilebrowser.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfilebrowser.obj -MD -MP -MF $(DEPDIR)/dcfilebrowser.Tpo -c -o dcfilebrowser.obj `if test -f '$(srcdir)/dcfilebrowser.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfilebrowser.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfilebrowser.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfilebrowser.Tpo $(DEPDIR)/dcfilebrowser.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfilebrowser.cpp' object='dcfilebrowser.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfilebrowser.obj `if test -f '$(srcdir)/dcfilebrowser.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfilebrowser.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfilebrowser.cpp'; fi` dcfilebrowseritems.o: $(srcdir)/dcfilebrowseritems.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfilebrowseritems.o -MD -MP -MF $(DEPDIR)/dcfilebrowseritems.Tpo -c -o dcfilebrowseritems.o `test -f '$(srcdir)/dcfilebrowseritems.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfilebrowseritems.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfilebrowseritems.Tpo $(DEPDIR)/dcfilebrowseritems.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfilebrowseritems.cpp' object='dcfilebrowseritems.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfilebrowseritems.o `test -f '$(srcdir)/dcfilebrowseritems.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfilebrowseritems.cpp dcfilebrowseritems.obj: $(srcdir)/dcfilebrowseritems.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfilebrowseritems.obj -MD -MP -MF $(DEPDIR)/dcfilebrowseritems.Tpo -c -o dcfilebrowseritems.obj `if test -f '$(srcdir)/dcfilebrowseritems.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfilebrowseritems.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfilebrowseritems.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfilebrowseritems.Tpo $(DEPDIR)/dcfilebrowseritems.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfilebrowseritems.cpp' object='dcfilebrowseritems.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfilebrowseritems.obj `if test -f '$(srcdir)/dcfilebrowseritems.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfilebrowseritems.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfilebrowseritems.cpp'; fi` dcfilelistdecompressor.o: $(srcdir)/dcfilelistdecompressor.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfilelistdecompressor.o -MD -MP -MF $(DEPDIR)/dcfilelistdecompressor.Tpo -c -o dcfilelistdecompressor.o `test -f '$(srcdir)/dcfilelistdecompressor.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfilelistdecompressor.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfilelistdecompressor.Tpo $(DEPDIR)/dcfilelistdecompressor.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfilelistdecompressor.cpp' object='dcfilelistdecompressor.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfilelistdecompressor.o `test -f '$(srcdir)/dcfilelistdecompressor.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfilelistdecompressor.cpp dcfilelistdecompressor.obj: $(srcdir)/dcfilelistdecompressor.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfilelistdecompressor.obj -MD -MP -MF $(DEPDIR)/dcfilelistdecompressor.Tpo -c -o dcfilelistdecompressor.obj `if test -f '$(srcdir)/dcfilelistdecompressor.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfilelistdecompressor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfilelistdecompressor.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfilelistdecompressor.Tpo $(DEPDIR)/dcfilelistdecompressor.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfilelistdecompressor.cpp' object='dcfilelistdecompressor.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfilelistdecompressor.obj `if test -f '$(srcdir)/dcfilelistdecompressor.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfilelistdecompressor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfilelistdecompressor.cpp'; fi` dcfiletool.o: $(srcdir)/dcfiletool.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfiletool.o -MD -MP -MF $(DEPDIR)/dcfiletool.Tpo -c -o dcfiletool.o `test -f '$(srcdir)/dcfiletool.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfiletool.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfiletool.Tpo $(DEPDIR)/dcfiletool.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfiletool.cpp' object='dcfiletool.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfiletool.o `test -f '$(srcdir)/dcfiletool.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfiletool.cpp dcfiletool.obj: $(srcdir)/dcfiletool.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfiletool.obj -MD -MP -MF $(DEPDIR)/dcfiletool.Tpo -c -o dcfiletool.obj `if test -f '$(srcdir)/dcfiletool.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfiletool.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfiletool.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfiletool.Tpo $(DEPDIR)/dcfiletool.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfiletool.cpp' object='dcfiletool.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfiletool.obj `if test -f '$(srcdir)/dcfiletool.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfiletool.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfiletool.cpp'; fi` dcfiletransferinfo.o: $(srcdir)/dcfiletransferinfo.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfiletransferinfo.o -MD -MP -MF $(DEPDIR)/dcfiletransferinfo.Tpo -c -o dcfiletransferinfo.o `test -f '$(srcdir)/dcfiletransferinfo.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfiletransferinfo.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfiletransferinfo.Tpo $(DEPDIR)/dcfiletransferinfo.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfiletransferinfo.cpp' object='dcfiletransferinfo.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfiletransferinfo.o `test -f '$(srcdir)/dcfiletransferinfo.cpp' || echo '$(srcdir)/'`$(srcdir)/dcfiletransferinfo.cpp dcfiletransferinfo.obj: $(srcdir)/dcfiletransferinfo.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcfiletransferinfo.obj -MD -MP -MF $(DEPDIR)/dcfiletransferinfo.Tpo -c -o dcfiletransferinfo.obj `if test -f '$(srcdir)/dcfiletransferinfo.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfiletransferinfo.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfiletransferinfo.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcfiletransferinfo.Tpo $(DEPDIR)/dcfiletransferinfo.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcfiletransferinfo.cpp' object='dcfiletransferinfo.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcfiletransferinfo.obj `if test -f '$(srcdir)/dcfiletransferinfo.cpp'; then $(CYGPATH_W) '$(srcdir)/dcfiletransferinfo.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcfiletransferinfo.cpp'; fi` dcgui.o: $(srcdir)/dcgui.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcgui.o -MD -MP -MF $(DEPDIR)/dcgui.Tpo -c -o dcgui.o `test -f '$(srcdir)/dcgui.cpp' || echo '$(srcdir)/'`$(srcdir)/dcgui.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcgui.Tpo $(DEPDIR)/dcgui.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcgui.cpp' object='dcgui.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcgui.o `test -f '$(srcdir)/dcgui.cpp' || echo '$(srcdir)/'`$(srcdir)/dcgui.cpp dcgui.obj: $(srcdir)/dcgui.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcgui.obj -MD -MP -MF $(DEPDIR)/dcgui.Tpo -c -o dcgui.obj `if test -f '$(srcdir)/dcgui.cpp'; then $(CYGPATH_W) '$(srcdir)/dcgui.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcgui.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcgui.Tpo $(DEPDIR)/dcgui.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcgui.cpp' object='dcgui.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcgui.obj `if test -f '$(srcdir)/dcgui.cpp'; then $(CYGPATH_W) '$(srcdir)/dcgui.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcgui.cpp'; fi` dcguiutils.o: $(srcdir)/dcguiutils.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcguiutils.o -MD -MP -MF $(DEPDIR)/dcguiutils.Tpo -c -o dcguiutils.o `test -f '$(srcdir)/dcguiutils.cpp' || echo '$(srcdir)/'`$(srcdir)/dcguiutils.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcguiutils.Tpo $(DEPDIR)/dcguiutils.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcguiutils.cpp' object='dcguiutils.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcguiutils.o `test -f '$(srcdir)/dcguiutils.cpp' || echo '$(srcdir)/'`$(srcdir)/dcguiutils.cpp dcguiutils.obj: $(srcdir)/dcguiutils.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcguiutils.obj -MD -MP -MF $(DEPDIR)/dcguiutils.Tpo -c -o dcguiutils.obj `if test -f '$(srcdir)/dcguiutils.cpp'; then $(CYGPATH_W) '$(srcdir)/dcguiutils.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcguiutils.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcguiutils.Tpo $(DEPDIR)/dcguiutils.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcguiutils.cpp' object='dcguiutils.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcguiutils.obj `if test -f '$(srcdir)/dcguiutils.cpp'; then $(CYGPATH_W) '$(srcdir)/dcguiutils.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcguiutils.cpp'; fi` dchubfilter.o: $(srcdir)/dchubfilter.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dchubfilter.o -MD -MP -MF $(DEPDIR)/dchubfilter.Tpo -c -o dchubfilter.o `test -f '$(srcdir)/dchubfilter.cpp' || echo '$(srcdir)/'`$(srcdir)/dchubfilter.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dchubfilter.Tpo $(DEPDIR)/dchubfilter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dchubfilter.cpp' object='dchubfilter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dchubfilter.o `test -f '$(srcdir)/dchubfilter.cpp' || echo '$(srcdir)/'`$(srcdir)/dchubfilter.cpp dchubfilter.obj: $(srcdir)/dchubfilter.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dchubfilter.obj -MD -MP -MF $(DEPDIR)/dchubfilter.Tpo -c -o dchubfilter.obj `if test -f '$(srcdir)/dchubfilter.cpp'; then $(CYGPATH_W) '$(srcdir)/dchubfilter.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dchubfilter.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dchubfilter.Tpo $(DEPDIR)/dchubfilter.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dchubfilter.cpp' object='dchubfilter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dchubfilter.obj `if test -f '$(srcdir)/dchubfilter.cpp'; then $(CYGPATH_W) '$(srcdir)/dchubfilter.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dchubfilter.cpp'; fi` dchublistmanager.o: $(srcdir)/dchublistmanager.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dchublistmanager.o -MD -MP -MF $(DEPDIR)/dchublistmanager.Tpo -c -o dchublistmanager.o `test -f '$(srcdir)/dchublistmanager.cpp' || echo '$(srcdir)/'`$(srcdir)/dchublistmanager.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dchublistmanager.Tpo $(DEPDIR)/dchublistmanager.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dchublistmanager.cpp' object='dchublistmanager.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dchublistmanager.o `test -f '$(srcdir)/dchublistmanager.cpp' || echo '$(srcdir)/'`$(srcdir)/dchublistmanager.cpp dchublistmanager.obj: $(srcdir)/dchublistmanager.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dchublistmanager.obj -MD -MP -MF $(DEPDIR)/dchublistmanager.Tpo -c -o dchublistmanager.obj `if test -f '$(srcdir)/dchublistmanager.cpp'; then $(CYGPATH_W) '$(srcdir)/dchublistmanager.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dchublistmanager.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dchublistmanager.Tpo $(DEPDIR)/dchublistmanager.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dchublistmanager.cpp' object='dchublistmanager.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dchublistmanager.obj `if test -f '$(srcdir)/dchublistmanager.cpp'; then $(CYGPATH_W) '$(srcdir)/dchublistmanager.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dchublistmanager.cpp'; fi` dchubprofile.o: $(srcdir)/dchubprofile.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dchubprofile.o -MD -MP -MF $(DEPDIR)/dchubprofile.Tpo -c -o dchubprofile.o `test -f '$(srcdir)/dchubprofile.cpp' || echo '$(srcdir)/'`$(srcdir)/dchubprofile.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dchubprofile.Tpo $(DEPDIR)/dchubprofile.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dchubprofile.cpp' object='dchubprofile.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dchubprofile.o `test -f '$(srcdir)/dchubprofile.cpp' || echo '$(srcdir)/'`$(srcdir)/dchubprofile.cpp dchubprofile.obj: $(srcdir)/dchubprofile.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dchubprofile.obj -MD -MP -MF $(DEPDIR)/dchubprofile.Tpo -c -o dchubprofile.obj `if test -f '$(srcdir)/dchubprofile.cpp'; then $(CYGPATH_W) '$(srcdir)/dchubprofile.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dchubprofile.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dchubprofile.Tpo $(DEPDIR)/dchubprofile.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dchubprofile.cpp' object='dchubprofile.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dchubprofile.obj `if test -f '$(srcdir)/dchubprofile.cpp'; then $(CYGPATH_W) '$(srcdir)/dchubprofile.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dchubprofile.cpp'; fi` dchubsearch.o: $(srcdir)/dchubsearch.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dchubsearch.o -MD -MP -MF $(DEPDIR)/dchubsearch.Tpo -c -o dchubsearch.o `test -f '$(srcdir)/dchubsearch.cpp' || echo '$(srcdir)/'`$(srcdir)/dchubsearch.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dchubsearch.Tpo $(DEPDIR)/dchubsearch.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dchubsearch.cpp' object='dchubsearch.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dchubsearch.o `test -f '$(srcdir)/dchubsearch.cpp' || echo '$(srcdir)/'`$(srcdir)/dchubsearch.cpp dchubsearch.obj: $(srcdir)/dchubsearch.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dchubsearch.obj -MD -MP -MF $(DEPDIR)/dchubsearch.Tpo -c -o dchubsearch.obj `if test -f '$(srcdir)/dchubsearch.cpp'; then $(CYGPATH_W) '$(srcdir)/dchubsearch.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dchubsearch.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dchubsearch.Tpo $(DEPDIR)/dchubsearch.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dchubsearch.cpp' object='dchubsearch.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dchubsearch.obj `if test -f '$(srcdir)/dchubsearch.cpp'; then $(CYGPATH_W) '$(srcdir)/dchubsearch.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dchubsearch.cpp'; fi` dciconloader.o: $(srcdir)/dciconloader.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dciconloader.o -MD -MP -MF $(DEPDIR)/dciconloader.Tpo -c -o dciconloader.o `test -f '$(srcdir)/dciconloader.cpp' || echo '$(srcdir)/'`$(srcdir)/dciconloader.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dciconloader.Tpo $(DEPDIR)/dciconloader.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dciconloader.cpp' object='dciconloader.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dciconloader.o `test -f '$(srcdir)/dciconloader.cpp' || echo '$(srcdir)/'`$(srcdir)/dciconloader.cpp dciconloader.obj: $(srcdir)/dciconloader.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dciconloader.obj -MD -MP -MF $(DEPDIR)/dciconloader.Tpo -c -o dciconloader.obj `if test -f '$(srcdir)/dciconloader.cpp'; then $(CYGPATH_W) '$(srcdir)/dciconloader.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dciconloader.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dciconloader.Tpo $(DEPDIR)/dciconloader.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dciconloader.cpp' object='dciconloader.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dciconloader.obj `if test -f '$(srcdir)/dciconloader.cpp'; then $(CYGPATH_W) '$(srcdir)/dciconloader.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dciconloader.cpp'; fi` dcmenuhandler.o: $(srcdir)/dcmenuhandler.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcmenuhandler.o -MD -MP -MF $(DEPDIR)/dcmenuhandler.Tpo -c -o dcmenuhandler.o `test -f '$(srcdir)/dcmenuhandler.cpp' || echo '$(srcdir)/'`$(srcdir)/dcmenuhandler.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcmenuhandler.Tpo $(DEPDIR)/dcmenuhandler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcmenuhandler.cpp' object='dcmenuhandler.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcmenuhandler.o `test -f '$(srcdir)/dcmenuhandler.cpp' || echo '$(srcdir)/'`$(srcdir)/dcmenuhandler.cpp dcmenuhandler.obj: $(srcdir)/dcmenuhandler.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcmenuhandler.obj -MD -MP -MF $(DEPDIR)/dcmenuhandler.Tpo -c -o dcmenuhandler.obj `if test -f '$(srcdir)/dcmenuhandler.cpp'; then $(CYGPATH_W) '$(srcdir)/dcmenuhandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcmenuhandler.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcmenuhandler.Tpo $(DEPDIR)/dcmenuhandler.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcmenuhandler.cpp' object='dcmenuhandler.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcmenuhandler.obj `if test -f '$(srcdir)/dcmenuhandler.cpp'; then $(CYGPATH_W) '$(srcdir)/dcmenuhandler.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcmenuhandler.cpp'; fi` dcoptions.o: $(srcdir)/dcoptions.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcoptions.o -MD -MP -MF $(DEPDIR)/dcoptions.Tpo -c -o dcoptions.o `test -f '$(srcdir)/dcoptions.cpp' || echo '$(srcdir)/'`$(srcdir)/dcoptions.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcoptions.Tpo $(DEPDIR)/dcoptions.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcoptions.cpp' object='dcoptions.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcoptions.o `test -f '$(srcdir)/dcoptions.cpp' || echo '$(srcdir)/'`$(srcdir)/dcoptions.cpp dcoptions.obj: $(srcdir)/dcoptions.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcoptions.obj -MD -MP -MF $(DEPDIR)/dcoptions.Tpo -c -o dcoptions.obj `if test -f '$(srcdir)/dcoptions.cpp'; then $(CYGPATH_W) '$(srcdir)/dcoptions.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcoptions.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcoptions.Tpo $(DEPDIR)/dcoptions.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcoptions.cpp' object='dcoptions.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcoptions.obj `if test -f '$(srcdir)/dcoptions.cpp'; then $(CYGPATH_W) '$(srcdir)/dcoptions.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcoptions.cpp'; fi` dcpluginmanager.o: $(srcdir)/dcpluginmanager.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcpluginmanager.o -MD -MP -MF $(DEPDIR)/dcpluginmanager.Tpo -c -o dcpluginmanager.o `test -f '$(srcdir)/dcpluginmanager.cpp' || echo '$(srcdir)/'`$(srcdir)/dcpluginmanager.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcpluginmanager.Tpo $(DEPDIR)/dcpluginmanager.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcpluginmanager.cpp' object='dcpluginmanager.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcpluginmanager.o `test -f '$(srcdir)/dcpluginmanager.cpp' || echo '$(srcdir)/'`$(srcdir)/dcpluginmanager.cpp dcpluginmanager.obj: $(srcdir)/dcpluginmanager.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcpluginmanager.obj -MD -MP -MF $(DEPDIR)/dcpluginmanager.Tpo -c -o dcpluginmanager.obj `if test -f '$(srcdir)/dcpluginmanager.cpp'; then $(CYGPATH_W) '$(srcdir)/dcpluginmanager.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcpluginmanager.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcpluginmanager.Tpo $(DEPDIR)/dcpluginmanager.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcpluginmanager.cpp' object='dcpluginmanager.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcpluginmanager.obj `if test -f '$(srcdir)/dcpluginmanager.cpp'; then $(CYGPATH_W) '$(srcdir)/dcpluginmanager.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcpluginmanager.cpp'; fi` dcshellcommandrunner.o: $(srcdir)/dcshellcommandrunner.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcshellcommandrunner.o -MD -MP -MF $(DEPDIR)/dcshellcommandrunner.Tpo -c -o dcshellcommandrunner.o `test -f '$(srcdir)/dcshellcommandrunner.cpp' || echo '$(srcdir)/'`$(srcdir)/dcshellcommandrunner.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcshellcommandrunner.Tpo $(DEPDIR)/dcshellcommandrunner.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcshellcommandrunner.cpp' object='dcshellcommandrunner.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcshellcommandrunner.o `test -f '$(srcdir)/dcshellcommandrunner.cpp' || echo '$(srcdir)/'`$(srcdir)/dcshellcommandrunner.cpp dcshellcommandrunner.obj: $(srcdir)/dcshellcommandrunner.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcshellcommandrunner.obj -MD -MP -MF $(DEPDIR)/dcshellcommandrunner.Tpo -c -o dcshellcommandrunner.obj `if test -f '$(srcdir)/dcshellcommandrunner.cpp'; then $(CYGPATH_W) '$(srcdir)/dcshellcommandrunner.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcshellcommandrunner.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcshellcommandrunner.Tpo $(DEPDIR)/dcshellcommandrunner.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcshellcommandrunner.cpp' object='dcshellcommandrunner.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcshellcommandrunner.obj `if test -f '$(srcdir)/dcshellcommandrunner.cpp'; then $(CYGPATH_W) '$(srcdir)/dcshellcommandrunner.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcshellcommandrunner.cpp'; fi` dcsigterm.o: $(srcdir)/dcsigterm.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcsigterm.o -MD -MP -MF $(DEPDIR)/dcsigterm.Tpo -c -o dcsigterm.o `test -f '$(srcdir)/dcsigterm.cpp' || echo '$(srcdir)/'`$(srcdir)/dcsigterm.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcsigterm.Tpo $(DEPDIR)/dcsigterm.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcsigterm.cpp' object='dcsigterm.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcsigterm.o `test -f '$(srcdir)/dcsigterm.cpp' || echo '$(srcdir)/'`$(srcdir)/dcsigterm.cpp dcsigterm.obj: $(srcdir)/dcsigterm.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcsigterm.obj -MD -MP -MF $(DEPDIR)/dcsigterm.Tpo -c -o dcsigterm.obj `if test -f '$(srcdir)/dcsigterm.cpp'; then $(CYGPATH_W) '$(srcdir)/dcsigterm.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcsigterm.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcsigterm.Tpo $(DEPDIR)/dcsigterm.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcsigterm.cpp' object='dcsigterm.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcsigterm.obj `if test -f '$(srcdir)/dcsigterm.cpp'; then $(CYGPATH_W) '$(srcdir)/dcsigterm.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcsigterm.cpp'; fi` dcsplash.o: $(srcdir)/dcsplash.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcsplash.o -MD -MP -MF $(DEPDIR)/dcsplash.Tpo -c -o dcsplash.o `test -f '$(srcdir)/dcsplash.cpp' || echo '$(srcdir)/'`$(srcdir)/dcsplash.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcsplash.Tpo $(DEPDIR)/dcsplash.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcsplash.cpp' object='dcsplash.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcsplash.o `test -f '$(srcdir)/dcsplash.cpp' || echo '$(srcdir)/'`$(srcdir)/dcsplash.cpp dcsplash.obj: $(srcdir)/dcsplash.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcsplash.obj -MD -MP -MF $(DEPDIR)/dcsplash.Tpo -c -o dcsplash.obj `if test -f '$(srcdir)/dcsplash.cpp'; then $(CYGPATH_W) '$(srcdir)/dcsplash.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcsplash.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcsplash.Tpo $(DEPDIR)/dcsplash.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcsplash.cpp' object='dcsplash.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcsplash.obj `if test -f '$(srcdir)/dcsplash.cpp'; then $(CYGPATH_W) '$(srcdir)/dcsplash.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcsplash.cpp'; fi` dcspy.o: $(srcdir)/dcspy.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcspy.o -MD -MP -MF $(DEPDIR)/dcspy.Tpo -c -o dcspy.o `test -f '$(srcdir)/dcspy.cpp' || echo '$(srcdir)/'`$(srcdir)/dcspy.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcspy.Tpo $(DEPDIR)/dcspy.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcspy.cpp' object='dcspy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcspy.o `test -f '$(srcdir)/dcspy.cpp' || echo '$(srcdir)/'`$(srcdir)/dcspy.cpp dcspy.obj: $(srcdir)/dcspy.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcspy.obj -MD -MP -MF $(DEPDIR)/dcspy.Tpo -c -o dcspy.obj `if test -f '$(srcdir)/dcspy.cpp'; then $(CYGPATH_W) '$(srcdir)/dcspy.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcspy.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcspy.Tpo $(DEPDIR)/dcspy.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcspy.cpp' object='dcspy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcspy.obj `if test -f '$(srcdir)/dcspy.cpp'; then $(CYGPATH_W) '$(srcdir)/dcspy.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcspy.cpp'; fi` dctransferview.o: $(srcdir)/dctransferview.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dctransferview.o -MD -MP -MF $(DEPDIR)/dctransferview.Tpo -c -o dctransferview.o `test -f '$(srcdir)/dctransferview.cpp' || echo '$(srcdir)/'`$(srcdir)/dctransferview.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dctransferview.Tpo $(DEPDIR)/dctransferview.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dctransferview.cpp' object='dctransferview.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dctransferview.o `test -f '$(srcdir)/dctransferview.cpp' || echo '$(srcdir)/'`$(srcdir)/dctransferview.cpp dctransferview.obj: $(srcdir)/dctransferview.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dctransferview.obj -MD -MP -MF $(DEPDIR)/dctransferview.Tpo -c -o dctransferview.obj `if test -f '$(srcdir)/dctransferview.cpp'; then $(CYGPATH_W) '$(srcdir)/dctransferview.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dctransferview.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dctransferview.Tpo $(DEPDIR)/dctransferview.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dctransferview.cpp' object='dctransferview.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dctransferview.obj `if test -f '$(srcdir)/dctransferview.cpp'; then $(CYGPATH_W) '$(srcdir)/dctransferview.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dctransferview.cpp'; fi` dctranslator.o: $(srcdir)/dctranslator.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dctranslator.o -MD -MP -MF $(DEPDIR)/dctranslator.Tpo -c -o dctranslator.o `test -f '$(srcdir)/dctranslator.cpp' || echo '$(srcdir)/'`$(srcdir)/dctranslator.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dctranslator.Tpo $(DEPDIR)/dctranslator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dctranslator.cpp' object='dctranslator.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dctranslator.o `test -f '$(srcdir)/dctranslator.cpp' || echo '$(srcdir)/'`$(srcdir)/dctranslator.cpp dctranslator.obj: $(srcdir)/dctranslator.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dctranslator.obj -MD -MP -MF $(DEPDIR)/dctranslator.Tpo -c -o dctranslator.obj `if test -f '$(srcdir)/dctranslator.cpp'; then $(CYGPATH_W) '$(srcdir)/dctranslator.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dctranslator.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dctranslator.Tpo $(DEPDIR)/dctranslator.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dctranslator.cpp' object='dctranslator.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dctranslator.obj `if test -f '$(srcdir)/dctranslator.cpp'; then $(CYGPATH_W) '$(srcdir)/dctranslator.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dctranslator.cpp'; fi` dcusercommandeditor.o: $(srcdir)/dcusercommandeditor.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcusercommandeditor.o -MD -MP -MF $(DEPDIR)/dcusercommandeditor.Tpo -c -o dcusercommandeditor.o `test -f '$(srcdir)/dcusercommandeditor.cpp' || echo '$(srcdir)/'`$(srcdir)/dcusercommandeditor.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcusercommandeditor.Tpo $(DEPDIR)/dcusercommandeditor.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcusercommandeditor.cpp' object='dcusercommandeditor.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcusercommandeditor.o `test -f '$(srcdir)/dcusercommandeditor.cpp' || echo '$(srcdir)/'`$(srcdir)/dcusercommandeditor.cpp dcusercommandeditor.obj: $(srcdir)/dcusercommandeditor.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcusercommandeditor.obj -MD -MP -MF $(DEPDIR)/dcusercommandeditor.Tpo -c -o dcusercommandeditor.obj `if test -f '$(srcdir)/dcusercommandeditor.cpp'; then $(CYGPATH_W) '$(srcdir)/dcusercommandeditor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcusercommandeditor.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcusercommandeditor.Tpo $(DEPDIR)/dcusercommandeditor.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcusercommandeditor.cpp' object='dcusercommandeditor.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcusercommandeditor.obj `if test -f '$(srcdir)/dcusercommandeditor.cpp'; then $(CYGPATH_W) '$(srcdir)/dcusercommandeditor.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcusercommandeditor.cpp'; fi` dcuserslist.o: $(srcdir)/dcuserslist.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcuserslist.o -MD -MP -MF $(DEPDIR)/dcuserslist.Tpo -c -o dcuserslist.o `test -f '$(srcdir)/dcuserslist.cpp' || echo '$(srcdir)/'`$(srcdir)/dcuserslist.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcuserslist.Tpo $(DEPDIR)/dcuserslist.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcuserslist.cpp' object='dcuserslist.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcuserslist.o `test -f '$(srcdir)/dcuserslist.cpp' || echo '$(srcdir)/'`$(srcdir)/dcuserslist.cpp dcuserslist.obj: $(srcdir)/dcuserslist.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcuserslist.obj -MD -MP -MF $(DEPDIR)/dcuserslist.Tpo -c -o dcuserslist.obj `if test -f '$(srcdir)/dcuserslist.cpp'; then $(CYGPATH_W) '$(srcdir)/dcuserslist.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcuserslist.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcuserslist.Tpo $(DEPDIR)/dcuserslist.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcuserslist.cpp' object='dcuserslist.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcuserslist.obj `if test -f '$(srcdir)/dcuserslist.cpp'; then $(CYGPATH_W) '$(srcdir)/dcuserslist.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcuserslist.cpp'; fi` main.o: $(srcdir)/main.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT main.o -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.o `test -f '$(srcdir)/main.cpp' || echo '$(srcdir)/'`$(srcdir)/main.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/main.cpp' object='main.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o main.o `test -f '$(srcdir)/main.cpp' || echo '$(srcdir)/'`$(srcdir)/main.cpp main.obj: $(srcdir)/main.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT main.obj -MD -MP -MF $(DEPDIR)/main.Tpo -c -o main.obj `if test -f '$(srcdir)/main.cpp'; then $(CYGPATH_W) '$(srcdir)/main.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/main.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/main.Tpo $(DEPDIR)/main.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/main.cpp' object='main.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o main.obj `if test -f '$(srcdir)/main.cpp'; then $(CYGPATH_W) '$(srcdir)/main.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/main.cpp'; fi` cdialogmessage.o: $(srcdir)/cdialogmessage.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdialogmessage.o -MD -MP -MF $(DEPDIR)/cdialogmessage.Tpo -c -o cdialogmessage.o `test -f '$(srcdir)/cdialogmessage.cpp' || echo '$(srcdir)/'`$(srcdir)/cdialogmessage.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cdialogmessage.Tpo $(DEPDIR)/cdialogmessage.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/cdialogmessage.cpp' object='cdialogmessage.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdialogmessage.o `test -f '$(srcdir)/cdialogmessage.cpp' || echo '$(srcdir)/'`$(srcdir)/cdialogmessage.cpp cdialogmessage.obj: $(srcdir)/cdialogmessage.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdialogmessage.obj -MD -MP -MF $(DEPDIR)/cdialogmessage.Tpo -c -o cdialogmessage.obj `if test -f '$(srcdir)/cdialogmessage.cpp'; then $(CYGPATH_W) '$(srcdir)/cdialogmessage.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/cdialogmessage.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cdialogmessage.Tpo $(DEPDIR)/cdialogmessage.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/cdialogmessage.cpp' object='cdialogmessage.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdialogmessage.obj `if test -f '$(srcdir)/cdialogmessage.cpp'; then $(CYGPATH_W) '$(srcdir)/cdialogmessage.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/cdialogmessage.cpp'; fi` cdialogpicturemap.o: $(srcdir)/cdialogpicturemap.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdialogpicturemap.o -MD -MP -MF $(DEPDIR)/cdialogpicturemap.Tpo -c -o cdialogpicturemap.o `test -f '$(srcdir)/cdialogpicturemap.cpp' || echo '$(srcdir)/'`$(srcdir)/cdialogpicturemap.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cdialogpicturemap.Tpo $(DEPDIR)/cdialogpicturemap.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/cdialogpicturemap.cpp' object='cdialogpicturemap.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdialogpicturemap.o `test -f '$(srcdir)/cdialogpicturemap.cpp' || echo '$(srcdir)/'`$(srcdir)/cdialogpicturemap.cpp cdialogpicturemap.obj: $(srcdir)/cdialogpicturemap.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT cdialogpicturemap.obj -MD -MP -MF $(DEPDIR)/cdialogpicturemap.Tpo -c -o cdialogpicturemap.obj `if test -f '$(srcdir)/cdialogpicturemap.cpp'; then $(CYGPATH_W) '$(srcdir)/cdialogpicturemap.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/cdialogpicturemap.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/cdialogpicturemap.Tpo $(DEPDIR)/cdialogpicturemap.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/cdialogpicturemap.cpp' object='cdialogpicturemap.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o cdialogpicturemap.obj `if test -f '$(srcdir)/cdialogpicturemap.cpp'; then $(CYGPATH_W) '$(srcdir)/cdialogpicturemap.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/cdialogpicturemap.cpp'; fi` dcqtextedit.o: $(srcdir)/dcqtextedit.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcqtextedit.o -MD -MP -MF $(DEPDIR)/dcqtextedit.Tpo -c -o dcqtextedit.o `test -f '$(srcdir)/dcqtextedit.cpp' || echo '$(srcdir)/'`$(srcdir)/dcqtextedit.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcqtextedit.Tpo $(DEPDIR)/dcqtextedit.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcqtextedit.cpp' object='dcqtextedit.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcqtextedit.o `test -f '$(srcdir)/dcqtextedit.cpp' || echo '$(srcdir)/'`$(srcdir)/dcqtextedit.cpp dcqtextedit.obj: $(srcdir)/dcqtextedit.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcqtextedit.obj -MD -MP -MF $(DEPDIR)/dcqtextedit.Tpo -c -o dcqtextedit.obj `if test -f '$(srcdir)/dcqtextedit.cpp'; then $(CYGPATH_W) '$(srcdir)/dcqtextedit.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcqtextedit.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcqtextedit.Tpo $(DEPDIR)/dcqtextedit.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcqtextedit.cpp' object='dcqtextedit.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcqtextedit.obj `if test -f '$(srcdir)/dcqtextedit.cpp'; then $(CYGPATH_W) '$(srcdir)/dcqtextedit.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcqtextedit.cpp'; fi` dcwidget.o: $(srcdir)/dcwidget.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcwidget.o -MD -MP -MF $(DEPDIR)/dcwidget.Tpo -c -o dcwidget.o `test -f '$(srcdir)/dcwidget.cpp' || echo '$(srcdir)/'`$(srcdir)/dcwidget.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcwidget.Tpo $(DEPDIR)/dcwidget.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcwidget.cpp' object='dcwidget.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcwidget.o `test -f '$(srcdir)/dcwidget.cpp' || echo '$(srcdir)/'`$(srcdir)/dcwidget.cpp dcwidget.obj: $(srcdir)/dcwidget.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT dcwidget.obj -MD -MP -MF $(DEPDIR)/dcwidget.Tpo -c -o dcwidget.obj `if test -f '$(srcdir)/dcwidget.cpp'; then $(CYGPATH_W) '$(srcdir)/dcwidget.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcwidget.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/dcwidget.Tpo $(DEPDIR)/dcwidget.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/dcwidget.cpp' object='dcwidget.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o dcwidget.obj `if test -f '$(srcdir)/dcwidget.cpp'; then $(CYGPATH_W) '$(srcdir)/dcwidget.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/dcwidget.cpp'; fi` filteronlyproxy.o: $(srcdir)/filteronlyproxy.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT filteronlyproxy.o -MD -MP -MF $(DEPDIR)/filteronlyproxy.Tpo -c -o filteronlyproxy.o `test -f '$(srcdir)/filteronlyproxy.cpp' || echo '$(srcdir)/'`$(srcdir)/filteronlyproxy.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/filteronlyproxy.Tpo $(DEPDIR)/filteronlyproxy.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/filteronlyproxy.cpp' object='filteronlyproxy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o filteronlyproxy.o `test -f '$(srcdir)/filteronlyproxy.cpp' || echo '$(srcdir)/'`$(srcdir)/filteronlyproxy.cpp filteronlyproxy.obj: $(srcdir)/filteronlyproxy.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT filteronlyproxy.obj -MD -MP -MF $(DEPDIR)/filteronlyproxy.Tpo -c -o filteronlyproxy.obj `if test -f '$(srcdir)/filteronlyproxy.cpp'; then $(CYGPATH_W) '$(srcdir)/filteronlyproxy.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/filteronlyproxy.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/filteronlyproxy.Tpo $(DEPDIR)/filteronlyproxy.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/filteronlyproxy.cpp' object='filteronlyproxy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o filteronlyproxy.obj `if test -f '$(srcdir)/filteronlyproxy.cpp'; then $(CYGPATH_W) '$(srcdir)/filteronlyproxy.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/filteronlyproxy.cpp'; fi` publichubsmodel.o: $(srcdir)/publichubsmodel.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT publichubsmodel.o -MD -MP -MF $(DEPDIR)/publichubsmodel.Tpo -c -o publichubsmodel.o `test -f '$(srcdir)/publichubsmodel.cpp' || echo '$(srcdir)/'`$(srcdir)/publichubsmodel.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/publichubsmodel.Tpo $(DEPDIR)/publichubsmodel.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/publichubsmodel.cpp' object='publichubsmodel.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o publichubsmodel.o `test -f '$(srcdir)/publichubsmodel.cpp' || echo '$(srcdir)/'`$(srcdir)/publichubsmodel.cpp publichubsmodel.obj: $(srcdir)/publichubsmodel.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT publichubsmodel.obj -MD -MP -MF $(DEPDIR)/publichubsmodel.Tpo -c -o publichubsmodel.obj `if test -f '$(srcdir)/publichubsmodel.cpp'; then $(CYGPATH_W) '$(srcdir)/publichubsmodel.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/publichubsmodel.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/publichubsmodel.Tpo $(DEPDIR)/publichubsmodel.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/publichubsmodel.cpp' object='publichubsmodel.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o publichubsmodel.obj `if test -f '$(srcdir)/publichubsmodel.cpp'; then $(CYGPATH_W) '$(srcdir)/publichubsmodel.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/publichubsmodel.cpp'; fi` publichubsproxy.o: $(srcdir)/publichubsproxy.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT publichubsproxy.o -MD -MP -MF $(DEPDIR)/publichubsproxy.Tpo -c -o publichubsproxy.o `test -f '$(srcdir)/publichubsproxy.cpp' || echo '$(srcdir)/'`$(srcdir)/publichubsproxy.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/publichubsproxy.Tpo $(DEPDIR)/publichubsproxy.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/publichubsproxy.cpp' object='publichubsproxy.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o publichubsproxy.o `test -f '$(srcdir)/publichubsproxy.cpp' || echo '$(srcdir)/'`$(srcdir)/publichubsproxy.cpp publichubsproxy.obj: $(srcdir)/publichubsproxy.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT publichubsproxy.obj -MD -MP -MF $(DEPDIR)/publichubsproxy.Tpo -c -o publichubsproxy.obj `if test -f '$(srcdir)/publichubsproxy.cpp'; then $(CYGPATH_W) '$(srcdir)/publichubsproxy.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/publichubsproxy.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/publichubsproxy.Tpo $(DEPDIR)/publichubsproxy.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/publichubsproxy.cpp' object='publichubsproxy.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o publichubsproxy.obj `if test -f '$(srcdir)/publichubsproxy.cpp'; then $(CYGPATH_W) '$(srcdir)/publichubsproxy.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/publichubsproxy.cpp'; fi` searchspymodel.o: $(srcdir)/searchspymodel.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT searchspymodel.o -MD -MP -MF $(DEPDIR)/searchspymodel.Tpo -c -o searchspymodel.o `test -f '$(srcdir)/searchspymodel.cpp' || echo '$(srcdir)/'`$(srcdir)/searchspymodel.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/searchspymodel.Tpo $(DEPDIR)/searchspymodel.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/searchspymodel.cpp' object='searchspymodel.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o searchspymodel.o `test -f '$(srcdir)/searchspymodel.cpp' || echo '$(srcdir)/'`$(srcdir)/searchspymodel.cpp searchspymodel.obj: $(srcdir)/searchspymodel.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT searchspymodel.obj -MD -MP -MF $(DEPDIR)/searchspymodel.Tpo -c -o searchspymodel.obj `if test -f '$(srcdir)/searchspymodel.cpp'; then $(CYGPATH_W) '$(srcdir)/searchspymodel.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/searchspymodel.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/searchspymodel.Tpo $(DEPDIR)/searchspymodel.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/searchspymodel.cpp' object='searchspymodel.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o searchspymodel.obj `if test -f '$(srcdir)/searchspymodel.cpp'; then $(CYGPATH_W) '$(srcdir)/searchspymodel.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/searchspymodel.cpp'; fi` userlistmodel.o: $(srcdir)/userlistmodel.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT userlistmodel.o -MD -MP -MF $(DEPDIR)/userlistmodel.Tpo -c -o userlistmodel.o `test -f '$(srcdir)/userlistmodel.cpp' || echo '$(srcdir)/'`$(srcdir)/userlistmodel.cpp @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/userlistmodel.Tpo $(DEPDIR)/userlistmodel.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/userlistmodel.cpp' object='userlistmodel.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o userlistmodel.o `test -f '$(srcdir)/userlistmodel.cpp' || echo '$(srcdir)/'`$(srcdir)/userlistmodel.cpp userlistmodel.obj: $(srcdir)/userlistmodel.cpp @am__fastdepCXX_TRUE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT userlistmodel.obj -MD -MP -MF $(DEPDIR)/userlistmodel.Tpo -c -o userlistmodel.obj `if test -f '$(srcdir)/userlistmodel.cpp'; then $(CYGPATH_W) '$(srcdir)/userlistmodel.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/userlistmodel.cpp'; fi` @am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/userlistmodel.Tpo $(DEPDIR)/userlistmodel.Po @AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(srcdir)/userlistmodel.cpp' object='userlistmodel.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o userlistmodel.obj `if test -f '$(srcdir)/userlistmodel.cpp'; then $(CYGPATH_W) '$(srcdir)/userlistmodel.cpp'; else $(CYGPATH_W) '$(srcdir)/$(srcdir)/userlistmodel.cpp'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-recursive all-am: Makefile $(PROGRAMS) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-recursive clean-am: clean-binPROGRAMS clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-binPROGRAMS install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags ctags-recursive distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-recursive uninstall uninstall-am \ uninstall-binPROGRAMS dcapplicationevents.moc.cpp : $(srcdir)/dcapplicationevents.h $(MOC) -o $@ $< dcchat.moc.cpp : $(srcdir)/dcchat.h $(MOC) -o $@ $< dcclient.moc.cpp : $(srcdir)/dcclient.h $(MOC) -o $@ $< dcconfig.moc.cpp : $(srcdir)/dcconfig.h $(MOC) -o $@ $< dcconnectionmanager.moc.cpp : $(srcdir)/dcconnectionmanager.h $(MOC) -o $@ $< dcdebug.moc.cpp : $(srcdir)/dcdebug.h $(MOC) -o $@ $< dceditserver.moc.cpp : $(srcdir)/dceditserver.h $(MOC) -o $@ $< dcedittransfer.moc.cpp : $(srcdir)/dcedittransfer.h $(MOC) -o $@ $< dcfilebrowser.moc.cpp : $(srcdir)/dcfilebrowser.h $(MOC) -o $@ $< dcfilelistdecompressor.moc.cpp : $(srcdir)/dcfilelistdecompressor.h $(MOC) -o $@ $< dcfiletransferinfo.moc.cpp : $(srcdir)/dcfiletransferinfo.h $(MOC) -o $@ $< dcgui.moc.cpp : $(srcdir)/dcgui.h $(MOC) -o $@ $< dchubfilter.moc.cpp : $(srcdir)/dchubfilter.h $(MOC) -o $@ $< dchublistmanager.moc.cpp : $(srcdir)/dchublistmanager.h $(MOC) -o $@ $< dchubprofile.moc.cpp : $(srcdir)/dchubprofile.h $(MOC) -o $@ $< dchubsearch.moc.cpp : $(srcdir)/dchubsearch.h $(MOC) -o $@ $< dcoptions.moc.cpp : $(srcdir)/dcoptions.h $(MOC) -o $@ $< dcshellcommandrunner.moc.cpp : $(srcdir)/dcshellcommandrunner.h $(MOC) -o $@ $< dcsigterm.moc.cpp : $(srcdir)/dcsigterm.h $(MOC) -o $@ $< dcsplash.moc.cpp : $(srcdir)/dcsplash.h $(MOC) -o $@ $< dcspy.moc.cpp : $(srcdir)/dcspy.h $(MOC) -o $@ $< dctransferview.moc.cpp : $(srcdir)/dctransferview.h $(MOC) -o $@ $< dctranslator.moc.cpp : $(srcdir)/dctranslator.h $(MOC) -o $@ $< dcusercommandeditor.moc.cpp : $(srcdir)/dcusercommandeditor.h $(MOC) -o $@ $< dcuserslist.moc.cpp : $(srcdir)/dcuserslist.h $(MOC) -o $@ $< cdialogmessage.moc.cpp : $(srcdir)/cdialogmessage.h $(MOC) -o $@ $< cdialogpicturemap.moc.cpp : $(srcdir)/cdialogpicturemap.h $(MOC) -o $@ $< dcqtextedit.moc.cpp : $(srcdir)/dcqtextedit.h $(MOC) -o $@ $< filteronlyproxy.moc.cpp : $(srcdir)/filteronlyproxy.h $(MOC) -o $@ $< publichubsmodel.moc.cpp : $(srcdir)/publichubsmodel.h $(MOC) -o $@ $< publichubsproxy.moc.cpp : $(srcdir)/publichubsproxy.h $(MOC) -o $@ $< searchspymodel.moc.cpp : $(srcdir)/searchspymodel.h $(MOC) -o $@ $< userlistmodel.moc.cpp : $(srcdir)/userlistmodel.h $(MOC) -o $@ $< # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: valknut-0.4.9/valknut/dcfilebrowseritems.cpp0000664000076400007640000000447311131664734017450 0ustar ejsejs/*************************************************************************** dcfilebrowseritems.cpp - Items used by DCFileBrowser ------------------- begin : Thu Jul 3 2008 copyright : (C) 2002-2004 by Mathias Küster copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcfilebrowseritems.h" /** Faster than using key(), probably */ int DCFileBrowserListItem::compare( Q3ListViewItem * i, int col, bool ascending ) const { if ( col == 1 ) { if ( m_nBytes < ((DCFileBrowserListItem*)i)->m_nBytes ) { return -1; } else if ( m_nBytes == ((DCFileBrowserListItem*)i)->m_nBytes ) { return 0; } else { return 1; } } else { return Q3ListViewItem::compare( i, col, ascending ); } } /** No longer used because compare() will be used instead */ QString DCFileBrowserListItem::key( int column, bool ascending ) const { if ( column == 1 ) { return QString().setNum(m_nBytes).rightJustified( 20, '0' ); } else { return Q3ListViewItem::key( column, ascending ); } } /** sort top parts copied from DC_UserListItem */ int DC_FBListViewItem::compare( Q3ListViewItem * i, int col, bool ascending ) const { if ( m_bSortTop && !((DC_FBListViewItem*)i)->m_bSortTop ) { return ascending ? -1 : 1; } else if ( !m_bSortTop && ((DC_FBListViewItem*)i)->m_bSortTop ) { return ascending ? 1 : -1; } else if ( (col == 1) || (col == 2) ) /* size or exact size column */ { return mycompare( ((DC_FBListViewItem*)i)->myvalue ); } else { return DC_QListViewItem::compare( i, col, ascending ); } } valknut-0.4.9/valknut/Makefile.am0000664000076400007640000001461211134733357015101 0ustar ejsejsSUBDIRS = docs icons sounds ui ts bin_PROGRAMS = valknut # any header that includes a class which inherits QObject must be # processed by moc to produce a source file # QThread is a QObject in QT4 but not in QT3 NON_MOC_H = \ $(srcdir)/about.h \ $(srcdir)/dcevent.h \ $(srcdir)/dcfilebrowseritems.h \ $(srcdir)/dcfiletool.h \ $(srcdir)/dcfriendobject.h \ $(srcdir)/dcguiutils.h \ $(srcdir)/dchublistitems.h \ $(srcdir)/dciconloader.h \ $(srcdir)/dcmenuhandler.h \ $(srcdir)/dcpluginmanager.h \ $(srcdir)/dctransferviewitems.h \ $(srcdir)/dcwidget.h \ $(srcdir)/search-result-columns.h MOC_H = \ $(srcdir)/dcapplicationevents.h \ $(srcdir)/dcchat.h \ $(srcdir)/dcclient.h \ $(srcdir)/dcconfig.h \ $(srcdir)/dcconnectionmanager.h \ $(srcdir)/dcdebug.h \ $(srcdir)/dceditserver.h \ $(srcdir)/dcedittransfer.h \ $(srcdir)/dcfilebrowser.h \ $(srcdir)/dcfilelistdecompressor.h \ $(srcdir)/dcfiletransferinfo.h \ $(srcdir)/dcgui.h \ $(srcdir)/dchubfilter.h \ $(srcdir)/dchublistmanager.h \ $(srcdir)/dchubprofile.h \ $(srcdir)/dchubsearch.h \ $(srcdir)/dcoptions.h \ $(srcdir)/dcshellcommandrunner.h \ $(srcdir)/dcsigterm.h \ $(srcdir)/dcsplash.h \ $(srcdir)/dcspy.h \ $(srcdir)/dctransferview.h \ $(srcdir)/dctranslator.h \ $(srcdir)/dcusercommandeditor.h \ $(srcdir)/dcuserslist.h \ $(srcdir)/cdialogmessage.h \ $(srcdir)/cdialogpicturemap.h \ $(srcdir)/dcqtextedit.h \ $(srcdir)/filteronlyproxy.h \ $(srcdir)/publichubsmodel.h \ $(srcdir)/publichubsproxy.h \ $(srcdir)/searchspymodel.h \ $(srcdir)/userlistmodel.h MOC_CPP = \ dcapplicationevents.moc.cpp \ dcchat.moc.cpp \ dcclient.moc.cpp \ dcconfig.moc.cpp \ dcconnectionmanager.moc.cpp \ dcdebug.moc.cpp \ dceditserver.moc.cpp \ dcedittransfer.moc.cpp \ dcfilebrowser.moc.cpp \ dcfilelistdecompressor.moc.cpp \ dcfiletransferinfo.moc.cpp \ dcgui.moc.cpp \ dchubfilter.moc.cpp \ dchublistmanager.moc.cpp \ dchubprofile.moc.cpp \ dchubsearch.moc.cpp \ dcoptions.moc.cpp \ dcshellcommandrunner.moc.cpp \ dcsigterm.moc.cpp \ dcsplash.moc.cpp \ dcspy.moc.cpp \ dctransferview.moc.cpp \ dctranslator.moc.cpp \ dcusercommandeditor.moc.cpp \ dcuserslist.moc.cpp \ cdialogmessage.moc.cpp \ cdialogpicturemap.moc.cpp \ dcqtextedit.moc.cpp \ filteronlyproxy.moc.cpp \ publichubsmodel.moc.cpp \ publichubsproxy.moc.cpp \ searchspymodel.moc.cpp \ userlistmodel.moc.cpp valknut_SOURCES = \ $(srcdir)/dcapplicationevents.cpp \ $(srcdir)/dcchat.cpp \ $(srcdir)/dcclient.cpp \ $(srcdir)/dcconfig.cpp \ $(srcdir)/dcconnectionmanager.cpp \ $(srcdir)/dcdebug.cpp \ $(srcdir)/dceditserver.cpp \ $(srcdir)/dcedittransfer.cpp \ $(srcdir)/dcevent.cpp \ $(srcdir)/dcfilebrowser.cpp \ $(srcdir)/dcfilebrowseritems.cpp \ $(srcdir)/dcfilelistdecompressor.cpp \ $(srcdir)/dcfiletool.cpp \ $(srcdir)/dcfiletransferinfo.cpp \ $(srcdir)/dcgui.cpp \ $(srcdir)/dcguiutils.cpp \ $(srcdir)/dchubfilter.cpp \ $(srcdir)/dchublistmanager.cpp \ $(srcdir)/dchubprofile.cpp \ $(srcdir)/dchubsearch.cpp \ $(srcdir)/dciconloader.cpp \ $(srcdir)/dcmenuhandler.cpp \ $(srcdir)/dcoptions.cpp \ $(srcdir)/dcpluginmanager.cpp \ $(srcdir)/dcshellcommandrunner.cpp \ $(srcdir)/dcsigterm.cpp \ $(srcdir)/dcsplash.cpp \ $(srcdir)/dcspy.cpp \ $(srcdir)/dctransferview.cpp \ $(srcdir)/dctranslator.cpp \ $(srcdir)/dcusercommandeditor.cpp \ $(srcdir)/dcuserslist.cpp \ $(srcdir)/main.cpp \ $(srcdir)/cdialogmessage.cpp \ $(srcdir)/cdialogpicturemap.cpp \ $(srcdir)/dcqtextedit.cpp \ $(srcdir)/dcwidget.cpp \ $(srcdir)/filteronlyproxy.cpp \ $(srcdir)/publichubsmodel.cpp \ $(srcdir)/publichubsproxy.cpp \ $(srcdir)/searchspymodel.cpp \ $(srcdir)/userlistmodel.cpp nodist_valknut_SOURCES = \ $(MOC_CPP) # apparently this is needed otherwise automake tries incredibly # hard not to run moc BUILT_SOURCES = $(MOC_CPP) # the library search path. valknut_LDFLAGS = $(QTCORE_LIBS) $(QTGUI_LIBS) $(QTNETWORK_LIBS) $(QT3SUPPORT_LIBS) $(DCLIB_LIBS) if WIN32 valknut_LDFLAGS += -Wl,--enable-stdcall-fixup, -Wl,--enable-auto-import, -Wl,--enable-runtime-pseudo-reloc endif WIN32 # generated headers will be in ui and there are no headers in $(srcdir)/ui anymore AM_CPPFLAGS = -I$(top_srcdir) -Iui $(PACKAGE_FLAGS) -DVALKNUT_DATAPATH='"$(pkgdatadir)"' AM_CXXFLAGS = @CXXFLAGS@ $(QTCORE_CFLAGS) $(QTGUI_CFLAGS) $(QTNETWORK_CFLAGS) $(QT3SUPPORT_CFLAGS) $(DCLIB_CFLAGS) $(DEBUGCOMPILE) DISTCLEANFILES = $(MOC_CPP) dcapplicationevents.moc.cpp : $(srcdir)/dcapplicationevents.h $(MOC) -o $@ $< dcchat.moc.cpp : $(srcdir)/dcchat.h $(MOC) -o $@ $< dcclient.moc.cpp : $(srcdir)/dcclient.h $(MOC) -o $@ $< dcconfig.moc.cpp : $(srcdir)/dcconfig.h $(MOC) -o $@ $< dcconnectionmanager.moc.cpp : $(srcdir)/dcconnectionmanager.h $(MOC) -o $@ $< dcdebug.moc.cpp : $(srcdir)/dcdebug.h $(MOC) -o $@ $< dceditserver.moc.cpp : $(srcdir)/dceditserver.h $(MOC) -o $@ $< dcedittransfer.moc.cpp : $(srcdir)/dcedittransfer.h $(MOC) -o $@ $< dcfilebrowser.moc.cpp : $(srcdir)/dcfilebrowser.h $(MOC) -o $@ $< dcfilelistdecompressor.moc.cpp : $(srcdir)/dcfilelistdecompressor.h $(MOC) -o $@ $< dcfiletransferinfo.moc.cpp : $(srcdir)/dcfiletransferinfo.h $(MOC) -o $@ $< dcgui.moc.cpp : $(srcdir)/dcgui.h $(MOC) -o $@ $< dchubfilter.moc.cpp : $(srcdir)/dchubfilter.h $(MOC) -o $@ $< dchublistmanager.moc.cpp : $(srcdir)/dchublistmanager.h $(MOC) -o $@ $< dchubprofile.moc.cpp : $(srcdir)/dchubprofile.h $(MOC) -o $@ $< dchubsearch.moc.cpp : $(srcdir)/dchubsearch.h $(MOC) -o $@ $< dcoptions.moc.cpp : $(srcdir)/dcoptions.h $(MOC) -o $@ $< dcshellcommandrunner.moc.cpp : $(srcdir)/dcshellcommandrunner.h $(MOC) -o $@ $< dcsigterm.moc.cpp : $(srcdir)/dcsigterm.h $(MOC) -o $@ $< dcsplash.moc.cpp : $(srcdir)/dcsplash.h $(MOC) -o $@ $< dcspy.moc.cpp : $(srcdir)/dcspy.h $(MOC) -o $@ $< dctransferview.moc.cpp : $(srcdir)/dctransferview.h $(MOC) -o $@ $< dctranslator.moc.cpp : $(srcdir)/dctranslator.h $(MOC) -o $@ $< dcusercommandeditor.moc.cpp : $(srcdir)/dcusercommandeditor.h $(MOC) -o $@ $< dcuserslist.moc.cpp : $(srcdir)/dcuserslist.h $(MOC) -o $@ $< cdialogmessage.moc.cpp : $(srcdir)/cdialogmessage.h $(MOC) -o $@ $< cdialogpicturemap.moc.cpp : $(srcdir)/cdialogpicturemap.h $(MOC) -o $@ $< dcqtextedit.moc.cpp : $(srcdir)/dcqtextedit.h $(MOC) -o $@ $< filteronlyproxy.moc.cpp : $(srcdir)/filteronlyproxy.h $(MOC) -o $@ $< publichubsmodel.moc.cpp : $(srcdir)/publichubsmodel.h $(MOC) -o $@ $< publichubsproxy.moc.cpp : $(srcdir)/publichubsproxy.h $(MOC) -o $@ $< searchspymodel.moc.cpp : $(srcdir)/searchspymodel.h $(MOC) -o $@ $< userlistmodel.moc.cpp : $(srcdir)/userlistmodel.h $(MOC) -o $@ $< valknut-0.4.9/valknut/dcgui.cpp0000664000076400007640000017004411135727620014643 0ustar ejsejs/*************************************************************************** dcgui.cpp - description ------------------- begin : Mon Okt 1 19:59:45 CEST 2001 copyright : (C) 2001-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcgui.h" // Qt includes #include #include #include #include #include #include #include #include #include #include #include #include #include //Added by qt3to4: #include #include #include #include #include #include #include #include // application specific includes #include #ifndef WIN32 #include #endif #include "dcoptions.h" #include "dchublistmanager.h" #include "dcconnectionmanager.h" #include "dctransferview.h" #include "dcconfig.h" #include "dchubsearch.h" #include "dcspy.h" #include "dcuserslist.h" #include "dctranslator.h" #include "dcevent.h" #include "dcpluginmanager.h" #include "dcmenuhandler.h" #include "dciconloader.h" #include "dcguiutils.h" #include "DCDialogAbout.h" #include "ui/DCDialogDebugSettings.h" #include #include #include #include #include #include #include #include #include #if defined(HAVE_CONFIG_H) #include #endif #if defined(HAVE_MALLOC_H) #include #include #endif DCGuiApp * g_pMainWin = NULL; /** */ DCGuiApp::DCGuiApp() { StringMap * map; StringMap * tabBarMap; int width,height; bool b; m_bTransferViewGotTrayed = false; m_bIsQuitPromptVisible = false; setWindowTitle( tr("Valknut") + QString(" ") + QString(PACKAGE_VERSION) ); // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiICON_22x22) ); SetTheme(); /////////////////////////////////////////////////////////////////// // call inits to invoke all other construction parts initView(); initActions(); initMenuBar(); initToolBar(); initStatusBar(); initTray(); connect( g_pConfig, SIGNAL(defaultDownloadModeChanged()), this, SLOT(slotDefaultDownloadModeChanged()) ); connect( g_pConfig, SIGNAL(awayModeChanged( eUserAwayMode )), this, SLOT(slotAwayModeChanged( eUserAwayMode )) ); connect( g_pConfig, SIGNAL(autoAwayModeChanged( bool )), this, SLOT(slotAutoAwayModeChanged( bool )) ); if ( !(g_pConfig->GetBackgroundPixmap().isEmpty()) ) { QPixmap bp; if ( bp.load(g_pConfig->GetBackgroundPixmap()) ) pMdiArea->setBackground(bp); } g_pConfig->GetAppGeometry( width, height ); resize( width, height ); b = true; // init transferview if ( g_pConfig->GetMap("TRANSFERVIEW",map) ) { if ( (*map)["DOCKED"].toInt() == 0 ) { b = false; } } if ( b ) { pTransferViewDock->setFloating(false); if ( ((*map)["HEIGHT"].toInt() != 0) && ((*map)["WIDTH"].toInt() != 0) ) { //pTransferViewDock->setFixedExtentHeight((*map)["HEIGHT"].toInt()); //pTransferViewDock->setFixedExtentWidth((*map)["WIDTH"].toInt()); } bool nl = true; if ( (*map)["NL"] == "FALSE" ) { nl = false; } //moveDockWindow( pTransferViewDock, Qt::Dock((*map)["DOCK"].toInt()), nl, (*map)["INDEX"].toInt(), (*map)["EXTRAOFFSET"].toInt() ); } else { pTransferViewDock->setFloating(true); if ( ((*map)["HEIGHT"].toInt() != 0) && ((*map)["WIDTH"].toInt() != 0) ) { pTransferViewDock->resize( (*map)["WIDTH"].toInt(), (*map)["HEIGHT"].toInt() ); } } viewTabBar->setChecked(true); viewToolBar->setChecked(true); viewStatusBar->setChecked(true); m_bWasMaximized = false; // init main window if ( g_pConfig->GetMap("MAINVIEW",map) ) { if ( (*map)["MAXIMIZED"].toInt() == 1 ) { m_bWasMaximized = true; } else { m_bWasMaximized = false; } if ( (*map)["DOCKED"].toInt() == 0 ) { //fileToolbar->setFloating(true); } else { //fileToolbar->setFloating(false); //moveDockWindow( fileToolbar, Qt::Dock((*map)["DOCK"].toInt()) ); } if ( (*map)["USETABS"].toInt() == 1 ) { viewUseTabs->setChecked(true); slotChangeMDIViewMode(viewUseTabs); } else { viewUseWindows->setChecked(true); } } if ( g_pConfig->GetTabBar() == false ) viewTabBar->toggle(); if ( g_pConfig->GetToolBar() == false ) viewToolBar->toggle(); if ( g_pConfig->GetStatusBar() == false ) viewStatusBar->toggle(); if ( g_pConfig->GetShowTransferWin() ) { pTransferViewDock->show(); } else { pTransferViewDock->hide(); } // restore tabbar position and state if ( g_pConfig->GetMap("TABBAR",tabBarMap) ) { int x = (*tabBarMap)["X"].toInt(); int y = (*tabBarMap)["Y"].toInt(); int w = (*tabBarMap)["WIDTH"].toInt(); int h = (*tabBarMap)["HEIGHT"].toInt(); if ( (*tabBarMap)["DOCKED"].toInt() == 0 ) { //windowsTabBar->setFloating(true); if ( (w != 0) && (h != 0) ) { windowsTabBar->resize(w,h); } windowsTabBar->move(x,y); } else { //windowsTabBar->setFloating(false); bool nl = true; if ( (*tabBarMap)["NL"] == "FALSE" ) { nl = false; } //moveDockWindow( windowsTabBar, Qt::Dock((*tabBarMap)["DOCK"].toInt()), nl, (*tabBarMap)["INDEX"].toInt(), (*tabBarMap)["EXTRAOFFSET"].toInt() ); /* if ( (w != 0) && (h != 0) ) { windowsTabBar->setFixedExtentWidth(w); windowsTabBar->setFixedExtentHeight(h); } */ } } restoreState(g_pConfig->GetQMainWindowState()); new DCTranslator( this ); // install event filter on qApp ;-) if ( g_pConfig->GetAutoAwayMode() ) { qApp->installEventFilter(&m_ApplicationEvents); } // init timer m_pTimer = new QTimer(); connect( m_pTimer, SIGNAL(timeout()), this, SLOT(slotTimeout()) ); // start timer m_pTimer->start( 1000 ); g_pMainWin = this; } /** */ DCGuiApp::~DCGuiApp() { g_pMainWin = NULL; deinitActions(); // remove event-filter from appl. if ( g_pConfig->GetAutoAwayMode() ) { qApp->removeEventFilter(&m_ApplicationEvents); } // stop timer m_pTimer->stop(); delete m_pTimer; deinitTray(); deinitView(); delete g_pTranslator; } /** */ void DCGuiApp::initActions() { QIcon optionsIcon( g_pIconLoader->GetPixmap(eiCONFIGURE_32x32) ); optionsIcon.addPixmap( g_pIconLoader->GetPixmap(eiCONFIGURE) ); fileOptions = new QAction(this); fileOptions->setText(tr("&Options")); fileOptions->setIcon(optionsIcon); fileOptions->setShortcut(tr("Ctrl+O")); fileOptions->setStatusTip(tr("Open options dialog")); fileOptions->setWhatsThis(tr("Open options dialog\n\nOpens a dialog where settings can be changed.")); connect(fileOptions, SIGNAL(triggered()), this, SLOT(slotFileOptions())); fileFileListBrowser = new QAction(this); fileFileListBrowser->setText(tr("Filelist browser")); fileFileListBrowser->setIcon( QIcon( g_pIconLoader->GetPixmap(eiVIEW_SIDETREE) ) ); fileFileListBrowser->setStatusTip(tr("Open filelist browser")); fileFileListBrowser->setWhatsThis(tr("Open filelist browser\n\nOpen an empty filelist browser that you can use to open filelists from disk.")); connect(fileFileListBrowser, SIGNAL(triggered()), this, SLOT(slotFileFileListBrowser())); fileFileListBrowserLocal = new QAction(this); fileFileListBrowserLocal->setText(tr("Filelist browser local")); fileFileListBrowserLocal->setIcon( QIcon( g_pIconLoader->GetPixmap(eiVIEW_SIDETREE) ) ); fileFileListBrowserLocal->setStatusTip(tr("Open local filelist browser")); fileFileListBrowserLocal->setWhatsThis(tr("Open local filelist browser\n\nView the files in your own share.")); connect(fileFileListBrowserLocal, SIGNAL(triggered()), this, SLOT(slotFileFileListBrowserLocal())); QIcon refreshIcon( g_pIconLoader->GetPixmap(eiRELOAD_32x32) ); refreshIcon.addPixmap( g_pIconLoader->GetPixmap(eiRELOAD) ); fileFileListRefresh = new QAction(this); fileFileListRefresh->setText(tr("Refresh share")); fileFileListRefresh->setIcon( refreshIcon ); fileFileListRefresh->setStatusTip(tr("Refresh share")); fileFileListRefresh->setWhatsThis(tr("Refresh share\n\nUpdate your share to match file changes on disk.")); connect( fileFileListRefresh, SIGNAL(triggered()), this, SLOT(slotFileCreateShare()) ); fileQuickOptions = new QAction(this); fileQuickOptions->setText(tr("Quick options")); fileQuickOptions->setShortcut(tr("F12")); fileQuickOptions->setStatusTip(tr("Select default download mode")); connect(fileQuickOptions, SIGNAL(triggered()), this, SLOT(slotFileQuickOptions())); /** Default download mode */ fileDefaultDldAsk = new QAction(this); fileDefaultDldAsk->setText(tr("Download mode: Ask")); fileDefaultDldAsk->setStatusTip(tr("Set default download mode to: Ask")); fileDefaultDldAsk->setWhatsThis(tr("Download mode: Ask\n\nPrompt for single or multi source mode when starting a download.")); fileDefaultDldAsk->setCheckable(true); fileDefaultDldSingle = new QAction(this); fileDefaultDldSingle->setText(tr("Download mode: Single")); fileDefaultDldSingle->setStatusTip(tr("Set default download mode to: Single")); fileDefaultDldSingle->setWhatsThis(tr("Download mode: Single\n\nEach file will be downloaded from a single user without using chunked downloading.")); fileDefaultDldSingle->setCheckable(true); fileDefaultDldMulti = new QAction(this); fileDefaultDldMulti->setText(tr("Download mode: Multi")); fileDefaultDldMulti->setStatusTip(tr("Set default download mode to: Multi")); fileDefaultDldMulti->setWhatsThis(tr("Download mode: Multi\n\nEach file will be downloaded in multiple chunks possibly from different users.")); fileDefaultDldMulti->setCheckable(true); fileDefaultDldGroup = new QActionGroup( this ); connect( fileDefaultDldGroup, SIGNAL( selected(QAction*) ), this, SLOT(slotChangeDefaultDldMode(QAction*)) ); fileDefaultDldGroup->addAction(fileDefaultDldAsk); fileDefaultDldGroup->addAction(fileDefaultDldSingle); fileDefaultDldGroup->addAction(fileDefaultDldMulti); slotDefaultDownloadModeChanged(); fileReloadPlugins = new QAction(this); fileReloadPlugins->setText(tr("&Reload Plugins")); fileReloadPlugins->setStatusTip(tr("Reload Plugins")); fileReloadPlugins->setWhatsThis(tr("Reload Plugins\n\nScan for new and reload any add-on software.")); connect(fileReloadPlugins, SIGNAL(triggered()), this, SLOT(slotFileReloadPlugins())); fileQuit = new QAction(this); fileQuit->setText(tr("Exit")); fileQuit->setIcon( QIcon( g_pIconLoader->GetPixmap(eiEXIT) ) ); fileQuit->setShortcut(tr("Ctrl+Q")); fileQuit->setStatusTip(tr("Quits the application")); fileQuit->setWhatsThis(tr("Exit\n\nQuits the application.")); connect(fileQuit, SIGNAL(triggered()), this, SLOT(slotFileQuit())); viewTabBar = new QAction(this); viewTabBar->setText(tr("Tabbar")); viewTabBar->setCheckable(true); viewTabBar->setStatusTip(tr("Enables/disables the tabbar")); viewTabBar->setWhatsThis(tr("Tabbar\n\nEnables/disables the tabbar. The tabbar shows a tab for each hub window.")); connect(viewTabBar, SIGNAL(toggled(bool)), this, SLOT(slotViewTabBar(bool))); viewToolBar = new QAction(this); viewToolBar->setText(tr("Tool&bar")); viewToolBar->setCheckable(true); viewToolBar->setStatusTip(tr("Enables/disables the toolbar")); viewToolBar->setWhatsThis(tr("Toolbar\n\nEnables/disables the toolbar.")); connect(viewToolBar, SIGNAL(toggled(bool)), this, SLOT(slotViewToolBar(bool))); viewStatusBar = new QAction(this); viewStatusBar->setText(tr("&Statusbar")); viewStatusBar->setCheckable(true); viewStatusBar->setStatusTip(tr("Enables/disables the statusbar")); viewStatusBar->setWhatsThis(tr("Statusbar\n\nEnables/disables the statusbar.")); connect(viewStatusBar, SIGNAL(toggled(bool)), this, SLOT(slotViewStatusBar(bool))); viewTrayIcon = new QAction(this); viewTrayIcon->setText(tr("System Tray Icon")); viewTrayIcon->setCheckable(true); viewTrayIcon->setStatusTip(tr("Enables/disables the system tray icon")); viewTrayIcon->setWhatsThis(tr("System Tray Icon\n\nAdds or removes an icon in the system tray area.")); viewTrayIcon->setChecked(g_pConfig->GetEnableTray()); connect( viewTrayIcon, SIGNAL(toggled(bool)), this, SLOT(slotViewTrayIcon(bool)) ); viewDock = new QAction(this); viewDock->setText(tr("&Dock")); viewDock->setStatusTip(tr("Dock the application")); viewDock->setWhatsThis(tr("Dock\n\nDock the application. Only the system tray icon will be visible.")); viewDock->setEnabled(g_pConfig->GetEnableTray()); connect(viewDock, SIGNAL(triggered()), this, SLOT(slotViewDock())); viewUseWindows = new QAction(this); viewUseWindows->setText(tr("Windows")); viewUseWindows->setStatusTip(tr("Use windows")); viewUseWindows->setWhatsThis(tr("Use windows\n\nUse the classic multiple document interface, the valknut window will contain other windows.")); viewUseWindows->setCheckable(true); viewUseTabs = new QAction(this); viewUseTabs->setText(tr("Tabs")); viewUseTabs->setStatusTip(tr("Use tabs")); viewUseTabs->setWhatsThis(tr("Use tabs\n\nUse tabs for everything similar to recent versions of DC++ and LinuxDC++.")); viewUseTabs->setCheckable(true); // exclusive by default viewUseTabsGroup = new QActionGroup(this); connect( viewUseTabsGroup, SIGNAL(selected(QAction*)), this, SLOT(slotChangeMDIViewMode(QAction*)) ); viewUseTabsGroup->addAction(viewUseWindows); viewUseTabsGroup->addAction(viewUseTabs); windowCascade = new QAction(this); windowCascade->setText(tr("&Cascade")); windowCascade->setStatusTip(tr("Cascades all windows")); windowCascade->setWhatsThis(tr("Cascade\n\nCascades all windows.")); connect(windowCascade, SIGNAL(triggered()), pMdiArea, SLOT(cascadeSubWindows())); windowTile = new QAction(this); windowTile->setText(tr("&Tile Vertically")); windowTile->setStatusTip(tr("Tiles all windows vertically")); windowTile->setWhatsThis(tr("Tile Vertically\n\nTiles all windows vertically.")); connect(windowTile, SIGNAL(triggered()), this, SLOT(tileVertically())); windowTileHor = new QAction(this); windowTileHor->setText(tr("Tile &Horizontally")); windowTileHor->setStatusTip(tr("Tiles all windows horizontally.")); windowTileHor->setWhatsThis(tr("Tile Horizontally\n\nTiles all windows horizontally.")); connect(windowTileHor, SIGNAL(triggered()), pMdiArea, SLOT(tileSubWindows())); windowMinimize = new QAction(this); windowMinimize->setText(tr("&Minimize")); windowMinimize->setStatusTip(tr("Minimize all windows.")); windowMinimize->setWhatsThis(tr("Minimize\n\nMinimize all windows.")); connect(windowMinimize, SIGNAL(triggered()), this, SLOT(slotWindowMinimize())); windowCloseHubs = new QAction(this); windowCloseHubs->setText(tr("Close disconnected hubs")); windowCloseHubs->setStatusTip(tr("Close all disconnected hub windows.")); windowCloseHubs->setWhatsThis(tr("Close disconnected hubs\n\nClose all disconnected hub windows.")); connect(windowCloseHubs, SIGNAL(triggered()), this, SLOT(slotWindowCloseHubs())); windowCloseAllChats = new QAction(this); windowCloseAllChats->setText(tr("Close all chat windows")); windowCloseAllChats->setStatusTip(tr("Close all chat windows.")); windowCloseAllChats->setWhatsThis(tr("Close all chat windows\n\nClose all chat windows.")); connect(windowCloseAllChats, SIGNAL(triggered()), this, SLOT(slotWindowCloseAllChats())); windowCloseOfflineChats = new QAction(this); windowCloseOfflineChats->setText(tr("Close all offline chat windows")); windowCloseOfflineChats->setStatusTip(tr("Close all offline chat windows.")); windowCloseOfflineChats->setWhatsThis(tr("Close all offline chat windows\n\nClose all chat windows where the user is no longer on the hub.")); connect( windowCloseOfflineChats, SIGNAL(triggered()), this, SLOT(slotWindowCloseOfflineChats()) ); windowCloseFilelists = new QAction(this); windowCloseFilelists->setText(tr("Close all filelist windows")); windowCloseFilelists->setStatusTip(tr("Close all filelist windows.")); windowCloseFilelists->setWhatsThis(tr("Close all filelist windows\n\nClose all filelist browsers.")); connect( windowCloseFilelists, SIGNAL(triggered()), this, SLOT(slotWindowCloseFilelists()) ); windowCloseSearches = new QAction(this); windowCloseSearches->setText(tr("Close all search windows")); windowCloseSearches->setStatusTip(tr("Close all search windows.")); windowCloseSearches->setWhatsThis(tr("Close all search windows\n\nClose all search windows.")); connect( windowCloseSearches, SIGNAL(triggered()), this, SLOT(slotWindowCloseSearches()) ); windowAction = new QActionGroup(this); windowAction->addAction(windowCascade); windowAction->addAction(windowTile); windowAction->addAction(windowTileHor); windowAction->addAction(windowMinimize); windowAction->addAction(windowCloseHubs); windowAction->addAction(windowCloseAllChats); windowAction->addAction(windowCloseOfflineChats); windowAction->addAction(windowCloseFilelists); windowAction->addAction(windowCloseSearches); windowsGroup = new QActionGroup(this); connect( windowsGroup, SIGNAL(triggered(QAction*)), this, SLOT(windowMenuActivated(QAction*)) ); /** server list */ actionServerList = new QAction(this); actionServerList->setText(tr("H&ub List")); actionServerList->setIcon( QIcon( g_pIconLoader->GetPixmap(eiSERVER) ) ); actionServerList->setShortcut(tr("Ctrl+U")); actionServerList->setStatusTip(tr("Show Hub List.")); actionServerList->setWhatsThis(tr("Hub List\n\nShows the lists of public and bookmarks hubs.")); connect(actionServerList, SIGNAL(triggered()), this, SLOT(slotActionServerList())); /** tranfer list */ actionTransferList = new QAction(this); actionTransferList->setText(tr("&Transfer List")); actionTransferList->setIcon( QIcon( g_pIconLoader->GetPixmap(eiTRANSFER) ) ); actionTransferList->setShortcut(tr("Ctrl+T")); actionTransferList->setStatusTip(tr("Show Transfer List.")); actionTransferList->setWhatsThis(tr("Transfer List\n\nShows running transfers, users you are waiting to download from, files you have queued to download, slots granted, and log of transfers.")); connect(actionTransferList, SIGNAL(triggered()), this, SLOT(slotActionTransferList())); /** hub search */ QIcon searchIcon( g_pIconLoader->GetPixmap(eiFIND_32x32) ); searchIcon.addPixmap( g_pIconLoader->GetPixmap(eiFIND) ); actionHubSearch = new QAction(this); actionHubSearch->setText(tr("Hub &Search")); actionHubSearch->setIcon( searchIcon ); actionHubSearch->setShortcut(tr("Ctrl+S")); actionHubSearch->setStatusTip(tr("Open Hub Search.")); actionHubSearch->setWhatsThis(tr("Hub Search\n\nOpens a search window where you can search for files.")); connect(actionHubSearch, SIGNAL(triggered()), this, SLOT(slotActionHubSearch())); /** spy */ actionSpy = new QAction(this); actionSpy->setText(tr("S&py")); actionSpy->setIcon( QIcon( g_pIconLoader->GetPixmap(eiSPY) ) ); actionSpy->setShortcut(tr("Ctrl+P")); actionSpy->setStatusTip(tr("Show Search Spy.")); actionSpy->setWhatsThis(tr("Spy\n\nThe search spy shows incoming searches and search statistics.")); connect(actionSpy, SIGNAL(triggered()), this, SLOT(slotActionSpy())); /** users */ QIcon usersIcon( g_pIconLoader->GetPixmap(eiUSERS_32x32) ); usersIcon.addPixmap( g_pIconLoader->GetPixmap(eiUSERS) ); actionUsers = new QAction(this); actionUsers->setText(tr("Users")); actionUsers->setIcon( usersIcon ); actionUsers->setShortcut(tr("Ctrl+F")); actionUsers->setStatusTip(tr("Show Users List.")); actionUsers->setWhatsThis(tr("Users\n\nList of favorite users, showing if they are online.")); connect(actionUsers, SIGNAL(triggered()), this, SLOT(slotActionUsers())); /** actiongroup for away mode */ actionGroupAwayMode = new QActionGroup( this ); actionGroupAwayMode->setExclusive( true ); /** away mode normal */ actionAwayModeNormal = new QAction(this); actionAwayModeNormal->setText(tr("&Normal")); actionAwayModeNormal->setCheckable(true); actionAwayModeNormal->setActionGroup(actionGroupAwayMode); actionAwayModeNormal->setShortcut(tr("Ctrl+N")); actionAwayModeNormal->setStatusTip(tr("Set away mode to normal")); actionAwayModeNormal->setWhatsThis(tr("Away mode: normal\n\nNormal mode, away message will not be sent automatically.")); actionAwayModeNormal->setChecked(true); /** away mode away */ actionAwayModeAway = new QAction(this); actionAwayModeAway->setText(tr("&Away")); actionAwayModeAway->setActionGroup(actionGroupAwayMode); actionAwayModeAway->setShortcut(tr("Ctrl+A")); actionAwayModeAway->setStatusTip(tr("Set away mode to away.")); actionAwayModeAway->setWhatsThis(tr("Away mode: normal\n\nYou will be marked as away and your away message will be sent in response to a new private message.")); actionAwayModeAway->setCheckable(true); connect( actionGroupAwayMode, SIGNAL( selected( QAction* ) ), this, SLOT( slotChangeAwayMode() ) ); helpAboutApp = new QAction(this); helpAboutApp->setText(tr("&About...")); helpAboutApp->setStatusTip(tr("About the application.")); helpAboutApp->setWhatsThis(tr("About\n\nAbout the application. Displays version, copyright and licensing information.")); connect(helpAboutApp, SIGNAL(triggered()), this, SLOT(slotHelpAbout())); helpManualApp = new QAction(this); helpManualApp->setText(tr("&Manual...")); helpManualApp->setStatusTip(tr("Online User Manual.")); helpManualApp->setWhatsThis(tr("Manual\n\nOnline User Manual. Launches the configured web browser.")); connect(helpManualApp, SIGNAL(triggered()), this, SLOT(slotHelpManual())); helpSupportApp = new QAction(this); helpSupportApp->setText(tr("&Support...")); helpSupportApp->setStatusTip(tr("Connect to Valknut hub")); helpSupportApp->setWhatsThis(tr("Support\n\nConnect to the Valknut hub.")); connect(helpSupportApp, SIGNAL(triggered()), this, SLOT(slotHelpSupport())); debugSettings = new QAction(this); debugSettings->setText(tr("Debug Settings...")); debugSettings->setStatusTip(tr("Settings for debugging")); debugSettings->setWhatsThis(tr("Debug Settings\n\nChange settings useful for debugging.")); connect( debugSettings, SIGNAL(triggered()), this, SLOT(slotDebugSettings()) ); } /** */ void DCGuiApp::deinitActions() { delete fileOptions; delete fileFileListBrowser; delete fileFileListBrowserLocal; delete fileFileListRefresh; delete fileQuickOptions; delete fileDefaultDldAsk; delete fileDefaultDldSingle; delete fileDefaultDldMulti; delete fileDefaultDldGroup; delete fileReloadPlugins; delete fileQuit; delete viewTabBar; delete viewToolBar; delete viewStatusBar; delete viewTrayIcon; delete viewDock; delete viewUseWindows; delete viewUseTabs; delete viewUseTabsGroup; delete windowCascade; delete windowTile; delete windowTileHor; delete windowMinimize; delete windowCloseHubs; delete windowCloseAllChats; delete windowCloseOfflineChats; delete windowCloseFilelists; delete windowCloseSearches; delete windowAction; delete windowsGroup; delete actionServerList; delete actionTransferList; delete actionHubSearch; delete actionSpy; delete actionUsers; delete actionAwayModeNormal; delete actionAwayModeAway; delete actionGroupAwayMode; delete helpAboutApp; delete helpManualApp; delete helpSupportApp; delete debugSettings; } /** */ void DCGuiApp::initMenuBar() { /////////////////////////////////////////////////////////////////// // MENUBAR /////////////////////////////////////////////////////////////////// // menuBar entry pFileMenu pFileMenu=new QMenu(this); pFileMenu->setTitle(tr("&File")); pFileMenu->addAction(fileOptions); pQuickOptionsMenu=new QMenu(this); pQuickOptionsMenu->addActions(fileDefaultDldGroup->actions()); pQuickOptionsMenu->setTitle(tr("Quick Options")); pFileMenu->addMenu(pQuickOptionsMenu); pFileMenu->addSeparator(); pFileMenu->addAction(fileFileListBrowser); pFileMenu->addAction(fileFileListBrowserLocal); pFileMenu->addSeparator(); pFileMenu->addAction(fileFileListRefresh); pFileMenu->addSeparator(); pFileMenu->addAction(fileReloadPlugins); pFileMenu->addSeparator(); pFileMenu->addAction(fileQuit); /////////////////////////////////////////////////////////////////// // menuBar entry viewMenu pViewMenu=new QMenu(this); /* FIXME remove once QT >= 4.4 is required */ if ( pMdiArea->property("viewMode").isValid() ) { QMenu * alltabs = new QMenu(pViewMenu); alltabs->setTitle(tr("View mode")); alltabs->addActions(viewUseTabsGroup->actions()); pViewMenu->addMenu(alltabs); pViewMenu->addSeparator(); } pViewMenu->setTitle(tr("&View")); pViewMenu->addAction(viewTabBar); pViewMenu->addAction(viewToolBar); pViewMenu->addAction(viewStatusBar); pViewMenu->addAction(viewTrayIcon); pViewMenu->addAction(viewDock); /////////////////////////////////////////////////////////////////// // menuBar awayMenu pAwayMenu=new QMenu(this); pAwayMenu->setTitle(tr("Away &Mode")); pAwayMenu->addAction(actionAwayModeNormal); pAwayMenu->addAction(actionAwayModeAway); /////////////////////////////////////////////////////////////////// // menuBar actionMenu pActionMenu=new QMenu(this); pActionMenu->setTitle(tr("&Action")); pActionMenu->addAction(actionServerList); pActionMenu->addAction(actionTransferList); pActionMenu->addAction(actionHubSearch); pActionMenu->addAction(actionSpy); pActionMenu->addAction(actionUsers); pActionMenu->addSeparator(); pActionMenu->addMenu(pAwayMenu); /////////////////////////////////////////////////////////////////// // menuBar entry windowMenu pWindowMenu = new QMenu(this); pWindowMenu->setTitle(tr("&Window")); connect(pWindowMenu, SIGNAL(aboutToShow()), this, SLOT(windowMenuAboutToShow())); /////////////////////////////////////////////////////////////////// // menuBar entry helpMenu pHelpMenu=new QMenu(this); pHelpMenu->setTitle(tr("&Help")); pHelpMenu->addAction(helpAboutApp); pHelpMenu->addSeparator(); pHelpMenu->addAction(helpManualApp); pHelpMenu->addSeparator(); pHelpMenu->addAction(helpSupportApp); pHelpMenu->addSeparator(); pHelpMenu->addAction(debugSettings); pHelpMenu->addSeparator(); pHelpMenu->addAction(QWhatsThis::createAction(pHelpMenu)); menuBar()->addMenu(pFileMenu); menuBar()->addMenu(pViewMenu); menuBar()->addMenu(pActionMenu); menuBar()->addMenu(pWindowMenu); menuBar()->addMenu(pHelpMenu); } /** */ void DCGuiApp::initToolBar() { /////////////////////////////////////////////////////////////////// // TOOLBAR fileToolbar = new QToolBar(this); fileToolbar->setObjectName("FileToolBar"); fileToolbar->setWindowTitle(tr("Toolbar")); fileToolbar->addAction(QWhatsThis::createAction(fileToolbar)); fileToolbar->addSeparator(); fileToolbar->addAction(fileOptions); fileToolbar->addSeparator(); fileToolbar->addAction(actionServerList); fileToolbar->addAction(actionHubSearch); fileToolbar->addAction(actionTransferList); fileToolbar->addAction(actionSpy); fileToolbar->addAction(actionUsers); fileToolbar->addSeparator(); fileToolbar->addAction(fileFileListRefresh); // ADD USERS HERE fileToolbar->addSeparator(); addToolBar(Qt::TopToolBarArea, fileToolbar); windowsTabBar = new QToolBar(this); windowsTabBar->setWindowTitle(tr("Tab Bar")); windowsTabBar->setObjectName("ClientsTabBar"); addToolBar(Qt::TopToolBarArea, windowsTabBar); // init tabbar g_pConnectionManager->InitTabBar(windowsTabBar); } /** */ void DCGuiApp::initStatusBar() { /////////////////////////////////////////////////////////////////// //STATUSBAR statusBar()->showMessage(tr("Ready.")); statusDMLabel = new QLabel(statusBar()); statusDMLabel->setObjectName("DownloadManagerStatusLabel"); statusDMLabel->setFrameShape( QFrame::NoFrame ); statusDMLabel->setFrameShadow( QFrame::Plain ); statusBar()->addPermanentWidget(statusDMLabel); statusTRLabel = new QLabel(statusBar()); statusTRLabel->setObjectName("TransferStatusLabel"); statusTRLabel->setFrameShape( QFrame::NoFrame ); statusTRLabel->setFrameShadow( QFrame::Plain ); statusBar()->addPermanentWidget(statusTRLabel); statusTRLabel->setToolTip( tr("RX/TX Traffic.") ); statusDSLabel = new QLabel(statusBar()); statusDSLabel->setObjectName("DiscSpaceStatusLabel"); statusDSLabel->setFrameShape( QFrame::NoFrame ); statusDSLabel->setFrameShadow( QFrame::Plain ); statusBar()->addPermanentWidget(statusDSLabel); statusDSLabel->setToolTip( tr("Available disc space.") ); statusFMLabel = new QLabel(statusBar()); statusFMLabel->setObjectName("FileManagerStatusLabel"); statusFMLabel->setFrameShape( QFrame::NoFrame ); statusFMLabel->setFrameShadow( QFrame::Plain ); statusBar()->addPermanentWidget(statusFMLabel); statusFMLabel->hide(); statusTRLabel->setContextMenuPolicy( Qt::CustomContextMenu ); connect( statusTRLabel, SIGNAL(customContextMenuRequested(const QPoint &)), this, SLOT(slotContextMenuTraffic(const QPoint &)) ); } /** */ void DCGuiApp::initView() { pMdiArea = new QMdiArea( this ); //if QT_VERSION >= 0x040400 // pMdiArea->setActivationOrder( QMdiArea::StackingOrder ); //endif /* * this is so you can compile with QT 4.3 but if you run with QT 4.4 * the property still gets set */ if ( pMdiArea->property("activationOrder").isValid() ) { pMdiArea->setProperty("activationOrder",QMdiArea::StackingOrder); } setCentralWidget(pMdiArea); pMdiArea->showMaximized(); // create connection manager view CConnectionManager::SetInstance(new DCConnectionManager(pMdiArea)); // create hublist manager view CHubListManager::SetInstance(new DCHubListManager(pMdiArea)); g_pHubListManager->GetMdiSubWindow()->hide(); g_pHubListManager->hide(); // create dock window for transfer view pTransferViewDock = new QDockWidget( this ); pTransferViewDock->setWindowTitle(tr("Transfer List")); pTransferViewDock->setObjectName("TransferViewDock"); //pTransferViewDock->setResizeEnabled(true); addDockWidget(Qt::BottomDockWidgetArea, pTransferViewDock); pTransferViewDock->hide(); //connect( pTransferViewDock, SIGNAL(placeChanged( Q3DockWindow::Place )), this, SLOT(slotTransferViewDockPlaceChanged( Q3DockWindow::Place )) ); // create transfer view CDownloadManager::SetInstance(new DCTransferView(pTransferViewDock)); pTransferViewDock->setWidget(g_pTransferView); // create spy view new DCSpy(pMdiArea); g_pSpy->GetMdiSubWindow()->hide(); g_pSpy->hide(); // create users view new DCUsersList(pMdiArea); g_pUsersList->GetMdiSubWindow()->hide(); g_pUsersList->hide(); /* if ( g_pConfig->GetMode() == ecmACTIVE ) { CString error; if ( g_pTransferView->DLM_InitListen(error) == false ) { QString s; s = error.Data(); if ( s.isEmpty() ) s = tr("(no error message from socket)"); else s = "(" + s + ")"; QMessageBox::critical( 0, "Valknut", tr("TCP listen failed, change to passive mode! ") + s ); g_pConfig->SetMode(ecmPASSIVE); } } */ } /** */ void DCGuiApp::deinitView() { if ( g_pTransferView ) { delete g_pTransferView; } if ( pTransferViewDock ) { removeDockWidget(pTransferViewDock); delete pTransferViewDock; pTransferViewDock = 0; } if ( g_pHubListManager ) { delete g_pHubListManager; } if ( g_pSpy ) { delete g_pSpy; } if ( g_pUsersList ) { delete g_pUsersList; } if ( g_pConnectionManager ) { delete g_pConnectionManager; } } /** setup all windows */ void DCGuiApp::initWindows() { //////////////////////////////////////////////////////////////////// StringMap * map; // setup hubview g_pConfig->GetMap("HUBVIEW",map); if ( (*map)["VISIBLE"].toInt() == 1 ) { const QPoint oldpos = g_pHubListManager->GetMdiSubWindow()->pos(); pMdiArea->addSubWindow( g_pHubListManager->GetMdiSubWindow() ); g_pHubListManager->GetMdiSubWindow()->move(oldpos); if ( (*map)["MAXIMIZED"].toInt() == 1 ) { g_pHubListManager->GetMdiSubWindow()->showMaximized(); g_pHubListManager->showMaximized(); } else if ( (*map)["MINIMIZED"].toInt() == 1 ) { g_pHubListManager->GetMdiSubWindow()->showMinimized(); g_pHubListManager->showMinimized(); } else { g_pHubListManager->GetMdiSubWindow()->show(); g_pHubListManager->show(); } } // setup spyview g_pConfig->GetMap("SPYVIEW",map); if ( (*map)["VISIBLE"].toInt() == 1 ) { const QPoint oldpos = g_pSpy->GetMdiSubWindow()->pos(); pMdiArea->addSubWindow( g_pSpy->GetMdiSubWindow() ); g_pSpy->GetMdiSubWindow()->move(oldpos); if ( (*map)["MAXIMIZED"].toInt() == 1 ) { g_pSpy->GetMdiSubWindow()->showMaximized(); g_pSpy->showMaximized(); } else if ( (*map)["MINIMIZED"].toInt() == 1 ) { g_pSpy->GetMdiSubWindow()->showMinimized(); g_pSpy->showMinimized(); } else { g_pSpy->GetMdiSubWindow()->show(); g_pSpy->show(); } } // setup userview g_pConfig->GetMap("USERVIEW",map); if ( (*map)["VISIBLE"].toInt() == 1 ) { const QPoint oldpos = g_pUsersList->GetMdiSubWindow()->pos(); pMdiArea->addSubWindow( g_pUsersList->GetMdiSubWindow() ); g_pUsersList->GetMdiSubWindow()->move(oldpos); if ( (*map)["MAXIMIZED"].toInt() == 1 ) { g_pUsersList->GetMdiSubWindow()->showMaximized(); g_pUsersList->showMaximized(); } else if ( (*map)["MINIMIZED"].toInt() == 1 ) { g_pUsersList->GetMdiSubWindow()->showMinimized(); g_pUsersList->showMinimized(); } else { g_pUsersList->GetMdiSubWindow()->show(); g_pUsersList->show(); } } } /** initialize the tray icon */ void DCGuiApp::initTray() { m_pTrayIcon = 0; m_bTray = false; if ( g_pConfig->GetEnableTray() ) { m_bEnableTray = true; m_pTrayIcon = new QSystemTrayIcon(); m_pTrayIcon->setIcon( g_pIconLoader->GetPixmap(eiICON_22x22) ); QMenu * traymenu = new QMenu(this); traymenu->setTitle("Valknut"); QAction * title = traymenu->addAction("Valknut"); title->setEnabled(false); traymenu->addSeparator(); QAction * dock = traymenu->addAction(tr("Dock/Undock")); connect( dock, SIGNAL(triggered(bool)), this, SLOT(slotViewDock()) ); QAction * remove = traymenu->addAction(tr("Remove tray icon")); connect ( remove, SIGNAL(triggered(bool)), this, SLOT(slotRemoveTrayIcon()) ); QAction * exit = traymenu->addAction(g_pIconLoader->GetPixmap(eiEXIT), tr("Exit")); connect( exit, SIGNAL(triggered(bool)), this, SLOT(slotFileQuit()) ); m_pTrayIcon->setContextMenu(traymenu); connect( m_pTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(slotTrayMenuTriggered(QSystemTrayIcon::ActivationReason)) ); m_pTrayIcon->show(); } else { m_bEnableTray = false; } } /** deinitialize the tray icon */ void DCGuiApp::deinitTray() { if ( m_pTrayIcon ) { disconnect( m_pTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(slotTrayMenuTriggered(QSystemTrayIcon::ActivationReason)) ); delete m_pTrayIcon->contextMenu(); m_pTrayIcon->hide(); delete m_pTrayIcon; m_pTrayIcon = 0; m_bEnableTray = false; } } /** */ bool DCGuiApp::queryExit() { if ( m_bIsQuitPromptVisible == false ) { show(); raise(); m_bTray = false; m_bIsQuitPromptVisible = true; int exit = QMessageBox::question(this, tr("Quit..."), tr("Do you really want to quit?"), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel); m_bIsQuitPromptVisible = false; return (exit==QMessageBox::Ok); } else { // never get here, m_bIsQuitPromptVisible is checked at event processing printf("Already asking to quit.\n"); return false; } } /** */ void DCGuiApp::slotTimeout() { if ( g_pConfig->GetAutoAwayMode() ) { // check for user input if ( m_ApplicationEvents.m_nNoUserInputTimer == 0 ) { // check away mode and reset to normal if ( g_pConfig->GetAwayMode() != euamNORMAL ) { actionAwayModeNormal->setChecked(true); g_pConfig->CConfig::SetAwayMode( euamNORMAL ); } m_ApplicationEvents.m_nNoUserInputTimer = time(0); } else { // away timeout if ( (time(0)-m_ApplicationEvents.m_nNoUserInputTimer) >= g_pConfig->GetAutoAwayTime() ) { // check away mode if ( g_pConfig->GetAwayMode() == euamNORMAL ) { actionAwayModeAway->setChecked(true); g_pConfig->CConfig::SetAwayMode( euamAWAY ); } m_ApplicationEvents.m_nNoUserInputTimer = time(0); } } } showFreeDiscSpace(); } /** */ void DCGuiApp::showFreeDiscSpace() { CString s = g_pConfig->GetDownloadFolder(); ulonglong n = 0; if ( s.NotEmpty() ) { if ( CDir::FreeDiscSpace( s, &n ) == false ) { n = 0; } } statusDSLabel->setText(DCGuiUtils::GetSizeString(n)); } /** */ void DCGuiApp::customEvent( QEvent * event ) { if ( event->type() == EVENT_UPDATE_DM_STATUSBAR ) { DC_DownloadManagerEvent * e = (DC_DownloadManagerEvent*)event; QString s = "SL: "; s += QString().setNum(e->m_pDownloadManagerInfo->slot_use_settings); s += '/'; s += QString().setNum(e->m_pDownloadManagerInfo->slot_max); s += ' '; s += QString().setNum(e->m_pDownloadManagerInfo->slot_use_rate_extra); s += '/'; if ( g_pConfig->GetExtraSlotsRate() > 0 ) { s += QString().setNum(g_pConfig->GetMaxExtraSlots()); } else { s += '0'; } s += ' '; s += QString().setNum(e->m_pDownloadManagerInfo->slot_use_operator); s += '/'; s += QString().setNum(e->m_pDownloadManagerInfo->slot_use_user); s += '/'; s += QString().setNum(e->m_pDownloadManagerInfo->slot_use_special); s += " UL: "; s += QString::fromAscii(CUtils::GetTransferString(e->m_pDownloadManagerInfo->Rate()).Data()); s += " DL: "; s += QString::fromAscii(CUtils::GetTransferString(e->m_pDownloadManagerInfo->rate_dl).Data()); statusDMLabel->setText(s); // set trayicon tooltip if ( m_pTrayIcon ) { QString tt = tr("Connected to "); tt += QString().setNum(g_pConnectionManager->GetConnectedHubCount()); tt += ' '; tt += tr("hubs"); tt += '\n'; tt += s; tt += '\n'; tt += statusTRLabel->text(); m_pTrayIcon->setToolTip( tt ); } event->accept(); } else if ( event->type() == EVENT_UPDATE_FM_STATUSBAR ) { DC_FileManagerEvent * e = (DC_FileManagerEvent*)event; QString s; switch(e->m_pFileManagerInfo->m_eFileManagerStatus) { case efmsCREATESHARELIST: s = "L "; break; case efmsCREATESEARCHINDEX: s = "S "; break; case efmsCREATEHASHLIST: s = "H "; break; case efmsNONE: statusFMLabel->hide(); statusBar()->showMessage(tr("Refresh share finished.")); break; default: break; } if ( !s.isEmpty() ) { s += QString().setNum(e->m_pFileManagerInfo->m_nProgress,'f',2); s += "%"; statusFMLabel->setText(s); statusFMLabel->show(); } event->accept(); } else if ( event->type() == EVENT_UPDATE_TR_STATUSBAR ) { DC_TrafficInfoEvent * e = (DC_TrafficInfoEvent*)event; QString s = "RX: "; s += DCGuiUtils::GetSizeString(e->m_pTrafficInfo->m_nRx); s += " TX: "; s += DCGuiUtils::GetSizeString(e->m_pTrafficInfo->m_nTx); statusTRLabel->setText(s); // set trayicon tooltip if ( m_pTrayIcon ) { QString tt = tr("Connected to "); tt += QString().setNum(g_pConnectionManager->GetConnectedHubCount()); tt += ' '; tt += tr("hubs"); tt += '\n'; tt += statusDMLabel->text(); tt += '\n'; tt += s; m_pTrayIcon->setToolTip( tt ); } event->accept(); } else { event->ignore(); } } /** */ void DCGuiApp::closeEvent( QCloseEvent * event ) { if ( m_bIsQuitPromptVisible == false ) { if ( slotFileQuit() == false ) { event->ignore(); } else { event->accept(); } } else { show(); raise(); m_bTray = false; event->ignore(); } } ///////////////////////////////////////////////////////////////////// // SLOT IMPLEMENTATION ///////////////////////////////////////////////////////////////////// /** */ void DCGuiApp::tileVertically() { int i,count =0; int y = 0; int heightForEach; // primitive horizontal tiling QList windows = pMdiArea->subWindowList(); if ( windows.count() == 0 ) { return; } for ( i = 0; i < windows.count(); i++ ) { if ( windows.at(i)->isEnabled() ) count++; } if ( count > 0 ) { heightForEach = pMdiArea->height() / count; for ( i = 0; i < windows.count(); i++ ) { if ( !windows.at(i)->isEnabled() ) continue; QMdiSubWindow * window = windows.at(i); if ( (window->isMaximized()) || (window->isMinimized())) { // prevent flicker window->hide(); window->showNormal(); } int preferredHeight = window->minimumHeight()+window->parentWidget()->baseSize().height(); int actHeight = QMAX(heightForEach, preferredHeight); window->setGeometry( 0, y, pMdiArea->width(), actHeight ); y += actHeight; } } } /** minimize all windows */ void DCGuiApp::slotWindowMinimize() { int i; QList windows = pMdiArea->subWindowList(); for ( i = 0; i < windows.count(); i++ ) { if ( windows.at(i)->isVisible() ) windows.at(i)->showMinimized(); } } /** close all chat windows */ void DCGuiApp::slotWindowCloseAllChats() { g_pConnectionManager->CloseAllChats(false); } /** */ void DCGuiApp::slotWindowCloseOfflineChats() { g_pConnectionManager->CloseAllChats(true); } /** close all chat windows */ void DCGuiApp::slotWindowCloseHubs() { g_pConnectionManager->CloseDisconnectedHubs(); } /** */ void DCGuiApp::slotWindowCloseFilelists() { closeWindowsOfClass("DCFileBrowser"); } /** */ void DCGuiApp::slotWindowCloseSearches() { closeWindowsOfClass("DCHubSearch"); } /** */ void DCGuiApp::slotFileOptions() { DCOptions * od; statusBar()->showMessage(tr("Open options dialog...")); od = new DCOptions(this); od->SetValues(); if ( QDialog::Accepted == od->exec() ) { // move values to dcconfig od->GetValues(); // save values g_pConfig->Save(); // update connected servers g_pConnectionManager->SendMyInfoToConnectedServers(); } /* * set theme only if it has changed, or reset theme if a different one was tested * also set theme if one theme was tested, but the old theme then saved * but no need to set the theme if it was set with the test button * od->GetTestedTheme() == old value of g_pConfig->GetTheme() if test button not pressed */ if ( od->GetTestedTheme() != g_pConfig->GetTheme() ) { SetTheme(); } delete od; statusBar()->showMessage(tr("Ready.")); } /** */ void DCGuiApp::slotFileFileListBrowser() { g_pTransferView->NewFileBrowser(QString::null,QString::null,QString::null,QString::null); } /** */ void DCGuiApp::slotFileFileListBrowserLocal() { g_pTransferView->NewLocalFileBrowser(false); } /** */ void DCGuiApp::slotFileReloadPlugins() { g_pPluginManager->DeInitPlugins(); g_pPluginManager->Load(); } /** */ void DCGuiApp::slotFileQuickOptions() { pQuickOptionsMenu->exec(QCursor::pos()); } /** */ void DCGuiApp::slotChangeDefaultDldMode(QAction* DldType) { DldType->setChecked(true); if (fileDefaultDldAsk->isChecked()) { g_pConfig->SetDefaultDownloadMode(0); } else if (fileDefaultDldSingle->isChecked()) { g_pConfig->SetDefaultDownloadMode(1); } else if (fileDefaultDldMulti->isChecked()) { g_pConfig->SetDefaultDownloadMode(2); } } /** */ void DCGuiApp::slotFileCreateShare() { QString s; if ( CFileManager::Instance()->CreateShareList() ) s = tr("Refresh share in progress."); else s = tr("Refresh share already in progress."); statusBar()->showMessage(s); } /** */ bool DCGuiApp::slotFileQuit() { StringMap * map; StringMap * tabBarMap; statusBar()->showMessage(tr("Exiting application...")); if ( g_pConfig->GetQueryOnExit() ) { if ( queryExit() == false ) { statusBar()->showMessage(tr("Exiting application... aborted")); return false; } } // close all search windows slotWindowCloseSearches(); // shutdown all transfers g_pTransferView->DLM_Shutdown(); // stop running searches CSearchManager::Instance()->StopSearch(); // close all clients g_pConnectionManager->DisconnectAllClients(); while( (g_pTransferView->DLM_ShutdownState() != essSHUTDOWNREADY) || (CSearchManager::Instance()->IsSearch()) || (g_pConnectionManager->GetConnectedHubCount() > 0) ) { qApp->processEvents(); #ifdef WIN32 Sleep(100); #else usleep(100); #endif } // close all hub windows g_pConnectionManager->CloseDisconnectedHubs(); g_pConfig->SetTabBar(viewTabBar->isChecked()); g_pConfig->SetToolBar(viewToolBar->isChecked()); g_pConfig->SetStatusBar(viewStatusBar->isChecked()); g_pConfig->SetAppGeometry( width(), height() ); // save transfer view settings g_pConfig->GetMap("TRANSFERVIEW",map); (*map)["X"] = QString().setNum(pTransferViewDock->x()); (*map)["Y"] = QString().setNum(pTransferViewDock->y()); (*map)["WIDTH"] = QString().setNum(pTransferViewDock->width()); (*map)["HEIGHT"] = QString().setNum(pTransferViewDock->height()); (*map)["DOCKED"] = QString().setNum(!(pTransferViewDock->isFloating())); /* Qt::Dock dock3; int index3; bool nl3; int extraOffset3; if ( getLocation( pTransferViewDock, dock3, index3, nl3, extraOffset3 ) ) { (*map)["DOCK"] = QString().setNum(dock3); QString nlstring; if ( nl3 ) { nlstring = "TRUE"; } else { nlstring = "FALSE"; } (*map)["NL"] = nlstring; (*map)["INDEX"] = QString().setNum(index3); (*map)["EXTRAOFFSET"] = QString().setNum(extraOffset3); } */ // save tabbar position and state g_pConfig->GetMap("TABBAR", tabBarMap); (*tabBarMap)["X"] = QString().setNum(windowsTabBar->x()); (*tabBarMap)["Y"] = QString().setNum(windowsTabBar->y()); (*tabBarMap)["WIDTH"] = QString().setNum(windowsTabBar->width()); (*tabBarMap)["HEIGHT"] = QString().setNum(windowsTabBar->height()); (*tabBarMap)["DOCKED"] = QString().setNum(!(windowsTabBar->isFloating())); g_pConfig->SetQMainWindowState(saveState()); g_pConfig->SetShowTransferWin( pTransferViewDock->isVisible() ); // save transfer list settings g_pTransferView->DeInitDocument(); // save hub list settings g_pHubListManager->DeInitDocument(); // save spy view settings g_pSpy->DeInitDocument(); // save user view settings g_pUsersList->DeInitDocument(); // init main window g_pConfig->GetMap("MAINVIEW",map); (*map)["MAXIMIZED"] = QString().setNum(isMaximized()); (*map)["DOCKED"] = QString().setNum(!(fileToolbar->isFloating())); (*map)["USETABS"] = QString().setNum(viewUseTabs->isChecked()); /* Qt::Dock dock; int index; bool nl; int extraOffset; if ( getLocation( fileToolbar, dock, index, nl, extraOffset ) ) { (*map)["DOCK"] = QString().setNum(dock); } */ /* Qt::Dock dock2; int index2; bool nl2; int extraOffset2; if ( getLocation( windowsTabBar, dock2, index2, nl2, extraOffset2 ) ) { (*tabBarMap)["DOCK"] = QString().setNum(dock2); QString nlstring; if ( nl2 ) { nlstring = "TRUE"; } else { nlstring = "FALSE"; } (*tabBarMap)["NL"] = nlstring; (*tabBarMap)["INDEX"] = QString().setNum(index2); (*tabBarMap)["EXTRAOFFSET"] = QString().setNum(extraOffset2); } */ // save gui config g_pConfig->SaveDCGui(); m_pTimer->stop(); qApp->quit(); statusBar()->showMessage(tr("Ready.")); return true; } /** */ void DCGuiApp::slotViewTabBar(bool toggle) { statusBar()->showMessage(tr("Toggle tabbar...")); /////////////////////////////////////////////////////////////////// // turn Toolbar on or off if (toggle== false) { windowsTabBar->hide(); } else { windowsTabBar->show(); } statusBar()->showMessage(tr("Ready.")); } /** */ void DCGuiApp::slotViewToolBar(bool toggle) { statusBar()->showMessage(tr("Toggle toolbar...")); /////////////////////////////////////////////////////////////////// // turn Toolbar on or off if (toggle== false) { fileToolbar->hide(); } else { fileToolbar->show(); } statusBar()->showMessage(tr("Ready.")); } /** */ void DCGuiApp::slotViewStatusBar(bool toggle) { statusBar()->showMessage(tr("Toggle statusbar...")); /////////////////////////////////////////////////////////////////// //turn Statusbar on or off if (toggle == false) { statusBar()->hide(); } else { statusBar()->show(); } statusBar()->showMessage(tr("Ready.")); } /** dock the application */ void DCGuiApp::slotViewDock() { if ( !m_pTrayIcon ) { QMessageBox::information(this, tr("Dock Application"), tr("The system tray icon must be enabled to dock the application.")); return; } statusBar()->showMessage(tr("Dock/Undock application...")); /////////////////////////////////////////////////////////////////// //dock/undock the application if ( m_bTray ) { if ( m_bWasMaximized ) { showMaximized(); } else { show(); } // show dcgui in front of any applications after undock raise(); // restore desktop position move(m_DesktopPosition); if ( m_bTransferViewGotTrayed ) { pTransferViewDock->show(); } m_bTray = false; } else { if ( isMinimized() ) { showNormal(); } else { // save old desktop position m_DesktopPosition = pos(); // save old maximized status m_bWasMaximized = isMaximized(); if ( pTransferViewDock->isVisible() && pTransferViewDock->isFloating() ) { m_bTransferViewGotTrayed = true; pTransferViewDock->hide(); } else { m_bTransferViewGotTrayed = false; } // hide application hide(); m_bTray = true; } } statusBar()->showMessage(tr("Ready.")); } /** */ void DCGuiApp::slotHelpAbout() { QString s; QDialog * dlg = 0; Ui::DCDialogAbout ui; ulonglong up = CSocket::m_Traffic.GetTraffic(ettTX); ulonglong down = CSocket::m_Traffic.GetTraffic(ettRX); double ratio = 0; if ( down > 0 ) { ratio = (double) up / (double) down; } dlg = new QDialog(this); ui.setupUi(dlg); s = ui.TextLabel2->text(); s += "\n\n"; s += tr("Valknut "); s += PACKAGE_VERSION; s += " ("; s += VALKNUT_BUILD_INFO; s += ")\n"; s += tr("Using dclib "); s += dclibVersion(); s += " ("; s += dclibBuildInfo(); s += ")\n"; s += trUtf8("Using Qt® "); s += qVersion(); s += "\n\n"; s += tr("Ratio: Overall: "); s += QString().setNum( ratio, 'f', 2 ); s += tr(" (Up: "); s += DCGuiUtils::GetSizeString( up ); s += tr(", Down: "); s += DCGuiUtils::GetSizeString( down ); s += tr(")\nThis session: "); up -= g_pConfig->GetStartUploaded(); down -= g_pConfig->GetStartDownloaded(); if ( down > 0 ) { ratio = (double) up / (double) down; } else { ratio = 0; } s += QString().setNum( ratio, 'f', 2 ); s += tr(" (Up: "); s += DCGuiUtils::GetSizeString( up ); s += tr(", Down: "); s += DCGuiUtils::GetSizeString( down ); s += ")"; ui.TextLabel_VERSION->setText( QString("Valknut ") + QString(PACKAGE_VERSION) ); dlg->setWindowIcon( QIcon( g_pIconLoader->GetPixmap(eiINFO) ) ); ui.PixmapLabel_ICON->setPixmap( g_pIconLoader->GetPixmap(eiICON_22x22) ); ui.TextLabel2->setText( s ); /* not usually done but is allowed, including a file in the middle of a function */ #include "about.h" ui.TextEdit_AUTHORS->setHtml(g_sAboutAuthors); // load license file QFile f(g_pConfig->GetValknutDataPath() + DIRSEPARATOR + "COPYING"); if ( f.open(QIODevice::ReadOnly) ) { QTextStream t( &f ); t.setCodec("UTF-8"); ui.TextEdit_LICENSE->setPlainText( t.readAll() ); } else { ui.TextEdit_LICENSE->append(tr("Warning license file not found !")); } dlg->exec(); delete dlg; } /** open the online manual in web browser */ void DCGuiApp::slotHelpManual() { g_pConfig->OpenURL( "http://wxdcgui.sourceforge.net/doc/manual.html" ); } /** connect to the valknut hub */ void DCGuiApp::slotHelpSupport() { // TODO: Check to see if we are already connected or not. g_pConnectionManager->Connect(CString(),"valknut.dyndns.info:59176"); } /** change user away mode */ void DCGuiApp::slotChangeAwayMode() { switch(g_pConfig->GetAwayMode()) { case euamAWAY: actionAwayModeNormal->setChecked(true); g_pConfig->CConfig::SetAwayMode(euamNORMAL); break; default: actionAwayModeAway->setChecked(true); g_pConfig->CConfig::SetAwayMode(euamAWAY); break; } g_pConnectionManager->SendMyInfoToConnectedServers(); } /** */ void DCGuiApp::slotAwayModeChanged( eUserAwayMode mode ) { if ( mode == euamNORMAL ) { actionAwayModeNormal->setChecked(true); } else { actionAwayModeAway->setChecked(true); } } /** */ void DCGuiApp::windowMenuAboutToShow() { int i = 0; pWindowMenu->clear(); pWindowMenu->addAction(windowCascade); pWindowMenu->addAction(windowTile); pWindowMenu->addAction(windowTileHor); pWindowMenu->addAction(windowMinimize); pWindowMenu->addSeparator(); pWindowMenu->addAction(windowCloseHubs); pWindowMenu->addAction(windowCloseAllChats); pWindowMenu->addAction(windowCloseOfflineChats); pWindowMenu->addAction(windowCloseFilelists); pWindowMenu->addAction(windowCloseSearches); QList windows = pMdiArea->subWindowList(); qDeleteAll( windowsGroup->actions() ); //printf("window list length =%d\n", windows.size()); for ( i = 0; i < windows.count(); i++ ) { QAction * act = windowsGroup->addAction(QString("&%1 ").arg(i+1)+windows.at(i)->windowTitle()); act->setData( i ); act->setCheckable( true ); act->setChecked( pMdiArea->activeSubWindow() == windows.at(i) ); if ( i == 0 ) { pWindowMenu->addSeparator(); } pWindowMenu->addAction( act ); } if ( i == 0 ) { windowAction->setEnabled(false); } else { windowAction->setEnabled(true); } } /** */ void DCGuiApp::windowMenuActivated( QAction * action ) { if ( action ) { QMdiSubWindow * w = pMdiArea->subWindowList().at( action->data().toInt() ); if ( w ) { w->show(); w->setFocus(); } } } /** show/hide transfer list window */ void DCGuiApp::slotActionTransferList() { statusBar()->showMessage(tr("Show/hide transfer list window ...")); if ( g_pTransferView != 0 ) { if ( g_pTransferView->isVisible() ) { pTransferViewDock->hide(); } else { pTransferViewDock->show(); } } statusBar()->showMessage(tr("Ready.")); } /** show/hide mdi widget */ void DCGuiApp::showMDIWidget( QMdiSubWindow * window ) { if ( window != 0 ) { if ( window->parent() == 0 ) { /* well this is as stupid as it looks */ const QPoint oldpos = window->pos(); pMdiArea->addSubWindow( window ); window->move(oldpos); } if ( window->isMinimized() ) { window->showNormal(); window->widget()->showNormal(); } else if ( window->isVisible() ) { if ( pMdiArea->activeSubWindow() == window ) { window->close(); } else { pMdiArea->setActiveSubWindow(window); } } else if ( window->isMaximized() ) { window->showMaximized(); window->widget()->showMaximized(); } else { window->show(); window->widget()->show(); } } } /** show/hide server list window */ void DCGuiApp::slotActionServerList() { statusBar()->showMessage(tr("Show/hide hub list window ...")); showMDIWidget(g_pHubListManager->GetMdiSubWindow()); statusBar()->showMessage(tr("Ready.")); } /** show/hide multi hub search window */ void DCGuiApp::slotActionHubSearch() { statusBar()->showMessage(tr("Open hub search window ...")); DCHubSearch * hubsearch = new DCHubSearch( pMdiArea ); hubsearch->show(); statusBar()->showMessage(tr("Ready.")); } /** show/hide spy window */ void DCGuiApp::slotActionSpy() { statusBar()->showMessage(tr("Show/hide spy window ...")); showMDIWidget(g_pSpy->GetMdiSubWindow()); statusBar()->showMessage(tr("Ready.")); } /** show/hide users window */ void DCGuiApp::slotActionUsers() { statusBar()->showMessage(tr("Show/hide users window ...")); showMDIWidget(g_pUsersList->GetMdiSubWindow()); statusBar()->showMessage(tr("Ready.")); } /** Called when the tray icon is activated */ void DCGuiApp::slotTrayMenuTriggered( QSystemTrayIcon::ActivationReason reason ) { // if single clicked if ( reason == QSystemTrayIcon::Trigger ) { slotViewDock(); } } /** Called when the remove item is chosen from the tray icon's menu */ void DCGuiApp::slotRemoveTrayIcon() { // undock if docked! if ( m_bTray ) { slotViewDock(); } deinitTray(); viewTrayIcon->setChecked(false); viewDock->setEnabled(false); g_pConfig->SetEnableTray(false); } /** */ void DCGuiApp::SetTheme() { if ( g_pConfig->GetThemeSupport() ) { QString s = g_pConfig->GetTheme(); if ( s.isEmpty() ) { printf("Can't set empty theme\n"); } else { QApplication::setStyle( s ); } } } /** */ void DCGuiApp::slotDefaultDownloadModeChanged() { switch (g_pConfig->GetDefaultDownloadMode()) { case 0: fileDefaultDldAsk->setChecked(true); break; case 1: fileDefaultDldSingle->setChecked(true); break; case 2: fileDefaultDldMulti->setChecked(true); break; default: break; } } /** */ void DCGuiApp::slotChangeMDIViewMode( QAction * action ) { /* * FIXME replace setProperty with proper function and enum * when QT 4.4 is required for compilation */ if ( pMdiArea->property("viewMode").isValid() ) { if ( action == viewUseTabs ) { /* arranging windows does not make sense if everything is in tabs */ windowTile->setEnabled(false); windowTileHor->setEnabled(false); windowCascade->setEnabled(false); windowMinimize->setEnabled(false); pMdiArea->setProperty("viewMode",1); // QMdiArea::TabbedView } else if ( action == viewUseWindows ) { windowTile->setEnabled(true); windowTileHor->setEnabled(true); windowCascade->setEnabled(true); windowMinimize->setEnabled(true); pMdiArea->setProperty("viewMode",0); // QMdiArea::SubWindowView } } } /** */ void DCGuiApp::slotViewTrayIcon( bool toggle ) { g_pConfig->SetEnableTray( toggle ); if ( toggle ) { initTray(); } else { deinitTray(); } viewDock->setEnabled( toggle ); } /** */ void DCGuiApp::closeWindowsOfClass( QString classname ) { QList windows = pMdiArea->subWindowList( QMdiArea::CreationOrder ); for ( int i = 0; i < windows.size(); ++i ) { if ( windows.at(i)->widget() && (windows.at(i)->widget()->metaObject()->className() == classname) ) { windows.at(i)->close(); } } } /** */ void DCGuiApp::slotContextMenuTraffic( const QPoint & /* pos */ ) { QMenu * m = new QMenu(this); QAction * reset = DCMenuHandler::addAction( m, emiRESET ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == reset ) { CSocket::m_Traffic.ResetTraffic(); g_pConfig->ResetSessionStats(); statusTRLabel->clear(); } } /** */ void DCGuiApp::slotDebugSettings() { QDialog * dialog = new QDialog(this); Ui::DCDialogDebugSettings ui; ui.setupUi(dialog); ui.ComboBox_PRINTF->setCurrentIndex(dclibVerbose()); ui.ComboBox_SOCKETLOG->setCurrentIndex(CSocket::m_eSocketLog); #if defined(HAVE_MALLINFO) || defined(HAVE_MALLOC_STATS) connect( ui.PushButton_MALLOC_INFO, SIGNAL(clicked()), this, SLOT(slotMallocInfo()) ); #else ui.PushButton_MALLOC_INFO->setEnabled(false); #endif if ( dialog->exec() == QDialog::Accepted ) { setdclibVerbose( ui.ComboBox_PRINTF->currentIndex() ); switch ( ui.ComboBox_SOCKETLOG->currentIndex() ) { case 0: CSocket::m_eSocketLog = eslNONE; break; case 1: CSocket::m_eSocketLog = eslSEND; break; case 2: CSocket::m_eSocketLog = eslRECV; break; case 3: CSocket::m_eSocketLog = eslBOTH; break; default: CSocket::m_eSocketLog = eslNONE; break; } } delete dialog; } /** */ void DCGuiApp::slotMallocInfo() { #if defined(HAVE_MALLOC_STATS) fprintf(stderr, "%s %s malloc_stats()\n", PACKAGE_STRING, QDateTime::currentDateTime().toString().toLocal8Bit().constData()); malloc_stats(); #endif #if defined(HAVE_MALLINFO) struct mallinfo mi = mallinfo(); /* this stuff is for debugging so is not translated or even explained */ QMessageBox * mb = new QMessageBox( pMdiArea ); mb->setAttribute( Qt::WA_DeleteOnClose ); mb->setIcon( QMessageBox::Information ); mb->setWindowTitle( "mallinfo" ); mb->setText( QDateTime::currentDateTime().toString() + "\n\narena " + QString::number(mi.arena) + "\nordblks " + QString::number(mi.ordblks) + "\nsmblks " + QString::number(mi.smblks) + "\nhblks " + QString::number(mi.hblks) + "\nhblkhd " + QString::number(mi.hblkhd) + "\nusmblks " + QString::number(mi.usmblks) + "\nfsmblks " + QString::number(mi.fsmblks) + "\nuordblks " + QString::number(mi.uordblks) + "\nfordblks " + QString::number(mi.fordblks) + "\nkeepcost " + QString::number(mi.keepcost) ); mb->setModal( false ); mb->show(); #endif } /** */ void DCGuiApp::slotAutoAwayModeChanged( bool enabled ) { if ( enabled ) { qApp->installEventFilter( &m_ApplicationEvents ); } else { qApp->removeEventFilter( &m_ApplicationEvents ); } m_ApplicationEvents.m_nNoUserInputTimer = 0; } valknut-0.4.9/valknut/searchspymodel.h0000664000076400007640000000661211106123032016217 0ustar ejsejs/*************************************************************************** searchspymodel.h - Search Spy Model header ------------------- begin : Sat Nov 3 2007 copyright : (C) 2007 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef SEARCHSPYMODEL_H #define SEARCHSPYMODEL_H #include #include #include #include #include /** * @author Edward Sheldrake - inspired by dc-qt 0.2.0 alpha * * Replacing all the custom sorting code with QSortFilterProxyModel * resulted in excessive CPU usage and the result was unusable * on large hubs. At least for the userlist, but the design * is essentially the same, the spy is simpler (no sort top bool). */ class SearchSpyItem { public: /** Constructor */ SearchSpyItem( QString search ); /** Destructor */ ~SearchSpyItem() {}; /** Search text / TTH */ QString text; /** Time of search */ QDateTime lastseen; /** Number of times this search has been seen */ int count; /** * Position in list. * The hash is needed for lookup by search string * and the list is needed for lookup by model index. * * So the index here is needed when getting the item * out of the hash. */ int index; }; class SearchSpyModel : public QAbstractItemModel { Q_OBJECT public: /** Constructor */ SearchSpyModel( QObject * parent = 0 ); /** Destructor */ virtual ~SearchSpyModel(); /** number of rows */ virtual int rowCount( const QModelIndex & index = QModelIndex() ) const; /** number of columns */ virtual int columnCount( const QModelIndex & index = QModelIndex() ) const; /** gets data */ virtual QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const; /** gets headings */ virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const; /** sort list */ virtual void sort( int column, Qt::SortOrder order = Qt::AscendingOrder ); /** */ virtual QModelIndex index( int row, int column, const QModelIndex & parent = QModelIndex() ) const; /** */ virtual QModelIndex parent( const QModelIndex & parent ) const; /** got search string */ void search( QString query ); /** get sort column */ int getSortColumn() const { return sortColumn; }; /** get sort order */ Qt::SortOrder getSortOrder() const { return sortOrder; }; public slots: /** delete all data */ void clear(); private: /** Hash of items keyed on search string */ QHash itemHash; /** Sorted list of items */ QList itemList; /** Column sorted by */ int sortColumn; /** Sort order */ Qt::SortOrder sortOrder; }; #endif // SEARCHSPYMODEL_H valknut-0.4.9/valknut/main.cpp0000664000076400007640000003346111134416365014475 0ustar ejsejs/*************************************************************************** main.cpp - description ------------------- begin : Mon Okt 1 19:59:45 CEST 2001 copyright : (C) 2001-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include #ifdef HAVE_CONFIG_H #include #endif #include #ifndef WIN32 #include #endif #include #include #include #include #include #include #include #include #include #include "dcconfig.h" #include "dcsplash.h" #include "dcgui.h" #include "dcpluginmanager.h" #include "dcconnectionmanager.h" #include "dctransferview.h" #include "dcdebug.h" #include "dciconloader.h" #include "dcsigterm.h" #include #include #include #include #include #include #include #ifndef WIN32 /** install signal handler */ void term_install_handlers(void) { // ignore pipe signal // signal(SIGPIPE, SIG_IGN); if ( can_we_handle_signal(SIGPIPE) ) { struct sigaction new_action; new_action.sa_handler = SIG_IGN; sigemptyset( &new_action.sa_mask ); new_action.sa_flags = 0; if ( sigaction(SIGPIPE,&new_action,NULL) == -1 ) { printf("Error ignoring SIGPIPE.\n"); } } // install SIGTERM signal handler // signal(SIGTERM, sigterm_handler); // install handlers for SIGTERM, SIGHUP, SIGINT and SIGQUIT bool term = false, hup = false, sigint = false, quit = false; struct sigaction new_action; new_action.sa_handler = DCSigTerm::signal_handler; sigemptyset( &new_action.sa_mask ); new_action.sa_flags = 0; term = can_we_handle_signal( SIGTERM ); if ( term ) { sigaddset( &new_action.sa_mask, SIGTERM ); } hup = can_we_handle_signal( SIGHUP ); if ( hup ) { sigaddset( &new_action.sa_mask, SIGHUP ); } sigint = can_we_handle_signal( SIGINT ); if ( sigint ) { sigaddset( &new_action.sa_mask, SIGINT ); } quit = can_we_handle_signal( SIGQUIT ); if ( quit ) { sigaddset( &new_action.sa_mask, SIGQUIT ); } if ( term ) { if ( sigaction(SIGTERM,&new_action,NULL) == -1 ) { printf("Error installing SIGTERM handler\n"); } } if ( hup ) { if ( sigaction(SIGHUP,&new_action,NULL) == -1 ) { printf("Error installing SIGHUP handler\n"); } } if ( sigint ) { if ( sigaction(SIGINT,&new_action,NULL) == -1 ) { printf("Error installing SIGINT handler\n"); } } if ( quit ) { if ( sigaction(SIGQUIT,&new_action,NULL) == -1 ) { printf("Error installing SIGQUIT handler\n"); } } } #endif /** */ int main(int argc, char *argv[]) { /* Nothing in QT works without a QApplication!!! */ new QApplication(argc, argv); int i; int ret; CString configpath; CString debugopt; bool bcrash = false; QTranslator tor(0); DCSplash * pSplash = 0; // startup parameter bool bThemeSupport = true; bool bSplash = true; bool bTray = false; bool bOverrideTray = false; bool bEnableTray = true; #ifdef WIN32 #ifdef _DEBUG //_CrtSetDbgFlag ( _CRTDBG_LEAK_CHECK_DF | _CRTDBG_ALLOC_MEM_DF | _CRTDBG_CHECK_ALWAYS_DF ); #endif #endif bool bBacktrace = true; #ifndef WIN32 DCDebug::arg_0 = qApp->applicationFilePath().toLocal8Bit().constData(); DCDebug::startup_dir = qApp->applicationDirPath().toLocal8Bit().constData(); #endif printf("Valknut: '%s' ",PACKAGE_VERSION); printf("using dclib: '%s'\n",dclibVersion()); // check for Qt (TM) version printf("Checking Qt® version... "); printf("compiled for '%s' using '%s'\n",QT_VERSION_STR,qVersion()); // makes QString::toAscii().constData() and fromAscii() return the correct local encoding not just ISO-8859-1 QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale()); // QT4 just says "System" which is somewhat unhelpful //printf("QT thinks your system encoding is '%s'\n",QTextCodec::codecForLocale()->name().data()); //printf("If this is incorrect, you may need to adjust your LANG environment variable which is currently '%s'\n",CString(getenv("LANG")).Data()); // parameter stuff ... for(i=1;iInit(configpath.Data(),debugopt.Data()) ) { dbg->exec(); } delete dbg; printf("exit\n"); delete qApp; _exit(0); } #ifndef WIN32 if(bBacktrace) crash_install_handlers(); #endif new DCIconLoader(); CConfig::SetInstance(new DCConfig(configpath)); if ( g_pConfig->LoadDCLib() != 0 ) { ret = -1; } // set theme support g_pConfig->SetThemeSupport(bThemeSupport); if ( g_pConfig->LoadDCGui() != 0 ) { ret = -1; } // needs to be done after config loading for icon themes if ( g_pIconLoader->Load() ) { QMessageBox::critical( 0, "Valknut", QString("Can't load all Icons. Please set correct Datapath and restart the Application.")); } if ( bOverrideTray ) { g_pConfig->SetEnableTray(bEnableTray); } if ( bSplash ) { pSplash = new DCSplash(0); pSplash->show(); } if ( pSplash ) pSplash->TextLabel_STATUS->setText("Load Hub-Profiles ..."); qApp->processEvents(); g_pConfig->LoadHubProfile(); if ( pSplash ) pSplash->TextLabel_STATUS->setText("Load Hub-List ..."); qApp->processEvents(); g_pConfig->LoadDCHub(); // create the filemanager if ( pSplash ) pSplash->TextLabel_STATUS->setText("Init Filemanager ..."); qApp->processEvents(); // was 1 CFileManager::SetInstance(new CFileManager()); if (g_pConfig->GetFilelistNamingSchemeVersion() < 4) { if ( pSplash ) pSplash->TextLabel_STATUS->setText("Renaming stored filelists ..."); qApp->processEvents(); g_pConfig->RenameStoredFilelists(); } // create the querymanager CQueryManager::SetInstance(new CQueryManager()); // create listenmanager CListenManager::SetInstance(new CListenManager()); if ( dclibSupportsSSL() ) { CCryptoListenManager::SetInstance( new CCryptoListenManager()); } // Create search manager which is no longer part of the search window // in preparation for more than one search window. // Strangely it was being created after all the other // dclib managers but being deleted after CFileManager // CQueryManager and CAsynDns were deleted. CSearchManager::SetInstance(new CSearchManager()); // set application font if ( g_pConfig->GetUseCustomFont() ) { QFont appFont; if (appFont.fromString( g_pConfig->GetAppFont() ) == false) { // In case the xml file is messed up appFont.fromString(DEFAULT_APP_FONT); } qApp->setFont(appFont); } // load translation files if ( pSplash ) pSplash->TextLabel_STATUS->setText("Install translator ..."); qApp->processEvents(); if ( !(g_pConfig->GetLanguageFile().isEmpty()) ) { if ( tor.load( g_pConfig->GetLanguageFile() ) ) { qApp->installTranslator( &tor ); } } if ( pSplash ) pSplash->TextLabel_STATUS->setText("Start ..."); qApp->processEvents(); new DCGuiApp(); #ifndef WIN32 DCSigTerm * sighandler = new DCSigTerm( g_pMainWin ); term_install_handlers(); #endif if ( pSplash ) pSplash->TextLabel_STATUS->setText("Load plugins ..."); qApp->processEvents(); CPluginManager::SetInstance(new DCPluginManager()); // load dclib plugins g_pPluginManager->Load(); // load valknut plugins /* 1. There are no valknut plugins. * 2. /usr/share/valknut is an architecture independent folder * so is the wrong place to look for plugins if ( !(g_pConfig->GetValknutDataPath().isEmpty()) ) g_pPluginManager->Load( (g_pConfig->GetValknutDataPath()+DIRSEPARATOR+"plugin").toAscii().constData()); */ if ( pSplash ) pSplash->TextLabel_STATUS->setText("Init plugins ..."); qApp->processEvents(); g_pPluginManager->InitPlugins(); if ( pSplash ) pSplash->TextLabel_STATUS->setText("Start ..."); qApp->processEvents(); // hide splash if ( pSplash ) pSplash->hide(); qApp->processEvents(); // was 10 if ( pSplash ) delete pSplash; if ( ret != 0 ) { // open options dialog ... g_pMainWin->ShowOptionsDialog(); } qApp->processEvents(); // was 10 // load download manager queue g_pTransferView->DLM_LoadQueue(); qApp->processEvents(); // was 10 if ( bTray && g_pConfig->GetEnableTray() ) { g_pMainWin->Dock(); } else { StringMap * map; if ( g_pConfig->GetMap("MAINVIEW",map) && ((*map)["MAXIMIZED"].toInt() == 1) ) { g_pMainWin->showMaximized(); } else { g_pMainWin->show(); } } qApp->processEvents(); // was 10 g_pMainWin->initWindows(); qApp->processEvents(); // was 10 // connect to hubs with the auto connect flag g_pConnectionManager->AutoConnect(); qApp->processEvents(); ret = qApp->exec(); g_pPluginManager->DeInitPlugins(); delete g_pPluginManager; if ( CFileManager::Instance() ) { delete CFileManager::Instance(); } if ( CQueryManager::Instance() ) { delete CQueryManager::Instance(); } if ( CAsyncDns::Instance() ) { delete CAsyncDns::Instance(); } #ifndef WIN32 delete sighandler; #endif delete g_pMainWin; // must be after dcgui deleted if ( CSearchManager::Instance() ) { delete CSearchManager::Instance(); } // stop listen manager before deleting g_pConfig // avoids possible segfault on exit if ( CListenManager::Instance() ) { delete CListenManager::Instance(); } if ( CCryptoListenManager::Instance() ) { delete CCryptoListenManager::Instance(); } if( g_pConfig ) { // save traffic g_pConfig->SaveDCLib(); delete g_pConfig; } if ( CManager::Instance() ) { delete CManager::Instance(); } delete g_pIconLoader; dclibDeInitDepLibs(); delete qApp; printf("application exit ok %d\n",ret); // if(bBacktrace) // signal(SIGSEGV, 0); #ifndef WIN32 //signal(SIGTERM, 0); #endif #ifdef WIN32 #ifdef _DEBUG _CrtDumpMemoryLeaks(); #endif #endif return ret; } valknut-0.4.9/valknut/filteronlyproxy.h0000664000076400007640000000340511106253045016473 0ustar ejsejs/*************************************************************************** filteronlyproxy.h - Proxy model for filtering without sorting ------------------- begin : Tue Nov 11 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #if !defined(FILTERONLYPROXY_H) #define FILTERONLYPROXY_H /** * @author Edward Sheldrake * * It's QSortFilterProxyModel with the sorting disabled and * handled by the source model. */ #include class FilterOnlyProxy: public QSortFilterProxyModel { Q_OBJECT public: /** Constructor */ FilterOnlyProxy( QObject * parent = 0 ); /** Destructor */ virtual ~FilterOnlyProxy(); /** Sort the model - just calls the source model sort() function */ virtual void sort( int column, Qt::SortOrder order = Qt::AscendingOrder ); protected: /** Also disabled just in case, just compares the model index rows */ virtual bool lessThan( const QModelIndex & left, const QModelIndex & right ) const; }; #endif /* FILTERONLYPROXY_H */ valknut-0.4.9/valknut/dcwidget.cpp0000664000076400007640000002120311134733357015335 0ustar ejsejs/*************************************************************************** dcwidget.cpp - description ------------------- begin : Don Mai 30 2002 copyright : (C) 2002-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcwidget.h" #include #include #include #include //Added by qt3to4: #include #include #include #include "dctransferview.h" #include #define DC_QProgressListItemRTTI 3000 #include "search-result-columns.h" /** */ int DC_QListViewItem::compare( Q3ListViewItem * i, int col, bool ascending ) const { if(col==DC_QNumericSortItem::mycol) return DC_QNumericSortItem::mycompare(((DC_QListViewItem*)i)->myvalue); else return Q3ListViewItem::compare(i,col,ascending); } /** */ int DC_QNumericSortItem::mycompare( ulonglong other ) const { if ( myvalue < other ) return -1; else if ( myvalue == other ) return 0; else return 1; } /** */ QString DC_QListViewItem::key( int column, bool /*ascending*/ ) const { return text( column ).toLower(); } /** */ void DC_ListResult::paintCell( QPainter * p, const QColorGroup & cg, int column, int width, int align ) { QColorGroup _cg( cg ); QColor c = ((QPalette)_cg).text().color(); if ( column == RESULTS_COLUMN_NICK ) { if ( g_pTransferView->IsUserInQueue( text(RESULTS_COLUMN_NICK), text(RESULTS_COLUMN_HUB) ) ) { c = Qt::blue; } } _cg.setColor( QColorGroup::Text, c ); Q3ListViewItem::paintCell( p, _cg, column, width, align ); } /** Re-implemented to fix sorting search results by slots columns */ QString DC_ListResult::key( int column, bool ascending ) const { if ( (column == RESULTS_COLUMN_FREESLOTS) || (column == RESULTS_COLUMN_TOTALSLOTS) ) { //printf("Key=%s\n",(text( column ).rightJustify( 5, '0' )).ascii() ); return text( column ).rightJustified( 5, '0' ); } else { return DC_QListViewItem::key( column, ascending ); } } /** */ DC_QProgressListItem::DC_QProgressListItem( DC_QProgressListItem * parent, int co ) : Q3ListViewItem( parent ) { m_nColumn = co; init(); } /** */ DC_QProgressListItem::DC_QProgressListItem( Q3ListViewItem * parent, int co ) : Q3ListViewItem( parent ) { m_nColumn = co; init(); } /** */ DC_QProgressListItem::DC_QProgressListItem( Q3ListView * parent, int co ) : Q3ListViewItem( parent ) { m_nColumn = co; init(); } /** */ int DC_QProgressListItem::rtti() const { return DC_QProgressListItemRTTI; } /** */ void DC_QProgressListItem::init() { // init progress bar m_ProgressBar = new QProgressBar(0); m_ProgressBar->setTextVisible(true); m_bProgressEnable = true; //m_ProgressBar->setIndicatorFollowsStyle(false); resetProgress(); } /** */ void DC_QProgressListItem::resetProgress() { m_ProgressBar->reset(); m_ProgressBar->setRange(0, 100); //m_ProgressBar->setTotalSteps(100); } /** */ void DC_QProgressListItem::setProgress( int i ) { m_ProgressBar->setValue(i); } /** */ DC_QProgressListItem::~DC_QProgressListItem() { delete m_ProgressBar; } /** */ void DC_QProgressListItem::setup() { Q3ListViewItem::setup(); int h = Q3ListViewItem::height(); //h = QMAX( listView()->style().pixelMetric(QStyle::PM_ProgressBarChunkWidth, listView()), h ); //h = QMAX( h, QApplication::globalStrut().height() ); setHeight( h ); m_ProgressBar->setFixedHeight(h-listView()->itemMargin()); m_ProgressBar->setFixedWidth(160); } /** */ int DC_QProgressListItem::width( const QFontMetrics& fm, const Q3ListView* lv, int column) const { int r = Q3ListViewItem::width( fm, lv, column ); if ( (column == m_nColumn) && m_bProgressEnable ) { r += lv->itemMargin(); QStyleOptionProgressBarV2 qso; qso.initFrom( m_ProgressBar ); r += lv->style()->pixelMetric(QStyle::PM_ProgressBarChunkWidth, &qso, lv) + 4; } return QMAX( r, QApplication::globalStrut().width() ); } /*! Paints the item using the painter \a p and the color group \a cg. The item is in column \a column, has width \a width and has alignment \a align. (See Qt::AlignmentFlags for valid alignments.) */ void DC_QProgressListItem::paintCell( QPainter * p, const QColorGroup & cg, int column, int width, int align ) { if ( !p ) return; Q3ListView *lv = listView(); if ( !lv ) return; //const Qt::BackgroundMode bgmode = lv->viewport()->backgroundMode(); const QColorGroup::ColorRole crole = lv->viewport()->backgroundRole(); //QPalette::backgroundRoleFromMode( bgmode ); // we are not friends ... // if ( cg.brush( crole ) != lv->colorGroup().brush( crole ) ) p->fillRect( 0, 0, width, Q3ListViewItem::height(), cg.brush( crole ) ); // else // paintEmptyArea( p, QRect( 0, 0, width, QListViewItem::height() ) ); if ( (column != m_nColumn) || (m_bProgressEnable == false) ) { // The rest is text, or for subclasses to change. Q3ListViewItem::paintCell( p, cg, column, width, align ); return; } int r = lv->itemMargin(); QStyleOptionProgressBarV2 styleoption; styleoption.initFrom( m_ProgressBar ); styleoption.maximum = m_ProgressBar->maximum(); styleoption.minimum = m_ProgressBar->minimum(); styleoption.progress = m_ProgressBar->value(); styleoption.text = m_ProgressBar->text(); styleoption.textAlignment = m_ProgressBar->alignment(); styleoption.textVisible = m_ProgressBar->isTextVisible(); styleoption.rect = m_ProgressBar->contentsRect(); if ( isSelected() ) { styleoption.state = styleoption.state | QStyle::State_Selected; } if ( Q3ListViewItem::isEnabled() && lv->isEnabled() ) { styleoption.state = styleoption.state | QStyle::State_Enabled; } p->save(); m_ProgressBar->style()->drawControl(QStyle::CE_ProgressBar, &styleoption, p, m_ProgressBar); r += m_ProgressBar->width(); p->restore(); p->translate( r, 0 ); p->setBrush( ((QPalette)cg).text() ); Q3ListViewItem::paintCell( p, cg, column, width - r, align ); } /*! Draws the focus rectangle \a r using the color group \a cg on the painter \a p. */ void DC_QProgressListItem::paintFocus( QPainter *p, const QColorGroup & cg, const QRect & r ) { bool intersect = true; Q3ListView *lv = listView(); if ( lv && lv->header()->mapToActual( 0 ) != 0 ) { int xdepth = lv->treeStepSize() * ( depth() + ( lv->rootIsDecorated() ? 1 : 0) ) + lv->itemMargin(); int p = lv->header()->cellPos( lv->header()->mapToActual( 0 ) ); xdepth += p; intersect = r.intersects( QRect( p, r.y(), xdepth - p + 1, r.height() ) ); } if ( intersect ) { QRect rect; int boxsize = 0; //lv->style().pixelMetric(QStyle::PM_ProgressBarChunkWidth, lv); if ( lv->columnAlignment(0) == Qt::AlignCenter ) { QFontMetrics fm( lv->font() ); int bx = (lv->columnWidth(0) - (boxsize + fm.width(text(0))))/2 + boxsize; if ( bx < 0 ) bx = 0; rect.setRect( r.x() + bx /*+ 5*/, r.y(), r.width() - bx /*- 5*/, r.height() ); } else rect.setRect( r.x() + boxsize /*+ 5*/, r.y(), r.width() - boxsize /*- 5*/, r.height() ); Q3ListViewItem::paintFocus(p, cg, rect); } else { Q3ListViewItem::paintFocus(p, cg, r); } } /** Returns the key used to sort the items. * If the progress bar is enabled, we return a key like d069 or u071 * The initial letter stands for download or upload etc., the number is the percentage of the transfer. * If the progress bar is not enabled or the column isn't the transfer column, returns QListViewItem::key() . * QT Docs say ascending parameter can be ignored. */ QString DC_QProgressListItem::key( int n, bool ascending ) const { // printf("DC_QProgessListItem::key called for column: %d\n", n); // column 2 is Transfer column if ( (n == 2) && (m_bProgressEnable) ) { QString s; s.setNum(m_ProgressBar->value()).rightJustified(3, '0'); s.prepend(sTransferState); //printf("Key for sorting transfer column is %s\n", s.toAscii().constData()); return s; } else { return Q3ListViewItem::key( n, ascending ); } } /** */ void DC_QProgressListItem::setTransferState( QString s ) { sTransferState = s; } valknut-0.4.9/valknut/sounds/0000775000076400007640000000000011144264653014353 5ustar ejsejsvalknut-0.4.9/valknut/sounds/Makefile.in0000664000076400007640000002310511144264653016421 0ustar ejsejs# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = valknut/sounds DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/valknut-qt4.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DCLIB_CFLAGS = @DCLIB_CFLAGS@ DCLIB_LIBS = @DCLIB_LIBS@ DEBUGCOMPILE = @DEBUGCOMPILE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAMEWORK_DIR = @FRAMEWORK_DIR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LRELEASE = @LRELEASE@ LTLIBOBJS = @LTLIBOBJS@ LUPDATE = @LUPDATE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_FLAGS = @PACKAGE_FLAGS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ QT3SUPPORT_CFLAGS = @QT3SUPPORT_CFLAGS@ QT3SUPPORT_LIBS = @QT3SUPPORT_LIBS@ QTCORE_CFLAGS = @QTCORE_CFLAGS@ QTCORE_LIBS = @QTCORE_LIBS@ QTGUI_CFLAGS = @QTGUI_CFLAGS@ QTGUI_LIBS = @QTGUI_LIBS@ QTNETWORK_CFLAGS = @QTNETWORK_CFLAGS@ QTNETWORK_LIBS = @QTNETWORK_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SERIAL = @SERIAL@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UIC = @UIC@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu valknut/sounds/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu valknut/sounds/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs tags: TAGS TAGS: ctags: CTAGS CTAGS: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile installdirs: install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am info: info-am info-am: install-data-am: install-data-local install-dvi: install-dvi-am install-exec-am: install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: install-ps-am installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ distclean distclean-generic distclean-libtool distdir dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ maintainer-clean maintainer-clean-generic mostlyclean \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ uninstall uninstall-am install-data-local: $(mkinstalldirs) $(DESTDIR)$(datadir)/valknut $(mkinstalldirs) $(DESTDIR)$(datadir)/valknut/sounds $(mkinstalldirs) $(DESTDIR)$(datadir)/valknut/sounds/default # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: valknut-0.4.9/valknut/sounds/Makefile.am0000664000076400007640000000026711035725452016412 0ustar ejsejsinstall-data-local: $(mkinstalldirs) $(DESTDIR)$(datadir)/valknut $(mkinstalldirs) $(DESTDIR)$(datadir)/valknut/sounds $(mkinstalldirs) $(DESTDIR)$(datadir)/valknut/sounds/default valknut-0.4.9/valknut/dcfilebrowser.h0000664000076400007640000001150611136705745016051 0ustar ejsejs/*************************************************************************** dcfilebrowser.h - description ------------------- begin : Fre Nov 29 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCFILEBROWSER_H #define DCFILEBROWSER_H #include #include #include #include #include #include #include "DCDialogFileBrowser.h" class CXml; class DCFileItem; class DCFilelistDecompressor; class Q3ListViewItem; class DCFileBrowserListItem; /** *@author Mathias Küster */ class DCFileBrowser : public QWidget, private Ui::DCDialogFileBrowser { Q_OBJECT public: /** construtor */ DCFileBrowser( QWidget * parent = 0, bool AllowOpen = true ); /** destructor */ virtual ~DCFileBrowser(); /** */ void InitTree( QString nick, QString hubname, QString hubhost, QString filename, QString jumpto = QString::null, QStringList dirs = QStringList() ); protected: /** to get events for folder opening */ virtual void customEvent( QEvent * event ); private: /** */ void ContinueInitTree( CString * data ); /** */ void InitTXTTree( Q3ListViewItem * item, CString * data ); /** */ void InitXMLTree( Q3ListViewItem * item, CString * data ); /** */ void ParseXMLTree( CXml * xml, Q3ListViewItem * item ); /** */ bool DownloadDirectory( QString dir ); /** */ void JumpTo( QString target ); /** */ void CreateMenu( Q3ListViewItem * item, bool direntry, int column ); /** */ QString CreateRemotePath( Q3ListViewItem * item ); /** */ void DownloadFile( QString rootPath, QString localPath, QString localName, QString remotePath, QString remoteName, ulonglong size, QString hash ); /** */ void DownloadPath( QString rootPath, QString localPath, QString localName, Q3ListViewItem * item ); /** */ void AddFile( Q3ListViewItem * item, DCFileItem * fileitem ); /** */ void AddDirectory( Q3ListViewItem * item, QString name ); /** */ void ClearView(); /** Recursively calculates the size of a folder's contents. * This is only needed for non-xml filelists. */ ulonglong CalcDirSize( Q3ListViewItem * item ); /** Gets the left pane item for the right pane folder item */ Q3ListViewItem * GetDirItem( Q3ListViewItem * item ); /** disable all the gui elements, while thread running */ void DisableGuiElements(); /** enable all the gui elements, after thread finished */ void EnableGuiElements(); /** */ void GetOwnList(); /** */ QString m_sNick; /** */ QString m_sHubName; /** */ QString m_sHubHost; /** */ CByteArray m_ListData; /** */ QString m_sFileName; /** */ QString m_sJumpTo; /** */ QStringList m_lDownloadDirs; /** */ ulonglong m_nShareSize; /** */ ulonglong m_nFileCount; /** */ QPixmap m_FolderPixmap; /** */ DCFilelistDecompressor * m_pDecomp; /** To disable download for own filelist */ bool m_bAllowDownload; /** Disable the open file button for own file list from options dialog */ bool m_bAllowOpen; /** search string */ QString m_sFindString; /** index of the file name of current found file */ int m_nFoundFile; /** * a list of all the found files in the current directory * which gets sorted into the correct order of the files view */ QStringList m_FoundFiles; /** * last directory found - either matches itself, * or more likely contains the matching file */ DCFileBrowserListItem * m_pFoundDir; private slots: /** */ void slotRightButtonClickedDirectory( Q3ListViewItem *, const QPoint &, int ); /** */ void slotRightButtonClickedFiles( Q3ListViewItem *, const QPoint &, int ); /** */ void slotCurrentChangedDirectory(); /** */ void slotExpandedDirectory( Q3ListViewItem * ); /** */ void slotCollapsedDirectory( Q3ListViewItem * ); /** */ void slotFileOpen(); /** */ void slotFileSave(); /** */ void slotItemDoubleClicked( Q3ListViewItem *, const QPoint &, int ); /** */ void slotThreadFinishedLoading( bool ok ); /** find the hub and jump to the user for this filelist */ void slotGotoUser(); /** */ void slotFind(); /** */ void slotFindNext(); }; #endif valknut-0.4.9/valknut/dcmenuhandler.h0000664000076400007640000000711611125260333016015 0ustar ejsejs/*************************************************************************** dcmenuhandler.h - description ------------------- begin : Don Mai 16 2002 copyright : (C) 2002-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCMENUHANDLER_H #define DCMENUHANDLER_H /** *@author Mathias Küster */ #include #include enum eMenuItems { emiSEPARATOR=1, emiDOWNLOAD, emiDOWNLOAD_TO, emiDOWNLOAD_AS, emiDOWNLOAD_REPAIR, emiDOWNLOAD_BIN_SECTORS, emiDOWNLOAD_IN, emiDOWNLOAD_FOLDER, emiBROWSE_USER_FILES, emiCHECK_CLIENT_VERSION, emiPRIVATE_CHAT, emiKICK, emiFORCE_MOVE, emiUPDATE_USER, emiCONNECT, emiDISCONNECT, emiRELOAD_USERLIST, emiCONNECT_TO_HUB, emiCONNECT_TO_ALL_HUBS, emiADD, emiADD_BOOKMARK, emiEDIT, emiEDIT_BOOKMARK, emiREMOVE, emiCLOSE_TRANSFER, emiINFO, emiTRY_CONNECT, emiPAUSE_TRANSFER_QUEUE, emiRESUME_TRANSFER_QUEUE, emiREMOVE_TRANSFER_QUEUE, emiREMOVE_TRANSFER_QUEUE_COMPLETE, emiREMOVE_TRANSFER_QUEUE_DISK, emiUPLOAD_SLOT, emiADD_PERMANENT, emiSAVE_QUEUE, emiUPDATE_SERVER, emiUPDATE_ALL_SERVER, emiCHANGE_TRANSFER_RATE, emiCOPY_COLUMN_TO_CLIPBOARD, emiCOPY_ROW_TO_CLIPBOARD, emiUSER_CAPTION, emiFILE_INFO, emiSEARCH_FILE_CLONE, emiSEARCH_FILE_CLONE_TTH, emiLOAD, emiSAVE, emiHUB_PROFILE_EDITOR, emiEDIT_TRANSFER, emiEDIT_FILE_PRIORITY, emiTRANSLATE, emiTRANSLATOR, emiDISABLE_GROUP, emiGROUP_BY_FILE, emiGROUP_BY_SIZE, emiGROUP_BY_NICK, emiGROUP_BY_HASH, emiGROUP_BY_SLOTS_FREE, emiGROUP_BY_SLOTS_TOTAL, emiGROUP_BY_HUB, emiGROUP_BY_PATH, emiGROUP_BY_HOST, emiGROUP_BY_IP, emiCOPY, emiCOPYDCFILELINK, emiCOPYMAGNETLINK, emiCLEAR, emiSELECT_ALL, emiCLOSE, emiHIDE, emiREFRESH, emiINSERTSMILEY, emiADD_FRIEND, emiREQUEST_SECURE_CHAT, emiCLOSE_SECURE_CHAT, emiRESET, emiDOCK, emiUNDOCK, emiZOOM_IN, emiZOOM_OUT, // languages emiLANGUAGE_BOSNIAN, emiLANGUAGE_BRAZILIAN, emiLANGUAGE_CZECH, emiLANGUAGE_DANISH, emiLANGUAGE_DUTCH, emiLANGUAGE_ENGLISH, emiLANGUAGE_FINNISH, emiLANGUAGE_FRENCH, emiLANGUAGE_GERMAN, emiLANGUAGE_GREEK, emiLANGUAGE_HUNGARIAN, emiLANGUAGE_ICELANDIC, emiLANGUAGE_ITALIAN, emiLANGUAGE_LATVIAN, emiLANGUAGE_NORWEGIAN, emiLANGUAGE_POLISH, emiLANGUAGE_ROMANIAN, emiLANGUAGE_RUSSIAN, emiLANGUAGE_SERBIAN_CYRILLIC, emiLANGUAGE_SERBIAN_LATIN, emiLANGUAGE_SLOVAKIAN, emiLANGUAGE_SPANISH, emiLANGUAGE_SWEDISH, // submenus emisGROUP, emisCHAT_RIGHTCLICK_USER, emisUSER_COMMANDS, emiCUSTOM, // custom user emiCUSTOMUSERMENU }; class DCMenuHandler { public: /** construtor */ DCMenuHandler(); /** destructor */ virtual ~DCMenuHandler(); /** */ static QAction * addAction( QMenu * menu, eMenuItems menuitems, bool enabled = true, QString text = "" ); /** */ static QMenu * addMenu( QMenu * menu, eMenuItems menuitems, bool enabled = true, QString text = "" ); }; #endif valknut-0.4.9/valknut/dcshellcommandrunner.h0000664000076400007640000000356711111645120017415 0ustar ejsejs/*************************************************************************** dcshellcommandrunner.h - Valknut Shell Command Runner Header ------------------- begin : Wed Jul 2 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCSHELLCOMMANDRUNNER_H #define DCSHELLCOMMANDRUNNER_H /** * @author Edward Sheldrake * * DCShellCommandRunner is a QThread which starts a QProcess, waits for it * to finish, gets the output and then emits a sigal. */ #include #include class DCShellCommandRunner : public QThread { Q_OBJECT public: /** constructor */ DCShellCommandRunner( QString args, QObject * parent = 0 ); /** destructor */ virtual ~DCShellCommandRunner(); /** the method that runs in the thread */ virtual void run(); /** Cancel the shell command e.g. if the chat is closed */ void cancel(); signals: /** emitted when the command has finished */ virtual void finished( bool ok, QString output ); private: /** used to cancel the thread */ bool stop; /** the program to run and its arguments */ QString args; }; #endif // DCSHELLCOMMANDRUNNER_U valknut-0.4.9/valknut/cdialogmessage.h0000664000076400007640000000345111100336602016145 0ustar ejsejs/*************************************************************************** cdialogmessage.h - description ------------------- begin : Don Sep 18 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef CDIALOGMESSAGE_H #define CDIALOGMESSAGE_H #include #include #include "DCDialogMessage.h" /** *@author Mathias Küster */ class CDialogMessage : public QDialog, public Ui::DCDialogMessage { Q_OBJECT public: /** construtor */ CDialogMessage( QWidget *parent, enum QMessageBox::Icon icon, QString caption, QString text, const QString & button0Text = QString::null, const QString & button1Text = QString::null, const QString & button2Text = QString::null ); /** destructor */ virtual ~CDialogMessage(); /** */ bool GetCheckBoxStatus(); private: /** construtor */ CDialogMessage() {}; private slots: /** */ void slotPushButton0Clicked(); /** */ void slotPushButton1Clicked(); /** */ void slotPushButton2Clicked(); }; #endif valknut-0.4.9/valknut/dcedittransfer.h0000664000076400007640000000320311074173623016206 0ustar ejsejs/*************************************************************************** dcedittransfer.h - description ------------------- begin : Don Dez 5 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCEDITTRANSFER_H #define DCEDITTRANSFER_H #include #include class DCHubObject; #include "DCDialogEditTransfer.h" /** *@author Mathias Küster */ class DCEditTransfer : public QDialog, public Ui::DCDialogEditTransfer { Q_OBJECT public: /** construtor */ DCEditTransfer( QWidget * parent = 0 ); /** destructor */ virtual ~DCEditTransfer(); /** */ void Init(QString & nick, QString & hubname, QString & hubhost, CList * list ); private: /** */ CList * m_pHubObjectList; private slots: /** */ void slotKnownHubsChange( const QString & ); }; #endif valknut-0.4.9/valknut/dciconloader.cpp0000664000076400007640000001576011131616063016173 0ustar ejsejs/*************************************************************************** dciconloader.cpp - description ------------------- begin : Fri Jan 23 2004 copyright : (C) 2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dciconloader.h" #include #include "icons/gv.xpm" #include "dcconfig.h" DCIconLoader * g_pIconLoader = 0; /** */ DCIconLoader::DCIconLoader() { m_bError = false; g_pIconLoader = this; } /** */ DCIconLoader::~DCIconLoader() { g_pIconLoader = NULL; // clear the map m_PixmapMap.clear(); } /** */ QPixmap DCIconLoader::LoadPixmap( QString file ) { QString s,f; QPixmap p; s = g_pConfig->GetValknutDataPath(); f = s; f += "/icons/appl/"; f += g_pConfig->GetApplicationIconTheme(); f += "/"; f += file; if ( p.load(f) ) return p; f = s; f += "/icons/appl/default/"; f += file; if ( p.load(f) ) return p; printf("DCIconLoader::LoadPixmap: Can't load '%s'\n",file.toAscii().constData()); m_bError = true; p = QPixmap(gv_xpm); return p; } /** */ bool DCIconLoader::Load() { m_bError = false; m_PixmapMap[eiBACK] = LoadPixmap("back.png"); m_PixmapMap[eiBALL_GREEN] = LoadPixmap("ball_green.png"); m_PixmapMap[eiBALL_RED] = LoadPixmap("ball_red.png"); m_PixmapMap[eiBALL_YELLOW] = LoadPixmap("ball_yellow.png"); m_PixmapMap[eiBOOKMARK_ADD] = LoadPixmap("bookmark_add.png"); m_PixmapMap[eiBOOKMARK_FOLDER] = LoadPixmap("bookmark_folder.png"); m_PixmapMap[eiCHOOSE_LANGUAGE] = LoadPixmap("choose-language.png"); m_PixmapMap[eiCONFIGURE] = LoadPixmap("configure.png"); m_PixmapMap[eiCONFIGURE_32x32] = LoadPixmap("configure_32x32.png"); m_PixmapMap[eiCONNECT] = LoadPixmap("connect.png"); m_PixmapMap[eiCONNECT_CREATING] = LoadPixmap("connect_creating.png"); m_PixmapMap[eiCONNECT_NO] = LoadPixmap("connect_no.png"); m_PixmapMap[eiCONNECTED] = LoadPixmap("connected.png"); m_PixmapMap[eiDOWN] = LoadPixmap("down.png"); m_PixmapMap[eiDOWNLOAD] = LoadPixmap("download.png"); m_PixmapMap[eiDOWNLOAD_AS] = LoadPixmap("download_as.png"); m_PixmapMap[eiEDIT] = LoadPixmap("edit.png"); m_PixmapMap[eiEDITADD] = LoadPixmap("editadd.png"); m_PixmapMap[eiEDITCOPY] = LoadPixmap("editcopy.png"); m_PixmapMap[eiEDITDELETE] = LoadPixmap("editdelete.png"); m_PixmapMap[eiEMOTICON] = LoadPixmap("emoticon.png"); m_PixmapMap[eiEXIT] = LoadPixmap("exit.png"); m_PixmapMap[eiFILECLOSE] = LoadPixmap("fileclose.png"); m_PixmapMap[eiFILEFIND] = LoadPixmap("filefind.png"); m_PixmapMap[eiFIND] = LoadPixmap("find.png"); m_PixmapMap[eiFIND_32x32] = LoadPixmap("find_32x32.png"); m_PixmapMap[eiFOLDER_BLUE] = LoadPixmap("folder_blue.png"); m_PixmapMap[eiFOLDER_BLUE_OPEN] = LoadPixmap("folder_blue_open.png"); m_PixmapMap[eiFOLDER_RED] = LoadPixmap("folder_red.png"); m_PixmapMap[eiGLOBE] = LoadPixmap("globe.png"); m_PixmapMap[eiGV] = QPixmap(gv_xpm); m_PixmapMap[eiHELP] = LoadPixmap("help.png"); m_PixmapMap[eiICON_22x22] = LoadPixmap("icon_22x22.png"); m_PixmapMap[eiINFO] = LoadPixmap("info.png"); m_PixmapMap[eiMESSAGE] = LoadPixmap("message.png"); m_PixmapMap[eiNEXT] = LoadPixmap("next.png"); m_PixmapMap[eiNOTCONNECTED] = LoadPixmap("notconnected.png"); m_PixmapMap[eiOPEN] = LoadPixmap("open.png"); m_PixmapMap[eiPLAYER_PAUSE] = LoadPixmap("player_pause.png"); m_PixmapMap[eiPLAYER_PLAY] = LoadPixmap("player_play.png"); m_PixmapMap[eiRELOAD] = LoadPixmap("reload.png"); m_PixmapMap[eiRELOAD_32x32] = LoadPixmap("reload_32x32.png"); m_PixmapMap[eiSAVE] = LoadPixmap("save.png"); m_PixmapMap[eiSERVER] = LoadPixmap("server.png"); m_PixmapMap[eiSORT_DOWN_ARROW] = LoadPixmap("sort-down-arrow.png"); m_PixmapMap[eiSPLASH] = LoadPixmap("splash.png"); m_PixmapMap[eiSPY] = LoadPixmap("spy.png"); m_PixmapMap[eiSSL_NO] = LoadPixmap("ssl_no.png"); m_PixmapMap[eiSSL_YES] = LoadPixmap("ssl_yes.png"); m_PixmapMap[eiTEXT_SELECT_ALL] = LoadPixmap("text-select-all.png"); m_PixmapMap[eiTRANSFER] = LoadPixmap("transfer.png"); m_PixmapMap[eiTRANSLATE] = LoadPixmap("translate.png"); m_PixmapMap[eiUP] = LoadPixmap("up.png"); m_PixmapMap[eiUPDATE] = LoadPixmap("update.png"); m_PixmapMap[eiUSERS] = LoadPixmap("users.png"); m_PixmapMap[eiUSERS_32x32] = LoadPixmap("users_32x32.png"); m_PixmapMap[eiVIEW_SIDETREE] = LoadPixmap("view_sidetree.png"); m_PixmapMap[eiZOOM_IN] = LoadPixmap("zoom-in.png"); m_PixmapMap[eiZOOM_OUT] = LoadPixmap("zoom-out.png"); m_PixmapMap[eiFLAG_BOSNIA] = LoadPixmap("flag_bosnia.png"); m_PixmapMap[eiFLAG_BRAZIL] = LoadPixmap("flag_brazil.png"); m_PixmapMap[eiFLAG_BRITAIN] = LoadPixmap("flag_britain.png"); m_PixmapMap[eiFLAG_CZECH] = LoadPixmap("flag_czech.png"); m_PixmapMap[eiFLAG_DENMARK] = LoadPixmap("flag_denmark.png"); m_PixmapMap[eiFLAG_FINLAND] = LoadPixmap("flag_finland.png"); m_PixmapMap[eiFLAG_FRANCE] = LoadPixmap("flag_france.png"); m_PixmapMap[eiFLAG_GERMANY] = LoadPixmap("flag_germany.png"); m_PixmapMap[eiFLAG_GREECE] = LoadPixmap("flag_greece.png"); m_PixmapMap[eiFLAG_HUNGARY] = LoadPixmap("flag_hungary.png"); m_PixmapMap[eiFLAG_ICELAND] = LoadPixmap("flag_iceland.png"); m_PixmapMap[eiFLAG_ITALY] = LoadPixmap("flag_italy.png"); m_PixmapMap[eiFLAG_LATVIA] = LoadPixmap("flag_latvia.png"); m_PixmapMap[eiFLAG_NETHERLANDS] = LoadPixmap("flag_netherlands.png"); m_PixmapMap[eiFLAG_NORWAY] = LoadPixmap("flag_norway.png"); m_PixmapMap[eiFLAG_POLAND] = LoadPixmap("flag_poland.png"); m_PixmapMap[eiFLAG_ROMANIA] = LoadPixmap("flag_romania.png"); m_PixmapMap[eiFLAG_RUSSIA] = LoadPixmap("flag_russia.png"); m_PixmapMap[eiFLAG_SERBIA] = LoadPixmap("flag_serbia.png"); m_PixmapMap[eiFLAG_SLOVAKIA] = LoadPixmap("flag_slovakia.png"); m_PixmapMap[eiFLAG_SPAIN] = LoadPixmap("flag_spain.png"); m_PixmapMap[eiFLAG_SWEDEN] = LoadPixmap("flag_sweden.png"); m_PixmapMap[eiFILETYPE_APPLICATION] = LoadPixmap("filetype-application.png"); m_PixmapMap[eiFILETYPE_ARCHIVE] = LoadPixmap("filetype-archive.png"); m_PixmapMap[eiFILETYPE_DOCUMENT] = LoadPixmap("filetype-document.png"); m_PixmapMap[eiFILETYPE_MP3] = LoadPixmap("filetype-audio.png"); m_PixmapMap[eiFILETYPE_PICTURE] = LoadPixmap("filetype-picture.png"); m_PixmapMap[eiFILETYPE_UNKNOWN] = LoadPixmap("filetype-unknown.png"); m_PixmapMap[eiFILETYPE_VIDEO] = LoadPixmap("filetype-video.png"); return m_bError; } /** */ QPixmap & DCIconLoader::GetPixmap( enum eIcons e ) { return m_PixmapMap[e]; } valknut-0.4.9/valknut/dcpluginmanager.cpp0000664000076400007640000000277211074173623016712 0ustar ejsejs/*************************************************************************** dcpluginmanager.cpp - description ------------------- begin : Don Dez 5 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcpluginmanager.h" #include #include /** */ DCPluginManager * g_pPluginManager = 0; /** */ DCPluginManager::DCPluginManager() { g_pPluginManager = this; } /** */ DCPluginManager::~DCPluginManager() { g_pPluginManager = NULL; } /** */ bool DCPluginManager::Init( CPluginObject * plugin ) { if ( plugin->m_ePluginStruct->m_eType != eptGUI ) { printf("Plugin != GUI not for me ...\n"); return CPluginManager::Init(plugin); } return true; } valknut-0.4.9/valknut/dcmenuhandler.cpp0000664000076400007640000003701711126750142016356 0ustar ejsejs/*************************************************************************** dcmenuhandler.cpp - description ------------------- begin : Don Mai 16 2002 copyright : (C) 2002-2004 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcmenuhandler.h" #include #include "dciconloader.h" DCMenuHandler::DCMenuHandler() { } DCMenuHandler::~DCMenuHandler() { } /** */ QAction * DCMenuHandler::addAction( QMenu * menu, eMenuItems menuitems, bool enabled, QString text ) { QAction * action = 0; if(!menu) { return 0; } switch(menuitems) { case emiSEPARATOR: action = menu->addSeparator(); break; case emiDOWNLOAD: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiDOWNLOAD) ), QObject::tr("Download") ); break; case emiDOWNLOAD_TO: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiDOWNLOAD_AS) ), QObject::tr("Download To") ); break; case emiDOWNLOAD_AS: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiDOWNLOAD_AS) ), QObject::tr("Download As") ); break; case emiDOWNLOAD_REPAIR: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiDOWNLOAD_AS) ), QObject::tr("Repair File") ); break; case emiDOWNLOAD_BIN_SECTORS: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiDOWNLOAD_AS) ), QObject::tr("Repair BIN sectors") ); break; case emiDOWNLOAD_IN: action = menu->addAction( QObject::tr("Add this extra source") ); break; case emiDOWNLOAD_FOLDER: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiDOWNLOAD) ), QObject::tr("Download Folder") ); break; case emiBROWSE_USER_FILES: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiVIEW_SIDETREE) ), QObject::tr("Browse User Files") ); break; case emiCHECK_CLIENT_VERSION: action = menu->addAction( QObject::tr("Check client version") ); break; case emiPRIVATE_CHAT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiMESSAGE) ), QObject::tr("Private Chat") ); break; case emiKICK: action = menu->addAction( QObject::tr("Kick") ); break; case emiFORCE_MOVE: action = menu->addAction( QObject::tr("Force Move") ); break; case emiUPDATE_USER: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiRELOAD) ), QObject::tr("Update User") ); break; case emiCONNECT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiCONNECT_CREATING) ), QObject::tr("Connect") ); break; case emiDISCONNECT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiCONNECT_NO) ), QObject::tr("Disconnect") ); break; case emiRELOAD_USERLIST: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiRELOAD) ), QObject::tr("Reload Userlist") ); break; case emiCONNECT_TO_HUB: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiCONNECT_CREATING) ), QObject::tr("Connect To Hub") ); break; case emiCONNECT_TO_ALL_HUBS: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiCONNECT_CREATING) ), QObject::tr("Connect To All Hubs") ); break; case emiADD: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITADD) ), QObject::tr("Add") ); break; case emiADD_BOOKMARK: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiBOOKMARK_ADD) ), QObject::tr("Add Bookmark") ); break; case emiEDIT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDIT) ), QObject::tr("Edit") ); break; case emiEDIT_BOOKMARK: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDIT) ), QObject::tr("Edit Bookmark") ); break; case emiREMOVE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITDELETE) ), QObject::tr("Remove") ); break; case emiCLOSE_TRANSFER: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiCONNECT_NO) ), QObject::tr("Close Transfer") ); break; case emiINFO: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiINFO) ), QObject::tr("Info") ); break; case emiTRY_CONNECT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiCONNECT_CREATING) ), QObject::tr("Try Connect") ); break; case emiPAUSE_TRANSFER_QUEUE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiPLAYER_PAUSE) ), QObject::tr("Pause Queue") ); break; case emiRESUME_TRANSFER_QUEUE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiPLAYER_PLAY) ), QObject::tr("Resume Queue") ); break; case emiREMOVE_TRANSFER_QUEUE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITDELETE) ), QObject::tr("Remove from Queue") ); break; case emiREMOVE_TRANSFER_QUEUE_COMPLETE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITDELETE) ), QObject::tr("Remove complete from Queue") ); break; case emiREMOVE_TRANSFER_QUEUE_DISK: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITDELETE) ), QObject::tr("Remove Transfer from Queue and Disk") ); break; case emiADD_PERMANENT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITADD) ), QObject::tr("Add Permanent") ); break; case emiSAVE_QUEUE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiSAVE) ), QObject::tr("Save Queue") ); break; case emiUPDATE_SERVER: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiRELOAD) ), QObject::tr("Update Server") ); break; case emiUPDATE_ALL_SERVER: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiRELOAD) ), QObject::tr("Update all Server") ); break; case emiCHANGE_TRANSFER_RATE: action = menu->addAction( QObject::tr("Change Transfer-Rate") ); break; case emiCOPY_ROW_TO_CLIPBOARD: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITCOPY) ), QObject::tr("Copy row to Clipboard") ); break; case emiCOPY_COLUMN_TO_CLIPBOARD: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITCOPY) ), QObject::tr("Copy column to Clipboard") ); break; case emiFILE_INFO: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiINFO) ), QObject::tr("File Info") ); break; case emiSEARCH_FILE_CLONE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFILEFIND) ), QObject::tr("Search for clones") ); break; case emiSEARCH_FILE_CLONE_TTH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFILEFIND) ), QObject::tr("Search for clones by TTH") ); break; case emiUSER_CAPTION: action = menu->addAction( text ); break; case emiLOAD: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiOPEN) ), QObject::tr("Load") ); break; case emiSAVE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiSAVE) ), QObject::tr("Save") ); break; case emiHUB_PROFILE_EDITOR: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDIT) ), QObject::tr("Profile editor") ); break; case emiEDIT_TRANSFER: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDIT) ), QObject::tr("Edit transfer") ); break; case emiEDIT_FILE_PRIORITY: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDIT) ), QObject::tr("Edit file priority") ); break; case emiTRANSLATE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiTRANSLATE) ), QObject::tr("Translate") ); break; case emiTRANSLATOR: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiCHOOSE_LANGUAGE) ), QObject::tr("Translator") ); break; case emiINSERTSMILEY: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEMOTICON) ), QObject::tr("Insert Smiley") ); break; case emiADD_FRIEND: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITADD) ), QObject::tr("Add Friend") ); break; case emiREQUEST_SECURE_CHAT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiSSL_YES) ), QObject::tr("Request secure chat") ); break; case emiCLOSE_SECURE_CHAT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiSSL_NO) ), QObject::tr("Close secure chat") ); break; case emiDISABLE_GROUP: action = menu->addAction( QObject::tr("Disable group") ); break; case emiGROUP_BY_FILE: action = menu->addAction( QObject::tr("Group by File") ); break; case emiGROUP_BY_SIZE: action = menu->addAction( QObject::tr("Group by Size") ); break; case emiGROUP_BY_NICK: action = menu->addAction( QObject::tr("Group by Nick") ); break; case emiGROUP_BY_HASH: action = menu->addAction( QObject::tr("Group by Hash") ); break; case emiGROUP_BY_SLOTS_FREE: action = menu->addAction( QObject::tr("Group by free Slots") ); break; case emiGROUP_BY_SLOTS_TOTAL: action = menu->addAction( QObject::tr("Group by total Slots") ); break; case emiGROUP_BY_HUB: action = menu->addAction( QObject::tr("Group by Hub") ); break; case emiGROUP_BY_PATH: action = menu->addAction( QObject::tr("Group by Path") ); break; case emiGROUP_BY_HOST: action = menu->addAction( QObject::tr("Group by Host") ); break; case emiGROUP_BY_IP: action = menu->addAction( QObject::tr("Group by IP") ); break; case emiCOPY: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITCOPY) ), QObject::tr("Copy") ); break; case emiCOPYDCFILELINK: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITCOPY) ), QObject::tr("Copy Link") ); break; case emiCOPYMAGNETLINK: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITCOPY) ), QObject::tr("Copy magnet link") ); break; case emiCLEAR: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiEDITDELETE) ), QObject::tr("Clear") ); break; case emiSELECT_ALL: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiTEXT_SELECT_ALL) ), QObject::tr("Select all") ); break; case emiCLOSE: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFILECLOSE) ), QObject::tr("Close") ); break; case emiHIDE: action = menu->addAction( QObject::tr("Hide") ); break; case emiREFRESH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiRELOAD) ), QObject::tr("Refresh Filelist") ); break; case emiRESET: action = menu->addAction( QObject::tr("Reset") ); break; case emiDOCK: action = menu->addAction( QObject::tr("Dock") ); break; case emiUNDOCK: action = menu->addAction( QObject::tr("Undock") ); break; case emiZOOM_IN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiZOOM_IN) ), QObject::tr("Zoom in") ); break; case emiZOOM_OUT: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiZOOM_OUT) ), QObject::tr("Zoom out") ); break; // languages case emiLANGUAGE_BOSNIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_BOSNIA) ), QObject::tr("Bosnian") ); break; case emiLANGUAGE_BRAZILIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_BRAZIL) ), QObject::tr("Brazilian") ); break; case emiLANGUAGE_CZECH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_CZECH) ), QObject::tr("Czech") ); break; case emiLANGUAGE_DANISH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_DENMARK) ), QObject::tr("Danish") ); break; case emiLANGUAGE_DUTCH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_NETHERLANDS) ), QObject::tr("Dutch") ); break; case emiLANGUAGE_ENGLISH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_BRITAIN) ), QObject::tr("English") ); break; case emiLANGUAGE_FINNISH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_FINLAND) ), QObject::tr("Finnish") ); break; case emiLANGUAGE_FRENCH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_FRANCE) ), QObject::tr("French") ); break; case emiLANGUAGE_GERMAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_GERMANY) ), QObject::tr("German") ); break; case emiLANGUAGE_GREEK: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_GREECE) ), QObject::tr("Greek") ); break; case emiLANGUAGE_HUNGARIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_HUNGARY) ), QObject::tr("Hungarian") ); break; case emiLANGUAGE_ICELANDIC: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_ICELAND) ), QObject::tr("Icelandic") ); break; case emiLANGUAGE_ITALIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_ITALY) ), QObject::tr("Italian") ); break; case emiLANGUAGE_LATVIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_LATVIA) ), QObject::tr("Latvian") ); break; case emiLANGUAGE_NORWEGIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_NORWAY) ), QObject::tr("Norwegian") ); break; case emiLANGUAGE_POLISH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_POLAND) ), QObject::tr("Polish") ); break; case emiLANGUAGE_ROMANIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_ROMANIA) ), QObject::tr("Romanian") ); break; case emiLANGUAGE_RUSSIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_RUSSIA) ), QObject::tr("Russian") ); break; case emiLANGUAGE_SERBIAN_CYRILLIC: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_SERBIA) ), QObject::tr("Serbian (Cyrillic)") ); break; case emiLANGUAGE_SERBIAN_LATIN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_SERBIA) ), QObject::tr("Serbian (Latin)") ); break; case emiLANGUAGE_SLOVAKIAN: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_SLOVAKIA) ), QObject::tr("Slovak") ); break; case emiLANGUAGE_SPANISH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_SPAIN) ), QObject::tr("Spanish") ); break; case emiLANGUAGE_SWEDISH: action = menu->addAction( QIcon( g_pIconLoader->GetPixmap(eiFLAG_SWEDEN) ), QObject::tr("Swedish") ); break; // custom user menu default: action = menu->addAction( text ); break; } if ( action ) { action->setEnabled(enabled); } return action; } /** */ QMenu * DCMenuHandler::addMenu( QMenu * menu, eMenuItems menuitems, bool enabled, QString text ) { QMenu * submenu = 0; switch ( menuitems ) { // submenus case emisGROUP: submenu = menu->addMenu( QObject::tr("Group") ); break; case emisCHAT_RIGHTCLICK_USER: submenu = menu->addMenu( QObject::tr("User: ") + text ); break; case emiCUSTOM: submenu = menu->addMenu( QObject::tr("Custom") ); break; case emiUPLOAD_SLOT: submenu = menu->addMenu( QObject::tr("Upload Slot") ); break; case emisUSER_COMMANDS: submenu = menu->addMenu( QObject::tr("User Commands") ); break; default: submenu = menu->addMenu(text); break; } if ( submenu ) { submenu->setDisabled(!enabled); } return submenu; } valknut-0.4.9/valknut/dctransferview.cpp0000664000076400007640000020257411134413774016603 0ustar ejsejs/*************************************************************************** dctransferview.cpp - description ------------------- begin : Sat Feb 23 2002 copyright : (C) 2002-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dctransferview.h" #include #include #include #include #include #include #include #include #include #include #include #include #include //Added by qt3to4: #include #include #include #include #include #include #include "dcconfig.h" #include "dcfilebrowser.h" #include "dcconnectionmanager.h" #include "dcmenuhandler.h" #include "dcfiletransferinfo.h" #include "dcevent.h" #include "dchubsearch.h" #include "dcedittransfer.h" #include "dciconloader.h" // for user commands #include "dcclient.h" #include "dctransferviewitems.h" #include "dcwidget.h" #include "dcguiutils.h" /* for posting event to it */ #include "dcgui.h" #include #include #include #define TIMER_BASE 500 DCTransferView * g_pTransferView = 0; /** */ DCTransferView::DCTransferView( QWidget * parent ) : QWidget( parent ) { int idx; lastTransfersWidth = -1; lastWaitWidth = -1; lastFilesWidth = -1; lastSlotsWidth = -1; setupUi(this); // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiTRANSFER) ); // set the ColumnWidthMode to manual, we have to do this // because using the Q3ListView resizeMode AllColumns means that it is // impossible to change the size of the last column // and QTreeView only resizes the last column for( idx = 0; idx < ListView_TRANSFER->columns(); idx++ ) { ListView_TRANSFER->setColumnWidthMode( idx, Q3ListView::Manual ); } for( idx = 0; idx < ListView_TRANSFERWAIT->columns(); idx++ ) { ListView_TRANSFERWAIT->setColumnWidthMode( idx, Q3ListView::Manual ); } for( idx = 0; idx < ListView_LOCALFILES->columns(); idx++ ) { ListView_LOCALFILES->setColumnWidthMode( idx, Q3ListView::Manual ); } /* disable this, we are adjusting the column widths */ TreeWidget_SLOTS->header()->setStretchLastSection(false); TreeWidget_SLOTS->sortByColumn( 0, Qt::AscendingOrder ); pMessageList = new QList(); Timer = new QTimer; m_pMessageQueueMutex = new QMutex(); InitDocument(); g_pTransferView = this; } /** */ DCTransferView::~DCTransferView() { g_pTransferView = NULL; if ( Timer ) { Timer->stop(); delete Timer; } m_pMessageQueueMutex->lock(); if ( pMessageList ) { QList * tmp = pMessageList; pMessageList = 0; for ( QList::const_iterator it = tmp->constBegin(); it != tmp->constEnd(); ++it ) { delete *it; } delete tmp; } ListView_TRANSFER->setUpdatesEnabled(false); ListView_TRANSFERWAIT->setUpdatesEnabled(false); ListView_LOCALFILES->setUpdatesEnabled(false); ListView_TRANSFER->setSortColumn(-1); ListView_TRANSFERWAIT->setSortColumn(-1); ListView_LOCALFILES->setSortColumn(-1); if ( !m_QueueMap.isEmpty() ) { for ( TransferQueueMap::const_iterator it = m_QueueMap.constBegin(); it != m_QueueMap.constEnd(); ++it ) { QueueParentMap * submap = it.value(); for ( QueueParentMap::const_iterator it2 = submap->constBegin(); it2 != submap->constEnd(); ++it2 ) { delete it2.value(); } submap->clear(); delete submap; } m_QueueMap.clear(); } if ( !m_QueueLocalMap.isEmpty() ) { for ( QueueParentMap::const_iterator it = m_QueueLocalMap.constBegin(); it != m_QueueLocalMap.constEnd(); ++it ) { delete it.value(); } m_QueueLocalMap.clear(); } if ( !m_ActiveTransferMap.isEmpty() ) { for ( ActiveTransferMap::const_iterator it = m_ActiveTransferMap.constBegin(); it != m_ActiveTransferMap.constEnd(); ++it ) { delete it.value(); } m_ActiveTransferMap.clear(); } DLM_SaveQueue(); m_pMessageQueueMutex->unlock(); delete m_pMessageQueueMutex; m_pMessageQueueMutex = 0; } /** */ void DCTransferView::InitDocument() { StringMap * map; // setup log text edit - almost everything is now in the .ui file TextEdit_LOG->document()->setMaximumBlockCount( 300 ); // default setting if ( g_pConfig->GetMap("TRANSFERVIEW",map) == false ) { // view is docked (*map)["DOCKED"] = QString("1"); } connect( TabWidget_TRANSFER,SIGNAL(currentChanged(QWidget*)), this, SLOT(slotTabWidgetCurrentChange(QWidget*)) ); connect( ListView_TRANSFER, SIGNAL(contextMenuRequested( Q3ListViewItem *, const QPoint &, int )), this, SLOT(slotRightButtonClickedTransferList(Q3ListViewItem*, const QPoint &, int )) ); connect( ListView_TRANSFERWAIT, SIGNAL(contextMenuRequested( Q3ListViewItem *, const QPoint &, int )), this, SLOT(slotRightButtonClickedTransferWaitList(Q3ListViewItem*, const QPoint &, int )) ); connect( ListView_LOCALFILES, SIGNAL(contextMenuRequested( Q3ListViewItem *, const QPoint &, int )), this, SLOT(slotRightButtonClickedLocalFilesList(Q3ListViewItem*, const QPoint &, int )) ); connect( ListView_TRANSFERWAIT,SIGNAL(doubleClicked(Q3ListViewItem*)), this, SLOT(slotDoubleClickedTransferWaitList(Q3ListViewItem*)) ); connect( TreeWidget_SLOTS, SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuUserSlotList( const QPoint & )) ); connect( TextEdit_LOG, SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotRightButtonClickedLog( const QPoint & )) ); connect( Timer, SIGNAL(timeout()), this, SLOT(timerDone()) ); Timer->setSingleShot( true ); Timer->start( TIMER_BASE ); } /** */ void DCTransferView::DeInitDocument() { // deinit transferview // StringMap * map; // save hub view settings // g_pConfig->GetMap("HUBVIEW",map); } /** current tab widget change slot */ void DCTransferView::slotTabWidgetCurrentChange(QWidget*) { SizeColumnsPreservingRatios(); } /** overridden so that the column widths are initialized on first show() */ void DCTransferView::showEvent( QShowEvent * event ) { QWidget::showEvent( event ); if ( isVisible() ) { SizeColumnsPreservingRatios(); } } /** resize event handler */ void DCTransferView::resizeEvent( QResizeEvent * ) { SizeColumnsPreservingRatios(); } /** Initialize or adjusts widths of the ListView/TreeView columns */ void DCTransferView::SizeColumnsPreservingRatios() { int width; if ( ListView_TRANSFER->isVisible() ) { width = ListView_TRANSFER->width(); if ( width > 0 ) { if ( lastTransfersWidth == -1 ) { // approximately double width of list view // less important columns are not shown ListView_TRANSFER->setColumnWidth( 0, ((width*1)/7) ); ListView_TRANSFER->setColumnWidth( 1, ((width*1)/7) ); ListView_TRANSFER->setColumnWidth( 2, ((width*3)/7) ); ListView_TRANSFER->setColumnWidth( 3, ((width*2)/7) ); ListView_TRANSFER->setColumnWidth( 4, ((width*2)/7) ); ListView_TRANSFER->setColumnWidth( 5, ((width*2)/7) ); ListView_TRANSFER->setColumnWidth( 6, ((width*2)/7) ); // this changes the width of ListView_TRANSFER lastTransfersWidth = ListView_TRANSFER->width(); } else if ( lastTransfersWidth != width ) { DCGuiUtils::AdjustColumnWidths( ListView_TRANSFER, lastTransfersWidth ); lastTransfersWidth = ListView_TRANSFER->width(); } } } else if ( ListView_TRANSFERWAIT->isVisible() ) { width = ListView_TRANSFERWAIT->width(); if ( width > 0 ) { if ( lastWaitWidth == -1 ) { ListView_TRANSFERWAIT->setColumnWidth( 0, ((width*4 )/29) ); ListView_TRANSFERWAIT->setColumnWidth( 1, ((width*11)/29) ); ListView_TRANSFERWAIT->setColumnWidth( 2, ((width*5 )/29) ); ListView_TRANSFERWAIT->setColumnWidth( 3, ((width*4 )/29) ); ListView_TRANSFERWAIT->setColumnWidth( 4, ((width*5 )/29) ); lastWaitWidth = ListView_TRANSFERWAIT->width(); } else if ( lastWaitWidth != width ) { DCGuiUtils::AdjustColumnWidths( ListView_TRANSFERWAIT, lastWaitWidth ); lastWaitWidth = ListView_TRANSFERWAIT->width(); } } } else if ( ListView_LOCALFILES->isVisible() ) { width = ListView_LOCALFILES->width(); if ( width > 0 ) { if ( lastFilesWidth == -1 ) { ListView_LOCALFILES->setColumnWidth( 0, ((width*5)/16) ); ListView_LOCALFILES->setColumnWidth( 1, ((width*2)/16) ); ListView_LOCALFILES->setColumnWidth( 2, ((width*3)/16) ); ListView_LOCALFILES->setColumnWidth( 3, ((width*2)/16) ); ListView_LOCALFILES->setColumnWidth( 4, ((width*4)/16) ); lastFilesWidth = ListView_LOCALFILES->width(); } else if ( lastFilesWidth != width ) { DCGuiUtils::AdjustColumnWidths( ListView_LOCALFILES, lastFilesWidth ); lastFilesWidth = ListView_LOCALFILES->width(); } } } else if ( TreeWidget_SLOTS->isVisible() ) { width = TreeWidget_SLOTS->width(); if ( width > 0 ) { if ( lastSlotsWidth == -1 ) { TreeWidget_SLOTS->setColumnWidth( 0, width/3 ); TreeWidget_SLOTS->setColumnWidth( 1, width/3 ); TreeWidget_SLOTS->setColumnWidth( 2, width/3 ); lastSlotsWidth = TreeWidget_SLOTS->width(); } else if ( lastSlotsWidth != width ) { DCGuiUtils::AdjustColumnWidths( TreeWidget_SLOTS, lastSlotsWidth ); lastSlotsWidth = TreeWidget_SLOTS->width(); } } } } /** download manager callback function */ int DCTransferView::DC_DownloadManagerCallBack( CDCMessage * DCMessage ) { int err = -1; if ( m_pMessageQueueMutex == 0 ) { return err; } m_pMessageQueueMutex->lock(); if ( DCMessage && pMessageList ) { pMessageList->append(DCMessage); err = 0; } m_pMessageQueueMutex->unlock(); return err; } /** */ void DCTransferView::timerDone() { CDCMessage *DCMsg; bool bLVWaitUpdate = false; int i; for(i=0;i<50;i++) { if ( m_pMessageQueueMutex->tryLock() == false ) { break; } if ( pMessageList && !pMessageList->isEmpty() ) { DCMsg = pMessageList->takeFirst(); } else { DCMsg = 0; } m_pMessageQueueMutex->unlock(); if ( DCMsg == 0 ) { break; } switch ( DCMsg->m_eType ) { case DC_MESSAGE_DM_INFO: { QApplication::postEvent( g_pMainWin, new DC_DownloadManagerEvent( (CDownloadManagerInfo*)DCMsg ) ); DCMsg = 0; break; } case DC_MESSAGE_FM_INFO: { QApplication::postEvent( g_pMainWin, new DC_FileManagerEvent( (CFileManagerInfo*)DCMsg ) ); DCMsg = 0; break; } case DC_MESSAGE_TRAFFIC: { QApplication::postEvent( g_pMainWin, new DC_TrafficInfoEvent( (DCMessageTraffic*)DCMsg ) ); DCMsg = 0; break; } case DC_MESSAGE_SLOT_OBJECT: { MessageSlot( (CMessageDMSlotObject *)DCMsg ); break; } case DC_MESSAGE_LOG: { MessageLog( (CMessageLog*)DCMsg ); break; } case DC_MESSAGE_FILE_OBJECT: { CMessageDMFileObject * msg = (CMessageDMFileObject*)DCMsg; // must be called BEFORE UpdateTransferWaitList UpdateLocalFileList( msg ); if ( UpdateTransferWaitList( msg ) ) { bLVWaitUpdate = true; } break; } case DC_MESSAGE_TRANSFER_OBJECT: { MessageTransfer( (CMessageDMTransferObject*)DCMsg ); break; } case DC_MESSAGE_FILELIST_OBJECT: { CMessageDMFileListObject * msg = (CMessageDMFileListObject*)DCMsg; QStringList dirs; if ( msg->m_pDirList ) { for ( std::list::const_iterator it = msg->m_pDirList->begin(); it != msg->m_pDirList->end(); ++it ) { dirs << QString::fromAscii(it->Data()); } } NewFileBrowser(msg->sNick.Data(),msg->sHubName.Data(),msg->sHubHost.Data(),msg->sLocalFile.Data(),msg->sJumpTo.Data(),dirs); break; } default: { break; } } if ( DCMsg ) { delete DCMsg; } } if ( bLVWaitUpdate ) { ListView_TRANSFERWAIT->setUpdatesEnabled(true); ListView_TRANSFERWAIT->triggerUpdate(); } Timer->setSingleShot( true ); Timer->start( TIMER_BASE ); } /** */ void DCTransferView::MessageSlot( CMessageDMSlotObject * msg ) { int index = 0; QTreeWidgetItem * item = TreeWidget_SLOTS->topLevelItem( index ); while(item) { if ( (item->text(0) == QString::fromAscii(msg->sNick.Data())) && (item->text(1) == QString::fromAscii(msg->sHubName.Data())) ) { if ( (msg->iSlots == 0) && (!msg->bPermanent) ) { delete item; item=0; } break; } index++; item = TreeWidget_SLOTS->topLevelItem( index ); } if ( (!item) && ((msg->iSlots > 0) || (msg->bPermanent)) ) { item = new QTreeWidgetItem( TreeWidget_SLOTS ); item->setText( 0, msg->sNick.Data() ); item->setText( 1, msg->sHubName.Data() ); } if (item) { if ( msg->bPermanent ) { item->setText(2,"X"); } else { item->setText(2,QString().setNum(msg->iSlots)); } } } /** */ void DCTransferView::MessageLog( CMessageLog * msg ) { bool bscroll; if ( TextEdit_LOG->verticalScrollBar()->maximum() == TextEdit_LOG->verticalScrollBar()->value() ) { bscroll = true; } else { bscroll = false; } TextEdit_LOG->append( QTime::currentTime().toString("[hh:mm:ss] ") + QString(msg->sMessage.Data()) ); if ( bscroll ) { // QT3 TextEdit_LOG->scrollToBottom(); // QT3 TextEdit_LOG->moveCursor( Q3TextEdit::MoveEnd, false ); TextEdit_LOG->moveCursor( QTextCursor::End, QTextCursor::MoveAnchor ); } } /** */ void DCTransferView::MessageTransfer( CMessageDMTransferObject * msg ) { CMessageDMTransferObject * msg1 = 0; CString s; QString n; m_ActiveTransferMapMutex.lock(); DCTransferListItem * TransferListItem = m_ActiveTransferMap.value(msg->m_nTransferID); if ( TransferListItem == 0 ) { if ( msg->bRemoveTransfer == false ) { // create new entry TransferListItem = new DCTransferListItem(); TransferListItem->pItem = new DC_QProgressListItem( ListView_TRANSFER, 2 ); if ( msg->m_bEncrypted ) // TransferListItem->pItem->setPixmap(0,QPixmap(ssl_no_xpm)); // else TransferListItem->pItem->setPixmap(0,g_pIconLoader->GetPixmap(eiSSL_YES)); if ( !g_pConfig->GetTransferViewOptions(etvoFILEPERCENT) ) { TransferListItem->pItem->SetProgressEnable(false); } TransferListItem->pObject = new CMessageDMTransferObject(); msg1 = TransferListItem->pObject; // set transfer id msg1->m_nTransferID = msg->m_nTransferID; m_ActiveTransferMap.insert( msg->m_nTransferID, TransferListItem ); } else { m_ActiveTransferMapMutex.unlock(); return; } } else if ( msg->bRemoveTransfer ) { m_ActiveTransferMap.remove(msg->m_nTransferID); delete TransferListItem; m_ActiveTransferMapMutex.unlock(); return; } msg1 = TransferListItem->pObject; // if ( msg1->m_bEncrypted != msg->m_bEncrypted ) { msg1->m_bEncrypted = msg->m_bEncrypted; if ( msg->m_bEncrypted ) // TransferListItem->pItem->setPixmap(0,QPixmap(ssl_no_xpm)); // else TransferListItem->pItem->setPixmap(0,g_pIconLoader->GetPixmap(eiSSL_YES)); } // update transfer state if ( msg1->eState != msg->eState ) { msg1->eState = msg->eState; switch(msg1->eState) { case estTRANSFERDOWNLOAD: TransferListItem->pItem->setPixmap(2,g_pIconLoader->GetPixmap(eiDOWN)); TransferListItem->pItem->setTransferState("d"); //TransferListItem->pItem->setText(3,tr("Download")); break; case estTRANSFERUPLOAD: TransferListItem->pItem->setPixmap(2,g_pIconLoader->GetPixmap(eiUP)); TransferListItem->pItem->setTransferState("u"); //TransferListItem->pItem->setText(3,tr("Upload")); break; case estTRANSFERHANDSHAKE: TransferListItem->pItem->setPixmap(2,g_pIconLoader->GetPixmap(eiBACK)); TransferListItem->pItem->setTransferState("h"); //TransferListItem->pItem->setText(3,tr("Handshake")); break; case estNONE: //TransferListItem->pItem->setText(3,tr("Nothing")); TransferListItem->pItem->setTransferState("n"); break; default: TransferListItem->pItem->setPixmap(2,g_pIconLoader->GetPixmap(eiHELP)); TransferListItem->pItem->setTransferState("q"); //TransferListItem->pItem->setText(3,tr("Unknown")); break; } } // update nick if ( msg1->m_sDstNick != msg->m_sDstNick ) { msg1->m_sDstNick = msg->m_sDstNick; //TransferListItem->pItem->setText( 0, msg->m_sDstNick.Data() ); if ( msg1->sHost != msg->sHost ) msg1->sHost = msg->sHost; n = msg1->m_sDstNick.Data(); n += " ("; n += msg1->sHost.Data(); n += ")"; TransferListItem->pItem->setText(0, n ); } // update user host else if ( msg1->sHost != msg->sHost ) { msg1->sHost = msg->sHost; n = msg1->m_sDstNick.Data(); n += " ("; n += msg1->sHost.Data(); n += ")"; TransferListItem->pItem->setText(0, n ); } // update hub if ( msg1->sHubName != msg->sHubName ) { msg1->sHubName = msg->sHubName; TransferListItem->pItem->setText(1, msg1->sHubName.Data() ); } // update hubhost if ( msg1->m_sHubHost != msg->m_sHubHost ) { msg1->m_sHubHost = msg->m_sHubHost; } // update filename if ( msg1->m_sSrcFile != msg->m_sSrcFile ) { TransferListItem->pItem->resetProgress(); QString meh = msg->m_sSrcFile.Data(); if ( meh.contains( '\\', Qt::CaseInsensitive ) ) meh = meh.mid( meh.lastIndexOf( '\\' )+1, meh.length() ); else if ( meh.contains( '/', Qt::CaseInsensitive ) ) meh = meh.mid( meh.lastIndexOf( '/' )+1, meh.length() ); if ( meh.isEmpty() ) // partial list transfer { TransferListItem->pItem->setText( 3, QString::fromAscii(msg->m_sSrcFile.Data()) ); } else { TransferListItem->pItem->setText( 3, meh ); } // update local filename msg1->m_sSrcFile = msg->m_sSrcFile; TransferListItem->pItem->resetProgress(); TransferListItem->pItem->setText( 5, msg->m_sSrcFile.Data() ); } // update remote filename + path if ( msg1->m_sDstFile != msg->m_sDstFile ) { msg1->m_sDstFile = msg->m_sDstFile; TransferListItem->pItem->resetProgress(); TransferListItem->pItem->setText( 4, msg->m_sDstFile.Data() ); } // update TTH if ( msg1->m_sTTH != msg->m_sTTH ) { msg1->m_sTTH = msg->m_sTTH; TransferListItem->pItem->setText( 6, msg->m_sTTH.Data() ); } // update transfer rate if ( (msg1->lRate != msg->lRate) || (msg1->m_nMultiRate != msg->m_nMultiRate) || (msg1->lSize != msg->lSize) || (msg1->lSizeDone != msg->lSizeDone) || (msg1->lStartPosition != msg->lStartPosition) || (msg1->lTransfered != msg->lTransfered) || (msg1->lEndPosition != msg->lEndPosition) ) { msg1->lRate = msg->lRate; msg1->m_nMultiRate = msg->m_nMultiRate; msg1->lSize = msg->lSize; msg1->lSizeDone = msg->lSizeDone; msg1->lStartPosition = msg->lStartPosition; msg1->lTransfered = msg->lTransfered; msg1->lEndPosition = msg->lEndPosition; s = ""; if ( g_pConfig->GetTransferViewOptions(etvoCHUNKPERCENT) ) { if ( (msg1->lEndPosition-msg1->lStartPosition) != 0 ) { s += CString::number(((msg1->lTransfered)*100)/(msg1->lEndPosition-msg1->lStartPosition)); s += "% "; } else { s += "0% "; } } if ( g_pConfig->GetTransferViewOptions(etvoFILEPERCENT) ) { TransferListItem->pItem->SetProgressEnable(true); if ( msg1->lSize != 0 ) { TransferListItem->pItem->setProgress( (msg1->lSizeDone*100)/msg1->lSize ); } else { TransferListItem->pItem->setProgress( 0 ); } /* if ( msg1->lSize != 0 ) { s += CString::number(((msg1->lSizeDone)*100)/msg1->lSize); s += "% "; } else { s += "0% "; } */ } else { TransferListItem->pItem->SetProgressEnable(false); } if ( g_pConfig->GetTransferViewOptions(etvoCHUNKSIZE) ) { s += " "; // s += CString::number(msg->lStartPosition); s += CUtils::GetSizeString(msg->lStartPosition,g_pConfig->GetUnit()); s += "/"; // s += CString::number(msg->lStartPosition+msg->lTransfered); s += CUtils::GetSizeString(msg->lStartPosition+msg->lTransfered,g_pConfig->GetUnit()); s += "/"; // s += CString::number(msg->lEndPosition); s += CUtils::GetSizeString(msg->lEndPosition,g_pConfig->GetUnit()); } if ( g_pConfig->GetTransferViewOptions(etvoFILESIZE) ) { s += " "; // s += CString::number(msg->lSizeDone); s += CUtils::GetSizeString(msg->lSizeDone,g_pConfig->GetUnit()); s += "/"; // s += CString::number(msg->lSize); s += CUtils::GetSizeString(msg->lSize,g_pConfig->GetUnit()); } if ( g_pConfig->GetTransferViewOptions(etvoDOWNLOADRATESINGLE) ) { ulonglong rate; rate = msg->lRate; s += " ["; s += CUtils::GetTransferString(rate); s += "]"; } if ( g_pConfig->GetTransferViewOptions(etvoELAPSEDTIMESINGLE) ) { ulonglong rate = 0; rate = msg1->lSize-msg1->lSizeDone; if ( msg->lRate>0 ) rate/=msg->lRate; s += " ["; s += CUtils::GetTimeString(rate); s += "]"; } if ( g_pConfig->GetTransferViewOptions(etvoDOWNLOADRATEMULTI) ) { ulonglong rate; if ( (msg1->m_nMultiRate == 0) && (msg1->lRate != 0) ) rate = msg1->lRate; else rate = msg1->m_nMultiRate; s += " ["; s += CUtils::GetTransferString(rate); s += "]"; } if ( g_pConfig->GetTransferViewOptions(etvoELAPSEDTIMEMULTI) ) { ulonglong rate,r; rate = msg1->lSize-msg1->lSizeDone; if ( (msg1->m_nMultiRate == 0) && (msg1->lRate != 0) ) r=msg1->lRate; else r=msg1->m_nMultiRate; if ( r>0 ) rate/=r; s += " ["; s += CUtils::GetTimeString(rate); s += "]"; } TransferListItem->pItem->setText(2,s.Data()); } m_ActiveTransferMapMutex.unlock(); } /** */ bool DCTransferView::UpdateTransferWaitList( CMessageDMFileObject * msg ) { QString s; bool bLVWaitUpdate = false; m_QueueMapMutex.lock(); // get the list for the nick QString qnick = QString::fromAscii( msg->m_sNick.Data() ); QueueParentMap * parents = m_QueueMap.value( qnick ); if ( parents == 0 ) { // not found if ( msg->m_bRemoveFile ) { // abort m_QueueMapMutex.unlock(); return bLVWaitUpdate; } else { // create new list for this nick parents = new QueueParentMap(); m_QueueMap.insert( qnick, parents ); } } // get the list for the hub QString qhubname = QString::fromAscii( msg->m_sHubName.Data() ); QString qhubhost = QString::fromAscii( msg->m_sHubHost.Data() ); DCTransferQueueParent * TransferQueueParent = parents->value( qhubname ); if ( TransferQueueParent == 0 ) { // create new list ListView_TRANSFERWAIT->setUpdatesEnabled(false); bLVWaitUpdate = true; TransferQueueParent = new DCTransferQueueParent(); TransferQueueParent->pItem = new Q3ListViewItem( ListView_TRANSFERWAIT, qnick ); TransferQueueParent->pItem->setText(1,qhubname); TransferQueueParent->pItem->setText(2,qhubhost); TransferQueueParent->sHubName = qhubname; TransferQueueParent->sHubHost = qhubhost; parents->insert( qhubname, TransferQueueParent ); } else { // update the view if ( TransferQueueParent->sHubHost != qhubhost ) { ListView_TRANSFERWAIT->setUpdatesEnabled(false); bLVWaitUpdate = true; TransferQueueParent->sHubHost = qhubhost; TransferQueueParent->pItem->setText(2,qhubhost); } } // get the fileobject from the file list QString qremotefile; DCTransferQueueChild * TransferQueueChild = 0; if ( !(msg->m_sRemoteFile.IsEmpty()) ) { qremotefile = QString::fromAscii( msg->m_sRemoteFile.Data() ); TransferQueueChild = TransferQueueParent->m_QueueChildMap.value( qremotefile ); } // check for remove this entry if ( msg->m_bRemoveFile ) { ListView_TRANSFERWAIT->setUpdatesEnabled(false); bLVWaitUpdate = true; // remove all files with the root if ( msg->m_sRemoteFile.IsEmpty() ) { // remove all items from the list and view // this is now handled by the TransferQueueParent/TransferQueueChild destructors delete TransferQueueParent; parents->remove( qhubname ); if ( parents->isEmpty() ) { m_QueueMap.remove( qnick ); delete parents; } } // remove only the given file else { // remove the file if ( TransferQueueChild != 0 ) { TransferQueueParent->m_QueueChildMap.remove( qremotefile ); delete TransferQueueChild; } // remove empty list ... if ( TransferQueueParent->m_QueueChildMap.isEmpty() ) { parents->remove( qhubname ); delete TransferQueueParent; if ( parents->isEmpty() ) { m_QueueMap.remove( qnick ); delete parents; } } } } // update the entry else { // set the user state switch(msg->m_eTransferWaitState) { case etwsWAIT: s = tr("Wait"); break; case etwsIDLE: s = tr("Idle"); break; case etwsRUN: s = tr("Run"); s += " ["; s += QString().setNum(msg->m_nConnections); s += "]"; break; case etwsHUBOFFLINE: s = tr("Hub offline"); break; case etwsUSEROFFLINE: s = tr("User offline"); break; case etwsUSERBUSY: s = tr("User busy"); break; case etwsSENDERROR: s = tr("Send error"); break; default: s = tr("Unknown"); break; } TransferQueueParent->pItem->setText(3,s); if ( !(msg->m_sRemoteFile.IsEmpty()) ) { // create a entry for this file if ( TransferQueueChild == 0 ) { ListView_TRANSFERWAIT->setUpdatesEnabled(false); bLVWaitUpdate = true; TransferQueueChild = new DCTransferQueueChild(); // create and set object pointer TransferQueueChild->pObject = new CMessageDMFileObject(); *(TransferQueueChild->pObject) = *msg; TransferQueueChild->pItem = new Q3ListViewItem ( TransferQueueParent->pItem, "" ); TransferQueueChild->pItem->setText(1, qremotefile ); TransferQueueChild->pItem->setText(2, QString().setNum(msg->m_nSize) ); TransferQueueParent->m_QueueChildMap.insert( qremotefile, TransferQueueChild ); } // update the file state switch(msg->m_eTransferFileState) { case etfsNONE: s = tr("Idle"); break; case etfsTRANSFER: s = tr("Transfer"); break; case etfsERROR: s = tr("Error"); break; case etfsPAUSE: s = tr("Pause"); break; default: s = tr("Unknown"); break; } if ( msg->m_bMulti ) { s = "*"+s; } s += "/"; s += QString().setNum(msg->m_nPriority); TransferQueueChild->pItem->setText(3,s); // the TTH may have been filled in from another source TransferQueueChild->pItem->setText(4, msg->m_sTTH.Data()); if ( msg->m_pDirList ) { /* make QT list of dirs actually in the queue */ QStringList queuedirs; for ( std::list::const_iterator cit = msg->m_pDirList->begin(); cit != msg->m_pDirList->end(); ++cit ) { queuedirs << QString::fromAscii( cit->Data() ); } TransferQueueChild->pItem->setText(0,tr("%1 folders").arg(queuedirs.size())); /* make list of dirs currently shown as being in the queue */ QList visdirs; for ( Q3ListViewItem * diritem = TransferQueueChild->pItem->firstChild(); diritem; diritem = diritem->nextSibling() ) { visdirs << diritem; } /* remove from both lists entries that match */ QList::iterator it = visdirs.begin(); while ( it != visdirs.end() ) { if ( queuedirs.removeAll( (*it)->text(1) ) > 0 ) { it = visdirs.erase( it ); } else { ++it; } } /* Any items still in the list are no longer in the queue so delete them */ for ( QList::const_iterator vit = visdirs.constBegin(); vit != visdirs.constEnd(); ++vit ) { delete *vit; bLVWaitUpdate = true; } /* Remaining strings are new directories, create items for them */ for ( QStringList::const_iterator sit = queuedirs.constBegin(); sit != queuedirs.constEnd(); ++sit ) { Q3ListViewItem * newchild = new Q3ListViewItem( TransferQueueChild->pItem ); newchild->setText( 1, *sit ); bLVWaitUpdate = true; } } else { TransferQueueChild->pItem->setText(0,""); while ( TransferQueueChild->pItem->firstChild() ) { delete TransferQueueChild->pItem->firstChild(); bLVWaitUpdate = true; } } } } m_QueueMapMutex.unlock(); return bLVWaitUpdate; } /** */ bool DCTransferView::UpdateLocalFileList( CMessageDMFileObject * msg ) { QString s; bool bLVWaitUpdate = false; QString hnindex; DCTransferQueueParent * TransferQueueParent = 0; DCTransferQueueChild * TransferQueueChild = 0; QString qnick = QString::fromAscii( msg->m_sNick.Data() ); QString qhubname = QString::fromAscii( msg->m_sHubName.Data() ); m_QueueLocalMapMutex.lock(); if ( msg->m_sLocalFile.IsEmpty() ) { if ( msg->m_bRemoveFile == false ) { // abort m_QueueLocalMapMutex.unlock(); return bLVWaitUpdate; } else { // This is a bad case : when removing all downloads corresponding to a nick // get the list for the nick QueueParentMap * parents = m_QueueMap.value( qnick ); if ( parents == 0 ) { printf("Nick not found while updating LocalFileList\n"); m_QueueLocalMapMutex.unlock(); return bLVWaitUpdate; } // get the list for the hub TransferQueueParent = parents->value( qhubname ); if ( TransferQueueParent == 0 ) { printf("Hub not found while updating LocalFileList\n"); m_QueueLocalMapMutex.unlock(); return bLVWaitUpdate; } // get the list with the files // remove all items from the list for ( QueueChildMap::const_iterator it = TransferQueueParent->m_QueueChildMap.constBegin(); it != TransferQueueParent->m_QueueChildMap.constEnd(); ++it ) { CMessageDMFileObject * msg2 = it.value()->pObject; hnindex = QString::fromAscii( msg2->m_sHubName.Data() ); hnindex += QString::fromAscii( "|" ); hnindex += QString::fromAscii( msg2->m_sNick.Data() ); QString lf = QString::fromAscii( msg2->m_sLocalFile.Data() ); DCTransferQueueParent * localparent = m_QueueLocalMap.value( lf ); if ( localparent != 0 ) { DCTransferQueueChild * localchild = localparent->m_QueueChildMap.value( hnindex ); if ( localchild != 0 ) { bLVWaitUpdate = true; localparent->m_QueueChildMap.remove( hnindex ); delete localchild; if ( localparent->m_QueueChildMap.isEmpty() ) { m_QueueLocalMap.remove( lf ); delete localparent; } } } } m_QueueLocalMapMutex.unlock(); return bLVWaitUpdate; } } QString qlocalfile = QString::fromAscii( msg->m_sLocalFile.Data() ); TransferQueueParent = m_QueueLocalMap.value( qlocalfile ); if ( TransferQueueParent == 0 ) { // not found if ( msg->m_bRemoveFile ) { // abort m_QueueLocalMapMutex.unlock(); return bLVWaitUpdate; } else { QString size_h; // create new list for this nick TransferQueueParent = new DCTransferQueueParent(); size_h = QString().setNum(msg->m_nSize); size_h += " ("; size_h += DCGuiUtils::GetSizeString(msg->m_nSize); size_h += ")"; TransferQueueParent->pItem = new DC_QListViewItem( ListView_LOCALFILES ); ((DC_QListViewItem*)(TransferQueueParent->pItem))->mycol = 1; ((DC_QListViewItem*)(TransferQueueParent->pItem))->myvalue = msg->m_nSize; TransferQueueParent->pItem->setText(0,qlocalfile); TransferQueueParent->pItem->setText(1,size_h); TransferQueueParent->pItem->setText(4,msg->m_sTTH.Data()); m_QueueLocalMap.insert( qlocalfile, TransferQueueParent ); } } else { // update TTH if ( TransferQueueParent->pItem->text(4).isEmpty() ) { if ( !(msg->m_sTTH.IsEmpty()) ) { TransferQueueParent->pItem->setText(4,msg->m_sTTH.Data()); } } else { if ( TransferQueueParent->pItem->text(4).toAscii().constData() != msg->m_sTTH ) { printf("Warning TTH changed for '%s' was %s now %s\n",msg->m_sLocalFile.Data(),TransferQueueParent->pItem->text(4).toAscii().constData(),msg->m_sTTH.Data()); TransferQueueParent->pItem->setText(4,msg->m_sTTH.Data()); } } } hnindex = qhubname; hnindex += "|"; hnindex += qnick; TransferQueueChild = TransferQueueParent->m_QueueChildMap.value( hnindex ); // check for remove this entry if ( msg->m_bRemoveFile ) { if ( TransferQueueChild != 0 ) { TransferQueueParent->m_QueueChildMap.remove( hnindex ); delete TransferQueueChild; if ( TransferQueueParent->m_QueueChildMap.isEmpty() ) { m_QueueLocalMap.remove( qlocalfile ); delete TransferQueueParent; } } } else { if ( TransferQueueChild == 0 ) { TransferQueueChild = new DCTransferQueueChild(); TransferQueueChild->pItem = new DC_QListViewItem( TransferQueueParent->pItem ); TransferQueueChild->pItem->setText(0,qnick); TransferQueueChild->pItem->setText(1,qhubname); TransferQueueChild->pItem->setText(2,QString::fromAscii(msg->m_sRemoteFile.Data())); TransferQueueParent->m_QueueChildMap.insert( hnindex, TransferQueueChild ); } // set or update the user state switch(msg->m_eTransferWaitState) { case etwsWAIT: s = tr("Wait"); break; case etwsIDLE: s = tr("Idle"); break; case etwsRUN: s = tr("Run"); s += " ["; s += QString().setNum(msg->m_nConnections); s += "]"; break; case etwsHUBOFFLINE: s = tr("Hub offline"); break; case etwsUSEROFFLINE: s = tr("User offline"); break; case etwsUSERBUSY: s = tr("User busy"); break; case etwsSENDERROR: s = tr("Send error"); break; default: s = tr("Unknown"); break; } TransferQueueChild->pItem->setText(3,s); } m_QueueLocalMapMutex.unlock(); return true; } /** */ void DCTransferView::NewLocalFileBrowser( const bool lock ) { /* the InitTree line is duplicated * otherwise gcc thinks d might be used uninitialised */ if ( lock ) { QDialog * d = new QDialog(this); d->setWindowTitle( tr("My") + " - Filebrowser" ); d->setWindowIcon( g_pIconLoader->GetPixmap(eiVIEW_SIDETREE) ); QGridLayout * Layout = new QGridLayout(); Layout->setMargin(4); d->setLayout(Layout); DCFileBrowser * bft = new DCFileBrowser( d, false ); Layout->addWidget( bft, 0, 0 ); bft->InitTree(g_pConfig->GetNick().Data(),QString::null,QString::null,"/dev/null/ownfilelist"); d->exec(); delete d; } else { DCFileBrowser * bft = new DCFileBrowser( g_pConnectionManager->GetMdiArea() ); QMdiSubWindow * subwin = g_pConnectionManager->GetMdiArea()->addSubWindow(bft); bft->setAttribute(Qt::WA_DeleteOnClose); bft->InitTree(g_pConfig->GetNick().Data(),QString::null,QString::null,"/dev/null/ownfilelist"); subwin->setWindowIcon( g_pIconLoader->GetPixmap(eiVIEW_SIDETREE) ); bft->show(); } } /** */ void DCTransferView::NewFileBrowser( QString nick, QString hubname, QString hubhost, QString filename, QString jumpto, QStringList dirs ) { DCFileBrowser *bft; bft = new DCFileBrowser( g_pConnectionManager->GetMdiArea() ); bft->setAttribute(Qt::WA_DeleteOnClose); QMdiSubWindow * subwin = g_pConnectionManager->GetMdiArea()->addSubWindow(bft); // set transfer bft->InitTree(nick,hubname,hubhost,filename,jumpto,dirs); subwin->setWindowIcon( g_pIconLoader->GetPixmap(eiVIEW_SIDETREE) ); bft->show(); } bool DCTransferView::IsUserInQueue( QString Nick, QString Hubname ) { m_QueueMapMutex.lock(); // get the list corresponding to the nick QueueParentMap * parents = m_QueueMap.value( Nick ); if ( parents == 0 ) { m_QueueMapMutex.unlock(); return false; } // search for the corresponding hub if ( parents->contains( Hubname ) ) { m_QueueMapMutex.unlock(); return true; } m_QueueMapMutex.unlock(); return false; } /** */ void DCTransferView::GetLocalFilesList( QStringList & LocalFiles, QString tth, ulonglong size ) { Q3ListViewItem * LocalFileItem = ListView_LOCALFILES->firstChild(); LocalFiles.clear(); while ( LocalFileItem ) { if ( LocalFileItem->text(4).isEmpty() ) { if ( size == ((DC_QListViewItem*)LocalFileItem)->myvalue ) { LocalFiles.push_back( LocalFileItem->text(0) ); } } else { if ( tth == LocalFileItem->text(4) ) { LocalFiles.push_back( LocalFileItem->text(0) ); } } LocalFileItem = LocalFileItem->nextSibling(); } } /** */ void DCTransferView::GetLocalFilesList( QStringList & LocalFiles, ulonglong size ) { Q3ListViewItem * LocalFileItem = ListView_LOCALFILES->firstChild(); LocalFiles.clear(); while( LocalFileItem ) { if ( LocalFileItem->text(1) != "0" ) // size { if (( size == 0 ) || ( ((DC_QListViewItem*)LocalFileItem)->myvalue == size )) { LocalFiles.push_back( LocalFileItem->text(0) ); } } LocalFileItem = LocalFileItem->nextSibling(); } } /** */ ulonglong DCTransferView::FindTransferID( Q3ListViewItem * item ) { CMessageDMTransferObject * msg; DCTransferListItem * TransferListItem = 0; ulonglong id = 0; m_ActiveTransferMapMutex.lock(); for ( ActiveTransferMap::const_iterator it = m_ActiveTransferMap.constBegin(); it != m_ActiveTransferMap.constEnd(); ++it ) { TransferListItem = it.value(); msg = TransferListItem->pObject; if ( TransferListItem->pItem == item ) { id = msg->m_nTransferID; break; } } m_ActiveTransferMapMutex.unlock(); return id; } /** */ bool DCTransferView::GetTransferMessageObject( Q3ListViewItem * item, CMessageDMTransferObject * obj ) { bool res = false; CMessageDMTransferObject * msg; DCTransferListItem * TransferListItem = 0; m_ActiveTransferMapMutex.lock(); for ( ActiveTransferMap::const_iterator it = m_ActiveTransferMap.constBegin(); it != m_ActiveTransferMap.constEnd(); ++it ) { TransferListItem = it.value(); msg = TransferListItem->pObject; if ( TransferListItem->pItem == item ) { *obj = *msg; res = true; break; } } m_ActiveTransferMapMutex.unlock(); return res; } /** */ eConnectionState DCTransferView::GetTransferDirection( ulonglong sid ) { CMessageDMTransferObject * msg; eConnectionState state = estNONE; m_ActiveTransferMapMutex.lock(); DCTransferListItem * TransferListItem = m_ActiveTransferMap.value(sid); if ( TransferListItem != 0 ) { msg = TransferListItem->pObject; if ( msg ) state = msg->eState; } m_ActiveTransferMapMutex.unlock(); return state; } /** */ void DCTransferView::ConnectToAllHubs() { m_QueueMapMutex.lock(); for ( TransferQueueMap::const_iterator it1 = m_QueueMap.constBegin(); it1 != m_QueueMap.constEnd(); ++it1 ) { QueueParentMap * parents = it1.value(); for ( QueueParentMap::const_iterator it2 = parents->constBegin(); it2 != parents->constEnd(); ++it2 ) { DCTransferQueueParent * TransferQueueParent = it2.value(); g_pConnectionManager->Connect( TransferQueueParent->sHubName.toAscii().constData(), TransferQueueParent->sHubHost.toAscii().constData() ); } } m_QueueMapMutex.unlock(); } /** */ void DCTransferView::SearchFileClone(QString filename, ulonglong size) { QString searchtxt; QRegExp re_ext; // convert local file name into a suitable search expression if ( filename.contains('\\') ) searchtxt = filename.section('\\',-1); else searchtxt = filename.section('/',-1); searchtxt.replace("_"," "); searchtxt.replace("-"," "); re_ext = QRegExp("\\.(\\w{3,4})$"); searchtxt.replace( re_ext, " "+re_ext.cap(1) ); re_ext = QRegExp(","); while (searchtxt.contains(re_ext)) searchtxt.replace(re_ext," "); re_ext = QRegExp("\\s(a|the|and|or|in|to|of)\\s"); re_ext.setCaseSensitivity(Qt::CaseInsensitive); while (searchtxt.contains(re_ext)) searchtxt.replace(re_ext," "); re_ext = QRegExp("^(the|a)\\s"); re_ext.setCaseSensitivity(Qt::CaseInsensitive); while (searchtxt.contains(re_ext)) searchtxt.remove(re_ext); re_ext = QRegExp("\\s{2,}"); while (searchtxt.contains(re_ext)) searchtxt.replace(re_ext," "); /* there is no exact size search type so do at least half size */ DCHubSearch * hubsearch = new DCHubSearch( g_pConnectionManager->GetMdiArea() ); hubsearch->SetSearchForFile( searchtxt, eftALL, 1, size/2 ); hubsearch->show(); hubsearch->StartSearchWithPrompt(); } /** */ void DCTransferView::EditExistingTransfer(QString & nick, QString & hubname, QString & hubhost, CList * list ) { DCEditTransfer * dialg = new DCEditTransfer(this); dialg->Init(nick,hubname,hubhost,list); if ( dialg->exec() == QDialog::Accepted ) { CString OldNick; CString OldHubname; OldNick = nick.toAscii().constData(); OldHubname = hubname.toAscii().constData(); nick = dialg->LineEdit_NICK->text(); hubname = dialg->LineEdit_HUBNAME->text(); hubhost = dialg->LineEdit_HUBHOST->text(); DLM_QueueEdit( OldNick, OldHubname, nick.toAscii().constData(), hubname.toAscii().constData(), hubhost.toAscii().constData()); } delete dialg; } /** */ void DCTransferView::slotRightButtonClickedTransferList( Q3ListViewItem * item , const QPoint &, int ) { QAction * chosen = 0; QMenu * m; CMessageDMTransferObject transfermsg; DCClient * client = 0; QMap addedcommands; if( item == 0 ) { return; } if ( GetTransferMessageObject(item,&transfermsg) == false ) { return; } m = new QMenu(this); QAction * privchat = DCMenuHandler::addAction( m, emiPRIVATE_CHAT, (transfermsg.m_sDstNick.NotEmpty()) ); QAction * browse = DCMenuHandler::addAction( m, emiBROWSE_USER_FILES, (transfermsg.m_sDstNick.NotEmpty()) ); // ,(UserFileInfo.sUserFileList.NotEmpty()) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * close = DCMenuHandler::addAction( m, emiCLOSE_TRANSFER ); QAction * rate = DCMenuHandler::addAction( m, emiCHANGE_TRANSFER_RATE, (GetTransferDirection(transfermsg.m_nTransferID) == estTRANSFERUPLOAD) && (g_pConfig->GetDynamicUploadRate() == false)); client = g_pConnectionManager->GetClientForHub( transfermsg.sHubName, transfermsg.m_sHubHost ); if ( client != 0 ) { addedcommands = client->AddMenuCommands( m, euccChat ); } chosen = m->exec(QCursor::pos()); delete m; if ( chosen == privchat ) { // open chat with user g_pConnectionManager->OpenPrivateChat( transfermsg.sHubName.Data(), transfermsg.m_sHubHost.Data(), transfermsg.m_sDstNick.Data() ); } else if ( chosen == browse ) { // TODO: check if hub online ... // add transfer to the waitlist CString empty; DLM_QueueAdd( transfermsg.m_sDstNick, transfermsg.sHubName, transfermsg.m_sHubHost, DC_USER_FILELIST, DC_USER_FILELIST, empty, empty, eltBUFFER, 0, 0, 0, empty ); } else if ( chosen == close ) { if ( DLM_TransferClose( transfermsg.m_nTransferID ) == false ) { // TODO: error message } } else if ( chosen == rate ) { bool ok = false; ulonglong rate; if ( DLM_TransferGetRate( transfermsg.m_nTransferID, rate ) == false ) { // TODO: error message } else { rate = QInputDialog::getInteger( this, tr("Change Transfer-Rate"), tr("Please enter a Transfer-Rate [B/s] (0=off)"), rate, 0, 9999999, 512, &ok ); } if ( ok ) { if ( (rate < 512) && (rate != 0) ) { rate = 512; } if ( DLM_TransferSetRate( transfermsg.m_nTransferID, rate ) == false ) { // TODO: error message } } } else if ( addedcommands.contains( chosen ) ) { DC_UserMenuCommand * umc = addedcommands[ chosen ]; QString origcommand = umc->m_sCommand; QString usercommand = client->replaceCommandTags( origcommand, transfermsg.m_sDstNick.Data() ); if ( usercommand.isEmpty() ) { // had a %[line:reason] but dialog was cancelled return; } QString fullfilename, filesize, filesizeshort, filetth; fullfilename = transfermsg.m_sDstFile.Data(); filesize.setNum(transfermsg.lSize); filesizeshort = DCGuiUtils::GetSizeString( transfermsg.lSize ); filetth = item->text(6); if ( filetth.isEmpty() ) { filetth = tr("None"); } usercommand.replace( "%[file]", fullfilename ); usercommand.replace( "%[fileFN]", fullfilename ); usercommand.replace( "%[filesize]", filesize ); usercommand.replace( "%[fileSI]", filesize ); usercommand.replace( "%[filesizeshort]", filesizeshort ); usercommand.replace( "%[fileSIshort]", filesizeshort ); usercommand.replace( "%[tth]", filetth ); usercommand.replace( "%[fileTR]", filetth ); usercommand.replace( "%[type]", tr("File") ); usercommand.replace( "%[speed]", CUtils::GetTransferString( transfermsg.lRate ).Data() ); client->SendString( usercommand.toAscii().constData() ); } } /** */ void DCTransferView::slotRightButtonClickedTransferWaitList( Q3ListViewItem * /*item*/ , const QPoint &, int ) { QAction * chosen = 0; QMenu * m; Q3ListViewItem * item1; QString nick,hubname,hubhost,file; CUserFileInfo UserFileInfo; QList selitems; Q3ListViewItem * curitem; bool inactiveTransfer = true, b; int numSelected; DCClient * client = 0; QMap addedcommands; bool addUserCommands = true; numSelected = DCGuiUtils::SelectedItems( ListView_TRANSFERWAIT, selitems ); if ( numSelected == 0 ) { return; } for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->depth() == 2 ) { item1 = curitem->parent()->parent(); } else if ( curitem->depth() == 1 ) { item1 = curitem->parent(); } else { item1 = curitem; } if ( item1 == 0 ) { return; } nick = item1->text(0); hubname = item1->text(1); if ( (!hubhost.isEmpty()) && (hubhost != item1->text(2)) ) { addUserCommands = false; } hubhost = item1->text(2); if ( item1 != curitem ) { if ( curitem->depth() == 2 ) { file = curitem->parent()->text(1); } else { file = curitem->text(1); } } else { file = ""; } if ( DLM_QueueGetFileInfo(nick.toAscii().constData(),hubname.toAscii().constData(),hubhost.toAscii().constData(),file.toAscii().constData(),&UserFileInfo) == false ) { return; } inactiveTransfer = inactiveTransfer && ( ((UserFileInfo.eWaitState != etwsRUN) && (UserFileInfo.eWaitState != etwsWAIT)) || ( (!file.isEmpty()) && (UserFileInfo.eFileState!=etfsTRANSFER))); } if ( numSelected != 1 ) { nick = hubname = hubhost = ""; } m = new QMenu(this); QAction * pause = DCMenuHandler::addAction( m, emiPAUSE_TRANSFER_QUEUE ); QAction * resume = DCMenuHandler::addAction( m, emiRESUME_TRANSFER_QUEUE ); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE_TRANSFER_QUEUE, inactiveTransfer ); //DCMenuHandler::InsertMenu( m, emiREMOVE_TRANSFER_QUEUE_DISK, (inactiveTransfer && false) ); //(TransferItem.eState == etwsIDLE) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * tryconn = DCMenuHandler::addAction( m, emiTRY_CONNECT, (inactiveTransfer) ); QAction * connhub = DCMenuHandler::addAction( m, emiCONNECT_TO_HUB ); QAction * connallhub = DCMenuHandler::addAction( m, emiCONNECT_TO_ALL_HUBS ); QAction * browse = DCMenuHandler::addAction( m, emiBROWSE_USER_FILES, (numSelected==1) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * fileinfo = DCMenuHandler::addAction( m, emiFILE_INFO, ((UserFileInfo.sLocalFile.NotEmpty()) && (numSelected==1)) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * edit = DCMenuHandler::addAction( m, emiEDIT_TRANSFER, ((selitems.first()->depth() == 0) && (inactiveTransfer) && (numSelected==1)) ); QAction * editprio = DCMenuHandler::addAction( m, emiEDIT_FILE_PRIORITY ); QAction * updserver = DCMenuHandler::addAction( m, emiUPDATE_SERVER); QAction * save = DCMenuHandler::addAction( m, emiSAVE_QUEUE ); if ( addUserCommands ) { curitem = selitems.first(); if ( curitem->depth() == 2 ) { curitem = curitem->parent()->parent(); } else if ( curitem->depth() == 1 ) { curitem = curitem->parent(); } client = g_pConnectionManager->GetClientForHub( curitem->text(1).toAscii().constData(),curitem->text(2).toAscii().constData() ); if ( client != 0 ) { addedcommands = client->AddMenuCommands( m, euccChat ); } } chosen = m->exec(QCursor::pos()); delete m; if ( chosen == connhub ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->depth() == 2 ) { item1 = curitem->parent()->parent(); } else if ( curitem->depth() == 1 ) { item1 = curitem->parent(); } else { item1 = curitem; } hubname = item1->text(1); hubhost = item1->text(2); if ( g_pConnectionManager->IsHubOnline(hubname.toAscii().constData(),hubhost.toAscii().constData()) == ehsNONE ) { g_pConnectionManager->Connect( hubname.toAscii().constData(), hubhost.toAscii().constData() ); } } } else if ( chosen == connallhub ) { ConnectToAllHubs(); } else if ( chosen == browse ) { DLM_QueueAdd( nick.toAscii().constData(), hubname.toAscii().constData(), hubhost.toAscii().constData(), DC_USER_FILELIST, DC_USER_FILELIST, file.toAscii().constData(), // jump to file CString(), eltBUFFER, 0, 0, 0, CString() ); } else if ( chosen == tryconn ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->depth() == 2 ) { item1 = curitem->parent()->parent(); } else if ( curitem->depth() == 1 ) { item1 = curitem->parent(); } else { item1 = curitem; } nick = item1->text(0); hubname = item1->text(1); if ( DLM_TransferConnect( nick.toAscii().constData(), hubname.toAscii().constData() ) == false ) { // error message QMessageBox::critical( this, tr("Try Connect"), tr("User and Hub not found in the queue !") + "\n\n" + tr("Nick:") + " '" + nick + "'\n" + tr("Hub:") + " '" + hubname + "'\n" ); } } } else if ( (chosen == pause) || (chosen == resume) ) { if ( chosen == pause ) { b = true; } else { b = false; } for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->depth() == 2 ) { item1 = curitem->parent()->parent(); file = curitem->parent()->text(1); } else if ( curitem->depth() == 1 ) { item1 = curitem->parent(); file = curitem->text(1); } else { item1 = curitem; file = ""; } nick = item1->text(0); hubname = item1->text(1); if ( DLM_QueuePause( nick.toAscii().constData(), hubname.toAscii().constData(), file.toAscii().constData(), b ) == false ) { // TODO: error handling } } } else if ( chosen == remove ) { if (g_pConfig->GetQueryOnFileDelete()) { // first we ask the user switch( QMessageBox::warning( this, tr("Remove Transfer"), tr("You are sure ?"), tr("Remove"), tr("Cancel"), 0, 0, 1 ) ) { case 1: // The user clicked the Quit or pressed Escape return; default: break; } } for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->depth() == 2 ) { /* removing the filelist removes all folders */ if ( curitem->parent()->isSelected() ) { continue; } item1 = curitem->parent()->parent(); file = curitem->text(1); } else if ( curitem->depth() == 1 ) { item1 = curitem->parent(); file = curitem->text(1); } else { item1 = curitem; file = ""; } nick = item1->text(0); hubname = item1->text(1); if ( curitem->depth() == 2 ) { const int res = DLM_QueueRemoveDirectory( nick.toAscii().constData(),hubname.toAscii().constData(),file.toAscii().constData()); switch ( res ) { case 0: // no error break; case 1: QMessageBox::warning( this, tr("Remove folder from queue"), tr("User/hub not found") ); break; case 2: QMessageBox::warning( this, tr("Remove folder from queue"), tr("No directories queued for that user") ); break; case 3: QMessageBox::warning( this, tr("Remove folder from queue"), tr("Directory not found") ); break; default: break; } } else { if ( DLM_QueueRemove(nick.toAscii().constData(),hubname.toAscii().constData(),file.toAscii().constData()) == false ) { // TODO: error handling } } } } else if ( chosen == fileinfo ) { DCFileTransferInfo * ft = new DCFileTransferInfo( UserFileInfo.sLocalFile, g_pConnectionManager->GetMdiArea() ); g_pConnectionManager->GetMdiArea()->addSubWindow( ft ); ft->show(); } else if ( chosen == updserver ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->depth() == 2 ) { item1 = curitem->parent()->parent(); } else if ( curitem->depth() == 1 ) { item1 = curitem->parent(); } else { item1 = curitem; } nick = item1->text(0); hubname = item1->text(1); if ( DLM_QueueUpdateHub( nick.toAscii().constData(), hubname.toAscii().constData() ) == false ) { // TODO: error message ... } } } else if ( chosen == edit ) { CList list; curitem = selitems.first(); nick = curitem->text(0); hubname = curitem->text(1); hubhost = curitem->text(2); DLM_QueueGetHub( nick.toAscii().constData(), hubname.toAscii().constData(), &list ); EditExistingTransfer( nick, hubname, hubhost, &list ); } else if ( chosen == editprio ) { bool ok = false; int priority=0; priority = QInputDialog::getInteger( this, tr("Change File-Priority"), tr("Please enter a priority"), priority, 0, MAX_FILE_PRIORITY, 1, &ok ); if ( ok ) { for ( int i = 0; i < selitems.size(); i++ ) { curitem = selitems.at(i); if ( curitem->depth() == 0 ) { for ( item1 = curitem->firstChild(); item1; item1 = item1->nextSibling() ) { nick = curitem->text(0); hubname = curitem->text(1); file = item1->text(1); if ( DLM_QueueSetFilePriority( nick.toAscii().constData(), hubname.toAscii().constData(), file.toAscii().constData(), priority ) == false ) { // TODO: error message ... } } } else if ( curitem->depth() == 1 ) { item1 = curitem->parent(); nick = item1->text(0); hubname = item1->text(1); file = curitem->text(1); if ( DLM_QueueSetFilePriority( nick.toAscii().constData(), hubname.toAscii().constData(), file.toAscii().constData(), priority ) == false ) { // TODO: error message ... } } else if ( curitem->depth() == 2 ) { item1 = curitem->parent()->parent(); nick = item1->text(0); hubname = item1->text(1); file = curitem->parent()->text(1); DLM_QueueSetFilePriority( nick.toAscii().constData(), hubname.toAscii().constData(), file.toAscii().constData(), priority ); } } } } else if ( chosen == save ) { DLM_SaveQueue(); } else if ( addedcommands.contains( chosen ) ) { DC_UserMenuCommand * umc = addedcommands[ chosen ]; QString usercommand = umc->m_sCommand; QString origUserCommand = usercommand; QString fullfilename, filesize, filesizeshort, filetth; QStringList nicksDone; Q3ListViewItem * parent; for ( int i = 0; i < selitems.size() ; i++ ) { curitem = selitems.at(i); parent = curitem; if ( curitem->depth() == 2 ) { parent = curitem->parent()->parent(); } else if ( curitem->depth() == 1 ) { parent = curitem->parent(); } if ( (umc->m_nType == euctRawOnce) && (nicksDone.contains(parent->text(0))) ) { continue; } usercommand = client->replaceCommandTags( origUserCommand, parent->text(0) ); if ( usercommand.isEmpty() ) { // had a %[line:reason] but dialog was cancelled continue; } if ( curitem != parent ) { QString filetype; if ( curitem->depth() == 2 ) { fullfilename = curitem->text(1); filesize = "0"; filesizeshort = DCGuiUtils::GetSizeString( 0 ); filetth = tr("None"); filetype = tr("Directory"); } else { fullfilename = curitem->text(1); filesize = curitem->text(2); filesizeshort = DCGuiUtils::GetSizeString( filesize.toULongLong() ); filetth = curitem->text(4); if ( filetth.isEmpty() ) { filetth = tr("None"); } filetype = tr("File"); } usercommand.replace( "%[file]", fullfilename ); usercommand.replace( "%[fileFN]", fullfilename ); usercommand.replace( "%[filesize]", filesize ); usercommand.replace( "%[fileSI]", filesize ); usercommand.replace( "%[filesizeshort]", filesizeshort ); usercommand.replace( "%[fileSIshort]", filesizeshort ); usercommand.replace( "%[tth]", filetth ); usercommand.replace( "%[fileTR]", filetth ); usercommand.replace( "%[type]", filetype ); } client->SendString( usercommand.toAscii().constData() ); nicksDone << parent->text(0); } } selitems.clear(); } /** */ void DCTransferView::slotRightButtonClickedLocalFilesList( Q3ListViewItem * item , const QPoint &, int ) { QAction * chosen = 0; QMenu * m; Q3ListViewItem * item1; QString localfile,nick,hubname,remotefile; ulonglong size; CUserFileInfo UserFileInfo; bool removetransfer = true; if( item == 0 ) { return; } if ( item->depth() == 1 ) { item1 = item->parent(); } else { item1 = item; } if ( item1 == 0 ) { return; } localfile = item1->text(0); size = item1->text(1).left(item1->text(1).indexOf(' ')).toULongLong(); if ( item->depth() == 1 ) { nick = item->text(0); hubname = item->text(1); remotefile = item->text(2); if (DLM_QueueGetFileInfo(nick.toAscii().constData(),hubname.toAscii().constData(),"hubhost",remotefile.toAscii().constData(),&UserFileInfo) == false) { return; } removetransfer = ((UserFileInfo.eWaitState != etwsRUN) && (UserFileInfo.eWaitState != etwsWAIT)) || ( (!remotefile.isEmpty()) && (UserFileInfo.eFileState!=etfsTRANSFER)); } else { Q3ListViewItem * tmpitem; for(tmpitem=item->firstChild(); tmpitem; tmpitem=tmpitem->nextSibling()) { nick = tmpitem->text(0); hubname = tmpitem->text(1); remotefile = tmpitem->text(2); if (DLM_QueueGetFileInfo(nick.toAscii().constData(),hubname.toAscii().constData(),"hubhost",remotefile.toAscii().constData(),&UserFileInfo) == false) { return; } removetransfer = removetransfer && ( ((UserFileInfo.eWaitState != etwsRUN) && (UserFileInfo.eWaitState != etwsWAIT)) || ( (!remotefile.isEmpty()) && (UserFileInfo.eFileState!=etfsTRANSFER))); } nick = ""; hubname = ""; remotefile = ""; } m = new QMenu(this); QAction * clone = DCMenuHandler::addAction( m, emiSEARCH_FILE_CLONE, (size > 0) ); QAction * clonetth = DCMenuHandler::addAction( m, emiSEARCH_FILE_CLONE_TTH, !(item1->text(4).isEmpty()) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE_TRANSFER_QUEUE, removetransfer ); //DCMenuHandler::InsertMenu( m, emiREMOVE_TRANSFER_QUEUE_DISK, (removetransfer && false) ); //(TransferItem.eState == etwsIDLE) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * info = DCMenuHandler::addAction( m, emiFILE_INFO, (!localfile.isEmpty()) && (size > 0) ); chosen = m->exec(QCursor::pos()); delete m; if ( chosen == remove ) { if (g_pConfig->GetQueryOnFileDelete()) { // first we ask the user switch( QMessageBox::warning( this, tr("Remove Transfer"), tr("You are sure ?"), tr("Remove"), tr("Cancel"), 0, 0, 1 ) ) { case 1: // The user clicked the Quit or pressed Escape return; default: break; } } if (item->depth() == 0) { Q3ListViewItem * tmpitem; for(tmpitem=item->firstChild(); tmpitem; tmpitem=tmpitem->nextSibling()) { nick = tmpitem->text(0); hubname = tmpitem->text(1); remotefile = tmpitem->text(2); if ( DLM_QueueRemove(nick.toAscii().constData(),hubname.toAscii().constData(),remotefile.toAscii().constData()) == false ) { // TODO: error handling } } } if ( DLM_QueueRemove(nick.toAscii().constData(),hubname.toAscii().constData(),remotefile.toAscii().constData()) == false ) { // TODO: error handling } } else if ( chosen == info ) { DCFileTransferInfo * ft = new DCFileTransferInfo( localfile.toAscii().constData(), g_pConnectionManager->GetMdiArea() ); g_pConnectionManager->GetMdiArea()->addSubWindow( ft ); ft->show(); } else if ( chosen == clone ) { if ( remotefile.isEmpty() ) SearchFileClone(localfile, size); else SearchFileClone(remotefile, size); } else if ( chosen == clonetth ) { DCHubSearch * hubsearch = new DCHubSearch( g_pConnectionManager->GetMdiArea() ); hubsearch->SetSearchForFile( item1->text(4), eftHASH ); hubsearch->show(); hubsearch->StartSearchWithPrompt(); } } /** */ void DCTransferView::slotDoubleClickedTransferWaitList( Q3ListViewItem * /*item*/ ) { Q3ListViewItem * item; Q3ListViewItem * item0; QString nick; QString hubname; QString hubhost; CUserFileInfo UserFileInfo; item = ListView_TRANSFERWAIT->currentItem(); if (item->depth() == 0) { item0 = item; } else { item0 = item->parent(); } nick = item0->text(0); hubname = item0->text(1); hubhost = item0->text(2); if (item->depth() == 0) { if ( g_pConnectionManager->IsHubOnline(hubname.toAscii().constData(),hubhost.toAscii().constData()) == ehsNONE ) { if ( DLM_QueueUpdateHub( nick.toAscii().constData(), hubname.toAscii().constData() ) == false ) { // TODO: error message ... } g_pConnectionManager->Connect( hubname.toAscii().constData(), hubhost.toAscii().constData() ); return; } } if ( DLM_QueueGetFileInfo(nick.toAscii().constData(),hubname.toAscii().constData(),hubhost.toAscii().constData(),CString(),&UserFileInfo) == false ) { return; } if ( (UserFileInfo.eWaitState != etwsRUN) && (UserFileInfo.eWaitState != etwsWAIT) ) { if ( DLM_TransferConnect( nick.toAscii().constData(), hubname.toAscii().constData() ) == false ) { // error message QMessageBox::critical( this, tr("Try Connect"), tr("User and Hub not found in the queue !") + "\n\n" + tr("Nick:") + " '" + nick + "'\n" + tr("Hub:") + " '" + hubname + "'\n" ); } } } /** */ void DCTransferView::slotContextMenuUserSlotList( const QPoint & ) { QList selected = TreeWidget_SLOTS->selectedItems(); if ( selected.size() == 0 ) { return; } QTreeWidgetItem * item = selected.at(0); QAction * chosen = 0; QMenu * m; if( item == 0 ) { return; } m = new QMenu(this); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE ); chosen = m->exec(QCursor::pos()); delete m; if ( chosen == remove ) { DLM_AddUserSlot( item->text(0).toAscii().constData(), item->text(1).toAscii().constData(), 0 ); } } /** */ void DCTransferView::slotRightButtonClickedLog( const QPoint& ) { QAction * chosen = 0; QMenu *m; m = new QMenu(this); QAction * copy = DCMenuHandler::addAction( m, emiCOPY, TextEdit_LOG->textCursor().hasSelection() ); QAction * clear = DCMenuHandler::addAction( m, emiCLEAR, true ); QAction * selectall = DCMenuHandler::addAction( m, emiSELECT_ALL, true ); chosen = m->exec(QCursor::pos()); delete m; if ( chosen == copy ) { TextEdit_LOG->copy(); } else if ( chosen == clear ) { TextEdit_LOG->clear(); } else if ( chosen == selectall ) { QTextCursor cursor = TextEdit_LOG->textCursor(); cursor.select( QTextCursor::Document ); TextEdit_LOG->setTextCursor( cursor ); } } valknut-0.4.9/valknut/dcspy.h0000664000076400007640000000401211127122370014316 0ustar ejsejs/*************************************************************************** dcspy.h - description ------------------- begin : Fre Nov 8 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCSPY_H #define DCSPY_H #include #include #include "DCDialogSpy.h" class QMdiSubWindow; class SearchSpyModel; class CMessageSearchFile; class QCloseEvent; /** *@author Mathias Küster */ class DCSpy : public QWidget, private Ui::DCDialogSpy { Q_OBJECT public: /** construtor */ DCSpy( QWidget * parent ); /** destructor */ virtual ~DCSpy(); /** Get the MDI sub window we are in */ QMdiSubWindow * GetMdiSubWindow() { return m_pContainerWindow; } ; /** */ void InitDocument(); /** */ void DeInitDocument(); /** search */ void DC_Search( CMessageSearchFile * MessageSearch ); protected: /** for removing mdi sub window from mdi area */ virtual void closeEvent( QCloseEvent * e ); private: /** */ QTimer m_Timer; /** */ QMdiSubWindow * m_pContainerWindow; /** */ SearchSpyModel * model; private slots: /** */ void timerDone(); /** */ void slotContextMenuSpy( const QPoint & ); /** */ void slotAltRowColors( bool enable ); }; /** */ extern DCSpy * g_pSpy; #endif valknut-0.4.9/valknut/dcusercommandeditor.h0000664000076400007640000000423011077651674017253 0ustar ejsejs/*************************************************************************** dcusercommandedit.h - Valknut User Command Editor Dialog ------------------- begin : Sun May 25 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCUSERCOMMANDEDITOR_H #define DCUSERCOMMANDEDITOR_H #include #include "ui/DCDialogUserCommandEditor.h" class DC_UserMenuCommand; /** * @author Edward Sheldrake */ class DCUserCommandEditor: public QDialog, private Ui::DCDialogUserCommandEditor { Q_OBJECT public: /** Constructor */ DCUserCommandEditor( QWidget * parent ); /** Destructor */ virtual ~DCUserCommandEditor(); /** Initialises the values in the dialog to the given usercommand */ void SetUMC( DC_UserMenuCommand * usercommand ); /** * Creates a new DC_UserMenuCommand object, fills in the values * to what has been entered, and returns it. */ DC_UserMenuCommand * GetUMC(); public slots: /** checks name/command are not empty */ virtual void accept(); private: /** Get command prefix e.g. "<%[myNI]> " */ QString getCurrentPrefix(); /** Get command suffix e.g. "|" */ QString getCurrentSuffix(); private slots: /** the type of the command was changed, enable/disable items */ void slotTypeChanged( bool checked ); /** the command text changed, update preview */ void slotCommandChanged( const QString & text ); }; #endif // DCUSERCOMMANDEDITOR_H valknut-0.4.9/valknut/filteronlyproxy.cpp0000664000076400007640000000273111106253045017027 0ustar ejsejs/*************************************************************************** filteronlyproxy.cpp - Proxy model for filtering without sorting ------------------- begin : Tue Nov 11 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "filteronlyproxy.h" /** */ FilterOnlyProxy::FilterOnlyProxy( QObject * parent ) : QSortFilterProxyModel( parent ) { /* nothing */ } /** */ FilterOnlyProxy::~FilterOnlyProxy() { /* nothing */ } /** */ void FilterOnlyProxy::sort( int column, Qt::SortOrder order ) { sourceModel()->sort( column, order ); } /** */ bool FilterOnlyProxy::lessThan( const QModelIndex & left, const QModelIndex & right ) const { return left.row() < right.row(); } valknut-0.4.9/valknut/dcfriendobject.h0000664000076400007640000000313311074173623016154 0ustar ejsejs/*************************************************************************** dcfriendobject.h - Friend Object used by Friends list ------------------- begin : Thu Jul 3 2008 copyright : (C) 2002 by François Gannaz copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ #ifndef DCFRIENDOBJECT_H #define DCFRIENDOBJECT_H /** *@author François Gannaz, Edward Sheldrake * * This object was moved out of dcuserslist.h to reduce dependencies * between various files - DCConfig and DCEvent only need to know about this, * not about the DCUsersList. */ #include #include // for away mode #include class QTreeWidgetItem; class DCFriendObject { public: /** construtor */ DCFriendObject() { m_pItem = 0; m_eAwayMode = euamOFFLINE; m_bAutoSec = false; m_bSendImage = false; m_bPermSlot = false; m_bIgnore = false; }; /** destructor */ ~DCFriendObject() {}; QTreeWidgetItem * m_pItem; /** */ QString m_sName; /** */ QString m_sDescription; /** */ QString m_sHubName; /** */ QString m_sHubHost; /** */ QString m_sImageFileName; /** */ eUserAwayMode m_eAwayMode; /** */ bool m_bAutoSec; /** */ bool m_bSendImage; /** If true, grant this user a permanent slot */ bool m_bPermSlot; /** If true, ignore main chat lines from this user */ bool m_bIgnore; }; typedef QMap FriendMap; #endif // DCFRIENDOBJECT_H valknut-0.4.9/valknut/dcdebug.h0000664000076400007640000000352011114102165014570 0ustar ejsejs/*************************************************************************** dcdebug.h - description ------------------- begin : Don Sep 25 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCDEBUG_H #define DCDEBUG_H #include #include #include "DCDialogDebug.h" /** *@author Mathias Küster */ class DCDebug : public QDialog, private Ui::DCDialogDebug { Q_OBJECT public: /** construtor */ DCDebug( QWidget * parent = 0 ); /** destructor */ virtual ~DCDebug(); /** */ bool Init( QString configpath, QString debugopt ); /** */ static CString arg_0; /** */ static CString startup_dir; private slots: /** */ void slotSaveBacktrace(); /** */ void slotDebuggerFinished( int exitCode, QProcess::ExitStatus exitStatus ); private: /** process that runs gdb */ QProcess * m_pDebug; }; #ifndef WIN32 /** */ void crash_install_handlers( void ); /** */ bool can_we_handle_signal( const int signum ); /** */ void print_signal_name( const int signum ); #endif #endif valknut-0.4.9/valknut/dcclient.cpp0000664000076400007640000020467611135727620015346 0ustar ejsejs/*************************************************************************** dcclient.cpp - description ------------------- begin : Thu Oct 4 2001 copyright : (C) 2001-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcclient.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //Added by qt3to4: #include #include #include #include #include #include #include #include #include #include #include #include "dcevent.h" #include "dcspy.h" #include "dctransferview.h" #include "dcconfig.h" #include "dcchat.h" #include "dcmenuhandler.h" #include "dcuserslist.h" #include "dcfriendobject.h" #include "dciconloader.h" #include "dcguiutils.h" #include "dcconnectionmanager.h" #include "userlistmodel.h" #include "filteronlyproxy.h" #include #include #include #include "ui/DCDialogForceMove.h" #include "ui/DCDialogUserCommandLines.h" /** */ DCClient::DCClient( QWidget * parent, CString remoteEncoding ) : QWidget( parent ), CClient( remoteEncoding ), m_bInitSizesDone( false ) { setupUi(this); if ( g_pConnectionManager->GetMdiArea() ) { m_pContainerWindow = g_pConnectionManager->GetMdiArea()->addSubWindow(this); } else { m_pContainerWindow = 0; } // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiNOTCONNECTED) ); if ( m_pContainerWindow != 0 ) { m_pContainerWindow->setWindowIcon( g_pIconLoader->GetPixmap(eiNOTCONNECTED) ); } /* default to sorting A-Z */ TreeView_USERLIST->sortByColumn( COLUMN_NICK, Qt::AscendingOrder ); m_pProxyModel = 0; m_pUserListModel = new UserListModel( this ); for ( int i = 0; i < m_pUserListModel->columnCount(); ++i ) { ComboBox_FILTER->addItem( m_pUserListModel->headerData( i, Qt::Horizontal ).toString() ); } ComboBox_FILTER->addItem( tr("Any") ); ComboBox_FILTER->setCurrentIndex( 0 ); TreeView_USERLIST->setModel( m_pUserListModel ); m_pMessageList = new QList(); m_pMyInfoHash = new QHash(); m_bUseTabWidget = g_pConfig->GetShowChatInTab(); m_nChatFloodCounter = 0; InitDocument(); } /** */ DCClient::~DCClient() { m_Timer.stop(); m_pHubChat->removeEventFilter(this); delete m_pHubChat; if ( g_pUsersList ) { // force recheck all friend state DCFriendObject m_pFriendObject; QApplication::postEvent( g_pUsersList, new DC_FriendEvent( &m_pFriendObject ) ); } Disconnect(); m_Mutex.lock(); if ( m_pMessageList ) { QList * tmp = m_pMessageList; m_pMessageList = 0; for ( QList::const_iterator it = tmp->constBegin(); it != tmp->constEnd(); ++it ) { delete *it; } delete tmp; } m_Mutex.unlock(); m_ChatMap.clear(); clearMyInfoCache(); delete m_pMyInfoHash; m_pMyInfoHash = 0; /* model(s) deleted by QObject auto child deletion */ qDeleteAll(hubcommands); hubcommands.clear(); } /** */ void DCClient::InitDocument() { SetCrypt(false); // add hubchat widget m_pHubChat = new DCChat( TabWidget_CHAT, this, false ); m_pHubChat->setObjectName("HUB-Chat"); m_pHubChat->setAttribute(Qt::WA_DeleteOnClose); m_pHubChat->installEventFilter(this); m_pHubChat->SetNick(QString(),tr("Hub")); TabWidget_CHAT->addTab( m_pHubChat, tr("Hub") ); // remove chat list tab if ( m_bUseTabWidget ) { TabWidget_CHAT->removeTab(0); delete Tab_CHATUSERLIST; Tab_CHATUSERLIST = 0; ListWidget_CHATUSERLIST = 0; /* deleted with Tab_CHATUSERLIST */ TabWidget_CHAT->setCurrentIndex(0); TabWidget_CHAT->setCornerWidget( new QPushButton( QIcon( g_pIconLoader->GetPixmap(eiFILECLOSE) ), QString(), TabWidget_CHAT ) ); TabWidget_CHAT->cornerWidget()->setToolTip(tr("Close chat tab")); TabWidget_CHAT->cornerWidget()->setEnabled(false); } else { connect( ListWidget_CHATUSERLIST,SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(slotDoubleClickedChatUserList(QListWidgetItem*)) ); TabWidget_CHAT->setTabText( 0, tr("Chat List")+" ("+QString().setNum(ListWidget_CHATUSERLIST->count())+")" ); TabWidget_CHAT->setCurrentIndex(1); } connect( TabWidget_CHAT, SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuTabWidgetChat( const QPoint & )) ); connect( TreeView_USERLIST,SIGNAL(doubleClicked( const QModelIndex & )), this, SLOT(slotDoubleClickedUserList( const QModelIndex & )) ); connect( TreeView_USERLIST,SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuUserList( const QPoint & )) ); connect( TabWidget_CHAT,SIGNAL(currentChanged(QWidget*)), this, SLOT(slotTabWidgetChatCurrentChange(QWidget*)) ); connect( ToolButton_CONNECT,SIGNAL(clicked()), this, SLOT(slotHubConnect()) ); connect( ToolButton_SSL,SIGNAL(clicked()), this, SLOT(slotSSLInfo()) ); if (m_bUseTabWidget) { connect( TabWidget_CHAT->cornerWidget(), SIGNAL(clicked()), this, SLOT(slotTabCornerCloseWidgetClicked()) ); } /* filter control widgets */ connect( CheckBox_FILTER, SIGNAL(toggled(bool)), this, SLOT(slotFilterToggled(bool)) ); connect( ComboBox_FILTER, SIGNAL(currentIndexChanged(int)), this, SLOT(slotFilterColumn(int)) ); connect( LineEdit_FILTER, SIGNAL(textChanged(const QString &)), this, SLOT(slotFilterString(const QString &)) ); /* context menu for user list header */ TreeView_USERLIST->header()->setContextMenuPolicy( Qt::CustomContextMenu ); connect( TreeView_USERLIST->header(), SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuHeader( const QPoint & )) ); // set connect disconnect button pixmap SetConnection(false); TreeView_USERLIST->setAlternatingRowColors( g_pConfig->GetAlternatingRowColors() ); connect( g_pConfig, SIGNAL( alternatingRowColorsChanged( bool ) ), this, SLOT( slotAltRowColors( bool ) ) ); TreeView_USERLIST->installEventFilter(this); connect( &m_Timer, SIGNAL(timeout()), this, SLOT(timerDone()) ); m_Timer.setSingleShot( true ); m_Timer.start( 500 ); } /** */ void DCClient::InitSizes() { StringMap * map; // restore settings if ( g_pConfig->GetMap("CLIENTVIEW",map) ) { if ( ((*map)["WIDTH"].toInt() > 0) && ((*map)["HEIGHT"].toInt() > 0) ) { if ( m_pContainerWindow && !isMinimized() && !isMaximized() ) { m_pContainerWindow->resize( (*map)["WIDTH"].toInt(), (*map)["HEIGHT"].toInt() ); } } TreeView_USERLIST->sortByColumn( (*map)["SORTCOLUMN"].toInt(), DCGuiUtils::SortOrderFromName((*map)["SORTORDER"]) ); } if ( g_pConfig->GetUserListRightAlignment() ) { // insertWidget moves the widget if it is already in the splitter Splitter_CLIENT->insertWidget(0,Frame_CHATLIST); Frame_CHATLIST->adjustSize(); Frame_USERLIST->adjustSize(); } if ( g_pConfig->GetMap("USERLISTVIEW",map) ) { if ( (map->value("WIDTH").toInt() > 0) && !isMinimized() ) { QList frames = Splitter_CLIENT->sizes(); if ( frames.size() == 2 ) { int total = frames[0] + frames[1]; if ( g_pConfig->GetUserListRightAlignment() ) { frames[0] = total - map->value("WIDTH").toInt(); frames[1] = map->value("WIDTH").toInt(); } else { frames[0] = map->value("WIDTH").toInt(); frames[1] = total - map->value("WIDTH").toInt(); } Splitter_CLIENT->setSizes(frames); } } } // restore column order, widths and visibility or set defaults bool restored = false; if ( g_pConfig->GetMap("USERLISTCOLUMNORDER",map) ) { restored = TreeView_USERLIST->header()->restoreState( QByteArray::fromBase64(map->value(QString("USERLISTHEADERSTATE")).toAscii()) ); } if ( !restored ) { /* TODO initialize default column width ratios if necessary */ TreeView_USERLIST->header()->hideSection( COLUMN_LOCKPK ); TreeView_USERLIST->header()->hideSection( COLUMN_SUPPORTS ); } } /** */ void DCClient::DeInitDocument() { StringMap * map; // save client view settings g_pConfig->GetMap("CLIENTVIEW",map); if ( m_pContainerWindow != 0 ) { (*map)["WIDTH"] = QString().setNum(m_pContainerWindow->width()); (*map)["HEIGHT"] = QString().setNum(m_pContainerWindow->height()); } (*map)["SORTCOLUMN"] = QString::number( m_pUserListModel->getSortColumn() ); (*map)["SORTORDER"] = DCGuiUtils::SortOrderName( m_pUserListModel->getSortOrder() ); g_pConfig->GetMap("USERLISTVIEW",map); QList sizes = Splitter_CLIENT->sizes(); int index = Splitter_CLIENT->indexOf( Frame_USERLIST ); if ( index < sizes.size() ) { (*map)["WIDTH"] = QString().setNum(sizes[index]); } saveColumns(); if ( !m_ChatMap.isEmpty() ) { QMap::const_iterator it = m_ChatMap.constBegin(); while ( it != m_ChatMap.constEnd() ) { it.value()->removeEventFilter(this); it.value()->close(); ++it; } } } /** */ void DCClient::SetCrypt( bool b ) { ToolButton_SSL->setEnabled(b); if ( b ) { ToolButton_SSL->setToolTip(tr("Line is encrypted.")); ToolButton_SSL->setIcon( QIcon(g_pIconLoader->GetPixmap(eiSSL_YES)) ); } else { ToolButton_SSL->setToolTip(tr("Line is not encrypted.")); ToolButton_SSL->setIcon( QIcon(g_pIconLoader->GetPixmap(eiSSL_NO)) ); } } /** */ void DCClient::SetConnection( bool b ) { if ( b ) { ToolButton_CONNECT->setToolTip(tr("Disconnect.")); ToolButton_CONNECT->setIcon( QIcon(g_pIconLoader->GetPixmap(eiCONNECT_NO)) ); } else { ToolButton_CONNECT->setToolTip(tr("Connect.")); ToolButton_CONNECT->setIcon( QIcon(g_pIconLoader->GetPixmap(eiCONNECT_CREATING)) ); } } /** */ void DCClient::slotSSLInfo() { /* a non blocking info dialog, deleted when closed or when the hub is closed */ QMessageBox * mb = new QMessageBox( this ); mb->setAttribute( Qt::WA_DeleteOnClose ); mb->setIcon( QMessageBox::Information ); mb->setWindowTitle( QString::fromAscii(GetHubName().Data()) ); mb->setText( QString::fromAscii((GetSSLVersion() + '\n' + GetSSLCipher()).Data()) ); mb->setInformativeText( QString::fromAscii(VerifyPeerCertificate().Data()) ); mb->setModal( false ); mb->show(); } /** event filter */ bool DCClient::eventFilter(QObject* object, QEvent* event) { if((event->type() == QEvent::Close)&&((DCClient*)object!=this)) { if ( m_pHubChat == object ) { event->ignore(); return true; } CloseChat( (DCChat*)object ); } else if ( event->type() == QEvent::KeyPress ) { QKeyEvent * e = (QKeyEvent*)event; // reconnect if ( (e->modifiers() == Qt::AltModifier) && (e->key() == Qt::Key_R) ) { slotHubConnect(); } if ( TreeView_USERLIST->hasFocus() ) { // TODO: add userlist shortcuts } } return QWidget::eventFilter( object, event ); // standard event processing } /** current tab widget change slot */ void DCClient::slotTabWidgetChatCurrentChange( QWidget * w ) { DCChat * chat = (DCChat*)w; int index = TabWidget_CHAT->indexOf(w); if ( ! TabWidget_CHAT->tabIcon(index).isNull() ) { TabWidget_CHAT->setTabIcon( index, QIcon() ); // reset nick color m_pUserListModel->setHighlight( chat->GetNick(), false ); } if (m_bUseTabWidget) { if (TabWidget_CHAT->currentWidget() == m_pHubChat) { TabWidget_CHAT->cornerWidget()->setEnabled(false); } else { TabWidget_CHAT->cornerWidget()->setEnabled(true); } } } /** overridden so that sizes are initialized on first show */ void DCClient::showEvent( QShowEvent * event ) { QWidget::showEvent( event ); if ( (m_bInitSizesDone == false) && isVisible() ) { InitSizes(); m_bInitSizesDone = true; } } /** close event - remove client from connection manager before accepting */ void DCClient::closeEvent( QCloseEvent * event ) { g_pConnectionManager->HubClosing( this ); DeInitDocument(); event->accept(); } /** */ void DCClient::UpdateCaption() { QString s; switch(GetConnectionState()) { case estCONNECTED: s = "[+]"; break; default: s = "[-]"; break; } s += " "; s += QString::fromAscii(GetHubName().Data()); if ( GetHubTopic().NotEmpty() ) { s += " ("; s += QString::fromAscii(GetHubTopic().Data()); s += ")"; } if (s.length() > 50) { s = s.left(50) + "..."; } setWindowTitle(s); g_pConnectionManager->CaptionChanged( this ); } /** */ void DCClient::UpdateStatusBar() { if ( m_pProxyModel && m_pProxyModel->rowCount() != m_pUserListModel->rowCount() ) { TextLabel_USERCOUNT->setText( QString("%1/%2").arg(m_pProxyModel->rowCount()).arg(m_pUserListModel->rowCount()) ); } else { TextLabel_USERCOUNT->setText( QString::number( m_pUserListModel->rowCount() ) ); } TextLabel_SHARESIZE->setText( DCGuiUtils::GetSizeString(UserList()->ShareSize()) ); } /** */ void DCClient::timerDone() { CDCMessage *DCMsg; int i; for(i=0;i<200;i++) { if ( m_Mutex.tryLock() == false ) { break; } if ( m_pMessageList && !m_pMessageList->isEmpty() ) { DCMsg = m_pMessageList->takeFirst(); } else { DCMsg = 0; } m_Mutex.unlock(); if ( DCMsg == 0 ) { break; } switch ( DCMsg->m_eType ) { case DC_MESSAGE_CONNECTION_STATE: { CMessageConnectionState *msg = (CMessageConnectionState*) DCMsg; if ( msg->m_eState == estCONNECTED ) { m_nChatFloodCounter = 0; m_bUserPassword = false; UpdateCaption(); setWindowIcon( g_pIconLoader->GetPixmap(eiCONNECTED) ); if ( m_pContainerWindow ) m_pContainerWindow->setWindowIcon( g_pIconLoader->GetPixmap(eiCONNECTED) ); // repaint new icon in minimized mode if ( isMinimized() ) showMinimized(); m_pHubChat->AddStatus(tr("Connected")); // init userlist DC_NickList(0); g_pConfig->PlaySound(eusCONNECT); SetConnection(true); SetCrypt(false); } if ( msg->m_eState == estSSLCONNECTED ) { SetCrypt(true); } else if ( msg->m_eState == estCONNECTIONTIMEOUT ) { m_pHubChat->AddStatus(tr("Connection timeout")); SetConnection(false); SetCrypt(false); } else if ( msg->m_eState == estSOCKETERROR ) { QString s; s = tr("Error: '"); s += QString::fromAscii(msg->m_sMessage.Data()); s += QString("'"); m_pHubChat->AddStatus(s); SetConnection(false); SetCrypt(false); } else if ( msg->m_eState == estDISCONNECTED ) { m_nChatFloodCounter = 0; UpdateCaption(); setWindowIcon( g_pIconLoader->GetPixmap(eiNOTCONNECTED) ); if ( m_pContainerWindow ) m_pContainerWindow->setWindowIcon( g_pIconLoader->GetPixmap(eiNOTCONNECTED) ); // repaint new icon in minimized mode if ( isMinimized() ) showMinimized(); m_pHubChat->AddStatus(tr("Disconnected")); g_pConfig->PlaySound(eusDISCONNECT); if ( g_pUsersList ) { // force recheck all friend state DCFriendObject m_pFriendObject; QApplication::postEvent( g_pUsersList, new DC_FriendEvent( &m_pFriendObject ) ); } // reset all chats QMap::const_iterator it = m_ChatMap.constBegin(); while ( it != m_ChatMap.constEnd() ) { it.value()->SetCrypt(esecsNONE); it.value()->AddStatus(tr("We left the hub.")); ++it; } SetConnection(false); SetCrypt(false); } break; } case DC_MESSAGE_VALIDATEDENIDE: { m_pHubChat->AddStatus(tr("Your Nick is already in use.")); Disconnect(); break; } case DC_MESSAGE_NICKLIST: { DC_NickList( (CMessageNickList *) DCMsg ); break; } case DC_MESSAGE_OPLIST: { DC_OpList( (CMessageOpList *) DCMsg ); break; } case DC_MESSAGE_REVCONNECTTOME: { if ( GetMode() == ecmPASSIVE ) { if ( g_pConfig->GetSendMessageOnActiveModeRequest() ) { CMessageRevConnectToMe * msg = (CMessageRevConnectToMe*) DCMsg; SendPrivateMessage( GetNick(), msg->m_sDstNick, tr("Sorry, you will not be able to download from me, because we are both in passive mode. (automated message)").toAscii().constData() ); } } break; } case DC_MESSAGE_CHAT: { CMessageChat * msg = (CMessageChat *) DCMsg; if ( m_ChatFloodMessage.m_sMessage == msg->m_sMessage && m_ChatFloodMessage.m_sNick == msg->m_sNick ) { // increment flood counter m_nChatFloodCounter++; } else { // update message and reset counter m_ChatFloodMessage.m_sMessage = msg->m_sMessage; m_ChatFloodMessage.m_sNick = msg->m_sNick; m_nChatFloodCounter = 0; } // if flood detect enabled ? if ( g_pConfig->GetFloodCount() > 0 ) { if ( m_nChatFloodCounter >= g_pConfig->GetFloodCount() ) { // only one flood message if ( m_nChatFloodCounter == g_pConfig->GetFloodCount() ) { m_pHubChat->AddStatus(tr("Flood Detected") + " (" + QString().setNum(m_nChatFloodCounter) + ")"); // now the admin kick the user if enabled if ( (g_pConfig->GetFloodOpKick()) && (!UserList()->IsAdmin(msg->m_sNick)) && (UserList()->IsAdmin(GetNick())) ) { //if OP kick the user for Flooding CString kickmessage=g_pConfig->GetFloodOpKickMessage(); SendPrivateMessage( GetNick(), msg->m_sNick, ("You are being kicked because: " + kickmessage)); SendChat( GetNick(), GetNick() + " is kicking " + msg->m_sNick + " because: " + kickmessage ); SendKick(msg->m_sNick); } } // don't show the flood messages msg = 0; } } if ( msg ) { DC_Chat( msg ); } break; } case DC_MESSAGE_MYINFO: { DC_MyInfo( (CMessageMyInfo *) DCMsg ); break; } case DC_MESSAGE_QUIT: { DC_Quit( (CMessageQuit *) DCMsg ); break; } case DC_MESSAGE_SEARCH_FILE: { if ( g_pSpy ) g_pSpy->DC_Search( (CMessageSearchFile *) DCMsg ); break; } case DC_MESSAGE_HELLO: { DC_Hello( (CMessageHello *) DCMsg ); break; } case DC_MESSAGE_FORCEMOVE: { CMessageForceMove * msg = (CMessageForceMove*) DCMsg; if ( g_pConfig->GetForceMoveEnabled() ) { UpdateCaption(); m_pHubChat->AddStatus( tr("Redirect to ")+ QString::fromAscii(msg->m_sHost.Data()) + QString(":") + QString().setNum(msg->m_nPort) ); } else { m_pHubChat->AddStatus( tr("Redirect disabled ")+ QString::fromAscii(msg->m_sHost.Data()) + QString(":") + QString().setNum(msg->m_nPort) ); } break; } case DC_MESSAGE_HUBNAME: { CMessageHubName * msg = (CMessageHubName*) DCMsg; QString qhubname = QString::fromAscii( msg->m_sHubName.Data() ); if ( (msg->m_sOldHubName.NotEmpty()) && (msg->m_sOldHubName != msg->m_sHubName) ) { m_pHubChat->AddStatus( tr("Hubname change:")+QString(" '")+QString::fromAscii(msg->m_sOldHubName.Data())+QString("' -> '")+qhubname+QString("'") ); } UpdateCaption(); // update caption from the main chat m_pHubChat->SetNick(QString(),qhubname); // update caption from all private chats if ( !m_ChatMap.isEmpty() ) { QMap::const_iterator it = m_ChatMap.constBegin(); while( it != m_ChatMap.constEnd() ) { it.value()->SetNick( it.value()->GetNick(), qhubname ); ++it; } } break; } case DC_MESSAGE_HUB_TOPIC: { UpdateCaption(); break; } case DC_MESSAGE_PRIVATECHAT: { DC_PrivateChat( (CMessagePrivateChat*) DCMsg ); break; } case DC_MESSAGE_GETPASS: { bool ok = false; DCConfigHubProfile pConfigHubProfile; if ( m_bUserPassword == false ) { // get password from profile if ( g_pConfig->GetBookmarkHubProfile( GetHubName(), GetHost(), &pConfigHubProfile ) ) { if ( pConfigHubProfile.m_sPassword.NotEmpty() ) { m_pHubChat->AddStatus(tr("Use password from profile")); SendPass(pConfigHubProfile.m_sPassword); SetUsedPassword(true); m_bUserPassword = true; break; } else { m_pHubChat->AddStatus(tr("Password from profile is empty")); } } else { m_pHubChat->AddStatus(tr("No profile found for this hub")); } } QString text = QInputDialog::getText( this, tr( "Password - ")+QString(GetHubName().Data()), tr( "Please enter your password" ), QLineEdit::Password, QString::null, &ok ); if ( ok && !text.isEmpty() ) { SendPass(text.toAscii().constData()); SetUsedPassword(true); } else { Disconnect(); } break; } case DC_MESSAGE_BADPASS: { m_pHubChat->AddStatus(tr("Wrong password")); SetUsedPassword(false); break; } case DC_MESSAGE_USERIP: { CMessageUserIP * msg = (CMessageUserIP*) DCMsg; std::list::const_iterator nick_it = msg->m_lNicks.begin(); std::list::const_iterator ip_it = msg->m_lIPs.begin(); QString qnick, qip; CMessageMyInfo * myinfo = 0; while ( (nick_it != msg->m_lNicks.end()) && (ip_it != msg->m_lIPs.end()) ) { qnick = QString::fromAscii( nick_it->Data() ); qip = QString::fromAscii( ip_it->Data() ); // fill in the IP address column for the given nick m_pUserListModel->updateIP( qnick, qip ); // update this useless thing myinfo = m_pMyInfoHash->value( qnick ); if ( myinfo ) { myinfo->m_sTransferHost = *ip_it; } // notify when given own IP if ( *nick_it == GetNick() ) { m_pHubChat->AddStatus(tr("Hub gave us our IP: ") + qip); if ( g_pConfig->GetUserIP2Enabled() == false ) { m_pHubChat->AddStatus(tr("Enable") + " \"" + tr("Use IP address from the hub") + "\" " + tr("in Options -> Connection -> Mode to use this value.")); } } ++nick_it; ++ip_it; } break; } case DC_MESSAGE_USER_COMMAND: { DC_UserCommand( (CMessageUserCommand*)DCMsg ); break; } case DC_MESSAGE_LOG: { m_pHubChat->AddStatus(QString::fromAscii(((CMessageLog*)DCMsg)->sMessage.Data())); } default: { break; } } if ( DCMsg ) delete DCMsg; } m_Timer.setSingleShot( true ); m_Timer.start( 500 ); } /** */ int DCClient::DC_CallBack( CDCMessage * DCMessage ) { int err = -1; m_Mutex.lock(); if ( DCMessage && m_pMessageList ) { m_pMessageList->append(DCMessage); err = 0; } m_Mutex.unlock(); return err; } /** chat */ void DCClient::DC_Chat( CMessageChat * MessageChat ) { QString qnick = QString::fromAscii(MessageChat->m_sNick.Data()); QString qmessage = QString::fromAscii(MessageChat->m_sMessage.Data()); // check for ignored nick if ( g_pUsersList->ignoreNick( qnick ) ) { //printf("Ignoring \"%s\" from \"%s\"\n", MessageChat->m_sMessage.Data(), MessageChat->m_sNick.Data()); return; } m_pHubChat->AddMessage(qnick,qmessage,true); if ( !m_pHubChat->isVisible() ) { TabWidget_CHAT->setTabIcon( TabWidget_CHAT->indexOf(m_pHubChat), QIcon( g_pIconLoader->GetPixmap(eiMESSAGE) ) ); } // send chat event g_pConnectionManager->HubEvent(this); // check for auto responses if ( g_pConfig->GetAutoResponderEnabled() ) { doAutoResponse( qnick, qmessage, m_pHubChat ); } } /** myinfo */ void DCClient::DC_MyInfo( CMessageMyInfo * MessageMyInfo ) { if ( MessageMyInfo->m_sNick.IsEmpty() ) { m_pHubChat->AddStatus(tr("Cannot display user with empty nick.")); return; } QPixmap pm; QString nick = QString::fromAscii(MessageMyInfo->m_sNick.Data()); CMessageMyInfo * myinfo = m_pMyInfoHash->value( nick ); if ( myinfo == 0 ) { myinfo = new CMessageMyInfo(); *myinfo = *MessageMyInfo; m_pMyInfoHash->insert( nick, myinfo ); pm = *g_pConfig->GetUserIcon(MessageMyInfo); m_pUserListModel->addUser( nick, pm, MessageMyInfo->m_sComment.Data(), QString::fromAscii(MessageMyInfo->m_sVerComment.Data()), MessageMyInfo->m_sUserSpeed.Data(), QString::fromAscii(MessageMyInfo->m_sEMail.Data()), MessageMyInfo->m_nShared, MessageMyInfo->m_sTransferHost.Data(), MessageMyInfo->m_MessageLock.m_sData.Data(), MessageMyInfo->m_MessageSupports.m_sContent.Data() ); // user not in the list, add it addUser( nick ); } else { if ( (myinfo->m_eAwayMode != MessageMyInfo->m_eAwayMode) || (myinfo->m_eUserSpeed != MessageMyInfo->m_eUserSpeed) || (myinfo->m_bOperator != MessageMyInfo->m_bOperator) || (myinfo->m_eClientMode != MessageMyInfo->m_eClientMode) || (myinfo->m_eClientVersion != MessageMyInfo->m_eClientVersion) || (myinfo->m_bFireballFlag != MessageMyInfo->m_bFireballFlag) || (myinfo->m_bServerFlag != MessageMyInfo->m_bServerFlag) || (myinfo->m_bTLSFlag != MessageMyInfo->m_bTLSFlag) ) { pm = *g_pConfig->GetUserIcon(MessageMyInfo); m_pUserListModel->updateIcon( nick, pm); myinfo->m_eAwayMode = MessageMyInfo->m_eAwayMode; myinfo->m_eUserSpeed = MessageMyInfo->m_eUserSpeed; myinfo->m_bOperator = MessageMyInfo->m_bOperator; myinfo->m_eClientMode = MessageMyInfo->m_eClientMode; myinfo->m_eClientVersion = MessageMyInfo->m_eClientVersion; myinfo->m_bFireballFlag = MessageMyInfo->m_bFireballFlag; myinfo->m_bServerFlag = MessageMyInfo->m_bServerFlag; myinfo->m_bTLSFlag = MessageMyInfo->m_bTLSFlag; } if ( myinfo->m_sComment != MessageMyInfo->m_sComment ) { myinfo->m_sComment = MessageMyInfo->m_sComment; m_pUserListModel->updateComment( nick, QString::fromAscii(MessageMyInfo->m_sComment.Data()) ); } if ( myinfo->m_sVerComment != MessageMyInfo->m_sVerComment ) { myinfo->m_sVerComment = MessageMyInfo->m_sVerComment; m_pUserListModel->updateTag( nick, MessageMyInfo->m_sVerComment.Data() ); } if ( myinfo->m_sUserSpeed != MessageMyInfo->m_sUserSpeed ) { myinfo->m_sUserSpeed = MessageMyInfo->m_sUserSpeed; m_pUserListModel->updateSpeed( nick, MessageMyInfo->m_sUserSpeed.Data() ); } if ( myinfo->m_sEMail != MessageMyInfo->m_sUserSpeed ) { myinfo->m_sEMail = MessageMyInfo->m_sUserSpeed; m_pUserListModel->updateEmail( nick, QString::fromAscii(MessageMyInfo->m_sEMail.Data()) ); } if ( myinfo->m_nShared != MessageMyInfo->m_nShared ) { myinfo->m_nShared = MessageMyInfo->m_nShared; m_pUserListModel->updateShare( nick, MessageMyInfo->m_nShared ); } if ( myinfo->m_sTransferHost != MessageMyInfo->m_sTransferHost ) { myinfo->m_sTransferHost = MessageMyInfo->m_sTransferHost; m_pUserListModel->updateIP( nick, MessageMyInfo->m_sTransferHost.Data() ); } if ( myinfo->m_MessageLock.m_sData != MessageMyInfo->m_MessageLock.m_sData ) { myinfo->m_MessageLock.m_sData = MessageMyInfo->m_MessageLock.m_sData; m_pUserListModel->updateLockPK( nick, MessageMyInfo->m_MessageLock.m_sData.Data() ); } if ( myinfo->m_MessageSupports.m_sContent != MessageMyInfo->m_MessageSupports.m_sContent ) { myinfo->m_MessageSupports.m_sContent = MessageMyInfo->m_MessageSupports.m_sContent; m_pUserListModel->updateSupports( nick, MessageMyInfo->m_MessageSupports.m_sContent.Data() ); } } // send friend event if ( g_pUsersList ) { DCFriendObject m_pFriendObject; m_pFriendObject.m_sName = nick; m_pFriendObject.m_sDescription = QString::fromAscii(MessageMyInfo->m_sComment.Data()); m_pFriendObject.m_eAwayMode = MessageMyInfo->m_eAwayMode; m_pFriendObject.m_sHubName = QString::fromAscii(GetHubName().Data()); m_pFriendObject.m_sHubHost = QString::fromAscii(GetHost().Data()); QApplication::postEvent( g_pUsersList, new DC_FriendEvent( &m_pFriendObject ) ); } UpdateStatusBar(); } /** hello */ void DCClient::DC_Hello( CMessageHello * MessageHello ) { if ( MessageHello->m_sNick.IsEmpty() ) { m_pHubChat->AddStatus(tr("Cannot display user with empty nick.")); return; } QPixmap pm; QString nick = QString::fromAscii(MessageHello->m_sNick.Data()); if ( m_pMyInfoHash->contains( nick ) == false ) { CMessageMyInfo * myinfo = new CMessageMyInfo(); myinfo->m_sNick = MessageHello->m_sNick; myinfo->m_eAwayMode = euamNORMAL; m_pMyInfoHash->insert( nick, myinfo ); pm = *g_pConfig->GetUserIcon(myinfo); m_pUserListModel->addUser( nick, pm ); addUser( nick ); } UpdateStatusBar(); } /** quit */ void DCClient::DC_Quit( CMessageQuit * MessageQuit ) { if ( MessageQuit->m_sNick.IsEmpty() ) { return; } QString nick = QString::fromAscii(MessageQuit->m_sNick.Data()); DCChat * chat = m_ChatMap.value(nick); QHash::iterator it = m_pMyInfoHash->find( nick ); if ( it != m_pMyInfoHash->end() ) { m_pUserListModel->removeUser( nick ); delete it.value(); m_pMyInfoHash->erase( it ); } if ( chat != 0 ) { chat->SetCrypt(esecsNONE); chat->AddStatus(tr("User left the hub.")); } // send friend event if ( g_pUsersList ) { DCFriendObject m_pFriendObject; m_pFriendObject.m_sName = nick; m_pFriendObject.m_eAwayMode = euamOFFLINE; m_pFriendObject.m_sHubName = QString::fromAscii(GetHubName().Data()); m_pFriendObject.m_sHubHost = QString::fromAscii(GetHost().Data()); QApplication::postEvent( g_pUsersList, new DC_FriendEvent( &m_pFriendObject ) ); } if ( g_pConfig->GetChatShowJoinsAndParts() ) { if ( g_pConfig->GetChatShowJoinsAndPartsOnlyFav() ) { if ( g_pUsersList->isNickInList( nick ) ) { m_pHubChat->AddStatus( tr("Parts: ") + nick ); } } else { m_pHubChat->AddStatus( tr("Parts: ") + nick ); } } UpdateStatusBar(); } /** nicklist */ void DCClient::DC_NickList( CMessageNickList * MessageNickList ) { CString * Nick = 0; QPixmap pm; QString nick; TreeView_USERLIST->setUpdatesEnabled(false); m_pUserListModel->clear(); clearMyInfoCache(); if ( MessageNickList ) { while ( (Nick=MessageNickList->m_NickList.Next(Nick)) != 0 ) { if ( Nick->IsEmpty() ) { m_pHubChat->AddStatus(tr("Cannot display user with empty nick.")); continue; } nick = QString::fromAscii(Nick->Data()); if ( m_pMyInfoHash->contains( nick ) == false ) { CMessageMyInfo * myinfo = new CMessageMyInfo(); myinfo->m_sNick = (*Nick); myinfo->m_eAwayMode = euamNORMAL; m_pMyInfoHash->insert( nick, myinfo ); pm = *g_pConfig->GetUserIcon(myinfo); m_pUserListModel->addUser( nick, pm ); } // send friend event if ( g_pUsersList ) { DCFriendObject m_pFriendObject; m_pFriendObject.m_sName = nick; m_pFriendObject.m_eAwayMode = euamONLINE; m_pFriendObject.m_sHubName = QString::fromAscii(GetHubName().Data()); m_pFriendObject.m_sHubHost = QString::fromAscii(GetHost().Data()); QApplication::postEvent( g_pUsersList, new DC_FriendEvent( &m_pFriendObject ) ); } } } TreeView_USERLIST->setUpdatesEnabled(true); UpdateStatusBar(); } /** oplist */ void DCClient::DC_OpList( CMessageOpList * MessageOpList ) { CString * Nick = 0; QPixmap pm; QString nick; TreeView_USERLIST->setUpdatesEnabled(false); while ( (Nick=MessageOpList->m_NickList.Next(Nick)) != 0 ) { if ( Nick->IsEmpty() ) { m_pHubChat->AddStatus(tr("Cannot display operator with empty nick.")); continue; } nick = QString::fromAscii(Nick->Data()); CMessageMyInfo * myinfo = m_pMyInfoHash->value( nick ); if ( myinfo == 0 ) { myinfo = new CMessageMyInfo(); myinfo->m_sNick = (*Nick); myinfo->m_bOperator = true; myinfo->m_eAwayMode = euamNORMAL; m_pMyInfoHash->insert( nick, myinfo ); // user not in the list, add it addUser( nick ); pm = *g_pConfig->GetUserIcon(myinfo); m_pUserListModel->addUser( nick, pm ); m_pUserListModel->setSortTop( nick, true ); } else { if ( myinfo->m_bOperator == false ) { myinfo->m_bOperator = true; pm = *g_pConfig->GetUserIcon( myinfo ); m_pUserListModel->updateIcon( nick, pm ); m_pUserListModel->setSortTop( nick, true ); } } } TreeView_USERLIST->setUpdatesEnabled(true); UpdateStatusBar(); } void DCClient::DC_PrivateChat( QString nick, QString fromnick, QString message, bool bLocal ) { CMessagePrivateChat msg; msg.m_sSrcNick = nick.toAscii().constData(); msg.m_sMultiSrcNick = fromnick.toAscii().constData(); msg.m_sMessage = message.toAscii().constData(); DC_PrivateChat( &msg, bLocal ); } /** */ void DCClient::DC_PrivateChat( CMessagePrivateChat * msg, bool bLocal ) { QWidget * focuswidget = 0; bool bShowChat = true; if ( msg->m_sSrcNick.IsEmpty() ) { return; } QString qnick = QString::fromAscii(msg->m_sSrcNick.Data()); QString qmessage = QString::fromAscii(msg->m_sMessage.Data()); // also check for ignored nick for PMs if ( g_pUsersList->ignoreNick( qnick ) ) { //printf("Ignoring PM \"%s\" from \"%s\"\n", msg->m_sMessage.Data(), msg->m_sSrcNick.Data() ); return; } DCChat * chat = m_ChatMap.value(qnick); // create a new chat window if ( chat == 0 ) { focuswidget = qApp->focusWidget(); if ( m_bUseTabWidget ) { chat = new DCChat( TabWidget_CHAT, this ); chat->setObjectName("chat"); chat->setAttribute(Qt::WA_DeleteOnClose); } else { chat = new DCChat( g_pConnectionManager->GetMdiArea(), this ); chat->setObjectName("chat"); chat->setAttribute(Qt::WA_DeleteOnClose); new QListWidgetItem( qnick, ListWidget_CHATUSERLIST ); TabWidget_CHAT->setTabText( 0, tr("Chat List")+" ("+QString().setNum(ListWidget_CHATUSERLIST->count())+")" ); } // fix hide if chat maximized chat->show(); chat->hide(); chat->installEventFilter(this); chat->SetNick(qnick,QString::fromAscii(GetHubName().Data())); m_ChatMap.insert( qnick, chat ); if ( (g_pConfig->GetOpenPrivateChatWindow() == false) && (bLocal == false) ) { bShowChat = false; } // check for max lines and set chat invisible else if ( (g_pConfig->GetChatMessageMaxLines() > 0) && (QString(msg->m_sMessage.Data()).count("\n") > g_pConfig->GetChatMessageMaxLines()) ) { bShowChat = false; } // check for open chat windows nick exceptions DCConfigHubProfile pConfigHubProfile; QString nickregexp; if ( g_pConfig->GetBookmarkHubProfile( GetHubName(), GetHost(), &pConfigHubProfile ) ) { nickregexp = pConfigHubProfile.m_sSuppressedNicks.Data(); } if ( nickregexp.isEmpty() ) { nickregexp = g_pConfig->GetSuppressedNicks(); } if ( !nickregexp.isEmpty() ) { QRegExp rx(nickregexp); rx.setCaseSensitivity(Qt::CaseInsensitive); if ( qnick.contains(rx) ) { bShowChat = (!g_pConfig->GetOpenPrivateChatWindow()) || bLocal; } } if ( m_bUseTabWidget ) { TabWidget_CHAT->addTab( chat, qnick ); } if ( bShowChat || bLocal ) { if ( m_bUseTabWidget ) { TabWidget_CHAT->setCurrentWidget(chat); } else { g_pConnectionManager->GetMdiArea()->addSubWindow(chat); chat->setEnabled(true); chat->show(); } } else { if ( !m_bUseTabWidget ) { chat->setEnabled(false); chat->hide(); } // restore focus if ( focuswidget ) focuswidget->setFocus(); } g_pConfig->PlaySound(eusFIRSTRECEIVE); } else if ( bLocal ) // enable all local (user input) { if ( chat->isVisible() == false ) { if ( m_bUseTabWidget ) { TabWidget_CHAT->setCurrentWidget(chat); } else { g_pConnectionManager->GetMdiArea()->addSubWindow(chat); chat->setEnabled(true); chat->show(); } } m_pUserListModel->setHighlight( qnick, false ); } if ( msg->m_sMessage.NotEmpty() ) { chat->AddMessage( msg ); if ( chat->isVisible() == false ) { m_pUserListModel->setHighlight( qnick, true ); if ( m_bUseTabWidget ) TabWidget_CHAT->setTabIcon( TabWidget_CHAT->indexOf(chat), QIcon( g_pIconLoader->GetPixmap(eiMESSAGE) ) ); } else { m_pUserListModel->setHighlight( qnick, false ); } } if ( (chat->isVisible() == false) && (g_pConfig->GetSendHidePrivateChatToPublicChat()) ) { QString nick; // send private chat to public chat if ( (msg->m_sSrcNick != msg->m_sMultiSrcNick) && (msg->m_sMultiSrcNick.NotEmpty()) ) nick = qnick + "::" + QString::fromAscii(msg->m_sMultiSrcNick.Data()); else nick = qnick; m_pHubChat->AddMessage( nick, qmessage, true, true ); } // send chat event g_pConnectionManager->HubEvent(this); if ( g_pConfig->GetAutoResponderEnabledForPM() ) { doAutoResponse( qnick, qmessage, chat ); } } /** */ void DCClient::DC_UserCommand( CMessageUserCommand * msg ) { DC_UserMenuCommand * umc = 0; QString qname = QString::fromAscii(msg->name.Data()); QString qcommand = QString::fromAscii(msg->command.Data()); if ( msg->type == euctClear ) { if ( msg->context == euccMask ) // clear all { qDeleteAll(hubcommands); hubcommands.clear(); return; } for ( int i = 0; i < hubcommands.size(); i++ ) { umc = hubcommands.at(i); umc->m_nContext -= (umc->m_nContext & msg->context); if ( umc->m_nContext == 0 ) { delete umc; hubcommands.removeAt(i); i--; } } } else if ( msg->type == euctRemove ) { for ( int i = 0; i < hubcommands.size(); i++ ) { umc = hubcommands.at(i); if ( umc->m_sName == qname ) { umc->m_nContext -= (umc->m_nContext & msg->context); if ( umc->m_nContext == 0 ) { delete umc; hubcommands.removeAt(i); } return; // only remove one command } } } else if ( msg->type == euctSeparator ) // separators might not have names { umc = new DC_UserMenuCommand(); umc->m_nType = msg->type; umc->m_nContext = msg->context; umc->m_sName = qname; umc->m_sCommand = qcommand; hubcommands.append(umc); } else if ( (msg->type == euctRaw) || (msg->type == euctRawOnce) ) { // update existing command for ( int i = 0; i < hubcommands.size(); i++ ) { umc = hubcommands.at(i); if ( umc->m_sName == qname ) { umc->m_nType = msg->type; umc->m_nContext = umc->m_nContext | msg->context; umc->m_sCommand = qcommand; return; } } umc = new DC_UserMenuCommand(); umc->m_nType = msg->type; umc->m_nContext = msg->context; umc->m_sName = qname; umc->m_sCommand = qcommand; hubcommands.append(umc); } else { printf("Unknown type %d for command '%s'\n", msg->type, msg->name.Data()); } } /** handling if user join the hub */ void DCClient::addUser( QString nick ) { DCChat * chat = m_ChatMap.value(nick); // show joins if ( g_pConfig->GetChatShowJoinsAndParts() ) { if ( g_pConfig->GetChatShowJoinsAndPartsOnlyFav() ) { if ( g_pUsersList->isNickInList( nick ) ) { m_pHubChat->AddStatus( tr("Joins: ") + nick ); } } else { m_pHubChat->AddStatus( tr("Joins: ") + nick ); } } // show rejoin on private chat if ( chat != 0 ) { chat->AddStatus(tr("User rejoin the hub.")); } // send event to friendlist if ( g_pUsersList ) { DCFriendObject m_pFriendObject; m_pFriendObject.m_sName = nick; m_pFriendObject.m_eAwayMode = euamONLINE; m_pFriendObject.m_sHubName = QString::fromAscii(GetHubName().Data()); m_pFriendObject.m_sHubHost = QString::fromAscii(GetHost().Data()); QApplication::postEvent( g_pUsersList, new DC_FriendEvent( &m_pFriendObject ) ); } } /** */ void DCClient::CloseChat( DCChat * chat ) { chat->removeEventFilter(this); m_ChatMap.remove(chat->GetNick()); if ( m_bUseTabWidget ) { TabWidget_CHAT->removeTab( TabWidget_CHAT->indexOf(chat) ); } else { QList list = ListWidget_CHATUSERLIST->findItems( chat->GetNick(), Qt::MatchExactly ); for ( int i = 0; i < list.size(); i++ ) { ListWidget_CHATUSERLIST->removeItemWidget( list.at(i) ); delete list.at(i); TabWidget_CHAT->setTabText( 0, tr("Chat List")+" ("+QString().setNum(ListWidget_CHATUSERLIST->count())+")" ); } } chat->close(); } /** */ void DCClient::CloseAllChats( bool onlyOffline ) { if ( onlyOffline ) { QList toclose; for ( QMap::const_iterator it = m_ChatMap.constBegin(); it != m_ChatMap.constEnd(); ++it ) { if ( m_pMyInfoHash->contains( it.key() ) == false ) { toclose.append( it.value() ); } } for ( int i = 0; i < toclose.size(); ++i ) { CloseChat( toclose.at(i) ); } } else { while( !m_ChatMap.isEmpty() ) { CloseChat(m_ChatMap.begin().value()); } } } /** */ void DCClient::slotDoubleClickedUserList( const QModelIndex & index ) { if ( !index.isValid() ) { return; } QModelIndex nickindex = TreeView_USERLIST->model()->index( index.row(), COLUMN_NICK, QModelIndex() ); QString nick = TreeView_USERLIST->model()->data( nickindex ).toString(); if ( g_pConfig->GetDoubleClickAction() == 1 ) { CString empty; g_pTransferView->DLM_QueueAdd( nick.toAscii().constData(), GetHubName(), GetHost(), DC_USER_FILELIST, DC_USER_FILELIST, empty, empty, eltBUFFER, 0, 0, 0, empty ); } else { DC_PrivateChat( nick, QString(), QString(), true ); } } /** */ void DCClient::slotDoubleClickedChatUserList( QListWidgetItem * item ) { QString nick; if ( item == 0 ) { return; } nick = item->text(); if ( nick.isEmpty() ) { return; } DCChat * chat = m_ChatMap.value( nick ); if ( chat != 0 ) { if ( !m_bUseTabWidget ) chat->setEnabled(true); // take widget to top if ( chat->isMinimized() ) { chat->showNormal(); } else if ( chat->isVisible() ) { // TODO: dont work fix it chat->show(); chat->raise(); } else { g_pConnectionManager->GetMdiArea()->addSubWindow(chat); chat->show(); } m_pUserListModel->setHighlight( nick, false ); } } /** */ void DCClient::slotHubConnect() { if ( GetConnectionState() == estNONE ) { SetConnection(true); Connect(); UpdateReconnect( ersNONE, 0 ); } else if ( GetConnectionState() == estCONNECTED ) { SetConnection(false); Disconnect(); } } /** */ void DCClient::slotContextMenuUserList( const QPoint & ) { QMap addedcommands; QStringList selectedNicks; QModelIndexList milist = TreeView_USERLIST->selectionModel()->selectedRows( COLUMN_NICK ); for ( QModelIndexList::const_iterator it = milist.constBegin(); it != milist.constEnd(); ++it ) { selectedNicks.append( TreeView_USERLIST->model()->data( *it ).toString() ); } const int numSelected = selectedNicks.size(); QMenu * m = new QMenu(this); if ( numSelected == 1 ) { DCMenuHandler::addAction( m, emiUSER_CAPTION, false, tr("User: ") + selectedNicks.first() ); } else { DCMenuHandler::addAction( m, emiUSER_CAPTION, false, QString::number(numSelected) + tr(" users") ); } DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * privchat = DCMenuHandler::addAction( m, emiPRIVATE_CHAT, (numSelected > 0) ); QAction * addfriend = DCMenuHandler::addAction( m, emiADD_FRIEND, (numSelected > 0) ); QAction * browse = DCMenuHandler::addAction( m, emiBROWSE_USER_FILES, (numSelected > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QMenu * mslot = DCMenuHandler::addMenu( m, emiUPLOAD_SLOT, true ); QAction * addslot = DCMenuHandler::addAction( mslot, emiADD, (numSelected > 0) ); QAction * addperm = DCMenuHandler::addAction( mslot, emiADD_PERMANENT, (numSelected > 0) ); QAction * remslot = DCMenuHandler::addAction( mslot, emiREMOVE, (numSelected > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * upduser = 0; if ( GetSupportsNoGetInfo() == false ) { upduser = DCMenuHandler::addAction( m, emiUPDATE_USER, (numSelected > 0) ); } QAction * reloadlist = DCMenuHandler::addAction( m, emiRELOAD_USERLIST, (GetConnectionState() == estCONNECTED) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * copycol = DCMenuHandler::addAction( m, emiCOPY_COLUMN_TO_CLIPBOARD, (numSelected == 1) ); QAction * copyrow = DCMenuHandler::addAction( m, emiCOPY_ROW_TO_CLIPBOARD, (numSelected > 0) ); DCMenuHandler::addAction( m, emiSEPARATOR ); QAction * checkver = DCMenuHandler::addAction( m, emiCHECK_CLIENT_VERSION, numSelected > 0 ); QAction * kick = 0; QAction * forcemove = 0; if ( UserList()->IsAdmin(GetNick()) ) { kick = DCMenuHandler::addAction( m, emiKICK, (numSelected > 0) ); forcemove = DCMenuHandler::addAction( m, emiFORCE_MOVE, (numSelected > 0) ); } addedcommands = AddMenuCommands( m, euccChat ); QList addedactions = addedcommands.keys(); for ( int i = 0; i < addedactions.size(); i++ ) { addedactions[i]->setEnabled( numSelected > 0 ); } QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } else if ( chosen == privchat ) { for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { DC_PrivateChat( *it, QString::null, QString::null, true ); } } else if ( chosen == addfriend ) { QString qhubname = QString::fromAscii(GetHubName().Data()); QString qhubhost = QString::fromAscii(GetHost().Data()); for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { g_pUsersList->AddFriend( *it, qhubname, qhubhost, QString::null ); } } else if ( chosen == browse ) { if ( GetMode() == ecmNONE ) { return; } CString empty; for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { /** add transfer to the waitlist */ g_pTransferView->DLM_QueueAdd( it->toAscii().constData(), GetHubName(), GetHost(), DC_USER_FILELIST, DC_USER_FILELIST, empty, empty, eltBUFFER, 0, 0, 0, empty ); } } else if ( chosen == checkver ) { if ( GetMode() == ecmNONE ) { return; } CString empty; for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { /** add transfer to the waitlist */ g_pTransferView->DLM_QueueAdd( it->toAscii().constData(), GetHubName(), GetHost(), "client check", "client check", empty, empty, eltCLIENTVERSION, 0, 0, 0, empty ); } } else if ( chosen == upduser ) { for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { SendGetInfo( it->toAscii().constData(), GetNick() ); } } else if ( chosen == copycol ) { QModelIndex index = TreeView_USERLIST->selectionModel()->currentIndex(); QApplication::clipboard()->setText( TreeView_USERLIST->model()->data( index ).toString() ); } else if ( chosen == copyrow ) { QString s; QModelIndexList indexes = TreeView_USERLIST->selectionModel()->selectedRows( COLUMN_NICK ); for ( QModelIndexList::const_iterator it = indexes.constBegin(); it != indexes.constEnd(); ++it ) { for ( int j = 0; j < TreeView_USERLIST->model()->columnCount(); j++ ) { int col = TreeView_USERLIST->header()->logicalIndex(j); if ( TreeView_USERLIST->header()->isSectionHidden(col) == false ) { QModelIndex index = TreeView_USERLIST->model()->index( it->row(), col, QModelIndex() ); s += TreeView_USERLIST->model()->data( index ).toString(); s += " "; } } s += "\n"; } s = s.trimmed(); QApplication::clipboard()->setText(s); } else if ( chosen == addslot ) { for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { g_pTransferView->DLM_AddUserSlot( it->toAscii().constData(), GetHubName(), 1 ); } } else if ( chosen == addperm ) { for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { g_pTransferView->DLM_AddUserSlot( it->toAscii().constData(), GetHubName(), 0, true ); } } else if ( chosen == remslot ) { for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { g_pTransferView->DLM_AddUserSlot( it->toAscii().constData(), GetHubName(), 0 ); } } else if ( chosen == kick ) { QString kickmessage; if ( !GetOPKickMessage(kickmessage,this) ) { return; } for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { OPKick( *it, kickmessage ); } } else if ( chosen == forcemove ) { QString host,message; if ( !GetOPForceMoveMessage(message,host,this) ) { return; } for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { OPForceMove( *it, message, host ); } } else if ( chosen == reloadlist ) { RequestNickList(); } else if ( addedcommands.contains( chosen ) ) { DC_UserMenuCommand * umc = addedcommands[chosen]; QString origUserCommand = umc->m_sCommand; QString usercommand; for ( QStringList::const_iterator it = selectedNicks.constBegin(); it != selectedNicks.constEnd(); ++it ) { usercommand = replaceCommandTags( origUserCommand, *it ); if ( !usercommand.isEmpty() ) { m_pHubChat->AddStatus(usercommand); SendString(usercommand.toAscii().constData()); } } } } /** */ bool DCClient::GetOPKickMessage( QString & message, QWidget * parent ) { bool ok = false; message = QInputDialog::getText( parent, tr("OP Kick"), tr("Please enter a reason"), QLineEdit::Normal, QString::null, &ok ); return ok; } /** */ bool DCClient::GetOPForceMoveMessage( QString & message, QString & host, QWidget * parent ) { bool ret = false; QDialog * dialog = new QDialog(parent); Ui::DCDialogForceMove ui; ui.setupUi(dialog); if ( dialog->exec() == QDialog::Accepted ) { host = ui.LineEdit_HOST->text(); message = ui.LineEdit_MESSAGE->text(); ret = true; } delete dialog; return ret; } /** */ bool DCClient::OPKick( QString nick, QString message ) { bool res = false; SendPrivateMessage( GetNick(), nick.toAscii().constData(), ("You are being kicked because: " + message).toAscii().constData()); SendChat( GetNick(), GetNick() + " is kicking " + nick.toAscii().constData() + " because: " + message.toAscii().constData() ); SendKick(nick.toAscii().constData()); return res; } /** */ bool DCClient::OPForceMove( QString nick, QString message, QString host ) { bool res = false; SendOpForceMove( nick.toAscii().constData(), host.toAscii().constData(), message.toAscii().constData() ); return res; } /** */ void DCClient::slotDoubleClickedUserChat( QListWidgetItem * item ) { QString nick; if ( item == 0 ) { return; } nick = item->text(); if ( nick.isEmpty() ) { return; } DCChat * chat = m_ChatMap.value( nick ); if ( chat != 0 ) { if ( !m_bUseTabWidget ) chat->setEnabled(true); chat->show(); m_pUserListModel->setHighlight( nick, false ); } } /** */ QString DCClient::findNick( QString part, int which ) { /* for(uint i=0; i < nicks->count(); i++) { if (matches.contains(nicks->text(i))) continue; if(qstrlen(nicks->text(i)) >= part.length()) { if(qstrnicmp(part, nicks->text(i), part.length()) == 0) { QString qsNick = ksopts->nick; if(qstrcmp(nicks->text(i), qsNick) != 0) { // Don't match your own nick matches.append(nicks->text(i)); } } } } */ QStringList matches; QString tlpart = part.trimmed().toLower(); if ( tlpart == lastPart ) { matches = lastMatches; } else { if ( g_pConfig->GetTabCompleteMatchMode() == 0 ) { matches = m_pUserListModel->matchNicksContaining(tlpart, g_pConfig->GetTabCompleteStripTags()); } else { matches = m_pUserListModel->matchNicksStartingWith(tlpart, g_pConfig->GetTabCompleteStripTags()); } lastMatches = matches; lastPart = tlpart; } //printf("matches='%s'\n", matches.join(",").toAscii().constData()); if(matches.count() > 0) { if(which < matches.count()) return matches.at(which); else return QString::null; } return part; } void DCClient::slotTabCornerCloseWidgetClicked() { CloseChat( (DCChat*) TabWidget_CHAT->currentWidget() ); } /** Replaces the %[tag] s in the command with the proper values */ QString DCClient::replaceCommandTags(QString & command, QString remotenick) { QString usercommand = command; usercommand.replace( "%[mynick]", GetNick().Data() ); usercommand.replace( "%[myNI]", GetNick().Data() ); QString comtag = GetComment().Data(); QString comment = comtag.mid(0, comtag.indexOf('<')); QString tag = comtag.mid(comtag.indexOf('<')); usercommand.replace( "%[mytag]", tag ); usercommand.replace( "%[myTAG]", tag ); usercommand.replace( "%[mydescription]", comment ); usercommand.replace( "%[myDE]", comment ); usercommand.replace( "%[myemail]", GetEMail().Data() ); usercommand.replace( "%[myEM]", GetEMail().Data() ); const QString myss = QString::number( GetShareSize() ); usercommand.replace( "%[myshare]", myss ); usercommand.replace( "%[mySS]", myss ); const QString myssshort = DCGuiUtils::GetSizeString(GetShareSize()); usercommand.replace( "%[myshareshort]", myssshort ); usercommand.replace( "%[mySSshort]", myssshort ); const QString myip = GetExternalIP( false ).Data(); usercommand.replace( "%[myip]", myip ); usercommand.replace( "%[myI4]", myip ); usercommand.replace( "%[hub]", GetHubName().Data() ); usercommand.replace( "%[hubNI]", GetHubName().Data() ); usercommand.replace( "%[hubURL]", GetHost().Data() ); usercommand.replace( "%[hubIP]", GetResolvedIP().Data() ); usercommand.replace( "%[hubI4]", GetResolvedIP().Data() ); usercommand.replace( "%[nick]", remotenick ); usercommand.replace( "%[userNI]", remotenick ); CMessageMyInfo * myinfo = m_pMyInfoHash->value( remotenick ); if ( myinfo != 0 ) { usercommand.replace( "%[userTAG]", myinfo->m_sVerComment.Data() ); usercommand.replace( "%[tag]", myinfo->m_sVerComment.Data() ); usercommand.replace( "%[userDE]", myinfo->m_sComment.Data() ); usercommand.replace( "%[description]", myinfo->m_sComment.Data() ); usercommand.replace( "%[userSS]", QString::number(myinfo->m_nShared) ); usercommand.replace( "%[share]", QString::number(myinfo->m_nShared) ); QString ss = DCGuiUtils::GetSizeString( myinfo->m_nShared ); usercommand.replace( "%[userSSshort]", ss ); usercommand.replace( "%[shareshort]", ss ); usercommand.replace( "%[userEM]", myinfo->m_sEMail.Data() ); usercommand.replace( "%[email]", myinfo->m_sEMail.Data() ); usercommand.replace( "%[userI4]", myinfo->m_sTransferHost.Data() ); usercommand.replace( "%[ip]", myinfo->m_sTransferHost.Data() ); } if ( usercommand.contains("%[line:") ) { QDialog * dialog = new QDialog(this); Ui::DCDialogUserCommandLines ui; ui.setupUi(dialog); ui.LineEdit_NICK->setText( remotenick ); ui.LineEdit_HUB->setText( QString::fromAscii(GetHubName().Data()) ); QMap lineeditmap; QWidget * container = new QWidget(dialog); QGridLayout * grid = new QGridLayout(container); int loc = 0, line = 0, end = 0; for ( ; ; ) { loc = usercommand.indexOf( "%[line:", loc ); end = usercommand.indexOf( "]", loc ); if ( (loc == -1) || (end == -1) ) { break; } // 7 is length of "%[line:" QString reason = usercommand.mid(loc + 7, end - (loc + 7)); QString key = "%[line:" + reason + "]"; if ( !lineeditmap.contains(key) ) { QLabel * label = new QLabel(container); label->setText(reason); grid->addWidget( label, line, 0 ); QLineEdit * edit = new QLineEdit(container); grid->addWidget( edit, line, 1 ); lineeditmap.insert( key, edit ); ++line; } loc = end + 1; } container->setLayout(grid); ui.ScrollArea->setWidgetResizable(true); ui.ScrollArea->setWidget(container); if ( dialog->exec() == QDialog::Accepted ) { for ( QMap::const_iterator it = lineeditmap.constBegin(); it != lineeditmap.constEnd(); ++it ) { QString text = it.value()->text(); text.replace( "$", "$" ); text.replace( "|", "|" ); usercommand.replace( it.key(), text ); if ( ui.CheckBox_ALL_NICKS->isChecked() ) { command.replace( it.key(), text ); } } delete dialog; } else { delete dialog; return QString(); } } time_t ti = time(0); struct tm * t = localtime(&ti); QByteArray timebuf; timebuf.resize( usercommand.toAscii().size() + 512 ); /* * If strftime returns 0 either the buffer was not big enough * or the actual output is zero characters. */ for ( int tries = 0; tries < 10; ++tries ) { if ( strftime( timebuf.data(), timebuf.size(), usercommand.toAscii().constData(), t ) > 0 ) { usercommand = QString::fromAscii( timebuf.constData() ); break; } else { timebuf.resize( timebuf.size() + 128 ); } } return usercommand; } void DCClient::doAutoResponse( QString nick, QString message, DCChat * chatobject ) { long delay = g_pConfig->GetAutoResponseDelay(); long now = QDateTime::currentDateTime().toTime_t(); if ( (delay > 0) && (nick == lastAutoNick) && (now < delay + lastAutoResponseTime) ) { // avoid spamming //printf("Auto response spam protection!\n"); return; } // null pointer check if (chatobject == 0) { printf("Error: DCClient::doAutoResponse called with NULL chatobject!\n"); return; } // do not respond to ourself if (nick == QString::fromAscii(GetNick().Data())) { //printf("Not auto-responding to ourself.\n"); return; } // check for ignored nicks QString ignores = g_pConfig->GetAutoResponseIgnores(); if ( !ignores.isEmpty() ) { QRegExp ignore_re; ignore_re.setPattern(ignores); ignore_re.setCaseSensitivity(Qt::CaseInsensitive); if ( nick.contains(ignore_re) ) { //printf("Not auto responding to %s\n", nick.toAscii().constData()); return; } } QList arlist; DC_AutoResponseObject * aro = 0; g_pConfig->GetAutoResponses(&arlist); QRegExp re; for ( QList::const_iterator it = arlist.constBegin(); it != arlist.constEnd(); ++it ) { aro = *it; re.setPattern(aro->m_sTrigger); if ( aro->m_bCaseSensitive ) { re.setCaseSensitivity(Qt::CaseSensitive); } else { re.setCaseSensitivity(Qt::CaseInsensitive); } if ( message.contains(re) ) // pattern matches { QString origResponse = aro->m_sResponse; QString chat = replaceCommandTags( origResponse, nick ); if ( chat.isEmpty() ) { break; } //SendChat( GetNick(), chat.toAscii().constData() ); chatobject->TextEdit_CHATINPUT->setPlainText(chat); chatobject->SendChat(); // update last nick and time for anti-spam lastAutoNick = nick; lastAutoResponseTime = QDateTime::currentDateTime().toTime_t(); // stop searching list of triggers break; } } for ( QList::const_iterator it = arlist.constBegin(); it != arlist.constEnd(); ++it ) { delete *it; } } /** */ bool DCClient::jumpToNick( const QString & nick ) { if ( nick.isEmpty() ) { return false; } QModelIndex index = m_pUserListModel->indexForNick( nick ); if ( !index.isValid() ) { return false; } if ( m_pProxyModel ) { index = m_pProxyModel->mapFromSource( index ); if ( !index.isValid() ) { return false; } } TreeView_USERLIST->selectionModel()->select( index, QItemSelectionModel::Clear | QItemSelectionModel::Select | QItemSelectionModel::Current | QItemSelectionModel::Rows ); TreeView_USERLIST->scrollTo( index, QAbstractItemView::EnsureVisible ); return true; } /** */ void DCClient::disableUserListSorting() { TreeView_USERLIST->setSortingEnabled( false ); m_pUserListModel->sort( -1 ); } /** */ void DCClient::enableUserListSorting() { TreeView_USERLIST->setSortingEnabled( true ); TreeView_USERLIST->sortByColumn( COLUMN_NICK, Qt::AscendingOrder ); } /** */ void DCClient::centreOnMdiArea() { // centre window within workspace otherwise the top left corner // ends up in the centre so most of it is off the screen if ( (g_pConnectionManager->GetMdiArea() != 0) && (m_pContainerWindow != 0) && (m_pContainerWindow->isMinimized() == false) && (m_pContainerWindow->isMaximized() == false) ) { int newx = (g_pConnectionManager->GetMdiArea()->width() - m_pContainerWindow->width())/2; int newy = (g_pConnectionManager->GetMdiArea()->height() - m_pContainerWindow->height())/2; if ( newx < 0 ) { newx = 0; } if ( newy < 0 ) { newy = 0; } m_pContainerWindow->move(newx,newy); } } /** */ QMap DCClient::AddMenuCommands( QMenu * menu, int context ) { QMap added; QList allcommands; QMap createdmenus; QMenu * prevmenu = 0; if ( !menu ) { return added; } if ( g_pConfig->GetEnableUserCommand() ) { allcommands += hubcommands; } QMap usercommands; g_pConfig->GetUserMenuCommandsDirect(&usercommands); allcommands += usercommands.values(); usercommands.clear(); if ( g_pConfig->GetUserCommandSubmenu() ) { menu = DCMenuHandler::addMenu(menu, emisUSER_COMMANDS); } for ( int i = 0; i < allcommands.size(); i++ ) { if ( (allcommands[i]->m_nContext & context) == context ) { if ( !(allcommands[i]->m_sHubIP.isEmpty()) ) { QString hubiplc = allcommands[i]->m_sHubIP.toLower(); if ( (hubiplc == "op") && (UserList()->IsAdmin(GetNick()) == false) ) { //printf("Skipping command '%s' because we are not OP here\n",allcommands[i]->m_sName.toAscii().constData()); continue; } else if ( (hubiplc != QString::fromAscii(GetHost().ToLower().Data())) && (hubiplc != QString::fromAscii(GetIP().ToLower().Data())) ) { //printf("Skipping command '%s' because host/IP does not match (required=%s our host=%s its ip=%s)\n",allcommands[i]->m_sHubIP.toAscii().constData(),GetHost().Data(),GetIP().Data()); continue; } } QMenu * submenu = menu; QString name = allcommands[i]->m_sName; if ( name.contains('\\') ) { QStringList subMenuNames = name.split( '\\', QString::SkipEmptyParts ); name = subMenuNames.takeLast(); // remove and store command name QString subMenuKey; QMenu * parentMenu = menu; for ( int j = 0; j < subMenuNames.size(); j++ ) { subMenuKey += subMenuNames[j]; if ( createdmenus.contains(subMenuKey) ) { parentMenu = createdmenus[subMenuKey]; submenu = parentMenu; } else { parentMenu = parentMenu->addMenu( subMenuNames[j] ); createdmenus[subMenuKey] = parentMenu; submenu = parentMenu; } subMenuKey += '\\'; } } if ( allcommands[i]->m_nType == euctSeparator ) { // no need to keep the QAction returned // the protocol was badly designed, separators do not have names // and so cannot be removed from menus // whatever docs exist on random forum posts etc. // also say separators are supposed to be a "vertical bar" // valknut currently uses horizontal bars if ( allcommands[i]->m_sName.isEmpty() && prevmenu ) { prevmenu->addSeparator(); } else { submenu->addSeparator(); } } else if ( (allcommands[i]->m_nType == euctRaw) || (allcommands[i]->m_nType == euctRawOnce) ) { added.insert( submenu->addAction(name), allcommands[i] ); prevmenu = submenu; } //else //{ // printf("AddMenuCommands: wrong command type %d in lists for command '%s'\n", allcommands[i]->m_nType, allcommands[i]->m_sName.Data()); //} } } if ( g_pConfig->GetUserCommandSubmenu() && (added.size() == 0) ) { menu->setEnabled(false); } return added; } /** */ void DCClient::clearMyInfoCache() { for ( QHash::const_iterator it = m_pMyInfoHash->constBegin(); it != m_pMyInfoHash->constEnd(); ++it ) { delete it.value(); } m_pMyInfoHash->clear(); } /** */ void DCClient::slotContextMenuTabWidgetChat( const QPoint & pos ) { if ( (TabWidget_CHAT->currentWidget() != 0) && (TabWidget_CHAT->currentWidget() != Tab_CHATUSERLIST) ) { ((DCChat*)TabWidget_CHAT->currentWidget())->slotRightButtonClickedChatOutput(pos); } } /** */ void DCClient::slotFilterToggled( bool enabled ) { LineEdit_FILTER->setEnabled( enabled ); ComboBox_FILTER->setEnabled( enabled ); if ( enabled ) { /* it should be NULL */ delete m_pProxyModel; m_pProxyModel = new FilterOnlyProxy( this ); m_pProxyModel->setDynamicSortFilter( true ); m_pProxyModel->setFilterCaseSensitivity( Qt::CaseInsensitive ); m_pProxyModel->setSourceModel( m_pUserListModel ); m_pProxyModel->setFilterFixedString( LineEdit_FILTER->text() ); if ( ComboBox_FILTER->currentIndex() == m_pUserListModel->columnCount() ) { m_pProxyModel->setFilterKeyColumn( -1 ); } else { m_pProxyModel->setFilterKeyColumn( ComboBox_FILTER->currentIndex() ); } TreeView_USERLIST->setModel( m_pProxyModel ); } else { TreeView_USERLIST->setModel( m_pUserListModel ); delete m_pProxyModel; m_pProxyModel = 0; } UpdateStatusBar(); } /** */ void DCClient::slotFilterColumn( int column ) { if ( m_pProxyModel ) { if ( column == m_pUserListModel->columnCount() ) { m_pProxyModel->setFilterKeyColumn( -1 ); } else { m_pProxyModel->setFilterKeyColumn( column ); } UpdateStatusBar(); } } /** */ void DCClient::slotFilterString( const QString & text ) { if ( m_pProxyModel ) { m_pProxyModel->setFilterFixedString( text ); UpdateStatusBar(); } } /** */ void DCClient::slotContextMenuHeader( const QPoint & /* pos */ ) { QMenu * mcols = new QMenu( this ); QAction * column; int index; for ( int i = 0; i < m_pUserListModel->columnCount(); ++i ) { index = TreeView_USERLIST->header()->logicalIndex(i); column = mcols->addAction( m_pUserListModel->headerData( index, Qt::Horizontal ).toString() ); column->setCheckable(true); if ( index == 0 ) { column->setEnabled(false); } column->setChecked( TreeView_USERLIST->header()->isSectionHidden( index ) == false ); column->setData( index ); } mcols->addSeparator(); QAction * save = DCMenuHandler::addAction( mcols, emiSAVE ); QAction * chosen = mcols->exec( QCursor::pos() ); if ( chosen == save ) { saveColumns(); } else if ( chosen ) { index = chosen->data().toInt(); if ( TreeView_USERLIST->header()->isSectionHidden(index) ) { TreeView_USERLIST->header()->showSection( index ); } else { TreeView_USERLIST->header()->hideSection( index ); } } delete mcols; } /** */ void DCClient::slotAltRowColors( bool enable ) { TreeView_USERLIST->setAlternatingRowColors( enable ); } /** */ void DCClient::saveColumns() { StringMap * map; g_pConfig->GetMap("USERLISTCOLUMNORDER",map); (*map)["USERLISTHEADERSTATE"] = QString(TreeView_USERLIST->header()->saveState().toBase64().constData()); } valknut-0.4.9/valknut/dctranslator.cpp0000664000076400007640000004176511142273466016261 0ustar ejsejs/*************************************************************************** dctranslator.cpp - description ------------------- begin : Die Nov 19 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dctranslator.h" #ifdef HAVE_CONFIG_H #include "config.h" #else #define PACKAGE_VERSION "Unknown" #endif #include #include #include #include #include #include #include #include #include #include #include "dcevent.h" #include "ui/DCDialogTranslatorSettings.h" #define YAHOO "babelfish.yahoo.com" #define GOOGLE "www.google.com" DCTranslator * g_pTranslator = 0; DCTranslator::DCTranslator( QObject * parent ) : QObject( parent ) { pHttp = new QHttp( this ); /* set HTTP proxy */ /* http_proxy=http:proxy@localhost:8080 */ QStringList envvars = QProcess::systemEnvironment(); for ( QStringList::const_iterator it = envvars.constBegin(); it != envvars.constEnd(); ++it ) { if ( (*it).startsWith("http_proxy=") ) { QString hp = (*it).mid( QString::fromUtf8("http_proxy=").length() ); if ( hp.startsWith("http://") ) { hp = hp.mid(7); } QString host, user, pass; int port = 8080; int pos = hp.indexOf('@'); if ( pos != -1 ) { user = hp.left(pos); hp = hp.mid(pos+1); pos = user.indexOf(':'); if ( pos != -1 ) { pass = user.mid(pos+1); user = user.left(pos); } } pos = hp.indexOf(':'); if ( pos == -1 ) { host = hp; } else { host = hp.left(pos); port = hp.mid(pos+1).toInt(); } if ( !host.isEmpty() ) { pHttp->setProxy( host, port, user, pass ); } break; } } /* m_nGetRequestID = -1; */ /* m_bReady = false; */ provider = YAHOO; m_sLanguage = "en_de"; /* it would be better to parse these from the html */ langs_ys << "zh_en"; langs_y << tr("Chinese Simplified") + " " + tr("to") + +" " + tr("English"); langs_ys << "zh_zt"; langs_y << tr("Chinese Simplified") + " " + tr("to") + +" " + tr("Chinese Traditional"); langs_ys << "zt_en"; langs_y << tr("Chinese Traditional") + " " + tr("to") + +" " + tr("English"); langs_ys << "zt_zh"; langs_y << tr("Chinese Traditional") + " " + tr("to") + +" " + tr("Chinese Simplified"); langs_ys << "en_zh"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Chinese Simplified"); langs_ys << "en_zt"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Chinese Traditional"); langs_ys << "en_nl"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Dutch"); langs_ys << "en_fr"; langs_y << tr("English") + " " + tr("to") + +" " + tr("French"); langs_ys << "en_de"; langs_y << tr("English") + " " + tr("to") + +" " + tr("German"); langs_ys << "en_el"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Greek"); langs_ys << "en_it"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Italian"); langs_ys << "en_ja"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Japanese"); langs_ys << "en_ko"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Korean"); langs_ys << "en_pt"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Portuguese"); langs_ys << "en_ru"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Russian"); langs_ys << "en_es"; langs_y << tr("English") + " " + tr("to") + +" " + tr("Spanish"); langs_ys << "nl_en"; langs_y << tr("Dutch") + " " + tr("to") + +" " + tr("English"); langs_ys << "nl_fr"; langs_y << tr("Dutch") + " " + tr("to") + +" " + tr("French"); langs_ys << "fr_nl"; langs_y << tr("French") + " " + tr("to") + +" " + tr("Dutch"); langs_ys << "fr_en"; langs_y << tr("French") + " " + tr("to") + +" " + tr("English"); langs_ys << "fr_de"; langs_y << tr("French") + " " + tr("to") + +" " + tr("German"); langs_ys << "fr_el"; langs_y << tr("French") + " " + tr("to") + +" " + tr("Greek"); langs_ys << "fr_it"; langs_y << tr("French") + " " + tr("to") + +" " + tr("Italian"); langs_ys << "fr_pt"; langs_y << tr("French") + " " + tr("to") + +" " + tr("Portuguese"); langs_ys << "fr_es"; langs_y << tr("French") + " " + tr("to") + +" " + tr("Spanish"); langs_ys << "de_en"; langs_y << tr("German") + " " + tr("to") + +" " + tr("English"); langs_ys << "de_fr"; langs_y << tr("German") + " " + tr("to") + +" " + tr("French"); langs_ys << "el_en"; langs_y << tr("Greek") + " " + tr("to") + +" " + tr("English"); langs_ys << "el_fr"; langs_y << tr("Greek") + " " + tr("to") + +" " + tr("French"); langs_ys << "it_en"; langs_y << tr("Italian") + " " + tr("to") + +" " + tr("English"); langs_ys << "it_fr"; langs_y << tr("Italian") + " " + tr("to") + +" " + tr("French"); langs_ys << "ja_en"; langs_y << tr("Japanese") + " " + tr("to") + +" " + tr("English"); langs_ys << "ko_en"; langs_y << tr("Korean") + " " + tr("to") + +" " + tr("English"); langs_ys << "pt_en"; langs_y << tr("Portuguese") + " " + tr("to") + +" " + tr("English"); langs_ys << "pt_fr"; langs_y << tr("Portuguese") + " " + tr("to") + +" " + tr("French"); langs_ys << "ru_en"; langs_y << tr("Russian") + " " + tr("to") + +" " + tr("English"); langs_ys << "es_en"; langs_y << tr("Spanish") + " " + tr("to") + +" " + tr("English"); langs_ys << "es_fr"; langs_y << tr("Spanish") + " " + tr("to") + +" " + tr("French"); langs_gs_from << "auto"; langs_g_from << tr("Detect language"); langs_gs_from << "ar"; langs_g_from << tr("Arabic"); langs_gs_from << "bg"; langs_g_from << tr("Bulgarian"); langs_gs_from << "zh-CN"; langs_g_from << tr("Chinese"); langs_gs_from << "hr"; langs_g_from << tr("Croatian"); langs_gs_from << "cs"; langs_g_from << tr("Czech"); langs_gs_from << "da"; langs_g_from << tr("Danish"); langs_gs_from << "nl"; langs_g_from << tr("Dutch"); langs_gs_from << "en"; langs_g_from << tr("English"); langs_gs_from << "fi"; langs_g_from << tr("Finnish"); langs_gs_from << "fr"; langs_g_from << tr("French"); langs_gs_from << "de"; langs_g_from << tr("German"); langs_gs_from << "el"; langs_g_from << tr("Greek"); langs_gs_from << "hi"; langs_g_from << tr("Hindi"); langs_gs_from << "it"; langs_g_from << tr("Italian"); langs_gs_from << "ja"; langs_g_from << tr("Japanese"); langs_gs_from << "ko"; langs_g_from << tr("Korean"); langs_gs_from << "no"; langs_g_from << tr("Norwegian"); langs_gs_from << "pl"; langs_g_from << tr("Polish"); langs_gs_from << "pt"; langs_g_from << tr("Portuguese"); langs_gs_from << "ro"; langs_g_from << tr("Romanian"); langs_gs_from << "ru"; langs_g_from << tr("Russian"); langs_gs_from << "es"; langs_g_from << tr("Spanish"); langs_gs_from << "sv"; langs_g_from << tr("Swedish"); langs_gs_to << "ar"; langs_g_to << tr("Arabic"); langs_gs_to << "bg"; langs_g_to << tr("Bulgarian"); langs_gs_to << "zh-CN"; langs_g_to << tr("Chinese Simplified"); langs_gs_to << "zh-TW"; langs_g_to << tr("Chinese Traditional"); langs_gs_to << "hr"; langs_g_to << tr("Croatian"); langs_gs_to << "cs"; langs_g_to << tr("Czech"); langs_gs_to << "da"; langs_g_to << tr("Danish"); langs_gs_to << "nl"; langs_g_to << tr("Dutch"); langs_gs_to << "en"; langs_g_to << tr("English"); langs_gs_to << "fi"; langs_g_to << tr("Finnish"); langs_gs_to << "fr"; langs_g_to << tr("French"); langs_gs_to << "de"; langs_g_to << tr("German"); langs_gs_to << "el"; langs_g_to << tr("Greek"); langs_gs_to << "hi"; langs_g_to << tr("Hindi"); langs_gs_to << "it"; langs_g_to << tr("Italian"); langs_gs_to << "ja"; langs_g_to << tr("Japanese"); langs_gs_to << "ko"; langs_g_to << tr("Korean"); langs_gs_to << "no"; langs_g_to << tr("Norwegian"); langs_gs_to << "pl"; langs_g_to << tr("Polish"); langs_gs_to << "pt"; langs_g_to << tr("Portuguese"); langs_gs_to << "ro"; langs_g_to << tr("Romanian"); langs_gs_to << "ru"; langs_g_to << tr("Russian"); langs_gs_to << "es"; langs_g_to << tr("Spanish"); langs_gs_to << "sv"; langs_g_to << tr("Swedish"); connect( pHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(slotPostRequestFinished(int,bool)) ); pHttp->setHost(provider); // generates a request which we ignore because the id isn't in the list g_pTranslator = this; } DCTranslator::~DCTranslator() { g_pTranslator = NULL; if ( pHttp ) { pHttp->clearPendingRequests(); delete pHttp; pHttp = 0; } qDeleteAll( m_RequestHash.values() ); m_RequestHash.clear(); } /** */ QString DCTranslator::GetUserAgent() { QString a; a.append("Valknut/"); a.append(PACKAGE_VERSION); a.append(" (QT/"); a.append(qVersion()); a.append(")"); return a; // return "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.13) Gecko/20080417 Fedora/1.1.9-2.fc8 SeaMonkey/1.1.9"; } /** */ QString DCTranslator::SelectLanguage( QString lang, QWidget * parent ) { QString oldlanguage = m_sLanguage; QString oldprovider = provider; if ( !lang.isEmpty() ) { m_sLanguage = lang; } QDialog * dialog = new QDialog(parent); if ( parent != 0 ) { dialog->setWindowModality(Qt::WindowModal); //fixme not working, still blocks whole application } Ui::DCDialogTranslatorSettings ui; ui.setupUi(dialog); if ( provider == YAHOO ) { ui.RadioButton_YAHOO->setChecked(true); } else { ui.RadioButton_GOOGLE->setChecked(true); } ui.ComboBox_YAHOO_LANGS->addItems(langs_y); ui.ComboBox_GOOGLE_INPUT->addItems(langs_g_from); ui.ComboBox_GOOGLE_OUTPUT->addItems(langs_g_to); // set combo boxes to the correct language int i1 = 0, i2 = 0, i3 = 0; i1 = langs_ys.indexOf(m_sLanguage); if ( i1 < 0 ) { i1 = langs_ys.indexOf("en_de"); } int pos = m_sLanguage.indexOf('_'); i2 = langs_gs_from.indexOf(m_sLanguage.mid(0,pos)); i3 = langs_gs_to.indexOf(m_sLanguage.mid(pos+1)); if ( i2 < 0 ) { i2 = langs_gs_from.indexOf("en"); } if ( i3 < 0 ) { i3 = langs_gs_from.indexOf("de"); } ui.ComboBox_YAHOO_LANGS->setCurrentIndex(i1); ui.ComboBox_GOOGLE_INPUT->setCurrentIndex(i2); ui.ComboBox_GOOGLE_OUTPUT->setCurrentIndex(i3); if ( dialog->exec() == QDialog::Accepted ) { if ( ui.RadioButton_YAHOO->isChecked() ) { provider = YAHOO; m_sLanguage = langs_ys[ui.ComboBox_YAHOO_LANGS->currentIndex()]; } else { provider = GOOGLE; m_sLanguage = langs_gs_from[ui.ComboBox_GOOGLE_INPUT->currentIndex()] + "_" + langs_gs_to[ui.ComboBox_GOOGLE_OUTPUT->currentIndex()]; } if ( provider != oldprovider ) { pHttp->setHost(provider); // generates a request which we ignore because the id isn't in the list } } else { m_sLanguage = oldlanguage; provider = oldprovider; } delete dialog; //printf("m_sLanguage = %s\n", m_sLanguage.toAscii().constData()); return m_sLanguage; } /** */ bool DCTranslator::Translate( QObject * sender, QString lang, QString text ) { /* if ( m_bReady == false ) { QHttpRequestHeader firstHeader( "GET", "/" ); firstHeader.setValue( "Host", provider ); firstHeader.setValue( "User-Agent", GetUserAgent() ); connect( pHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(slotGetRequestFinished(int,bool)) ); m_nGetRequestID = pHttp->request( firstHeader ); // wait up to 10 seconds for request to finish int i = 0; while ( (m_bReady == false) && (i < 1000) && (pHttp->currentId() == m_nGetRequestID) ) { qApp->processEvents(); #ifdef WIN32 Sleep(10); //milliseconds #else usleep(10*1000); //microseconds #endif i++; } if ( i >= 1000 ) { printf("Warning translator timed out during initialisation\n"); } } if ( m_bReady == false ) { printf("Translator not ready\n"); return false; } */ // convert text to correct html ... QString tr_text = text; tr_text.replace(' ', '+'); tr_text = QUrl::toPercentEncoding(tr_text,"{+}"); DC_TranslationEvent * TranslationEvent=0; QString language = m_sLanguage; if ( !lang.isEmpty() ) { language = lang; } QString sendline; QString path; QString ref; if ( provider == YAHOO ) { sendline = "ei=UTF-8&doit=done&fr=bf-home&intl=1&tt=urltext&trtext="; sendline += tr_text; sendline += "&lp="; sendline += language; sendline += "&btnTrTxt=Translate"; path = "/translate_txt"; ref = path; } else if ( provider == GOOGLE ) { QString from = language.split('_')[0]; QString to = language.split('_')[1]; sendline = "hl=en&ie=UTF8&text="; sendline += tr_text; sendline += "&sl="; sendline += from; sendline += "&tl="; sendline += to; ref = "/translate_t"; path = ref; path += "?sl="; path += from; path += "&tl="; path += to; } QHttpRequestHeader header( "POST", path ); header.setValue( "User-Agent", GetUserAgent() ); header.setValue( "Referer", provider + ref ); header.setValue( "Host", provider ); header.setValue( "Content-Type", "application/x-www-form-urlencoded" ); header.setValue( "Accept-Charset", "utf-8" ); //printf("header='%s'\n", header.toString().toAscii().constData()); //printf("data='%s'\n", sendline.toAscii().constData()); int id = pHttp->request( header, sendline.toUtf8() ); if ( m_RequestHash.contains( id ) ) { printf("Error: request %d already in list\n",id); return false; } TranslationEvent = new DC_TranslationEvent(); TranslationEvent->m_bTranslate = false; TranslationEvent->m_pReceiver = sender; TranslationEvent->m_sOriginal = text; TranslationEvent->m_sTranslation = ""; m_RequestHash.insert( id, TranslationEvent ); return true; } /** */ /* void DCTranslator::slotDataReadProgress( int bytesDone, int bytesTotal ) { printf("%d/%d\n",bytesDone,bytesTotal); // QString s; // s.sprintf("%d/%d",bytesDone,bytesTotal); // TextLabel_Status->setText(s); } */ /** */ /* void DCTranslator::slotGetRequestFinished( int id, bool error ) { if ( id != m_nGetRequestID ) { printf("Unexpected request %d\n", id); } else if ( error == true ) { printf("Error initialising translator %s\n", pHttp->errorString().toAscii().constData()); } else { disconnect( pHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(slotGetRequestFinished(int,bool)) ); connect( pHttp, SIGNAL(requestFinished(int,bool)), this, SLOT(slotPostRequestFinished(int,bool)) ); pHttp->readAll(); // clear data m_bReady = true; // now we're ready! } } */ /** */ void DCTranslator::slotPostRequestFinished( int id, bool error ) { DC_TranslationEvent * TranslationEvent=0; if ( m_RequestHash.contains(id) ) { TranslationEvent = m_RequestHash.take(id); } else { // not an error because setHost generates an event //printf("TranslationEvent object not found: %d\n",id); return; } if ( error == false ) { QHttpResponseHeader header = pHttp->lastResponse(); //printf("response header='%s'\n", header.toString().toAscii().constData()); QString encoding = header.value("content-type"); encoding = encoding.mid(encoding.indexOf("charset=")+QString("charset=").length()); QTextCodec * codec = QTextCodec::codecForName(encoding.toAscii().constData()); QString html; if ( codec != 0 ) { html = codec->toUnicode(pHttp->readAll()); } else { printf("Warning no codec found for \'%s\', using UTF-8\n", encoding.toAscii().constData()); html = QString::fromUtf8(pHttp->readAll()); } //printf("html='%s\n'", html.toAscii().constData()); QRegExp regex; regex.setMinimal( true ); regex.setCaseSensitivity( Qt::CaseInsensitive ); if ( provider == YAHOO ) { regex.setPattern( "
(.*)
" ); } else if ( provider == GOOGLE ) { regex.setPattern( "
(.*)
" ); } else { TranslationEvent->m_sTranslation = tr("Unknown translation provider") + " " + provider; TranslationEvent->m_bTranslate = false; } if ( html.contains(regex) ) { TranslationEvent->m_sTranslation = regex.cap(1); TranslationEvent->m_bTranslate = true; } else { TranslationEvent->m_sTranslation = tr("The translation could not be found in the HTML received.") + "\n" + tr("This likely means that") + " " + provider + " " + tr("changed their system and this feature no longer works."); TranslationEvent->m_bTranslate = false; } //printf("translate: '%s'\n",TranslationEvent->m_sTranslation.toAscii().constData()); } else { //printf( "Translation failed: %s\n", pHttp->errorString().toAscii().constData() ); TranslationEvent->m_sTranslation = pHttp->errorString(); TranslationEvent->m_bTranslate = false; } QApplication::postEvent( TranslationEvent->m_pReceiver, TranslationEvent ); } valknut-0.4.9/valknut/dcsplash.h0000664000076400007640000000303511074173623015011 0ustar ejsejs/*************************************************************************** dcsplash.h - description ------------------- begin : Fre Apr 12 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCSPLASH_H #define DCSPLASH_H /** *@author Mathias Küster */ #include #include #include "DCDialogSplash.h" class DCSplash : public QWidget, public Ui::DCDialogSplash { Q_OBJECT public: /** construtor */ DCSplash( QWidget * parent = 0 ); /** destructor */ virtual ~DCSplash(); protected: /** */ virtual void mouseDoubleClickEvent( QMouseEvent * event ); /** */ virtual void mousePressEvent( QMouseEvent * event ); /** */ virtual void mouseReleaseEvent( QMouseEvent * event ); }; #endif valknut-0.4.9/valknut/dcguiutils.cpp0000664000076400007640000001144511102701576015717 0ustar ejsejs/*************************************************************************** dcguiutils.cpp - Valknut Utility Functions ------------------- begin : Thu Jul 3 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcguiutils.h" #include #include #include #include #include /* * Needed to get the number of columns in the QTreeView */ #include #include "dcconfig.h" /* theme detection */ #include #include #include #include #include /** */ DCGuiUtils::DCGuiUtils() { // nothing } /** */ DCGuiUtils::~DCGuiUtils() { // nothing } /** */ QString DCGuiUtils::GetSizeString( const ulonglong size ) { /* could check if g_pConfig is null and use default, but not really worth it */ return QString::fromAscii( CUtils::GetSizeString( size, g_pConfig->GetUnit() ).Data() ); } /** */ void DCGuiUtils::AddEncodings( QComboBox * combobox ) { combobox->addItem("UTF-8"); combobox->addItem("WINDOWS-1252"); combobox->addItem("WINDOWS-1251"); combobox->addItem("WINDOWS-1250"); combobox->addItem("WINDOWS-1256"); combobox->addItem("WINDOWS-1257"); combobox->addItem("ISO-8859-1"); combobox->addItem("ISO-8859-2"); combobox->addItem("ISO-8859-7"); combobox->addItem("ISO-8859-8"); combobox->addItem("ISO-8859-9"); combobox->addItem("ISO-2022-JP"); combobox->addItem("SHIFT-JIS"); combobox->addItem("CP949"); combobox->addItem("KOI8-R"); combobox->addItem("GB18030"); combobox->addItem("TIS-620"); } /** */ QString DCGuiUtils::SortOrderName( const Qt::SortOrder order ) { if ( order == Qt::DescendingOrder ) { return QString::fromAscii("Descending"); } else { return QString::fromAscii("Ascending"); } } /** */ Qt::SortOrder DCGuiUtils::SortOrderFromName( const QString name ) { if ( name == "Descending" ) { return Qt::DescendingOrder; } else { return Qt::AscendingOrder; } } /** */ void DCGuiUtils::AdjustColumnWidths( Q3ListView * view, int oldsize ) { bool updates = view->updatesEnabled(); if ( updates ) { view->setUpdatesEnabled(false); } // need floats to reduce rounding errors float newwidth = (float) view->width(); float oldsize_f = (float) oldsize; int newcolwidth; for ( int i = 0; i < view->columns(); i++ ) { newcolwidth = (int) ( ((float) view->columnWidth(i)) * newwidth / oldsize_f ); if ( newcolwidth < 10 ) { newcolwidth = 10; } view->setColumnWidth( i, newcolwidth ); } if ( updates ) { view->setUpdatesEnabled(true); } } /** */ void DCGuiUtils::AdjustColumnWidths( QTreeView * view, int oldsize ) { bool updates = view->updatesEnabled(); if ( updates ) { view->setUpdatesEnabled(false); } // need floats to reduce rounding errors float newwidth = (float) view->width(); float oldsize_f = (float) oldsize; int newcolwidth; for ( int i = 0; i < view->header()->count(); i++ ) { if ( view->header()->isSectionHidden(i) ) { continue; } newcolwidth = (int) ( ((float) view->columnWidth(i)) * newwidth / oldsize_f ); if ( newcolwidth < 10 ) { newcolwidth = 10; } view->setColumnWidth( i, newcolwidth ); } if ( updates ) { view->setUpdatesEnabled(true); } } /** */ int DCGuiUtils::SelectedItems( Q3ListView * view, QList & list ) { Q3ListViewItemIterator it( view ); for ( ; it.current(); it++ ) { if ( it.current()->isSelected() ) { list.append(it.current()); } } return list.count(); } /** */ QString DCGuiUtils::DetectAppStyleKey() { QString key; QStyle * appstyle = QApplication::style(); if ( appstyle ) { QStringList keys = QStyleFactory::keys(); for ( QStringList::const_iterator it = keys.constBegin(); it != keys.constEnd(); ++it ) { QStyle * temp = QStyleFactory::create( *it ); if ( temp ) { QString tempclass = temp->metaObject()->className(); delete temp; if ( tempclass == appstyle->metaObject()->className() ) { key = *it; break; } } } } return key; } valknut-0.4.9/valknut/dcsplash.cpp0000664000076400007640000000430311074173623015343 0ustar ejsejs/*************************************************************************** dcsplash.cpp - description ------------------- begin : Fre Apr 12 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcsplash.h" #ifdef HAVE_CONFIG_H #include #endif #include #include #include "dciconloader.h" /** */ DCSplash::DCSplash( QWidget * parent ) : QWidget( parent ) { setupUi(this); setWindowFlags(Qt::SplashScreen); QPalette palette = Frame_PIXMAP->palette(); palette.setBrush( Frame_PIXMAP->backgroundRole(), QBrush(g_pIconLoader->GetPixmap(eiSPLASH)) ); palette.setColor( Frame_PIXMAP->foregroundRole(), QColor(255, 255, 255) ); Frame_PIXMAP->setPalette(palette); // no tr() since translator hasn't been loaded yet Frame_PIXMAP->setText( QString::fromAscii("Valknut ") + QString::fromAscii(PACKAGE_VERSION) + QString::fromAscii("\n\n\nhttp://wxdcgui.sourceforge.net") ); } /** */ DCSplash::~DCSplash() { } /** */ void DCSplash::mouseDoubleClickEvent( QMouseEvent * event ) { hide(); QWidget::mouseDoubleClickEvent( event ); // standard event processing } /** */ void DCSplash::mousePressEvent( QMouseEvent * event ) { hide(); QWidget::mousePressEvent( event ); // standard event processing } /** */ void DCSplash::mouseReleaseEvent( QMouseEvent * event ) { hide(); QWidget::mouseReleaseEvent( event ); // standard event processing } valknut-0.4.9/valknut/dcpluginmanager.h0000664000076400007640000000265711074173623016361 0ustar ejsejs/*************************************************************************** dcpluginmanager.h - description ------------------- begin : Don Dez 5 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCPLUGINMANAGER_H #define DCPLUGINMANAGER_H #include /** *@author Mathias Küster */ class CPlugin; class CPluginObject; class DCPluginManager : public CPluginManager { public: /** construtor */ DCPluginManager(); /** destructor */ virtual ~DCPluginManager(); /** */ virtual bool Init( CPluginObject * plugin ); }; /** */ extern DCPluginManager * g_pPluginManager; #endif valknut-0.4.9/valknut/dcfilelistdecompressor.h0000664000076400007640000000471111102450167017753 0ustar ejsejs/*************************************************************************** dcfilelistdecompressor.h - Valknut Filelist Processing Thread ------------------- begin : Thu Jul 3 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCFILELISTDECOMPRESSOR_H #define DCFILELISTDECOMPRESSOR_H /** * @author Edward Sheldrake * * This is a QThread that processes a filelist and emits a signal when finished * which the DCFileBrowser will respond to. * * Currently it only does the bzip2/he3 decompression, and for old valknut * filelists, removes the header and compresses to bzip2. * * After DCFileBrowser is ported to QT4 properly using the Model/View * architecture, it will also do the text / xml parsing and * create the model. */ #include #include #include class CByteArray; class DCFilelistDecompressor : public QThread { Q_OBJECT public: /** constructor for decompressing a list from disk */ DCFilelistDecompressor( QObject * parent, CString filename ); /** constructor for decompressing our own list from memory */ DCFilelistDecompressor( QObject * parent, CByteArray * memory ); /** destructor */ virtual ~DCFilelistDecompressor(); /** the method that runs in the thread */ virtual void run(); /** returns the pointer to the decompressed data */ CString * getData(); /** */ CByteArray * recompressed; signals: /** */ virtual void finished( bool ok ); private: /** */ bool LoadOldValknutList( CByteArray * dest ); /** file name */ CString filename; /** decompress from memory */ CByteArray * compressed; /** pointer to the decompressed data */ CString * data; }; #endif // DCFILELISTDECOMPRESSOR_H valknut-0.4.9/valknut/publichubsproxy.h0000664000076400007640000000362011100336602016436 0ustar ejsejs/*************************************************************************** publichubsproxy.h - Proxy model for public hubs filtering ------------------- begin : Mon Sep 29 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef PUBLICHUBSPROXY_H #define PUBLICHUBSPROXY_H /** * @author * * Needed to handle which columns to filter on and the user * count, QSortFilterProxyModel handles sorting. */ #include class DC_HubFilterObject; class PublicHubsProxy : public QSortFilterProxyModel { Q_OBJECT public: /** Constructor */ PublicHubsProxy( QObject * parent = 0 ); /** Destructor */ virtual ~PublicHubsProxy(); /** Sets the filter, columns, user count etc. */ void setFilter( DC_HubFilterObject * filter ); protected: /** Does the filtering */ virtual bool filterAcceptsRow( int source_row, const QModelIndex & source_parent ) const; private: /** Minimum user count */ unsigned int minusers; /** Filter looks in name */ bool inName; /** Filter looks in hub address */ bool inAddress; /** Filter looks in description */ bool inDesc; }; #endif // PUBLICHUBSPROXY_H valknut-0.4.9/valknut/cdialogpicturemap.h0000664000076400007640000000333311100336602016671 0ustar ejsejs/*************************************************************************** cdialogpicturemap.h - description ------------------- begin : Sat Apr 26 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef CDIALOGPICTUREMAP_H #define CDIALOGPICTUREMAP_H #include //Added by qt3to4: #include #include #include #include /** *@author Mathias Küster */ class CDialogPictureMap : public QDialog { Q_OBJECT public: /** construtor */ CDialogPictureMap( QWidget * parent = 0, const char * name = 0, bool modal = FALSE, Qt::WFlags f = 0 ); /** destructor */ virtual ~CDialogPictureMap(); /** */ void SetPixmap( QPixmap & pixmap ); /** */ void GetXY( int & x, int & y ); protected: /** */ bool eventFilter( QObject * object, QEvent * event ); private: /** */ QLabel * m_pLabel; /** */ QGridLayout * m_pGridLayout; /** */ int m_nX,m_nY; }; #endif valknut-0.4.9/valknut/dchubfilter.cpp0000664000076400007640000000420511074173623016036 0ustar ejsejs/*************************************************************************** dchubfilter.cpp - description ------------------- begin : Mit Okt 30 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dchubfilter.h" #include #include #include #include #include "dcconfig.h" DCHubFilter::DCHubFilter( QWidget * parent ) : QDialog( parent ) { setupUi(this); } DCHubFilter::~DCHubFilter() { } /** */ void DCHubFilter::Edit( DC_HubFilterObject * HubFilterObject ) { LineEdit_FILTERNAME->setText(HubFilterObject->m_sFilterName); SpinBox_MINUSER->setValue(HubFilterObject->m_nUser); LineEdit_CONTAINS->setText(HubFilterObject->m_sContains); CheckBox_NAME->setChecked(HubFilterObject->m_bName); CheckBox_SERVER->setChecked(HubFilterObject->m_bServer); CheckBox_DESCRIPTION->setChecked(HubFilterObject->m_bDescription); } /** */ void DCHubFilter::Get( DC_HubFilterObject * HubFilterObject ) { HubFilterObject->m_sFilterName = LineEdit_FILTERNAME->text(); HubFilterObject->m_nUser = SpinBox_MINUSER->value(); HubFilterObject->m_sContains = LineEdit_CONTAINS->text(); HubFilterObject->m_bName = CheckBox_NAME->isChecked(); HubFilterObject->m_bServer = CheckBox_SERVER->isChecked(); HubFilterObject->m_bDescription = CheckBox_DESCRIPTION->isChecked(); } valknut-0.4.9/valknut/dcgui.h0000664000076400007640000002107611134413774014311 0ustar ejsejs/*************************************************************************** dcgui.h - description ------------------- begin : Mon Okt 1 19:59:45 CEST 2001 copyright : (C) 2001-2005 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCGUI_H #define DCGUI_H // include files for QT #include #include //Added by qt3to4: #include #include #include #include "dcapplicationevents.h" #include // forward declaration of the DCGui classes class QTimer; class QAction; class QActionGroup; class QToolBar; class QMdiArea; class QMdiSubWindow; class QMenu; class QLabel; /** * This Class is the base class for your application. It sets up the main * window and providing a menubar, toolbar * and statusbar. For the main view, an instance of class DCGuiView is * created which creates your view. * * @author Source Framework Automatically Generated by KDevelop, (c) The KDevelop Team. * @version KDevelop version 1.3 code generation */ class DCGuiApp : public QMainWindow { Q_OBJECT public: /** construtor */ DCGuiApp(); /** destructor */ virtual ~DCGuiApp(); /** */ void ShowOptionsDialog() { slotFileOptions(); }; /** setup all windows */ void initWindows(); /** */ void Dock() { slotViewDock(); }; protected: /** overloaded for Message box on last window exit */ bool queryExit(); /** Catch QT4 QMainWindow close event*/ virtual void closeEvent( QCloseEvent *event ); /** Receive custom events for updating status bars */ virtual void customEvent( QEvent * event ); private slots: /** */ void slotFileOptions(); /** */ void slotFileQuickOptions(); /** */ void slotFileFileListBrowser(); /** */ void slotFileFileListBrowserLocal(); /** */ void slotFileCreateShare(); /** */ void slotFileReloadPlugins(); /** change default download mode */ void slotChangeDefaultDldMode(QAction* DldType); /** exits the application */ bool slotFileQuit(); /** toggle the tabbar*/ void slotViewTabBar(bool toggle); /** toggle the toolbar*/ void slotViewToolBar(bool toggle); /** toggle the statusbar*/ void slotViewStatusBar(bool toggle); /** dock the application */ void slotViewDock(); /** show or hide the system tray icon */ void slotViewTrayIcon(bool toggle); /** shows an about dlg*/ void slotHelpAbout(); /** opens the online manual in web browser */ void slotHelpManual(); /** connect to the valknut hub */ void slotHelpSupport(); /** gets called when the window menu is activated; recreates the window menu with all opened window titles. */ void windowMenuAboutToShow(); /** activates the MDI child widget when it gets selected from the window menu. */ void windowMenuActivated( QAction * action ); /** show/hide transfer list window */ void slotActionTransferList(); /** show/hide server list window */ void slotActionServerList(); /** show/hide hub search window */ void slotActionHubSearch(); /** show/hide spy window */ void slotActionSpy(); /** show/hide users window */ void slotActionUsers(); /** change user away mode */ void slotChangeAwayMode(); /** away mode was changed elsewhere - update menu */ void slotAwayModeChanged( eUserAwayMode mode ); /** */ void tileVertically(); /** minimize all windows */ void slotWindowMinimize(); /** close all disconnected hub windows */ void slotWindowCloseHubs(); /** */ void slotWindowCloseAllChats(); /** */ void slotWindowCloseOfflineChats(); /** */ void slotWindowCloseFilelists(); /** */ void slotWindowCloseSearches(); /** */ void slotTimeout(); /** tray menu triggers */ void slotTrayMenuTriggered( QSystemTrayIcon::ActivationReason reason ); /** called on selecting remove tray icon from the system tray icon's own menu */ void slotRemoveTrayIcon(); /** set quick options menu to match setting */ void slotDefaultDownloadModeChanged(); /** change the MDI view mode: windows or tabs */ void slotChangeMDIViewMode( QAction * action ); /** context menu to reset traffic stats */ void slotContextMenuTraffic( const QPoint & pos ); /** show debug settings dialog */ void slotDebugSettings(); /** show a malloc info dialog and print malloc stats */ void slotMallocInfo(); /** auto away mode enabled or disabled */ void slotAutoAwayModeChanged( bool enabled ); private: /** */ void SetTheme(); /** initializes all QActions of the application */ void initActions(); /** deinitializes all QActions of the application */ void deinitActions(); /** initMenuBar creates the menu_bar and inserts the menuitems */ void initMenuBar(); /** this creates the toolbars. Change the toobar look and add new toolbars in this * function */ void initToolBar(); /** setup the statusbar */ void initStatusBar(); /** initialize the mainview*/ void initView(); /** deinitialize the mainview*/ void deinitView(); /** initialize the tray icon */ void initTray(); /** deinitialize the tray icon */ void deinitTray(); /** show/hide mdi widget */ void showMDIWidget( QMdiSubWindow * window ); /** */ void showFreeDiscSpace(); /** */ void closeWindowsOfClass( QString classname ); /** file_menu contains all items of the menubar entry "File" */ QMenu *pFileMenu; /** */ QMenu *pQuickOptionsMenu; /** */ QMenu *pReloadPluginsMenu; /** view_menu contains all items of the menubar entry "View" */ QMenu *pViewMenu; /** view_menu contains all items of the menubar entry "Help" */ QMenu *pHelpMenu; /** the window menu */ QMenu *pWindowMenu; /** action */ QMenu *pActionMenu; /** away mode */ QMenu *pAwayMenu; /** */ QToolBar *windowsTabBar; /** */ QToolBar *fileToolbar; /** */ QLabel * statusDMLabel; /** */ QLabel * statusFMLabel; /** */ QLabel * statusTRLabel; /** */ QLabel * statusDSLabel; /** */ QMdiArea *pMdiArea; /** */ QAction *fileOptions; /** */ QAction *fileQuickOptions; /** */ QAction *fileFileListBrowser; /** */ QAction *fileFileListBrowserLocal; /** */ QAction *fileFileListRefresh; /** */ QAction *fileReloadPlugins; /** */ QAction *fileQuit; /** */ QActionGroup *fileDefaultDldGroup; /** */ QAction *fileDefaultDldAsk; /** */ QAction *fileDefaultDldSingle; /** */ QAction *fileDefaultDldMulti; /** */ QAction *viewTabBar; /** */ QAction *viewToolBar; /** */ QAction *viewStatusBar; /** */ QAction *viewDock; /** */ QAction *viewTrayIcon; /** */ QActionGroup * viewUseTabsGroup; /** */ QAction *viewUseWindows; /** */ QAction *viewUseTabs; /** */ QAction *windowTile; /** */ QAction *windowTileHor; /** */ QAction *windowCascade; /** */ QAction *windowMinimize; /** */ QAction *windowCloseHubs; /** */ QAction *windowCloseAllChats; /** */ QAction *windowCloseOfflineChats; /** */ QAction *windowCloseFilelists; /** */ QAction *windowCloseSearches; /** */ QActionGroup *windowAction; /** */ QActionGroup *windowsGroup; /** */ QAction *actionServerList; /** */ QAction *actionTransferList; /** */ QAction *actionHubSearch; /** */ QAction *actionSpy; /** */ QAction *actionUsers; /** */ QActionGroup * actionGroupAwayMode; /** */ QAction *actionAwayModeNormal; /** */ QAction *actionAwayModeAway; /** */ QAction *helpAboutApp; /** */ QAction *helpManualApp; /** */ QAction *helpSupportApp; /** */ QAction *debugSettings; /** */ QDockWidget * pTransferViewDock; /** */ QTimer * m_pTimer; /** */ DCApplicationEvents m_ApplicationEvents; /** tray icon */ QSystemTrayIcon * m_pTrayIcon; /** */ bool m_bTray; /** */ bool m_bEnableTray; /** * Set to true if the transfer view was floating when valknut got * minimized to tray. */ bool m_bTransferViewGotTrayed; /** hold old desktop position on dock/undock */ QPoint m_DesktopPosition; /** hold old maximized status on dock/undock */ bool m_bWasMaximized; /** */ bool m_bIsQuitPromptVisible; }; /** global pointer to the main window instance */ extern DCGuiApp * g_pMainWin; #endif valknut-0.4.9/valknut/dcdebug.cpp0000664000076400007640000002434011126754116015142 0ustar ejsejs/*************************************************************************** dcdebug.cpp - description ------------------- begin : Don Sep 25 2003 copyright : (C) 2003 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcdebug.h" #ifndef WIN32 #include #include #include #include #include #include #include #include #include #include #endif #include #include #include #include #include #include #include #include "dcconfig.h" #include #include #if defined(HAVE_CONFIG_H) #include #endif CString DCDebug::arg_0 = CString(); CString DCDebug::startup_dir = CString(); /** */ DCDebug::DCDebug( QWidget * parent ) : QDialog(parent) { setupUi(this); m_pDebug = 0; connect( PushButton_EXIT, SIGNAL(clicked()), this, SLOT(accept()) ); connect( PushButton_SAVE, SIGNAL(clicked()), this, SLOT(slotSaveBacktrace()) ); } /** */ DCDebug::~DCDebug() { if ( m_pDebug ) { disconnect( m_pDebug, SIGNAL( finished(int,QProcess::ExitStatus) ), this, SLOT( slotDebuggerFinished(int,QProcess::ExitStatus) ) ); m_pDebug->close(); m_pDebug->kill(); delete m_pDebug; m_pDebug = 0; } } /** */ bool DCDebug::Init( QString configpath, QString debugopt ) { #ifndef WIN32 TextEdit_LOG->setText(tr("Getting information about the crash...")); QString s = "thread apply all bt full\nq\n"; QString filename = configpath+"/"+"gdbrc"; QFile f(filename); QString s1,s2,s3; QStringList args; s1 = debugopt.section(",",0,0); s2 = debugopt.section(",",1,1); s3 = debugopt.section(",",2,2); printf("Init debug:\nConfigpath: '%s'\n%s %s %s\n", configpath.toAscii().constData(), s1.toAscii().constData(), s2.toAscii().constData(), s3.toAscii().constData() ); f.open( QIODevice::WriteOnly | QIODevice::Truncate ); f.write(s.toAscii()); f.close(); args << "--nw"; args << "--nx"; args << "--quiet"; args << "--batch"; args << "-x"; args << filename; args << s3; args << s1; m_pDebug = new QProcess(this); connect( m_pDebug, SIGNAL( finished(int,QProcess::ExitStatus) ), this, SLOT( slotDebuggerFinished(int,QProcess::ExitStatus) ) ); m_pDebug->start( "gdb", args, QIODevice::ReadOnly ); /* We do not get either finished() or started() if the process fails to start */ if ( m_pDebug->waitForStarted() == false ) { disconnect( m_pDebug, SIGNAL( finished(int,QProcess::ExitStatus) ), this, SLOT( slotDebuggerFinished(int,QProcess::ExitStatus) ) ); slotDebuggerFinished( -1, QProcess::CrashExit ); } return true; #else return false; #endif } /** */ void DCDebug::slotDebuggerFinished( int exitCode, QProcess::ExitStatus exitStatus ) { QString s; // get version QFile f1("/proc/version"); if ( f1.open( QIODevice::ReadOnly ) ) { s += f1.readAll(); f1.close(); s += "\n"; } // create output text s += "Valknut: "; s += PACKAGE_VERSION; s += " ("; s += VALKNUT_BUILD_INFO; s += ")\nDCLIB: "; s += dclibVersion(); s += " ("; s += dclibBuildInfo(); s += ")\nQt® compiled: "; s += QT_VERSION_STR; s += "\nQt® used: "; s += qVersion(); s += "\nLIBXML compiled: "; s += CXml::Libxml2CompiledVersion(); s += "\nLIBXML used: "; s += CXml::Libxml2RunningVersion(); s += "\n\n"; if ( exitStatus == QProcess::NormalExit ) { QString buffer = m_pDebug->readAllStandardOutput(); buffer += "\n"; buffer += m_pDebug->readAllStandardError(); buffer += "\n"; TextEdit_LOG->setText( s + buffer ); } else { QString failed = tr("Failed to get more information about the crash."); failed += "\n"; failed += tr("The %1 program is required to get the information.").arg("gdb"); failed += "\n"; failed += tr("Exit code: %1").arg(exitCode); failed += "\n"; failed += tr("Error messages:"); failed += "\n"; failed += m_pDebug->readAllStandardError(); TextEdit_LOG->setText( s + failed ); } m_pDebug->close(); delete m_pDebug; m_pDebug = 0; PushButton_SAVE->setEnabled(true); } /** */ void DCDebug::slotSaveBacktrace() { QString s = QFileDialog::getSaveFileName( this, tr("Choose a filename to save under"), QString(), tr("Text (*.txt)") ); if ( s.isEmpty() ) { return; } QFile *file = new QFile(s); if ( !file->open( QIODevice::WriteOnly ) ) { QMessageBox::critical( this, tr("Save error"), tr("Can't open file '%1' for writing.").arg(s) ); } else { QString comment = TextEdit_COMMENT->toPlainText(); if ( !comment.isEmpty() ) { file->write( comment.toAscii() ); QByteArray separator; separator.resize(80); separator.fill('-'); separator.prepend("\n\n"); separator.append("\n\n"); file->write( separator ); } file->write( TextEdit_LOG->toPlainText().toAscii() ); file->close(); } delete file; } #ifndef WIN32 /** */ void print_signal_name( const int signum ) { switch ( signum ) { #ifdef SIGPIPE case SIGPIPE: { DPRINTF("SIGPIPE"); break; } #endif #ifdef SIGTERM case SIGTERM: { DPRINTF("SIGTERM"); break; } #endif #ifdef SIGHUP case SIGHUP: { DPRINTF("SIGHUP"); break; } #endif #ifdef SIGINT case SIGINT: { DPRINTF("SIGINT"); break; } #endif #ifdef SIGQUIT case SIGQUIT: { DPRINTF("SIGQUIT"); break; } #endif #ifdef SIGSEGV case SIGSEGV: { DPRINTF("SIGSEGV"); break; } #endif #ifdef SIGFPE case SIGFPE: { DPRINTF("SIGFPE"); break; } #endif #ifdef SIGILL case SIGILL: { DPRINTF("SIGILL"); break; } #endif #ifdef SIGABRT case SIGABRT: { DPRINTF("SIGABRT"); break; } #endif #ifdef SIGTRAP case SIGTRAP: { DPRINTF("SIGTRAP"); break; } #endif default: { DPRINTF("signal %d", signum); break; } } } /** */ bool can_we_handle_signal( const int signum ) { bool ok = false; struct sigaction query_action; if ( sigaction(signum,NULL,&query_action) == -1 ) { DPRINTF("sigaction returned -1 "); } else if ( query_action.sa_handler == SIG_IGN ) { DPRINTF("signal is being ignored "); } else if ( query_action.sa_handler == SIG_DFL ) { // print_signal_name(signum); // DPRINTF(" query_action.sa_handler=%d SIG_DFL=%d\n", query_action.sa_handler, SIG_DFL); ok = true; } else { DPRINTF("signal already handled "); } if ( ok == false ) { DPRINTF("not handling signal "); print_signal_name(signum); DPRINTF("\n"); } return ok; } /*! *\brief this handler will probably evolve into * something better. */ static void crash_handler(int sig) { pid_t pid; static volatile unsigned long crashed_ = 0; /* * let's hope startup_dir and argv0 aren't trashed. * both are defined in main.c. */ if (sig < 0 || sig > 32) { /* what's that ? */ // char *buf = g_strdup_printf( // _("Caught strange signal (%d). This is probably\n" // "due to a broken compilation; Exiting."), sig); // ay_do_error( _("Error"), buf ); // g_free(buf); // printf("SIGNAL_HANDLER: unknown signal %d\n",sig); _exit(EXIT_FAILURE); } /* * besides guarding entrancy it's probably also better * to mask off signals */ if (crashed_) _exit(EXIT_FAILURE); crashed_++; // printf("CRASH CRASH CRASH \n"); if (0 == (pid = fork())) { char buf[256]; char * args[6]; CString cp = g_pConfig->GetConfigPath(); args[0] = DCDebug::arg_0.Data(); args[1] = "-c"; args[2] = cp.Data(); args[3] = "-C"; snprintf(buf, sizeof(buf), "%d,%d,%s", getppid(), sig, DCDebug::arg_0.Data()); args[4] = buf; args[5] = NULL; chdir(DCDebug::startup_dir.Data()); setgid(getgid()); setuid(getuid()); execvp(DCDebug::arg_0.Data(), args); } else { waitpid(pid, NULL, 0); _exit(EXIT_FAILURE); } _exit(EXIT_FAILURE); } /*! *\brief install crash handlers */ void crash_install_handlers(void) { bool segv = false, fpe = false, ill = false, abrt = false, trap = false; struct sigaction new_action; new_action.sa_handler = crash_handler; sigemptyset( &new_action.sa_mask ); new_action.sa_flags = 0; #ifdef SIGSEGV segv = can_we_handle_signal( SIGSEGV ); if ( segv ) { sigaddset( &new_action.sa_mask, SIGSEGV ); } #endif #ifdef SIGFPE fpe = can_we_handle_signal( SIGFPE ); if ( fpe ) { sigaddset( &new_action.sa_mask, SIGFPE ); } #endif #ifdef SIGILL ill = can_we_handle_signal( SIGILL ); if ( ill ) { sigaddset( &new_action.sa_mask, SIGILL ); } #endif #ifdef SIGABRT abrt = can_we_handle_signal( SIGABRT ); if ( abrt ) { sigaddset( &new_action.sa_mask, SIGABRT ); } #endif #ifdef SIGTRAP trap = can_we_handle_signal( SIGTRAP ); if ( trap ) { sigaddset( &new_action.sa_mask, SIGTRAP ); } #endif #ifdef SIGSEGV if ( segv ) { if ( sigaction(SIGSEGV,&new_action,NULL) == -1 ) { printf("Error installing SIGSEGV handler\n"); } } #endif #ifdef SIGFPE if ( fpe ) { if ( sigaction(SIGFPE,&new_action,NULL) == -1 ) { printf("Error installing SIGFPE handler\n"); } } #endif #ifdef SIGILL if ( ill ) { if ( sigaction(SIGILL,&new_action,NULL) == -1 ) { printf("Error installing SIGILL handler\n"); } } #endif #ifdef SIGABRT if ( abrt ) { if ( sigaction(SIGABRT,&new_action,NULL) == -1 ) { printf("Error installing SIGABRT handler\n"); } } #endif #ifdef SIGTRAP if ( trap ) { if ( sigaction(SIGTRAP,&new_action,NULL) == -1 ) { printf("Error installing SIGTRAP handler\n"); } } #endif //sigprocmask(SIG_UNBLOCK, &mask, 0); } #endif valknut-0.4.9/valknut/dcfiletool.cpp0000664000076400007640000003330611120312410015650 0ustar ejsejs/*************************************************************************** dcfiletool.cpp - description ------------------- begin : Die Mär 26 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcfiletool.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include "dcconfig.h" #include "dctransferview.h" #include "dcconnectionmanager.h" #include "dcguiutils.h" #include "DCDialogAskDownloadMode.h" #include /** */ DCFileTool::DCFileTool() { } /** */ DCFileTool::~DCFileTool() { } /** */ bool DCFileTool::SelectFileSource( QWidget * parent, ulonglong size, QString tth, QString & file, QString & localrootpath, QString & localpath ) { bool res = false; QStringList LocalFilesList; if ( tth.isEmpty() ) { g_pTransferView->GetLocalFilesList( LocalFilesList, size ); } else { g_pTransferView->GetLocalFilesList( LocalFilesList, tth, size ); } if ( LocalFilesList.empty() ) { return res; } // Add as an extra source QMenu * m = new QMenu(parent); QList actlist; QAction * title = m->addAction( QObject::tr("(choose an existing download to add to)") ); title->setEnabled(false); for ( int iter=0; iter<(int)LocalFilesList.size(); iter++ ) { if ( LocalFilesList[iter].contains("\\") ) { actlist.append(m->addAction( LocalFilesList[iter].section("\\",-1,-1) )); } else { actlist.append(m->addAction( LocalFilesList[iter].section("/",-1,-1) )); } } QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen != 0 ) { QFileInfo fi(LocalFilesList[actlist.indexOf(chosen)]); file = fi.fileName(); localpath = ""; localrootpath = fi.path(); // now we must check if a localpath exist if ( localrootpath.indexOf( g_pConfig->GetDownloadFolder().Data(), 0 ) == 0 ) { localpath = localrootpath.mid( g_pConfig->GetDownloadFolder().Length(), localrootpath.length()-g_pConfig->GetDownloadFolder().Length() ); localrootpath = g_pConfig->GetDownloadFolder().Data(); } res = true; } return res; } /** */ bool DCFileTool::AddFileSource( QWidget * parent, CString nick, CString hubname, CString hubhost, CString remotename, CString localname, CString localpath, CString localrootpath, eltMedium medium, ulonglong size, CString tth ) { bool res = false; QString sourcefile,slocalrootpath,slocalpath; if ( SelectFileSource( parent, size, tth.Data(), sourcefile, slocalrootpath, slocalpath ) == false ) { return CheckFile( parent, nick, hubname, hubhost, remotename, localname, localpath, localrootpath, medium, size, tth ); } if ( !sourcefile.isEmpty() ) { // add transfer to the waitlist res = CheckFile( parent, nick, hubname, hubhost, remotename, sourcefile.toAscii().constData(), slocalpath.toAscii().constData(), slocalrootpath.toAscii().constData(), medium, size, tth, true ); } return res; } /** */ bool DCFileTool::CheckFile( QWidget * parent, CString nick, CString hubname, CString hubhost, CString remotename, CString localname, CString localpath, CString localrootpath, eltMedium medium, ulonglong size, CString hash, bool usermulti, eRepairType repair ) { CDir dir; QString name; ulonglong fsize = 0, pos_s = 0, pos_e = 0; int filestate; bool multi = usermulti; // first we get the filestate from the downloadmanager filestate = g_pTransferView->DLM_QueueCheck( nick, hubname, hubhost, remotename, localname, localpath, localrootpath, medium, size, hash ); if ( filestate == 1 ) { // QMessageBox::information( parent, QObject::tr("File download"), // QObject::tr("The same user/file is already in the queue !\n")); return false; } else if ( filestate == 2 ) { /* * This was from where uninitialized pos_s and pos_e were * passed to CDownloadManager, they are not used when adding * a source to an existing download. */ if ( multi == false ) { switch( QMessageBox::warning( parent, QObject::tr("File download"), QObject::tr("A same file is already in the queue!"), QObject::tr("Start a multi-download"), QObject::tr("Cancel"), 0, 1 ) ) { case 0: multi = true; break; default: return false; break; } } } else if ( filestate == 3 ) { QMessageBox::information( parent, QObject::tr("File download"), QObject::tr("File is already in the queue but not mark as a multi-download!\n")); return false; } else if ( filestate == 4 ) { QMessageBox::information( parent, QObject::tr("File download"), QObject::tr("File is already in the queue with a different size!\n")); return false; } else if ( filestate == 0 ) { if ( localrootpath.NotEmpty() ) { name = localrootpath.Data(); } else { name = g_pConfig->GetDownloadFolder().Data(); } if ( name.isEmpty() ) { return false; } localpath = localpath.Replace(':',""); localname = localname.Replace(':',""); name += QString("/"); name += QString(localpath.Data()); name += QString("/"); name += QString(localname.Data()); name = CDir::SimplePath(name.toAscii().constData()).Data(); fsize = dir.getFileSize(name.toAscii().constData(),false); // check already download if ( (size == fsize) && (fsize > 0) && !repair ) { QMessageBox::information( parent, QObject::tr("File download"), QObject::tr("File already downloaded!\n")); return false; } // check for partial download if ( fsize > 0 ) { if ( repair ) { // get desired byte range QString range; bool ok = false; // There is probably a better way to get this info. We assume 2352 sector size (ss) // which is most common for BIN/CUE, but we might want to make two menu entries, one // for 2352 and one for 2048 (ie. ISO). The sector offset (so) is the number of bytes // into the BIN file where sector zero is reported. Fireburner for Linux reports // from the beginning of the file, but other programs (like cdmage) report from the // first data sector (skipping all header and directory information). We assume zero. int ss = 2352; int so = 0; if ( repair == ertBYTES ) { range = QInputDialog::getText( parent, QObject::tr("Repair File"), QObject::tr("Enter byte range (m-n)"), QLineEdit::Normal, QString::null, &ok ); } else { range = QInputDialog::getText( parent, QObject::tr("Repair BIN Sectors"), QObject::tr("Enter sector range (m[-n])"), QLineEdit::Normal, QString::null, &ok ); } if ( !ok ) { return false; } int p = range.indexOf( '-' ); if ( p > 0 ) { pos_s = range.left( p ).toULongLong( &ok ); if ( !ok ) { QMessageBox::critical( parent, QObject::tr("Repair File"), QObject::tr("Invalid start position.") ); return false; } pos_e = range.mid( p + 1 ).toULongLong( &ok ); if ( !ok ) { QMessageBox::critical( parent, QObject::tr("Repair File"), QObject::tr("Invalid end position.") ); return false; } } else if ( repair == ertSECTORS ) { pos_s = range.toULongLong( &ok ); if ( !ok ) { QMessageBox::critical( parent, QObject::tr("Repair File"), QObject::tr("Invalid number of sectors.") ); return false; } pos_e = 0; } else { QMessageBox::critical( parent, QObject::tr("Repair File"), QObject::tr("Invalid range entered.") ); return false; } if ( repair == ertSECTORS ) { if ( pos_e == 0 ) { pos_e = pos_s; } pos_s = so + pos_s * ss; pos_e = so + (pos_e+1) * ss - 1; } if ( pos_e > fsize ) { pos_e = fsize; } if ( pos_s > pos_e ) { pos_s = pos_e; } multi = true; printf( "Starting download repair, %s, %llu-%llu\n", name.toAscii().constData(), pos_s, pos_e ); } else { pos_e = 0; switch( QMessageBox::warning( parent, QObject::tr("File download"), QObject::tr("File already exists!") + "\n" + name + "\n" + DCGuiUtils::GetSizeString( fsize ), QObject::tr("Resume"), QObject::tr("Overwrite"), QObject::tr("Cancel"), 0, 2) ) { case 0: pos_s = fsize; break; case 1: QFile::remove(name); fsize = 0; pos_s = 0; break; case 2: return false; break; default: return false; break; } } } else // fsize == 0, file does not already exist { pos_s = 0; pos_e = 0; } /* Check move finished downloads to directory */ CString finished = g_pConfig->GetDownloadFinishedFolder(); if ( finished.NotEmpty() && localrootpath.IsEmpty() ) { CString destfile = g_pConfig->GetDownloadFolder(); destfile += DIRSEPARATOR; destfile += localpath; destfile += DIRSEPARATOR; destfile += localname; destfile = CDir::SimplePath(destfile); destfile = finished + destfile.Mid(g_pConfig->GetDownloadFolder().Length()); if ( destfile.Left(1) != DIRSEPARATOR ) { destfile = DIRSEPARATOR + destfile; } else if ( destfile.Left(2) == CString(DIRSEPARATOR+DIRSEPARATOR) ) { destfile = destfile.Mid(1); } //printf("Checking for '%s'\n", destfile.Data()); if ( dir.IsFile( destfile, false ) ) { int ret = QMessageBox::warning( parent, QObject::tr("File download"), QObject::tr("File already exists in your finished downloads folder") + "\n" + QString(destfile.Data()) + "\n" + DCGuiUtils::GetSizeString( dir.getFileSize(destfile,false) ) + "\n" + QObject::tr("It will be overwritten when the download finishes"), QObject::tr("Overwrite"), QObject::tr("Cancel"), QString::null, 1, 1 // set default button and escape button to Cancel ); if ( ret == 1 ) { return false; } } } /* * FIXME dclib is perfectly capable of using multi download mode * on files smaller than 1 segment, because the old hack * to disable segmented downloading was to set the segment size to 2GiB or so. */ if ( size > (1024*1024) ) { if ( (g_pConfig->GetDefaultDownloadMode() == 0) && (multi == false) ) { Ui::DCDialogAskDownloadMode admui; QDialog * askdialog = new QDialog(parent); admui.setupUi(askdialog); admui.Label_QUESTION_PIXMAP->setPixmap( QApplication::style()->standardPixmap(QStyle::SP_MessageBoxQuestion) ); if ( askdialog->exec() == QDialog::Accepted ) { multi = true; } else { multi = false; } if ( admui.CheckBox_SET_QUICK_OPTION->isChecked() ) { if ( multi ) { g_pConfig->SetDefaultDownloadMode(2,true); } else { g_pConfig->SetDefaultDownloadMode(1,true); } } delete askdialog; } else if ( (g_pConfig->GetDefaultDownloadMode() == 1) && (multi == false) ) { multi = false; } else { multi = true; } } else { multi = false; } } else { QMessageBox::critical( parent, "DCFileTool::CheckFile", QObject::tr("Download manager returned unknown value: ") + QString().setNum(filestate) ); return false; } if ( g_pConnectionManager->IsHubOnline(hubname,hubhost) == ehsNONE ) { /* Check if the user is connected to another hub that we are connected to. * I'm uncertain how it will react when multi==false (thus that is not handled), * but as this concerns small files it is a bit annoying. */ bool foundUser = false; if ( multi ) { CList HubList; CString emptyString; DCHubObject * CurrentHub = 0; /* Get hublist for the user, ie hubs that both us and them are * connected to. */ if( g_pConnectionManager->IsUserOnline(nick,emptyString,emptyString,&HubList) ) { /* Add an item in the queue for each hub, mark the user as found */ while((CurrentHub = HubList.Next(CurrentHub) ) != 0 ) { foundUser = true; g_pTransferView->DLM_QueueAdd( nick, CurrentHub->m_sHubName, CurrentHub->m_sHubHost, remotename, localname, localpath, localrootpath, medium, size, pos_s, pos_e, hash, multi ); } } } /* Usual behavior: * (no user found or option not enabled) */ if ( foundUser == false ) { switch( QMessageBox::warning( parent, QObject::tr("File download"), QObject::tr("Not connected to required hub!"), QObject::tr("Connect"), QObject::tr("Cancel"), 0, 0, 1 ) ) { case 0: g_pConnectionManager->Connect(hubname,hubhost); break; case 1: break; } } } g_pTransferView->DLM_QueueAdd( nick, hubname, hubhost, remotename, localname, localpath, localrootpath, medium, size, pos_s, pos_e, hash, multi ); return true; } valknut-0.4.9/valknut/dcchat.h0000664000076400007640000001012211134215367014430 0ustar ejsejs/*************************************************************************** dcchat.h - description ------------------- begin : Don Mär 28 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCCHAT_H #define DCCHAT_H /** *@author Mathias Küster */ #include //Added by qt3to4: #include #include #include #include /* for enum eSecureState */ #include #include "DCDialogChat.h" class DCQTextEdit; class DCClient; class QStatusBar; class DCShellCommandRunner; class CMessagePrivateChat; class DCChat : public QWidget, public Ui::DCDialogChat { Q_OBJECT public: /** construtor */ DCChat( QWidget * parent, DCClient * client, bool bprivate = true ); /** destructor */ virtual ~DCChat(); /** */ void InitDocument(); /** */ void SetNick( QString nick, QString hubname ); /** */ QString GetNick() { return m_sNick; }; /** */ void AddMessage( QString nick, QString message, bool bremote = true, bool forward = false ); /** */ void AddMessage( CMessagePrivateChat * msg, bool bremote = true, bool forward = false ); /** show statusmessage, if show true the settings are ignored */ void AddStatus( QString message, bool show = false ); /** */ void SetCrypt( eSecureState e ); /** */ bool close(); /** Made public for auto responder */ void SendChat( QString message = "" ); protected: /** event filter */ virtual bool eventFilter( QObject * object, QEvent * event ); /** for translation event */ virtual void customEvent( QEvent * event ); private: /** */ bool CheckForCommand(); /** */ bool CheckForData( QString message ); /** */ void NickCompletion(); /** */ void QT3TranslationSync(); /** */ QString GetTimeStamp(); /** */ void AddOutput( QString message ); /** */ int FindFirstLink( QString msg ); /** */ int ConvertLinks( QString msg, QString & s ); /** */ int FindFirstEmoticon( QString msg ); /** */ int ConvertEmoticons( QString msg, QString & s ); /** */ void AddHistory( QString message ); /** */ DCQTextEdit * m_pTextEdit_CHATOUTPUT; /** */ QString m_sLanguage; /** */ bool m_bPrivateChat; /** */ bool m_bSendAway; /** */ DCClient * m_pClient; /** */ QString m_sNick; /** */ QStatusBar * m_pStatusBar; /** */ QLabel * m_pStatusCrypt; /** */ eSecureState m_eSecureState; /** */ QStringList m_lHistory; /** last line */ QString m_sHistoryTempString; /** cursor pos */ /* int m_nHistoryTempPara; */ /** cursor pos */ int m_nHistoryTempIndex; /** */ int m_nCurrentHistoryIndex; /** */ QString m_sTimeStamp; /** */ int m_nTabStart; /** */ int m_nTabEnd; /** */ int m_nTabPressed; /** */ QString m_sTabSaved; /** */ QString m_sTabNick; /** */ QWidget * m_pParent; /** */ QString m_sLabel; /** List of running shell command threads */ QList * m_pShellRunners; /** list of links to handle */ static const QStringList g_LinkList; public slots: /** */ void slotRightButtonClickedChatOutput( const QPoint& ); private slots: /** */ void slotClickedChatOutput(); /** */ void slotDoubleClickedChatOutput(); /** */ void slotTextChangedChatInput(); /** */ void slotSendChat(); /** */ void slotShellCommandFinished( bool ok, QString output ); /** */ void slotLoadEmoticons(); /** */ void slotBGColorChanged(); }; #endif valknut-0.4.9/valknut/dcsigterm.h0000664000076400007640000000345411061270772015175 0ustar ejsejs/*************************************************************************** dcsigterm.h - Turn SIGTERM into a QCloseEvent properly ------------------- begin : Mon Sep 08 2008 copyright : (C) 2008 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #ifndef DCSIGTERM_H #define DCSIGTERM_H #include class QSocketNotifier; /** * @author Edward Sheldrake * * It's pretty much the QT documentation on how to handle * signals properly, which is required because only a * very small set of functions are allowed to be used * inside a signal handler. */ class DCSigTerm : public QObject { Q_OBJECT public: /** * Constructor. * The parent is also the target to post * the close event to. */ DCSigTerm( QObject * parent ); /** Destructor. */ virtual ~DCSigTerm(); /** unix signal handler */ static void signal_handler( int signum ); public slots: /** */ void slotSocketReadyRead( int unused ); private: /** socket pair fd */ static int sigtermsfd[2]; /** */ QSocketNotifier * notifier; }; #endif // DCSIGTERM_H valknut-0.4.9/valknut/dcoptions.cpp0000664000076400007640000030363711127517720015557 0ustar ejsejs/*************************************************************************** dcoptions.cpp - description ------------------- begin : Sun Feb 24 2002 copyright : (C) 2002 by Mathias Küster email : mathen@users.berlios.de ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "dcoptions.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //Added by qt3to4: #include #include #include #include #include #include #include #include #include #include #include "dcmenuhandler.h" #include "dciconloader.h" #include "dctransferview.h" #include "DCDialogEditSharePath.h" #include "dcusercommandeditor.h" #include "dcguiutils.h" #include #include /* need PACKAGE_VERSION for HTTP User-Agent */ #ifdef HAVE_CONFIG_H #include #else #define PACKAGE_VERSION "Unknown" #endif #define TAB_IDENTIFY 0 #define TAB_TRANSFER 1 #define TAB_CONNECTION 2 #define TAB_GUI 3 #define TAB_SOUND 4 #define TAB_LOG 5 #define TAB_HUBLISTS 6 #define TAB_SECURITY 7 #define TAB_AUTO_RESPONSES 8 #define TAB_OTHER 9 #define TAB_TRANSFER_SHARES 0 #define TAB_TRANSFER_DOWNLOADS 1 #define TAB_TRANSFER_UPLOADS 2 #define TAB_TRANSFER_SETTINGS 3 #define TAB_CONNECTION_MODE 0 #define TAB_CONNECTION_SETTINGS 1 #define TAB_GUI_GENERAL 0 #define TAB_GUI_TRANSFER 1 #define TAB_GUI_CHAT 2 #define TAB_GUI_COLORS 3 #define TAB_GUI_COMMANDS 4 #define TAB_GUI_MENUS 5 #define TAB_GUI_CLIENT 6 #define TAB_GUI_ICONS 7 #define TAB_GUI_FILELIST 8 /** */ DCOptions::DCOptions( QWidget * parent ) : QDialog( parent ) { m_pHttp = 0; setupUi(this); /* icons moved out of .ui files so that they can be themed */ QIcon browsefolder( g_pIconLoader->GetPixmap(eiFOLDER_BLUE_OPEN) ); QIcon editadd( g_pIconLoader->GetPixmap(eiEDITADD) ); QIcon editdelete( g_pIconLoader->GetPixmap(eiEDITDELETE) ); QIcon editedit( g_pIconLoader->GetPixmap(eiEDIT) ); QIcon play( g_pIconLoader->GetPixmap(eiPLAYER_PLAY) ); ToolButton_BROWSEDOWNLOADFINISHEDFOLDER->setIcon( browsefolder ); ToolButton_BROWSEDOWNLOADFOLDER->setIcon( browsefolder ); ToolButton_CREATESHARELIST->setIcon( QIcon( g_pIconLoader->GetPixmap(eiRELOAD) ) ); ToolButton_BROWSEFILELIST->setIcon( QIcon( g_pIconLoader->GetPixmap(eiVIEW_SIDETREE) ) ); ToolButton_SHARELISTINFO->setIcon( QIcon( g_pIconLoader->GetPixmap(eiINFO) ) ); ToolButton_ADDSHAREDFOLDER->setIcon( editadd ); ToolButton_REMOVESHAREDFOLDER->setIcon( editdelete ); ToolButton_EDITSHAREDFOLDER->setIcon( editedit ); ToolButton_BROWSELANGUAGEFILE->setIcon( browsefolder ); ToolButton_SELECTLANGUAGE->setIcon( QIcon( g_pIconLoader->GetPixmap(eiCHOOSE_LANGUAGE) ) ); ToolButton_BROWSEAPPFONT->setIcon( browsefolder ); ToolButton_BROWSEDATAFOLDER->setIcon( browsefolder ); ToolButton_BROWSEBROWSER->setIcon( browsefolder ); ToolButton_ADD_USER_MENU_COMMAND->setIcon( editadd ); ToolButton_EDIT_USER_MENU_COMMAND->setIcon( editedit ); ToolButton_REMOVE_USER_MENU_COMMAND->setIcon( editdelete ); ToolButton_BROWSESOUNDPLAYER->setIcon( browsefolder ); ToolButton_BROWSESOUNDFILEDISCONNECT->setIcon( browsefolder ); ToolButton_BROWSESOUNDFILESEND->setIcon( browsefolder ); ToolButton_BROWSESOUNDFILERECEIVE->setIcon( browsefolder ); ToolButton_BROWSESOUNDFILEFIRSTRECEIVE->setIcon( browsefolder ); ToolButton_BROWSESOUNDFILECONNECT->setIcon( browsefolder ); ToolButton_BROWSESOUNDFILENICKMENTIONED->setIcon( browsefolder ); ToolButton_PREVIEWSOUNDFILECONNECT->setIcon( play ); ToolButton_PREVIEWSOUNDFILEDISCONNECT->setIcon( play ); ToolButton_PREVIEWSOUNDFILESEND->setIcon( play ); ToolButton_PREVIEWSOUNDFILERECEIVE->setIcon( play ); ToolButton_PREVIEWSOUNDFILEFIRSTRECEIVE->setIcon( play ); ToolButton_PREVIEWSOUNDFILENICKMENTIONED->setIcon( play ); ToolButton_BROWSELOGFILE->setIcon( browsefolder ); ToolButton_LOGCHAT_NICKNAMEFILTER_ADD->setIcon( editadd ); ToolButton_LOGCHAT_NICKNAMEFILTER_DEL->setIcon( editdelete ); ToolButton_ADDHUBLISTURL->setIcon( editadd ); ToolButton_EDITHUBLISTURL->setIcon( editedit ); ToolButton_REMOVEHUBLISTURL->setIcon( editdelete ); ToolButton_BROWSETRANSFERCERT->setIcon( browsefolder ); ToolButton_BROWSETRANSFERKEY->setIcon( browsefolder ); ToolButton_BROWSE_DCLIB_PLUGIN_PATH->setIcon( browsefolder ); // set default icon setWindowIcon( g_pIconLoader->GetPixmap(eiCONFIGURE) ); InitDocument(); } /** */ DCOptions::~DCOptions() { /* If they were saved, the map is empty */ for ( QMap::const_iterator it = usercommands.constBegin(); it != usercommands.constEnd(); ++it ) { delete it.value(); } usercommands.clear(); if ( m_pHttp ) { disconnect( m_pHttp, SIGNAL(done(bool)), this, SLOT(slotGotInternetIP(bool)) ); m_pHttp->abort(); // emits done signal delete m_pHttp; } } /** */ void DCOptions::InitDocument() { // insert speed ComboBox_SPEED->addItem( "28.8Kbps" ); ComboBox_SPEED->addItem( "33.6Kbps" ); ComboBox_SPEED->addItem( "56Kbps" ); ComboBox_SPEED->addItem( "Modem" ); ComboBox_SPEED->addItem( "Satellite" ); ComboBox_SPEED->addItem( "ISDN" ); ComboBox_SPEED->addItem( "DSL" ); ComboBox_SPEED->addItem( "Cable" ); ComboBox_SPEED->addItem( "LAN(T1)" ); ComboBox_SPEED->addItem( "LAN(T3)" ); ComboBox_SPEED->addItem( "Microwave" ); ComboBox_SPEED->addItem( "Wireless" ); ComboBox_SPEED->addItem( "0.005" ); ComboBox_SPEED->addItem( "0.01" ); ComboBox_SPEED->addItem( "0.02" ); ComboBox_SPEED->addItem( "0.05" ); ComboBox_SPEED->addItem( "0.1" ); ComboBox_SPEED->addItem( "0.2" ); ComboBox_SPEED->addItem( "0.5" ); ComboBox_SPEED->addItem( "1" ); ComboBox_SPEED->addItem( "2" ); ComboBox_SPEED->addItem( "5" ); ComboBox_SPEED->addItem( "10" ); ComboBox_SPEED->addItem( "20" ); ComboBox_SPEED->addItem( "50" ); ComboBox_SPEED->addItem( "100" ); ComboBox_SPEED->addItem( "1000" ); DCGuiUtils::AddEncodings( ComboBox_REMOTE_ENCODING ); // set width mode // QT3 ListView_OPTIONTREE->setColumnWidthMode( 0, Q3ListView::Maximum ); // hide the column header TreeWidget_OPTIONTREE->header()->hide(); // set up icons theme lists setupIconThemeComboBoxes(); // setup the option tree plviIdentify = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviIdentify->setText( 0, tr( "Identify" ) ); plviTransfer = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviTransfer->setText( 0, tr( "Transfer" ) ); plviTransfer->setExpanded( true ); plviTransfer->setFlags( Qt::ItemIsEnabled ); plviTransferShares = new QTreeWidgetItem( plviTransfer ); plviTransferShares->setText( 0, tr( "Shares" ) ); plviTransferDownloads = new QTreeWidgetItem( plviTransfer ); plviTransferDownloads->setText( 0, tr( "Downloads" ) ); plviTransferUploads = new QTreeWidgetItem( plviTransfer ); plviTransferUploads->setText( 0, tr( "Uploads" ) ); plviTransferSettings = new QTreeWidgetItem( plviTransfer ); plviTransferSettings->setText( 0, tr( "Settings" ) ); plviConnection = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviConnection->setText( 0, tr( "Connection" ) ); plviConnection->setExpanded( true ); plviConnection->setFlags( Qt::ItemIsEnabled ); plviConnectionMode = new QTreeWidgetItem( plviConnection ); plviConnectionMode->setText( 0, tr( "Mode" ) ); plviConnectionSettings = new QTreeWidgetItem( plviConnection ); plviConnectionSettings->setText( 0, tr( "Settings" ) ); plviGUI = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviGUI->setText( 0, tr( "GUI" ) ); plviGUI->setExpanded( true ); plviGUI->setFlags( Qt::ItemIsEnabled ); plviGUIGeneral = new QTreeWidgetItem( plviGUI ); plviGUIGeneral->setText( 0, tr( "General" ) ); plviGUITransfer = new QTreeWidgetItem( plviGUI ); plviGUITransfer->setText( 0, tr( "Transfer" ) ); plviGUIChat = new QTreeWidgetItem( plviGUI ); plviGUIChat->setText( 0, tr( "Chat" ) ); plviGUIColors = new QTreeWidgetItem( plviGUI ); plviGUIColors->setText( 0, tr( "Colors" ) ); plviGUICommands = new QTreeWidgetItem( plviGUI ); plviGUICommands->setText( 0, tr( "Commands" ) ); plviGUIMenus = new QTreeWidgetItem( plviGUI ); plviGUIMenus->setText(0, tr( "Menus" ) ); plviGUIClient = new QTreeWidgetItem( plviGUI ); plviGUIClient->setText( 0, tr( "Client" ) ); plviGUIIcons = new QTreeWidgetItem( plviGUI ); plviGUIIcons->setText(0, tr ( "Icons" ) ); plviGUIFilelistBrowser = new QTreeWidgetItem( plviGUI ); plviGUIFilelistBrowser->setText(0, tr( "Filelist browser" ) ); plviSound = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviSound->setText( 0, tr( "Sound" ) ); plviLog = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviLog->setText( 0, tr( "Log" ) ); plviHubLists = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviHubLists->setText( 0, tr( "Hub Lists" ) ); plviSecurity = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviSecurity->setText( 0, tr( "Security" ) ); plviAutoResponse = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviAutoResponse->setText(0, tr( "Auto Responses" ) ); plviOther = new QTreeWidgetItem( TreeWidget_OPTIONTREE ); plviOther->setText(0, tr( "Other" ) ); connect( ToolButton_PHOTO, SIGNAL(clicked()), this, SLOT(slotChangePhoto()) ); connectOptionsTreeWidget(); connect( TabWidget_DCGUI, SIGNAL(currentChanged(int)), this, SLOT(slotTabWidgetDCGUICurrentChanged(int)) ); connect( TabWidget_TRANSFER, SIGNAL(currentChanged(int)), this, SLOT(slotTabWidgetTransferCurrentChanged(int)) ); connect( TabWidget_CONNECTION, SIGNAL(currentChanged(int)), this, SLOT(slotTabWidgetConnectionCurrentChanged(int)) ); connect( TabWidget_GUI, SIGNAL(currentChanged(int)), this, SLOT(slotTabWidgetGUICurrentChanged(int)) ); connect( ToolButton_ADD_USER_MENU_COMMAND, SIGNAL(clicked()), this, SLOT(slotAddUserMenuCommand()) ); connect( ToolButton_EDIT_USER_MENU_COMMAND, SIGNAL(clicked()), this, SLOT(slotEditUserMenuCommand()) ); connect( ToolButton_REMOVE_USER_MENU_COMMAND, SIGNAL(clicked()), this, SLOT(slotRemoveUserMenuCommand()) ); connect( ToolButton_UP_USER_MENU_COMMAND, SIGNAL(clicked()), this, SLOT(slotUpUserMenuCommand()) ); connect( ToolButton_DOWN_USER_MENU_COMMAND, SIGNAL(clicked()), this, SLOT(slotDownUserMenuCommand()) ); connect( TreeWidget_MENU_COMMANDS, SIGNAL(itemSelectionChanged()), this, SLOT(slotUserMenuCommandsSelectionChanged()) ); connect( TreeWidget_MENU_COMMANDS, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), this, SLOT(slotUserMenuCommandsDoubleClicked(QTreeWidgetItem *, int)) ); connect( TreeWidget_CHAT_COMMANDS, SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuUserChatCommands( const QPoint & ))); connect( TreeWidget_AUTO_RESPONSES, SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuAutoResponses( const QPoint & ))); connect( ToolButton_BROWSESOUNDFILECONNECT, SIGNAL(clicked()), this, SLOT(slotBrowseSoundFileConnect()) ); connect( ToolButton_BROWSESOUNDFILEDISCONNECT, SIGNAL(clicked()), this, SLOT(slotBrowseSoundFileDisconnect()) ); connect( ToolButton_BROWSESOUNDFILESEND, SIGNAL(clicked()), this, SLOT(slotBrowseSoundFileSend()) ); connect( ToolButton_BROWSESOUNDFILERECEIVE, SIGNAL(clicked()), this, SLOT(slotBrowseSoundFileReceive()) ); connect( ToolButton_BROWSESOUNDFILEFIRSTRECEIVE, SIGNAL(clicked()), this, SLOT(slotBrowseSoundFileFirstReceive()) ); connect( ToolButton_BROWSESOUNDFILENICKMENTIONED, SIGNAL(clicked()), this, SLOT(slotBrowseSoundFileNickMentioned()) ); connect( ToolButton_PREVIEWSOUNDFILECONNECT, SIGNAL(clicked()), this, SLOT(slotPreviewSoundFileConnect()) ); connect( ToolButton_PREVIEWSOUNDFILEDISCONNECT, SIGNAL(clicked()), this, SLOT(slotPreviewSoundFileDisconnect()) ); connect( ToolButton_PREVIEWSOUNDFILESEND, SIGNAL(clicked()), this, SLOT(slotPreviewSoundFileSend()) ); connect( ToolButton_PREVIEWSOUNDFILERECEIVE, SIGNAL(clicked()), this, SLOT(slotPreviewSoundFileReceive()) ); connect( ToolButton_PREVIEWSOUNDFILEFIRSTRECEIVE, SIGNAL(clicked()), this, SLOT(slotPreviewSoundFileFirstReceive()) ); connect( ToolButton_PREVIEWSOUNDFILENICKMENTIONED, SIGNAL(clicked()), this, SLOT(slotPreviewSoundFileNickMentioned()) ); connect( ToolButton_BROWSESOUNDPLAYER, SIGNAL(clicked()), this, SLOT(slotBrowseSoundPlayer()) ); // Transfer->Folder connect( ToolButton_BROWSEDOWNLOADFOLDER, SIGNAL(clicked()), this, SLOT(slotBrowseDownloadFolder()) ); connect( ToolButton_BROWSEDOWNLOADFINISHEDFOLDER, SIGNAL(clicked()), this, SLOT(slotBrowseDownloadFinishedFolder()) ); connect( ToolButton_CREATESHARELIST, SIGNAL(clicked()), this, SLOT(slotCreateShareList()) ); connect( ToolButton_BROWSEFILELIST, SIGNAL(clicked()), this, SLOT(slotBrowseShareList()) ); connect( ToolButton_SHARELISTINFO, SIGNAL(clicked()), this, SLOT(slotShareListInfo()) ); connect( ToolButton_ADDSHAREDFOLDER, SIGNAL(clicked()), this, SLOT(slotAddSharedFolder()) ); connect( ToolButton_REMOVESHAREDFOLDER, SIGNAL(clicked()), this, SLOT(slotRemoveSharedFolder()) ); connect( ToolButton_EDITSHAREDFOLDER, SIGNAL(clicked()), this, SLOT(slotEditSharedFolder()) ); connect( TreeWidget_SHAREDFOLDERS, SIGNAL(itemDoubleClicked( QTreeWidgetItem *, int )),this, SLOT(slotDoubleClickedSharedFolder( QTreeWidgetItem *, int )) ); connect( TreeWidget_SHAREDFOLDERS, SIGNAL(customContextMenuRequested( const QPoint & )),this, SLOT(slotContextMenuSharedFolder( const QPoint & )) ); connect( TreeWidget_SHAREDFOLDERS, SIGNAL(itemSelectionChanged()), this, SLOT(slotSharedFoldersSelectionChanged()) ); connect( PushButton_TESTHOST, SIGNAL(clicked()), this, SLOT(slotTestHost()) ); connect( PushButton_GETINTERFACE, SIGNAL(clicked()), this, SLOT(slotGetInterface()) ); connect( PushButton_GETINTERNETIP, SIGNAL(clicked()), this, SLOT(slotGetInternetIP()) ); // GUI->General connect( ToolButton_BROWSELANGUAGEFILE, SIGNAL(clicked()), this, SLOT(slotBrowseLanguageFile()) ); connect( ToolButton_SELECTLANGUAGE, SIGNAL(clicked()), this, SLOT(slotSelectLanguage()) ); connect( PushButton_SETTHEME, SIGNAL(clicked()), this, SLOT(slotSetTheme()) ); connect( ToolButton_BROWSEAPPFONT, SIGNAL(clicked()), this, SLOT(slotBrowseAppFont()) ); connect( ToolButton_BROWSEDATAFOLDER, SIGNAL(clicked()), this, SLOT(slotBrowseDataFolder()) ); // GUI->Chat connect( ToolButton_BROWSEBROWSER, SIGNAL(clicked()), this, SLOT(slotBrowseBrowser()) ); connect( ListBox_CHATCOLOR, SIGNAL(itemDoubleClicked(QListWidgetItem *)), this, SLOT(slotDoubleClickedChatColor(QListWidgetItem *)) ); connect( ToolButton_CHAT_BG_COLOR, SIGNAL(clicked()), this, SLOT(slotBackgroundColorDialog()) ); connect( ToolButton_REVERSE_COLORS, SIGNAL(clicked()), this, SLOT(slotReverseChatColors()) ); // LOG->Chat connect( ToolButton_LOGCHAT_NICKNAMEFILTER_ADD, SIGNAL(clicked()), this, SLOT(slotLogChatAddNickNameFilter()) ); connect( ToolButton_LOGCHAT_NICKNAMEFILTER_DEL, SIGNAL(clicked()), this, SLOT(slotLogChatDelNickNameFilter()) ); // connect( ToolButton_BROWSETRANSFERCERT, SIGNAL(clicked()), this, SLOT(slotBrowseTransferCert()) ); connect( ToolButton_BROWSETRANSFERKEY, SIGNAL(clicked()), this, SLOT(slotBrowseTransferKey()) ); connect( ToolButton_BROWSE_DCLIB_PLUGIN_PATH, SIGNAL(clicked()), this, SLOT(slotBrowseDclibPluginFolder()) ); // Hub List connect( ToolButton_ADDHUBLISTURL, SIGNAL(clicked()), this, SLOT(slotAddHubListUrl()) ); connect( ToolButton_EDITHUBLISTURL, SIGNAL(clicked()), this, SLOT(slotEditHubListUrl()) ); connect( ToolButton_REMOVEHUBLISTURL, SIGNAL(clicked()), this, SLOT(slotRemoveHubListUrl()) ); connect( ListWidget_HUBLISTURL, SIGNAL(itemDoubleClicked( QListWidgetItem * )), this, SLOT(slotDoubleClickedHubListUrl( QListWidgetItem * )) ); connect( ListWidget_HUBLISTURL, SIGNAL(customContextMenuRequested( const QPoint & )), this, SLOT(slotContextMenuHubListUrl( const QPoint & )) ); connect( ListWidget_HUBLISTURL, SIGNAL(itemSelectionChanged()), this, SLOT(slotHubListUrlsSelectionChanged()) ); connect( CheckBox_SOUNDDISABLED, SIGNAL(clicked()), this, SLOT(slotDisableSound()) ); connect( ToolButton_BROWSELOGFILE, SIGNAL(clicked()), this, SLOT(slotBrowseLogFile()) ); connect( PushButton_GENERATE_CERT, SIGNAL(clicked()), this, SLOT(slotGenerateKeyCert()) ); // style options ComboBox_THEME->clear(); if ( g_pConfig->GetThemeSupport() ) { QStringList list = QStyleFactory::keys(); if ( list.count() > 0 ) { list.sort(); ComboBox_THEME->addItems(list); list.clear(); } } else { // disable the theme support ComboBox_THEME->setEnabled(false); PushButton_SETTHEME->setEnabled(false); } } /** */ void DCOptions::connectOptionsTreeWidget() { connect( TreeWidget_OPTIONTREE, SIGNAL(currentItemChanged( QTreeWidgetItem *, QTreeWidgetItem * )), this, SLOT(slotTreeWidgetOptionTreeCurrentChanged( QTreeWidgetItem *, QTreeWidgetItem * )) ); } /** */ void DCOptions::disconnectOptionsTreeWidget() { disconnect( TreeWidget_OPTIONTREE, SIGNAL(currentItemChanged( QTreeWidgetItem *, QTreeWidgetItem * )), this, SLOT(slotTreeWidgetOptionTreeCurrentChanged( QTreeWidgetItem *, QTreeWidgetItem * )) ); } /** */ void DCOptions::accept() { if ( LineEdit_DOWNLOADFOLDER->text().isEmpty() ) { QMessageBox::critical( this, "Valknut", tr("You must set a Download Folder!")); return; } if ( LineEdit_DOWNLOADFINISHEDFOLDER->text() == LineEdit_DOWNLOADFOLDER->text() ) { QMessageBox::critical( this, "Valknut", tr("Download Finished Folder and Download Folder must be different!")); return; } // check active mode settings if ( RadioButton_ACTIVEMODE->isChecked() ) { // check fake host if ( RadioButton_IPHOSTNAME->isChecked() && (LineEdit_IP->text().isEmpty()) ) { QMessageBox::critical( this, "Valknut", tr("You must enter a valid 'Fake Host'!")); return; } // check interface if ( RadioButton_INTERFACE->isChecked() && (LineEdit_IP->text().isEmpty()) ) { QMessageBox::critical( this, "Valknut", tr("You must enter a valid interface!")); return; } #ifndef WIN32 if ( (SpinBox_TCPLISTENPORT->value() < 1024) || (SpinBox_CRYPTO_PORT->value() < 1024) || (SpinBox_UDPLISTENPORT->value() < 1024) ) { QMessageBox::critical( this, "Valknut", tr("You have set Valknut to listen on a port < 1024! You can run Valknut only as root in active mode!")); } #endif } // no nick is given if ( LineEdit_NICK->text().isEmpty() ) { QMessageBox::critical( this, "Valknut", tr("You must enter a valid nick!")); return; } // no search nick is given if ( (LineEdit_SEARCHNICK->text().isEmpty()) || (LineEdit_SEARCHNICK->text() == "nick_search") ) { QMessageBox::critical( this, "Valknut", tr("You must enter a valid search nick!")); return; } if ( SpinBox_TCPLISTENPORT->value() == SpinBox_CRYPTO_PORT->value() ) { QMessageBox::critical( this, "Valknut", tr("Standard and encrypted port must be different.") ); return; } /* Warn about using certain options */ QString recommended, notrecommended; if ( !CheckBox_DESCRIPTION_TAG->isChecked() && g_pConfig->GetDescriptionTag() ) { recommended += CheckBox_DESCRIPTION_TAG->text(); recommended += '\n'; } if ( !CheckBox_EXT_HUB_COUNT->isChecked() && g_pConfig->GetUseExtendedHubCount() ) { recommended += CheckBox_EXT_HUB_COUNT->text(); recommended += '\n'; } if ( CheckBox_DISABLEHASHLIST->isChecked() && !g_pConfig->GetDisableHashList() ) { notrecommended += CheckBox_DISABLEHASHLIST->text(); notrecommended += '\n'; } if ( CheckBox_ENABLE_ZPIPE->isChecked() && !g_pConfig->GetZPipeEnabled() ) { notrecommended += CheckBox_ENABLE_ZPIPE->text(); notrecommended += '\n'; } /* possibly also check compressed and encrypted transfers, they are not very useful */ /* the auto responder really should not have been added but it is GUI only so unlikely to break anything */ if ( !recommended.isEmpty() || !notrecommended.isEmpty() ) { QString msg; if ( !recommended.isEmpty() ) { msg += tr("These options are recommended:\n"); msg += recommended; } if ( !notrecommended.isEmpty() ) { msg += "\n"; msg += tr("These options are not recommended:\n"); msg += notrecommended; } if ( QMessageBox::warning( this, tr("Settings Problems"), msg, QMessageBox::Ignore | QMessageBox::Cancel, QMessageBox::Ignore ) == QMessageBox::Cancel ) { return; } } if ( GroupBox_APPFONT->isChecked() ) { if ( (!(LineEdit_APPFONT->text().isEmpty())) && (LineEdit_APPFONT->text() != g_pConfig->GetAppFont()) ) { QFont font; if ( font.fromString(LineEdit_APPFONT->text()) ) { QApplication::setFont(font); } } } QDialog::accept(); } /** */ void DCOptions::SetUserPhoto( QString filename ) { QImage im; if ( !filename.isEmpty() ) { if ( im.load(filename) ) { if ( (im.width() > 32) || (im.height() > 32) ) { im = im.scaled(32,32,Qt::KeepAspectRatio,Qt::SmoothTransformation); } if ( im.depth() > 8 ) im = im.convertToFormat(QImage::Format_Indexed8); if ( im.numColors() > 256 ) im.setNumColors(256); if ( im.save( (g_pConfig->GetConfigPath() + "photo.png").Data(), "PNG", 0 ) == false ) { QMessageBox::critical( this, "Valknut", tr("Can't save Image!") ); } else { ToolButton_PHOTO->setIcon( QIcon(QPixmap::fromImage(im)) ); // ToolButton_PHOTO->setTextLabel(filename); ToolButton_PHOTO->setText((g_pConfig->GetConfigPath() + "photo.png").Data()); } } else { QMessageBox::critical( this, "Valknut", tr("Can't load Image!") ); } } } /** */ void DCOptions::slotChangePhoto() { QString file = QFileDialog::getOpenFileName( this, tr("Select a 64x64 Photo"), ToolButton_PHOTO->text() ); if ( file.isEmpty() ) { ToolButton_PHOTO->setIcon( QIcon() ); ToolButton_PHOTO->setText( QString() ); } else { SetUserPhoto(file); } } /** */ void DCOptions::slotDoubleClickedChatColor( QListWidgetItem * item ) { QPixmap p(10,10); QColor color(item->icon().pixmap(10,10).toImage().pixel(0,0)); color = QColorDialog::getColor(color); if ( color.isValid() ) { p.fill(color); item->setIcon(p); } } /** */ void DCOptions::slotBackgroundColorDialog() { QPixmap pixmap = ToolButton_CHAT_BG_COLOR->icon().pixmap( 10,10 ); QColor color = pixmap.toImage().pixel(0,0); color = QColorDialog::getColor(color); if ( color.isValid() ) { pixmap.fill(color); ToolButton_CHAT_BG_COLOR->setIcon(QIcon(pixmap)); } } /** */ void DCOptions::slotReverseChatColors() { QColor color; QPixmap p(10,10); for ( int i = 0; i < ListBox_CHATCOLOR->count(); ++i ) { color = QColor(ListBox_CHATCOLOR->item(i)->icon().pixmap(10,10).toImage().pixel(0,0)); color.setRed( 255 - color.red() ); color.setGreen( 255 - color.green() ); color.setBlue( 255 - color.blue() ); p.fill(color); ListBox_CHATCOLOR->item(i)->setIcon(QIcon(p)); } } /** */ void DCOptions::slotLogChatAddNickNameFilter() { bool ok = false; QString text = QInputDialog::getText( this, tr("Add new nick name filter"), tr("Please enter a nick" ), QLineEdit::Normal, QString(), &ok ); if ( ok && !text.isEmpty() ) { if ( (ListBox_LOGCHAT_NICKNAMEFILTER_LIST->findItems( text, Qt::MatchExactly )).size() == 0 ) { new QListWidgetItem( text, ListBox_LOGCHAT_NICKNAMEFILTER_LIST ); } } } /** */ void DCOptions::slotLogChatDelNickNameFilter() { int i = ListBox_LOGCHAT_NICKNAMEFILTER_LIST->currentRow(); if ( i >= 0 ) { QListWidgetItem * item = ListBox_LOGCHAT_NICKNAMEFILTER_LIST->takeItem(i); if ( item != 0 ) { delete item; } } } /** */ void DCOptions::slotTestHost() { QString sip; CString errmsg; QString s; QString failmsg; if ( RadioButton_IPHOSTNAME->isChecked() ) { s = LineEdit_IP->text(); s.remove(' '); LineEdit_IP->setText(s); if ( !s.isEmpty() ) { sip = CNetAddr::GetHostI4( s.toAscii().constData(), &errmsg ).Data(); } if ( sip.isEmpty() ) { failmsg = tr("Can't get Host IP!"); if ( errmsg.NotEmpty() ) { failmsg += "\n\n"; failmsg += errmsg.Data(); } QMessageBox::critical( this, "Valknut", failmsg ); } else { QMessageBox::information( this, "Valknut", tr("Host IP: ")+sip ); } } else { sip = CNetAddr::GetInterfaceI4( LineEdit_IP->text().toAscii().constData(), &errmsg ).Data(); if ( sip.isEmpty() ) { failmsg = tr("Can't get interface IP!"); if ( errmsg.NotEmpty() ) { failmsg += "\n\n"; failmsg += errmsg.Data(); } QMessageBox::critical( this, "Valknut", failmsg ); } else { QMessageBox::information( this, "Valknut", tr("Interface IP: ")+sip ); } } } /** */ void DCOptions::slotGetInterface() { CList interfacelist; CString errmsg; CString * s; QStringList lst; long res = CNetAddr::GetInterfaceList( &interfacelist, &errmsg ); if ( res > 0 ) { s = 0; while( (s=interfacelist.Next(s)) != 0 ) { lst << s->Data(); } bool ok = false; QString res = QInputDialog::getItem( this, tr( "Interface List" ), tr( "Please select an interface" ), lst, 1, true, &ok ); if ( ok ) { LineEdit_IP->setText(res); } } else { QString failmsg = tr("No interfaces found!"); if ( (res < 0) && errmsg.NotEmpty() ) { failmsg += "\n\n"; failmsg += errmsg.Data(); } QMessageBox::information( this, "Valknut", failmsg ); } } /** */ void DCOptions::slotGetInternetIP() { PushButton_GETINTERNETIP->setEnabled(false); QHttpRequestHeader header( "GET", "/ip.php" ); header.setValue( "Host", "wxdcgui.sourceforge.net" ); QString useragent = QString("Valknut/") + PACKAGE_VERSION; //printf("User-Agent=%s\n", useragent.toAscii().constData()); header.setValue( "User-Agent", useragent ); m_pHttp = new QHttp(); connect( m_pHttp, SIGNAL(done(bool)), this, SLOT(slotGotInternetIP(bool)) ); m_pHttp->setHost( "wxdcgui.sourceforge.net" ); m_pHttp->request( header ); } /** */ void DCOptions::slotGotInternetIP( bool error ) { if ( error ) { QMessageBox::warning( this, tr("Error getting IP"), m_pHttp->errorString() ); } else { QString html = QString(m_pHttp->readAll()); int start = html.indexOf("<ip>"); int end = html.indexOf("</ip>",start); if ( ( start == -1 ) || ( end < start ) ) { QMessageBox::warning( this, tr("Get Internet IP"), tr("Unexpected response from ") + "http://wxdcgui.sourceforge.net" ); } else { start += 10; QString ip = html.mid( start, end - start ); if ( QHostAddress().setAddress(ip) ) { LineEdit_IP->setText(ip); } else { QMessageBox::warning( this, tr("Get Internet IP"), ip + tr(" does not look valid") ); } } } delete m_pHttp; m_pHttp = 0; PushButton_GETINTERNETIP->setEnabled(true); } /** */ void DCOptions::slotDisableSound() { const bool b = !CheckBox_SOUNDDISABLED->isChecked(); CheckBox_SOUNDDISABLEDAWAY->setEnabled(b); GroupBox_EXTERNALPLAYER->setEnabled(b); GroupBox_SOUND_FILES->setEnabled(b); } /** */ void DCOptions::slotBrowseSoundPlayer() { QString file = QFileDialog::getOpenFileName( this, tr("Select sound player"), LineEdit_EXTERNALPLAYER->text() ); if( !file.isEmpty() ) { LineEdit_EXTERNALPLAYER->setText(file); } } /** */ void DCOptions::slotBrowseTransferCert() { QString file = QFileDialog::getSaveFileName( this, tr("Select transfer cert"), LineEdit_TRANSFERCERT->text(), QString(), 0, QFileDialog::DontConfirmOverwrite ); if( !file.isEmpty() ) { LineEdit_TRANSFERCERT->setText(file); } } /** */ void DCOptions::slotBrowseTransferKey() { QString file = QFileDialog::getSaveFileName( this, tr("Select transfer key"), LineEdit_TRANSFERKEY->text(), QString(), 0, QFileDialog::DontConfirmOverwrite ); if( !file.isEmpty() ) { LineEdit_TRANSFERKEY->setText(file); } } /** */ void DCOptions::slotBrowseDclibPluginFolder() { QString dir = QFileDialog::getExistingDirectory( this, tr("Select plugin folder"), LineEdit_DCLIB_PLUGIN_PATH->text() ); if ( !dir.isEmpty() ) { LineEdit_DCLIB_PLUGIN_PATH->setText(dir); } } /** */ void DCOptions::slotBrowseBrowser() { QString file = QFileDialog::getOpenFileName( this, tr("Select a browser"), LineEdit_BROWSER->text() ); if( !file.isEmpty() ) { LineEdit_BROWSER->setText(file); } } /** */ void DCOptions::BrowseSoundFile( eUserSound usersound ) { QString current; QString filter = tr("au") + " (*.au);;" + tr("wav") + " (*.wav);;" + tr("All Files") + " (*)"; switch(usersound) { case eusCONNECT: current = LineEdit_SOUNDFILECONNECT->text(); break; case eusDISCONNECT: current = LineEdit_SOUNDFILEDISCONNECT->text(); break; case eusSEND: current = LineEdit_SOUNDFILESEND->text(); break; case eusRECEIVE: current = LineEdit_SOUNDFILERECEIVE->text(); break; case eusFIRSTRECEIVE: current = LineEdit_SOUNDFILEFIRSTRECEIVE->text(); break; case eusNICKMENTIONED: current = LineEdit_SOUNDFILENICKMENTIONED->text(); break; default: break; } QString file = QFileDialog::getOpenFileName( this, tr("Select sound file"), current, filter ); if ( !file.isEmpty() ) { switch(usersound) { case eusCONNECT: LineEdit_SOUNDFILECONNECT->setText(file); break; case eusDISCONNECT: LineEdit_SOUNDFILEDISCONNECT->setText(file); break; case eusSEND: LineEdit_SOUNDFILESEND->setText(file); break; case eusRECEIVE: LineEdit_SOUNDFILERECEIVE->setText(file); break; case eusFIRSTRECEIVE: LineEdit_SOUNDFILEFIRSTRECEIVE->setText(file); break; case eusNICKMENTIONED: LineEdit_SOUNDFILENICKMENTIONED->setText(file); break; default: break; } } } /** */ void DCOptions::PreviewSoundFile( eUserSound usersound ) { QString file; switch(usersound) { case eusCONNECT: file = LineEdit_SOUNDFILECONNECT->text(); break; case eusDISCONNECT: file = LineEdit_SOUNDFILEDISCONNECT->text(); break; case eusSEND: file = LineEdit_SOUNDFILESEND->text(); break; case eusRECEIVE: file = LineEdit_SOUNDFILERECEIVE->text(); break; case eusFIRSTRECEIVE: file = LineEdit_SOUNDFILEFIRSTRECEIVE->text(); break; case eusNICKMENTIONED: file = LineEdit_SOUNDFILENICKMENTIONED->text(); break; default: break; } g_pConfig->PlaySound( file ); } /** */ void DCOptions::slotBrowseDownloadFolder() { QString dir = QFileDialog::getExistingDirectory ( this, tr("Select download folder"), LineEdit_DOWNLOADFOLDER->text() ); if ( !dir.isEmpty() ) { LineEdit_DOWNLOADFOLDER->setText(dir); } } /** */ void DCOptions::slotBrowseDownloadFinishedFolder() { QString dir = QFileDialog::getExistingDirectory ( this, tr("Select download finished folder"), LineEdit_DOWNLOADFINISHEDFOLDER->text() ); if ( !dir.isEmpty() ) { LineEdit_DOWNLOADFINISHEDFOLDER->setText(dir); } } /** */ void DCOptions::slotBrowseDataFolder() { QString dir = QFileDialog::getExistingDirectory ( this, tr("Select data folder"), LineEdit_DATAFOLDER->text() ); if ( !dir.isEmpty() ) { LineEdit_DATAFOLDER->setText(dir); } } /** */ void DCOptions::slotBrowseShareList() { g_pTransferView->NewLocalFileBrowser(true); } /** */ void DCOptions::slotBrowseLogFile() { QString logfile = QFileDialog::getSaveFileName ( this, tr("Select log file"), LineEdit_LOGFILENAME->text() ); if( !logfile.isEmpty() ) { LineEdit_LOGFILENAME->setText(logfile); } } /** */ void DCOptions::slotAddSharedFolder() { CDir di; CString s; int i; QString dir = QFileDialog::getExistingDirectory ( this, tr("Select share folder") ); if ( !dir.isEmpty() ) { if ( TreeWidget_SHAREDFOLDERS->findItems( dir, Qt::MatchExactly, 0 ).size() == 0 ) { di.SetPath(dir.toAscii().constData()); s = di.Path(); i = 1; while( TreeWidget_SHAREDFOLDERS->findItems( di.DirName().Data(), Qt::MatchExactly, 1 ).size() != 0 ) { di.SetPath( s + CString::number(i) ); i++; } QTreeWidgetItem * item = new QTreeWidgetItem( TreeWidget_SHAREDFOLDERS ); item->setText( 0, dir ); item->setText( 1, di.DirName().Data() ); } } } /** */ void DCOptions::slotRemoveSharedFolder() { QTreeWidgetItem * item = TreeWidget_SHAREDFOLDERS->currentItem(); if ( item ) { TreeWidget_SHAREDFOLDERS->takeTopLevelItem( TreeWidget_SHAREDFOLDERS->indexOfTopLevelItem( item ) ); delete item; } } /** */ void DCOptions::slotEditSharedFolder() { editSharedFolder( TreeWidget_SHAREDFOLDERS->currentItem() ); } /** */ void DCOptions::editSharedFolder( QTreeWidgetItem * item ) { if ( item ) { QDialog * dlg = new QDialog(this); Ui::DCDialogEditSharePath ui; ui.setupUi(dlg); ui.LineEdit_PATH->setText( item->text(0) ); ui.LineEdit_ALIAS->setText( item->text(1) ); if ( dlg->exec() == QDialog::Accepted ) { item->setText(0,ui.LineEdit_PATH->text()); QString s = ui.LineEdit_ALIAS->text(); s.remove( '\\' ); s.remove( '/' ); item->setText(1,s); } delete dlg; } } /** */ void DCOptions::slotDoubleClickedSharedFolder( QTreeWidgetItem * item, int /* column */ ) { if ( item ) // always true since signal is only emitted on valid items { editSharedFolder( item ); } else { slotAddSharedFolder(); } } /** */ void DCOptions::slotContextMenuSharedFolder( const QPoint & pos ) { QMenu * m = new QMenu(this); QTreeWidgetItem * item = TreeWidget_SHAREDFOLDERS->itemAt(pos); bool enabled = (item != 0); QAction * add = DCMenuHandler::addAction( m, emiADD ); QAction * edit = DCMenuHandler::addAction( m, emiEDIT, enabled ); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE, enabled ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } else if ( chosen == add ) { slotAddSharedFolder(); } else if ( chosen == edit ) { editSharedFolder( item ); } else if ( chosen == remove ) { delete item; } } /** */ void DCOptions::slotSharedFoldersSelectionChanged() { if ( TreeWidget_SHAREDFOLDERS->selectedItems().size() == 1 ) { ToolButton_REMOVESHAREDFOLDER->setEnabled(true); ToolButton_EDITSHAREDFOLDER->setEnabled(true); } else { ToolButton_REMOVESHAREDFOLDER->setEnabled(false); ToolButton_EDITSHAREDFOLDER->setEnabled(false); } } /** */ void DCOptions::SetValues() { int i; CList list; DCConfigShareFolder * csf; QTreeWidgetItem * qtwitem; // identify LineEdit_NICK->setText(g_pConfig->GetNick().Data()); LineEdit_SEARCHNICK->setText(g_pConfig->GetSearchNick().Data()); LineEdit_EMAIL->setText(g_pConfig->GetEMail(true).Data()); CheckBox_ANTISPAM->setChecked(g_pConfig->GetAntiSpam()); LineEdit_DESCRIPTION->setText(g_pConfig->GetDescription(true).Data()); CheckBox_DESCRIPTION_TAG->setChecked(g_pConfig->GetDescriptionTag()); CheckBox_EXT_HUB_COUNT->setChecked(g_pConfig->GetUseExtendedHubCount()); LineEdit_AWAYPREFIX->setText(g_pConfig->GetAwayPrefix().Data()); SetUserPhoto(g_pConfig->GetUserPhotoFileName()); i = ComboBox_SPEED->findText( QString::fromAscii(g_pConfig->GetSpeed().Data()) ); if ( i != -1 ) { ComboBox_SPEED->setCurrentIndex(i); } i = ComboBox_APPLICATION_ICONS->findText( g_pConfig->GetApplicationIconTheme() ); if ( i != -1 ) { ComboBox_APPLICATION_ICONS->setCurrentIndex(i); } i = ComboBox_EMOTICONS->findText( g_pConfig->GetEmoticonTheme() ); if ( i != -1 ) { ComboBox_EMOTICONS->setCurrentIndex(i); } i = ComboBox_USERLIST_ICONS->findText( g_pConfig->GetUserListIconTheme() ); if ( i != -1 ) { ComboBox_USERLIST_ICONS->setCurrentIndex(i); } TextEdit_AWAYMESSAGE->setText(QString(g_pConfig->GetAwayMessage().Data()).remove( "\r" )); // transfer->folder LineEdit_DOWNLOADFOLDER->setText(g_pConfig->GetDownloadFolder().Data()); LineEdit_DOWNLOADFINISHEDFOLDER->setText(g_pConfig->GetDownloadFinishedFolder().Data()); SpinBox_MIN_SEG_SIZE->setValue( (int) g_pConfig->GetMinSegSize()/1048576 ); // save shared folders TreeWidget_SHAREDFOLDERS->clear(); g_pConfig->GetSharedFolders(&list); csf = 0; while( (csf=list.Next(csf)) != 0 ) { QTreeWidgetItem * item = new QTreeWidgetItem( TreeWidget_SHAREDFOLDERS ); item->setText( 0, csf->m_sPath.Data() ); item->setText( 1, csf->m_sAlias.Data() ); } slotSharedFoldersSelectionChanged(); g_pConfig->GetUserMenuCommands(&usercommands); for ( QMap::const_iterator it = usercommands.constBegin(); it != usercommands.constEnd(); ++it ) { qtwitem = new QTreeWidgetItem( TreeWidget_MENU_COMMANDS ); qtwitem->setText( 0, it.value()->m_sName ); qtwitem->setText( 1, it.value()->m_sCommand ); } slotUserMenuCommandsSelectionChanged(); QList ucclist; g_pConfig->GetUserChatCommands(&ucclist); for ( QList::const_iterator it = ucclist.constBegin(); it != ucclist.constEnd(); ++it ) { qtwitem = new QTreeWidgetItem( TreeWidget_CHAT_COMMANDS ); qtwitem->setText( 0, (*it)->m_sName ); qtwitem->setText( 1, (*it)->m_sCommand ); qtwitem->setFlags( qtwitem->flags() | Qt::ItemIsEditable ); delete *it; } ucclist.clear(); CheckBox_AUTORECREATESHARELIST->setChecked(g_pConfig->GetAutoRecreateShareList()); CheckBox_DONTSHAREDOTFILES->setChecked(g_pConfig->GetDontShareDotFiles()); // transfer->settings SpinBox_SAVEDOWNLOADQUEUETIME->setValue( g_pConfig->GetDownloadQueueTime() ); SpinBox_USERUPLOADSLOTS->setValue(g_pConfig->GetUserUploadSlots()); CheckBox_DYNAMICUPLOADRATE->setChecked(g_pConfig->GetDynamicUploadRate()); SpinBox_MAXUPLOADRATE->setValue( (g_pConfig->GetMaxUploadRate())/1024.0 ); SpinBox_MAXDOWNLOADRATE->setValue( (g_pConfig->GetMaxDownloadRate())/1024.0 ); SpinBox_MAXSIMULTANEOUSUPLOADS->setValue( g_pConfig->GetMaxUpload() ); SpinBox_TRANSFERRESENDTIMEOUT->setValue(g_pConfig->GetTransferResendTimeout()); SpinBox_TRANSFERRESPONSETIMEOUT->setValue(g_pConfig->GetTransferResponseTimeout()); SpinBox_AUTOSEARCHINTERVAL->setValue(g_pConfig->GetAutoSearchInterval()); SpinBox_SMALLFILESIZE->setValue(g_pConfig->GetSmallFileSize()); SpinBox_EXTRA_SLOTS_RATE->setValue( (int) g_pConfig->GetExtraSlotsRate()/1024 ); SpinBox_MAX_EXTRA_SLOTS->setValue( g_pConfig->GetMaxExtraSlots() ); switch ( g_pConfig->GetHubOfflineTransferClose() ) { case ectNONE: RadioButton_NONE->setChecked(true); break; case ectUPLD: RadioButton_UPLOAD->setChecked(true); break; case ectDLD: RadioButton_DOWNLOAD->setChecked(true); break; case ectBOTH: RadioButton_BOTH->setChecked(true); break; } CheckBox_TRANSFERAUTOSEARCH->setChecked(g_pConfig->GetTransferAutoSearch()); CheckBox_DISABLEHASHLIST->setChecked(g_pConfig->GetDisableHashList()); CheckBox_COMPRESSEDTRANSFERS->setChecked(g_pConfig->GetCompressedTransfers()); SpinBox_RECREATESHARELISTTIME->setValue(g_pConfig->GetRecreateShareListTime()); // connection->mode if ( g_pConfig->GetMode(true) == ecmPASSIVE ) { RadioButton_PASSIVEMODE->setChecked(true); } else { RadioButton_ACTIVEMODE->setChecked(true); } if ( g_pConfig->GetExternalIP() ) { RadioButton_IPHOSTNAME->setChecked(true); } else { RadioButton_INTERFACE->setChecked(true); } LineEdit_IP->setText(g_pConfig->GetHost().Data()); LineEdit_LISTENIP->setText(g_pConfig->GetListenHost().Data()); SpinBox_TCPLISTENPORT->setValue( g_pConfig->GetTCPListenPort() ); SpinBox_CRYPTO_PORT->setValue( g_pConfig->GetCryptoListenPort() ); SpinBox_UDPLISTENPORT->setValue( g_pConfig->GetUDPListenPort() ); CheckBox_SENDMESSAGEONACTIVEMODEREQUEST->setChecked( g_pConfig->GetSendMessageOnActiveModeRequest() ); // connection->settings SpinBox_RECONNECTCOUNT->setValue(g_pConfig->GetReconnectCount()); SpinBox_RECONNECTTIMEOUT->setValue(g_pConfig->GetReconnectTimeout()); CheckBox_FORCEMOVEENABLED->setChecked(g_pConfig->GetForceMoveEnabled()); if ( g_pConfig->GetCheckPrivateAddressSpace() ) { ComboBox_PRIVATEADDRESSSPACE->setCurrentIndex(1); } else if ( g_pConfig->GetPrivateAddressSpaceOnly() ) { ComboBox_PRIVATEADDRESSSPACE->setCurrentIndex(2); } else { ComboBox_PRIVATEADDRESSSPACE->setCurrentIndex(0); } // gui->general LineEdit_LANGUAGEFILE->setText( g_pConfig->GetLanguageFile() ); i = ComboBox_THEME->findText( g_pConfig->GetTheme() ); if ( i != -1 ) { ComboBox_THEME->setCurrentIndex(i); } else { // if theme not in list, pick the current theme #if defined(Q_OS_MACX) i = ComboBox_THEME->findText( "mac", Qt::MatchStartsWith ); #else i = ComboBox_THEME->findText( DCGuiUtils::DetectAppStyleKey() ); #endif if ( i != -1 ) { ComboBox_THEME->setCurrentIndex(i); } } m_sTestedTheme = ComboBox_THEME->currentText(); switch(g_pConfig->GetUnit()) { case euBYTE: RadioButton_UNITBYTE->setChecked(true); break; case euKBYTE: RadioButton_UNITKBYTE->setChecked(true); break; case euMBYTE: RadioButton_UNITMBYTE->setChecked(true); break; case euGBYTE: RadioButton_UNITGBYTE->setChecked(true); break; default: RadioButton_UNITAUTO->setChecked(true); break; } LineEdit_APPFONT->setText( g_pConfig->GetAppFont() ); GroupBox_APPFONT->setChecked( g_pConfig->GetUseCustomFont() ); LineEdit_DATAFOLDER->setText(g_pConfig->GetValknutDataPath()); CheckBox_SHOWSTATUSMESSAGE->setChecked( g_pConfig->GetShowStatusMessage() ); CheckBox_QUERYONEXIT->setChecked( g_pConfig->GetQueryOnExit() ); CheckBox_QUERYONFILEDELETE->setChecked( g_pConfig->GetQueryOnFileDelete() ); // gui->transfer CheckBox_TV_PERCENTCHUNK->setChecked(g_pConfig->GetTransferViewOptions(etvoCHUNKPERCENT)); CheckBox_TV_PERCENTFILE->setChecked(g_pConfig->GetTransferViewOptions(etvoFILEPERCENT)); CheckBox_TV_CHUNKSIZE->setChecked(g_pConfig->GetTransferViewOptions(etvoCHUNKSIZE)); CheckBox_TV_FILESIZE->setChecked(g_pConfig->GetTransferViewOptions(etvoFILESIZE)); CheckBox_TV_DOWNLOADRATESINGLE->setChecked(g_pConfig->GetTransferViewOptions(etvoDOWNLOADRATESINGLE)); CheckBox_TV_ELAPSEDTIMESINGLE->setChecked(g_pConfig->GetTransferViewOptions(etvoELAPSEDTIMESINGLE)); CheckBox_TV_DOWNLOADRATEMULTI->setChecked(g_pConfig->GetTransferViewOptions(etvoDOWNLOADRATEMULTI)); CheckBox_TV_ELAPSEDTIMEMULTI->setChecked(g_pConfig->GetTransferViewOptions(etvoELAPSEDTIMEMULTI)); // gui->chat CheckBox_OPENPRIVATECHATWINDOW->setChecked(g_pConfig->GetOpenPrivateChatWindow()); CheckBox_SHOWCHATINTAB->setChecked(g_pConfig->GetShowChatInTab()); CheckBox_SENDHIDEPRIVATECHATTOPUBLICCHAT->setChecked( g_pConfig->GetSendHidePrivateChatToPublicChat()); CheckBox_EMOTICONS->setChecked(g_pConfig->GetEnableEmoticons()); CheckBox_SHOWCHATSENDBUTTON->setChecked(g_pConfig->GetShowChatSendButton()); CheckBox_CHATSHOWJOINSANDPARTS->setChecked(g_pConfig->GetChatShowJoinsAndParts()); CheckBox_CHATSHOWJOINSANDPARTSONLYFAV->setChecked(g_pConfig->GetChatShowJoinsAndPartsOnlyFav()); CheckBox_CHATRECVFROMOFFLINE->setChecked(g_pConfig->GetChatRecvFromOffline()); CheckBox_CHATSENDTOOFFLINE->setChecked(g_pConfig->GetChatSendToOffline()); SpinBox_CHATMAXPARAGRAPH->setValue(g_pConfig->GetChatMaxParagraph()); SpinBox_CHATMESSAGEMAXLINES->setValue( g_pConfig->GetChatMessageMaxLines() ); LineEdit_SUPPRESS_NICKS->setText( g_pConfig->GetSuppressedNicks() ); CheckBox_SENDUNKNOWNCOMMANDS->setChecked(g_pConfig->GetSendUnknownCommandsAsChat()); LineEdit_ALLOWED_UNKNOWN_COMMANDS->setText(g_pConfig->GetAllowedUnknownCommands()); ComboBox_SENDCHAT->setCurrentIndex(g_pConfig->GetSendChat()); GroupBox_CUSTOM_BROWSER->setChecked(g_pConfig->GetCustomBrowser()); LineEdit_BROWSER->setText(g_pConfig->GetBrowser()); QColor c; QPixmap p(10,10); c.setNamedColor(g_pConfig->GetChatColor(eccCHATTIMESTAMP)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Chat Timestamp"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccCHATLOCALNICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Chat Local Nick"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccCHATLOCALTEXT)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Chat Local Text"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccCHATREMOTENICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Chat Remote Nick"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccCHATREMOTETEXT)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Chat Remote Text"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccCHATSTATUSNICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Chat Status Nick"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccCHATSTATUSTEXT)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Chat Status Text"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICCHATTIMESTAMP)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Chat Timestamp"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICCHATLOCALNICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Chat Local Nick"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICCHATLOCALTEXT)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Chat Local Text"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICCHATREMOTENICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Chat Remote Nick"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICCHATREMOTETEXT)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Chat Remote Text"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICCHATSTATUSNICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Chat Status Nick"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICCHATSTATUSTEXT)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Chat Status Text"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICPRIVATECHATNICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Private Chat Nick"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICPRIVATECHATTEXT)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Private Chat Text"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccCHATSAY)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Chat Say"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccPUBLICCHATMENICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Public Chat ME Nick"), ListBox_CHATCOLOR ); c.setNamedColor(g_pConfig->GetChatColor(eccOPNICK)); p.fill(c); new QListWidgetItem( QIcon(p), tr("Operator Nick"), ListBox_CHATCOLOR ); GroupBox_CHAT_BACKGROUND->setChecked(g_pConfig->GetChatBackgroundColorEnabled()); c.setNamedColor(g_pConfig->GetChatBackgroundColor()); p.fill(c); ToolButton_CHAT_BG_COLOR->setIcon(QIcon(p)); CheckBox_ALT_ROW_COLORS->setChecked( g_pConfig->GetAlternatingRowColors() ); // gui->client ComboBox_OPEN_CLIENT_WINDOWS_HOW->setCurrentIndex(g_pConfig->GetOpenClientWindows()); CheckBox_USERLISTRIGHTALIGNMENT->setChecked(g_pConfig->GetUserListRightAlignment()); CheckBox_AUTOAWAYMODE->setChecked(g_pConfig->GetAutoAwayMode()); SpinBox_AUTOAWAYTIME->setValue(g_pConfig->GetAutoAwayTime()); ComboBox_DOUBLECLICK->setCurrentIndex(g_pConfig->GetDoubleClickAction()); // sound CheckBox_SOUNDDISABLED->setChecked(g_pConfig->GetSoundDisabled()); CheckBox_SOUNDDISABLEDAWAY->setChecked(g_pConfig->GetSoundDisabledAway()); GroupBox_EXTERNALPLAYER->setChecked(g_pConfig->GetExternalSoundPlayer()); LineEdit_EXTERNALPLAYER->setText( g_pConfig->GetExternalPlayer() ); LineEdit_SOUNDFILECONNECT->setText( g_pConfig->GetSoundFile(eusCONNECT) ); LineEdit_SOUNDFILEDISCONNECT->setText( g_pConfig->GetSoundFile(eusDISCONNECT) ); LineEdit_SOUNDFILESEND->setText( g_pConfig->GetSoundFile(eusSEND) ); LineEdit_SOUNDFILERECEIVE->setText( g_pConfig->GetSoundFile(eusRECEIVE) ); LineEdit_SOUNDFILEFIRSTRECEIVE->setText( g_pConfig->GetSoundFile(eusFIRSTRECEIVE) ); LineEdit_SOUNDFILENICKMENTIONED->setText( g_pConfig->GetSoundFile(eusNICKMENTIONED) ); GroupBox_SOUNDPLAYCONNECT->setChecked(g_pConfig->GetSoundEnabled(eusCONNECT)); GroupBox_SOUNDPLAYDISCONNECT->setChecked(g_pConfig->GetSoundEnabled(eusDISCONNECT)); GroupBox_SOUNDPLAYSEND->setChecked(g_pConfig->GetSoundEnabled(eusSEND)); GroupBox_SOUNDPLAYRECEIVE->setChecked(g_pConfig->GetSoundEnabled(eusRECEIVE)); GroupBox_SOUNDPLAYFIRSTRECEIVE->setChecked(g_pConfig->GetSoundEnabled(eusFIRSTRECEIVE)); GroupBox_SOUNDPLAYNICKMENTIONED->setChecked(g_pConfig->GetSoundEnabled(eusNICKMENTIONED)); // log CheckBox_LOGFILE->setChecked(g_pConfig->GetLogFile()); CheckBox_LOGDOWNLOADS->setChecked(g_pConfig->GetLogFinishedDownloads()); CheckBox_LOGUPLOADS->setChecked(g_pConfig->GetLogFinishedUploads()); CheckBox_LOGDETAILS->setChecked(g_pConfig->GetLogDetails()); LineEdit_LOGFILENAME->setText( g_pConfig->GetLogFileName().Data() ); CheckBox_TIMESTAMPPRIVATECHAT->setChecked(g_pConfig->GetTimeStamp(etsPRIVATECHAT)); CheckBox_TIMESTAMPHUBCHAT->setChecked(g_pConfig->GetTimeStamp(etsHUBCHAT)); GroupBox_CHAT_LOGGING->setChecked( g_pConfig->GetLogChatOption(elcoENABLELOGGING) ); CheckBox_LOGCHAT_APPENDDATE->setChecked( g_pConfig->GetLogChatOption(elcoAPPENDDATE) ); CheckBox_LOGCHAT_APPENDHUBNAME->setChecked( g_pConfig->GetLogChatOption(elcoAPPENDHUBNAME) ); CheckBox_LOGCHAT_APPENDHUBHOST->setChecked( g_pConfig->GetLogChatOption(elcoAPPENDHUBHOST) ); CheckBox_LOGCHAT_DISABLEPUBLICCHAT->setChecked( g_pConfig->GetLogChatOption(elcoDISABLEPUBLICCHAT) ); GroupBox_LOGNICKNAMEFILTER->setChecked( g_pConfig->GetLogChatOption(elcoENABLENICKNAMEFILTER) ); CheckBox_LOGCHAT_NICKNAMEFILTER_ENABLELOGGING->setChecked( g_pConfig->GetLogChatOption(elcoNICKNAMEFILTER_ENABLELOGGING) ); ListBox_LOGCHAT_NICKNAMEFILTER_LIST->clear(); ListBox_LOGCHAT_NICKNAMEFILTER_LIST->addItems( g_pConfig->GetLogChatNickNameFilter() ); // other CheckBox_HUBLISTSTORELOCAL->setChecked(g_pConfig->GetHubListStoreLocal()); SpinBox_RELOADHUBLISTTIME->setValue(g_pConfig->GetReloadHubListTime()); DCConfigHubListUrl * hublisturl = 0; CList hublisturllist; g_pConfig->GetHubListUrlList(&hublisturllist); while( (hublisturl=hublisturllist.Next(hublisturl)) != 0 ) { QListWidgetItem * lwi = new QListWidgetItem( hublisturl->sUrl.Data(), ListWidget_HUBLISTURL ); if ( hublisturl->bEnabled ) { lwi->setCheckState( Qt::Checked ); } else { lwi->setCheckState( Qt::Unchecked ); } } slotHubListUrlsSelectionChanged(); // security SpinBox_FLOODCOUNT->setValue(g_pConfig->GetFloodCount()); CheckBox_FLOODOPKICK->setChecked(g_pConfig->GetFloodOpKick()); LineEdit_FLOODOPKICKMESSAGE->setText(QString(g_pConfig->GetFloodOpKickMessage().Data()).remove( "\r" )); LineEdit_TRANSFERCERT->setText(g_pConfig->GetTransferCert().Data()); LineEdit_TRANSFERKEY->setText(g_pConfig->GetTransferKey().Data()); CheckBox_OLD_DCLIB_SSL_SUPPORT->setChecked(g_pConfig->GetOldSSLSupport()); LineEdit_DCLIB_PLUGIN_PATH->setText(g_pConfig->GetDCLibPluginPath().Data()); // init the sound tab slotDisableSound(); // auto response settings CheckBox_ENABLE_AUTO_RESPONDER->setChecked(g_pConfig->GetAutoResponderEnabled()); CheckBox_ENABLE_AUTO_RESPONDER_FOR_PM->setChecked(g_pConfig->GetAutoResponderEnabledForPM()); SpinBox_AUTORESPONSEDELAY->setValue(g_pConfig->GetAutoResponseDelay()); LineEdit_AUTO_RESPONSE_IGNORE->setText(g_pConfig->GetAutoResponseIgnores()); // fill auto response list box QList arlist; g_pConfig->GetAutoResponses(&arlist); for ( QList::const_iterator it = arlist.constBegin(); it != arlist.constEnd(); ++it ) { QString cs; DC_AutoResponseObject * aro = *it; if ( aro->m_bCaseSensitive ) { cs = tr("Yes"); } else { cs = tr("No"); } qtwitem = new QTreeWidgetItem( TreeWidget_AUTO_RESPONSES ); qtwitem->setText( 0, aro->m_sTrigger ); qtwitem->setText( 1, cs ); qtwitem->setText( 2, aro->m_sResponse ); qtwitem->setFlags( qtwitem->flags() | Qt::ItemIsEditable ); delete aro; } arlist.clear(); ComboBox_REMOTE_ENCODING->setEditText( g_pConfig->GetRemoteEncoding().Data() ); Label_ENCODING_DISABLE_HOWTO->setText( tr("Setting remote encoding to %1 will disable most conversions.").arg(g_pConfig->GetLocalEncoding().Data()) ); CheckBox_FOLDERS_RIGHT_PANE->setChecked(g_pConfig->GetFoldersInRightPane()); CheckBox_FOLDERS_RIGHT_PANE_ON_TOP->setChecked(g_pConfig->GetFoldersInRightPaneOnTop()); CheckBox_SIZES_LEFT_PANE->setChecked(g_pConfig->GetFolderSizesInLeftPane()); CheckBox_ENABLE_USERIP2->setChecked(g_pConfig->GetUserIP2Enabled()); CheckBox_ENABLE_ZPIPE->setChecked(g_pConfig->GetZPipeEnabled()); CheckBox_ADJUST_SR->setChecked(g_pConfig->GetAdjustSearchResultHubNames()); CheckBox_ENABLE_REMOVE_PUBLIC_HUB->setChecked(g_pConfig->GetRemovePublicHubEnabled()); ComboBox_TAB_COMPLETE_MATCH_MODE->setCurrentIndex(g_pConfig->GetTabCompleteMatchMode()); CheckBox_TAB_COMPLETE_STRIP_TAGS->setChecked(g_pConfig->GetTabCompleteStripTags()); SpinBox_READFILEBUFFERSIZE->setValue(g_pConfig->GetReadFileBufferSize()); CheckBox_NO_ADCGET_WITHOUT_TTH->setChecked(g_pConfig->GetDisableADCGetWithoutTTH()); CheckBox_NO_XMLLIST_WITHOUT_TTH->setChecked(g_pConfig->GetDisableXMLListWithoutTTH()); CheckBox_ENABLE_OBSOLETE_EXT->setChecked( g_pConfig->GetEnableObsoleteExt() ); CheckBox_THREADS_FOR_SHELL_COMMANDS->setChecked(g_pConfig->GetThreadsForShellCommands()); SpinBox_SHELL_COMMAND_TIMEOUT->setValue(g_pConfig->GetShellCommandTimeout()); CheckBox_OPEN_FOLDERS_RIGHT_PANE->setChecked(g_pConfig->GetOpenFoldersInRightPane()); CheckBox_ENABLE_USERCOMMAND_SUPPORT->setChecked(g_pConfig->GetEnableUserCommand()); CheckBox_USER_COMMAND_SUBMENU->setChecked(g_pConfig->GetUserCommandSubmenu()); switch ( g_pConfig->GetMagnetAction(eChatMagnet) ) { case eMagnetPrompt: ComboBox_CHAT_MAGNETS->setCurrentIndex(0); break; case eMagnetSearch: ComboBox_CHAT_MAGNETS->setCurrentIndex(1); break; case eMagnetDownload: /* not supported */ break; case eMagnetNothing: ComboBox_CHAT_MAGNETS->setCurrentIndex(2); break; default: break; } } /** */ void DCOptions::GetValues() { g_pConfig->SetNick(LineEdit_NICK->text().toAscii().constData()); g_pConfig->SetSearchNick(LineEdit_SEARCHNICK->text().toAscii().constData()); g_pConfig->SetAwayMessage(TextEdit_AWAYMESSAGE->toPlainText().replace( "\n", "\xd\xa" ).toAscii().constData()); g_pConfig->SetDescription(LineEdit_DESCRIPTION->text().toAscii().constData()); g_pConfig->SetAwayPrefix(LineEdit_AWAYPREFIX->text().toAscii().constData()); g_pConfig->SetDescriptionTag(CheckBox_DESCRIPTION_TAG->isChecked()); g_pConfig->SetUseExtendedHubCount(CheckBox_EXT_HUB_COUNT->isChecked()); g_pConfig->SetEMail(LineEdit_EMAIL->text().toAscii().constData()); g_pConfig->SetAntiSpam(CheckBox_ANTISPAM->isChecked()); if ( ComboBox_PRIVATEADDRESSSPACE->currentIndex() == 0 ) { g_pConfig->SetCheckPrivateAddressSpace(false); g_pConfig->SetPrivateAddressSpaceOnly(false); } else if ( ComboBox_PRIVATEADDRESSSPACE->currentIndex() == 1 ) { g_pConfig->SetCheckPrivateAddressSpace(true); g_pConfig->SetPrivateAddressSpaceOnly(false); } else if ( ComboBox_PRIVATEADDRESSSPACE->currentIndex() == 2 ) { g_pConfig->SetCheckPrivateAddressSpace(false); g_pConfig->SetPrivateAddressSpaceOnly(true); } g_pConfig->SetShowChatSendButton(CheckBox_SHOWCHATSENDBUTTON->isChecked()); g_pConfig->SetCustomBrowser(GroupBox_CUSTOM_BROWSER->isChecked()); g_pConfig->SetBrowser(LineEdit_BROWSER->text()); g_pConfig->SetDynamicUploadRate(CheckBox_DYNAMICUPLOADRATE->isChecked()); g_pConfig->SetShowChatInTab(CheckBox_SHOWCHATINTAB->isChecked()); g_pConfig->SetChatMaxParagraph(SpinBox_CHATMAXPARAGRAPH->value()); g_pConfig->SetTransferAutoSearch(CheckBox_TRANSFERAUTOSEARCH->isChecked()); g_pConfig->SetDisableHashList(CheckBox_DISABLEHASHLIST->isChecked()); g_pConfig->SetCompressedTransfers(CheckBox_COMPRESSEDTRANSFERS->isChecked()); g_pConfig->SetUserPhotoFileName(ToolButton_PHOTO->text()); g_pConfig->SetSpeed(ComboBox_SPEED->currentText().toAscii().constData()); g_pConfig->SetDownloadFolder(LineEdit_DOWNLOADFOLDER->text().toAscii().constData()); g_pConfig->SetDownloadFinishedFolder(LineEdit_DOWNLOADFINISHEDFOLDER->text().toAscii().constData()); g_pConfig->SetMinSegSize( ((ulonglong) SpinBox_MIN_SEG_SIZE->value()) * 1048576 ); g_pConfig->SetValknutDataPath(LineEdit_DATAFOLDER->text()); g_pConfig->SetAutoRecreateShareList(CheckBox_AUTORECREATESHARELIST->isChecked()); g_pConfig->SetDontShareDotFiles(CheckBox_DONTSHAREDOTFILES->isChecked()); g_pConfig->SetRecreateShareListTime(SpinBox_RECREATESHARELISTTIME->value()); g_pConfig->SetFloodOpKickMessage(LineEdit_FLOODOPKICKMESSAGE->text().replace( "\n", "\xd\xa" ).toAscii().constData()); g_pConfig->SetFloodCount(SpinBox_FLOODCOUNT->value()); g_pConfig->SetFloodOpKick(CheckBox_FLOODOPKICK->isChecked()); g_pConfig->SetTransferCert(LineEdit_TRANSFERCERT->text().toAscii().constData()); g_pConfig->SetTransferKey(LineEdit_TRANSFERKEY->text().toAscii().constData()); g_pConfig->SetOldSSLSupport(CheckBox_OLD_DCLIB_SSL_SUPPORT->isChecked()); g_pConfig->SetDCLibPluginPath(LineEdit_DCLIB_PLUGIN_PATH->text().toAscii().constData()); SaveSharedFolders(); /* ownership transferred to g_pConfig which clears the map */ g_pConfig->SetUserMenuCommands( &usercommands ); SaveUserChatCommands(); g_pConfig->SetAutoResponderEnabled(CheckBox_ENABLE_AUTO_RESPONDER->isChecked()); g_pConfig->SetAutoResponderEnabledForPM(CheckBox_ENABLE_AUTO_RESPONDER_FOR_PM->isChecked()); g_pConfig->SetAutoResponseDelay(SpinBox_AUTORESPONSEDELAY->value()); g_pConfig->SetAutoResponseIgnores(LineEdit_AUTO_RESPONSE_IGNORE->text()); SaveAutoResponses(); g_pConfig->SetMaxUpload( SpinBox_MAXSIMULTANEOUSUPLOADS->value() ); g_pConfig->SetMaxUploadRate( (ulonglong) (SpinBox_MAXUPLOADRATE->value()*1024) ); g_pConfig->SetMaxDownloadRate( (ulonglong) (SpinBox_MAXDOWNLOADRATE->value()*1024) ); g_pConfig->SetDownloadQueueTime(SpinBox_SAVEDOWNLOADQUEUETIME->value()); g_pConfig->SetAutoSearchInterval(SpinBox_AUTOSEARCHINTERVAL->value()); g_pConfig->SetSmallFileSize(SpinBox_SMALLFILESIZE->value()); g_pConfig->SetExtraSlotsRate( 1024 * ((ulonglong) SpinBox_EXTRA_SLOTS_RATE->value()) ); g_pConfig->SetMaxExtraSlots( SpinBox_MAX_EXTRA_SLOTS->value() ); g_pConfig->SetTCPListenPort(SpinBox_TCPLISTENPORT->value()); g_pConfig->SetCryptoListenPort(SpinBox_CRYPTO_PORT->value()); g_pConfig->SetUDPListenPort(SpinBox_UDPLISTENPORT->value()); g_pConfig->SetExternalIP(RadioButton_IPHOSTNAME->isChecked()); if ( RadioButton_ACTIVEMODE->isChecked() ) g_pConfig->SetMode(ecmACTIVE); else g_pConfig->SetMode(ecmPASSIVE); g_pConfig->SetHost(LineEdit_IP->text().toAscii().constData()); g_pConfig->SetListenHost(LineEdit_LISTENIP->text().toAscii().constData()); g_pConfig->SetSendMessageOnActiveModeRequest(CheckBox_SENDMESSAGEONACTIVEMODEREQUEST->isChecked()); // gui settings g_pConfig->SetOpenPrivateChatWindow(CheckBox_OPENPRIVATECHATWINDOW->isChecked()); g_pConfig->SetEnableEmoticons(CheckBox_EMOTICONS->isChecked()); if ( RadioButton_UNITBYTE->isChecked() ) g_pConfig->SetUnit(euBYTE); else if ( RadioButton_UNITKBYTE->isChecked() ) g_pConfig->SetUnit(euKBYTE); else if ( RadioButton_UNITMBYTE->isChecked() ) g_pConfig->SetUnit(euMBYTE); else if ( RadioButton_UNITGBYTE->isChecked() ) g_pConfig->SetUnit(euGBYTE); else g_pConfig->SetUnit(euAUTO); g_pConfig->SetTheme(ComboBox_THEME->currentText()); g_pConfig->SetSendChat(ComboBox_SENDCHAT->currentIndex()); g_pConfig->SetLanguageFile(LineEdit_LANGUAGEFILE->text()); g_pConfig->SetShowStatusMessage(CheckBox_SHOWSTATUSMESSAGE->isChecked()); g_pConfig->SetQueryOnExit(CheckBox_QUERYONEXIT->isChecked()); g_pConfig->SetQueryOnFileDelete(CheckBox_QUERYONFILEDELETE->isChecked()); g_pConfig->SetSendHidePrivateChatToPublicChat(CheckBox_SENDHIDEPRIVATECHATTOPUBLICCHAT->isChecked()); g_pConfig->SetChatSendToOffline(CheckBox_CHATSENDTOOFFLINE->isChecked()); g_pConfig->SetChatRecvFromOffline(CheckBox_CHATRECVFROMOFFLINE->isChecked()); g_pConfig->SetChatMessageMaxLines( SpinBox_CHATMESSAGEMAXLINES->value() ); g_pConfig->SetSuppressedNicks( LineEdit_SUPPRESS_NICKS->text() ); g_pConfig->SetSendUnknownCommandsAsChat( CheckBox_SENDUNKNOWNCOMMANDS->isChecked() ); g_pConfig->SetAllowedUnknownCommands( LineEdit_ALLOWED_UNKNOWN_COMMANDS->text() ); // sound settings g_pConfig->SetSoundDisabled(CheckBox_SOUNDDISABLED->isChecked()); g_pConfig->SetSoundDisabledAway(CheckBox_SOUNDDISABLEDAWAY->isChecked()); g_pConfig->SetSoundEnabled(eusCONNECT,GroupBox_SOUNDPLAYCONNECT->isChecked()); g_pConfig->SetSoundEnabled(eusDISCONNECT,GroupBox_SOUNDPLAYDISCONNECT->isChecked()); g_pConfig->SetSoundEnabled(eusSEND,GroupBox_SOUNDPLAYSEND->isChecked()); g_pConfig->SetSoundEnabled(eusRECEIVE,GroupBox_SOUNDPLAYRECEIVE->isChecked()); g_pConfig->SetSoundEnabled(eusFIRSTRECEIVE,GroupBox_SOUNDPLAYFIRSTRECEIVE->isChecked()); g_pConfig->SetSoundEnabled(eusNICKMENTIONED,GroupBox_SOUNDPLAYNICKMENTIONED->isChecked()); g_pConfig->SetExternalSoundPlayer(GroupBox_EXTERNALPLAYER->isChecked()); g_pConfig->SetExternalPlayer(LineEdit_EXTERNALPLAYER->text()); g_pConfig->SetSoundFile( eusCONNECT, LineEdit_SOUNDFILECONNECT->text() ); g_pConfig->SetSoundFile( eusDISCONNECT, LineEdit_SOUNDFILEDISCONNECT->text() ); g_pConfig->SetSoundFile( eusSEND, LineEdit_SOUNDFILESEND->text() ); g_pConfig->SetSoundFile( eusRECEIVE, LineEdit_SOUNDFILERECEIVE->text() ); g_pConfig->SetSoundFile( eusFIRSTRECEIVE, LineEdit_SOUNDFILEFIRSTRECEIVE->text() ); g_pConfig->SetSoundFile( eusNICKMENTIONED, LineEdit_SOUNDFILENICKMENTIONED->text() ); g_pConfig->SetAppFont(LineEdit_APPFONT->text()); g_pConfig->SetUseCustomFont(GroupBox_APPFONT->isChecked()); // gui->chat g_pConfig->SetChatShowJoinsAndParts(CheckBox_CHATSHOWJOINSANDPARTS->isChecked()); g_pConfig->SetChatShowJoinsAndPartsOnlyFav(CheckBox_CHATSHOWJOINSANDPARTSONLYFAV->isChecked()); // gui->client g_pConfig->SetOpenClientWindows(ComboBox_OPEN_CLIENT_WINDOWS_HOW->currentIndex()); g_pConfig->SetUserListRightAlignment(CheckBox_USERLISTRIGHTALIGNMENT->isChecked()); g_pConfig->SetAutoAwayMode(CheckBox_AUTOAWAYMODE->isChecked()); g_pConfig->SetAutoAwayTime(SpinBox_AUTOAWAYTIME->value()); g_pConfig->SetDoubleClickAction(ComboBox_DOUBLECLICK->currentIndex()); QString oldappicons = g_pConfig->GetApplicationIconTheme(); QString oldemoticons = g_pConfig->GetEmoticonTheme(); // gui->icons if ( ComboBox_APPLICATION_ICONS->count() > 0 ) { g_pConfig->SetApplicationIconTheme(ComboBox_APPLICATION_ICONS->currentText()); } if ( ComboBox_EMOTICONS->count() > 0 ) { g_pConfig->SetEmoticonTheme(ComboBox_EMOTICONS->currentText()); } if ( ComboBox_USERLIST_ICONS->count() > 0 ) { g_pConfig->SetUserListIconTheme(ComboBox_USERLIST_ICONS->currentText()); } if ( oldappicons != g_pConfig->GetApplicationIconTheme() ) { // reload icons with new theme g_pIconLoader->Load(); } // reload emoticons if ( g_pConfig->GetEmoticonTheme() != oldemoticons ) { g_pConfig->InitMimeSourceFactory(); } // log settings g_pConfig->SetLogFile(CheckBox_LOGFILE->isChecked()); g_pConfig->SetLogFinishedDownloads(CheckBox_LOGDOWNLOADS->isChecked()); g_pConfig->SetLogFinishedUploads(CheckBox_LOGUPLOADS->isChecked()); g_pConfig->SetLogDetails(CheckBox_LOGDETAILS->isChecked()); g_pConfig->SetLogFileName( LineEdit_LOGFILENAME->text().toAscii().constData() ); g_pConfig->SetTimeStamp(etsPRIVATECHAT,CheckBox_TIMESTAMPPRIVATECHAT->isChecked()); g_pConfig->SetTimeStamp(etsHUBCHAT,CheckBox_TIMESTAMPHUBCHAT->isChecked()); g_pConfig->SetLogChatOption(elcoENABLELOGGING, GroupBox_CHAT_LOGGING->isChecked() ); g_pConfig->SetLogChatOption(elcoAPPENDDATE, CheckBox_LOGCHAT_APPENDDATE->isChecked() ); g_pConfig->SetLogChatOption(elcoAPPENDHUBNAME, CheckBox_LOGCHAT_APPENDHUBNAME->isChecked() ); g_pConfig->SetLogChatOption(elcoAPPENDHUBHOST, CheckBox_LOGCHAT_APPENDHUBHOST->isChecked() ); g_pConfig->SetLogChatOption(elcoDISABLEPUBLICCHAT, CheckBox_LOGCHAT_DISABLEPUBLICCHAT->isChecked() ); g_pConfig->SetLogChatOption(elcoENABLENICKNAMEFILTER, GroupBox_LOGNICKNAMEFILTER->isChecked() ); g_pConfig->SetLogChatOption(elcoNICKNAMEFILTER_ENABLELOGGING, CheckBox_LOGCHAT_NICKNAMEFILTER_ENABLELOGGING->isChecked() ); int i = 0; QStringList nnflist; for( i = 0; i < ListBox_LOGCHAT_NICKNAMEFILTER_LIST->count(); i++ ) { nnflist << ListBox_LOGCHAT_NICKNAMEFILTER_LIST->item(i)->text(); } g_pConfig->SetLogChatNickNameFilter( nnflist ); // other settings g_pConfig->SetHubListStoreLocal(CheckBox_HUBLISTSTORELOCAL->isChecked()); g_pConfig->SetReconnectCount( SpinBox_RECONNECTCOUNT->value() ); g_pConfig->SetReconnectTimeout( SpinBox_RECONNECTTIMEOUT->value() ); g_pConfig->SetTransferResendTimeout(SpinBox_TRANSFERRESENDTIMEOUT->value()); g_pConfig->SetTransferResponseTimeout(SpinBox_TRANSFERRESPONSETIMEOUT->value()); g_pConfig->SetForceMoveEnabled(CheckBox_FORCEMOVEENABLED->isChecked()); g_pConfig->SetReloadHubListTime(SpinBox_RELOADHUBLISTTIME->value()); // transfer view settings g_pConfig->SetTransferViewOptions(etvoCHUNKPERCENT,CheckBox_TV_PERCENTCHUNK->isChecked()); g_pConfig->SetTransferViewOptions(etvoFILEPERCENT,CheckBox_TV_PERCENTFILE->isChecked()); g_pConfig->SetTransferViewOptions(etvoCHUNKSIZE,CheckBox_TV_CHUNKSIZE->isChecked()); g_pConfig->SetTransferViewOptions(etvoFILESIZE,CheckBox_TV_FILESIZE->isChecked()); g_pConfig->SetTransferViewOptions(etvoDOWNLOADRATESINGLE,CheckBox_TV_DOWNLOADRATESINGLE->isChecked()); g_pConfig->SetTransferViewOptions(etvoELAPSEDTIMESINGLE,CheckBox_TV_ELAPSEDTIMESINGLE->isChecked()); g_pConfig->SetTransferViewOptions(etvoDOWNLOADRATEMULTI,CheckBox_TV_DOWNLOADRATEMULTI->isChecked()); g_pConfig->SetTransferViewOptions(etvoELAPSEDTIMEMULTI,CheckBox_TV_ELAPSEDTIMEMULTI->isChecked()); g_pConfig->SetUserUploadSlots(SpinBox_USERUPLOADSLOTS->value()); if ( RadioButton_NONE->isChecked() ) g_pConfig->SetHubOfflineTransferClose( ectNONE ); else if ( RadioButton_UPLOAD->isChecked() ) g_pConfig->SetHubOfflineTransferClose( ectUPLD ); else if ( RadioButton_DOWNLOAD->isChecked() ) g_pConfig->SetHubOfflineTransferClose( ectDLD ); else if ( RadioButton_BOTH->isChecked() ) g_pConfig->SetHubOfflineTransferClose( ectBOTH ); CList hublisturllist; for ( i = 0; i < ListWidget_HUBLISTURL->count(); i++ ) { DCConfigHubListUrl * hublisturl = new DCConfigHubListUrl(); QListWidgetItem * item = ListWidget_HUBLISTURL->item(i); hublisturl->sUrl = item->text().toAscii().constData(); hublisturl->bEnabled = (item->checkState() == Qt::Checked); hublisturllist.Add(hublisturl); } g_pConfig->SetHubListUrlList(&hublisturllist); /* set i to start of ListBox_CHATCOLOR */ i = 0; g_pConfig->SetChatColor(eccCHATTIMESTAMP,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccCHATLOCALNICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccCHATLOCALTEXT,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccCHATREMOTENICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccCHATREMOTETEXT,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccCHATSTATUSNICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccCHATSTATUSTEXT,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICCHATTIMESTAMP,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICCHATLOCALNICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICCHATLOCALTEXT,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICCHATREMOTENICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICCHATREMOTETEXT,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICCHATSTATUSNICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICCHATSTATUSTEXT,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICPRIVATECHATNICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICPRIVATECHATTEXT,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccCHATSAY,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccPUBLICCHATMENICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatColor(eccOPNICK,QColor(ListBox_CHATCOLOR->item(i++)->icon().pixmap(10,10).toImage().pixel(0,0)).name()); g_pConfig->SetChatBackgroundColor( GroupBox_CHAT_BACKGROUND->isChecked(), QColor(ToolButton_CHAT_BG_COLOR->icon().pixmap(10,10).toImage().pixel(0,0)).name() ); g_pConfig->SetAlternatingRowColors( CheckBox_ALT_ROW_COLORS->isChecked() ); g_pConfig->SetRemoteEncoding(ComboBox_REMOTE_ENCODING->currentText().toAscii().constData()); g_pConfig->SetFoldersInRightPane(CheckBox_FOLDERS_RIGHT_PANE->isChecked()); g_pConfig->SetFoldersInRightPaneOnTop(CheckBox_FOLDERS_RIGHT_PANE_ON_TOP->isChecked()); g_pConfig->SetFolderSizesInLeftPane(CheckBox_SIZES_LEFT_PANE->isChecked()); g_pConfig->SetUserIP2Enabled(CheckBox_ENABLE_USERIP2->isChecked()); g_pConfig->SetZPipeEnabled(CheckBox_ENABLE_ZPIPE->isChecked()); g_pConfig->SetAdjustSearchResultHubNames(CheckBox_ADJUST_SR->isChecked()); /* If this has been turned off, we need to save the public hub list now */ if ( (CheckBox_ENABLE_REMOVE_PUBLIC_HUB->isChecked() == false) && g_pConfig->GetRemovePublicHubEnabled() ) { g_pConfig->SaveDCPublicHub(); } g_pConfig->SetRemovePublicHubEnabled(CheckBox_ENABLE_REMOVE_PUBLIC_HUB->isChecked()); g_pConfig->SetTabCompleteMatchMode(ComboBox_TAB_COMPLETE_MATCH_MODE->currentIndex()); g_pConfig->SetTabCompleteStripTags(CheckBox_TAB_COMPLETE_STRIP_TAGS->isChecked()); g_pConfig->SetReadFileBufferSize(SpinBox_READFILEBUFFERSIZE->value()); g_pConfig->SetDisableADCGetWithoutTTH(CheckBox_NO_ADCGET_WITHOUT_TTH->isChecked()); g_pConfig->SetDisableXMLListWithoutTTH(CheckBox_NO_XMLLIST_WITHOUT_TTH->isChecked()); g_pConfig->SetEnableObsoleteExt( CheckBox_ENABLE_OBSOLETE_EXT->isChecked() ); g_pConfig->SetThreadsForShellCommands(CheckBox_THREADS_FOR_SHELL_COMMANDS->isChecked()); g_pConfig->SetShellCommandTimeout(SpinBox_SHELL_COMMAND_TIMEOUT->value()); g_pConfig->SetOpenFoldersInRightPane(CheckBox_OPEN_FOLDERS_RIGHT_PANE->isChecked()); g_pConfig->SetEnableUserCommand(CheckBox_ENABLE_USERCOMMAND_SUPPORT->isChecked()); g_pConfig->SetUserCommandSubmenu(CheckBox_USER_COMMAND_SUBMENU->isChecked()); switch ( ComboBox_CHAT_MAGNETS->currentIndex() ) { case 0: g_pConfig->SetMagnetAction( eMagnetPrompt, eChatMagnet ); break; case 1: g_pConfig->SetMagnetAction( eMagnetSearch, eChatMagnet ); break; case 2: g_pConfig->SetMagnetAction( eMagnetNothing, eChatMagnet ); break; default: break; } } /** */ void DCOptions::SaveSharedFolders() { CList sharedfolders; DCConfigShareFolder * csf; // save shared folders sharedfolders.Clear(); QTreeWidgetItemIterator it( TreeWidget_SHAREDFOLDERS ); for ( ; (*it); ++it ) { csf = new DCConfigShareFolder(); csf->m_sPath = (*it)->text(0).toAscii().constData(); csf->m_sAlias = (*it)->text(1).toAscii().constData(); sharedfolders.Add(csf); } g_pConfig->SetSharedFolders( &sharedfolders ); } void DCOptions::SaveUserChatCommands() { QList commands; DC_UserChatCommand * ucc; QTreeWidgetItemIterator it( TreeWidget_CHAT_COMMANDS ); for( ; (*it); ++it ) { ucc = new DC_UserChatCommand(); ucc->m_sName = (*it)->text(0); ucc->m_sCommand = (*it)->text(1); commands.append(ucc); } /* transfer ownership to g_pConfig */ g_pConfig->SetUserChatCommands( &commands ); } void DCOptions::SaveAutoResponses() { QList autoresponses; DC_AutoResponseObject * aro = 0; QTreeWidgetItemIterator it( TreeWidget_AUTO_RESPONSES ); for ( ; (*it); ++it ) { aro = new DC_AutoResponseObject(); aro->m_sTrigger = (*it)->text(0); if ( (*it)->text(1) == tr("Yes") ) { aro->m_bCaseSensitive = true; } else { aro->m_bCaseSensitive = false; } aro->m_sResponse = (*it)->text(2); autoresponses.append(aro); } /* transfer ownership to g_pConfig */ g_pConfig->SetAutoResponses( &autoresponses ); } /** */ void DCOptions::slotCreateShareList() { /* need to save these settings for them to be used during the refresh */ g_pConfig->SetDontShareDotFiles(CheckBox_DONTSHAREDOTFILES->isChecked()); g_pConfig->SetDisableHashList(CheckBox_DISABLEHASHLIST->isChecked()); SaveSharedFolders(); if ( CFileManager::Instance() ) { CFileManager::Instance()->CreateShareList(); } } /** */ void DCOptions::slotShareListInfo() { QString s = tr("Compressed list size (HE3/BZ/XML): ") + QString().setNum(CFileManager::Instance()->GetShareBufferSize(esbtHE3)) + "/" + QString().setNum(CFileManager::Instance()->GetShareBufferSize(esbtBZ)) + "/" + QString().setNum(CFileManager::Instance()->GetShareBufferSize(esbtXMLBZ)) + " " + tr("bytes") + "\n" + tr("Total shared: ") + DCGuiUtils::GetSizeString(CFileManager::Instance()->GetShareSize()); QMessageBox::information( this, tr("Share List Info"), s ); } /** */ void DCOptions::slotSetTheme() { if ( g_pConfig->GetThemeSupport() ) { QString s = ComboBox_THEME->currentText(); if ( !s.isEmpty() ) { QApplication::setStyle(s); m_sTestedTheme = s; } } } /** */ void DCOptions::slotBrowseLanguageFile() { QString file = QFileDialog::getOpenFileName( this, tr("Select language file"), LineEdit_LANGUAGEFILE->text(), "Language File (*.qm)" ); if ( !file.isEmpty() ) { LineEdit_LANGUAGEFILE->setText(file); } } /** */ void DCOptions::slotSelectLanguage() { QString s; QMenu * m = new QMenu(this); QAction * bosnian = DCMenuHandler::addAction( m, emiLANGUAGE_BOSNIAN ); QAction * brazilian = DCMenuHandler::addAction( m, emiLANGUAGE_BRAZILIAN ); QAction * czech = DCMenuHandler::addAction( m, emiLANGUAGE_CZECH ); QAction * danish = DCMenuHandler::addAction( m, emiLANGUAGE_DANISH ); QAction * dutch = DCMenuHandler::addAction( m, emiLANGUAGE_DUTCH ); QAction * english = DCMenuHandler::addAction( m, emiLANGUAGE_ENGLISH ); QAction * finnish = DCMenuHandler::addAction( m, emiLANGUAGE_FINNISH ); QAction * french = DCMenuHandler::addAction( m, emiLANGUAGE_FRENCH ); QAction * german = DCMenuHandler::addAction( m, emiLANGUAGE_GERMAN ); QAction * greek = DCMenuHandler::addAction( m, emiLANGUAGE_GREEK ); QAction * hungarian = DCMenuHandler::addAction( m, emiLANGUAGE_HUNGARIAN ); QAction * icelandic = DCMenuHandler::addAction( m, emiLANGUAGE_ICELANDIC ); QAction * italian = DCMenuHandler::addAction( m, emiLANGUAGE_ITALIAN ); QAction * latvian = DCMenuHandler::addAction( m, emiLANGUAGE_LATVIAN ); QAction * norwegian = DCMenuHandler::addAction( m, emiLANGUAGE_NORWEGIAN ); QAction * polish = DCMenuHandler::addAction( m, emiLANGUAGE_POLISH ); QAction * romanian = DCMenuHandler::addAction( m, emiLANGUAGE_ROMANIAN ); QAction * russian = DCMenuHandler::addAction( m, emiLANGUAGE_RUSSIAN ); QAction * serbian_cyrillic = DCMenuHandler::addAction( m, emiLANGUAGE_SERBIAN_CYRILLIC ); QAction * serbian_latin = DCMenuHandler::addAction( m, emiLANGUAGE_SERBIAN_LATIN ); QAction * slovakian = DCMenuHandler::addAction( m, emiLANGUAGE_SLOVAKIAN ); QAction * spanish = DCMenuHandler::addAction( m, emiLANGUAGE_SPANISH ); QAction * swedish = DCMenuHandler::addAction( m, emiLANGUAGE_SWEDISH ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) return; else if ( chosen == bosnian ) s = "valknut.bs.qm"; else if ( chosen == brazilian ) s = "valknut.pt_br.qm"; else if ( chosen == czech ) s = "valknut.cs.qm"; else if ( chosen == danish ) s = "valknut.da.qm"; else if ( chosen == dutch ) s = "valknut.nl.qm"; else if ( chosen == english ) s = ""; else if ( chosen == finnish ) s = "valknut.fi.qm"; else if ( chosen == french ) s = "valknut.fr.qm"; else if ( chosen == german ) s = "valknut.de.qm"; else if ( chosen == greek ) s = "valknut.el.qm"; else if ( chosen == hungarian ) s = "valknut.hu.qm"; else if ( chosen == icelandic ) s = "valknut.is.qm"; else if ( chosen == italian ) s = "valknut.it.qm"; else if ( chosen == latvian ) s = "valknut.lv.qm"; else if ( chosen == norwegian ) s = "valknut.nb.qm"; else if ( chosen == polish ) s = "valknut.pl.qm"; else if ( chosen == romanian ) s = "valknut.ro.qm"; else if ( chosen == russian ) s = "valknut.rus.qm"; else if ( chosen == serbian_cyrillic ) s = "valknut.sr.qm"; else if ( chosen == serbian_latin ) s = "valknut.sr@latin.qm"; else if ( chosen == slovakian ) s = "valknut.sk.qm"; else if ( chosen == spanish ) s = "valknut.es.qm"; else if ( chosen == swedish ) s = "valknut.sv.qm"; if ( !s.isEmpty() ) { LineEdit_LANGUAGEFILE->setText(LineEdit_DATAFOLDER->text()+QString(DIRSEPARATOR)+QString("translation")+QString(DIRSEPARATOR)+s); } else if ( chosen == english ) { LineEdit_LANGUAGEFILE->clear(); } } /** */ void DCOptions::slotBrowseAppFont() { bool ok; QFont font = QFontDialog::getFont(&ok, QApplication::font(), this); if ( ok ) { LineEdit_APPFONT->setText(font.toString()); } } /** */ void DCOptions::slotAddHubListUrl() { bool ok = false; QString url = QInputDialog::getText( this, tr("HubList URL"), tr("Please enter a url"), QLineEdit::Normal, QString::null, &ok ); if (ok) { QListWidgetItem * item = new QListWidgetItem( url, ListWidget_HUBLISTURL ); item->setCheckState( Qt::Checked ); } } /** */ void DCOptions::slotEditHubListUrl() { editHubListUrl( ListWidget_HUBLISTURL->currentItem() ); } /** */ void DCOptions::editHubListUrl( QListWidgetItem * item ) { if ( !item ) return; bool ok = false; QString url = QInputDialog::getText( this, tr("HubList URL"), tr("Edit url"), QLineEdit::Normal, item->text(), &ok ); if (ok) { item->setText(url); } } /** */ void DCOptions::slotRemoveHubListUrl() { QListWidgetItem * item = ListWidget_HUBLISTURL->currentItem(); if ( item ) { delete item; } } /** */ void DCOptions::slotDoubleClickedHubListUrl( QListWidgetItem * item ) { if ( item ) // always true since signal is only emitted on valid items { editHubListUrl( item ); } else { slotAddHubListUrl(); } } /** */ void DCOptions::slotContextMenuHubListUrl( const QPoint & pos ) { QMenu * m = new QMenu(this); QListWidgetItem * item = ListWidget_HUBLISTURL->itemAt(pos); bool enabled = (item != 0); QAction * add = DCMenuHandler::addAction( m, emiADD ); QAction * edit = DCMenuHandler::addAction( m, emiEDIT, enabled ); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE, enabled ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } else if ( chosen == add ) { slotAddHubListUrl(); } else if ( chosen == edit ) { editHubListUrl( item ); } else if ( chosen == remove ) { delete item; } } /** */ void DCOptions::slotHubListUrlsSelectionChanged() { if ( ListWidget_HUBLISTURL->selectedItems().size() == 1 ) { ToolButton_EDITHUBLISTURL->setEnabled(true); ToolButton_REMOVEHUBLISTURL->setEnabled(true); } else { ToolButton_EDITHUBLISTURL->setEnabled(false); ToolButton_REMOVEHUBLISTURL->setEnabled(false); } } /** */ void DCOptions::slotTreeWidgetOptionTreeCurrentChanged( QTreeWidgetItem * item, QTreeWidgetItem * /* previous */ ) { if ( item == plviIdentify ) { TabWidget_DCGUI->setCurrentIndex( TAB_IDENTIFY ); } else if ( item == plviTransfer ) { TabWidget_DCGUI->setCurrentIndex( TAB_TRANSFER ); TabWidget_TRANSFER->setCurrentIndex( TAB_TRANSFER_SHARES ); } else if ( item == plviTransferShares ) { TabWidget_DCGUI->setCurrentIndex( TAB_TRANSFER ); TabWidget_TRANSFER->setCurrentIndex( TAB_TRANSFER_SHARES ); } else if ( item == plviTransferDownloads ) { TabWidget_DCGUI->setCurrentIndex( TAB_TRANSFER ); TabWidget_TRANSFER->setCurrentIndex( TAB_TRANSFER_DOWNLOADS ); } else if ( item == plviTransferUploads ) { TabWidget_DCGUI->setCurrentIndex( TAB_TRANSFER ); TabWidget_TRANSFER->setCurrentIndex( TAB_TRANSFER_UPLOADS ); } else if ( item == plviTransferSettings ) { TabWidget_DCGUI->setCurrentIndex( TAB_TRANSFER ); TabWidget_TRANSFER->setCurrentIndex( TAB_TRANSFER_SETTINGS ); } else if ( item == plviConnection ) { TabWidget_DCGUI->setCurrentIndex( TAB_CONNECTION ); TabWidget_CONNECTION->setCurrentIndex( TAB_CONNECTION_MODE ); } else if ( item == plviConnectionMode ) { TabWidget_DCGUI->setCurrentIndex( TAB_CONNECTION ); TabWidget_CONNECTION->setCurrentIndex( TAB_CONNECTION_MODE ); } else if ( item == plviConnectionSettings ) { TabWidget_DCGUI->setCurrentIndex( TAB_CONNECTION ); TabWidget_CONNECTION->setCurrentIndex( TAB_CONNECTION_SETTINGS ); } else if ( item == plviGUI ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_GENERAL ); } else if ( item == plviGUIClient ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_CLIENT ); } else if ( item == plviGUIMenus ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_MENUS ); } else if ( item == plviGUIChat ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_CHAT ); } else if ( item == plviGUIColors ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_COLORS ); } else if ( item == plviGUICommands ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_COMMANDS ); } else if ( item == plviGUITransfer ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_TRANSFER ); } else if ( item == plviGUIGeneral ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_GENERAL ); } else if ( item == plviGUIIcons ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_ICONS ); } else if ( item == plviGUIFilelistBrowser ) { TabWidget_DCGUI->setCurrentIndex( TAB_GUI ); TabWidget_GUI->setCurrentIndex( TAB_GUI_FILELIST ); } else if ( item == plviSound ) { TabWidget_DCGUI->setCurrentIndex( TAB_SOUND ); } else if ( item == plviLog ) { TabWidget_DCGUI->setCurrentIndex( TAB_LOG ); } else if ( item == plviHubLists ) { TabWidget_DCGUI->setCurrentIndex( TAB_HUBLISTS ); } else if ( item == plviSecurity ) { TabWidget_DCGUI->setCurrentIndex( TAB_SECURITY ); } else if ( item == plviAutoResponse ) { TabWidget_DCGUI->setCurrentIndex( TAB_AUTO_RESPONSES ); } else if ( item == plviOther ) { TabWidget_DCGUI->setCurrentIndex( TAB_OTHER ); } } /** */ void DCOptions::slotTabWidgetDCGUICurrentChanged( int index ) { disconnectOptionsTreeWidget(); switch ( index ) { case TAB_IDENTIFY: { TreeWidget_OPTIONTREE->setCurrentItem(plviIdentify); break; } case TAB_TRANSFER: { slotTabWidgetTransferCurrentChanged( TabWidget_TRANSFER->currentIndex() ); break; } case TAB_CONNECTION: { slotTabWidgetConnectionCurrentChanged( TabWidget_CONNECTION->currentIndex() ); break; } case TAB_GUI: { slotTabWidgetGUICurrentChanged( TabWidget_GUI->currentIndex() ); break; } case TAB_SOUND: { TreeWidget_OPTIONTREE->setCurrentItem(plviSound); break; } case TAB_LOG: { TreeWidget_OPTIONTREE->setCurrentItem(plviLog); break; } case TAB_HUBLISTS: { TreeWidget_OPTIONTREE->setCurrentItem(plviHubLists); break; } case TAB_SECURITY: { TreeWidget_OPTIONTREE->setCurrentItem(plviSecurity); break; } case TAB_AUTO_RESPONSES: { TreeWidget_OPTIONTREE->setCurrentItem(plviAutoResponse); break; } case TAB_OTHER: { TreeWidget_OPTIONTREE->setCurrentItem(plviOther); break; } default: { break; } } connectOptionsTreeWidget(); } /** */ void DCOptions::slotTabWidgetTransferCurrentChanged( int index ) { disconnectOptionsTreeWidget(); switch ( index ) { case TAB_TRANSFER_SHARES: { TreeWidget_OPTIONTREE->setCurrentItem(plviTransferShares); break; } case TAB_TRANSFER_DOWNLOADS: { TreeWidget_OPTIONTREE->setCurrentItem(plviTransferDownloads); break; } case TAB_TRANSFER_UPLOADS: { TreeWidget_OPTIONTREE->setCurrentItem(plviTransferUploads); break; } case TAB_TRANSFER_SETTINGS: { TreeWidget_OPTIONTREE->setCurrentItem(plviTransferSettings); break; } default: { break; } } connectOptionsTreeWidget(); } /** */ void DCOptions::slotTabWidgetConnectionCurrentChanged( int index ) { disconnectOptionsTreeWidget(); switch ( index ) { case TAB_CONNECTION_MODE: { TreeWidget_OPTIONTREE->setCurrentItem(plviConnectionMode); break; } case TAB_CONNECTION_SETTINGS: { TreeWidget_OPTIONTREE->setCurrentItem(plviConnectionSettings); break; } default: { break; } } connectOptionsTreeWidget(); } /** */ void DCOptions::slotTabWidgetGUICurrentChanged( int index ) { disconnectOptionsTreeWidget(); switch ( index ) { case TAB_GUI_GENERAL: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUIGeneral); break; } case TAB_GUI_TRANSFER: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUITransfer); break; } case TAB_GUI_CHAT: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUIChat); break; } case TAB_GUI_COLORS: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUIColors); break; } case TAB_GUI_COMMANDS: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUICommands); break; } case TAB_GUI_MENUS: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUIMenus); break; } case TAB_GUI_CLIENT: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUIClient); break; } case TAB_GUI_ICONS: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUIIcons); break; } case TAB_GUI_FILELIST: { TreeWidget_OPTIONTREE->setCurrentItem(plviGUIFilelistBrowser); break; } default: { break; } } connectOptionsTreeWidget(); } /** */ void DCOptions::slotAddUserMenuCommand() { DCUserCommandEditor * editor = new DCUserCommandEditor(this); if ( editor->exec() == QDialog::Accepted ) { DC_UserMenuCommand * umc = editor->GetUMC(); usercommands[usercommands.size()] = umc; QTreeWidgetItem * item = new QTreeWidgetItem( TreeWidget_MENU_COMMANDS ); item->setText( 0, umc->m_sName ); item->setText( 1, umc->m_sCommand ); } delete editor; } /** */ void DCOptions::slotEditUserMenuCommand() { QTreeWidgetItem * item = TreeWidget_MENU_COMMANDS->currentItem(); if ( item == 0 ) { return; } QModelIndex index = TreeWidget_MENU_COMMANDS->selectionModel()->currentIndex(); if ( !index.isValid() ) { return; } const int key = index.row(); DC_UserMenuCommand * umc = usercommands.value(key); if ( !umc ) { return; } DCUserCommandEditor * editor = new DCUserCommandEditor(this); editor->SetUMC(umc); if ( editor->exec() == QDialog::Accepted ) { usercommands.remove(key); delete umc; umc = editor->GetUMC(); usercommands[ key ] = umc; item->setText( 0, umc->m_sName ); item->setText( 1, umc->m_sCommand ); } delete editor; } /** */ void DCOptions::slotRemoveUserMenuCommand() { QTreeWidgetItem * item = TreeWidget_MENU_COMMANDS->currentItem(); if ( item == 0 ) { return; } QModelIndex index = TreeWidget_MENU_COMMANDS->selectionModel()->currentIndex(); if ( !index.isValid() ) { return; } int ret = QMessageBox::question( this, tr("Delete menu command?"), tr("Delete \"") + item->text(0) + QString("\"?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No ); if ( ret == QMessageBox::Yes ) { delete usercommands.take( index.row() ); delete item; // fix numbering QList remaining = usercommands.values(); usercommands.clear(); for ( int i = 0; i < remaining.size(); i++ ) { usercommands[i] = remaining[i]; } } } /** */ void DCOptions::slotUpUserMenuCommand() { QModelIndex index = TreeWidget_MENU_COMMANDS->selectionModel()->currentIndex(); if ( !index.isValid() ) { return; } int row = index.row(); if ( row == 0 ) { return; } if ( !usercommands.contains(row) || !usercommands.contains(row-1) ) { return; } DC_UserMenuCommand * umc1 = usercommands.take( row ); DC_UserMenuCommand * umc2 = usercommands.take( row - 1 ); usercommands[ row - 1 ] = umc1; usercommands[ row ] = umc2; QTreeWidgetItem * item1 = TreeWidget_MENU_COMMANDS->takeTopLevelItem( row ); TreeWidget_MENU_COMMANDS->insertTopLevelItem( row - 1, item1 ); TreeWidget_MENU_COMMANDS->setCurrentItem(item1); } /** */ void DCOptions::slotDownUserMenuCommand() { QModelIndex index = TreeWidget_MENU_COMMANDS->selectionModel()->currentIndex(); if ( !index.isValid() ) { return; } int row = index.row(); if ( row == TreeWidget_MENU_COMMANDS->topLevelItemCount() - 1 ) { return; } if ( !usercommands.contains(row) || !usercommands.contains(row+1) ) { return; } DC_UserMenuCommand * umc1 = usercommands.take( row ); DC_UserMenuCommand * umc2 = usercommands.take( row + 1 ); usercommands[ row + 1 ] = umc1; usercommands[ row ] = umc2; QTreeWidgetItem * item1 = TreeWidget_MENU_COMMANDS->takeTopLevelItem( row ); TreeWidget_MENU_COMMANDS->insertTopLevelItem( row + 1, item1 ); TreeWidget_MENU_COMMANDS->setCurrentItem(item1); } /** */ void DCOptions::slotUserMenuCommandsSelectionChanged() { QList selecteditems = TreeWidget_MENU_COMMANDS->selectedItems(); if ( selecteditems.size() != 1 ) { ToolButton_EDIT_USER_MENU_COMMAND->setEnabled(false); ToolButton_REMOVE_USER_MENU_COMMAND->setEnabled(false); ToolButton_UP_USER_MENU_COMMAND->setEnabled(false); ToolButton_DOWN_USER_MENU_COMMAND->setEnabled(false); } else { QTreeWidgetItem * selected = selecteditems.first(); ToolButton_EDIT_USER_MENU_COMMAND->setEnabled(true); ToolButton_REMOVE_USER_MENU_COMMAND->setEnabled(true); int row = TreeWidget_MENU_COMMANDS->indexOfTopLevelItem(selected); if ( row == 0 ) { ToolButton_UP_USER_MENU_COMMAND->setEnabled(false); } else { ToolButton_UP_USER_MENU_COMMAND->setEnabled(true); } if ( row == TreeWidget_MENU_COMMANDS->topLevelItemCount() - 1 ) { ToolButton_DOWN_USER_MENU_COMMAND->setEnabled(false); } else { ToolButton_DOWN_USER_MENU_COMMAND->setEnabled(true); } } } /** */ void DCOptions::slotUserMenuCommandsDoubleClicked( QTreeWidgetItem * item, int /* column */ ) { if ( item ) { TreeWidget_MENU_COMMANDS->setCurrentItem(item); slotEditUserMenuCommand(); } else { slotAddUserMenuCommand(); } } /** */ void DCOptions::slotContextMenuUserChatCommands( const QPoint & pos ) { QTreeWidgetItem * item = TreeWidget_CHAT_COMMANDS->itemAt(pos); bool enabled = (item != 0); QMenu * m = new QMenu(this); QAction * add = DCMenuHandler::addAction( m, emiADD ); QAction * edit = DCMenuHandler::addAction( m, emiEDIT, enabled ); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE, enabled ); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0 ) { return; } else if ( chosen == add ) { QTreeWidgetItem * newitem = new QTreeWidgetItem( TreeWidget_CHAT_COMMANDS ); newitem->setText( 0, "/s" ); newitem->setText( 1, "/sh somescript.sh" ); newitem->setFlags( newitem->flags() | Qt::ItemIsEditable ); } else if ( chosen == remove ) { delete item; } else if ( chosen == edit ) { TreeWidget_CHAT_COMMANDS->editItem( item, TreeWidget_CHAT_COMMANDS->columnAt( pos.x() ) ); } } /** */ void DCOptions::slotContextMenuAutoResponses( const QPoint & pos ) { QTreeWidgetItem * item = TreeWidget_AUTO_RESPONSES->itemAt(pos); bool enabled = (item != 0); QMenu * m = new QMenu(this); QAction * add = DCMenuHandler::addAction( m, emiADD ); QAction * edit = DCMenuHandler::addAction( m, emiEDIT, enabled ); QAction * remove = DCMenuHandler::addAction( m, emiREMOVE, enabled ); QAction * cs_yes = m->addAction(tr("Case sensitive")); cs_yes->setEnabled(enabled); QAction * cs_no = m->addAction(tr("Case insensitive")); cs_no->setEnabled(enabled); QAction * chosen = m->exec(QCursor::pos()); delete m; if ( chosen == 0) { return; } else if ( chosen == add ) { QTreeWidgetItem * newitem = new QTreeWidgetItem( TreeWidget_AUTO_RESPONSES ); newitem->setText( 0, tr("-trigger") ); newitem->setText( 1, tr("No") ); newitem->setText( 2, tr("response") ); newitem->setFlags( newitem->flags() | Qt::ItemIsEditable ); } else if ( chosen == edit ) { int column = TreeWidget_AUTO_RESPONSES->columnAt( pos.x() ); if ( (column == 0) || (column == 2) ) { TreeWidget_AUTO_RESPONSES->editItem( item, column ); } } else if ( chosen == remove ) { delete item; } else if ( chosen == cs_yes ) { item->setText(1, tr("Yes")); } else if ( chosen == cs_no ) { item->setText(1, tr("No")); } } /** */ void DCOptions::setupIconThemeComboBoxes() { ComboBox_APPLICATION_ICONS->clear(); ComboBox_USERLIST_ICONS->clear(); ComboBox_EMOTICONS->clear(); setupIconThemeComboBox( ComboBox_APPLICATION_ICONS, "appl" ); setupIconThemeComboBox( ComboBox_USERLIST_ICONS, "user" ); setupIconThemeComboBox( ComboBox_EMOTICONS, "emot" ); } /** */ void DCOptions::setupIconThemeComboBox( QComboBox * box, QString icontype ) { QDir dir; dir.setPath( g_pConfig->GetValknutDataPath() + "/icons/" + icontype + "/" ); dir.setFilter( QDir::Dirs | QDir::Readable | QDir::Executable ); dir.setSorting( QDir::Name ); const QFileInfoList iconslist = dir.entryInfoList(); if ( iconslist.size() > 0 ) { for (int i = 0; i < iconslist.size(); ++i) { QFileInfo fi = iconslist.at(i); if ( (fi.fileName() == ".") || (fi.fileName() == "..") ) { // skip } else { box->addItem(fi.fileName()); } } } } /** */ void DCOptions::slotGenerateKeyCert() { QProcess * proc1 = 0; QProcess * proc2 = 0; QStringList args1; QStringList args2; QString keyname = LineEdit_TRANSFERKEY->text(); QString certname = LineEdit_TRANSFERCERT->text(); QFile key; QFile cert; QDir keypath; QDir certpath; PushButton_GENERATE_CERT->setEnabled(false); if ( keyname.isEmpty() ) { keyname = QString(g_pConfig->GetConfigPath().Data()) + QString("/ssl/valknut.key"); } if ( certname.isEmpty() ) { certname = QString(g_pConfig->GetConfigPath().Data()) + QString("/ssl/valknut.cert"); } keyname.replace("//", "/"); certname.replace("//", "/"); key.setFileName(keyname); cert.setFileName(certname); if ( key.exists() || cert.exists() ) { int ret = QMessageBox::question( this, tr("Overwrite?"), tr("Replace existing key/cert?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No ); if ( ret == QMessageBox::No ) { PushButton_GENERATE_CERT->setEnabled(true); return; } } keypath.setPath(QFileInfo(keyname).path()); certpath.setPath(QFileInfo(certname).path()); if ( keypath.isRelative() ) { keyname.prepend(QDir::separator()); keyname.prepend(QDir::currentPath()); keypath.setPath(QFileInfo(keyname).absolutePath()); } if ( certpath.isRelative() ) { certname.prepend(QDir::separator()); certname.prepend(QDir::currentPath()); certpath.setPath(QFileInfo(certname).absolutePath()); } if (keypath.exists() == false) { if ( keypath.mkdir(keypath.path()) == false ) { QMessageBox::critical( this, tr("Could not create folder for key"), tr("Could not create ") + keypath.path() ); PushButton_GENERATE_CERT->setEnabled(true); return; } } if (certpath.exists() == false) { if ( certpath.mkdir(certpath.path()) == false ) { QMessageBox::critical( this, tr("Could not create folder for cert"), tr("Could not create ") + certpath.path() ); PushButton_GENERATE_CERT->setEnabled(true); return; } } proc1 = new QProcess(); proc1->setWorkingDirectory(keypath.path()); args1 << "genrsa"; args1 << "-out"; args1 << keyname; args1 << "2048"; proc1->start( "openssl", args1 ); proc1->waitForFinished( 5000 ); if ( proc1->state() != QProcess::NotRunning ) { proc1->terminate(); proc1->waitForFinished( 1000 ); if ( proc1->state() != QProcess::NotRunning ) { proc1->kill(); } } if ( (proc1->exitStatus() == QProcess::CrashExit) || (proc1->exitCode() != 0) ) { QMessageBox::critical( this, tr("Error occurred while running openssl 1"), QString(proc1->readAllStandardError()) + "\n\n" + tr("Make sure the openssl program is in your PATH.") ); delete proc1; PushButton_GENERATE_CERT->setEnabled(true); return; } delete proc1; proc2 = new QProcess(this); proc2->setWorkingDirectory(certpath.path()); args2 << "req"; args2 << "-x509"; args2 << "-new"; args2 << "-batch"; args2 << "-days"; args2 << "3650"; args2 << "-key"; args2 << keyname; args2 << "-out"; args2 << certname; args2 << "-subj"; args2 << QString("/CN=Valknut-") + LineEdit_NICK->text(); proc2->start( "openssl", args2 ); proc2->waitForFinished( 5000 ); if ( proc2->state() != QProcess::NotRunning ) { proc2->terminate(); proc2->waitForFinished( 1000 ); if ( proc2->state() != QProcess::NotRunning ) { proc2->kill(); } } if ( (proc2->exitStatus() == QProcess::CrashExit) || (proc2->exitCode() != 0) ) { QMessageBox::critical( this, tr("Error occurred while running openssl 2"), QString(proc2->readAllStandardError()) + "\n\n" + tr("Make sure the openssl program is in your PATH.") ); delete proc2; PushButton_GENERATE_CERT->setEnabled(true); return; } delete proc2; LineEdit_TRANSFERKEY->setText(keyname); LineEdit_TRANSFERCERT->setText(certname); // set them even if dialog is cancelled since files have been created g_pConfig->SetTransferKey(keyname.toAscii().constData()); g_pConfig->SetTransferCert(certname.toAscii().constData()); PushButton_GENERATE_CERT->setEnabled(true); } valknut-0.4.9/valknut/searchspymodel.cpp0000664000076400007640000001555311131661212016563 0ustar ejsejs/*************************************************************************** searchspymodel.cpp - Search Spy Model implementation ------------------- begin : Sat Nov 3 2007 copyright : (C) 2007 by Edward Sheldrake email : ejs1920@yahoo.co.uk ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * ***************************************************************************/ #include "searchspymodel.h" /* have to do all the sorting ourself */ #include /** Initialises values */ SearchSpyItem::SearchSpyItem( QString search ) { text = search; count = 1; lastseen = QDateTime::currentDateTime(); // invalid initial value index = -1; } /** */ SearchSpyModel::SearchSpyModel( QObject * parent ) : QAbstractItemModel( parent ) { sortColumn = 0; sortOrder = Qt::AscendingOrder; } /** delete all items in model */ SearchSpyModel::~SearchSpyModel() { clear(); } /** */ int SearchSpyModel::rowCount( const QModelIndex & /* index */ ) const { return itemList.size(); } /** */ int SearchSpyModel::columnCount( const QModelIndex & /* index */ ) const { return 3; } /** */ QVariant SearchSpyModel::data( const QModelIndex & index, int role ) const { if ( index.isValid() ) { SearchSpyItem * item = itemList.at( index.row() ); if ( item ) { if ( role == Qt::DisplayRole ) { switch ( index.column() ) { case 0: return item->text; case 1: return item->count; case 2: return item->lastseen.toString( Qt::TextDate ); } } else if ( role == Qt::TextAlignmentRole ) { if ( index.column() == 1 ) { return Qt::AlignRight; } } } } return QVariant(); } /** */ QVariant SearchSpyModel::headerData( int section, Qt::Orientation orientation, int role ) const { if ( (orientation == Qt::Horizontal) && (role == Qt::DisplayRole) ) { switch ( section ) { case 0: return tr("Text"); case 1: return tr("Count"); case 2: return tr("Time"); } } return QVariant(); } /** */ bool SpyItemQueryLessThan( const SearchSpyItem * l, const SearchSpyItem * r ) { return QString::localeAwareCompare( l->text, r->text ) < 0; } /** */ bool SpyItemCountLessThan( const SearchSpyItem * l, const SearchSpyItem * r ) { return ( l->count < r->count ); } /** */ bool SpyItemTimeLessThan( const SearchSpyItem * l, const SearchSpyItem * r ) { return ( l->lastseen < r->lastseen ); } /** */ bool SpyItemQueryGreaterThan( const SearchSpyItem * l, const SearchSpyItem * r ) { return QString::localeAwareCompare( l->text, r->text ) > 0; } /** */ bool SpyItemCountGreaterThan( const SearchSpyItem * l, const SearchSpyItem * r ) { return ( l->count > r->count ); } /** */ bool SpyItemTimeGreaterThan( const SearchSpyItem * l, const SearchSpyItem * r ) { return ( l->lastseen > r->lastseen ); } /** */ void SearchSpyModel::sort( int column, Qt::SortOrder order ) { emit layoutAboutToBeChanged(); // save vales so we can insert new items at correct place sortColumn = column; sortOrder = order; if ( order == Qt::AscendingOrder ) { switch ( column ) { case 0: qStableSort( itemList.begin(), itemList.end(), SpyItemQueryLessThan ); break; case 1: qStableSort( itemList.begin(), itemList.end(), SpyItemCountLessThan ); break; case 2: qStableSort( itemList.begin(), itemList.end(), SpyItemTimeLessThan ); break; } } else if ( order == Qt::DescendingOrder ) { switch ( column ) { case 0: qStableSort( itemList.begin(), itemList.end(), SpyItemQueryGreaterThan ); break; case 1: qStableSort( itemList.begin(), itemList.end(), SpyItemCountGreaterThan ); break; case 2: qStableSort( itemList.begin(), itemList.end(), SpyItemTimeGreaterThan ); break; } } for ( int i = 0; i < itemList.size(); ++i ) { itemList.at(i)->index = i; } emit layoutChanged(); } /** */ QModelIndex SearchSpyModel::index( int row, int column, const QModelIndex & parent ) const { if ( !hasIndex( row, column, parent ) ) { return QModelIndex(); } return createIndex( row, column ); } /** */ QModelIndex SearchSpyModel::parent( const QModelIndex & /* parent */ ) const { return QModelIndex(); } /** */ void SearchSpyModel::search( QString query ) { SearchSpyItem * item = itemHash.value( query ); if ( item ) { item->count++; item->lastseen = QDateTime::currentDateTime(); QModelIndex topLeft = createIndex( item->index, 1 ); QModelIndex bottomRight = createIndex( item->index, 2 ); emit dataChanged( topLeft, bottomRight ); /* move item to new position, simplest way is to re-sort */ if ( sortColumn > 0 ) { sort( sortColumn, sortOrder ); } } else { emit layoutAboutToBeChanged(); item = new SearchSpyItem( query ); itemHash[ query ] = item; // find position in list for new item QList::iterator it; if ( sortOrder == Qt::AscendingOrder ) { switch ( sortColumn ) { case 0: it = qLowerBound( itemList.begin(), itemList.end(), item, SpyItemQueryLessThan ); break; case 1: it = qLowerBound( itemList.begin(), itemList.end(), item, SpyItemCountLessThan ); break; case 2: it = qLowerBound( itemList.begin(), itemList.end(), item, SpyItemTimeLessThan ); break; } } else if ( sortOrder == Qt::DescendingOrder ) { switch ( sortColumn ) { case 0: it = qLowerBound( itemList.begin(), itemList.end(), item, SpyItemQueryGreaterThan ); break; case 1: it = qLowerBound( itemList.begin(), itemList.end(), item, SpyItemCountGreaterThan ); break; case 2: it = qLowerBound( itemList.begin(), itemList.end(), item, SpyItemTimeGreaterThan ); break; } } int i; if ( it == itemList.begin() ) { i = 0; } else if ( it == itemList.end() ) { i = itemList.size(); } else { i = (*it++)->index; } item->index = i; itemList.insert( i, item ); i++; // fix indexes for ( ; i < itemList.size(); ++i ) { itemList.at(i)->index++; } emit layoutChanged(); } } /** */ void SearchSpyModel::clear() { emit layoutAboutToBeChanged(); /* temp list to avoid having deleted pointers in the containers briefly */ QList tmp = itemList; itemList.clear(); itemHash.clear(); for ( QList::const_iterator it = tmp.constBegin(); it != tmp.constEnd(); ++it ) { delete *it; } emit layoutChanged(); } valknut-0.4.9/ChangeLog0000664000076400007640000000002710523776621013130 0ustar ejsejshttp://dcgui.berlios.devalknut-0.4.9/valknut.spec.in0000664000076400007640000000461011112370510014303 0ustar ejsejsName: @PACKAGE@ Version: @PACKAGE_VERSION@ Release: 0%{?dist}.ejs Summary: Valknut is a QT Direct Connect client Group: Applications/Internet License: GPL URL: http://sourceforge.net/projects/wxdcgui/ Source0: http://dl.sourceforge.net/wxdcgui/%{name}-%{version}.tar.bz2 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: dclib-devel = 0.3.23 BuildRequires: qt-devel >= 4.3 %description Valknut is a program the uses the Direct Connect protocol. It is compatible with other DC clients, such as the original DC from Neomodus, DC++ and derivatives. Valknut also interoperates with all common DC hub software. %prep %setup -q %build %configure %{__make} %install %{__rm} -rf %{buildroot} %{__make} DESTDIR=%{buildroot} install %clean %{__rm} -rf %{buildroot} %files %defattr(-,root,root,-) %doc AUTHORS README COPYING %{_bindir}/valknut %{_datadir}/valknut %{_mandir}/man1/valknut.1* %{_datadir}/icons/hicolor/*/apps/valknut.png %{_datadir}/applications/valknut.desktop %{_datadir}/pixmaps/valknut.png %changelog * Wed Jan 10 2007 Edward Sheldrake 0.3.8-1 - replace antique .spec.in with one based on Fedora Extras .spec - remove extra desktop file and icon sources * Mon Jan 3 2007 Luke Macken 0.3.8-1 - 0.3.8 from new upstream - Remove valknut-0.3.7-extra-qualification.patch * Sun Sep 3 2006 Luke Macken 0.3.7-9 - Rebuild for FC6 * Sun Apr 30 2006 Luke Macken 0.3.7-8 - Execute with --disable-tray in desktop file, since it is horribly broken. * Tue Feb 28 2006 Luke Macken 0.3.7-7 - Add patch to remove extra qualification build error * Wed Feb 15 2006 Luke Macken 0.3.7-6 - Rebuild for FE5 * Wed Nov 09 2005 Luke Macken 0.3.7-5 - Rebuild for new openssl * Tue Oct 03 2005 Luke Macken 0.3.7-4 - Add openssl-devel to BuildRequires * Mon Oct 03 2005 Luke Macken 0.3.7-3 - Add bzip2-devel to BuildRequires * Mon Oct 03 2005 Luke Macken 0.3.7-2 - Requires desktop-file-utils - Use environment variables instead of hardcoding QTDIR - Remove duplicate category from desktop file - Use -p when calling 'install' * Thu Sep 29 2005 Luke Macken 0.3.7-1 - Packaged for Fedora Extras valknut-0.4.9/m4/0000775000076400007640000000000011144264622011670 5ustar ejsejsvalknut-0.4.9/m4/ltversion.m40000644000076400007640000000127511144264622014162 0ustar ejsejs# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # Generated from ltversion.in. # serial 3012 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.2.6]) m4_define([LT_PACKAGE_REVISION], [1.3012]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6' macro_revision='1.3012' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) valknut-0.4.9/m4/ltsugar.m40000644000076400007640000001042411144264622013612 0ustar ejsejs# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59 which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) valknut-0.4.9/m4/valknut-qt4.m40000664000076400007640000001016211102420035014306 0ustar ejsejs#serial 1 # Find QT4 libraries either with pkg-config or as OS X frameworks AC_DEFUN([VALKNUT_FIND_QT4], [ AC_ARG_ENABLE([frameworks], [AS_HELP_STRING([--enable-frameworks],[Use OS X frameworks for QT4 (default=disabled)])], [ USE_FRAMEWORKS="$enableval" ], [ USE_FRAMEWORKS="no" ] ) AM_CONDITIONAL([USE_FRAMEWORKS], [test x$USE_FRAMEWORKS = "xyes"]) AC_ARG_WITH([framework-dir], [AS_HELP_STRING([--with-framework-dir=DIR],[Specify the directory containing QtCore.framework (default=/Library/Frameworks)])], [ FRAMEWORK_DIR="$withval" ], [ FRAMEWORK_DIR="/Library/Frameworks" ] ) AC_SUBST(FRAMEWORK_DIR) AC_MSG_CHECKING([how to find QT4 libraries]) if test "x${USE_FRAMEWORKS}" = "xyes" then AC_MSG_RESULT([in OS X frameworks]) else AC_MSG_RESULT([normal libraries]) fi if test "x${USE_FRAMEWORKS}" = "xyes" then AC_MSG_NOTICE([Assuming QT >= 4.3 development frameworks are installed]) QTCORE_LIBS="-Wl,-framework,CoreFoundation,-framework,QtCore" QTCORE_CFLAGS="-I${FRAMEWORK_DIR}/QtCore.framework/Versions/Current/Headers" QTGUI_LIBS="-Wl,-framework,QtGui" QTGUI_CFLAGS="-I${FRAMEWORK_DIR}/QtGui.framework/Versions/Current/Headers" QTNETWORK_LIBS="-Wl,-framework,QtNetwork" QTNETWORK_CFLAGS="-I${FRAMEWORK_DIR}/QtNetwork.framework/Versions/Current/Headers" QT3SUPPORT_LIBS="-Wl,-framework,Qt3Support" QT3SUPPORT_CFLAGS="-I${FRAMEWORK_DIR}/Qt3Support.framework/Versions/Current/Headers -DQT3_SUPPORT_WARNINGS" else PKG_CHECK_MODULES([QTCORE], [QtCore >= 4.3.0]) PKG_CHECK_MODULES([QTGUI], [QtGui >= 4.3.0]) PKG_CHECK_MODULES([QTNETWORK], [QtNetwork >= 4.3.0]) PKG_CHECK_MODULES([QT3SUPPORT], [Qt3Support >= 4.3.0]) QT3SUPPORT_CFLAGS="$QT3SUPPORT_CFLAGS -DQT3_SUPPORT_WARNINGS" fi AC_SUBST(QTCORE_LIBS) AC_SUBST(QTCORE_CFLAGS) AC_SUBST(QTGUI_LIBS) AC_SUBST(QTGUI_CFLAGS) AC_SUBST(QTNETWORK_LIBS) AC_SUBST(QTNETWORK_CFLAGS) AC_SUBST(QT3SUPPORT_LIBS) AC_SUBST(QT3SUPPORT_CFLAGS) ac_save_LIBS="$LIBS" ac_save_CPPFLAGS="$CPPFLAGS" AC_MSG_CHECKING([if the QtCore flags work]) LIBS="$LIBS $QTCORE_LIBS" CPPFLAGS="$CPPFLAGS $QTCORE_CFLAGS" AC_LINK_IFELSE([AC_LANG_SOURCE( [[ #include int main() { QStringList * list = new QStringList(); delete list; return 0; } ]] )], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([no - the test QtCore program failed to link, check config.log for details]) ] ) AC_MSG_CHECKING([if the QtGui flags work]) LIBS="$LIBS $QTGUI_LIBS" CPPFLAGS="$CPPFLAGS $QTGUI_CFLAGS" AC_LINK_IFELSE([AC_LANG_SOURCE( [[ #include int main() { QDialog * dialog = new QDialog(); delete dialog; return 0; } ]] )], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([no - the test QtGui program failed to link, check config.log for details]) ] ) AC_MSG_CHECKING([if the QtNetwork flags work]) LIBS="$LIBS $QTNETWORK_LIBS" CPPFLAGS="$CPPFLAGS $QTNETWORK_CFLAGS" AC_LINK_IFELSE([AC_LANG_SOURCE( [[ #include int main() { QHttp * http = new QHttp(); delete http; return 0; } ]] )], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([no - the test QtNetwork program failed to link, check config.log for details]) ] ) AC_MSG_CHECKING([if the Qt3Support flags work]) LIBS="$LIBS $QT3SUPPORT_LIBS" CPPFLAGS="$CPPFLAGS $QT3SUPPORT_CFLAGS" AC_LINK_IFELSE([AC_LANG_SOURCE( [[ #include int main() { Q3ListView * listview = new Q3ListView(); delete listview; return 0; } ]] )], [ AC_MSG_RESULT([yes]) ], [ AC_MSG_ERROR([no - the test Qt3Support program failed to link, check config.log for details]) ] ) LIBS="$ac_save_LIBS" CPPFLAGS="$ac_save_CPPFLAGS" dnl find QT4 programs if test "x${USE_FRAMEWORKS}" = "xyes" then QTPREFIX="/Developer/Tools" else QTPREFIX="`pkg-config --variable=prefix QtCore`/bin" fi AC_PATH_PROGS([UIC], [uic-qt4 uic], [], [$QTPREFIX:$PATH]) AC_PATH_PROGS([MOC], [moc-qt4 moc], [], [$QTPREFIX:$PATH]) AC_PATH_PROGS([LRELEASE], [lrelease-qt4 lrelease], [], [$QTPREFIX:$PATH]) AC_PATH_PROGS([LUPDATE], [lupdate-qt4 lupdate], [], [$QTPREFIX:$PATH]) ] ) valknut-0.4.9/m4/ltoptions.m40000644000076400007640000002724211144264621014171 0ustar ejsejs# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option `$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl `shared' nor `disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [0], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [0], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the `shared' and # `disable-shared' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the `static' and # `disable-static' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the `fast-install' # and `disable-fast-install' LT_INIT options. # DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," for pkg in $enableval; do IFS="$lt_save_ifs" if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS="$lt_save_ifs" ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the `pic-only' and `no-pic' # LT_INIT options. # MODE is either `yes' or `no'. If omitted, it defaults to `both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the `pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) valknut-0.4.9/m4/libtool.m40000644000076400007640000077317611144264621013620 0ustar ejsejs# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # GNU Libtool is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2 of # the License, or (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 56 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl _LT_PROG_ECHO_BACKSLASH case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a `.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld="$lt_cv_prog_gnu_ld" old_CC="$CC" old_CFLAGS="$CFLAGS" # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from `configure', and `config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # `config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain="$ac_aux_dir/ltmain.sh" ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the `libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to `config.status' so that its # declaration there will have the same value as in `configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "X$][$1" | $Xsed -e "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "X$" | $Xsed -e "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags="_LT_TAGS"dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the `libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into `config.status', and then the shell code to quote escape them in # for loops in `config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\[$]0 --fallback-echo"')dnl " lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ;; esac _LT_OUTPUT_LIBTOOL_INIT ]) # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ \`$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2008 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test $[#] != 0 do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try \`$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try \`$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) fi ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options which allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}" ; then setopt NO_GLOB_SUBST fi cfgfile="${ofile}T" trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_XSI_SHELLFNS sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' TIMESTAMP='$TIMESTAMP' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "${LT_MULTI_MODULE}"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS="$save_LDFLAGS" ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; 10.[[012]]*) _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; then _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' fi if test "$DSYMUTIL" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" m4_if([$1], [CXX], [ if test "$lt_cv_apple_cc_single_mod" != "yes"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX # ----------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. m4_defun([_LT_PROG_ECHO_BACKSLASH], [_LT_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac ECHO=${lt_ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF [$]* _LT_EOF exit 0 fi # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(lt_ECHO) ]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that does not interpret backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE="32" ;; *ELF-64*) HPUX_IA64_MODE="64" ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; ppc*-*linux*|powerpc*-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS="$CFLAGS" CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks="$enable_libtool_lock" ])# _LT_ENABLE_LOCK # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [AC_CHECK_TOOL(AR, ar, false) test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1]) AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS="$save_LDFLAGS" ]) if test x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring="ABCD" case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8 ; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test "X"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n $lt_cv_sys_max_cmd_len ; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "$cross_compiling" = yes; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line __oline__ "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif void fnord() { int i=42;} int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen="load_add_on" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen="dlopen" lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ lt_cv_dlopen="dyld" lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen="shl_load"], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen="dlopen"], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) ]) ]) ]) ]) ]) ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS="$LDFLAGS" wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS="$LIBS" LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS="$save_CPPFLAGS" LDFLAGS="$save_LDFLAGS" LIBS="$save_LIBS" ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links="nottested" if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test "$hard_links" = no; then AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", [Define to the sub-directory in which libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary. lt_tmp_lt_search_path_spec= lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path/$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" else test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO $lt_tmp_lt_search_path_spec | awk ' BEGIN {RS=" "; FS="/|\n";} { lt_foo=""; lt_count=0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo="/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=".so" postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='${libname}${release}${shared_ext}$major' ;; aix[[4-9]]*) version_type=linux need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; then # AIX 5 supports IA64 library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line `#! .'. This would cause the generated library to # depend on `.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' else # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='${libname}${release}.a $libname.a' soname_spec='${libname}${release}${shared_ext}$major' fi shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='${libname}${shared_ext}' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no case $GCC,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' ;; esac ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' soname_spec='${libname}${release}${major}$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd1*) dynamic_linker=no ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[123]]*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; gnu*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' if test "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555. postinstall_cmds='chmod 555 $lib' ;; interix[[3-9]]*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test "$lt_cv_prog_gnu_ld" = yes; then version_type=linux else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='${libname}${release}${shared_ext}$major' library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec ;then version_type=linux library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' soname_spec='$libname${shared_ext}.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=freebsd-elf need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test "$with_gnu_ld" = yes; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux need_lib_prefix=no need_version=no library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' soname_spec='${libname}${release}${shared_ext}$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([], [sys_lib_dlsearch_path_spec], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD="$MAGIC_CMD" lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f $ac_dir/$1; then lt_cv_path_MAGIC_CMD="$ac_dir/$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS="$lt_save_ifs" MAGIC_CMD="$lt_save_MAGIC_CMD" ;; esac]) MAGIC_CMD="$lt_cv_path_MAGIC_CMD" if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program which can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD="$ac_prog" ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test "$with_gnu_ld" = yes; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD="$ac_dir/$ac_prog" # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; gnu*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be Linux ELF. linux* | k*bsd*-gnu) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method == "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM="$NM" else lt_nm_to_check="${ac_tool_prefix}nm" if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS="$lt_save_ifs" test -z "$ac_dir" && ac_dir=. tmp_nm="$ac_dir/$lt_tmp_nm" if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then # Check to see if the nm accepts a BSD-compat flag. # Adding the `sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS="$lt_save_ifs" done : ${lt_cv_path_NM=no} fi]) if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) AC_SUBST([DUMPBIN]) if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM="-lm") ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test "$host_cpu" = ia64; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function # and D for any global variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_save_CFLAGS" else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' if test "$host_cpu" != ia64; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64 which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC*) # IBM XL 8.0 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the `-m68020' flag to GCC prevents building anything better, # like `-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu) case $cc_basename in # old Intel for x86_64 which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl*) # IBM XL C 8.0/Fortran 10.1 on PPC _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Sun\ F*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec ;then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms which do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='${wl}' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to modify your PATH *** so that a non-GNU linker is found, and then restart. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu) tmp_diet=no if test "$host_os" = linux-dietlibc; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test "$tmp_diet" = no then tmp_addflag= tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi case $cc_basename in xlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to AIX nm, but means don't demangle with GNU nm if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GCC" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=".dll" # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `$ECHO "X$deplibs" | $Xsed -e '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; hpux10*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test "$GCC" = yes -a "$with_gnu_ld" = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE(int foo(void) {}, _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' else case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' ;; esac fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test "$GCC" = yes; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. GCC discards it without `$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test "$GCC" = yes; then _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test "x$host_vendor" = xsequent; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' if test "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test "$enable_shared" = yes && test "$GCC" = yes; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_MSG_CHECKING([whether -lc should be explicitly linked in]) $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then _LT_TAGVAR(archive_cmds_need_lc, $1)=no else _LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* AC_MSG_RESULT([$_LT_TAGVAR(archive_cmds_need_lc, $1)]) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], [[If ld is used when linking, flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting ${shlibpath_var} if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [fix_srcfile_path], [1], [Fix the shell variable $srcfile for the compiler]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC="$CC" AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report which library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_PROG_CXX # ------------ # Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ # compiler, we have our own version here. m4_defun([_LT_PROG_CXX], [ pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) AC_PROG_CXX if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_CXX dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_CXX], []) # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to `libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [AC_REQUIRE([_LT_PROG_CXX])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_caught_CXX_error" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test "$GXX" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test "$GXX" = yes; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='${wl}' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test "$host_cpu" = ia64; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag="" else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' if test "$GXX" = yes; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`${CC} -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test "$aix_use_runtimelinking" = yes; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd[[12]]*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; gnu*) ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test $with_gnu_ld = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]]* | *pgcpp\ [[1-5]]*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' if test "x$supports_anon_versioning" = xyes; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' fi output_verbose_link_cmd=echo else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands `-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='echo' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test "$GXX" = yes && test "$with_gnu_ld" = no; then _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We can NOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no _LT_TAGVAR(GCC, $1)="$GXX" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ]) dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p in -L* | -R*) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)="${prev}${p}" else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" fi fi ;; *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test "$pre_test_object_deps_done" = no; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)="$p" else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)="$p" else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_PROG_F77 # ------------ # Since AC_PROG_F77 is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_F77], [ pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) AC_PROG_F77 if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_F77 dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_F77], []) # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_REQUIRE([_LT_PROG_F77])dnl AC_LANG_PUSH(Fortran 77) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_F77" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${F77-"f77"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$G77" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_PROG_FC # ----------- # Since AC_PROG_FC is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_FC], [ pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) AC_PROG_FC if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_FC dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_FC], []) # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_REQUIRE([_LT_PROG_FC])dnl AC_LANG_PUSH(Fortran) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test "$_lt_disable_FC" != yes; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC CC=${FC-"f95"} compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test "$can_build_shared" = "no" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" _LT_TAGVAR(LD, $1)="$LD" ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC="$lt_save_CC" fi # test "$_lt_disable_FC" != yes AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)="$LD" _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC="$lt_save_CC" ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to `libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code="$lt_simple_compile_test_code" # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC="$CC" lt_save_GCC=$GCC GCC= CC=${RC-"windres"} compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC="$lt_save_CC" ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f $lt_ac_sed && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test $lt_ac_count -gt 10 && break lt_ac_count=`expr $lt_ac_count + 1` if test $lt_ac_count -gt $lt_ac_max; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PROG_XSI_SHELLFNS # --------------------- # Bourne and XSI compatible variants of some useful shell functions. m4_defun([_LT_PROG_XSI_SHELLFNS], [case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $[*] )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } dnl func_dirname_and_basename dnl A portable version of this function is already defined in general.m4sh dnl so there is no need for it here. # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[[^=]]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$[@]"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]+=\$[2]" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]=\$$[1]\$[2]" } _LT_EOF ;; esac ]) valknut-0.4.9/m4/lt~obsolete.m40000644000076400007640000001311311144264622014501 0ustar ejsejs# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 4 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) valknut-0.4.9/m4/pkg.m40000664000076400007640000001206311014655757012726 0ustar ejsejs# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- # # Copyright © 2004 Scott James Remnant . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # PKG_PROG_PKG_CONFIG([MIN-VERSION]) # ---------------------------------- AC_DEFUN([PKG_PROG_PKG_CONFIG], [m4_pattern_forbid([^_?PKG_[A-Z_]+$]) m4_pattern_allow([^PKG_CONFIG(_PATH)?$]) AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility])dnl if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) fi if test -n "$PKG_CONFIG"; then _pkg_min_version=m4_default([$1], [0.9.0]) AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) PKG_CONFIG="" fi fi[]dnl ])# PKG_PROG_PKG_CONFIG # PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) # # Check to see whether a particular set of modules exists. Similar # to PKG_CHECK_MODULES(), but does not set variables or print errors. # # # Similar to PKG_CHECK_MODULES, make sure that the first instance of # this or PKG_CHECK_MODULES is called, or make sure to call # PKG_CHECK_EXISTS manually # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_EXISTS], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl if test -n "$PKG_CONFIG" && \ AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then m4_ifval([$2], [$2], [:]) m4_ifvaln([$3], [else $3])dnl fi]) # _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) # --------------------------------------------- m4_define([_PKG_CONFIG], [if test -n "$$1"; then pkg_cv_[]$1="$$1" elif test -n "$PKG_CONFIG"; then PKG_CHECK_EXISTS([$3], [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`], [pkg_failed=yes]) else pkg_failed=untried fi[]dnl ])# _PKG_CONFIG # _PKG_SHORT_ERRORS_SUPPORTED # ----------------------------- AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], [AC_REQUIRE([PKG_PROG_PKG_CONFIG]) if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then _pkg_short_errors_supported=yes else _pkg_short_errors_supported=no fi[]dnl ])# _PKG_SHORT_ERRORS_SUPPORTED # PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], # [ACTION-IF-NOT-FOUND]) # # # Note that if there is a possibility the first call to # PKG_CHECK_MODULES might not happen, you should be sure to include an # explicit call to PKG_PROG_PKG_CONFIG in your configure.ac # # # -------------------------------------------------------------- AC_DEFUN([PKG_CHECK_MODULES], [AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl pkg_failed=no AC_MSG_CHECKING([for $1]) _PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) _PKG_CONFIG([$1][_LIBS], [libs], [$2]) m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS and $1[]_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.]) if test $pkg_failed = yes; then _PKG_SHORT_ERRORS_SUPPORTED if test $_pkg_short_errors_supported = yes; then $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors "$2" 2>&1` else $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors "$2" 2>&1` fi # Put the nasty error message in config.log where it belongs echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD ifelse([$4], , [AC_MSG_ERROR(dnl [Package requirements ($2) were not met: $$1_PKG_ERRORS Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. _PKG_TEXT ])], [AC_MSG_RESULT([no]) $4]) elif test $pkg_failed = untried; then ifelse([$4], , [AC_MSG_FAILURE(dnl [The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. _PKG_TEXT To get pkg-config, see .])], [$4]) else $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS $1[]_LIBS=$pkg_cv_[]$1[]_LIBS AC_MSG_RESULT([yes]) ifelse([$3], , :, [$3]) fi[]dnl ])# PKG_CHECK_MODULES valknut-0.4.9/Makefile.in0000664000076400007640000006705011144264654013432 0ustar ejsejs# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Info.plist.in \ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ $(srcdir)/config.h.in $(srcdir)/valknut.lsm.in \ $(srcdir)/valknut.spec.in $(top_srcdir)/configure AUTHORS \ COPYING ChangeLog INSTALL NEWS TODO admin/config.guess \ admin/config.sub admin/depcomp admin/install-sh \ admin/ltmain.sh admin/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/m4/pkg.m4 $(top_srcdir)/m4/valknut-qt4.m4 \ $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = valknut.spec valknut.lsm Info.plist SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CXX = @CXX@ CXXCPP = @CXXCPP@ CXXDEPMODE = @CXXDEPMODE@ CXXFLAGS = @CXXFLAGS@ CYGPATH_W = @CYGPATH_W@ DCLIB_CFLAGS = @DCLIB_CFLAGS@ DCLIB_LIBS = @DCLIB_LIBS@ DEBUGCOMPILE = @DEBUGCOMPILE@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ FRAMEWORK_DIR = @FRAMEWORK_DIR@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LRELEASE = @LRELEASE@ LTLIBOBJS = @LTLIBOBJS@ LUPDATE = @LUPDATE@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ MOC = @MOC@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = /usr/bin/otool OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_FLAGS = @PACKAGE_FLAGS@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ PKG_CONFIG = @PKG_CONFIG@ QT3SUPPORT_CFLAGS = @QT3SUPPORT_CFLAGS@ QT3SUPPORT_LIBS = @QT3SUPPORT_LIBS@ QTCORE_CFLAGS = @QTCORE_CFLAGS@ QTCORE_LIBS = @QTCORE_LIBS@ QTGUI_CFLAGS = @QTGUI_CFLAGS@ QTGUI_LIBS = @QTGUI_LIBS@ QTNETWORK_CFLAGS = @QTNETWORK_CFLAGS@ QTNETWORK_LIBS = @QTNETWORK_LIBS@ RANLIB = @RANLIB@ SED = @SED@ SERIAL = @SERIAL@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ UIC = @UIC@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ 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@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I m4 AUTOMAKE_OPTIONS = gnu INSTALL_DIR = /usr/bin/install -d -m 755 HDIUTIL = /usr/bin/hdiutil OSX_BUNDLE_NAME = Valknut OSX_APP_DIR = $(OSX_BUNDLE_NAME).app ICONS_DIR = $(PACKAGE)/icons OSX_ICONS_TARGET = $(OSX_APP_DIR)/icons OSX_CNT_TARGET = $(OSX_APP_DIR)/Contents OSX_MACOS_TARGET = $(OSX_CNT_TARGET)/MacOS OSX_RSC_TARGET = $(OSX_CNT_TARGET)/Resources OSX_DMG_TARGET = "$(OSX_BUNDLE_NAME) $(PACKAGE_VERSION)" SUBDIRS = valknut all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) cd $(top_srcdir) && $(AUTOHEADER) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 valknut.spec: $(top_builddir)/config.status $(srcdir)/valknut.spec.in cd $(top_builddir) && $(SHELL) ./config.status $@ valknut.lsm: $(top_builddir)/config.status $(srcdir)/valknut.lsm.in cd $(top_builddir) && $(SHELL) ./config.status $@ Info.plist: $(top_builddir)/config.status $(srcdir)/Info.plist.in cd $(top_builddir) && $(SHELL) ./config.status $@ mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d $(distdir) || mkdir $(distdir) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ else \ test -f $(distdir)/$$file \ || cp -p $$d/$$file $(distdir)/$$file \ || exit 1; \ fi; \ done list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r $(distdir) dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr \ distclean-libtool distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive info: info-recursive info-am: install-data-am: install-data-local install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzma dist-shar dist-tarZ dist-zip distcheck \ distclean distclean-generic distclean-hdr distclean-libtool \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-pdf install-pdf-am install-ps install-ps-am \ install-strip installcheck installcheck-am installdirs \ installdirs-am maintainer-clean maintainer-clean-generic \ mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ ps ps-am tags tags-recursive uninstall uninstall-am install-data-local: $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) $(INSTALL_DATA) $(srcdir)/COPYING $(DESTDIR)$(pkgdatadir)/ $(mkinstalldirs) $(DESTDIR)$(datadir)/applications $(INSTALL_DATA) $(srcdir)/valknut.desktop $(DESTDIR)$(datadir)/applications/ define install_osx_libraries $(shell $(INSTALL) -m 755 $(dylib) $(OSX_MACOS_TARGET)) $(shell /usr/bin/install_name_tool -change $(dylib) \@executable_path/$(notdir $(dylib)) $(OSX_MACOS_TARGET)/$(PACKAGE)) $(shell /usr/bin/install_name_tool -id \@executable_path/$(notdir $(dylib)) $(OSX_MACOS_TARGET)/$(notdir $(dylib))) $(foreach linked_dylibs_2,$(shell $(OTOOL) -L $(dylib) | grep version | cut -f 1 -d ' ' | grep -v \/System\/Library | grep -v \usr\/lib | grep -v executable_path),$(rename_secondary_osx_libraries)) endef define rename_secondary_osx_libraries $(shell /usr/bin/install_name_tool -change $(linked_dylibs_2) \@executable_path/$(notdir $(linked_dylibs_2)) $(OSX_MACOS_TARGET)/$(notdir $(dylib))) endef install-osx: install-osx-disk-image install-osx-app-bundle: /bin/rm -rf "$(abs_builddir)/$(OSX_APP_DIR)" $(MAKE) mandir="$(abs_builddir)/$(OSX_APP_DIR)/man" datadir="$(abs_builddir)/$(OSX_APP_DIR)" pkgdatadir="$(abs_builddir)/$(OSX_APP_DIR)" bindir="$(abs_builddir)/$(OSX_MACOS_TARGET)" install-strip $(INSTALL_DIR) $(OSX_CNT_TARGET) $(INSTALL_DATA) Info.plist $(OSX_CNT_TARGET)/Info.plist $(INSTALL_DATA) $(srcdir)/PkgInfo.in $(OSX_CNT_TARGET)/PkgInfo $(INSTALL_DIR) $(OSX_RSC_TARGET) $(INSTALL_DATA) $(srcdir)/$(ICONS_DIR)/icon_128x128.icns $(OSX_RSC_TARGET)/$(OSX_BUNDLE_NAME).icns install-osx-standalone-app: install-osx-app-bundle $(foreach dylib,$(shell $(OTOOL) -L $(OSX_MACOS_TARGET)/$(PACKAGE) | grep version | cut -f 1 -d ' ' | grep -v \.framework | grep -v \/usr\/lib),$(install_osx_libraries)) @USE_FRAMEWORKS_TRUE@ /bin/rm -rf "$(abs_builddir)/$(OSX_CNT_TARGET)/Frameworks" @USE_FRAMEWORKS_TRUE@ $(INSTALL_DIR) "$(abs_builddir)/$(OSX_CNT_TARGET)/Frameworks" @USE_FRAMEWORKS_TRUE@ /bin/cp -R $(FRAMEWORK_DIR)/Qt{Core,Gui,Network,3Support,Sql,Xml}.framework "$(abs_builddir)/$(OSX_CNT_TARGET)/Frameworks" @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtCore.framework/Versions/4/QtCore @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui $(OSX_CNT_TARGET)/Frameworks/QtGui.framework/Versions/4/QtGui @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork $(OSX_CNT_TARGET)/Frameworks/QtNetwork.framework/Versions/4/QtNetwork @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -id @executable_path/../Frameworks/Qt3Support.framework/Versions/4/Qt3Support $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtSql.framework/Versions/4/QtSql $(OSX_CNT_TARGET)/Frameworks/QtSql.framework/Versions/4/QtSql @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml $(OSX_CNT_TARGET)/Frameworks/QtXml.framework/Versions/4/QtXml @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtGui.framework/Versions/4/QtGui @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtNetwork.framework/Versions/4/QtNetwork @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtNetwork.framework/Versions/4/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtSql.framework/Versions/4/QtSql @executable_path/../Frameworks/QtSql.framework/Versions/4/QtSql $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtXml.framework/Versions/4/QtXml @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtSql.framework/Versions/4/QtSql @USE_FRAMEWORKS_TRUE@ /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtXml.framework/Versions/4/QtXml @USE_FRAMEWORKS_TRUE@ $(foreach dylib,$(shell $(OTOOL) -L $(OSX_MACOS_TARGET)/$(PACKAGE) | grep version | cut -f 1 -d ' ' | grep \.framework | grep -v \/System\/Library),$(shell /usr/bin/install_name_tool -change $(dylib) \@executable_path/../Frameworks/$(dylib) $(OSX_MACOS_TARGET)/$(PACKAGE))) @USE_FRAMEWORKS_FALSE@ @echo "Frameworks were not used" install-osx-disk-image: install-osx-standalone-app /bin/rm -f $(PACKAGE)-$(PACKAGE_VERSION).sparseimage /bin/rm -f $(PACKAGE)-$(PACKAGE_VERSION)-`uname -p`.dmg $(HDIUTIL) create -type SPARSE -size 55m -fs HFS+ -volname $(OSX_DMG_TARGET) -attach $(PACKAGE)-$(PACKAGE_VERSION).sparseimage /bin/cp -R $(OSX_APP_DIR) /Volumes/$(OSX_DMG_TARGET) /bin/cp $(PACKAGE)/icons/$(OSX_BUNDLE_NAME)VolumeIcon.icns /Volumes/$(OSX_DMG_TARGET)/.VolumeIcon.icns /Developer/Tools/SetFile -a C /Volumes/$(OSX_DMG_TARGET)/.VolumeIcon.icns /Volumes/$(OSX_DMG_TARGET) $(HDIUTIL) detach /Volumes/$(OSX_DMG_TARGET) $(HDIUTIL) convert -imagekey zlib-level=9 -format UDZO $(PACKAGE)-$(PACKAGE_VERSION).sparseimage -o $(PACKAGE)-$(PACKAGE_VERSION)-`uname -p`.dmg /bin/rm -f $(PACKAGE)-$(PACKAGE_VERSION).sparseimage @echo "" @echo "Done building a distributable disk image for $(OSX_BUNDLE_NAME) $(PACKAGE_VERSION)." @echo "The disk image can be found at the root of the" @echo "build directory `pwd`" @echo "as '$(PACKAGE)-$(PACKAGE_VERSION)-`uname -p`.dmg'." clean-osx: /bin/rm -rf *.dmg *.sparseimage Valknut.app # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: valknut-0.4.9/Makefile.am0000664000076400007640000001521211137675443013416 0ustar ejsejsACLOCAL_AMFLAGS = -I m4 AUTOMAKE_OPTIONS = gnu INSTALL_DIR = /usr/bin/install -d -m 755 OTOOL = /usr/bin/otool HDIUTIL = /usr/bin/hdiutil OSX_BUNDLE_NAME = Valknut OSX_APP_DIR = $(OSX_BUNDLE_NAME).app ICONS_DIR = $(PACKAGE)/icons OSX_ICONS_TARGET = $(OSX_APP_DIR)/icons OSX_CNT_TARGET = $(OSX_APP_DIR)/Contents OSX_MACOS_TARGET = $(OSX_CNT_TARGET)/MacOS OSX_RSC_TARGET = $(OSX_CNT_TARGET)/Resources OSX_DMG_TARGET = "$(OSX_BUNDLE_NAME) $(PACKAGE_VERSION)" SUBDIRS = valknut install-data-local: $(mkinstalldirs) $(DESTDIR)$(pkgdatadir) $(INSTALL_DATA) $(srcdir)/COPYING $(DESTDIR)$(pkgdatadir)/ $(mkinstalldirs) $(DESTDIR)$(datadir)/applications $(INSTALL_DATA) $(srcdir)/valknut.desktop $(DESTDIR)$(datadir)/applications/ define install_osx_libraries $(shell $(INSTALL) -m 755 $(dylib) $(OSX_MACOS_TARGET)) $(shell /usr/bin/install_name_tool -change $(dylib) \@executable_path/$(notdir $(dylib)) $(OSX_MACOS_TARGET)/$(PACKAGE)) $(shell /usr/bin/install_name_tool -id \@executable_path/$(notdir $(dylib)) $(OSX_MACOS_TARGET)/$(notdir $(dylib))) $(foreach linked_dylibs_2,$(shell $(OTOOL) -L $(dylib) | grep version | cut -f 1 -d ' ' | grep -v \/System\/Library | grep -v \usr\/lib | grep -v executable_path),$(rename_secondary_osx_libraries)) endef define rename_secondary_osx_libraries $(shell /usr/bin/install_name_tool -change $(linked_dylibs_2) \@executable_path/$(notdir $(linked_dylibs_2)) $(OSX_MACOS_TARGET)/$(notdir $(dylib))) endef install-osx: install-osx-disk-image install-osx-app-bundle: /bin/rm -rf "$(abs_builddir)/$(OSX_APP_DIR)" $(MAKE) mandir="$(abs_builddir)/$(OSX_APP_DIR)/man" datadir="$(abs_builddir)/$(OSX_APP_DIR)" pkgdatadir="$(abs_builddir)/$(OSX_APP_DIR)" bindir="$(abs_builddir)/$(OSX_MACOS_TARGET)" install-strip $(INSTALL_DIR) $(OSX_CNT_TARGET) $(INSTALL_DATA) Info.plist $(OSX_CNT_TARGET)/Info.plist $(INSTALL_DATA) $(srcdir)/PkgInfo.in $(OSX_CNT_TARGET)/PkgInfo $(INSTALL_DIR) $(OSX_RSC_TARGET) $(INSTALL_DATA) $(srcdir)/$(ICONS_DIR)/icon_128x128.icns $(OSX_RSC_TARGET)/$(OSX_BUNDLE_NAME).icns install-osx-standalone-app: install-osx-app-bundle $(foreach dylib,$(shell $(OTOOL) -L $(OSX_MACOS_TARGET)/$(PACKAGE) | grep version | cut -f 1 -d ' ' | grep -v \.framework | grep -v \/usr\/lib),$(install_osx_libraries)) if USE_FRAMEWORKS /bin/rm -rf "$(abs_builddir)/$(OSX_CNT_TARGET)/Frameworks" $(INSTALL_DIR) "$(abs_builddir)/$(OSX_CNT_TARGET)/Frameworks" /bin/cp -R $(FRAMEWORK_DIR)/Qt{Core,Gui,Network,3Support,Sql,Xml}.framework "$(abs_builddir)/$(OSX_CNT_TARGET)/Frameworks" /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtCore.framework/Versions/4/QtCore /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui $(OSX_CNT_TARGET)/Frameworks/QtGui.framework/Versions/4/QtGui /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork $(OSX_CNT_TARGET)/Frameworks/QtNetwork.framework/Versions/4/QtNetwork /usr/bin/install_name_tool -id @executable_path/../Frameworks/Qt3Support.framework/Versions/4/Qt3Support $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtSql.framework/Versions/4/QtSql $(OSX_CNT_TARGET)/Frameworks/QtSql.framework/Versions/4/QtSql /usr/bin/install_name_tool -id @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml $(OSX_CNT_TARGET)/Frameworks/QtXml.framework/Versions/4/QtXml /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtGui.framework/Versions/4/QtGui /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtNetwork.framework/Versions/4/QtNetwork /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support /usr/bin/install_name_tool -change QtGui.framework/Versions/4/QtGui @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support /usr/bin/install_name_tool -change QtNetwork.framework/Versions/4/QtNetwork @executable_path/../Frameworks/QtNetwork.framework/Versions/4/QtNetwork $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support /usr/bin/install_name_tool -change QtSql.framework/Versions/4/QtSql @executable_path/../Frameworks/QtSql.framework/Versions/4/QtSql $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support /usr/bin/install_name_tool -change QtXml.framework/Versions/4/QtXml @executable_path/../Frameworks/QtXml.framework/Versions/4/QtXml $(OSX_CNT_TARGET)/Frameworks/Qt3Support.framework/Versions/4/Qt3Support /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtSql.framework/Versions/4/QtSql /usr/bin/install_name_tool -change QtCore.framework/Versions/4/QtCore @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore $(OSX_CNT_TARGET)/Frameworks/QtXml.framework/Versions/4/QtXml $(foreach dylib,$(shell $(OTOOL) -L $(OSX_MACOS_TARGET)/$(PACKAGE) | grep version | cut -f 1 -d ' ' | grep \.framework | grep -v \/System\/Library),$(shell /usr/bin/install_name_tool -change $(dylib) \@executable_path/../Frameworks/$(dylib) $(OSX_MACOS_TARGET)/$(PACKAGE))) else @echo "Frameworks were not used" endif install-osx-disk-image: install-osx-standalone-app /bin/rm -f $(PACKAGE)-$(PACKAGE_VERSION).sparseimage /bin/rm -f $(PACKAGE)-$(PACKAGE_VERSION)-`uname -p`.dmg $(HDIUTIL) create -type SPARSE -size 55m -fs HFS+ -volname $(OSX_DMG_TARGET) -attach $(PACKAGE)-$(PACKAGE_VERSION).sparseimage /bin/cp -R $(OSX_APP_DIR) /Volumes/$(OSX_DMG_TARGET) /bin/cp $(PACKAGE)/icons/$(OSX_BUNDLE_NAME)VolumeIcon.icns /Volumes/$(OSX_DMG_TARGET)/.VolumeIcon.icns /Developer/Tools/SetFile -a C /Volumes/$(OSX_DMG_TARGET)/.VolumeIcon.icns /Volumes/$(OSX_DMG_TARGET) $(HDIUTIL) detach /Volumes/$(OSX_DMG_TARGET) $(HDIUTIL) convert -imagekey zlib-level=9 -format UDZO $(PACKAGE)-$(PACKAGE_VERSION).sparseimage -o $(PACKAGE)-$(PACKAGE_VERSION)-`uname -p`.dmg /bin/rm -f $(PACKAGE)-$(PACKAGE_VERSION).sparseimage @echo "" @echo "Done building a distributable disk image for $(OSX_BUNDLE_NAME) $(PACKAGE_VERSION)." @echo "The disk image can be found at the root of the" @echo "build directory `pwd`" @echo "as '$(PACKAGE)-$(PACKAGE_VERSION)-`uname -p`.dmg'." clean-osx: /bin/rm -rf *.dmg *.sparseimage Valknut.app valknut-0.4.9/NEWS0000664000076400007640000000003010523776621012047 0ustar ejsejshttp://dcgui.berlios.de valknut-0.4.9/TODO0000664000076400007640000000066710650417661012055 0ustar ejsejsThings to do: - Move from QT3 to QT4 - Build a ADC protocol library - Migrate from QT to wxWidgets OS X specific: - place OS X Makefile variables in correct location in Makefile.am - have 'make install-osx' (and sub targets) only work when building the native version (ie, only if --enable-mac is set). The Mac X11 version works like any other Unix build/install. This step is not as critical as the other OS X points, but useful. valknut-0.4.9/COPYING0000664000076400007640000003705411072745055012420 0ustar ejsejs TERMS AND CONDITIONS FOR LINKING AGAINST OpenSSL ------------------------------------------------ In addition, as a special exception, Mathias Küster and Edward Sheldrake give permission to link the code of this program with the OpenSSL library (or with modified versions of OpenSSL that use the same license as OpenSSL), and distribute linked combinations including the two. You must obey the GNU General Public License in all respects for all of the code used other than OpenSSL. If you modify this file, you may extend this exception to your version of the file, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version. END OF TERMS AND CONDITIONS ------------- GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS valknut-0.4.9/admin/0000775000076400007640000000000011144264652012443 5ustar ejsejsvalknut-0.4.9/admin/missing0000755000076400007640000002557711144264652014060 0ustar ejsejs#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2006-05-10.23 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case $1 in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $1 in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: valknut-0.4.9/admin/depcomp0000755000076400007640000004271311144264652014025 0ustar ejsejs#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2007-03-29.01 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software # Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix="`echo $object | sed 's/^.*\././'`" touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test $1 != '--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: valknut-0.4.9/admin/config.guess0000755000076400007640000013061111144264652014763 0ustar ejsejs#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-11-15' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` exit ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if echo '\n#ifdef __amd64\nIS_64BIT_ARCH\n#endif' | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[456]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep __LP64__ >/dev/null then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd | genuineintel) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i386. echo i386-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: valknut-0.4.9/admin/ltmain.sh0000755000076400007640000073305511144264621014275 0ustar ejsejs# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6 # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --config show all configuration variables # --debug enable verbose shell tracing # -n, --dry-run display commands without modifying any files # --features display basic configuration information and exit # --mode=MODE use operation mode MODE # --preserve-dup-deps don't remove duplicate dependency libraries # --quiet, --silent don't print informational messages # --tag=TAG use configuration variables from tag TAG # -v, --verbose print informational messages (default) # --version print version information # -h, --help print short or long help message # # MODE must be one of the following: # # clean remove files from the build directory # compile compile a source file into a libtool object # execute automatically set library path, then run a program # finish complete the installation of libtool libraries # install install libraries or executables # link create a library or an executable # uninstall remove libraries from an installed directory # # MODE-ARGS vary depending on the MODE. # Try `$progname --help --mode=MODE' for a more detailed description of MODE. # # When reporting a bug, please describe a test case to reproduce it and # include the following information: # # host-triplet: $host # shell: $SHELL # compiler: $LTCC # compiler flags: $LTCFLAGS # linker: $LD (gnu? $with_gnu_ld) # $progname: (GNU libtool) 2.2.6 # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION=2.2.6 TIMESTAMP="" package_revision=1.3012 # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done $lt_unset CDPATH : ${CP="cp -f"} : ${ECHO="echo"} : ${EGREP="/bin/grep -E"} : ${FGREP="/bin/grep -F"} : ${GREP="/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # func_dirname_and_basename file append nondir_replacement # perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # Generated shell functions inserted here. # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath="$0" # The name of this program: # In the unlikely event $progname began with a '-', it would play havoc with # func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result case $progname in -*) progname=./$progname ;; esac # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to double_quote_subst, that '$' was protected from expansion. # Since each input `\' is now two `\'s, look for any number of runs of # four `\'s followed by two `\'s and then a '$'. `\' that '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname${mode+: }$mode: $*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_mkdir_p_IFS" # mkdir can fail with a `File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and and variable # expansion for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_version # Echo version message to standard output and exit. func_version () { $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $SED -n '/^# Usage:/,/# -h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" $ECHO $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help # Echo long help message to standard output and exit. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" exit $? } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { func_error "missing argument for $1" exit_cmd=exit } exit_cmd=: # Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then # Yippee, $ECHO works! : else # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # Parse options once, thoroughly. This comes as soon as possible in # the script to make things like `libtool --version' happen quickly. { # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; esac # Parse non-mode specific arguments: while test "$#" -gt 0; do opt="$1" shift case $opt in --config) func_config ;; --debug) preserve_args="$preserve_args $opt" func_echo "enabling shell trace mode" opt_debug='set -x' $opt_debug ;; -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break execute_dlfiles="$execute_dlfiles $1" shift ;; --dry-run | -n) opt_dry_run=: ;; --features) func_features ;; --finish) mode="finish" ;; --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break case $1 in # Valid mode arguments: clean) ;; compile) ;; execute) ;; finish) ;; install) ;; link) ;; relink) ;; uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $opt" exit_cmd=exit break ;; esac mode="$1" shift ;; --preserve-dup-deps) opt_duplicate_deps=: ;; --quiet|--silent) preserve_args="$preserve_args $opt" opt_silent=: ;; --verbose| -v) preserve_args="$preserve_args $opt" opt_silent=false ;; --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break preserve_args="$preserve_args $opt $1" func_enable_tag "$1" # tagname is set here shift ;; # Separate optargs to long options: -dlopen=*|--mode=*|--tag=*) func_opt_split "$opt" set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} shift ;; -\?|-h) func_usage ;; --help) opt_help=: ;; --version) func_version ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) nonopt="$opt" break ;; esac done case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ;; esac # Having warned about all mis-specified options, bail out if # anything was wrong. $exit_cmd $EXIT_FAILURE } # func_check_version_match # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } ## ----------- ## ## Main. ## ## ----------- ## $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi test -z "$mode" && func_fatal_error "error: you must specify a MODE." # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; then func_error "unrecognized option \`-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help="$help" help="Try \`$progname --help --mode=$mode' for more information." } # func_lalib_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_unsafe_p file # True iff FILE is a libtool `.la' library or `.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if `file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case "$lalib_p_line" in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test "$lalib_p" = yes } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { func_lalib_p "$1" } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_ltwrapper_scriptname_result="" if func_ltwrapper_executable_p "$1"; then func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" fi } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # `FILE.' does not work on cygwin managed mounts. func_source () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case "$@ " in " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with \`--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=${1} if test "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <?"'"'"' &()|`$[]' \ && func_warning "libobj name \`$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname="$func_basename_result" xdir="$func_dirname_result" lobj=${xdir}$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test "$build_old_libs" = yes; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test "$compiler_c_o" = no; then output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} lockfile="$output_obj.lock" else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test "$need_locks" = yes; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test "$need_locks" = warn; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi removelist="$removelist $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist removelist="$removelist $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir command="$command -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support \`-c' and \`-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to building PIC objects only -prefer-non-pic try to building non-PIC objects only -shared do not build a \`.o' file suitable for static linking -static only build a \`.o' file suitable for static linking COMPILE-COMMAND is a command to be used in creating a \`standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix \`.c' with the library object suffix, \`.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to \`-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the \`--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the \`install' or \`cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE Use a list of object files found in FILE to specify objects -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface All other options (arguments beginning with \`-') are ignored. Every other argument is treated as a filename. Files ending in \`.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in \`.la', then a libtool library is created, only library objects (\`.lo' files) may be specified, and \`-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created using \`ar' and \`ranlib', or on Windows using \`lib'. If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode \`$mode'" ;; esac $ECHO $ECHO "Try \`$progname --help' for more information about other modes." exit $? } # Now that we've collected a possible --mode arg, show help if necessary $opt_help && func_mode_help # func_mode_execute arg... func_mode_execute () { $opt_debug # The first argument is the command name. cmd="$nonopt" test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $execute_dlfiles; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "\`$file' was not linked with \`-export-dynamic'" continue fi func_dirname "$file" "" "." dir="$func_dirname_result" if test -f "$dir/$objdir/$dlname"; then dir="$dir/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir="$func_dirname_result" ;; *) func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir="$absdir" # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic="$magic" # Check if any of the arguments is a wrapper script. args= for file do case $file in -*) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file="$progdir/$program" elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file="$progdir/$program" fi ;; esac # Quote arguments (to preserve shell metacharacters). func_quote_for_eval "$file" args="$args $func_quote_for_eval_result" done if test "X$opt_dry_run" = Xfalse; then if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd="\$cmd$args" else # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" $ECHO "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS fi } test "$mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS $ECHO "X----------------------------------------------------------------------" | $Xsed $ECHO "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done $ECHO $ECHO "If you ever happen to want to link against installed libraries" $ECHO "in a given directory, LIBDIR, you must either use libtool, and" $ECHO "specify the full pathname of the library, or use the \`-LLIBDIR'" $ECHO "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then $ECHO " - add LIBDIR to the \`$shlibpath_var' environment variable" $ECHO " during execution" fi if test -n "$runpath_var"; then $ECHO " - add LIBDIR to the \`$runpath_var' environment variable" $ECHO " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the \`$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then $ECHO " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" fi $ECHO $ECHO "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) $ECHO "more information, such as the ld(1), crle(1) and ld.so(8) manual" $ECHO "pages." ;; *) $ECHO "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac $ECHO "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS } test "$mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $ECHO "X$nonopt" | $GREP shtool >/dev/null; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the \`$prev' option requires an argument" if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=yes if test "$isdir" = yes; then destdir="$dest" destname= else func_dirname_and_basename "$dest" "" "." destdir="$func_dirname_result" destname="$func_basename_result" # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "\`$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "\`$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. staticlibs="$staticlibs $file" ;; *.la) # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "\`$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%%"` fi func_warning "relinking \`$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname="$1" shift srcname="$realname" test -n "$relink_command" && srcname="$realname"T # Install the shared library and build the symlinks. func_show_eval "$install_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme="" ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try `ln -sf' first, because the `ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib="$destdir/$realname" func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name="$func_basename_result" instname="$dir/$name"i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest="$destfile" destfile= ;; *) func_fatal_help "cannot copy a libtool object to \`$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test "$build_old_libs" = yes; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile="$destdir/$destname" else func_basename "$file" destfile="$func_basename_result" destfile="$destdir/$destfile" fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext="" case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=".exe" fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script \`$wrapper'" finalize=yes for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile="$libdir/"`$ECHO "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_result" } if eval "$relink_command"; then : else func_error "error: relink \`$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file="$outputname" else func_warning "cannot relink \`$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name="$func_basename_result" # Set up the ranlib parameters. oldlib="$destdir/$name" func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run \`$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test "$mode" = install && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms="${my_outputname}S.c" else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist="$output_objdir/${my_outputname}.nm" func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; then func_verbose "generating symbol list for \`$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols="$output_objdir/$outputname.exp" $opt_dry_run || { $RM $export_symbols eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from \`$dlprefile'" func_basename "$dlprefile" name="$func_basename_result" $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else $ECHO '/* NONE */' >> "$output_objdir/$my_dlsyms" fi $ECHO >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; " case $host in *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" lt_dlsym_const= ;; *osf5*) echo >> "$output_objdir/$my_dlsyms" "\ /* This system does not cope well with relocations in const data */" lt_dlsym_const= ;; *) lt_dlsym_const=const ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) symtab_cflags="$symtab_cflags $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' # Transform the symbol file into the correct name. symfileobj="$output_objdir/${my_outputname}S.$objext" case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for \`$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. func_win32_libid () { $opt_debug win32_libid_type="unknown" win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $opt_debug my_gentop="$1"; shift my_oldlibs=${1+"$@"} my_oldobjs="" my_xlib="" my_xabs="" my_xdir="" for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib="$func_basename_result" my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir="$my_gentop/$my_xlib_u" func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` darwin_base_archive=`basename "$darwin_archive"` darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches ; do func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" func_extract_an_archive "`pwd`" "${darwin_base_archive}" cd "$darwin_curdir" $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper_part1 [arg=no] # # Emit the first part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part1 () { func_emit_wrapper_part1_arg1=no if test -n "$1" ; then func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed='${SED} -e 1s/^X//' sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then ECHO=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then # Yippee, \$ECHO works! : else # Restart under the correct shell, and then maybe \$ECHO will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $ECHO "\ # Find the directory that this script lives in. thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done " } # end: func_emit_wrapper_part1 # func_emit_wrapper_part2 [arg=no] # # Emit the second part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part2 () { func_emit_wrapper_part2_arg1=no if test -n "$1" ; then func_emit_wrapper_part2_arg1=$1 fi $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else $ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 fi else # The program doesn't exist. \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 $ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # end: func_emit_wrapper_part2 # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=no if test -n "$1" ; then func_emit_wrapper_arg1=$1 fi # split this up so that func_emit_cwrapperexe_src # can call each part independently. func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" } # func_to_host_path arg # # Convert paths to host format when used with build tools. # Intended for use with "native" mingw (where libtool itself # is running under the msys shell), or in the following cross- # build environments: # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # where wine is equipped with the `winepath' executable. # In the native mingw case, the (msys) shell automatically # converts paths for any non-msys applications it launches, # but that facility isn't available from inside the cwrapper. # Similar accommodations are necessary for $host mingw and # $build cygwin. Calling this function does no harm for other # $host/$build combinations not listed above. # # ARG is the path (on $build) that should be converted to # the proper representation for $host. The result is stored # in $func_to_host_path_result. func_to_host_path () { func_to_host_path_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_path_tmp1=`( cmd //c echo "$1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_path_tmp1=`cygpath -w "$1"` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero # error code, so we are forced to check the contents of # stdout. On the other hand, if the command is not # found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both # error code of zero AND non-empty stdout, which explains # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. func_to_host_path_result="" fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" fi ;; esac fi } # end: func_to_host_path # func_to_host_pathlist arg # # Convert pathlists to host format when used with build tools. # See func_to_host_path(), above. This function supports the # following $build/$host combinations (but does no harm for # combinations not listed here): # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # # Path separators are also converted from $build format to # $host format. If ARG begins or ends with a path separator # character, it is preserved (but converted to $host format) # on output. # # ARG is a pathlist (on $build) that should be converted to # the proper representation on $host. The result is stored # in $func_to_host_pathlist_result. func_to_host_pathlist () { func_to_host_pathlist_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_to_host_pathlist_tmp2="$1" # Once set for this call, this variable should not be # reassigned. It is used in tha fallback case. func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e 's|^:*||' -e 's|:*$||'` case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # unfortunately, winepath doesn't convert pathlists func_to_host_pathlist_result="" func_to_host_pathlist_oldIFS=$IFS IFS=: for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do IFS=$func_to_host_pathlist_oldIFS if test -n "$func_to_host_pathlist_f" ; then func_to_host_path "$func_to_host_pathlist_f" if test -n "$func_to_host_path_result" ; then if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" fi fi fi IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac if test -z "$func_to_host_pathlist_result" ; then func_error "Could not determine the host path(s) corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression # below, but for the user to provide a working wine installation # with winepath so that path translation in the cross-to-mingw # case works properly. lt_replace_pathsep_nix_to_dos="s|:|;|g" func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_replace_pathsep_nix_to_dos"` fi # Now, add the leading and trailing path separators back case "$1" in :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ;; esac case "$1" in *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ;; esac ;; esac fi } # end: func_to_host_pathlist # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # define HAVE_SETENV # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif # endif #endif #include #include #include #include #include #include #include #include #if defined(PATH_MAX) # define LT_PATHMAX PATH_MAX #elif defined(MAXPATHLEN) # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif #ifdef _MSC_VER # define S_IXUSR _S_IEXEC # define stat _stat # ifndef _INTPTR_T_DEFINED # define intptr_t int # endif #endif #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ defined (__OS2__) # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifdef __CYGWIN__ # define FOPEN_WB "wb" #endif #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free ((void *) stale); stale = 0; } \ } while (0) #undef LTWRAPPER_DEBUGPRINTF #if defined DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) { va_list args; va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } #else # define LTWRAPPER_DEBUGPRINTF(args) #endif const char *program_name = NULL; void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_fatal (const char *message, ...); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_opt_process_env_set (const char *arg); void lt_opt_process_env_prepend (const char *arg); void lt_opt_process_env_append (const char *arg); int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); static const char *script_text_part1 = EOF func_emit_wrapper_part1 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; int tmp_len; char *concat_name; LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined (HAVE_DOS_BASED_FILE_SYSTEM) if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined (HAVE_DOS_BASED_FILE_SYSTEM) } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = q - p; p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal ("getcwd failed"); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { LTWRAPPER_DEBUGPRINTF (("checking path component for symlinks: %s\n", tmp_pathspec)); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { char *errstr = strerror (errno); lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal ("Could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (strcmp (str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } void lt_setenv (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", (name ? name : ""), (value ? value : ""))); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { int orig_value_len = strlen (orig_value); int add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } int lt_split_name_value (const char *arg, char** name, char** value) { const char *p; int len; if (!arg || !*arg) return 1; p = strchr (arg, (int)'='); if (!p) return 1; *value = xstrdup (++p); len = strlen (arg) - strlen (*value); *name = XMALLOC (char, len); strncpy (*name, arg, len-1); (*name)[len - 1] = '\0'; return 0; } void lt_opt_process_env_set (const char *arg) { char *name = NULL; char *value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); } lt_setenv (name, value); XFREE (name); XFREE (value); } void lt_opt_process_env_prepend (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); } new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_opt_process_env_append (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); } new_value = lt_extend_str (getenv (name), value, 1); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_update_exe_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? value : ""))); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF } # end: func_emit_cwrapperexe_src # func_mode_link arg... func_mode_link () { $opt_debug case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # which system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll which has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module="${wl}-single_module" func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg="$1" shift func_quote_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$dlprefiles $arg" fi prev= continue ;; esac ;; expsyms) export_symbols="$arg" test -f "$arg" \ || func_fatal_error "symbol file \`$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex="$arg" prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # moreargs="$moreargs $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file \`$arg' does not exist" fi arg=$save_arg prev= continue ;; precious_regex) precious_files_regex="$arg" prev= continue ;; release) release="-$arg" prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) weak_libs="$weak_libs $arg" prev= continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg="$arg" case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "\`-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test "X$arg" = "X-export-symbols"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname '-L' '' "$arg" dir=$func_stripname_result if test -z "$dir"; then if test "$#" -gt 0; then func_fatal_error "require no space between \`-L' and \`$1'" else func_fatal_error "need path for \`-L' option" fi fi # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of \`$dir'" dir="$absdir" ;; esac case "$deplibs " in *" -L$dir "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test "X$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $arg" ;; esac continue ;; -multi_module) single_module="${wl}-multi_module" continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "\`-no-install' is ignored for $host" func_warning "assuming \`-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs="$IFS"; IFS=',' for flag in $args; do IFS="$save_ifs" func_quote_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" linker_flags="$linker_flags $func_quote_for_eval_result" done IFS="$save_ifs" func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" compiler_flags="$compiler_flags $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. objs="$objs $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test "$pic_object" = none && test "$non_pic_object" = none; then func_fatal_error "cannot find name of object for \`$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" if test "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$dlfiles $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; then # Prepend the subdirectory the object is found in. non_pic_object="$xdir$non_pic_object" # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test "$pic_object" = none ; then arg="$non_pic_object" fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object="$pic_object" func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir="$func_dirname_result" func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "\`$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the \`$prevarg' option requires an argument" if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname="$func_basename_result" libobjs_save="$libobjs" if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_duplicate_deps ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$pre_post_deps $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=no newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test "$linkmode,$pass" = "lib,link"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs="$tmp_deplibs" fi if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= case $lib in *.la) func_source "$lib" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib="$searchdir/lib${name}${search_ext}" if test -f "$lib"; then if test "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll="$l" done if test "X$ll" = "X$old_library" ; then # only static version available found=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" dir=$func_stripname_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $ECHO $ECHO "*** Warning: Trying to link with static lib archive $deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because the file extensions .$libext of this argument makes me believe" $ECHO "*** that it is just a static archive that I should not use here." else $ECHO $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "\`$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir="$func_dirname_result" dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "X$inherited_linker_flags" | $Xsed -e 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # It is a libtool convenience library, so add in its objects. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done if test -z "$linklib"; then func_fatal_error "cannot find name of link library for \`$lib'" fi # This library was specified with -dlopen. if test "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$newdlfiles $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of \`$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir="$ladir" fi ;; esac func_basename "$lib" laname="$func_basename_result" # Find the relevant object directory and library name. if test "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir="$ladir" absdir="$abs_ladir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$notinst_path $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$newdlprefiles $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then # Make sure the rpath contains only unique directories. case "$temp_rpath:" in *"$absdir:"*) ;; *) temp_rpath="$temp_rpath$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no ;; *) if test "$installed" = no; then notinst_deplibs="$notinst_deplibs $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule="" for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule="$dlpremoduletest" break fi done if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then $ECHO if test "$linkmode" = prog; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test "$linkmode" = lib && test "$hardcode_into_libs" = yes; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname="$1" shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname="$dlname" elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc*) func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; esac eval soname=\"$soname_spec\" else soname="$realname" fi # Make a new name for the extract_expsyms_cmds to use soroot="$soname" func_basename "$soroot" soname="$func_basename_result" func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from \`$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for \`$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; then add="$dir/$linklib" case $host in *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; *-*-sysv4*uw2*) add_dir="-L$dir" ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir="-L$dir" ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we can not # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null ; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library" ; then $ECHO $ECHO "*** And there doesn't seem to be a static archive available" $ECHO "*** The link will probably fail, sorry" else add="$dir/$old_library" fi elif test -n "$old_library"; then add="$dir/$old_library" fi fi esac elif test "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib" ; then add="$inst_prefix_dir$libdir/$linklib" else add="$libdir/$linklib" fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir="-L$libdir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test "$linkmode" = prog; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test "$hardcode_direct" != unsupported; then test -n "$old_library" && linklib="$old_library" compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. $ECHO $ECHO "*** Warning: This system can not link to static lib archive $lib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have." if test "$module" = yes; then $ECHO "*** But as you try to build a module library, libtool will still create " $ECHO "*** a static module, that should work as long as the dlopening application" $ECHO "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) func_dirname "$deplib" "" "." dir="$func_dirname_result" # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of \`$dir'" absdir="$dir" fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names" ; then for tmp in $deplibrary_names ; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl" ; then depdepl="$absdir/$objdir/$depdepl" darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" linker_flags="$linker_flags -dylib_file ${darwin_install_name}:${depdepl}" path= fi fi ;; *) path="-L$absdir/$objdir" ;; esac else eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "\`$deplib' seems to be moved" path="-L$absdir" fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_deplibs" fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs ; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i="" ;; esac if test -n "$i" ; then tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "\`-R' is ignored for archives" test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "\`-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "\`-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs="$output" objs="$objs$old_deplibs" ;; lib) # Make sure we only generate libraries of the form `libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test "$deplibs_check_method" != pass_all; then func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" else $ECHO $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" libobjs="$libobjs $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; then # Building a libtool convenience library. # Some compilers have problems with a `.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "\`-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs="$IFS"; IFS=':' set dummy $vinfo 0 0 0 shift IFS="$save_ifs" test -n "$7" && \ func_fatal_help "too many parameters to \`-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major="$1" number_minor="$2" number_revision="$3" # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|sunos) current="$number_major" revision="$number_minor" age="0" ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_minor" lt_irix_increment=no ;; esac ;; no) current="$1" revision="$2" age="$3" ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT \`$current' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION \`$revision' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE \`$age' must be a nonnegative integer" func_fatal_error "\`$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE \`$age' is greater than the current interface number \`$current'" func_fatal_error "\`$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring="$verstring_prefix$major.$revision" # Add in all the interfaces that we are compatible with. loop=$revision while test "$loop" -ne 0; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring_prefix$major.$iface:$verstring" done # Before this point, $major must not contain `.'. major=.$major versuffix="$major.$revision" ;; linux) func_arith $current - $age major=.$func_arith_result versuffix="$major.$age.$revision" ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=".$current.$age.$revision" verstring="$current.$age.$revision" # Add in all the interfaces that we are compatible with. loop=$age while test "$loop" -ne 0; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring="$verstring:${iface}.0" done # Make executables depend on our current version. verstring="$verstring:${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. func_arith $current - $age major=$func_arith_result versuffix="-$major" ;; *) func_fatal_configuration "unknown library version type \`$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring="0.0" ;; esac if test "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" libobjs="$libobjs $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$mode" != relink; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) if test "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles="$dlfiles" dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) dlfiles="$dlfiles $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles="$dlprefiles" dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$deplibs System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test "$build_libtool_need_lc" = "yes"; then deplibs="$deplibs -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release="" versuffix="" major="" newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib="$potent_lib" while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; *) potlib=`$ECHO "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$newdeplibs $a_deplib" a_deplib="" ;; esac fi if test -n "$a_deplib" ; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib="$potent_lib" # see symlink-check above in file_magic test if eval "\$ECHO \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$newdeplibs $a_deplib" a_deplib="" break 2 fi done done fi if test -n "$a_deplib" ; then droppeddeps=yes $ECHO $ECHO "*** Warning: linker path does not have real file for library $a_deplib." $ECHO "*** I have the capability to make that library automatically link in when" $ECHO "*** you link to this library. But I can only do this if you have a" $ECHO "*** shared version of the library, which you do not appear to have" $ECHO "*** because I did check the linker path looking for a file starting" if test -z "$potlib" ; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` done fi if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | $GREP . >/dev/null; then $ECHO if test "X$deplibs_check_method" = "Xnone"; then $ECHO "*** Warning: inter-library dependencies are not supported in this platform." else $ECHO "*** Warning: inter-library dependencies are not known to be supported." fi $ECHO "*** All declared inter-library dependencies are being dropped." droppeddeps=yes fi ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; then $ECHO $ECHO "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" $ECHO "*** a static module, that should work as long as the dlopening" $ECHO "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then $ECHO $ECHO "*** However, this would only work if libtool was able to extract symbol" $ECHO "*** lists from a program, using \`nm' or equivalent, but libtool could" $ECHO "*** not find such a program. So, this module is probably useless." $ECHO "*** \`nm' from GNU binutils and a full rebuild may help." fi if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else $ECHO "*** The inter-library dependencies that have been dropped here will be" $ECHO "*** automatically added whenever a program is linked with this library" $ECHO "*** or is declared to -dlopen it." if test "$allow_undefined" = no; then $ECHO $ECHO "*** Since this library must not contain undefined symbols," $ECHO "*** because either the platform does not support them or" $ECHO "*** it was explicitly requested with -no-undefined," $ECHO "*** libtool will only create a static version of it." if test "$build_old_libs" = no; then oldlibs="$output_objdir/$libname.$libext" build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO "X $deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done deplibs="$new_libs" # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath="$finalize_shlibpath" test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname="$1" shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname="$realname" fi if test -z "$dlname"; then dlname=$soname fi lib="$output_objdir/$realname" linknames= for link do linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols="$output_objdir/$libname.uexp" delfiles="$delfiles $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols="$export_symbols" export_symbols= always_export_symbols=yes fi fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then func_show_eval "$cmd" 'exit $?' skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS="$save_ifs" if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test "X$skipped_export" != "X:" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output output_la=`$ECHO "X$output" | $Xsed -e "$basename"` # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" $ECHO 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done $ECHO ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do $ECHO "$obj" >> $output done delfiles="$delfiles $output" output=$firstobj\"$file_list_spec$output\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-${k}.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test "X$objlist" = X || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-${k}.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-${k}.$objext objlist=$obj func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi delfiles="$delfiles $output" else output= fi if ${skipped_export-false}; then func_verbose "generating symbol list for \`$libname.la'" export_symbols="$output_objdir/$libname.exp" $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi fi test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs="$IFS"; IFS='~' for cmd in $concat_cmds; do IFS="$save_ifs" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi if ${skipped_export-false}; then if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols="$export_symbols" test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" $opt_dry_run || eval '$ECHO "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter delfiles="$delfiles $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi fi libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test "$module" = yes && test -n "$module_cmds" ; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS="$save_ifs" # Restore the uninstalled library and exit if test "$mode" = relink; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then func_warning "\`-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "\`-l' and \`-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "\`-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "\`-R' is ignored for objects" test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for objects" test -n "$release" && \ func_warning "\`-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object \`$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj="$output" ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test output="$obj" func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi if test "$build_libtool_libs" != yes; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS fi if test -n "$pic_flag" || test "$pic_mode" != default; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output="$libobj" func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "\`-version-info' is ignored for programs" test -n "$release" && \ func_warning "\`-release' is ignored for programs" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$finalize_command $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$perm_rpath $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath="$rpath" rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs="$libdir" else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir="$hardcode_libdirs" eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath="$rpath" if test -n "$libobjs" && test "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *cegcc) # Disable wrappers for cegcc, we are cross compiling anyway. wrappers_required=no ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` link_command="$compile_command$compile_rpath" # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' # Delete the generated files. if test -f "$output_objdir/${outputname}S.${objext}"; then func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' fi exit $exit_status fi if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$rpath$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; then # We don't need to create a wrapper script. link_command="$compile_var$compile_command$compile_rpath" # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # Fast installation is not supported link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" func_warning "this platform does not like uninstalled shared libraries" func_warning "\`$output' will be relinked during installation" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $ECHO for shipping. if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource="$output_path/$objdir/lt-$output_name.c" cwrapper="$output_path/$output_name.exe" $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host" ; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then oldobjs="$oldobjs $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles oldobjs="$oldobjs $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else $ECHO "copying selected object files to avoid basename conflicts..." gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase="$func_basename_result" case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj" ; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test "X$oldobjs" = "X" ; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test "$build_old_libs" = yes && old_library="$libname.$libext" func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; then if test -z "$install_libdir"; then break fi output="$output_objdir/$outputname"i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$newdependency_libs $deplib" ;; esac done dependency_libs="$newdependency_libs" newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlfiles="$newdlfiles $libdir/$name" ;; *) newdlfiles="$newdlfiles $lib" ;; esac done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name="$func_basename_result" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "\`$lib' is not a valid libtool archive" newdlprefiles="$newdlprefiles $libdir/$name" ;; esac done dlprefiles="$newdlprefiles" else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that can not go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test "$installed" = no && test "$need_relink" = yes; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } { test "$mode" = link || test "$mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic="$magic" for arg do case $arg in -f) RM="$RM $arg"; rmforce=yes ;; -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi func_basename "$file" name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif test "$rmforce" = yes; then continue fi rmfiles="$file" case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe rmfiles="$rmfiles $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result rmfiles="$rmfiles $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # Try to remove the ${objdir}s in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } { test "$mode" = uninstall || test "$mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # in which we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: # vi:sw=2 valknut-0.4.9/admin/config.sub0000755000076400007640000010175611144264652014436 0ustar ejsejs#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-09-08' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray) os= basic_machine=$1 ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: valknut-0.4.9/admin/install-sh0000755000076400007640000003246411144264652014456 0ustar ejsejs#!/bin/sh # install - install a program, script, or datafile scriptversion=2006-12-25.00 # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: valknut-0.4.9/admin/Makefile.common0000664000076400007640000000027511035725452015375 0ustar ejsejsall: $(info Run "autoreconf --verbose --force --install" to generate configure) $(info This requires automake, autoconf and libtool.) $(info This is not required for released tarballs.) valknut-0.4.9/README0000664000076400007640000000134110523776621012236 0ustar ejsejscompile problems with FreeBSD 4.6 --------------------------------- * missing includes from all dialog files e.g. DCDialogFileTransferInfo.h (compiling the ui headers fails) 1.) use gmake (not make) to compile dcgui (David Holm) if 1) not work 2.) change to the dcgui dir and type 'make dcgui.all_cpp.cpp' now you can compile the source compile problems with RedHat ---------------------------- * error message: ... klocale.h: No such file or directory * error message: ... 'tr2il8n' undeclared (first use this function) edit admin/am_edit set $kdeopts{"qtonly"} = 0; to $kdeopts{"qtonly"} = 1; start compile with make -f Makefile.dist compile the source ------------------ Please read this site: http://dcgui.berlios.de valknut-0.4.9/Makefile.dist0000664000076400007640000000027511035725452013760 0ustar ejsejsall: $(info Run "autoreconf --verbose --force --install" to generate configure) $(info This requires automake, autoconf and libtool.) $(info This is not required for released tarballs.) valknut-0.4.9/COPYING.OpenSSL0000664000076400007640000001420710523776621013700 0ustar ejsejs LICENSE ISSUES ============== The OpenSSL toolkit stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit. See below for the actual license texts. Actually both licenses are BSD-style Open Source licenses. In case of any license issues related to OpenSSL please contact openssl-core@openssl.org. OpenSSL License --------------- /* ==================================================================== * Copyright (c) 1998-2002 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * openssl-core@openssl.org. * * 5. Products derived from this software may not be called "OpenSSL" * nor may "OpenSSL" appear in their names without prior written * permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit (http://www.openssl.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED 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 OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com). This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */ Original SSLeay License ----------------------- /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. * * 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 copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * "This product includes cryptographic software written by * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). * 4. If you include any Windows specific code (or a derivative thereof) from * the apps directory (application code) you must include an acknowledgement: * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" * * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``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 AUTHOR 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. * * The licence and distribution terms for any publically available version or * derivative of this code cannot be changed. i.e. this code cannot simply be * copied and put under another distribution licence * [including the GNU Public Licence.] */