From: <ps...@us...> - 2008-09-13 15:41:18
|
Revision: 1199 http://znc.svn.sourceforge.net/znc/?rev=1199&view=rev Author: psychon Date: 2008-09-13 15:41:25 +0000 (Sat, 13 Sep 2008) Log Message: ----------- Increase the version number to 0.060 Modified Paths: -------------- trunk/configure trunk/configure.in trunk/main.h Modified: trunk/configure =================================================================== --- trunk/configure 2008-09-12 15:41:12 UTC (rev 1198) +++ trunk/configure 2008-09-13 15:41:25 UTC (rev 1199) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for znc 0.059. +# Generated by GNU Autoconf 2.61 for znc 0.060. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -572,8 +572,8 @@ # Identity of this package. PACKAGE_NAME='znc' PACKAGE_TARNAME='znc' -PACKAGE_VERSION='0.059' -PACKAGE_STRING='znc 0.059' +PACKAGE_VERSION='0.060' +PACKAGE_STRING='znc 0.060' PACKAGE_BUGREPORT='' ac_subst_vars='SHELL @@ -1157,7 +1157,7 @@ # 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 znc 0.059 to adapt to many kinds of systems. +\`configure' configures znc 0.060 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1222,7 +1222,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of znc 0.059:";; + short | recursive ) echo "Configuration of znc 0.060:";; esac cat <<\_ACEOF @@ -1318,7 +1318,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -znc configure 0.059 +znc configure 0.060 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1332,7 +1332,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by znc $as_me 0.059, which was +It was created by znc $as_me 0.060, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -3898,7 +3898,7 @@ fi fi -VERSION=0.059 +VERSION=0.060 # # Auto detect modules @@ -4353,7 +4353,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by znc $as_me 0.059, which was +This file was extended by znc $as_me 0.060, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -4396,7 +4396,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -znc config.status 0.059 +znc config.status 0.060 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-09-12 15:41:12 UTC (rev 1198) +++ trunk/configure.in 2008-09-13 15:41:25 UTC (rev 1199) @@ -1,5 +1,5 @@ dnl Keep the version number in sync with main.h! -AC_INIT([znc], [0.059]) +AC_INIT([znc], [0.060]) SAVED_CXXFLAGS="$CXXFLAGS" AC_PROG_CXX AC_CANONICAL_HOST Modified: trunk/main.h =================================================================== --- trunk/main.h 2008-09-12 15:41:12 UTC (rev 1198) +++ trunk/main.h 2008-09-13 15:41:25 UTC (rev 1199) @@ -10,7 +10,7 @@ #define _MAIN_H // Keep the number in sync with configure.in (and also with configure) -#define VERSION 0.059 +#define VERSION 0.060 // You can add -DVERSION_EXTRA="stuff" to your CXXFLAGS! #ifndef VERSION_EXTRA This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-13 15:46:18
|
Revision: 1201 http://znc.svn.sourceforge.net/znc/?rev=1201&view=rev Author: psychon Date: 2008-09-13 15:46:29 +0000 (Sat, 13 Sep 2008) Log Message: ----------- Increase the version number to 0.061 Modified Paths: -------------- trunk/configure trunk/configure.in trunk/main.h Modified: trunk/configure =================================================================== --- trunk/configure 2008-09-13 15:43:13 UTC (rev 1200) +++ trunk/configure 2008-09-13 15:46:29 UTC (rev 1201) @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.61 for znc 0.060. +# Generated by GNU Autoconf 2.61 for znc 0.061. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -572,8 +572,8 @@ # Identity of this package. PACKAGE_NAME='znc' PACKAGE_TARNAME='znc' -PACKAGE_VERSION='0.060' -PACKAGE_STRING='znc 0.060' +PACKAGE_VERSION='0.061' +PACKAGE_STRING='znc 0.061' PACKAGE_BUGREPORT='' ac_subst_vars='SHELL @@ -1157,7 +1157,7 @@ # 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 znc 0.060 to adapt to many kinds of systems. +\`configure' configures znc 0.061 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1222,7 +1222,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of znc 0.060:";; + short | recursive ) echo "Configuration of znc 0.061:";; esac cat <<\_ACEOF @@ -1318,7 +1318,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -znc configure 0.060 +znc configure 0.061 generated by GNU Autoconf 2.61 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @@ -1332,7 +1332,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by znc $as_me 0.060, which was +It was created by znc $as_me 0.061, which was generated by GNU Autoconf 2.61. Invocation command line was $ $0 $@ @@ -3898,7 +3898,7 @@ fi fi -VERSION=0.060 +VERSION=0.061 # # Auto detect modules @@ -4353,7 +4353,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by znc $as_me 0.060, which was +This file was extended by znc $as_me 0.061, which was generated by GNU Autoconf 2.61. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -4396,7 +4396,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ -znc config.status 0.060 +znc config.status 0.061 configured by $0, generated by GNU Autoconf 2.61, with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-09-13 15:43:13 UTC (rev 1200) +++ trunk/configure.in 2008-09-13 15:46:29 UTC (rev 1201) @@ -1,5 +1,5 @@ dnl Keep the version number in sync with main.h! -AC_INIT([znc], [0.060]) +AC_INIT([znc], [0.061]) SAVED_CXXFLAGS="$CXXFLAGS" AC_PROG_CXX AC_CANONICAL_HOST Modified: trunk/main.h =================================================================== --- trunk/main.h 2008-09-13 15:43:13 UTC (rev 1200) +++ trunk/main.h 2008-09-13 15:46:29 UTC (rev 1201) @@ -10,7 +10,7 @@ #define _MAIN_H // Keep the number in sync with configure.in (and also with configure) -#define VERSION 0.060 +#define VERSION 0.061 // You can add -DVERSION_EXTRA="stuff" to your CXXFLAGS! #ifndef VERSION_EXTRA This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-14 14:07:04
|
Revision: 1204 http://znc.svn.sourceforge.net/znc/?rev=1204&view=rev Author: psychon Date: 2008-09-14 14:07:14 +0000 (Sun, 14 Sep 2008) Log Message: ----------- Reorder some openssl library checks in configure Now libssl is checked before libcrypto. The idea behind this is that an error message about missing libssl is easier to understand and fix than one saying libcrypto is missing. Hopefully people can now find the right dev package to install without asking us. Modified Paths: -------------- trunk/configure trunk/configure.in Modified: trunk/configure =================================================================== --- trunk/configure 2008-09-14 06:05:23 UTC (rev 1203) +++ trunk/configure 2008-09-14 14:07:14 UTC (rev 1204) @@ -3383,13 +3383,13 @@ fi -{ echo "$as_me:$LINENO: checking for BIO_new in -lcrypto" >&5 -echo $ECHO_N "checking for BIO_new in -lcrypto... $ECHO_C" >&6; } -if test "${ac_cv_lib_crypto_BIO_new+set}" = set; then +{ echo "$as_me:$LINENO: checking for SSL_shutdown in -lssl" >&5 +echo $ECHO_N "checking for SSL_shutdown in -lssl... $ECHO_C" >&6; } +if test "${ac_cv_lib_ssl_SSL_shutdown+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypto $LIBS" +LIBS="-lssl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3403,11 +3403,11 @@ #ifdef __cplusplus extern "C" #endif -char BIO_new (); +char SSL_shutdown (); int main () { -return BIO_new (); +return SSL_shutdown (); ; return 0; } @@ -3430,41 +3430,41 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then - ac_cv_lib_crypto_BIO_new=yes + ac_cv_lib_ssl_SSL_shutdown=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_crypto_BIO_new=no + ac_cv_lib_ssl_SSL_shutdown=no fi 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 -{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_BIO_new" >&5 -echo "${ECHO_T}$ac_cv_lib_crypto_BIO_new" >&6; } -if test $ac_cv_lib_crypto_BIO_new = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_shutdown" >&5 +echo "${ECHO_T}$ac_cv_lib_ssl_SSL_shutdown" >&6; } +if test $ac_cv_lib_ssl_SSL_shutdown = yes; then cat >>confdefs.h <<_ACEOF -#define HAVE_LIBCRYPTO 1 +#define HAVE_LIBSSL 1 _ACEOF - LIBS="-lcrypto $LIBS" + LIBS="-lssl $LIBS" else - { { echo "$as_me:$LINENO: error: Could not find libcrypto. Try --disable-openssl" >&5 -echo "$as_me: error: Could not find libcrypto. Try --disable-openssl" >&2;} + { { echo "$as_me:$LINENO: error: Could not find libssl. Try --disable-openssl" >&5 +echo "$as_me: error: Could not find libssl. Try --disable-openssl" >&2;} { (exit 1); exit 1; }; } fi -{ echo "$as_me:$LINENO: checking for SSL_shutdown in -lssl" >&5 -echo $ECHO_N "checking for SSL_shutdown in -lssl... $ECHO_C" >&6; } -if test "${ac_cv_lib_ssl_SSL_shutdown+set}" = set; then +{ echo "$as_me:$LINENO: checking for BIO_new in -lcrypto" >&5 +echo $ECHO_N "checking for BIO_new in -lcrypto... $ECHO_C" >&6; } +if test "${ac_cv_lib_crypto_BIO_new+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lssl $LIBS" +LIBS="-lcrypto $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3478,11 +3478,11 @@ #ifdef __cplusplus extern "C" #endif -char SSL_shutdown (); +char BIO_new (); int main () { -return SSL_shutdown (); +return BIO_new (); ; return 0; } @@ -3505,30 +3505,30 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then - ac_cv_lib_ssl_SSL_shutdown=yes + ac_cv_lib_crypto_BIO_new=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_ssl_SSL_shutdown=no + ac_cv_lib_crypto_BIO_new=no fi 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 -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_shutdown" >&5 -echo "${ECHO_T}$ac_cv_lib_ssl_SSL_shutdown" >&6; } -if test $ac_cv_lib_ssl_SSL_shutdown = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_BIO_new" >&5 +echo "${ECHO_T}$ac_cv_lib_crypto_BIO_new" >&6; } +if test $ac_cv_lib_crypto_BIO_new = yes; then cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSSL 1 +#define HAVE_LIBCRYPTO 1 _ACEOF - LIBS="-lssl $LIBS" + LIBS="-lcrypto $LIBS" else - { { echo "$as_me:$LINENO: error: Could not find libssl. Try --disable-openssl" >&5 -echo "$as_me: error: Could not find libssl. Try --disable-openssl" >&2;} + { { echo "$as_me:$LINENO: error: Could not find libcrypto. Try --disable-openssl" >&5 +echo "$as_me: error: Could not find libcrypto. Try --disable-openssl" >&2;} { (exit 1); exit 1; }; } fi Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-09-14 06:05:23 UTC (rev 1203) +++ trunk/configure.in 2008-09-14 14:07:14 UTC (rev 1204) @@ -113,8 +113,8 @@ appendInc -I${OPENSSL}/include fi + AC_CHECK_LIB( ssl, SSL_shutdown,,AC_ERROR([Could not find libssl. Try --disable-openssl]), ) AC_CHECK_LIB( crypto, BIO_new,,AC_ERROR([Could not find libcrypto. Try --disable-openssl]), ) - AC_CHECK_LIB( ssl, SSL_shutdown,,AC_ERROR([Could not find libssl. Try --disable-openssl]), ) if test -z "$NOSSL"; then appendCXX -DHAVE_LIBSSL This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-14 17:57:05
|
Revision: 1205 http://znc.svn.sourceforge.net/znc/?rev=1205&view=rev Author: psychon Date: 2008-09-14 17:57:15 +0000 (Sun, 14 Sep 2008) Log Message: ----------- Makefile: Make all output files depend on the Makefile itself If you now rerun ./configure (e.g. for a different --prefix), everything will be recompiled. Modified Paths: -------------- trunk/Makefile.in trunk/man/Makefile.in trunk/modules/Makefile.in Modified: trunk/Makefile.in =================================================================== --- trunk/Makefile.in 2008-09-14 14:07:14 UTC (rev 1204) +++ trunk/Makefile.in 2008-09-14 17:57:15 UTC (rev 1205) @@ -48,7 +48,7 @@ distclean: clean rm -rf $(DISTCLEAN) -%.o: %.cpp +%.o: %.cpp Makefile @mkdir -p .depend $(CXX) $(CXXFLAGS) $(INCLUDES) -c -o $@ $< -MMD -MF .depend/$<.dep Modified: trunk/man/Makefile.in =================================================================== --- trunk/man/Makefile.in 2008-09-14 14:07:14 UTC (rev 1204) +++ trunk/man/Makefile.in 2008-09-14 17:57:15 UTC (rev 1205) @@ -7,7 +7,7 @@ all: $(MAN1) -%.1.gz: %.1 +%.1.gz: %.1 Makefile gzip -9 <$< >$@ clean: Modified: trunk/modules/Makefile.in =================================================================== --- trunk/modules/Makefile.in 2008-09-14 14:07:14 UTC (rev 1204) +++ trunk/modules/Makefile.in 2008-09-14 17:57:15 UTC (rev 1205) @@ -70,7 +70,7 @@ clean: rm -rf $(CLEAN) -%.so: %.cpp +%.so: %.cpp Makefile @mkdir -p .depend $(CXX) $(MODFLAGS) $(INCLUDES) $(LDFLAGS) -shared -o $@ $< $($(basename $<)FLAGS) -MMD -MF .depend/$<.dep This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-16 13:33:09
|
Revision: 1206 http://znc.svn.sourceforge.net/znc/?rev=1206&view=rev Author: psychon Date: 2008-09-16 13:33:19 +0000 (Tue, 16 Sep 2008) Log Message: ----------- Add --disable-optimization flag to configure to remove -O2 PS: This also kills -fomit-frame-pointer. If GCC doesn't add it on itself, we don't do it either. Modified Paths: -------------- trunk/configure trunk/configure.in Modified: trunk/configure =================================================================== --- trunk/configure 2008-09-14 17:57:15 UTC (rev 1205) +++ trunk/configure 2008-09-16 13:33:19 UTC (rev 1206) @@ -1235,6 +1235,8 @@ --disable-openssl disable openssl --disable-perl disable perl --enable-sasl enable sasl + --disable-optimization Disable some compiler optimizations to decrease + memory usage while compiling Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] @@ -2509,13 +2511,22 @@ enableval=$enable_sasl; if test "$enableval" = "yes" ; then SASL=1; fi fi +# Check whether --enable-optimization was given. +if test "${enable_optimization+set}" = set; then + enableval=$enable_optimization; OPTIMIZE="$enableval" +else + OPTIMIZE="yes" +fi + if test "$DEBUG" != "no"; then appendCXX -ggdb -D_DEBUG # These enable some debug options in g++'s STL, e.g. invalid use of iterators appendCXX -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC -D_GLIBCXX_CONCEPT_CHECKS else - appendCXX -O2 -fomit-frame-pointer + if test "x$OPTIMIZE" = "xyes"; then + appendCXX -O2 + fi fi if test "$IPV6" != "no"; then Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-09-14 17:57:15 UTC (rev 1205) +++ trunk/configure.in 2008-09-16 13:33:19 UTC (rev 1206) @@ -87,13 +87,20 @@ AC_ARG_ENABLE( [sasl], AC_HELP_STRING([--enable-sasl], [enable sasl]), [if test "$enableval" = "yes" ; then SASL=1; fi],) +AC_ARG_ENABLE( [optimization], + AC_HELP_STRING([--disable-optimization], [Disable some compiler optimizations to + decrease memory usage while compiling]), + [OPTIMIZE="$enableval"], + [OPTIMIZE="yes"]) if test "$DEBUG" != "no"; then appendCXX -ggdb -D_DEBUG # These enable some debug options in g++'s STL, e.g. invalid use of iterators appendCXX -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC -D_GLIBCXX_CONCEPT_CHECKS else - appendCXX -O2 -fomit-frame-pointer + if test "x$OPTIMIZE" = "xyes"; then + appendCXX -O2 + fi fi if test "$IPV6" != "no"; then This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-18 10:51:59
|
Revision: 1207 http://znc.svn.sourceforge.net/znc/?rev=1207&view=rev Author: psychon Date: 2008-09-18 17:52:10 +0000 (Thu, 18 Sep 2008) Log Message: ----------- Revert rev 1204 Well... Not a complete revert, the error messages are improved for our friendly debian users who cant find -dev packages by themselves. -.- It turns out that on some arches (namely sparc64) libssl depends on libcrypto, but doesn't link to it. This means that order is important when checking for these libs. (Currently the check for libssl fails due to unresolved symbols) Thanks to fred for reporting this. Revision Links: -------------- http://znc.svn.sourceforge.net/znc/?rev=1204&view=rev Modified Paths: -------------- trunk/configure trunk/configure.in Modified: trunk/configure =================================================================== --- trunk/configure 2008-09-16 13:33:19 UTC (rev 1206) +++ trunk/configure 2008-09-18 17:52:10 UTC (rev 1207) @@ -3393,14 +3393,18 @@ appendInc -I${OPENSSL}/include fi + # Don't reorder this! + # On some arches libssl depends on libcrypto without linking to it :( -{ echo "$as_me:$LINENO: checking for SSL_shutdown in -lssl" >&5 -echo $ECHO_N "checking for SSL_shutdown in -lssl... $ECHO_C" >&6; } -if test "${ac_cv_lib_ssl_SSL_shutdown+set}" = set; then +{ echo "$as_me:$LINENO: checking for BIO_new in -lcrypto" >&5 +echo $ECHO_N "checking for BIO_new in -lcrypto... $ECHO_C" >&6; } +if test "${ac_cv_lib_crypto_BIO_new+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lssl $LIBS" +LIBS="-lcrypto eg. libssl-dev." >&5 +echo "$as_me: error: Could not find libcrypto. Try --disable-openssl or install the + appropriate dependencies $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3414,11 +3418,11 @@ #ifdef __cplusplus extern "C" #endif -char SSL_shutdown (); +char BIO_new (); int main () { -return SSL_shutdown (); +return BIO_new (); ; return 0; } @@ -3441,41 +3445,42 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then - ac_cv_lib_ssl_SSL_shutdown=yes + ac_cv_lib_crypto_BIO_new=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_ssl_SSL_shutdown=no + ac_cv_lib_crypto_BIO_new=no fi 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 -{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_shutdown" >&5 -echo "${ECHO_T}$ac_cv_lib_ssl_SSL_shutdown" >&6; } -if test $ac_cv_lib_ssl_SSL_shutdown = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_BIO_new" >&5 +echo "${ECHO_T}$ac_cv_lib_crypto_BIO_new" >&6; } +if test $ac_cv_lib_crypto_BIO_new = yes; then cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSSL 1 +#define HAVE_LIBCRYPTO 1 _ACEOF - LIBS="-lssl $LIBS" + LIBS="-lcrypto $LIBS" else - { { echo "$as_me:$LINENO: error: Could not find libssl. Try --disable-openssl" >&5 -echo "$as_me: error: Could not find libssl. Try --disable-openssl" >&2;} - { (exit 1); exit 1; }; } + { { echo "$as_me:$LINENO: error: Could not find libcrypto. Try --disable-openssl or install the + appropriate dependencies fi -{ echo "$as_me:$LINENO: checking for BIO_new in -lcrypto" >&5 -echo $ECHO_N "checking for BIO_new in -lcrypto... $ECHO_C" >&6; } -if test "${ac_cv_lib_crypto_BIO_new+set}" = set; then +{ echo "$as_me:$LINENO: checking for SSL_shutdown in -lssl" >&5 +echo $ECHO_N "checking for SSL_shutdown in -lssl... $ECHO_C" >&6; } +if test "${ac_cv_lib_ssl_SSL_shutdown+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypto $LIBS" +LIBS="-lssl eg. libssl-dev." >&5 +echo "$as_me: error: Could not find libssl. Try --disable-openssl or install the + appropriate dependencies $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -3489,11 +3494,11 @@ #ifdef __cplusplus extern "C" #endif -char BIO_new (); +char SSL_shutdown (); int main () { -return BIO_new (); +return SSL_shutdown (); ; return 0; } @@ -3516,31 +3521,30 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then - ac_cv_lib_crypto_BIO_new=yes + ac_cv_lib_ssl_SSL_shutdown=yes else echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 - ac_cv_lib_crypto_BIO_new=no + ac_cv_lib_ssl_SSL_shutdown=no fi 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 -{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_BIO_new" >&5 -echo "${ECHO_T}$ac_cv_lib_crypto_BIO_new" >&6; } -if test $ac_cv_lib_crypto_BIO_new = yes; then +{ echo "$as_me:$LINENO: result: $ac_cv_lib_ssl_SSL_shutdown" >&5 +echo "${ECHO_T}$ac_cv_lib_ssl_SSL_shutdown" >&6; } +if test $ac_cv_lib_ssl_SSL_shutdown = yes; then cat >>confdefs.h <<_ACEOF -#define HAVE_LIBCRYPTO 1 +#define HAVE_LIBSSL 1 _ACEOF - LIBS="-lcrypto $LIBS" + LIBS="-lssl $LIBS" else - { { echo "$as_me:$LINENO: error: Could not find libcrypto. Try --disable-openssl" >&5 -echo "$as_me: error: Could not find libcrypto. Try --disable-openssl" >&2;} - { (exit 1); exit 1; }; } + { { echo "$as_me:$LINENO: error: Could not find libssl. Try --disable-openssl or install the + appropriate dependencies fi Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-09-16 13:33:19 UTC (rev 1206) +++ trunk/configure.in 2008-09-18 17:52:10 UTC (rev 1207) @@ -120,8 +120,14 @@ appendInc -I${OPENSSL}/include fi - AC_CHECK_LIB( ssl, SSL_shutdown,,AC_ERROR([Could not find libssl. Try --disable-openssl]), ) - AC_CHECK_LIB( crypto, BIO_new,,AC_ERROR([Could not find libcrypto. Try --disable-openssl]), ) + # Don't reorder this! + # On some arches libssl depends on libcrypto without linking to it :( + AC_CHECK_LIB( crypto, BIO_new,, + AC_ERROR([Could not find libcrypto. Try --disable-openssl or install the + appropriate dependencies, eg. libssl-dev.]), ) + AC_CHECK_LIB( ssl, SSL_shutdown,, + AC_ERROR([Could not find libssl. Try --disable-openssl or install the + appropriate dependencies, eg. libssl-dev.]), ) if test -z "$NOSSL"; then appendCXX -DHAVE_LIBSSL This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2008-09-26 12:51:48
|
Revision: 1215 http://znc.svn.sourceforge.net/znc/?rev=1215&view=rev Author: kroimon Date: 2008-09-26 12:51:36 +0000 (Fri, 26 Sep 2008) Log Message: ----------- Fixed some trailing whitespace / tab mixups and adjusted MD5.cpp to our coding guidelines. This commit includes absolutely no changes in functionality, only pure cleanup. Modified Paths: -------------- trunk/ClientCommand.cpp trunk/MD5.cpp trunk/ZNCString.cpp Modified: trunk/ClientCommand.cpp =================================================================== --- trunk/ClientCommand.cpp 2008-09-21 12:54:10 UTC (rev 1214) +++ trunk/ClientCommand.cpp 2008-09-26 12:51:36 UTC (rev 1215) @@ -390,34 +390,34 @@ } } else if (sCommand.CaseCmp("LISTSERVERS") == 0) { if (m_pUser) { - if (m_pUser->HasServers()) { - const vector<CServer*>& vServers = m_pUser->GetServers(); - CTable Table; - Table.AddColumn("Host"); - Table.AddColumn("Port"); - Table.AddColumn("SSL"); - Table.AddColumn("Pass"); + if (m_pUser->HasServers()) { + const vector<CServer*>& vServers = m_pUser->GetServers(); + CTable Table; + Table.AddColumn("Host"); + Table.AddColumn("Port"); + Table.AddColumn("SSL"); + Table.AddColumn("Pass"); - for (unsigned int a = 0; a < vServers.size(); a++) { - CServer* pServer = vServers[a]; - Table.AddRow(); - Table.SetCell("Host", pServer->GetName()); - Table.SetCell("Port", CString(pServer->GetPort())); - Table.SetCell("SSL", (pServer->IsSSL()) ? "SSL" : ""); - Table.SetCell("Pass", pServer->GetPass()); - } + for (unsigned int a = 0; a < vServers.size(); a++) { + CServer* pServer = vServers[a]; + Table.AddRow(); + Table.SetCell("Host", pServer->GetName()); + Table.SetCell("Port", CString(pServer->GetPort())); + Table.SetCell("SSL", (pServer->IsSSL()) ? "SSL" : ""); + Table.SetCell("Pass", pServer->GetPass()); + } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sTmp; + if (Table.size()) { + unsigned int uTableIdx = 0; + CString sTmp; - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); + while (Table.GetLine(uTableIdx++, sTmp)) { + PutStatus(sTmp); + } } + } else { + PutStatus("You don't have any servers added."); } - } else { - PutStatus("You don't have any servers added."); - } } } else if (sCommand.CaseCmp("TOPICS") == 0) { if (m_pUser) { @@ -587,9 +587,9 @@ } else if ((sCommand.CaseCmp("LISTMODS") == 0) || (sCommand.CaseCmp("LISTMODULES") == 0)) { #ifdef _MODULES if (m_pUser->IsAdmin()) { - CModules& GModules = CZNC::Get().GetModules(); + CModules& GModules = CZNC::Get().GetModules(); - if (!GModules.size()) { + if (!GModules.size()) { PutStatus("No global modules loaded."); } else { CTable GTable; @@ -711,18 +711,18 @@ bool bGlobal = false; if (sLine.Token(1).CaseCmp("-global") == 0) { - sMod = sLine.Token(2); + sMod = sLine.Token(2); - if (!m_pUser->IsAdmin()) { + if (!m_pUser->IsAdmin()) { PutStatus("Unable to load global module [" + sMod + "] Access Denied."); return; - } + } - sArgs = sLine.Token(3, true); - bGlobal = true; + sArgs = sLine.Token(3, true); + bGlobal = true; } else { - sMod = sLine.Token(1); - sArgs = sLine.Token(2, true); + sMod = sLine.Token(1); + sArgs = sLine.Token(2, true); } if (m_pUser->DenyLoadMod()) { @@ -758,16 +758,16 @@ bool bGlobal = false; if (sLine.Token(1).CaseCmp("-global") == 0) { - sMod = sLine.Token(2); + sMod = sLine.Token(2); - if (!m_pUser->IsAdmin()) { + if (!m_pUser->IsAdmin()) { PutStatus("Unable to unload global module [" + sMod + "] Access Denied."); return; - } + } - bGlobal = true; + bGlobal = true; } else - sMod = sLine.Token(1); + sMod = sLine.Token(1); if (m_pUser->DenyLoadMod()) { PutStatus("Unable to unload [" + sMod + "] Access Denied."); @@ -782,9 +782,9 @@ CString sModRet; if (bGlobal) { - CZNC::Get().GetModules().UnloadModule(sMod, sModRet); + CZNC::Get().GetModules().UnloadModule(sMod, sModRet); } else { - m_pUser->GetModules().UnloadModule(sMod, sModRet); + m_pUser->GetModules().UnloadModule(sMod, sModRet); } PutStatus(sModRet); @@ -798,18 +798,18 @@ bool bGlobal = false; if (sLine.Token(1).CaseCmp("-global") == 0) { - sMod = sLine.Token(2); + sMod = sLine.Token(2); - if (!m_pUser->IsAdmin()) { + if (!m_pUser->IsAdmin()) { PutStatus("Unable to reload global module [" + sMod + "] Access Denied."); return; - } + } - sArgs = sLine.Token(3, true); - bGlobal = true; + sArgs = sLine.Token(3, true); + bGlobal = true; } else { - sMod = sLine.Token(1); - sArgs = sLine.Token(2, true); + sMod = sLine.Token(1); + sArgs = sLine.Token(2, true); } if (m_pUser->DenyLoadMod()) { @@ -825,9 +825,9 @@ CString sModRet; if (bGlobal) { - CZNC::Get().GetModules().ReloadModule(sMod, sArgs, NULL, sModRet); + CZNC::Get().GetModules().ReloadModule(sMod, sArgs, NULL, sModRet); } else { - m_pUser->GetModules().ReloadModule(sMod, sArgs, m_pUser, sModRet); + m_pUser->GetModules().ReloadModule(sMod, sArgs, m_pUser, sModRet); } PutStatus(sModRet); Modified: trunk/MD5.cpp =================================================================== --- trunk/MD5.cpp 2008-09-21 12:54:10 UTC (rev 1214) +++ trunk/MD5.cpp 2008-09-26 12:51:36 UTC (rev 1215) @@ -23,249 +23,230 @@ #include <stdio.h> #include <string.h> -CMD5::CMD5() -{ +CMD5::CMD5() { *m_szMD5 = '\0'; } -CMD5::CMD5(const string& sText) -{ +CMD5::CMD5(const string& sText) { MakeHash(sText.c_str(), sText.length()); } -CMD5::CMD5(const char* szText, uint32 nTextLen) -{ +CMD5::CMD5(const char* szText, uint32 nTextLen) { MakeHash(szText, nTextLen); } -CMD5::~CMD5() -{ -} +CMD5::~CMD5() {} -#define GET_UINT32(n,b,i) \ -{ \ - (n) = ( (uint32) (b)[(i) ] ) \ - | ( (uint32) (b)[(i) + 1] << 8 ) \ - | ( (uint32) (b)[(i) + 2] << 16 ) \ - | ( (uint32) (b)[(i) + 3] << 24 ); \ +#define GET_UINT32(n,b,i) { \ + (n) = ((uint32) (b)[(i) ] ) \ + | ((uint32) (b)[(i) + 1] << 8) \ + | ((uint32) (b)[(i) + 2] << 16) \ + | ((uint32) (b)[(i) + 3] << 24); \ } -#define PUT_UINT32(n,b,i) \ -{ \ - (b)[(i) ] = (uint8) ( (n) ); \ - (b)[(i) + 1] = (uint8) ( (n) >> 8 ); \ - (b)[(i) + 2] = (uint8) ( (n) >> 16 ); \ - (b)[(i) + 3] = (uint8) ( (n) >> 24 ); \ +#define PUT_UINT32(n,b,i) { \ + (b)[(i) ] = (uint8) ((n) ); \ + (b)[(i) + 1] = (uint8) ((n) >> 8); \ + (b)[(i) + 2] = (uint8) ((n) >> 16); \ + (b)[(i) + 3] = (uint8) ((n) >> 24); \ } -void CMD5::md5_starts( md5_context *ctx ) const -{ - ctx->total[0] = 0; - ctx->total[1] = 0; +void CMD5::md5_starts(md5_context *ctx) const { + ctx->total[0] = 0; + ctx->total[1] = 0; - ctx->state[0] = 0x67452301; - ctx->state[1] = 0xEFCDAB89; - ctx->state[2] = 0x98BADCFE; - ctx->state[3] = 0x10325476; + ctx->state[0] = 0x67452301; + ctx->state[1] = 0xEFCDAB89; + ctx->state[2] = 0x98BADCFE; + ctx->state[3] = 0x10325476; } -void CMD5::md5_process( md5_context *ctx, uint8 data[64] ) const -{ - uint32 X[16], A, B, C, D; +void CMD5::md5_process(md5_context *ctx, uint8 data[64]) const { + uint32 X[16], A, B, C, D; - GET_UINT32( X[0], data, 0 ); - GET_UINT32( X[1], data, 4 ); - GET_UINT32( X[2], data, 8 ); - GET_UINT32( X[3], data, 12 ); - GET_UINT32( X[4], data, 16 ); - GET_UINT32( X[5], data, 20 ); - GET_UINT32( X[6], data, 24 ); - GET_UINT32( X[7], data, 28 ); - GET_UINT32( X[8], data, 32 ); - GET_UINT32( X[9], data, 36 ); - GET_UINT32( X[10], data, 40 ); - GET_UINT32( X[11], data, 44 ); - GET_UINT32( X[12], data, 48 ); - GET_UINT32( X[13], data, 52 ); - GET_UINT32( X[14], data, 56 ); - GET_UINT32( X[15], data, 60 ); + GET_UINT32(X[0], data, 0); + GET_UINT32(X[1], data, 4); + GET_UINT32(X[2], data, 8); + GET_UINT32(X[3], data, 12); + GET_UINT32(X[4], data, 16); + GET_UINT32(X[5], data, 20); + GET_UINT32(X[6], data, 24); + GET_UINT32(X[7], data, 28); + GET_UINT32(X[8], data, 32); + GET_UINT32(X[9], data, 36); + GET_UINT32(X[10], data, 40); + GET_UINT32(X[11], data, 44); + GET_UINT32(X[12], data, 48); + GET_UINT32(X[13], data, 52); + GET_UINT32(X[14], data, 56); + GET_UINT32(X[15], data, 60); #define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n))) -#define P(a,b,c,d,k,s,t) \ -{ \ - a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \ -} +#define P(a,b,c,d,k,s,t) a += F(b,c,d) + X[k] + t; a = S(a,s) + b; - A = ctx->state[0]; - B = ctx->state[1]; - C = ctx->state[2]; - D = ctx->state[3]; + A = ctx->state[0]; + B = ctx->state[1]; + C = ctx->state[2]; + D = ctx->state[3]; #define F(x,y,z) (z ^ (x & (y ^ z))) - P( A, B, C, D, 0, 7, 0xD76AA478 ); - P( D, A, B, C, 1, 12, 0xE8C7B756 ); - P( C, D, A, B, 2, 17, 0x242070DB ); - P( B, C, D, A, 3, 22, 0xC1BDCEEE ); - P( A, B, C, D, 4, 7, 0xF57C0FAF ); - P( D, A, B, C, 5, 12, 0x4787C62A ); - P( C, D, A, B, 6, 17, 0xA8304613 ); - P( B, C, D, A, 7, 22, 0xFD469501 ); - P( A, B, C, D, 8, 7, 0x698098D8 ); - P( D, A, B, C, 9, 12, 0x8B44F7AF ); - P( C, D, A, B, 10, 17, 0xFFFF5BB1 ); - P( B, C, D, A, 11, 22, 0x895CD7BE ); - P( A, B, C, D, 12, 7, 0x6B901122 ); - P( D, A, B, C, 13, 12, 0xFD987193 ); - P( C, D, A, B, 14, 17, 0xA679438E ); - P( B, C, D, A, 15, 22, 0x49B40821 ); + P(A, B, C, D, 0, 7, 0xD76AA478); + P(D, A, B, C, 1, 12, 0xE8C7B756); + P(C, D, A, B, 2, 17, 0x242070DB); + P(B, C, D, A, 3, 22, 0xC1BDCEEE); + P(A, B, C, D, 4, 7, 0xF57C0FAF); + P(D, A, B, C, 5, 12, 0x4787C62A); + P(C, D, A, B, 6, 17, 0xA8304613); + P(B, C, D, A, 7, 22, 0xFD469501); + P(A, B, C, D, 8, 7, 0x698098D8); + P(D, A, B, C, 9, 12, 0x8B44F7AF); + P(C, D, A, B, 10, 17, 0xFFFF5BB1); + P(B, C, D, A, 11, 22, 0x895CD7BE); + P(A, B, C, D, 12, 7, 0x6B901122); + P(D, A, B, C, 13, 12, 0xFD987193); + P(C, D, A, B, 14, 17, 0xA679438E); + P(B, C, D, A, 15, 22, 0x49B40821); #undef F #define F(x,y,z) (y ^ (z & (x ^ y))) - P( A, B, C, D, 1, 5, 0xF61E2562 ); - P( D, A, B, C, 6, 9, 0xC040B340 ); - P( C, D, A, B, 11, 14, 0x265E5A51 ); - P( B, C, D, A, 0, 20, 0xE9B6C7AA ); - P( A, B, C, D, 5, 5, 0xD62F105D ); - P( D, A, B, C, 10, 9, 0x02441453 ); - P( C, D, A, B, 15, 14, 0xD8A1E681 ); - P( B, C, D, A, 4, 20, 0xE7D3FBC8 ); - P( A, B, C, D, 9, 5, 0x21E1CDE6 ); - P( D, A, B, C, 14, 9, 0xC33707D6 ); - P( C, D, A, B, 3, 14, 0xF4D50D87 ); - P( B, C, D, A, 8, 20, 0x455A14ED ); - P( A, B, C, D, 13, 5, 0xA9E3E905 ); - P( D, A, B, C, 2, 9, 0xFCEFA3F8 ); - P( C, D, A, B, 7, 14, 0x676F02D9 ); - P( B, C, D, A, 12, 20, 0x8D2A4C8A ); + P(A, B, C, D, 1, 5, 0xF61E2562); + P(D, A, B, C, 6, 9, 0xC040B340); + P(C, D, A, B, 11, 14, 0x265E5A51); + P(B, C, D, A, 0, 20, 0xE9B6C7AA); + P(A, B, C, D, 5, 5, 0xD62F105D); + P(D, A, B, C, 10, 9, 0x02441453); + P(C, D, A, B, 15, 14, 0xD8A1E681); + P(B, C, D, A, 4, 20, 0xE7D3FBC8); + P(A, B, C, D, 9, 5, 0x21E1CDE6); + P(D, A, B, C, 14, 9, 0xC33707D6); + P(C, D, A, B, 3, 14, 0xF4D50D87); + P(B, C, D, A, 8, 20, 0x455A14ED); + P(A, B, C, D, 13, 5, 0xA9E3E905); + P(D, A, B, C, 2, 9, 0xFCEFA3F8); + P(C, D, A, B, 7, 14, 0x676F02D9); + P(B, C, D, A, 12, 20, 0x8D2A4C8A); #undef F #define F(x,y,z) (x ^ y ^ z) - P( A, B, C, D, 5, 4, 0xFFFA3942 ); - P( D, A, B, C, 8, 11, 0x8771F681 ); - P( C, D, A, B, 11, 16, 0x6D9D6122 ); - P( B, C, D, A, 14, 23, 0xFDE5380C ); - P( A, B, C, D, 1, 4, 0xA4BEEA44 ); - P( D, A, B, C, 4, 11, 0x4BDECFA9 ); - P( C, D, A, B, 7, 16, 0xF6BB4B60 ); - P( B, C, D, A, 10, 23, 0xBEBFBC70 ); - P( A, B, C, D, 13, 4, 0x289B7EC6 ); - P( D, A, B, C, 0, 11, 0xEAA127FA ); - P( C, D, A, B, 3, 16, 0xD4EF3085 ); - P( B, C, D, A, 6, 23, 0x04881D05 ); - P( A, B, C, D, 9, 4, 0xD9D4D039 ); - P( D, A, B, C, 12, 11, 0xE6DB99E5 ); - P( C, D, A, B, 15, 16, 0x1FA27CF8 ); - P( B, C, D, A, 2, 23, 0xC4AC5665 ); + P(A, B, C, D, 5, 4, 0xFFFA3942); + P(D, A, B, C, 8, 11, 0x8771F681); + P(C, D, A, B, 11, 16, 0x6D9D6122); + P(B, C, D, A, 14, 23, 0xFDE5380C); + P(A, B, C, D, 1, 4, 0xA4BEEA44); + P(D, A, B, C, 4, 11, 0x4BDECFA9); + P(C, D, A, B, 7, 16, 0xF6BB4B60); + P(B, C, D, A, 10, 23, 0xBEBFBC70); + P(A, B, C, D, 13, 4, 0x289B7EC6); + P(D, A, B, C, 0, 11, 0xEAA127FA); + P(C, D, A, B, 3, 16, 0xD4EF3085); + P(B, C, D, A, 6, 23, 0x04881D05); + P(A, B, C, D, 9, 4, 0xD9D4D039); + P(D, A, B, C, 12, 11, 0xE6DB99E5); + P(C, D, A, B, 15, 16, 0x1FA27CF8); + P(B, C, D, A, 2, 23, 0xC4AC5665); #undef F #define F(x,y,z) (y ^ (x | ~z)) - P( A, B, C, D, 0, 6, 0xF4292244 ); - P( D, A, B, C, 7, 10, 0x432AFF97 ); - P( C, D, A, B, 14, 15, 0xAB9423A7 ); - P( B, C, D, A, 5, 21, 0xFC93A039 ); - P( A, B, C, D, 12, 6, 0x655B59C3 ); - P( D, A, B, C, 3, 10, 0x8F0CCC92 ); - P( C, D, A, B, 10, 15, 0xFFEFF47D ); - P( B, C, D, A, 1, 21, 0x85845DD1 ); - P( A, B, C, D, 8, 6, 0x6FA87E4F ); - P( D, A, B, C, 15, 10, 0xFE2CE6E0 ); - P( C, D, A, B, 6, 15, 0xA3014314 ); - P( B, C, D, A, 13, 21, 0x4E0811A1 ); - P( A, B, C, D, 4, 6, 0xF7537E82 ); - P( D, A, B, C, 11, 10, 0xBD3AF235 ); - P( C, D, A, B, 2, 15, 0x2AD7D2BB ); - P( B, C, D, A, 9, 21, 0xEB86D391 ); + P(A, B, C, D, 0, 6, 0xF4292244); + P(D, A, B, C, 7, 10, 0x432AFF97); + P(C, D, A, B, 14, 15, 0xAB9423A7); + P(B, C, D, A, 5, 21, 0xFC93A039); + P(A, B, C, D, 12, 6, 0x655B59C3); + P(D, A, B, C, 3, 10, 0x8F0CCC92); + P(C, D, A, B, 10, 15, 0xFFEFF47D); + P(B, C, D, A, 1, 21, 0x85845DD1); + P(A, B, C, D, 8, 6, 0x6FA87E4F); + P(D, A, B, C, 15, 10, 0xFE2CE6E0); + P(C, D, A, B, 6, 15, 0xA3014314); + P(B, C, D, A, 13, 21, 0x4E0811A1); + P(A, B, C, D, 4, 6, 0xF7537E82); + P(D, A, B, C, 11, 10, 0xBD3AF235); + P(C, D, A, B, 2, 15, 0x2AD7D2BB); + P(B, C, D, A, 9, 21, 0xEB86D391); #undef F - ctx->state[0] += A; - ctx->state[1] += B; - ctx->state[2] += C; - ctx->state[3] += D; + ctx->state[0] += A; + ctx->state[1] += B; + ctx->state[2] += C; + ctx->state[3] += D; } -void CMD5::md5_update( md5_context *ctx, uint8 *input, uint32 length ) const -{ - uint32 left, fill; +void CMD5::md5_update(md5_context *ctx, uint8 *input, uint32 length) const { + uint32 left, fill; - if( ! length ) return; + if (!length) return; - left = ctx->total[0] & 0x3F; - fill = 64 - left; + left = ctx->total[0] & 0x3F; + fill = 64 - left; - ctx->total[0] += length; - ctx->total[0] &= 0xFFFFFFFF; + ctx->total[0] += length; + ctx->total[0] &= 0xFFFFFFFF; - if( ctx->total[0] < length ) - ctx->total[1]++; + if (ctx->total[0] < length) + ctx->total[1]++; - if( left && length >= fill ) - { - memcpy( (void *) (ctx->buffer + left), - (void *) input, fill ); - md5_process( ctx, ctx->buffer ); - length -= fill; - input += fill; - left = 0; - } + if (left && length >= fill) { + memcpy((void *) (ctx->buffer + left), + (void *) input, fill); + md5_process(ctx, ctx->buffer); + length -= fill; + input += fill; + left = 0; + } - while( length >= 64 ) - { - md5_process( ctx, input ); - length -= 64; - input += 64; - } + while (length >= 64) { + md5_process(ctx, input); + length -= 64; + input += 64; + } - if( length ) - { - memcpy( (void *) (ctx->buffer + left), - (void *) input, length ); - } + if (length) { + memcpy((void *) (ctx->buffer + left), + (void *) input, length); + } } -static uint8 md5_padding[64] = -{ - 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 +static uint8 md5_padding[64] = { + 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -void CMD5::md5_finish( md5_context *ctx, uint8 digest[16] ) const -{ - uint32 last, padn; - uint32 high, low; - uint8 msglen[8]; +void CMD5::md5_finish(md5_context *ctx, uint8 digest[16]) const { + uint32 last, padn; + uint32 high, low; + uint8 msglen[8]; - high = ( ctx->total[0] >> 29 ) - | ( ctx->total[1] << 3 ); - low = ( ctx->total[0] << 3 ); + high = (ctx->total[0] >> 29) + | (ctx->total[1] << 3); + low = (ctx->total[0] << 3); - PUT_UINT32( low, msglen, 0 ); - PUT_UINT32( high, msglen, 4 ); + PUT_UINT32(low, msglen, 0); + PUT_UINT32(high, msglen, 4); - last = ctx->total[0] & 0x3F; - padn = ( last < 56 ) ? ( 56 - last ) : ( 120 - last ); + last = ctx->total[0] & 0x3F; + padn = (last < 56) ? (56 - last) : (120 - last); - md5_update( ctx, md5_padding, padn ); - md5_update( ctx, msglen, 8 ); + md5_update(ctx, md5_padding, padn); + md5_update(ctx, msglen, 8); - PUT_UINT32( ctx->state[0], digest, 0 ); - PUT_UINT32( ctx->state[1], digest, 4 ); - PUT_UINT32( ctx->state[2], digest, 8 ); - PUT_UINT32( ctx->state[3], digest, 12 ); + PUT_UINT32(ctx->state[0], digest, 0); + PUT_UINT32(ctx->state[1], digest, 4); + PUT_UINT32(ctx->state[2], digest, 8); + PUT_UINT32(ctx->state[3], digest, 12); } -char* CMD5::MakeHash(const char* szText, uint32 nTextLen) -{ +char* CMD5::MakeHash(const char* szText, uint32 nTextLen) { md5_context ctx; unsigned char md5sum[16]; unsigned short i; @@ -274,10 +255,9 @@ md5_update(&ctx, (uint8*)szText, nTextLen); md5_finish(&ctx, md5sum); - for (i = 0; i < 16; i++) - { + for (i = 0; i < 16; i++) { sprintf(m_szMD5 + i * 2, "%02x", md5sum[i]); } - return(m_szMD5); + return m_szMD5; } Modified: trunk/ZNCString.cpp =================================================================== --- trunk/ZNCString.cpp 2008-09-21 12:54:10 UTC (rev 1214) +++ trunk/ZNCString.cpp 2008-09-26 12:51:36 UTC (rev 1215) @@ -143,7 +143,7 @@ CString::CString(float i) : string() { stringstream s; s << i; *this = s.str(); } inline unsigned char* CString::strnchr(const unsigned char* src, unsigned char c, unsigned int iMaxBytes, unsigned char* pFill, unsigned int* piCount) const { - for (unsigned int a = 0; a < iMaxBytes && *src; a++, src++) { + for (unsigned int a = 0; a < iMaxBytes && *src; a++, src++) { if (pFill) { pFill[a] = *src; } @@ -169,7 +169,7 @@ *piCount = 0; } - return NULL; + return NULL; } int CString::CaseCmp(const CString& s, u_long uLen) const { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2008-09-27 09:52:10
|
Revision: 1217 http://znc.svn.sourceforge.net/znc/?rev=1217&view=rev Author: kroimon Date: 2008-09-27 09:52:00 +0000 (Sat, 27 Sep 2008) Log Message: ----------- Added the Q module which allows the user to auth with QuakeNet's Q bot. Modified Paths: -------------- trunk/AUTHORS Added Paths: ----------- trunk/modules/q.cpp Modified: trunk/AUTHORS =================================================================== --- trunk/AUTHORS 2008-09-26 12:52:07 UTC (rev 1216) +++ trunk/AUTHORS 2008-09-27 09:52:00 UTC (rev 1217) @@ -49,4 +49,5 @@ kroimon <zn...@kr...> - Patches, Documentation Some enhancements, some cleanups, some other stuff ;) + Modules: q German and english wiki maintenance Added: trunk/modules/q.cpp =================================================================== --- trunk/modules/q.cpp (rev 0) +++ trunk/modules/q.cpp 2008-09-27 09:52:00 UTC (rev 1217) @@ -0,0 +1,486 @@ +/* + * Copyright (C) 2008 See the AUTHORS file for details. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include "Modules.h" +#include "User.h" +#include "IRCSock.h" +#include "Nick.h" +#include "Chan.h" + +#ifndef Q_DEBUG_COMMUNICATION + #define Q_DEBUG_COMMUNICATION 0 +#endif + +class CQModule : public CModule { +public: + MODCONSTRUCTOR(CQModule) {} + virtual ~CQModule() {} + + virtual bool OnLoad(const CString& sArgs, CString& sMessage) { + if (!sArgs.empty()) { + SetUsername(sArgs.Token(0)); + SetPassword(sArgs.Token(1)); + } else { + m_sUsername = GetNV("Username"); + m_sPassword = GetNV("Password"); + } + + CString sTmp; + m_bUseHiddenHost = (sTmp = GetNV("UseHiddenHost")).empty() ? true : sTmp.ToBool(); + m_bUseChallenge = (sTmp = GetNV("UseChallenge")).empty() ? true : sTmp.ToBool(); + m_bRequestPerms = GetNV("RequestPerms").ToBool(); + + OnIRCDisconnected(); // reset module's state + + if (IsIRCConnected()) { + // check for usermode +x if we are already connected + set<unsigned char> scUserModes = GetUser()->GetIRCSock()->GetUserModes(); + if (scUserModes.find('x') != scUserModes.end()) + m_bCloaked = true; + + OnIRCConnected(); + } + + return true; + } + + virtual void OnIRCDisconnected() { + m_bCloaked = false; + m_bAuthed = false; + m_bRequestedWhoami = false; + m_bRequestedChallenge = false; + m_bCatchResponse = false; + } + + virtual void OnIRCConnected() { + if (m_bUseHiddenHost) + Cloak(); + WhoAmI(); + } + + virtual void OnModCommand(const CString& sLine) { + CString sCommand = sLine.Token(0).AsLower(); + + if (sCommand == "help") { + PutModule("The following commands are available:"); + CTable Table; + Table.AddColumn("Command"); + Table.AddColumn("Description"); + Table.AddRow(); + Table.SetCell("Command", "Auth [<username> <password>]"); + Table.SetCell("Description", "Tries to authenticate you with Q. Both parameters are optional."); + Table.AddRow(); + Table.SetCell("Command", "Cloak"); + Table.SetCell("Description", "Tries to set usermode +x to hide your real hostname."); + Table.AddRow(); + Table.SetCell("Command", "Status"); + Table.SetCell("Description", "Prints the current status of the module."); + Table.AddRow(); + Table.SetCell("Command", "Update"); + Table.SetCell("Description", "Re-requests the current user information from Q."); + Table.AddRow(); + Table.SetCell("Command", "Set <setting> <value>"); + Table.SetCell("Description", "Changes the value of the given setting. See the list of settings below."); + Table.AddRow(); + Table.SetCell("Command", "Get"); + Table.SetCell("Description", "Prints out the current configuration. See the list of settings below."); + PutModule(Table); + + PutModule("The following settings are available:"); + CTable Table2; + Table2.AddColumn("Setting"); + Table2.AddColumn("Type"); + Table2.AddColumn("Description"); + Table2.AddRow(); + Table2.SetCell("Setting", "Username"); + Table2.SetCell("Type", "String"); + Table2.SetCell("Description", "Your Q username."); + Table2.AddRow(); + Table2.SetCell("Setting", "Password"); + Table2.SetCell("Type", "String"); + Table2.SetCell("Description", "Your Q password."); + Table2.AddRow(); + Table2.SetCell("Setting", "UseHiddenHost"); + Table2.SetCell("Type", "Boolean"); + Table2.SetCell("Description", "Whether to cloak your hostname (+x) automatically on connect."); + Table2.AddRow(); + Table2.SetCell("Setting", "UseChallenge"); + Table2.SetCell("Type", "Boolean"); + Table2.SetCell("Description", "Whether to use the CHALLENGEAUTH mechanism to avoid sending passwords in cleartext."); + Table2.AddRow(); + Table2.SetCell("Setting", "RequestPerms"); + Table2.SetCell("Type", "Boolean"); + Table2.SetCell("Description", "Whether to request voice/op from Q on join/devoice/deop."); + PutModule(Table2); + + PutModule("This module takes 2 optional parameters: <username> <password>"); + PutModule("Module settings are stored between restarts."); + + } else if (sCommand == "set") { + CString sSetting = sLine.Token(1).AsLower(); + CString sValue = sLine.Token(2); + if (sSetting.empty() || sValue.empty()) { + PutModule("Syntax: Set <setting> <value>"); + } else if (sSetting == "username") { + SetUsername(sValue); + PutModule("Username set"); + } else if (sSetting == "password") { + SetPassword(sValue); + PutModule("Password set"); + } else if (sSetting == "usehiddenhost") { + SetUseHiddenHost(sValue.ToBool()); + PutModule("UseHiddenHost set"); + if (m_bUseHiddenHost && IsIRCConnected()) + Cloak(); + } else if (sSetting == "usechallenge") { + SetUseChallenge(sValue.ToBool()); + PutModule("UseChallenge set"); + } else if (sSetting == "requestperms") { + SetRequestPerms(sValue.ToBool()); + PutModule("RequestPerms set"); + } else + PutModule("Unknown setting: " + sSetting); + + } else if (sCommand == "get" || sCommand == "list") { + CTable Table; + Table.AddColumn("Setting"); + Table.AddColumn("Value"); + Table.AddRow(); + Table.SetCell("Setting", "Username"); + Table.SetCell("Value", m_sUsername); + Table.AddRow(); + Table.SetCell("Setting", "Password"); + Table.SetCell("Value", "*****"); // m_sPassword + Table.AddRow(); + Table.SetCell("Setting", "UseHiddenHost"); + Table.SetCell("Value", CString(m_bUseHiddenHost ? "true" : "false")); + Table.AddRow(); + Table.SetCell("Setting", "UseChallenge"); + Table.SetCell("Value", CString(m_bUseChallenge ? "true" : "false")); + Table.AddRow(); + Table.SetCell("Setting", "RequestPerms"); + Table.SetCell("Value", CString(m_bRequestPerms ? "true" : "false")); + PutModule(Table); + + } else if (sCommand == "status") { + PutModule("Connected: " + CString(IsIRCConnected() ? "yes" : "no")); + PutModule("Cloaked: " + CString(m_bCloaked ? "yes" : "no")); + PutModule("Authed: " + CString(m_bAuthed ? "yes" : "no")); + + } else { + // The following commands require an IRC connection. + if (!IsIRCConnected()) { + PutModule("Error: You are not connected to IRC."); + return; + } + + if (sCommand == "cloak") { + if (!m_bCloaked) + Cloak(); + else + PutModule("Error: You are already cloaked!"); + + } else if (sCommand == "auth") { + if (!m_bAuthed) + Auth(sLine.Token(1), sLine.Token(2)); + else + PutModule("Error: You are already authed!"); + + } else if (sCommand == "update") { + WhoAmI(); + PutModule("Update requested."); + + } else { + PutModule("Unknown command. Try 'help'."); + } + } + } + + virtual EModRet OnRaw(CString& sLine) { + // use OnRaw because OnUserMode is not defined (yet?) + if (sLine.Token(1) == "396" && sLine.Token(3).find("users.quakenet.org") != CString::npos) { + m_bCloaked = true; + PutModule("Cloak successful: Your hostname is now cloaked."); + } + return CONTINUE; + } + + virtual EModRet OnPrivMsg(CNick& Nick, CString& sMessage) { + return HandleMessage(Nick, sMessage); + } + + virtual EModRet OnPrivNotice(CNick& Nick, CString& sMessage) { + return HandleMessage(Nick, sMessage); + } + + virtual void OnJoin(const CNick& Nick, CChan& Channel) { + if (m_bRequestPerms && IsSelf(Nick)) + HandleNeed(Channel, "ov"); + } + + virtual void OnDeop(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + if (m_bRequestPerms && IsSelf(Nick) && !IsSelf(OpNick)) + HandleNeed(Channel, "o"); + } + + virtual void OnDevoice(const CNick& OpNick, const CNick& Nick, CChan& Channel, bool bNoChange) { + if (m_bRequestPerms && IsSelf(Nick) && !IsSelf(OpNick)) + HandleNeed(Channel, "v"); + } + + +private: + bool m_bCloaked; + bool m_bAuthed; + bool m_bRequestedWhoami; + bool m_bRequestedChallenge; + bool m_bCatchResponse; + MCString m_msChanModes; + + void PutQ(const CString& sMessage) { + PutIRC("PRIVMSG Q@CServe.quakenet.org :" + sMessage); +#if Q_DEBUG_COMMUNICATION + PutModule("[ZNC --> Q] " + sMessage); +#endif + } + + void Cloak() { + if (m_bCloaked) + return; + + PutModule("Cloak: Trying to cloak your hostname, setting +x..."); + PutIRC("MODE " + GetUser()->GetIRCSock()->GetNick() + " +x"); + } + + void WhoAmI() { + m_bRequestedWhoami = true; + PutQ("WHOAMI"); + } + + void Auth(const CString& sUsername = "", const CString& sPassword = "") { + if (m_bAuthed) + return; + + if (!sUsername.empty()) + SetUsername(sUsername); + if (!sPassword.empty()) + SetPassword(sPassword); + + if (m_sUsername.empty() || m_sPassword.empty()) { + PutModule("You have to set a username and password to use this module! See 'help' for details."); + return; + } + + if (m_bUseChallenge) { + PutModule("Auth: Requesting CHALLENGE..."); + m_bRequestedChallenge = true; + PutQ("CHALLENGE"); + } else { + PutModule("Auth: Sending AUTH request..."); + PutQ("AUTH " + m_sUsername + " " + m_sPassword); + } + } + + void ChallengeAuth(CString sChallenge) { + if (m_bAuthed) + return; + + CString sUsername = m_sUsername.AsLower() + .Replace_n("[", "{") + .Replace_n("]", "}") + .Replace_n("\\", "|"); + CString sPasswordHash = m_sPassword.Left(10).MD5(); + CString sKey = CString(sUsername + ":" + sPasswordHash).MD5(); + CString sResponse = HMAC_MD5(sKey, sChallenge); + + PutModule("Auth: Received challenge, sending CHALLENGEAUTH request..."); + PutQ("CHALLENGEAUTH " + m_sUsername + " " + sResponse + " HMAC-MD5"); + } + + EModRet HandleMessage(const CNick& Nick, CString sMessage) { + if (Nick.GetNick().CaseCmp("Q") != 0 || Nick.GetHost().CaseCmp("CServe.quakenet.org") != 0) + return CONTINUE; + + sMessage.Trim(); + +#if Q_DEBUG_COMMUNICATION + PutModule("[ZNC <-- Q] " + sMessage); +#endif + + // WHOAMI + if (sMessage.find("WHOAMI is only available to authed users") != CString::npos) { + m_bAuthed = false; + Auth(); + m_bCatchResponse = m_bRequestedWhoami; + } + else if (sMessage.find("Information for user") != CString::npos) { + m_bAuthed = true; + m_msChanModes.clear(); + m_bCatchResponse = m_bRequestedWhoami; + m_bRequestedWhoami = true; + } + else if (m_bRequestedWhoami && sMessage.WildCmp("#*")) { + CString sChannel = sMessage.Token(0); + CString sFlags = sMessage.Token(1, true).Trim_n().TrimLeft_n("+"); + m_msChanModes[sChannel] = sFlags; + } + else if (m_bRequestedWhoami && m_bCatchResponse + && (sMessage.CaseCmp("End of list.") == 0 + || sMessage.CaseCmp("account, or HELLO to create an account.") == 0)) { + m_bRequestedWhoami = m_bCatchResponse = false; + return HALT; + } + + // AUTH + else if (sMessage.CaseCmp("Username or password incorrect.") == 0) { + m_bAuthed = false; + PutModule("Auth failed: " + sMessage); + return HALT; + } + else if (sMessage.WildCmp("You are now logged in as *.")) { + m_bAuthed = true; + PutModule("Auth successful: " + sMessage); + WhoAmI(); + return HALT; + } + else if (m_bRequestedChallenge && sMessage.Token(0).CaseCmp("CHALLENGE") == 0) { + m_bRequestedChallenge = false; + if (sMessage.find("not available once you have authed") != CString::npos) { + m_bAuthed = true; + } else { + if (sMessage.find("HMAC-MD5") != CString::npos) { + ChallengeAuth(sMessage.Token(1)); + } else { + PutModule("Auth failed: Q does not support HMAC-MD5 for CHALLENGEAUTH, falling back to standard AUTH."); + SetUseChallenge(false); + Auth(); + } + } + return HALT; + } + + // prevent buffering of Q's responses + return !m_bCatchResponse && GetUser()->IsUserAttached() ? CONTINUE : HALT; + } + + void HandleNeed(const CChan& Channel, const CString& sPerms) { + MCString::iterator it = m_msChanModes.find(Channel.GetName()); + if (it == m_msChanModes.end()) + return; + CString sModes = it->second; + + bool bMaster = (sModes.find("m") != CString::npos) || (sModes.find("n") != CString::npos); + + if (sPerms.find("o") != CString::npos) { + bool bOp = (sModes.find("o") != CString::npos); + bool bAutoOp = (sModes.find("a") != CString::npos); + if (bMaster || bOp) { + if (!bAutoOp) { + PutModule("RequestPerms: Requesting op on " + Channel.GetName()); + PutQ("OP " + Channel.GetName()); + } + return; + } + } + + if (sPerms.find("v") != CString::npos) { + bool bVoice = (sModes.find("v") != CString::npos); + bool bAutoVoice = (sModes.find("g") != CString::npos); + if (bMaster || bVoice) { + if (!bAutoVoice) { + PutModule("RequestPerms: Requesting voice on " + Channel.GetName()); + PutQ("VOICE " + Channel.GetName()); + } + return; + } + } + } + + +/* Utility Functions */ + bool IsIRCConnected() { + CIRCSock* pIRCSock = GetUser()->GetIRCSock(); + return pIRCSock && pIRCSock->IsAuthed(); + } + + bool IsSelf(const CNick& Nick) { + return Nick.GetNick().CaseCmp(m_pUser->GetCurNick()) == 0; + } + + bool PackHex(const CString& sHex, CString& sPackedHex) { + if (sHex.length() % 2) + return false; + + sPackedHex.clear(); + + unsigned int len = sHex.length() / 2; + for (unsigned int i = 0; i < len; i++) { + unsigned int value; + int n = sscanf(&sHex[i*2], "%02x", &value); + if (n != 1 || value > 0xff) + return false; + sPackedHex += (unsigned char) value; + } + + return true; + } + + CString HMAC_MD5(const CString& sKey, const CString& sData) { + CString sRealKey; + if (sKey.length() > 64) + PackHex(sKey.MD5(), sRealKey); + else + sRealKey = sKey; + + CString sOuterKey, sInnerKey; + unsigned int iKeyLength = sRealKey.length(); + for (unsigned int i = 0; i < 64; i++) { + int r = (i < iKeyLength ? sRealKey[i] : 0); + sOuterKey += r ^ 0x5c; + sInnerKey += r ^ 0x36; + } + + CString sInnerHash; + PackHex(CString(sInnerKey + sData).MD5(), sInnerHash); + return CString(sOuterKey + sInnerHash).MD5(); + } + +/* Settings */ + CString m_sUsername; + CString m_sPassword; + bool m_bUseHiddenHost; + bool m_bUseChallenge; + bool m_bRequestPerms; + + void SetUsername(const CString& sUsername) { + m_sUsername = sUsername; + SetNV("Username", sUsername); + } + + void SetPassword(const CString& sPassword) { + m_sPassword = sPassword; + SetNV("Password", sPassword); + } + + void SetUseHiddenHost(const bool bUseHiddenHost) { + m_bUseHiddenHost = bUseHiddenHost; + SetNV("UseHiddenHost", CString(bUseHiddenHost ? "true" : "false")); + } + + void SetUseChallenge(const bool bUseChallenge) { + m_bUseChallenge = bUseChallenge; + SetNV("UseChallenge", CString(bUseChallenge ? "true" : "false")); + } + + void SetRequestPerms(const bool bRequestPerms) { + m_bRequestPerms = bRequestPerms; + SetNV("RequestPerms", CString(bRequestPerms ? "true" : "false")); + } +}; + +MODULEDEFS(CQModule, "Auths you with QuakeNet's Q bot.") Property changes on: trunk/modules/q.cpp ___________________________________________________________________ Added: svn:executable + * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2008-09-27 14:42:42
|
Revision: 1219 http://znc.svn.sourceforge.net/znc/?rev=1219&view=rev Author: kroimon Date: 2008-09-27 14:42:34 +0000 (Sat, 27 Sep 2008) Log Message: ----------- Another whitespace/tab mixup fix. Hopefully the last one... Again, no functional changes in this commit. Modified Paths: -------------- trunk/Chan.cpp trunk/Client.cpp trunk/main.cpp trunk/modules/partyline.cpp trunk/znc.cpp Modified: trunk/Chan.cpp =================================================================== --- trunk/Chan.cpp 2008-09-27 12:24:01 UTC (rev 1218) +++ trunk/Chan.cpp 2008-09-27 14:42:34 UTC (rev 1219) @@ -191,9 +191,9 @@ for (map<unsigned char, CString>::const_iterator it = m_musModes.begin(); it != m_musModes.end(); it++) { if (it->first == 's') { - sMode = "@"; + sMode = "@"; } else if ((it->first == 'p') && sMode.empty()){ - sMode = "*"; + sMode = "*"; } } Modified: trunk/Client.cpp =================================================================== --- trunk/Client.cpp 2008-09-27 12:24:01 UTC (rev 1218) +++ trunk/Client.cpp 2008-09-27 14:42:34 UTC (rev 1219) @@ -265,15 +265,15 @@ CString sModes = sLine.Token(2, true); if (m_pUser && m_pUser->IsChan(sTarget)) { - CChan *pChan = m_pUser->FindChan(sTarget); + CChan *pChan = m_pUser->FindChan(sTarget); - if (pChan && sModes.empty()) { - PutClient(":" + m_pUser->GetIRCServer() + " 324 " + GetNick() + " " + sTarget + " " + pChan->GetModeString()); - if (pChan->GetCreationDate() > 0) { - PutClient(":" + m_pUser->GetIRCServer() + " 329 " + GetNick() + " " + sTarget + " " + CString(pChan->GetCreationDate())); + if (pChan && sModes.empty()) { + PutClient(":" + m_pUser->GetIRCServer() + " 324 " + GetNick() + " " + sTarget + " " + pChan->GetModeString()); + if (pChan->GetCreationDate() > 0) { + PutClient(":" + m_pUser->GetIRCServer() + " 329 " + GetNick() + " " + sTarget + " " + CString(pChan->GetCreationDate())); + } + return; } - return; - } } } else if (sCommand.CaseCmp("QUIT") == 0) { if (m_pUser) { Modified: trunk/main.cpp =================================================================== --- trunk/main.cpp 2008-09-27 12:24:01 UTC (rev 1218) +++ trunk/main.cpp 2008-09-27 14:42:34 UTC (rev 1219) @@ -90,7 +90,7 @@ #else while ((iArg = getopt_long(argc, argv, "hvnrcsd:", g_LongOpts, &iOptIndex)) != -1) { #endif /* HAVE_LIBSSL */ - switch (iArg) { + switch (iArg) { case 'h': GenerateHelp(argv[0]); return 0; @@ -124,7 +124,7 @@ default: GenerateHelp(argv[0]); return 1; - } + } } if (optind < argc) { Modified: trunk/modules/partyline.cpp =================================================================== --- trunk/modules/partyline.cpp 2008-09-27 12:24:01 UTC (rev 1218) +++ trunk/modules/partyline.cpp 2008-09-27 14:42:34 UTC (rev 1219) @@ -252,7 +252,7 @@ } } } else { - m_pUser->PutUser(":irc.znc.in 442 " + m_pUser->GetIRCNick().GetNick() + " " + sChannel + " :You're not on that channel"); + m_pUser->PutUser(":irc.znc.in 442 " + m_pUser->GetIRCNick().GetNick() + " " + sChannel + " :You're not on that channel"); } return HALT; } Modified: trunk/znc.cpp =================================================================== --- trunk/znc.cpp 2008-09-27 12:24:01 UTC (rev 1218) +++ trunk/znc.cpp 2008-09-27 14:42:34 UTC (rev 1219) @@ -431,9 +431,9 @@ } if (sDataDir.empty()) { - m_sZNCPath = m_sHomePath + "/.znc"; + m_sZNCPath = m_sHomePath + "/.znc"; } else { - m_sZNCPath = sDataDir; + m_sZNCPath = sDataDir; } // Other dirs that we use This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-28 12:05:52
|
Revision: 1222 http://znc.svn.sourceforge.net/znc/?rev=1222&view=rev Author: psychon Date: 2008-09-28 12:05:49 +0000 (Sun, 28 Sep 2008) Log Message: ----------- Add CClient::PutStatus(const CTable&) and use it everywhere Modified Paths: -------------- trunk/Client.cpp trunk/Client.h trunk/ClientCommand.cpp trunk/Modules.cpp Modified: trunk/Client.cpp =================================================================== --- trunk/Client.cpp 2008-09-28 11:53:30 UTC (rev 1221) +++ trunk/Client.cpp 2008-09-28 12:05:49 UTC (rev 1222) @@ -717,6 +717,14 @@ PutModNotice("status", sLine); } +unsigned int CClient::PutStatus(const CTable& table) { + unsigned int idx = 0; + CString sLine; + while (table.GetLine(idx++, sLine)) + PutStatus(sLine); + return idx - 1; +} + void CClient::PutStatus(const CString& sLine) { PutModule("status", sLine); } Modified: trunk/Client.h =================================================================== --- trunk/Client.h 2008-09-28 11:53:30 UTC (rev 1221) +++ trunk/Client.h 2008-09-28 12:05:49 UTC (rev 1222) @@ -100,6 +100,7 @@ void PutIRC(const CString& sLine); void PutClient(const CString& sLine); + unsigned int PutStatus(const CTable& table); void PutStatus(const CString& sLine); void PutStatusNotice(const CString& sLine); void PutModule(const CString& sModule, const CString& sLine); Modified: trunk/ClientCommand.cpp =================================================================== --- trunk/ClientCommand.cpp 2008-09-28 11:53:30 UTC (rev 1221) +++ trunk/ClientCommand.cpp 2008-09-28 12:05:49 UTC (rev 1222) @@ -85,12 +85,7 @@ Table.SetCell("Host", a->second->GetHost()); } - unsigned int uTableIdx = 0; - CString sTmp; - - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } + PutStatus(Table); } else if (sCommand.CaseCmp("DETACH") == 0) { if (m_pUser) { CString sChan = sLine.Token(1); @@ -163,14 +158,7 @@ Table.SetCell("Host", vClients[a]->GetRemoteIP()); } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sTmp; - - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } - } + PutStatus(Table); } } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("LISTUSERS") == 0) { const map<CString, CUser*>& msUsers = CZNC::Get().GetUserMap(); @@ -194,14 +182,7 @@ } } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sTmp; - - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } - } + PutStatus(Table); } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("SetMOTD") == 0) { CString sMessage = sLine.Token(1, true); @@ -341,14 +322,7 @@ } } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sTmp; - - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } - } + PutStatus(Table); } } else if (sCommand.CaseCmp("ADDSERVER") == 0) { CString sServer = sLine.Token(1); @@ -407,14 +381,7 @@ Table.SetCell("Pass", pServer->GetPass()); } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sTmp; - - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } - } + PutStatus(Table); } else { PutStatus("You don't have any servers added."); } @@ -435,14 +402,7 @@ Table.SetCell("Topic", pChan->GetTopic()); } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sTmp; - - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } - } + PutStatus(Table); } } else if (sCommand.CaseCmp("SEND") == 0) { CString sToNick = sLine.Token(1); @@ -574,14 +534,7 @@ } } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sTmp; - - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } - } else { + if (PutStatus(Table) == 0) { PutStatus("You have no active DCCs."); } } else if ((sCommand.CaseCmp("LISTMODS") == 0) || (sCommand.CaseCmp("LISTMODULES") == 0)) { @@ -603,11 +556,7 @@ GTable.SetCell("Description", GModules[b]->GetDescription().Ellipsize(128)); } - unsigned int uTableIdx = 0; - CString sTmp; - while (GTable.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } + PutStatus(GTable); } } @@ -628,11 +577,7 @@ Table.SetCell("Description", Modules[b]->GetDescription().Ellipsize(128)); } - unsigned int uTableIdx = 0; - CString sTmp; - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } + PutStatus(Table); } } #else @@ -666,12 +611,7 @@ GTable.SetCell("Description", Info.GetDescription().Ellipsize(128)); } - unsigned int uTableIdx = 0; - CString sTmp; - - while (GTable.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } + PutStatus(GTable); } } @@ -695,11 +635,7 @@ Table.SetCell("Description", Info.GetDescription().Ellipsize(128)); } - unsigned int uTableIdx = 0; - CString sTmp; - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } + PutStatus(Table); } } #else @@ -972,13 +908,7 @@ Table.SetCell("Out", CString::ToByteStr(users_total_out + CZNC::Get().BytesWritten())); Table.SetCell("Total", CString::ToByteStr(users_total_in + CZNC::Get().BytesRead() + users_total_out + CZNC::Get().BytesWritten())); - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sTmp; - while (Table.GetLine(uTableIdx++, sTmp)) { - PutStatus(sTmp); - } - } + PutStatus(Table); } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("UPTIME") == 0) { PutStatus("Running for " + CZNC::Get().GetUptime()); } else { @@ -1200,12 +1130,5 @@ Table.SetCell("Description", "Restarts znc"); } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sLine; - - while (Table.GetLine(uTableIdx++, sLine)) { - PutStatus(sLine); - } - } + PutStatus(Table); } Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-09-28 11:53:30 UTC (rev 1221) +++ trunk/Modules.cpp 2008-09-28 12:05:49 UTC (rev 1222) @@ -333,14 +333,7 @@ Table.SetCell("Description", pTimer->GetDescription()); } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sLine; - - while (Table.GetLine(uTableIdx++, sLine)) { - PutModule(sLine); - } - } + PutModule(Table); } bool CModule::AddSocket(CSocket* pSocket) { @@ -432,14 +425,7 @@ Table.SetCell("RemotePort", (pSocket->GetRemotePort()) ? CString(pSocket->GetRemotePort()) : CString("")); } - if (Table.size()) { - unsigned int uTableIdx = 0; - CString sLine; - - while (Table.GetLine(uTableIdx++, sLine)) { - PutModule(sLine); - } - } + PutModule(Table); } CString CModule::GetModNick() const { return ((m_pUser) ? m_pUser->GetStatusPrefix() : "*") + m_sModName; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2008-09-28 16:59:33
|
Revision: 1224 http://znc.svn.sourceforge.net/znc/?rev=1224&view=rev Author: kroimon Date: 2008-09-28 16:59:28 +0000 (Sun, 28 Sep 2008) Log Message: ----------- Added CString::TrimPrefix() and CString::TrimSuffix() These functions remove prefix/suffix strings if possible. Modified Paths: -------------- trunk/ZNCString.cpp trunk/ZNCString.h Modified: trunk/ZNCString.cpp =================================================================== --- trunk/ZNCString.cpp 2008-09-28 16:55:27 UTC (rev 1223) +++ trunk/ZNCString.cpp 2008-09-28 16:59:28 UTC (rev 1224) @@ -965,6 +965,37 @@ return sRet; } +bool CString::TrimPrefix(const CString& sPrefix) { + if (CaseCmp(sPrefix, sPrefix.length()) == 0) { + LeftChomp(sPrefix.length()); + return true; + } else { + return false; + } +} + +bool CString::TrimSuffix(const CString& sSuffix) { + if (Right(sSuffix.length()).CaseCmp(sSuffix) == 0) { + RightChomp(sSuffix.length()); + return true; + } else { + return false; + } +} + + +CString CString::TrimPrefix_n(const CString& sPrefix) const { + CString sRet = *this; + sRet.TrimPrefix(sPrefix); + return sRet; +} + +CString CString::TrimSuffix_n(const CString& sSuffix) const { + CString sRet = *this; + sRet.TrimSuffix(sSuffix); + return sRet; +} + CString CString::LeftChomp_n(unsigned int uLen) const { CString sRet = *this; sRet.LeftChomp(uLen); Modified: trunk/ZNCString.h =================================================================== --- trunk/ZNCString.h 2008-09-28 16:55:27 UTC (rev 1223) +++ trunk/ZNCString.h 2008-09-28 16:59:28 UTC (rev 1224) @@ -147,6 +147,11 @@ CString TrimLeft_n(const CString& s = " \t\r\n") const; CString TrimRight_n(const CString& s = " \t\r\n") const; + bool TrimPrefix(const CString& sPrefix); + bool TrimSuffix(const CString& sSuffix); + CString TrimPrefix_n(const CString& sPrefix) const; + CString TrimSuffix_n(const CString& sSuffix) const; + bool LeftChomp(unsigned int uLen = 1); bool RightChomp(unsigned int uLen = 1); CString LeftChomp_n(unsigned int uLen = 1) const; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-29 14:46:11
|
Revision: 1230 http://znc.svn.sourceforge.net/znc/?rev=1230&view=rev Author: psychon Date: 2008-09-29 14:46:06 +0000 (Mon, 29 Sep 2008) Log Message: ----------- Add a Clear() function to CTable and make the base class protected Modified Paths: -------------- trunk/Utils.cpp trunk/Utils.h Modified: trunk/Utils.cpp =================================================================== --- trunk/Utils.cpp 2008-09-29 13:34:42 UTC (rev 1229) +++ trunk/Utils.cpp 2008-09-29 14:46:06 UTC (rev 1230) @@ -543,6 +543,11 @@ return it->second; } +void CTable::Clear() { + clear(); + m_vsHeaders.clear(); + m_msuWidths.clear(); +} #ifdef HAVE_LIBSSL CBlowfish::CBlowfish(const CString & sPassword, int iEncrypt, const CString & sIvec) { Modified: trunk/Utils.h =================================================================== --- trunk/Utils.h 2008-09-29 13:34:42 UTC (rev 1229) +++ trunk/Utils.h 2008-09-29 14:46:06 UTC (rev 1230) @@ -199,7 +199,7 @@ }; -class CTable : public vector<vector<CString> > { +class CTable : protected vector<vector<CString> > { public: CTable() {} virtual ~CTable() {} @@ -210,6 +210,9 @@ bool GetLine(unsigned int uIdx, CString& sLine) const; unsigned int GetColumnWidth(unsigned int uIdx) const; + + void Clear(); + using vector<vector<CString> >::size; private: unsigned int GetColumnIndex(const CString& sName) const; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2008-09-30 12:58:54
|
Revision: 1232 http://znc.svn.sourceforge.net/znc/?rev=1232&view=rev Author: kroimon Date: 2008-09-30 12:58:34 +0000 (Tue, 30 Sep 2008) Log Message: ----------- Added CString::Equals() This new function can be used to replace the old (CaseCmp() == 0) statements. Modified Paths: -------------- trunk/ZNCString.cpp trunk/ZNCString.h Modified: trunk/ZNCString.cpp =================================================================== --- trunk/ZNCString.cpp 2008-09-30 12:57:10 UTC (rev 1231) +++ trunk/ZNCString.cpp 2008-09-30 12:58:34 UTC (rev 1232) @@ -186,6 +186,13 @@ return strcmp(c_str(), s.c_str()); } +bool CString::Equals(const CString& s, bool bCaseSensitive, unsigned long uLen) const { + if (bCaseSensitive) + return (StrCmp(s, uLen) == 0); + else + return (CaseCmp(s, uLen) == 0); +} + bool CString::WildCmp(const CString& sWild, const CString& sString) { // Written by Jack Handy - jak...@ho... const char *wild = sWild.c_str(), *CString = sString.c_str(); Modified: trunk/ZNCString.h =================================================================== --- trunk/ZNCString.h 2008-09-30 12:57:10 UTC (rev 1231) +++ trunk/ZNCString.h 2008-09-30 12:58:34 UTC (rev 1232) @@ -82,6 +82,7 @@ inline unsigned char* strnchr(const unsigned char* src, unsigned char c, unsigned int iMaxBytes, unsigned char* pFill = NULL, unsigned int* piCount = NULL) const; int CaseCmp(const CString& s, unsigned long uLen = CString::npos) const; int StrCmp(const CString& s, unsigned long uLen = CString::npos) const; + bool Equals(const CString& s, bool bCaseSensitive = false, unsigned long uLen = CString::npos) const; static bool WildCmp(const CString& sWild, const CString& sString); bool WildCmp(const CString& sWild) const; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2008-09-30 15:16:57
|
Revision: 1234 http://znc.svn.sourceforge.net/znc/?rev=1234&view=rev Author: kroimon Date: 2008-09-30 15:15:59 +0000 (Tue, 30 Sep 2008) Log Message: ----------- Use CString::Equals() everywhere. * (CString::CaseCmp() == 0) became CString::Equals() * (CString::CaseCmp() != 0) became !CString::Equals() * replaced some occurrences of strn?casecmp Modified Paths: -------------- trunk/Chan.cpp trunk/Client.cpp trunk/ClientCommand.cpp trunk/HTTPSock.cpp trunk/IRCSock.cpp trunk/Modules.cpp trunk/Nick.cpp trunk/Template.cpp trunk/User.cpp trunk/Utils.cpp trunk/ZNCString.cpp trunk/modules/autoattach.cpp trunk/modules/autocycle.cpp trunk/modules/autoop.cpp trunk/modules/awaynick.cpp trunk/modules/crypt.cpp trunk/modules/email.cpp trunk/modules/imapauth.cpp trunk/modules/keepnick.cpp trunk/modules/kickrejoin.cpp trunk/modules/modperl.cpp trunk/modules/nickserv.cpp trunk/modules/partyline.cpp trunk/modules/perform.cpp trunk/modules/q.cpp trunk/modules/sample.cpp trunk/modules/savebuff.cpp trunk/modules/schat.cpp trunk/modules/shell.cpp trunk/modules/simple_away.cpp trunk/modules/stickychan.cpp trunk/modules/watch.cpp trunk/modules/webadmin.cpp trunk/znc.cpp Modified: trunk/Chan.cpp =================================================================== --- trunk/Chan.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/Chan.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -269,7 +269,7 @@ IncPermCount(uPerm); } - if (pNick->GetNick().CaseCmp(m_pUser->GetCurNick()) == 0) { + if (pNick->GetNick().Equals(m_pUser->GetCurNick())) { AddPerm(uPerm); } } else { @@ -277,7 +277,7 @@ DecPermCount(uPerm); } - if (pNick->GetNick().CaseCmp(m_pUser->GetCurNick()) == 0) { + if (pNick->GetNick().Equals(m_pUser->GetCurNick())) { RemPerm(uPerm); } } @@ -466,7 +466,7 @@ } } - if (pNick->GetNick().CaseCmp(m_pUser->GetCurNick()) == 0) { + if (pNick->GetNick().Equals(m_pUser->GetCurNick())) { for (CString::size_type i = 0; i < sPrefix.length(); i++) { AddPerm(sPrefix[i]); } Modified: trunk/Client.cpp =================================================================== --- trunk/Client.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/Client.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -83,7 +83,7 @@ sCommand = sLine.Token(0); } - if (sCommand.CaseCmp("PASS") == 0) { + if (sCommand.Equals("PASS")) { if (!IsAttached()) { m_bGotPass = true; m_sPass = sLine.Token(1); @@ -99,7 +99,7 @@ return; // Don't forward this msg. ZNC has already registered us. } - } else if (sCommand.CaseCmp("NICK") == 0) { + } else if (sCommand.Equals("NICK")) { CString sNick = sLine.Token(1); if (sNick.Left(1) == ":") { sNick.LeftChomp(); @@ -119,7 +119,7 @@ // No need to forward it return; } - } else if (sCommand.CaseCmp("USER") == 0) { + } else if (sCommand.Equals("USER")) { if (!IsAttached()) { if (m_sUser.empty()) { m_sUser = sLine.Token(1); @@ -144,7 +144,7 @@ return; } - if (sCommand.CaseCmp("ZNC") == 0) { + if (sCommand.Equals("ZNC")) { CString sTarget = sLine.Token(1); CString sModCommand; @@ -155,7 +155,7 @@ sModCommand = sLine.Token(1, true); } - if (sTarget.CaseCmp("status") == 0) { + if (sTarget.Equals("status")) { if (sModCommand.empty()) PutStatus("Hello. How may I help you?"); else @@ -169,7 +169,7 @@ #endif } return; - } else if (sCommand.CaseCmp("DETACH") == 0) { + } else if (sCommand.Equals("DETACH")) { CString sChan = sLine.Token(1); if (sChan.empty()) { @@ -186,19 +186,19 @@ pChan->DetachUser(); PutStatusNotice("Detached from [" + sChan + "]"); return; - } else if (sCommand.CaseCmp("PING") == 0) { + } else if (sCommand.Equals("PING")) { CString sTarget = sLine.Token(1); // If the client meant to ping us or we can be sure the server // won't answer the ping (=no server connected) -> PONG back. // else: It's the server's job to send a PONG. - if (sTarget.CaseCmp("irc.znc.in") == 0 || !m_pIRCSock) { + if (sTarget.Equals("irc.znc.in") || !m_pIRCSock) { PutClient("PONG " + sLine.substr(5)); return; } - } else if (sCommand.CaseCmp("PONG") == 0) { + } else if (sCommand.Equals("PONG")) { return; // Block pong replies, we already responded to the pings - } else if (sCommand.CaseCmp("JOIN") == 0) { + } else if (sCommand.Equals("JOIN")) { CString sChans = sLine.Token(1); CString sKey = sLine.Token(2); @@ -235,7 +235,7 @@ if (!sKey.empty()) { sLine += " " + sKey; } - } else if (sCommand.CaseCmp("PART") == 0) { + } else if (sCommand.Equals("PART")) { CString sChan = sLine.Token(1); CString sMessage = sLine.Token(2, true); @@ -262,7 +262,7 @@ if (!sMessage.empty()) { sLine += " :" + sMessage; } - } else if (sCommand.CaseCmp("TOPIC") == 0) { + } else if (sCommand.Equals("TOPIC")) { CString sChan = sLine.Token(1); CString sTopic = sLine.Token(2, true); @@ -274,7 +274,7 @@ } else { MODULECALL(OnUserTopicRequest(sChan), m_pUser, this, return); } - } else if (sCommand.CaseCmp("MODE") == 0) { + } else if (sCommand.Equals("MODE")) { CString sTarget = sLine.Token(1); CString sModes = sLine.Token(2, true); @@ -289,23 +289,23 @@ return; } } - } else if (sCommand.CaseCmp("QUIT") == 0) { + } else if (sCommand.Equals("QUIT")) { m_pUser->UserDisconnected(this); Close(); // Treat a client quit as a detach return; // Don't forward this msg. We don't want the client getting us disconnected. - } else if (sCommand.CaseCmp("PROTOCTL") == 0) { + } else if (sCommand.Equals("PROTOCTL")) { unsigned int i = 1; while (!sLine.Token(i).empty()) { - if (sLine.Token(i).CaseCmp("NAMESX") == 0) { + if (sLine.Token(i).Equals("NAMESX")) { m_bNamesx = true; - } else if (sLine.Token(i).CaseCmp("UHNAMES") == 0) { + } else if (sLine.Token(i).Equals("UHNAMES")) { m_bUHNames = true; } i++; } return; // If the server understands it, we already enabled namesx / uhnames - } else if (sCommand.CaseCmp("NOTICE") == 0) { + } else if (sCommand.Equals("NOTICE")) { CString sTarget = sLine.Token(1); CString sMsg = sLine.Token(2, true); @@ -315,7 +315,7 @@ if (sTarget.TrimPrefix(m_pUser->GetStatusPrefix())) { #ifdef _MODULES - if (sTarget.CaseCmp("status") != 0) { + if (!sTarget.Equals("status")) { CALLMOD(sTarget, this, m_pUser, OnModNotice(sMsg)); } #endif @@ -342,7 +342,7 @@ if (!m_pIRCSock) { // Some lagmeters do a NOTICE to their own nick, ignore those. - if (sTarget.CaseCmp(m_sNick) != 0) + if (!sTarget.Equals(m_sNick)) PutStatus("Your notice to [" + sTarget + "] got lost, " "you are not connected to IRC!"); return; @@ -369,7 +369,7 @@ PutIRC("NOTICE " + sTarget + " :" + sMsg); return; - } else if (sCommand.CaseCmp("PRIVMSG") == 0) { + } else if (sCommand.Equals("PRIVMSG")) { CString sTarget = sLine.Token(1); CString sMsg = sLine.Token(2, true); @@ -382,7 +382,7 @@ sCTCP.LeftChomp(); sCTCP.RightChomp(); - if (sCTCP.CaseCmp("DCC ", 4) == 0 && m_pUser->BounceDCCs()) { + if (sCTCP.Equals("DCC ", false, 4) && m_pUser->BounceDCCs()) { CString sType = sCTCP.Token(1); CString sFile = sCTCP.Token(2); unsigned long uLongIP = strtoul(sCTCP.Token(3).c_str(), NULL, 10); @@ -394,18 +394,18 @@ uLongIP = CUtils::GetLongIP(GetRemoteIP()); } - if (sType.CaseCmp("CHAT") == 0) { + if (sType.Equals("CHAT")) { if (!sTarget.TrimPrefix(m_pUser->GetStatusPrefix())) { unsigned short uBNCPort = CDCCBounce::DCCRequest(sTarget, uLongIP, uPort, "", true, m_pUser, (m_pIRCSock) ? m_pIRCSock->GetLocalIP() : GetLocalIP(), ""); if (uBNCPort) { PutIRC("PRIVMSG " + sTarget + " :\001DCC CHAT chat " + CString(CUtils::GetLongIP(sIP)) + " " + CString(uBNCPort) + "\001"); } } - } else if (sType.CaseCmp("SEND") == 0) { + } else if (sType.Equals("SEND")) { // DCC SEND readme.txt 403120438 5550 1104 if (sTarget.TrimPrefix(m_pUser->GetStatusPrefix())) { - if (sTarget.CaseCmp("status") == 0) { + if (sTarget.Equals("status")) { CString sPath = m_pUser->GetDLPath(); if (!CFile::Exists(sPath)) { PutStatus("Could not create [" + sPath + "] directory."); @@ -427,14 +427,14 @@ PutIRC("PRIVMSG " + sTarget + " :\001DCC SEND " + sFile + " " + CString(CUtils::GetLongIP(sIP)) + " " + CString(uBNCPort) + " " + CString(uFileSize) + "\001"); } } - } else if (sType.CaseCmp("RESUME") == 0) { + } else if (sType.Equals("RESUME")) { // PRIVMSG user :DCC RESUME "znc.o" 58810 151552 unsigned short uResumePort = atoi(sCTCP.Token(3).c_str()); unsigned long uResumeSize = strtoul(sCTCP.Token(4).c_str(), NULL, 10); // Need to lookup the connection by port, filter the port, and forward to the user CString sStatusPrefix = m_pUser->GetStatusPrefix(); - if (sTarget.CaseCmp(sStatusPrefix, sStatusPrefix.length()) == 0) { + if (sTarget.Equals(sStatusPrefix, false, sStatusPrefix.length())) { if (m_pUser->ResumeFile(uResumePort, uResumeSize)) { PutClient(":" + sTarget + "!zn...@zn... PRIVMSG " + GetNick() + " :\001DCC ACCEPT " + sFile + " " + CString(uResumePort) + " " + CString(uResumeSize) + "\001"); } else { @@ -442,20 +442,20 @@ } } else { CDCCBounce* pSock = (CDCCBounce*) CZNC::Get().GetManager().FindSockByLocalPort(uResumePort); - if ((pSock) && (pSock->GetSockName().CaseCmp("DCC::", 5) == 0)) { + if (pSock && pSock->GetSockName().Equals("DCC::", false, 5)) { PutIRC("PRIVMSG " + sTarget + " :\001DCC " + sType + " " + sFile + " " + CString(pSock->GetUserPort()) + " " + sCTCP.Token(4) + "\001"); } } - } else if (sType.CaseCmp("ACCEPT") == 0) { + } else if (sType.Equals("ACCEPT")) { CString sStatusPrefix = m_pUser->GetStatusPrefix(); - if (sTarget.CaseCmp(sStatusPrefix, sStatusPrefix.length()) != 0) { + if (!sTarget.Equals(sStatusPrefix, false, sStatusPrefix.length())) { // Need to lookup the connection by port, filter the port, and forward to the user CSockManager& Manager = CZNC::Get().GetManager(); for (unsigned int a = 0; a < Manager.size(); a++) { CDCCBounce* pSock = (CDCCBounce*) Manager[a]; - if ((pSock) && (pSock->GetSockName().CaseCmp("DCC::", 5) == 0)) { + if (pSock && pSock->GetSockName().Equals("DCC::", false, 5)) { if (pSock->GetUserPort() == atoi(sCTCP.Token(3).c_str())) { PutIRC("PRIVMSG " + sTarget + " :\001DCC " + sType + " " + sFile + " " + CString(pSock->GetLocalPort()) + " " + sCTCP.Token(4) + "\001"); } @@ -468,7 +468,7 @@ } if (sTarget.TrimPrefix(m_pUser->GetStatusPrefix())) { - if (sTarget.CaseCmp("status") == 0) { + if (sTarget.Equals("status")) { StatusCTCP(sCTCP); } else { #ifdef _MODULES @@ -480,7 +480,7 @@ CChan* pChan = m_pUser->FindChan(sTarget); - if (sCTCP.Token(0).CaseCmp("ACTION") == 0) { + if (sCTCP.Token(0).Equals("ACTION")) { CString sMessage = sCTCP.Token(1, true); MODULECALL(OnUserAction(sTarget, sMessage), m_pUser, this, return); sCTCP = "ACTION " + sMessage; @@ -510,7 +510,7 @@ } if (sTarget.TrimPrefix(m_pUser->GetStatusPrefix())) { - if (sTarget.CaseCmp("status") == 0) { + if (sTarget.Equals("status")) { MODULECALL(OnStatusCommand(sMsg), m_pUser, this, return); UserCommand(sMsg); } else { @@ -525,7 +525,7 @@ if (!m_pIRCSock) { // Some lagmeters do a PRIVMSG to their own nick, ignore those. - if (sTarget.CaseCmp(m_sNick) != 0) + if (!sTarget.Equals(m_sNick)) PutStatus("Your message to [" + sTarget + "] got lost, " "you are not connected to IRC!"); return; @@ -566,9 +566,9 @@ void CClient::StatusCTCP(const CString& sLine) { CString sCommand = sLine.Token(0); - if (sCommand.CaseCmp("PING") == 0) { + if (sCommand.Equals("PING")) { PutStatusNotice("\001PING " + sLine.Token(1, true) + "\001"); - } else if (sCommand.CaseCmp("VERSION") == 0) { + } else if (sCommand.Equals("VERSION")) { PutStatusNotice("\001VERSION " + CZNC::GetTag() + "\001"); } } Modified: trunk/ClientCommand.cpp =================================================================== --- trunk/ClientCommand.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/ClientCommand.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -26,9 +26,9 @@ CString sCommand = sLine.Token(0); - if (sCommand.CaseCmp("HELP") == 0) { + if (sCommand.Equals("HELP")) { HelpUser(); - } else if (sCommand.CaseCmp("LISTNICKS") == 0) { + } else if (sCommand.Equals("LISTNICKS")) { CString sChan = sLine.Token(1); if (sChan.empty()) { @@ -86,7 +86,7 @@ } PutStatus(Table); - } else if (sCommand.CaseCmp("DETACH") == 0) { + } else if (sCommand.Equals("DETACH")) { CString sChan = sLine.Token(1); if (sChan.empty()) { @@ -102,13 +102,13 @@ PutStatus("Detaching you from [" + sChan + "]"); pChan->DetachUser(); - } else if (sCommand.CaseCmp("VERSION") == 0) { + } else if (sCommand.Equals("VERSION")) { PutStatus(CZNC::GetTag()); - } else if (sCommand.CaseCmp("MOTD") == 0 || sCommand.CaseCmp("ShowMOTD") == 0) { + } else if (sCommand.Equals("MOTD") || sCommand.Equals("ShowMOTD")) { if (!SendMotd()) { PutStatus("There is no MOTD set."); } - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("Rehash") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("Rehash")) { CString sRet; if (CZNC::Get().RehashConfig(sRet)) { @@ -116,13 +116,13 @@ } else { PutStatus("Rehashing failed: " + sRet); } - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("SaveConfig") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("SaveConfig")) { if (CZNC::Get().WriteConfig()) { PutStatus("Wrote config to [" + CZNC::Get().GetConfigFile() + "]"); } else { PutStatus("Error while trying to write config."); } - } else if (sCommand.CaseCmp("LISTCLIENTS") == 0) { + } else if (sCommand.Equals("LISTCLIENTS")) { CUser* pUser = m_pUser; CString sNick = sLine.Token(1); @@ -156,7 +156,7 @@ } PutStatus(Table); - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("LISTUSERS") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("LISTUSERS")) { const map<CString, CUser*>& msUsers = CZNC::Get().GetUserMap(); CTable Table; Table.AddColumn("Username"); @@ -179,7 +179,7 @@ } PutStatus(Table); - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("SetMOTD") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("SetMOTD")) { CString sMessage = sLine.Token(1, true); if (sMessage.empty()) { @@ -188,7 +188,7 @@ CZNC::Get().SetMotd(sMessage); PutStatus("MOTD set to [" + sMessage + "]"); } - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("AddMOTD") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("AddMOTD")) { CString sMessage = sLine.Token(1, true); if (sMessage.empty()) { @@ -197,12 +197,12 @@ CZNC::Get().AddMotd(sMessage); PutStatus("Added [" + sMessage + "] to MOTD"); } - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("ClearMOTD") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("ClearMOTD")) { CZNC::Get().ClearMotd(); PutStatus("Cleared MOTD"); - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("BROADCAST") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("BROADCAST")) { CZNC::Get().Broadcast(sLine.Token(1, true)); - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("SHUTDOWN") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("SHUTDOWN")) { CString sMessage = sLine.Token(1, true); if (sMessage.empty()) { @@ -213,7 +213,7 @@ usleep(100000); // Sleep for 10ms to attempt to allow the previous Broadcast() to go through to all users throw CException(CException::EX_Shutdown); - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("RESTART") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("RESTART")) { CString sMessage = sLine.Token(1, true); if (sMessage.empty()) { @@ -222,8 +222,7 @@ CZNC::Get().Broadcast(sMessage); throw CException(CException::EX_Restart); - } else if (sCommand.CaseCmp("JUMP") == 0 || - sCommand.CaseCmp("CONNECT") == 0) { + } else if (sCommand.Equals("JUMP") || sCommand.Equals("CONNECT")) { if (!m_pUser->HasServers()) { PutStatus("You don't have any servers added."); return; @@ -239,7 +238,7 @@ m_pUser->SetIRCConnectEnabled(true); m_pUser->CheckIRCConnect(); return; - } else if (sCommand.CaseCmp("DISCONNECT") == 0) { + } else if (sCommand.Equals("DISCONNECT")) { // m_pIRCSock is only set after the low level connection // to the IRC server was established. Before this we can // only find the IRC socket by its name. @@ -257,7 +256,7 @@ m_pUser->SetIRCConnectEnabled(false); PutStatus("Disconnected from IRC. Use 'connect' to reconnect."); return; - } else if (sCommand.CaseCmp("ENABLECHAN") == 0) { + } else if (sCommand.Equals("ENABLECHAN")) { CString sChan = sLine.Token(1, true); if (sChan.empty()) { @@ -272,7 +271,7 @@ pChan->Enable(); PutStatus("Channel [" + sChan + "] enabled."); } - } else if (sCommand.CaseCmp("LISTCHANS") == 0) { + } else if (sCommand.Equals("LISTCHANS")) { const vector<CChan*>& vChans = m_pUser->GetChans(); CIRCSock* pIRCSock = (!m_pUser) ? NULL : m_pUser->GetIRCSock(); const CString& sPerms = (pIRCSock) ? pIRCSock->GetPerms() : ""; @@ -314,7 +313,7 @@ } PutStatus(Table); - } else if (sCommand.CaseCmp("ADDSERVER") == 0) { + } else if (sCommand.Equals("ADDSERVER")) { CString sServer = sLine.Token(1); if (sServer.empty()) { @@ -332,7 +331,7 @@ } else { PutStatus("Unable to add that server"); } - } else if (sCommand.CaseCmp("REMSERVER") == 0 || sCommand.CaseCmp("DELSERVER") == 0) { + } else if (sCommand.Equals("REMSERVER") || sCommand.Equals("DELSERVER")) { CString sServer = sLine.Token(1); if (sServer.empty()) { @@ -352,7 +351,7 @@ } else { PutStatus("No such server"); } - } else if (sCommand.CaseCmp("LISTSERVERS") == 0) { + } else if (sCommand.Equals("LISTSERVERS")) { if (m_pUser->HasServers()) { const vector<CServer*>& vServers = m_pUser->GetServers(); CTable Table; @@ -374,7 +373,7 @@ } else { PutStatus("You don't have any servers added."); } - } else if (sCommand.CaseCmp("TOPICS") == 0) { + } else if (sCommand.Equals("TOPICS")) { const vector<CChan*>& vChans = m_pUser->GetChans(); CTable Table; Table.AddColumn("Name"); @@ -390,7 +389,7 @@ } PutStatus(Table); - } else if (sCommand.CaseCmp("SEND") == 0) { + } else if (sCommand.Equals("SEND")) { CString sToNick = sLine.Token(1); CString sFile = sLine.Token(2); CString sAllowedPath = m_pUser->GetDLPath(); @@ -409,7 +408,7 @@ } m_pUser->SendFile(sToNick, sFile); - } else if (sCommand.CaseCmp("GET") == 0) { + } else if (sCommand.Equals("GET")) { CString sFile = sLine.Token(1); CString sAllowedPath = m_pUser->GetDLPath(); CString sAbsolutePath; @@ -427,7 +426,7 @@ } m_pUser->SendFile(GetNick(), sFile); - } else if (sCommand.CaseCmp("LISTDCCS") == 0) { + } else if (sCommand.Equals("LISTDCCS")) { CSockManager& Manager = CZNC::Get().GetManager(); CTable Table; @@ -439,18 +438,18 @@ Table.AddColumn("File"); for (unsigned int a = 0; a < Manager.size(); a++) { - const CString& sSockName = Manager[a]->GetSockName(); + CString sSockName = Manager[a]->GetSockName(); - if (strncasecmp(sSockName.c_str(), "DCC::", 5) == 0) { - if (strncasecmp(sSockName.c_str() +5, "XFER::REMOTE::", 14) == 0) { + if (sSockName.TrimPrefix("DCC::")) { + if (sSockName.Equals("XFER::REMOTE::", false, 14)) { continue; } - if (strncasecmp(sSockName.c_str() +5, "CHAT::REMOTE::", 14) == 0) { + if (sSockName.Equals("CHAT::REMOTE::", false, 14)) { continue; } - if (strncasecmp(sSockName.c_str() +5, "SEND", 4) == 0) { + if (sSockName.Equals("SEND", false, 4)) { CDCCSock* pSock = (CDCCSock*) Manager[a]; Table.AddRow(); @@ -460,7 +459,7 @@ Table.SetCell("Nick", pSock->GetRemoteNick()); Table.SetCell("IP", pSock->GetRemoteIP()); Table.SetCell("File", pSock->GetFileName()); - } else if (strncasecmp(sSockName.c_str() +5, "GET", 3) == 0) { + } else if (sSockName.Equals("GET", false, 3)) { CDCCSock* pSock = (CDCCSock*) Manager[a]; Table.AddRow(); @@ -470,7 +469,7 @@ Table.SetCell("Nick", pSock->GetRemoteNick()); Table.SetCell("IP", pSock->GetRemoteIP()); Table.SetCell("File", pSock->GetFileName()); - } else if (strncasecmp(sSockName.c_str() +5, "LISTEN", 6) == 0) { + } else if (sSockName.Equals("LISTEN", false, 6)) { CDCCSock* pSock = (CDCCSock*) Manager[a]; Table.AddRow(); @@ -479,7 +478,7 @@ Table.SetCell("Nick", pSock->GetRemoteNick()); Table.SetCell("IP", pSock->GetRemoteIP()); Table.SetCell("File", pSock->GetFileName()); - } else if (strncasecmp(sSockName.c_str() +5, "XFER::LOCAL", 11) == 0) { + } else if (sSockName.Equals("XFER::LOCAL", false, 11)) { CDCCBounce* pSock = (CDCCBounce*) Manager[a]; CString sState = "Waiting"; @@ -496,7 +495,7 @@ Table.SetCell("Nick", pSock->GetRemoteNick()); Table.SetCell("IP", pSock->GetRemoteIP()); Table.SetCell("File", pSock->GetFileName()); - } else if (strncasecmp(sSockName.c_str() +5, "CHAT::LOCAL", 11) == 0) { + } else if (sSockName.Equals("CHAT::LOCAL", false, 11)) { CDCCBounce* pSock = (CDCCBounce*) Manager[a]; CString sState = "Waiting"; @@ -519,7 +518,7 @@ if (PutStatus(Table) == 0) { PutStatus("You have no active DCCs."); } - } else if ((sCommand.CaseCmp("LISTMODS") == 0) || (sCommand.CaseCmp("LISTMODULES") == 0)) { + } else if (sCommand.Equals("LISTMODS") || sCommand.Equals("LISTMODULES")) { #ifdef _MODULES if (m_pUser->IsAdmin()) { CModules& GModules = CZNC::Get().GetModules(); @@ -564,7 +563,7 @@ PutStatus("Modules are not enabled."); #endif return; - } else if ((sCommand.CaseCmp("LISTAVAILMODS") == 0) || (sCommand.CaseCmp("LISTAVAILABLEMODULES") == 0)) { + } else if (sCommand.Equals("LISTAVAILMODS") || sCommand.Equals("LISTAVAILABLEMODULES")) { #ifdef _MODULES if (m_pUser->DenyLoadMod()) { PutStatus("Access Denied."); @@ -620,12 +619,12 @@ PutStatus("Modules are not enabled."); #endif return; - } else if ((sCommand.CaseCmp("LOADMOD") == 0) || (sCommand.CaseCmp("LOADMODULE") == 0)) { + } else if (sCommand.Equals("LOADMOD") || sCommand.Equals("LOADMODULE")) { CString sMod; CString sArgs; bool bGlobal = false; - if (sLine.Token(1).CaseCmp("-global") == 0) { + if (sLine.Token(1).Equals("-global")) { sMod = sLine.Token(2); if (!m_pUser->IsAdmin()) { @@ -668,11 +667,11 @@ PutStatus("Unable to load [" + sMod + "] Modules are not enabled."); #endif return; - } else if ((sCommand.CaseCmp("UNLOADMOD") == 0) || (sCommand.CaseCmp("UNLOADMODULE") == 0)) { + } else if (sCommand.Equals("UNLOADMOD") || sCommand.Equals("UNLOADMODULE")) { CString sMod; bool bGlobal = false; - if (sLine.Token(1).CaseCmp("-global") == 0) { + if (sLine.Token(1).Equals("-global")) { sMod = sLine.Token(2); if (!m_pUser->IsAdmin()) { @@ -707,12 +706,12 @@ PutStatus("Unable to unload [" + sMod + "] Modules are not enabled."); #endif return; - } else if ((sCommand.CaseCmp("RELOADMOD") == 0) || (sCommand.CaseCmp("RELOADMODULE") == 0)) { + } else if (sCommand.Equals("RELOADMOD") || sCommand.Equals("RELOADMODULE")) { CString sMod; CString sArgs; bool bGlobal = false; - if (sLine.Token(1).CaseCmp("-global") == 0) { + if (sLine.Token(1).Equals("-global")) { sMod = sLine.Token(2); if (!m_pUser->IsAdmin()) { @@ -750,7 +749,7 @@ PutStatus("Unable to unload [" + sMod + "] Modules are not enabled."); #endif return; - } else if (sCommand.CaseCmp("SETVHOST") == 0 && (m_pUser->IsAdmin() || !m_pUser->DenySetVHost())) { + } else if (sCommand.Equals("SETVHOST") && (m_pUser->IsAdmin() || !m_pUser->DenySetVHost())) { CString sVHost = sLine.Token(1); if (sVHost.empty()) { @@ -760,10 +759,10 @@ m_pUser->SetVHost(sVHost); PutStatus("Set VHost to [" + m_pUser->GetVHost() + "]"); - } else if (sCommand.CaseCmp("CLEARVHOST") == 0 && (m_pUser->IsAdmin() || !m_pUser->DenySetVHost())) { + } else if (sCommand.Equals("CLEARVHOST") && (m_pUser->IsAdmin() || !m_pUser->DenySetVHost())) { m_pUser->SetVHost(""); PutStatus("VHost Cleared"); - } else if (sCommand.CaseCmp("PLAYBUFFER") == 0) { + } else if (sCommand.Equals("PLAYBUFFER")) { CString sChan = sLine.Token(1); if (sChan.empty()) { @@ -789,7 +788,7 @@ } pChan->SendBuffer(this); - } else if (sCommand.CaseCmp("CLEARBUFFER") == 0) { + } else if (sCommand.Equals("CLEARBUFFER")) { CString sChan = sLine.Token(1); if (sChan.empty()) { @@ -811,7 +810,7 @@ pChan->ClearBuffer(); PutStatus("The buffer for [" + sChan + "] has been cleared"); - } else if (sCommand.CaseCmp("CLEARALLCHANNELBUFFERS") == 0) { + } else if (sCommand.Equals("CLEARALLCHANNELBUFFERS")) { vector<CChan*>::const_iterator it; const vector<CChan*>& vChans = m_pUser->GetChans(); @@ -819,7 +818,7 @@ (*it)->ClearBuffer(); } PutStatus("All channel buffers have been cleared"); - } else if (sCommand.CaseCmp("SETBUFFER") == 0) { + } else if (sCommand.Equals("SETBUFFER")) { CString sChan = sLine.Token(1); if (sChan.empty()) { @@ -849,7 +848,7 @@ pChan->SetBufferCount(uLineCount); PutStatus("BufferCount for [" + sChan + "] set to [" + CString(pChan->GetBufferCount()) + "]"); - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("TRAFFIC") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("TRAFFIC")) { CZNC::Get().UpdateTrafficStats(); const map<CString, CUser*>& msUsers = CZNC::Get().GetUserMap(); CTable Table; @@ -887,7 +886,7 @@ Table.SetCell("Total", CString::ToByteStr(users_total_in + CZNC::Get().BytesRead() + users_total_out + CZNC::Get().BytesWritten())); PutStatus(Table); - } else if (m_pUser->IsAdmin() && sCommand.CaseCmp("UPTIME") == 0) { + } else if (m_pUser->IsAdmin() && sCommand.Equals("UPTIME")) { PutStatus("Running for " + CZNC::Get().GetUptime()); } else { PutStatus("Unknown command [" + sCommand + "] try 'Help'"); Modified: trunk/HTTPSock.cpp =================================================================== --- trunk/HTTPSock.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/HTTPSock.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -65,21 +65,21 @@ CString sName = sLine.Token(0); - if (sName.CaseCmp("GET") == 0) { + if (sName.Equals("GET")) { m_bPost = false; m_sURI = sLine.Token(1); ParseURI(); - } else if (sName.CaseCmp("POST") == 0) { + } else if (sName.Equals("POST")) { m_bPost = true; m_sURI = sLine.Token(1); ParseURI(); - } else if (sName.CaseCmp("Authorization:") == 0) { + } else if (sName.Equals("Authorization:")) { CString sUnhashed; sLine.Token(2).Base64Decode(sUnhashed); m_sUser = sUnhashed.Token(0, false, ":"); m_sPass = sUnhashed.Token(1, true, ":"); m_bLoggedIn = OnLogin(m_sUser, m_sPass); - } else if (sName.CaseCmp("Content-Length:") == 0) { + } else if (sName.Equals("Content-Length:")) { m_uPostLen = sLine.Token(1).ToULong(); } else if (sLine.empty()) { m_bGotHeader = true; @@ -136,21 +136,21 @@ } if (sContentType.empty()) { - if (sFileName.Right(5).CaseCmp(".html") == 0 || sFileName.Right(4).CaseCmp(".htm") == 0) { + if (sFileName.Right(5).Equals(".html") || sFileName.Right(4).Equals(".htm")) { sContentType = "text/html"; - } else if (sFileName.Right(4).CaseCmp(".css") == 0) { + } else if (sFileName.Right(4).Equals(".css")) { sContentType = "text/css"; - } else if (sFileName.Right(3).CaseCmp(".js") == 0) { + } else if (sFileName.Right(3).Equals(".js")) { sContentType = "application/x-javascript"; - } else if (sFileName.Right(4).CaseCmp(".jpg") == 0) { + } else if (sFileName.Right(4).Equals(".jpg")) { sContentType = "image/jpeg"; - } else if (sFileName.Right(4).CaseCmp(".gif") == 0) { + } else if (sFileName.Right(4).Equals(".gif")) { sContentType = "image/gif"; - } else if (sFileName.Right(4).CaseCmp(".ico") == 0) { + } else if (sFileName.Right(4).Equals(".ico")) { sContentType = "image/x-icon"; - } else if (sFileName.Right(4).CaseCmp(".png") == 0) { + } else if (sFileName.Right(4).Equals(".png")) { sContentType = "image/png"; - } else if (sFileName.Right(4).CaseCmp(".bmp") == 0) { + } else if (sFileName.Right(4).Equals(".bmp")) { sContentType = "image/bmp"; } else { sContentType = "text/plain"; Modified: trunk/IRCSock.cpp =================================================================== --- trunk/IRCSock.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/IRCSock.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -79,9 +79,9 @@ MODULECALL(OnRaw(sLine), m_pUser, NULL, return); - if (strncasecmp(sLine.c_str(), "PING ", 5) == 0) { + if (sLine.Equals("PING ", false, 5)) { PutIRC("PONG " + sLine.substr(5)); - } else if (strncasecmp(sLine.c_str(), "ERROR ", 6) == 0) { + } else if (sLine.Equals("ERROR ", false, 6)) { //ERROR :Closing Link: nick[24.24.24.24] (Excess Flood) CString sError(sLine.substr(7)); @@ -114,7 +114,7 @@ CClient* pClient = vClients[a]; CString sClientNick = pClient->GetNick(false); - if (sClientNick.CaseCmp(sNick) != 0) { + if (!sClientNick.Equals(sNick)) { // If they connected with a nick that doesn't match the one we got on irc, then we need to update them pClient->PutClient(":" + sClientNick + "!" + m_Nick.GetIdent() + "@" + m_Nick.GetHost() + " NICK :" + sNick); } @@ -240,7 +240,7 @@ sServer.LeftChomp(); - if (sNick.CaseCmp(GetNick()) == 0) { + if (sNick.Equals(GetNick())) { m_Nick.SetIdent(sIdent); m_Nick.SetHost(sHost); } @@ -326,7 +326,7 @@ sCmd = sLine.Token(1); CString sRest = sLine.Token(2, true); - if (sCmd.CaseCmp("NICK") == 0) { + if (sCmd.Equals("NICK")) { CString sNewNick = sRest; bool bIsVisible = false; @@ -350,7 +350,7 @@ } // Todo: use nick compare function here - if (Nick.GetNick().CaseCmp(GetNick()) == 0) { + if (Nick.GetNick().Equals(GetNick())) { // We are changing our own nick, the clients always must see this! bIsVisible = true; SetNick(sNewNick); @@ -361,7 +361,7 @@ if (!bIsVisible) { return; } - } else if (sCmd.CaseCmp("QUIT") == 0) { + } else if (sCmd.Equals("QUIT")) { CString sMessage = sRest; bool bIsVisible = false; @@ -371,7 +371,7 @@ // :nick!id...@ho... QUIT :message - if (Nick.GetNick().CaseCmp(GetNick()) == 0) { + if (Nick.GetNick().Equals(GetNick())) { m_pUser->PutStatus("You quit [" + sMessage + "]"); } @@ -395,7 +395,7 @@ if (!bIsVisible) { return; } - } else if (sCmd.CaseCmp("JOIN") == 0) { + } else if (sCmd.Equals("JOIN")) { CString sChan = sRest.Token(0); if (sChan.Left(1) == ":") { sChan.LeftChomp(); @@ -404,7 +404,7 @@ CChan* pChan; // Todo: use nick compare function - if (Nick.GetNick().CaseCmp(GetNick()) == 0) { + if (Nick.GetNick().Equals(GetNick())) { m_pUser->AddChan(sChan, false); pChan = m_pUser->FindChan(sChan); if (pChan) { @@ -426,7 +426,7 @@ return; } } - } else if (sCmd.CaseCmp("PART") == 0) { + } else if (sCmd.Equals("PART")) { CString sChan = sRest.Token(0); if (sChan.Left(1) == ":") { sChan.LeftChomp(); @@ -443,7 +443,7 @@ } // Todo: use nick compare function - if (Nick.GetNick().CaseCmp(GetNick()) == 0) { + if (Nick.GetNick().Equals(GetNick())) { m_pUser->DelChan(sChan); } @@ -456,7 +456,7 @@ if (bDetached) { return; } - } else if (sCmd.CaseCmp("MODE") == 0) { + } else if (sCmd.Equals("MODE")) { CString sTarget = sRest.Token(0); CString sModes = sRest.Token(1, true); if (sModes.Left(1) == ":") @@ -492,7 +492,7 @@ } } } - } else if (sCmd.CaseCmp("KICK") == 0) { + } else if (sCmd.Equals("KICK")) { // :opnick!id...@ho... KICK #chan nick :msg CString sChan = sRest.Token(0); CString sKickedNick = sRest.Token(1); @@ -506,7 +506,7 @@ MODULECALL(OnKick(Nick.GetNickMask(), sKickedNick, *pChan, sMsg), m_pUser, NULL, ); } - if (GetNick().CaseCmp(sKickedNick) == 0 && pChan) { + if (GetNick().Equals(sKickedNick) && pChan) { pChan->SetIsOn(false); // Don't try to rejoin! @@ -516,7 +516,7 @@ if ((pChan) && (pChan->IsDetached())) { return; } - } else if (sCmd.CaseCmp("NOTICE") == 0) { + } else if (sCmd.Equals("NOTICE")) { // :nick!id...@ho... NOTICE #chan :Message CString sTarget = sRest.Token(0); CString sMsg = sRest.Token(1, true); @@ -526,7 +526,7 @@ sMsg.LeftChomp(); sMsg.RightChomp(); - if (sTarget.CaseCmp(GetNick()) == 0) { + if (sTarget.Equals(GetNick())) { if (OnCTCPReply(Nick, sMsg)) { return; } @@ -535,7 +535,7 @@ m_pUser->PutUser(":" + Nick.GetNickMask() + " NOTICE " + sTarget + " :\001" + sMsg + "\001"); return; } else { - if (sTarget.CaseCmp(GetNick()) == 0) { + if (sTarget.Equals(GetNick())) { if (OnPrivNotice(Nick, sMsg)) { return; } @@ -546,14 +546,14 @@ } } - if (Nick.GetNick().CaseCmp(m_pUser->GetIRCServer()) == 0) { + if (Nick.GetNick().Equals(m_pUser->GetIRCServer())) { m_pUser->PutUser(":" + Nick.GetNick() + " NOTICE " + sTarget + " :" + sMsg); } else { m_pUser->PutUser(":" + Nick.GetNickMask() + " NOTICE " + sTarget + " :" + sMsg); } return; - } else if (sCmd.CaseCmp("TOPIC") == 0) { + } else if (sCmd.Equals("TOPIC")) { // :nick!id...@ho... TOPIC #chan :This is a topic CChan* pChan = m_pUser->FindChan(sLine.Token(2)); @@ -573,7 +573,7 @@ sLine = ":" + Nick.GetNickMask() + " TOPIC " + pChan->GetName() + " :" + sTopic; } - } else if (sCmd.CaseCmp("PRIVMSG") == 0) { + } else if (sCmd.Equals("PRIVMSG")) { // :nick!id...@ho... PRIVMSG #chan :Message CString sTarget = sRest.Token(0); CString sMsg = sRest.Token(1, true); @@ -586,7 +586,7 @@ sMsg.LeftChomp(); sMsg.RightChomp(); - if (sTarget.CaseCmp(GetNick()) == 0) { + if (sTarget.Equals(GetNick())) { if (OnPrivCTCP(Nick, sMsg)) { return; } @@ -599,7 +599,7 @@ m_pUser->PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + sTarget + " :\001" + sMsg + "\001"); return; } else { - if (sTarget.CaseCmp(GetNick()) == 0) { + if (sTarget.Equals(GetNick())) { if (OnPrivMsg(Nick, sMsg)) { return; } @@ -612,7 +612,7 @@ m_pUser->PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + sTarget + " :" + sMsg); return; } - } else if (sCmd.CaseCmp("WALLOPS") == 0) { + } else if (sCmd.Equals("WALLOPS")) { // :blub!dummy@rox-8DBEFE92 WALLOPS :this is a test CString sMsg = sRest.Token(0, true); @@ -635,14 +635,13 @@ } bool CIRCSock::OnPrivCTCP(CNick& Nick, CString& sMessage) { - if (sMessage.Left(7).CaseCmp("ACTION ") == 0) { - sMessage = sMessage.substr(7); + if (sMessage.TrimPrefix("ACTION ")) { MODULECALL(OnPrivAction(Nick, sMessage), m_pUser, NULL, return true); sMessage = "ACTION " + sMessage; } MODULECALL(OnPrivCTCP(Nick, sMessage), m_pUser, NULL, return true); - if (strncasecmp(sMessage.c_str(), "DCC ", 4) == 0 && m_pUser && m_pUser->BounceDCCs() && m_pUser->IsUserAttached()) { + if (sMessage.Equals("DCC ", false, 4) && m_pUser && m_pUser->BounceDCCs() && m_pUser->IsUserAttached()) { // DCC CHAT chat 2453612361 44592 CString sType = sMessage.Token(1); CString sFile = sMessage.Token(2); @@ -650,33 +649,33 @@ unsigned short uPort = strtoul(sMessage.Token(4).c_str(), NULL, 10); unsigned long uFileSize = strtoul(sMessage.Token(5).c_str(), NULL, 10); - if (sType.CaseCmp("CHAT") == 0) { + if (sType.Equals("CHAT")) { CNick FromNick(Nick.GetNickMask()); unsigned short uBNCPort = CDCCBounce::DCCRequest(FromNick.GetNick(), uLongIP, uPort, "", true, m_pUser, GetLocalIP(), CUtils::GetIP(uLongIP)); if (uBNCPort) { m_pUser->PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + GetNick() + " :\001DCC CHAT chat " + CString(CUtils::GetLongIP(GetLocalIP())) + " " + CString(uBNCPort) + "\001"); } - } else if (sType.CaseCmp("SEND") == 0) { + } else if (sType.Equals("SEND")) { // DCC SEND readme.txt 403120438 5550 1104 unsigned short uBNCPort = CDCCBounce::DCCRequest(Nick.GetNick(), uLongIP, uPort, sFile, false, m_pUser, GetLocalIP(), CUtils::GetIP(uLongIP)); if (uBNCPort) { m_pUser->PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + GetNick() + " :\001DCC SEND " + sFile + " " + CString(CUtils::GetLongIP(GetLocalIP())) + " " + CString(uBNCPort) + " " + CString(uFileSize) + "\001"); } - } else if (sType.CaseCmp("RESUME") == 0) { + } else if (sType.Equals("RESUME")) { // Need to lookup the connection by port, filter the port, and forward to the user CDCCBounce* pSock = (CDCCBounce*) CZNC::Get().GetManager().FindSockByLocalPort(sMessage.Token(3).ToUShort()); - if ((pSock) && (strncasecmp(pSock->GetSockName().c_str(), "DCC::", 5) == 0)) { + if (pSock && pSock->GetSockName().Equals("DCC::", false, 5)) { m_pUser->PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + GetNick() + " :\001DCC " + sType + " " + sFile + " " + CString(pSock->GetUserPort()) + " " + sMessage.Token(4) + "\001"); } - } else if (sType.CaseCmp("ACCEPT") == 0) { + } else if (sType.Equals("ACCEPT")) { // Need to lookup the connection by port, filter the port, and forward to the user CSockManager& Manager = CZNC::Get().GetManager(); for (unsigned int a = 0; a < Manager.size(); a++) { CDCCBounce* pSock = (CDCCBounce*) Manager[a]; - if ((pSock) && (strncasecmp(pSock->GetSockName().c_str(), "DCC::", 5) == 0)) { + if (pSock && pSock->GetSockName().Equals("DCC::", false, 5)) { if (pSock->GetUserPort() == atoi(sMessage.Token(3).c_str())) { m_pUser->PutUser(":" + Nick.GetNickMask() + " PRIVMSG " + GetNick() + " :\001DCC " + sType + " " + sFile + " " + CString(pSock->GetLocalPort()) + " " + sMessage.Token(4) + "\001"); } @@ -750,8 +749,7 @@ CChan* pChan = m_pUser->FindChan(sChan); if (pChan) { // Record a /me - if (sMessage.Left(7).CaseCmp("ACTION ") == 0) { - sMessage = sMessage.substr(7); + if (sMessage.TrimPrefix("ACTION ")) { if (pChan->KeepBuffer() || !m_pUser->IsUserAttached()) { pChan->AddBuffer(":" + Nick.GetNickMask() + " PRIVMSG " + sChan + " :\001ACTION " + m_pUser->AddTimestamp(sMessage) + "\001"); } @@ -895,7 +893,7 @@ CString sName = sArg.Token(0, false, "="); CString sValue = sArg.Token(1, true, "="); - if (sName.CaseCmp("PREFIX") == 0) { + if (sName.Equals("PREFIX")) { CString sPrefixes = sValue.Token(1, false, ")"); CString sPermModes = sValue.Token(0, false, ")"); sPermModes.TrimLeft("("); @@ -904,15 +902,15 @@ m_sPerms = sPrefixes; m_sPermModes = sPermModes; } - } else if (sName.CaseCmp("CHANTYPES") == 0) { + } else if (sName.Equals("CHANTYPES")) { m_pUser->SetChanPrefixes(sValue); - } else if (sName.CaseCmp("NICKLEN") == 0) { + } else if (sName.Equals("NICKLEN")) { unsigned int uMax = sValue.ToUInt(); if (uMax) { m_uMaxNickLen = uMax; } - } else if (sName.CaseCmp("CHANMODES") == 0) { + } else if (sName.Equals("CHANMODES")) { if (!sValue.empty()) { m_mueChanModes.clear(); @@ -924,10 +922,10 @@ } } } - } else if (sName.CaseCmp("NAMESX") == 0) { + } else if (sName.Equals("NAMESX")) { m_bNamesx = true; PutIRC("PROTOCTL NAMESX"); - } else if (sName.CaseCmp("UHNAMES") == 0) { + } else if (sName.Equals("UHNAMES")) { m_bUHNames = true; PutIRC("PROTOCTL UHNAMES"); } @@ -986,19 +984,19 @@ const CString& sConfNick = m_pUser->GetNick().Left(uMax); const CString& sAltNick = m_pUser->GetAltNick().Left(uMax); - if (sBadNick.CaseCmp(sConfNick) == 0) { - if ((!sAltNick.empty()) && (sConfNick.CaseCmp(sAltNick) != 0)) { + if (sBadNick.Equals(sConfNick)) { + if ((!sAltNick.empty()) && (!sConfNick.Equals(sAltNick))) { PutIRC("NICK " + sAltNick); } else { PutIRC("NICK " + sConfNick.Left(uMax -1) + "-"); } - } else if (sBadNick.CaseCmp(sAltNick) == 0) { + } else if (sBadNick.Equals(sAltNick)) { PutIRC("NICK " + sConfNick.Left(uMax -1) + "-"); - } else if (sBadNick.CaseCmp(CString(sConfNick.Left(uMax -1) + "-")) == 0) { + } else if (sBadNick.Equals(CString(sConfNick.Left(uMax -1) + "-"))) { PutIRC("NICK " + sConfNick.Left(uMax -1) + "|"); - } else if (sBadNick.CaseCmp(CString(sConfNick.Left(uMax -1) + "|")) == 0) { + } else if (sBadNick.Equals(CString(sConfNick.Left(uMax -1) + "|"))) { PutIRC("NICK " + sConfNick.Left(uMax -1) + "^"); - } else if (sBadNick.CaseCmp(CString(sConfNick.Left(uMax -1) + "^")) == 0) { + } else if (sBadNick.Equals(CString(sConfNick.Left(uMax -1) + "^"))) { PutIRC("NICK " + sConfNick.Left(uMax -1) + "a"); } else { char cLetter = 0; Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/Modules.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -290,7 +290,7 @@ for (unsigned int a = 0; a < m_vTimers.size(); a++) { CTimer* pTimer = m_vTimers[a]; - if (pTimer->GetName().CaseCmp(sLabel) == 0) { + if (pTimer->GetName().Equals(sLabel)) { m_vTimers.erase(m_vTimers.begin() +a); m_pManager->DelCronByAddr(pTimer); return true; @@ -314,7 +314,7 @@ CTimer* CModule::FindTimer(const CString& sLabel) { for (unsigned int a = 0; a < m_vTimers.size(); a++) { CTimer* pTimer = m_vTimers[a]; - if (pTimer->GetName().CaseCmp(sLabel) == 0) { + if (pTimer->GetName().Equals(sLabel)) { return pTimer; } } @@ -373,7 +373,7 @@ for (unsigned int a = 0; a < m_vSockets.size(); a++) { CSocket* pSocket = m_vSockets[a]; - if (pSocket->GetSockName().CaseCmp(sSockName) == 0) { + if (pSocket->GetSockName().Equals(sSockName)) { m_vSockets.erase(m_vSockets.begin() +a); m_pManager->DelSockByAddr(pSocket); return true; @@ -397,7 +397,7 @@ CSocket* CModule::FindSocket(const CString& sSockName) { for (unsigned int a = 0; a < m_vSockets.size(); a++) { CSocket* pSocket = m_vSockets[a]; - if (pSocket->GetSockName().CaseCmp(sSockName) == 0) { + if (pSocket->GetSockName().Equals(sSockName)) { return pSocket; } } @@ -639,7 +639,7 @@ CModule* CModules::FindModule(const CString& sModule) const { for (unsigned int a = 0; a < size(); a++) { - if (sModule.CaseCmp((*this)[a]->GetModName()) == 0) { + if (sModule.Equals((*this)[a]->GetModName())) { return (*this)[a]; } } Modified: trunk/Nick.cpp =================================================================== --- trunk/Nick.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/Nick.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -65,7 +65,7 @@ const map<CString,CNick*>& msNicks = pChan->GetNicks(); for (map<CString,CNick*>::const_iterator it = msNicks.begin(); it != msNicks.end(); it++) { - if (it->first.CaseCmp(m_sNick) == 0) { + if (it->first.Equals(m_sNick)) { vRetChans.push_back(pChan); continue; } Modified: trunk/Template.cpp =================================================================== --- trunk/Template.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/Template.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -38,21 +38,21 @@ return ""; } - if (sName.CaseCmp("__ID__") == 0) { + if (sName.Equals("__ID__")) { return CString(GetRowIndex() +1); - } else if (sName.CaseCmp("__COUNT__") == 0) { + } else if (sName.Equals("__COUNT__")) { return CString(GetRowCount()); - } else if (sName.CaseCmp("__ODD__") == 0) { + } else if (sName.Equals("__ODD__")) { return ((GetRowIndex() %2) ? "" : "1"); - } else if (sName.CaseCmp("__EVEN__") == 0) { + } else if (sName.Equals("__EVEN__")) { return ((GetRowIndex() %2) ? "1" : ""); - } else if (sName.CaseCmp("__FIRST__") == 0) { + } else if (sName.Equals("__FIRST__")) { return ((GetRowIndex() == 0) ? "1" : ""); - } else if (sName.CaseCmp("__LAST__") == 0) { + } else if (sName.Equals("__LAST__")) { return ((GetRowIndex() == m_pvRows->size() -1) ? "1" : ""); - } else if (sName.CaseCmp("__OUTER__") == 0) { + } else if (sName.Equals("__OUTER__")) { return ((GetRowIndex() == 0 || GetRowIndex() == m_pvRows->size() -1) ? "1" : ""); - } else if (sName.CaseCmp("__INNER__") == 0) { + } else if (sName.Equals("__INNER__")) { return ((GetRowIndex() == 0 || GetRowIndex() == m_pvRows->size() -1) ? "" : "1"); } @@ -185,13 +185,13 @@ CString sArgs = sMid.Token(1, true); if (!uSkip) { - if (sAction.CaseCmp("INC") == 0) { + if (sAction.Equals("INC")) { if (!Print(File.GetDir() + sArgs, oOut)) { return false; } - } else if (sAction.CaseCmp("SETOPTION") == 0) { + } else if (sAction.Equals("SETOPTION")) { m_spOptions->Parse(sArgs); - } else if (sAction.CaseCmp("ADDROW") == 0) { + } else if (sAction.Equals("ADDROW")) { CString sLoopName = sArgs.Token(0); MCString msRow; @@ -202,12 +202,12 @@ NewRow[it->first] = it->second; } } - } else if (sAction.CaseCmp("SET") == 0) { + } else if (sAction.Equals("SET")) { CString sName = sArgs.Token(0); CString sValue = sArgs.Token(1, true); (*this)[sName] = sValue; - } else if (sAction.CaseCmp("JOIN") == 0) { + } else if (sAction.Equals("JOIN")) { VCString vsArgs; sArgs.Split(" ", vsArgs, false, "\"", "\""); @@ -219,7 +219,7 @@ for (unsigned int a = 1; a < vsArgs.size(); a++) { const CString& sArg = vsArgs[a]; - if (sArg.Left(4).CaseCmp("ESC=") == 0) { + if (sArg.Equals("ESC=", false, 4)) { eEscape = CString::ToEscape(sArg.LeftChomp_n(4)); } else { CString sValue = GetValue(sArg); @@ -235,9 +235,9 @@ } } } - } else if (sAction.CaseCmp("VAR") == 0) { + } else if (sAction.Equals("VAR")) { sOutput += GetValue(sArgs); - } else if (sAction.CaseCmp("LOOP") == 0) { + } else if (sAction.Equals("LOOP")) { CTemplateLoopContext* pContext = GetCurLoopContext(); if (!pContext || pContext->GetFilePosition() != uCurPos) { @@ -253,7 +253,7 @@ uSkip++; } } - } else if (sAction.CaseCmp("IF") == 0) { + } else if (sAction.Equals("IF")) { if (ValidIf(sArgs)) { uNestedIfs++; bValidLastIf = true; @@ -262,19 +262,19 @@ bValidLastIf = false; } } - } else if (sAction.CaseCmp("IF") == 0) { + } else if (sAction.Equals("IF")) { uSkip++; - } else if (sAction.CaseCmp("LOOP") == 0) { + } else if (sAction.Equals("LOOP")) { uSkip++; } - if (sAction.CaseCmp("ENDIF") == 0) { + if (sAction.Equals("ENDIF")) { if (uSkip) { uSkip--; } else { uNestedIfs--; } - } else if (sAction.CaseCmp("ENDLOOP") == 0) { + } else if (sAction.Equals("ENDLOOP")) { if (uSkip) { uSkip--; } else { @@ -296,11 +296,11 @@ } } } - } else if (sAction.CaseCmp("ELSE") == 0) { + } else if (sAction.Equals("ELSE")) { if (!bValidLastIf && uSkip == 1) { CString sArg = sArgs.Token(0); - if (sArg.empty() || (sArg.CaseCmp("IF") == 0 && ValidIf(sArgs.Token(1, true)))) { + if (sArg.empty() || (sArg.Equals("IF") && ValidIf(sArgs.Token(1, true)))) { uSkip = 0; bValidLastIf = true; } @@ -413,7 +413,7 @@ return (bNegate != IsTrue(sName)); } - return (bNegate != (GetValue(sName).CaseCmp(sValue) == 0)); + return (bNegate != GetValue(sName).Equals(sValue)); } bool CTemplate::IsTrue(const CString& sName) { Modified: trunk/User.cpp =================================================================== --- trunk/User.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/User.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -368,7 +368,7 @@ } for (a = 0; a < m_vServers.size(); a++) { - if (sServer.CaseCmp(m_vServers[a]->GetName()) == 0) { + if (sServer.Equals(m_vServers[a]->GetName())) { m_uServerIdx = a +1; break; } @@ -513,7 +513,7 @@ } for (unsigned int a = 0; a < m_vChans.size(); a++) { - if (m_vChans[a]->GetName().CaseCmp(pChan->GetName()) == 0) { + if (m_vChans[a]->GetName().Equals(pChan->GetName())) { delete pChan; return false; } @@ -535,7 +535,7 @@ bool CUser::DelChan(const CString& sName) { for (vector<CChan*>::iterator a = m_vChans.begin(); a != m_vChans.end(); a++) { - if (sName.CaseCmp((*a)->GetName()) == 0) { + if (sName.Equals((*a)->GetName())) { delete *a; m_vChans.erase(a); return true; @@ -651,7 +651,7 @@ CChan* CUser::FindChan(const CString& sName) const { for (unsigned int a = 0; a < m_vChans.size(); a++) { CChan* pChan = m_vChans[a]; - if (sName.CaseCmp(pChan->GetName()) == 0) { + if (sName.Equals(pChan->GetName())) { return pChan; } } @@ -682,7 +682,7 @@ CServer* CUser::FindServer(const CString& sName) const { for (unsigned int a = 0; a < m_vServers.size(); a++) { CServer* pServer = m_vServers[a]; - if (sName.CaseCmp(pServer->GetName()) == 0) { + if (sName.Equals(pServer->GetName())) { return pServer; } } @@ -700,7 +700,7 @@ for (vector<CServer*>::iterator it = m_vServers.begin(); it != m_vServers.end(); it++, a++) { CServer* pServer = *it; - if (pServer->GetName().CaseCmp(sName) == 0) { + if (pServer->GetName().Equals(sName)) { CServer* pCurServer = GetCurrentServer(); m_vServers.erase(it); @@ -813,7 +813,7 @@ CString sSaltedPass = sPass + m_sPassSalt; - return (m_sPass.CaseCmp(sSaltedPass.MD5()) == 0); + return (m_sPass.Equals(sSaltedPass.MD5())); } /*CClient* CUser::GetClient() { @@ -823,7 +823,7 @@ for (unsigned int a = 0; a < Manager.size(); a++) { Csock* pSock = Manager[a]; - if (pSock->GetSockName().CaseCmp(sSockName) == 0) { + if (pSock->GetSockName().Equals(sSockName)) { if (!pSock->IsClosed()) { return (CClient*) pSock; } @@ -918,7 +918,7 @@ CSockManager& Manager = CZNC::Get().GetManager(); for (unsigned int a = 0; a < Manager.size(); a++) { - if (strncasecmp(Manager[a]->GetSockName().c_str(), "DCC::LISTEN::", 13) == 0) { + if (Manager[a]->GetSockName().Equals("DCC::LISTEN::", false, 13)) { CDCCSock* pSock = (CDCCSock*) Manager[a]; if (pSock->GetLocalPort() == uPort) { @@ -948,7 +948,7 @@ unsigned short uPort = CZNC::Get().GetManager().ListenRand("DCC::LISTEN::" + sRemoteNick, GetLocalIP(), false, SOMAXCONN, pSock, 120); - if (GetNick().CaseCmp(sRemoteNick) == 0) { + if (GetNick().Equals(sRemoteNick)) { PutUser(":" + GetStatusPrefix() + "status!zn...@zn... PRIVMSG " + sRemoteNick + " :\001DCC SEND " + pFile->GetShortName() + " " + CString(CUtils::GetLongIP(GetLocalIP())) + " " + CString(uPort) + " " + CString(pFile->GetSize()) + "\001"); } else { Modified: trunk/Utils.cpp =================================================================== --- trunk/Utils.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/Utils.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -260,9 +260,9 @@ GetInput(sPrompt, sRet, sDefault, "yes/no"); - if (sRet.CaseCmp("yes") == 0) { + if (sRet.Equals("yes")) { return true; - } else if (sRet.CaseCmp("no") == 0) { + } else if (sRet.Equals("no")) { return false; } @@ -403,7 +403,7 @@ bool CTable::AddColumn(const CString& sName) { for (unsigned int a = 0; a < m_vsHeaders.size(); a++) { - if (m_vsHeaders[a].CaseCmp(sName) == 0) { + if (m_vsHeaders[a].Equals(sName)) { return false; } } Modified: trunk/ZNCString.cpp =================================================================== --- trunk/ZNCString.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/ZNCString.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -276,13 +276,13 @@ } CString::EEscape CString::ToEscape(const CString& sEsc) { - if (sEsc.CaseCmp("ASCII") == 0) { + if (sEsc.Equals("ASCII")) { return EASCII; - } else if (sEsc.CaseCmp("HTML") == 0) { + } else if (sEsc.Equals("HTML")) { return EHTML; - } else if (sEsc.CaseCmp("URL") == 0) { + } else if (sEsc.Equals("URL")) { return EURL; - } else if (sEsc.CaseCmp("SQL") == 0) { + } else if (sEsc.Equals("SQL")) { return ESQL; } @@ -919,7 +919,7 @@ return sRet.RightChomp_n(); } -bool CString::ToBool() const { return (!Trim_n().Trim_n("0").empty() && Trim_n().CaseCmp("false") != 0); } +bool CString::ToBool() const { return (!Trim_n().Trim_n("0").empty() && !Trim_n().Equals("false")); } short CString::ToShort() const { return strtoul(this->c_str(), (char**) NULL, 10); } unsigned short CString::ToUShort() const { return strtoul(this->c_str(), (char**) NULL, 10); } unsigned int CString::ToUInt() const { return strtoul(this->c_str(), (char**) NULL, 10); } @@ -976,7 +976,7 @@ } bool CString::TrimPrefix(const CString& sPrefix) { - if (CaseCmp(sPrefix, sPrefix.length()) == 0) { + if (Equals(sPrefix, false, sPrefix.length())) { LeftChomp(sPrefix.length()); return true; } else { @@ -985,7 +985,7 @@ } bool CString::TrimSuffix(const CString& sSuffix) { - if (Right(sSuffix.length()).CaseCmp(sSuffix) == 0) { + if (Right(sSuffix.length()).Equals(sSuffix)) { RightChomp(sSuffix.length()); return true; } else { Modified: trunk/modules/autoattach.cpp =================================================================== --- trunk/modules/autoattach.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/modules/autoattach.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -58,7 +58,7 @@ virtual void OnModCommand(const CString& sLine) { CString sCommand = sLine.Token(0); - if (sCommand.CaseCmp("ADD") == 0) { + if (sCommand.Equals("ADD")) { CString sChan = sLine.Token(1); if (AlreadyAdded(sChan)) { @@ -68,14 +68,14 @@ } else { PutModule("Usage: Add [!]<#chan>"); } - } else if (sCommand.CaseCmp("DEL") == 0) { + } else if (sCommand.Equals("DEL")) { CString sChan = sLine.Token(1); if (Del(sChan)) PutModule("Removed " + sChan + " from list"); else PutModule("Usage: Del [!]<#chan>"); - } else if (sCommand.CaseCmp("LIST") == 0) { + } else if (sCommand.Equals("LIST")) { CTable Table; Table.AddColumn("Chan"); @@ -94,7 +94,7 @@ } else { PutModule("You have no entries."); } - } else if (sCommand.CaseCmp("HELP") == 0) { + } else if (sCommand.Equals("HELP")) { CTable Table; Table.AddColumn("Command"); Table.AddColumn("Description"); Modified: trunk/modules/autocycle.cpp =================================================================== --- trunk/modules/autocycle.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/modules/autocycle.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -42,7 +42,7 @@ virtual void OnModCommand(const CString& sLine) { CString sCommand = sLine.Token(0); - if (sCommand.CaseCmp("ADD") == 0) { + if (sCommand.Equals("ADD")) { CString sChan = sLine.Token(1); if (AlreadyAdded(sChan)) { @@ -52,14 +52,14 @@ } else { PutModule("Usage: Add [!]<#chan>"); } - } else if (sCommand.CaseCmp("DEL") == 0) { + } else if (sCommand.Equals("DEL")) { CString sChan = sLine.Token(1); if (Del(sChan)) PutModule("Removed " + sChan + " from list"); else PutModule("Usage: Del [!]<#chan>"); - } else if (sCommand.CaseCmp("LIST") == 0) { + } else if (sCommand.Equals("LIST")) { CTable Table; Table.AddColumn("Chan"); @@ -78,7 +78,7 @@ } else { PutModule("You have no entries."); } - } else if (sCommand.CaseCmp("HELP") == 0) { + } else if (sCommand.Equals("HELP")) { CTable Table; Table.AddColumn("Command"); Table.AddColumn("Description"); @@ -127,7 +127,7 @@ // Is that person us and we don't have op? const CNick* pNick = Channel.GetNicks().begin()->second; - if (!pNick->HasPerm(CChan::Op) && pNick->GetNick().CaseCmp(m_pUser->GetCurNick()) == 0) + if (!pNick->HasPerm(CChan::Op) && pNick->GetNick().Equals(m_pUser->GetCurNick())) Channel.Cycle(); } Modified: trunk/modules/autoop.cpp =================================================================== --- trunk/modules/autoop.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/modules/autoop.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -163,7 +163,7 @@ for (map<CString, CAutoOpUser*>::iterator it = m_msUsers.begin(); it != m_msUsers.end(); it++) { // and the nick who joined is a valid user if (it->second->HostMatches(Nick.GetHostMask()) && it->second->ChannelMatches(Channel.GetName())) { - if (it->second->GetUserKey().CaseCmp("__NOKEY__") == 0) { + if (it->second->GetUserKey().Equals("__NOKEY__")) { PutIRC("MODE " + Channel.GetName() + " +o " + Nick.GetNick()); } else { // then insert this nick into the queue, the timer does the rest @@ -195,15 +195,15 @@ } virtual EModRet OnPrivNotice(CNick& Nick, CString& sMessage) { - if (sMessage.Token(0).CaseCmp("!ZNCAO") != 0) { + if (!sMessage.Token(0).Equals("!ZNCAO")) { return CONTINUE; } CString sCommand = sMessage.Token(1); - if (sCommand.CaseCmp("CHALLENGE") == 0) { + if (sCommand.Equals("CHALLENGE")) { ChallengeRespond(Nick, sMessage.Token(2)); - } else if (sCommand.CaseCmp("RESPONSE") == 0) { + } else if (sCommand.Equals("RESPONSE")) { VerifyResponse(Nick, sMessage.Token(2)); } @@ -213,16 +213,16 @@ virtual void OnModCommand(const CString& sLine) { CString sCommand = sLine.Token(0).AsUpper(); - if (sCommand.CaseCmp("HELP") == 0) { + if (sCommand.Equals("HELP")) { PutModule("Commands are: ListUsers, AddChans, DelChans, AddUser, DelUser"); - } else if (sCommand.CaseCmp("TIMERS") == 0) { + } else if (sCommand.Equals("TIMERS")) { ListTimers(); - } else if (sCommand.CaseCmp("ADDUSER") == 0 || sCommand.CaseCmp("DELUSER") == 0) { + } else if (sCommand.Equals("ADDUSER") || sCommand.Equals("DELUSER")) { CString sUser = sLine.Token(1); CString sHost = sLine.Token(2); CString sKey = sLine.Token(3); - if (sCommand.CaseCmp("ADDUSER") == 0) { + if (sCommand.Equals("ADDUSER")) { if (sHost.empty()) { PutModule("Usage: " + sCommand + " <user> <hostmask> <key> [channels]"); } else { @@ -236,7 +236,7 @@ DelUser(sUser); DelNV(sUser); } - } else if (sCommand.CaseCmp("LISTUSERS") == 0) { + } else if (sCommand.Equals("LISTUSERS")) { if (m_msUsers.empty()) { PutModule("There are no users defined"); return; @@ -258,7 +258,7 @@ } PutModule(Table); - } else if (sCommand.CaseCmp("ADDCHANS") == 0 || sCommand.CaseCmp("DELCHANS") == 0) { + } else if (sCommand.Equals("ADDCHANS") || sCommand.Equals("DELCHANS")) { CString sUser = sLine.Token(1); CString sChans = sLine.Token(2, true); @@ -274,7 +274,7 @@ return; } - if (sCommand.CaseCmp("ADDCHANS") == 0) { + if (sCommand.Equals("ADDCHANS")) { pUser->AddChans(sChans); PutModule("Channel(s) added to user [" + pUser->GetUsername() + "]"); } else { Modified: trunk/modules/awaynick.cpp =================================================================== --- trunk/modules/awaynick.cpp 2008-09-30 14:43:51 UTC (rev 1233) +++ trunk/modules/awaynick.cpp 2008-09-30 15:15:59 UTC (rev 1234) @@ -76,7 +76,7 @@ if (pIRCSock) { CString sConfNick = m_pUser->GetNick(); - if (pIRCSock->GetNick().CaseCmp(GetAwayNick().Left(pIRCSock->GetNick().length())) == 0) { + if (pIRCSock->GetNick().Equals(GetAwayNick().Left(pIRCSock->GetNick().length()))) { RemTimer("BackNickTimer"); AddTimer(new CBackNickTimer(*this)); } @@ -104,11 +104,13 @@ } } - virtual void OnModCommand(const CString& sCommand) { - if (strcasecmp(sCommand.c_str(), "TIMERS") == 0) { + virtual void OnModCommand(const CSt... [truncated message content] |
From: <ps...@us...> - 2008-09-28 17:17:58
|
Revision: 1225 http://znc.svn.sourceforge.net/znc/?rev=1225&view=rev Author: psychon Date: 2008-09-28 17:17:46 +0000 (Sun, 28 Sep 2008) Log Message: ----------- Update to latest Csocket Modified Paths: -------------- trunk/Csocket.cpp trunk/Csocket.h Modified: trunk/Csocket.cpp =================================================================== --- trunk/Csocket.cpp 2008-09-28 16:59:28 UTC (rev 1224) +++ trunk/Csocket.cpp 2008-09-28 17:17:46 UTC (rev 1225) @@ -28,7 +28,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * -* $Revision: 1.83 $ +* $Revision: 1.89 $ */ #include "Csocket.h" @@ -36,6 +36,7 @@ #include <sys/param.h> #endif /* __NetBSD__ */ + #include <list> #define CS_SRANDBUFFER 128 @@ -54,6 +55,29 @@ } #ifdef _WIN32 +static const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt) +{ + if( af == AF_INET ) + { + struct sockaddr_in in; + memset(&in, 0, sizeof(in)); + in.sin_family = AF_INET; + memcpy( &in.sin_addr, src, sizeof(struct in_addr) ); + getnameinfo( (struct sockaddr *)&in, sizeof(struct sockaddr_in), dst, cnt, NULL, 0, NI_NUMERICHOST ); + return dst; + } + else if( af == AF_INET6 ) + { + struct sockaddr_in6 in; + memset( &in, 0, sizeof(in) ); + in.sin6_family = AF_INET6; + memcpy( &in.sin6_addr, src, sizeof(struct in_addr6) ); + getnameinfo( (struct sockaddr *)&in, sizeof(struct sockaddr_in6), dst, cnt, NULL, 0, NI_NUMERICHOST ); + return dst; + } + return( NULL ); +} + static inline void set_non_blocking(int fd) { u_long iOpts = 1; @@ -157,7 +181,9 @@ if( h_errno != TRY_AGAIN ) { +#ifndef _WIN32 CS_DEBUG( "gethostyname: " << hstrerror( h_errno ) ); +#endif /* _WIN32 */ break; } } @@ -1143,9 +1169,19 @@ if ( iErr != 1 ) { int sslErr = SSL_get_error( m_ssl, iErr ); - - if ( ( sslErr != SSL_ERROR_WANT_READ ) && ( sslErr != SSL_ERROR_WANT_WRITE ) ) - bPass = false; + bPass = false; + if( sslErr == SSL_ERROR_WANT_READ || sslErr == SSL_ERROR_WANT_WRITE ) + bPass = true; +#ifdef _WIN32 + else if( sslErr == SSL_ERROR_SYSCALL && iErr < 0 && GetLastError() == WSAENOTCONN ) + { + // this seems to be an issue with win32 only. I've seen it happen on slow connections + // the issue is calling this before select(), which isn't a problem on unix. Allowing this + // to pass in this case is fine because subsequent ssl transactions will occur and the handshake + // will finish. At this point, its just instantiating the handshake. + bPass = true; + } +#endif /* _WIN32 */ } else bPass = true; @@ -1566,12 +1602,12 @@ CS_STRING & Csock::GetInternalReadBuffer() { return( m_sbuffer ); } CS_STRING & Csock::GetInternalWriteBuffer() { return( m_sSend ); } void Csock::SetMaxBufferThreshold( u_int iThreshold ) { m_iMaxStoredBufferLength = iThreshold; } -u_int Csock::GetMaxBufferThreshold() { return( m_iMaxStoredBufferLength ); } -int Csock::GetType() { return( m_iConnType ); } +u_int Csock::GetMaxBufferThreshold() const { return( m_iMaxStoredBufferLength ); } +int Csock::GetType() const { return( m_iConnType ); } void Csock::SetType( int iType ) { m_iConnType = iType; } -const CS_STRING & Csock::GetSockName() { return( m_sSockName ); } +const CS_STRING & Csock::GetSockName() const { return( m_sSockName ); } void Csock::SetSockName( const CS_STRING & sName ) { m_sSockName = sName; } -const CS_STRING & Csock::GetHostName() { return( m_shostname ); } +const CS_STRING & Csock::GetHostName() const { return( m_shostname ); } void Csock::SetHostName( const CS_STRING & sHostname ) { m_shostname = sHostname; } unsigned long long Csock::GetStartTime() const { return( m_iStartTime ); } void Csock::ResetStartTime() { m_iStartTime = 0; } Modified: trunk/Csocket.h =================================================================== --- trunk/Csocket.h 2008-09-28 16:59:28 UTC (rev 1224) +++ trunk/Csocket.h 2008-09-28 17:17:46 UTC (rev 1225) @@ -28,7 +28,7 @@ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * -* $Revision: 1.195 $ +* $Revision: 1.199 $ */ // note to compile with win32 need to link to winsock2, using gcc its -lws2_32 @@ -56,6 +56,8 @@ #define ECONNREFUSED WSAECONNREFUSED #define EINPROGRESS WSAEINPROGRESS #define ETIMEDOUT WSAETIMEDOUT +#define EADDRNOTAVAIL WSAEADDRNOTAVAIL +#define ECONNABORTED WSAECONNABORTED #endif /* _WIN32 */ @@ -292,6 +294,11 @@ { WSACleanup(); } +#define InitCsocket InitWin32 +#define ShutdownCsocket ShutdownWin32 +#else +#define InitCsocket (void)0 +#define ShutdownCsocket (void)0 #endif /* _WIN32 */ //! wrappers for FD_SET and such to work in templates. @@ -639,18 +646,18 @@ //! sets the max buffered threshold when EnableReadLine() is enabled void SetMaxBufferThreshold( u_int iThreshold ); - u_int GetMaxBufferThreshold(); + u_int GetMaxBufferThreshold() const; //! Returns the connection type from enum eConnType - int GetType(); + int GetType() const; void SetType( int iType ); //! Returns a reference to the socket name - const CS_STRING & GetSockName(); + const CS_STRING & GetSockName() const; void SetSockName( const CS_STRING & sName ); //! Returns a reference to the host name - const CS_STRING & GetHostName(); + const CS_STRING & GetHostName() const; void SetHostName( const CS_STRING & sHostname ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-29 13:34:50
|
Revision: 1229 http://znc.svn.sourceforge.net/znc/?rev=1229&view=rev Author: psychon Date: 2008-09-29 13:34:42 +0000 (Mon, 29 Sep 2008) Log Message: ----------- Remove CSocket::m_sLabel since it isn't really used at all It doesn't really make much sense either, because Csock already has contains a socket name member which can be used for this. This is exactly what this patch does. Modified Paths: -------------- trunk/Modules.cpp trunk/Modules.h trunk/modules/imapauth.cpp Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-09-29 13:33:15 UTC (rev 1228) +++ trunk/Modules.cpp 2008-09-29 13:34:42 UTC (rev 1229) @@ -99,16 +99,14 @@ /////////////////// !Timer /////////////////// /////////////////// Socket /////////////////// -CSocket::CSocket(CModule* pModule, const CString& sLabel) : Csock() { +CSocket::CSocket(CModule* pModule) : Csock() { m_pModule = pModule; - m_sLabel = sLabel; m_pModule->AddSocket(this); EnableReadLine(); } -CSocket::CSocket(CModule* pModule, const CString& sLabel, const CString& sHostname, unsigned short uPort, int iTimeout) : Csock(sHostname, uPort, iTimeout) { +CSocket::CSocket(CModule* pModule, const CString& sHostname, unsigned short uPort, int iTimeout) : Csock(sHostname, uPort, iTimeout) { m_pModule = pModule; - m_sLabel = sLabel; m_pModule->AddSocket(this); EnableReadLine(); } @@ -127,6 +125,11 @@ sVHost = m_pModule->GetUser()->GetVHost(); } + // Don't overwrite the socket name if one is already set + if (!GetSockName().empty()) { + sSockName = GetSockName(); + } + return m_pModule->GetManager()->Connect(sHostname, uPort, sSockName, uTimeout, bSSL, sVHost, (Csock*) this); } @@ -137,6 +140,10 @@ if (pUser) { sSockName += "::" + pUser->GetUserName(); } + // Don't overwrite the socket name if one is already set + if (!GetSockName().empty()) { + sSockName = GetSockName(); + } return m_pModule->GetManager()->ListenAll(uPort, sSockName, bSSL, SOMAXCONN, (Csock*) this); } @@ -161,10 +168,7 @@ } void CSocket::SetModule(CModule* p) { m_pModule = p; } -void CSocket::SetLabel(const CString& s) { m_sLabel = s; } - CModule* CSocket::GetModule() const { return m_pModule; } -const CString& CSocket::GetLabel() const { return m_sLabel; } /////////////////// !Socket /////////////////// CModule::CModule(void* pDLL, CUser* pUser, const CString& sModName, const CString& sDataDir) { @@ -357,11 +361,11 @@ return false; } -bool CModule::RemSocket(const CString& sLabel) { +bool CModule::RemSocket(const CString& sSockName) { for (unsigned int a = 0; a < m_vSockets.size(); a++) { CSocket* pSocket = m_vSockets[a]; - if (pSocket->GetLabel().CaseCmp(sLabel) == 0) { + if (pSocket->GetSockName().CaseCmp(sSockName) == 0) { m_vSockets.erase(m_vSockets.begin() +a); m_pManager->DelSockByAddr(pSocket); return true; @@ -382,10 +386,10 @@ return false; } -CSocket* CModule::FindSocket(const CString& sLabel) { +CSocket* CModule::FindSocket(const CString& sSockName) { for (unsigned int a = 0; a < m_vSockets.size(); a++) { CSocket* pSocket = m_vSockets[a]; - if (pSocket->GetLabel().CaseCmp(sLabel) == 0) { + if (pSocket->GetSockName().CaseCmp(sSockName) == 0) { return pSocket; } } @@ -411,7 +415,7 @@ CSocket* pSocket = (CSocket*) m_vSockets[a]; Table.AddRow(); - Table.SetCell("Name", pSocket->GetLabel()); + Table.SetCell("Name", pSocket->GetSockName()); if (pSocket->GetType() == CSocket::LISTENER) { Table.SetCell("State", "Listening"); Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-09-29 13:33:15 UTC (rev 1228) +++ trunk/Modules.h 2008-09-29 13:34:42 UTC (rev 1229) @@ -132,8 +132,8 @@ class CSocket : public Csock { public: - CSocket(CModule* pModule, const CString& sLabel); - CSocket(CModule* pModule, const CString& sLabel, const CString& sHostname, unsigned short uPort, int iTimeout = 60); + CSocket(CModule* pModule); + CSocket(CModule* pModule, const CString& sHostname, unsigned short uPort, int iTimeout = 60); virtual ~CSocket(); using Csock::Connect; @@ -149,17 +149,14 @@ // Setters void SetModule(CModule* p); - void SetLabel(const CString& s); // !Setters // Getters CModule* GetModule() const; - const CString& GetLabel() const; // !Getters private: protected: CModule* m_pModule; - CString m_sLabel; }; class CModInfo { @@ -305,9 +302,9 @@ // Socket stuff bool AddSocket(CSocket* pSocket); bool RemSocket(CSocket* pSocket); - bool RemSocket(const CString& sLabel); + bool RemSocket(const CString& sSockName); bool UnlinkSocket(CSocket* pSocket); - CSocket* FindSocket(const CString& sLabel); + CSocket* FindSocket(const CString& sSockName); virtual void ListSockets(); // !Socket stuff Modified: trunk/modules/imapauth.cpp =================================================================== --- trunk/modules/imapauth.cpp 2008-09-29 13:33:15 UTC (rev 1228) +++ trunk/modules/imapauth.cpp 2008-09-29 13:34:42 UTC (rev 1229) @@ -16,7 +16,7 @@ class CIMAPSock : public CSocket { public: CIMAPSock(CIMAPAuthMod* pModule, CSmartPtr<CAuthBase> Auth) - : CSocket((CModule*) pModule, "IMAPMod"), m_spAuth(Auth) { + : CSocket((CModule*) pModule), m_spAuth(Auth) { m_pIMAPMod = pModule; m_bSentReply = false; m_bSentLogin = false; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <kr...@us...> - 2008-09-30 12:57:22
|
Revision: 1231 http://znc.svn.sourceforge.net/znc/?rev=1231&view=rev Author: kroimon Date: 2008-09-30 12:57:10 +0000 (Tue, 30 Sep 2008) Log Message: ----------- Added length argument to CString::StrCmp() like in CString::CaseCmp() Modified Paths: -------------- trunk/ZNCString.cpp trunk/ZNCString.h Modified: trunk/ZNCString.cpp =================================================================== --- trunk/ZNCString.cpp 2008-09-29 14:46:06 UTC (rev 1230) +++ trunk/ZNCString.cpp 2008-09-30 12:57:10 UTC (rev 1231) @@ -172,14 +172,17 @@ return NULL; } -int CString::CaseCmp(const CString& s, u_long uLen) const { +int CString::CaseCmp(const CString& s, unsigned long uLen) const { if (uLen != CString::npos) { return strncasecmp(c_str(), s.c_str(), uLen); } return strcasecmp(c_str(), s.c_str()); } -int CString::StrCmp(const CString& s) const { +int CString::StrCmp(const CString& s, unsigned long uLen) const { + if (uLen != CString::npos) { + return strncmp(c_str(), s.c_str(), uLen); + } return strcmp(c_str(), s.c_str()); } Modified: trunk/ZNCString.h =================================================================== --- trunk/ZNCString.h 2008-09-29 14:46:06 UTC (rev 1230) +++ trunk/ZNCString.h 2008-09-30 12:57:10 UTC (rev 1231) @@ -80,8 +80,8 @@ virtual ~CString() {} inline unsigned char* strnchr(const unsigned char* src, unsigned char c, unsigned int iMaxBytes, unsigned char* pFill = NULL, unsigned int* piCount = NULL) const; - int CaseCmp(const CString& s, u_long uLen = CString::npos) const; - int StrCmp(const CString& s) const; + int CaseCmp(const CString& s, unsigned long uLen = CString::npos) const; + int StrCmp(const CString& s, unsigned long uLen = CString::npos) const; static bool WildCmp(const CString& sWild, const CString& sString); bool WildCmp(const CString& sWild) const; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-09-30 14:44:14
|
Revision: 1233 http://znc.svn.sourceforge.net/znc/?rev=1233&view=rev Author: psychon Date: 2008-09-30 14:43:51 +0000 (Tue, 30 Sep 2008) Log Message: ----------- Limit the maximal read buffer space that is used for every socket CSocket caches the data read from a socket and then looks for lines in there. If there is no line end, this buffer can grow quite large. This patch now closes sockets if they get a huge read buffer. Modified Paths: -------------- trunk/Client.cpp trunk/Client.h trunk/DCCBounce.cpp trunk/DCCBounce.h trunk/HTTPSock.cpp trunk/HTTPSock.h trunk/IRCSock.cpp trunk/IRCSock.h trunk/Modules.cpp trunk/Modules.h Modified: trunk/Client.cpp =================================================================== --- trunk/Client.cpp 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/Client.cpp 2008-09-30 14:43:51 UTC (rev 1233) @@ -696,6 +696,14 @@ MODULECALL(OnUserDetached(), m_pUser, this, ); } +void CClient::ReachedMaxBuffer() { + DEBUG_ONLY(cout << GetSockName() << " == ReachedMaxBuffer()" << endl); + if (IsAttached()) { + PutClient("ERROR :Closing link [Too long raw line]"); + } + Close(); +} + void CClient::IRCConnected(CIRCSock* pIRCSock) { m_pIRCSock = pIRCSock; } Modified: trunk/Client.h =================================================================== --- trunk/Client.h 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/Client.h 2008-09-30 14:43:51 UTC (rev 1233) @@ -75,6 +75,9 @@ m_bNamesx = false; m_bUHNames = false; EnableReadLine(); + // RFC says a line can have 512 chars max, but we are + // a little more gentle ;) + SetMaxBufferThreshold(1024); StartLoginTimeout(); } @@ -113,6 +116,7 @@ virtual void Connected(); virtual void Disconnected(); virtual void ConnectionRefused(); + virtual void ReachedMaxBuffer(); void SetNick(const CString& s); CUser* GetUser() const { return m_pUser; } Modified: trunk/DCCBounce.cpp =================================================================== --- trunk/DCCBounce.cpp 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/DCCBounce.cpp 2008-09-30 14:43:51 UTC (rev 1233) @@ -38,6 +38,15 @@ PutPeer(sLine); } +void CDCCBounce::ReachedMaxBuffer() { + DEBUG_ONLY(cout << GetSockName() << " == ReachedMaxBuffer()" << endl); + + CString sType = (m_bIsChat) ? "Chat" : "Xfer"; + + m_pUser->PutStatus("DCC " + sType + " Bounce (" + m_sRemoteNick + "): Too long line received"); + Close(); +} + void CDCCBounce::ReadData(const char* data, int len) { size_t BufLen; Modified: trunk/DCCBounce.h =================================================================== --- trunk/DCCBounce.h 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/DCCBounce.h 2008-09-30 14:43:51 UTC (rev 1233) @@ -43,6 +43,7 @@ m_sRemoteIP = sRemoteIP; m_bIsRemote = false; + SetMaxBufferThreshold(10240); if (bIsChat) { EnableReadLine(); } @@ -56,6 +57,7 @@ virtual void ReadPaused(); virtual void Timeout(); virtual void ConnectionRefused(); + virtual void ReachedMaxBuffer(); virtual void SockError(int iErrno); virtual void Connected(); virtual void Disconnected(); Modified: trunk/HTTPSock.cpp =================================================================== --- trunk/HTTPSock.cpp 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/HTTPSock.cpp 2008-09-30 14:43:51 UTC (rev 1233) @@ -19,6 +19,7 @@ m_bDone = false; m_uPostLen = 0; EnableReadLine(); + SetMaxBufferThreshold(10240); } CHTTPSock::CHTTPSock(const CString& sHostname, unsigned short uPort, int iTimeout) : Csock(sHostname, uPort, iTimeout) { @@ -29,6 +30,7 @@ m_bDone = false; m_uPostLen = 0; EnableReadLine(); + SetMaxBufferThreshold(10240); } CHTTPSock::~CHTTPSock() {} @@ -384,6 +386,11 @@ void CHTTPSock::Disconnected() { } +void CHTTPSock::ReachedMaxBuffer() { + DEBUG_ONLY(cout << GetSockName() << " == ReachedMaxBuffer()" << endl); + Close(); +} + Csock* CHTTPSock::GetSockObj(const CString& sHost, unsigned short uPort) { CHTTPSock* pSock = new CHTTPSock; pSock->SetSockName("HTTP::CLIENT"); Modified: trunk/HTTPSock.h =================================================================== --- trunk/HTTPSock.h 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/HTTPSock.h 2008-09-30 14:43:51 UTC (rev 1233) @@ -23,6 +23,7 @@ // Csocket derived members virtual void ReadData(const char* data, int len); virtual void ReadLine(const CString& sData); + virtual void ReachedMaxBuffer(); virtual void SockError(int iErrno); virtual void Timeout(); virtual void Connected(); Modified: trunk/IRCSock.cpp =================================================================== --- trunk/IRCSock.cpp 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/IRCSock.cpp 2008-09-30 14:43:51 UTC (rev 1233) @@ -36,6 +36,9 @@ m_mueChanModes['t'] = NoArg; m_mueChanModes['i'] = NoArg; m_mueChanModes['n'] = NoArg; + + // RFC says a line can have 512 chars max, but we don't care ;) + SetMaxBufferThreshold(1024); } CIRCSock::~CIRCSock() { @@ -878,6 +881,12 @@ m_pUser->ClearMotdBuffer(); } +void CIRCSock::ReachedMaxBuffer() { + DEBUG_ONLY(cout << GetSockName() << " == ReachedMaxBuffer()" << endl); + m_pUser->PutStatus("Received a too long line from the IRC server!"); + Quit(); +} + void CIRCSock::ParseISupport(const CString& sLine) { unsigned int i = 0; CString sArg = sLine.Token(i++); Modified: trunk/IRCSock.h =================================================================== --- trunk/IRCSock.h 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/IRCSock.h 2008-09-30 14:43:51 UTC (rev 1233) @@ -46,6 +46,7 @@ virtual void ConnectionRefused(); virtual void SockError(int iErrno); virtual void Timeout(); + virtual void ReachedMaxBuffer(); void PutIRC(const CString& sLine); void ResetChans(); Modified: trunk/Modules.cpp =================================================================== --- trunk/Modules.cpp 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/Modules.cpp 2008-09-30 14:43:51 UTC (rev 1233) @@ -103,18 +103,26 @@ m_pModule = pModule; m_pModule->AddSocket(this); EnableReadLine(); + SetMaxBufferThreshold(10240); } CSocket::CSocket(CModule* pModule, const CString& sHostname, unsigned short uPort, int iTimeout) : Csock(sHostname, uPort, iTimeout) { m_pModule = pModule; m_pModule->AddSocket(this); EnableReadLine(); + SetMaxBufferThreshold(10240); } CSocket::~CSocket() { m_pModule->UnlinkSocket(this); } +void CSocket::ReachedMaxBuffer() { + DEBUG_ONLY(cout << GetSockName() << " == ReachedMaxBuffer()" << endl); + PutModule("Some socket reached its max buffer limit and was closed!"); + Close(); +} + bool CSocket::Connect(const CString& sHostname, unsigned short uPort, bool bSSL, unsigned int uTimeout) { CUser* pUser = m_pModule->GetUser(); CString sSockName = "MOD::C::" + m_pModule->GetModName(); Modified: trunk/Modules.h =================================================================== --- trunk/Modules.h 2008-09-30 12:58:34 UTC (rev 1232) +++ trunk/Modules.h 2008-09-30 14:43:51 UTC (rev 1233) @@ -139,6 +139,9 @@ using Csock::Connect; using Csock::Listen; + // This defaults to closing the socket, feel free to override + virtual void ReachedMaxBuffer(); + bool Connect(const CString& sHostname, unsigned short uPort, bool bSSL = false, unsigned int uTimeout = 60); bool Listen(unsigned short uPort, bool bSSL = false, unsigned int uTimeout = 0); virtual bool PutIRC(const CString& sLine); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-04 21:00:11
|
Revision: 1240 http://znc.svn.sourceforge.net/znc/?rev=1240&view=rev Author: psychon Date: 2008-10-04 20:55:50 +0000 (Sat, 04 Oct 2008) Log Message: ----------- Use CSocket in webadmin instead of directly using Csock This gets rid of some code duplication for managing the sockets. Modified Paths: -------------- trunk/HTTPSock.cpp trunk/HTTPSock.h trunk/modules/webadmin.cpp Modified: trunk/HTTPSock.cpp =================================================================== --- trunk/HTTPSock.cpp 2008-10-03 18:07:22 UTC (rev 1239) +++ trunk/HTTPSock.cpp 2008-10-04 20:55:50 UTC (rev 1240) @@ -11,7 +11,7 @@ #include "HTTPSock.h" #include "znc.h" -CHTTPSock::CHTTPSock() : Csock() { +CHTTPSock::CHTTPSock(CModule *pMod) : CSocket(pMod) { m_bSentHeader = false; m_bGotHeader = false; m_bLoggedIn = false; @@ -22,7 +22,7 @@ SetMaxBufferThreshold(10240); } -CHTTPSock::CHTTPSock(const CString& sHostname, unsigned short uPort, int iTimeout) : Csock(sHostname, uPort, iTimeout) { +CHTTPSock::CHTTPSock(CModule *pMod, const CString& sHostname, unsigned short uPort, int iTimeout) : CSocket(pMod, sHostname, uPort, iTimeout) { m_bSentHeader = false; m_bGotHeader = false; m_bLoggedIn = false; @@ -392,7 +392,7 @@ } Csock* CHTTPSock::GetSockObj(const CString& sHost, unsigned short uPort) { - CHTTPSock* pSock = new CHTTPSock; + CHTTPSock* pSock = new CHTTPSock(m_pModule); pSock->SetSockName("HTTP::CLIENT"); pSock->SetTimeout(120); Modified: trunk/HTTPSock.h =================================================================== --- trunk/HTTPSock.h 2008-10-03 18:07:22 UTC (rev 1239) +++ trunk/HTTPSock.h 2008-10-04 20:55:50 UTC (rev 1240) @@ -11,13 +11,12 @@ #ifndef _HTTPSOCK_H #define _HTTPSOCK_H -#include "Csocket.h" -#include "main.h" +#include "Modules.h" -class CHTTPSock : public Csock { +class CHTTPSock : public CSocket { public: - CHTTPSock(); - CHTTPSock(const CString& sHostname, unsigned short uPort, int iTimeout = 60); + CHTTPSock(CModule *pMod); + CHTTPSock(CModule *pMod, const CString& sHostname, unsigned short uPort, int iTimeout = 60); virtual ~CHTTPSock(); // Csocket derived members Modified: trunk/modules/webadmin.cpp =================================================================== --- trunk/modules/webadmin.cpp 2008-10-03 18:07:22 UTC (rev 1239) +++ trunk/modules/webadmin.cpp 2008-10-04 20:55:50 UTC (rev 1240) @@ -96,9 +96,10 @@ virtual Csock* GetSockObj(const CString& sHost, unsigned short uPort); bool IsAdmin(bool bAllowUserAdmin = true) const { return m_bAdmin; } + CWebAdminMod* GetModule() const { return (CWebAdminMod*) m_pModule; } + private: protected: - CWebAdminMod* m_pModule; CUser* m_pUser; CUser* m_pSessionUser; bool m_bAdmin; @@ -114,17 +115,8 @@ } virtual ~CWebAdminMod() { - while (m_spSocks.size()) { // Loop through the sockets that we have created - m_pManager->DelSockByAddr(*m_spSocks.begin()); // Delete each one which will call SockDestroyed() and erase it from the set - } // This way we don't want to erase it ourselves, that's why we're using the funky while loop - - m_spSocks.clear(); } - virtual bool OnBoot() { - return true; - } - virtual bool OnLoad(const CString& sArgStr, CString& sMessage) { bool bSSL = false; bool bIPv6 = false; @@ -180,14 +172,6 @@ return b; } - void AddSock(CWebAdminSock* pSock) { - m_spSocks.insert(pSock); - } - - void SockDestroyed(CWebAdminSock* pSock) { - m_spSocks.erase(pSock); - } - void SetSkinName(const CString& s) { m_sSkinName = s; SetNV("SkinName", m_sSkinName); @@ -219,14 +203,13 @@ private: unsigned short m_uPort; CString m_sSkinName; - set<CWebAdminSock*> m_spSocks; CString m_sListenHost; map<CString, unsigned int> m_suSwitchCounters; }; CString CWebAdminSock::GetSkinDir() { CString sSkinDir = m_pModule->GetModDataDir() + "/skins/" - + m_pModule->GetSkinName() + "/"; + + GetModule()->GetSkinName() + "/"; if (CFile::IsDir(sSkinDir)) { return sSkinDir; @@ -302,35 +285,31 @@ } Csock* CWebAdminSock::GetSockObj(const CString& sHost, unsigned short uPort) { - CWebAdminSock* pSock = new CWebAdminSock(m_pModule, sHost, uPort); + CWebAdminSock* pSock = new CWebAdminSock(GetModule(), sHost, uPort); pSock->SetSockName("WebAdmin::Client"); pSock->SetTimeout(120); - m_pModule->AddSock(pSock); return pSock; } -CWebAdminSock::CWebAdminSock(CWebAdminMod* pModule) : CHTTPSock() { +CWebAdminSock::CWebAdminSock(CWebAdminMod* pModule) : CHTTPSock(pModule) { m_pModule = pModule; m_pUser = NULL; m_pSessionUser = NULL; m_bAdmin = false; - m_pModule->AddSock(this); SetDocRoot(GetSkinDir()); } -CWebAdminSock::CWebAdminSock(CWebAdminMod* pModule, const CString& sHostname, unsigned short uPort, int iTimeout) : CHTTPSock(sHostname, uPort, iTimeout) { +CWebAdminSock::CWebAdminSock(CWebAdminMod* pModule, const CString& sHostname, unsigned short uPort, int iTimeout) + : CHTTPSock(pModule, sHostname, uPort, iTimeout) { m_pModule = pModule; m_pUser = NULL; m_pSessionUser = NULL; m_bAdmin = false; - m_pModule->AddSock(this); SetDocRoot(GetSkinDir()); } CWebAdminSock::~CWebAdminSock() { - m_pModule->SockDestroyed(this); - if (!m_spAuth.IsNull()) { CWebAdminAuth* pAuth = (CWebAdminAuth*) &(*m_spAuth); pAuth->SetWebAdminSock(NULL); @@ -388,7 +367,7 @@ } } else if (sURI == "/switchuser") { unsigned int uCurCnt = GetParam("cnt").ToUInt(); - unsigned int uCounter = m_pModule->GetSwitchCounter(GetRemoteIP()); + unsigned int uCounter = GetModule()->GetSwitchCounter(GetRemoteIP()); if (!uCurCnt) { Redirect("/switchuser?cnt=" + CString(uCounter)); @@ -397,7 +376,7 @@ if (uCurCnt >= uCounter) { m_bLoggedIn = false; - m_pModule->IncSwitchCounter(GetRemoteIP()); + GetModule()->IncSwitchCounter(GetRemoteIP()); ForceLogin(); } else { Redirect("/home"); @@ -557,7 +536,7 @@ CTemplate& l = m_Template.AddRow("SkinLoop"); l["Name"] = SubDir.GetShortName(); - if (SubDir.GetShortName() == m_pModule->GetSkinName()) { + if (SubDir.GetShortName() == GetModule()->GetSkinName()) { l["Checked"] = "true"; } } @@ -610,7 +589,7 @@ CZNC::Get().AddVHost(vsArgs[a].Trim_n()); } - m_pModule->SetSkinName(GetParam("skin")); + GetModule()->SetSkinName(GetParam("skin")); set<CString> ssArgs; GetParamValues("loadmod", ssArgs); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-02 15:21:10
|
Revision: 1236 http://znc.svn.sourceforge.net/znc/?rev=1236&view=rev Author: psychon Date: 2008-10-02 15:21:06 +0000 (Thu, 02 Oct 2008) Log Message: ----------- Fix cached perms when a chan is left If you were kicked from a channel and rejoined, you lost all your permissions (op, voice...), but ZNC still cached the old one you had internally. This wasn't noticed before, because this caches is not used much. This was found via autoop which thought it had op in a channel and so tried to give op to others. Call chain is like this: Receive KICK message -> pChan->SetIsOn(false) -> pChan->Reset() CChan::Reset() now properly clears the cache. Modified Paths: -------------- trunk/Chan.cpp trunk/Nick.cpp Modified: trunk/Chan.cpp =================================================================== --- trunk/Chan.cpp 2008-09-30 18:07:25 UTC (rev 1235) +++ trunk/Chan.cpp 2008-10-02 15:21:06 UTC (rev 1236) @@ -45,6 +45,7 @@ m_sTopicOwner = ""; m_ulTopicDate = 0; m_ulCreationDate = 0; + m_Nick.Reset(); ClearNicks(); ResetJoinTries(); } Modified: trunk/Nick.cpp =================================================================== --- trunk/Nick.cpp 2008-09-30 18:07:25 UTC (rev 1235) +++ trunk/Nick.cpp 2008-10-02 15:21:06 UTC (rev 1236) @@ -24,6 +24,7 @@ void CNick::Reset() { m_cPerm = '\0'; + m_suChanPerms.clear(); } CString CNick::Concat(const CString& sNick, const CString& sSuffix, unsigned int uMaxNickLen) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-07 13:50:02
|
Revision: 1241 http://znc.svn.sourceforge.net/znc/?rev=1241&view=rev Author: psychon Date: 2008-10-07 13:45:34 +0000 (Tue, 07 Oct 2008) Log Message: ----------- Mark some global vars as const and static and some static local vars as const This way the compiler puts those vars in .rodata instead of .data and everyone happy. (Plus we have one symbol less exported) Modified Paths: -------------- trunk/MD5.cpp trunk/MD5.h trunk/ZNCString.cpp trunk/ZNCString.h Modified: trunk/MD5.cpp =================================================================== --- trunk/MD5.cpp 2008-10-04 20:55:50 UTC (rev 1240) +++ trunk/MD5.cpp 2008-10-07 13:45:34 UTC (rev 1241) @@ -61,7 +61,7 @@ ctx->state[3] = 0x10325476; } -void CMD5::md5_process(md5_context *ctx, uint8 data[64]) const { +void CMD5::md5_process(md5_context *ctx, const uint8 data[64]) const { uint32 X[16], A, B, C, D; GET_UINT32(X[0], data, 0); @@ -180,7 +180,7 @@ ctx->state[3] += D; } -void CMD5::md5_update(md5_context *ctx, uint8 *input, uint32 length) const { +void CMD5::md5_update(md5_context *ctx, const uint8 *input, uint32 length) const { uint32 left, fill; if (!length) return; @@ -215,7 +215,7 @@ } } -static uint8 md5_padding[64] = { +static const uint8 md5_padding[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, Modified: trunk/MD5.h =================================================================== --- trunk/MD5.h 2008-10-04 20:55:50 UTC (rev 1240) +++ trunk/MD5.h 2008-10-07 13:45:34 UTC (rev 1241) @@ -46,11 +46,11 @@ protected: void md5_starts( md5_context *ctx ) const; - void md5_update( md5_context *ctx, uint8 *input, uint32 length ) const; + void md5_update( md5_context *ctx, const uint8 *input, uint32 length ) const; void md5_finish( md5_context *ctx, uint8 digest[16] ) const; private: - void md5_process( md5_context *ctx, uint8 data[64] ) const; + void md5_process( md5_context *ctx, const uint8 data[64] ) const; }; #endif /* _MD5_H */ Modified: trunk/ZNCString.cpp =================================================================== --- trunk/ZNCString.cpp 2008-10-04 20:55:50 UTC (rev 1240) +++ trunk/ZNCString.cpp 2008-10-07 13:45:34 UTC (rev 1241) @@ -14,7 +14,7 @@ using std::stringstream; -const char* g_szHTMLescapes[256] = { +static const char* const g_szHTMLescapes[256] = { "�", 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0-9 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10-19 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20-29 @@ -716,7 +716,7 @@ } bool CString::Base64Encode(CString& sRet, unsigned int uWrap) const { - static char b64table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + const char b64table[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; sRet.clear(); size_t len = size(); const unsigned char* input = (const unsigned char*) c_str(); Modified: trunk/ZNCString.h =================================================================== --- trunk/ZNCString.h 2008-10-04 20:55:50 UTC (rev 1240) +++ trunk/ZNCString.h 2008-10-07 13:45:34 UTC (rev 1241) @@ -50,8 +50,6 @@ XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, XX,XX,XX,XX, }; -extern const char* g_szHTMLescapes[256]; - class CString : public string { public: typedef enum { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-10 17:58:49
|
Revision: 1245 http://znc.svn.sourceforge.net/znc/?rev=1245&view=rev Author: psychon Date: 2008-10-10 17:58:36 +0000 (Fri, 10 Oct 2008) Log Message: ----------- Use the new CString constructor in various places to make them more readable Modified Paths: -------------- trunk/Chan.cpp trunk/User.cpp trunk/modules/q.cpp Modified: trunk/Chan.cpp =================================================================== --- trunk/Chan.cpp 2008-10-10 15:45:20 UTC (rev 1244) +++ trunk/Chan.cpp 2008-10-10 17:58:36 UTC (rev 1245) @@ -60,7 +60,7 @@ if (m_pUser->GetBufferCount() != GetBufferCount()) File.Write("\t\tBuffer = " + CString(GetBufferCount()) + "\n"); if (m_pUser->KeepBuffer() != KeepBuffer()) - File.Write("\t\tKeepBuffer = " + CString((KeepBuffer()) ? "true" : "false") + "\n"); + File.Write("\t\tKeepBuffer = " + CString(KeepBuffer()) + "\n"); if (IsDetached()) File.Write("\t\tDetached = true\n"); if (!GetKey().empty()) { File.Write("\t\tKey = " + GetKey() + "\n"); } Modified: trunk/User.cpp =================================================================== --- trunk/User.cpp 2008-10-10 15:45:20 UTC (rev 1244) +++ trunk/User.cpp 2008-10-10 17:58:36 UTC (rev 1245) @@ -575,16 +575,16 @@ PrintLine(File, "StatusPrefix", GetStatusPrefix()); PrintLine(File, "ChanModes", GetDefaultChanModes()); PrintLine(File, "Buffer", CString(GetBufferCount())); - PrintLine(File, "KeepBuffer", CString((KeepBuffer()) ? "true" : "false")); - PrintLine(File, "MultiClients", CString((MultiClients()) ? "true" : "false")); - PrintLine(File, "BounceDCCs", CString((BounceDCCs()) ? "true" : "false")); - PrintLine(File, "DenyLoadMod", CString((DenyLoadMod()) ? "true" : "false")); - PrintLine(File, "Admin", CString((IsAdmin()) ? "true" : "false")); - PrintLine(File, "DenySetVHost", CString((DenySetVHost()) ? "true" : "false")); + PrintLine(File, "KeepBuffer", CString(KeepBuffer())); + PrintLine(File, "MultiClients", CString(MultiClients())); + PrintLine(File, "BounceDCCs", CString(BounceDCCs())); + PrintLine(File, "DenyLoadMod", CString(DenyLoadMod())); + PrintLine(File, "Admin", CString(IsAdmin())); + PrintLine(File, "DenySetVHost", CString(DenySetVHost())); PrintLine(File, "DCCLookupMethod", CString((UseClientIP()) ? "client" : "default")); PrintLine(File, "TimestampFormat", GetTimestampFormat()); - PrintLine(File, "AppendTimestamp", CString((GetTimestampAppend()) ? "true" : "false")); - PrintLine(File, "PrependTimestamp", CString((GetTimestampPrepend()) ? "true" : "false")); + PrintLine(File, "AppendTimestamp", CString(GetTimestampAppend())); + PrintLine(File, "PrependTimestamp", CString(GetTimestampPrepend())); PrintLine(File, "TimezoneOffset", CString(m_fTimezoneOffset)); PrintLine(File, "JoinTries", CString(m_uMaxJoinTries)); PrintLine(File, "MaxJoins", CString(m_uMaxJoins)); Modified: trunk/modules/q.cpp =================================================================== --- trunk/modules/q.cpp 2008-10-10 15:45:20 UTC (rev 1244) +++ trunk/modules/q.cpp 2008-10-10 17:58:36 UTC (rev 1245) @@ -158,13 +158,13 @@ Table.SetCell("Value", "*****"); // m_sPassword Table.AddRow(); Table.SetCell("Setting", "UseCloakedHost"); - Table.SetCell("Value", CString(m_bUseCloakedHost ? "true" : "false")); + Table.SetCell("Value", CString(m_bUseCloakedHost)); Table.AddRow(); Table.SetCell("Setting", "UseChallenge"); - Table.SetCell("Value", CString(m_bUseChallenge ? "true" : "false")); + Table.SetCell("Value", CString(m_bUseChallenge)); Table.AddRow(); Table.SetCell("Setting", "RequestPerms"); - Table.SetCell("Value", CString(m_bRequestPerms ? "true" : "false")); + Table.SetCell("Value", CString(m_bRequestPerms)); PutModule(Table); } else if (sCommand == "status") { @@ -469,17 +469,17 @@ void SetUseCloakedHost(const bool bUseCloakedHost) { m_bUseCloakedHost = bUseCloakedHost; - SetNV("UseCloakedHost", CString(bUseCloakedHost ? "true" : "false")); + SetNV("UseCloakedHost", CString(bUseCloakedHost)); } void SetUseChallenge(const bool bUseChallenge) { m_bUseChallenge = bUseChallenge; - SetNV("UseChallenge", CString(bUseChallenge ? "true" : "false")); + SetNV("UseChallenge", CString(bUseChallenge)); } void SetRequestPerms(const bool bRequestPerms) { m_bRequestPerms = bRequestPerms; - SetNV("RequestPerms", CString(bRequestPerms ? "true" : "false")); + SetNV("RequestPerms", CString(bRequestPerms)); } }; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-12 15:49:14
|
Revision: 1248 http://znc.svn.sourceforge.net/znc/?rev=1248&view=rev Author: psychon Date: 2008-10-12 15:49:03 +0000 (Sun, 12 Oct 2008) Log Message: ----------- Make httpsock (and thus webadmin) support client side caching of static files If such a file is served (e.g. webadmin images) an ETag header is now generated. When the browser needs the file again it sends the ETag back to us in an If-None-Match header and the file isn't transfered again if the ETag still matches. This should greatly reduce webadmin's traffic usage. This also updates HTTPSock to sometimes generate a HTTP/1.1 reply (ETag was added in HTTP/1.1). This was successfully tested with Firefox 2 & 3 and IE7. Konqueror failed badly (No If-None-Match header generated). Thanks to flakes for having the idea, writing the patch and testing it. Modified Paths: -------------- trunk/HTTPSock.cpp trunk/HTTPSock.h Modified: trunk/HTTPSock.cpp =================================================================== --- trunk/HTTPSock.cpp 2008-10-12 12:09:35 UTC (rev 1247) +++ trunk/HTTPSock.cpp 2008-10-12 15:49:03 UTC (rev 1248) @@ -12,22 +12,20 @@ #include "znc.h" CHTTPSock::CHTTPSock(CModule *pMod) : CSocket(pMod) { - m_bSentHeader = false; - m_bGotHeader = false; - m_bLoggedIn = false; - m_bPost = false; - m_bDone = false; - m_uPostLen = 0; - EnableReadLine(); - SetMaxBufferThreshold(10240); + Init(); } CHTTPSock::CHTTPSock(CModule *pMod, const CString& sHostname, unsigned short uPort, int iTimeout) : CSocket(pMod, sHostname, uPort, iTimeout) { + Init(); +} + +void CHTTPSock::Init() { m_bSentHeader = false; m_bGotHeader = false; m_bLoggedIn = false; m_bPost = false; m_bDone = false; + m_bHTTP10Client = false; m_uPostLen = 0; EnableReadLine(); SetMaxBufferThreshold(10240); @@ -68,6 +66,7 @@ if (sName.Equals("GET")) { m_bPost = false; m_sURI = sLine.Token(1); + m_bHTTP10Client = sLine.Token(2).Equals("HTTP/1.0"); ParseURI(); } else if (sName.Equals("POST")) { m_bPost = true; @@ -81,6 +80,9 @@ m_bLoggedIn = OnLogin(m_sUser, m_sPass); } else if (sName.Equals("Content-Length:")) { m_uPostLen = sLine.Token(1).ToULong(); + } else if (sName.Equals("If-None-Match:")) { + // this is for proper client cache support (HTTP 304) on static files: + m_sIfNoneMatch = sLine.Token(1, true); } else if (sLine.empty()) { m_bGotHeader = true; DisableReadLine(); @@ -157,15 +159,37 @@ } } - PrintHeader(File.GetSize(), sContentType); + const time_t iMTime = File.GetMTime(); + bool bNotModified = false; + CString sETag; - char szBuf[4096]; - int iLen = 0; + if (iMTime > 0 && !m_bHTTP10Client) { + sETag = "-" + CString(iMTime); // lighttpd style ETag - while ((iLen = File.Read(szBuf, 4096)) > 0) { - Write(szBuf, iLen); + AddHeader("ETag", "\"" + sETag + "\""); + AddHeader("Cache-Control", "private"); + + if (!m_sIfNoneMatch.empty()) { + m_sIfNoneMatch.Trim("\\\"'"); + bNotModified = (m_sIfNoneMatch.Equals(sETag, true)); + } } + if (bNotModified) { + PrintHeader(0, sContentType, 304, "Not Modified"); + } else { + char szBuf[4096]; + int iLen = 0; + + PrintHeader(File.GetSize(), sContentType); + + while ((iLen = File.Read(szBuf, 4096)) > 0) { + Write(szBuf, iLen); + } + } + + DEBUG_ONLY(cout << "ETag: [" << sETag << "] / If-None-Match [" << m_sIfNoneMatch << "]" << endl); + Close(Csock::CLT_AFTERWRITE); return true; @@ -333,17 +357,20 @@ DEBUG_ONLY(cout << "- " << uStatusId << " (" << sStatusMsg << ") [" << m_sContentType << "]" << endl); - Write("HTTP/1.0 " + CString(uStatusId) + " " + sStatusMsg + "\r\n"); + Write("HTTP/" + CString(m_bHTTP10Client ? "1.0 " : "1.1 ") + CString(uStatusId) + " " + sStatusMsg + "\r\n"); //Write("Date: Tue, 28 Jun 2005 20:45:36 GMT\r\n"); Write("Server: " + CZNC::GetTag() + "\r\n"); - Write("Content-Length: " + CString(uContentLength) + "\r\n"); - Write("Connection: Close\r\n"); + if (uContentLength > 0) { + Write("Content-Length: " + CString(uContentLength) + "\r\n"); + } Write("Content-Type: " + m_sContentType + "\r\n"); for (MCString::iterator it = m_msHeaders.begin(); it != m_msHeaders.end(); it++) { Write(it->first + ": " + it->second + "\r\n"); } + Write("Connection: Close\r\n"); + Write("\r\n"); m_bSentHeader = true; Modified: trunk/HTTPSock.h =================================================================== --- trunk/HTTPSock.h 2008-10-12 12:09:35 UTC (rev 1247) +++ trunk/HTTPSock.h 2008-10-12 15:49:03 UTC (rev 1248) @@ -71,6 +71,8 @@ // !Getters private: protected: + void Init(); + bool m_bSentHeader; bool m_bGotHeader; bool m_bLoggedIn; @@ -85,6 +87,8 @@ CString m_sDocRoot; map<CString, VCString> m_msvsParams; MCString m_msHeaders; + bool m_bHTTP10Client; + CString m_sIfNoneMatch; }; #endif // !_HTTPSOCK_H This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-15 18:36:15
|
Revision: 1251 http://znc.svn.sourceforge.net/znc/?rev=1251&view=rev Author: psychon Date: 2008-10-15 18:36:08 +0000 (Wed, 15 Oct 2008) Log Message: ----------- Some tweaking and cleaning up to configure.in - Make it clear to autoconf that we are C++ only. It now no longer checks for a C compiler which might save time on some boxes. - Honour CPPFLAGS. - Remove some unused vars from AC_SUBST. - Add includes to CXXFLAGS instead of using $INCLUDES for this. - Use autoconf macros instead of 'echo' for the 'checking for perl' message. - Fix all warnings from 'autoconf -W all'. - Use AC_CONFIG_SRCDIR for helping configure find the source dir. Modified Paths: -------------- trunk/Makefile.in trunk/configure trunk/configure.in trunk/modules/Makefile.in trunk/znc-config.in Modified: trunk/Makefile.in =================================================================== --- trunk/Makefile.in 2008-10-14 17:28:10 UTC (rev 1250) +++ trunk/Makefile.in 2008-10-15 18:36:08 UTC (rev 1251) @@ -8,9 +8,8 @@ sbindir := @sbindir@ localstatedir := @localstatedir@ CXX := @CXX@ -CXXFLAGS := @CXXFLAGS@ +CXXFLAGS := @CPPFLAGS@ @CXXFLAGS@ LDFLAGS := @LDFLAGS@ -INCLUDES := @INCLUDES@ LIBS := @LIBS@ SRCS := ZNCString.cpp Csocket.cpp main.cpp znc.cpp User.cpp IRCSock.cpp Client.cpp DCCBounce.cpp \ @@ -50,9 +49,9 @@ %.o: %.cpp Makefile @mkdir -p .depend - $(CXX) $(CXXFLAGS) $(INCLUDES) -c -o $@ $< -MMD -MF .depend/$<.dep + $(CXX) $(CXXFLAGS) -c -o $@ $< -MMD -MF .depend/$<.dep -install: znc @MODTARGET@ +install: znc mkdir -p $(DESTDIR)$(bindir) mkdir -p $(DESTDIR)$(prefix)/include/znc install -m 0755 znc $(DESTDIR)$(bindir) Modified: trunk/configure =================================================================== --- trunk/configure 2008-10-14 17:28:10 UTC (rev 1250) +++ trunk/configure 2008-10-15 18:36:08 UTC (rev 1251) @@ -576,6 +576,7 @@ PACKAGE_STRING='znc 0.061' PACKAGE_BUGREPORT='' +ac_unique_file="znc.cpp" ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME @@ -628,14 +629,8 @@ host_cpu host_vendor host_os -CC -CFLAGS -ac_ct_CC MODFLAGS -INCLUDES -MODULES MODTARGET -VERSION NOSSL PERL SASL @@ -652,9 +647,7 @@ LDFLAGS LIBS CPPFLAGS -CCC -CC -CFLAGS' +CCC' # Initialize some variables set by options. @@ -1254,8 +1247,6 @@ LIBS libraries to pass to the linker, e.g. -l<library> CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if you have headers in a nonstandard directory <include dir> - CC C compiler command - CFLAGS C compiler flags Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. @@ -1687,12 +1678,21 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -SAVED_CXXFLAGS="$CXXFLAGS" + 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_PROG_CXX sets CXXFLAGS to "-O2 -g" if it is unset which we don't want +CXXFLAGS="$CXXFLAGS " +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 @@ -2289,11 +2289,11 @@ CXXFLAGS= fi fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_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_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do @@ -2410,9 +2410,6 @@ -CXXFLAGS="$SAVED_CXXFLAGS" -INCLUDES="" - appendLib () { if test "$LIBS" != ""; then LIBS="$LIBS $*" @@ -2421,14 +2418,6 @@ fi } -appendInc () { - if test "$INCLUDES" != ""; then - INCLUDES="$INCLUDES $*" - else - INCLUDES=$* - fi -} - appendCXX () { if test "$CXXFLAGS" != ""; then CXXFLAGS="$CXXFLAGS $*" @@ -2449,7 +2438,7 @@ case "${host_os}" in freebsd*) - appendInc -I/usr/local/include + appendCXX -I/usr/local/include appendLib -L/usr/local/lib -lcompat MODFLAGS="$MODFLAGS -L/usr/local/lib" ;; @@ -2537,684 +2526,8 @@ appendCXX -Wall -W -Wno-unused-parameter -Woverloaded-virtual -Wshadow 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 -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { 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" - 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 - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { 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" - 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 - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to aut...@gn...." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to aut...@gn...." >&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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { 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" - 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 - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { 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" - 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 - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { 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" - 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 - { echo "$as_me:$LINENO: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.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 -{ echo "$as_me:$LINENO: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; } -if test "${ac_cv_prog_ac_ct_CC+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { 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" - 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 - { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6; } -else - { echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to aut...@gn...." >&5 -echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools -whose name does not start with the host triplet. If you think this -configuration is useful to you, please write to aut...@gn...." >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -See \`config.log' for more details." >&5 -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. -echo "$as_me:$LINENO: checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (ac_try="$ac_compiler --version >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler --version >&5") 2>&5 - ac_status=$? - 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -v >&5") 2>&5 - ac_status=$? - 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 - (eval "$ac_compiler -V >&5") 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } - -{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } -if test "${ac_cv_c_compiler_gnu+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 "echo \"\$as_me:$LINENO: $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 - 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 - 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 -{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; } -GCC=`test $ac_compiler_gnu = yes && echo yes` -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_g+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - 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 "echo \"\$as_me:$LINENO: $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 - 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 - 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 "echo \"\$as_me:$LINENO: $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 - 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 - 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 "echo \"\$as_me:$LINENO: $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 - 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 - 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 -{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 -echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; } -if test "${ac_cv_prog_cc_c89+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&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 <stdarg.h> -#include <stdio.h> -#include <sys/types.h> -#include <sys/stat.h> -/* 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 "echo \"\$as_me:$LINENO: $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 - 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 - 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) - { echo "$as_me:$LINENO: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6; } ;; - xno) - { echo "$as_me:$LINENO: result: unsupported" >&5 -echo "${ECHO_T}unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;; -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 - - - { echo "$as_me:$LINENO: checking for getopt_long in -lgnugetopt" >&5 echo $ECHO_N "checking for getopt_long in -lgnugetopt... $ECHO_C" >&6; } if test "${ac_cv_lib_gnugetopt_getopt_long+set}" = set; then @@ -3258,7 +2571,7 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then @@ -3356,7 +2669,7 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then @@ -3380,8 +2693,8 @@ _ACEOF else - { { echo "$as_me:$LINENO: error: Missing Required libc feature" >&5 -echo "$as_me: error: Missing Required libc feature" >&2;} + { { echo "$as_me:$LINENO: error: missing required libc feature" >&5 +echo "$as_me: error: missing required libc feature" >&2;} { (exit 1); exit 1; }; } fi done @@ -3390,7 +2703,7 @@ if test -z "$NOSSL"; then if test -n "$OPENSSL"; then appendLib -L${OPENSSL}/lib - appendInc -I${OPENSSL}/include + appendCXX -I${OPENSSL}/include fi # Don't reorder this! @@ -3439,7 +2752,7 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then @@ -3465,10 +2778,8 @@ LIBS="-lcrypto $LIBS" else - { { echo "$as_me:$LINENO: error: Could not find libcrypto. Try --disable-openssl or install the - appropriate dependencies eg. libssl-dev." >&5 -echo "$as_me: error: Could not find libcrypto. Try --disable-openssl or install the - appropriate dependencies eg. libssl-dev." >&2;} + { { echo "$as_me:$LINENO: error: could not find libcrypto. Try --disable-openssl or install the appropriate dependencies eg. libssl-dev." >&5 +echo "$as_me: error: could not find libcrypto. Try --disable-openssl or install the appropriate dependencies eg. libssl-dev." >&2;} { (exit 1); exit 1; }; } fi @@ -3516,7 +2827,7 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then @@ -3542,10 +2853,8 @@ LIBS="-lssl $LIBS" else - { { echo "$as_me:$LINENO: error: Could not find libssl. Try --disable-openssl or install the - appropriate dependencies eg. libssl-dev." >&5 -echo "$as_me: error: Could not find libssl. Try --disable-openssl or install the - appropriate dependencies eg. libssl-dev." >&2;} + { { echo "$as_me:$LINENO: error: could not find libssl. Try --disable-openssl or install the appropriate dependencies eg. libssl-dev." >&5 +echo "$as_me: error: could not find libssl. Try --disable-openssl or install the appropriate dependencies eg. libssl-dev." >&2;} { (exit 1); exit 1; }; } fi @@ -3650,7 +2959,7 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then @@ -3714,7 +3023,7 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then @@ -3740,8 +3049,8 @@ appendLib "$SAVED_LIBS" if test $FOUND_DL = "no" ; then - { { echo "$as_me:$LINENO: error: Could not find dlopen. Try --disable-modules" >&5 -echo "$as_me: error: Could not find dlopen. Try --disable-modules" >&2;} + { { echo "$as_me:$LINENO: error: could not find dlopen. Try --disable-modules" >&5 +echo "$as_me: error: could not find dlopen. Try --disable-modules" >&2;} { (exit 1); exit 1; }; } fi @@ -3761,10 +3070,12 @@ appendCXX "-D_DATADIR_=\\\"${DATADIR}\\\"" if test -z "$NOPERL"; then - echo -n "checking for perl... " + { echo "$as_me:$LINENO: checking for perl" >&5 +echo $ECHO_N "checking for perl... $ECHO_C" >&6; } PERL=`which perl` if test -n "$PERL"; then - echo "$PERL" + { echo "$as_me:$LINENO: result: $PERL" >&5 +echo "${ECHO_T}$PERL" >&6; } { echo "$as_me:$LINENO: checking for perl_alloc in -lperl" >&5 echo $ECHO_N "checking for perl_alloc in -lperl... $ECHO_C" >&6; } if test "${ac_cv_lib_perl_perl_alloc+set}" = set; then @@ -3808,7 +3119,7 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then @@ -3829,15 +3140,16 @@ if test $ac_cv_lib_perl_perl_alloc = yes; then unset NOPERL else - { { echo "$as_me:$LINENO: error: Could not find libperl. Try --disable-perl" >&5 -echo "$as_me: error: Could not find libperl. Try --disable-perl" >&2;} + { { echo "$as_me:$LINENO: error: could not find libperl. Try --disable-perl" >&5 +echo "$as_me: error: could not find libperl. Try --disable-perl" >&2;} { (exit 1); exit 1; }; } fi else - echo "no" - { { echo "$as_me:$LINENO: error: Could not find perl binary. Try --disable-perl" >&5 -echo "$as_me: error: Could not find perl binary. Try --disable-perl" >&2;} + { echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6; } + { { echo "$as_me:$LINENO: error: could not find perl binary. Try --disable-perl" >&5 +echo "$as_me: error: could not find perl binary. Try --disable-perl" >&2;} { (exit 1); exit 1; }; } fi fi @@ -3886,7 +3198,7 @@ cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { - test -z "$ac_c_werror_flag" || + test -z "$ac_cxx_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && $as_test_x conftest$ac_exeext; then @@ -3907,15 +3219,14 @@ if test $ac_cv_lib_sasl2_sasl_server_init = yes; then : Dont let autoconf add -lsasl2, Makefile handles that else - { { echo "$as_me:$LINENO: error: Could not find libsasl2. Try --disable-sasl." >&5 -echo "$as_me: error: Could not find libsasl2. Try --disable-sasl." >&2;} + { { echo "$as_me:$LINENO: error: could not find libsasl2. Try --disable-sasl." >&5 +echo "$as_me: error: could not find libsasl2. Try --disable-sasl." >&2;} { (exit 1); exit 1; }; } fi fi fi -VERSION=0.061 # # Auto detect modules @@ -3930,8 +3241,6 @@ - - ac_config_files="$ac_config_files Makefile" ac_config_files="$ac_config_files znc-config" @@ -4628,14 +3937,8 @@ host_cpu!$host_cpu$ac_delim host_vendor!$host_vendor$ac_delim host_os!$host_os$ac_delim -CC!$CC$ac_delim -CFLAGS!$CFLAGS$ac_delim -ac_ct_CC!$ac_ct_CC$ac_delim MODFLAGS!$MODFLAGS$ac_delim -INCLUDES!$INCLUDES$ac_delim -MODULES!$MODULES$ac_delim MODTARGET!$MODTARGET$ac_delim -VERSION!$VERSION$ac_delim NOSSL!$NOSSL$ac_delim PERL!$PERL$ac_delim SASL!$SASL$ac_delim @@ -4645,7 +3948,7 @@ LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 67; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 61; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 @@ -4974,7 +4277,7 @@ echo -echo znc $VERSION configured +echo znc 0.061 configured echo echo "debug: $DEBUG" echo "ipv6: $IPV6" Modified: trunk/configure.in =================================================================== --- trunk/configure.in 2008-10-14 17:28:10 UTC (rev 1250) +++ trunk/configure.in 2008-10-15 18:36:08 UTC (rev 1251) @@ -1,12 +1,13 @@ dnl Keep the version number in sync with main.h! AC_INIT([znc], [0.061]) -SAVED_CXXFLAGS="$CXXFLAGS" +AC_CONFIG_SRCDIR([znc.cpp]) +AC_LANG([C++]) + +# AC_PROG_CXX sets CXXFLAGS to "-O2 -g" if it is unset which we don't want +CXXFLAGS="$CXXFLAGS " AC_PROG_CXX AC_CANONICAL_HOST -CXXFLAGS="$SAVED_CXXFLAGS" -INCLUDES="" - appendLib () { if test "$LIBS" != ""; then LIBS="$LIBS $*" @@ -15,14 +16,6 @@ fi } -appendInc () { - if test "$INCLUDES" != ""; then - INCLUDES="$INCLUDES $*" - else - INCLUDES=$* - fi -} - appendCXX () { if test "$CXXFLAGS" != ""; then CXXFLAGS="$CXXFLAGS $*" @@ -43,7 +36,7 @@ case "${host_os}" in freebsd*) - appendInc -I/usr/local/include + appendCXX -I/usr/local/include appendLib -L/usr/local/lib -lcompat MODFLAGS="$MODFLAGS -L/usr/local/lib" ;; @@ -64,31 +57,31 @@ fi AC_ARG_WITH( [openssl], - AC_HELP_STRING([--with-openssl=DIR], [openssl's installation prefix]), + AS_HELP_STRING([--with-openssl=DIR], [openssl's installation prefix]), [OPENSSL=$withval],) AC_ARG_ENABLE( [debug], - AC_HELP_STRING([--enable-debug], [enable debuging]), + AS_HELP_STRING([--enable-debug], [enable debuging]), [DEBUG="$enableval"], [DEBUG="no"]) AC_ARG_ENABLE( [ipv6], - AC_HELP_STRING([--enable-ipv6], [enable ipv6 support]), + AS_HELP_STRING([--enable-ipv6], [enable ipv6 support]), [IPV6="$enableval"], [IPV6="no"]) AC_ARG_ENABLE( [modules], - AC_HELP_STRING([--disable-modules], [disable modules]), + AS_HELP_STRING([--disable-modules], [disable modules]), [MODULES="$enableval"], [MODULES="yes"]) AC_ARG_ENABLE( [openssl], - AC_HELP_STRING([--disable-openssl], [disable openssl]), + AS_HELP_STRING([--disable-openssl], [disable openssl]), [if test "$enableval" = "no" ; then NOSSL=1; fi],) AC_ARG_ENABLE( [perl], - AC_HELP_STRING([--disable-perl], [disable perl]), + AS_HELP_STRING([--disable-perl], [disable perl]), [if test "$enableval" = "no" ; then NOPERL=1; fi],) AC_ARG_ENABLE( [sasl], - AC_HELP_STRING([--enable-sasl], [enable sasl]), + AS_HELP_STRING([--enable-sasl], [enable sasl]), [if test "$enableval" = "yes" ; then SASL=1; fi],) AC_ARG_ENABLE( [optimization], - AC_HELP_STRING([--disable-optimization], [Disable some compiler optimizations to + AS_HELP_STRING([--disable-optimization], [Disable some compiler optimizations to decrease memory usage while compiling]), [OPTIMIZE="$enableval"], [OPTIMIZE="yes"]) @@ -112,22 +105,20 @@ fi AC_CHECK_LIB( gnugetopt, getopt_long,) -AC_CHECK_FUNCS( stat lstat chmod open, , AC_ERROR([Missing Required libc feature])) +AC_CHECK_FUNCS( stat lstat chmod open, , AC_MSG_ERROR([missing required libc feature])) if test -z "$NOSSL"; then if test -n "$OPENSSL"; then appendLib -L${OPENSSL}/lib - appendInc -I${OPENSSL}/include + appendCXX -I${OPENSSL}/include fi # Don't reorder this! # On some arches libssl depends on libcrypto without linking to it :( AC_CHECK_LIB( crypto, BIO_new,, - AC_ERROR([Could not find libcrypto. Try --disable-openssl or install the - appropriate dependencies eg. libssl-dev.]), ) + AC_MSG_ERROR([could not find libcrypto. Try --disable-openssl or install the appropriate dependencies eg. libssl-dev.]), ) AC_CHECK_LIB( ssl, SSL_shutdown,, - AC_ERROR([Could not find libssl. Try --disable-openssl or install the - appropriate dependencies eg. libssl-dev.]), ) + AC_MSG_ERROR([could not find libssl. Try --disable-openssl or install the appropriate dependencies eg. libssl-dev.]), ) if test -z "$NOSSL"; then appendCXX -DHAVE_LIBSSL @@ -139,14 +130,13 @@ fi AC_ARG_WITH( [module-prefix], - AC_HELP_STRING([--with-module-prefix], - [module object code [[LIBDIR/znc]]]), + AS_HELP_STRING([--with-module-prefix], [module object code [[LIBDIR/znc]]]), [MODDIR=$withval], [MODDIR="${libdir}/znc"] ) AC_ARG_WITH( [module-data-prefix], - AC_HELP_STRING([--with-module-data-prefix=DIR], - [static module data (webadmin skins) [[DATADIR/znc]]]), + AS_HELP_STRING([--with-module-data-prefix=DIR], + [static module data (webadmin skins) [[DATADIR/znc]]]), [DATADIR=$withval], [DATADIR="${datadir}/znc"] ) @@ -165,7 +155,7 @@ appendLib "$SAVED_LIBS" if test $FOUND_DL = "no" ; then - AC_ERROR([Could not find dlopen. Try --disable-modules]) + AC_MSG_ERROR([could not find dlopen. Try --disable-modules]) fi appendCXX -D_MODULES @@ -184,38 +174,35 @@ appendCXX "-D_DATADIR_=\\\"${DATADIR}\\\"" if test -z "$NOPERL"; then - echo -n "checking for perl... " + AC_MSG_CHECKING([for perl]) PERL=`which perl` if test -n "$PERL"; then - echo "$PERL" + AC_MSG_RESULT([$PERL]) AC_CHECK_LIB(perl, perl_alloc,unset NOPERL, - AC_ERROR([Could not find libperl. Try --disable-perl]), + AC_MSG_ERROR([could not find libperl. Try --disable-perl]), [`$PERL -MExtUtils::Embed -e ccopts -e ldopts`]) else - echo "no" - AC_ERROR([Could not find perl binary. Try --disable-perl]) + AC_MSG_RESULT([no]) + AC_MSG_ERROR([could not find perl binary. Try --disable-perl]) fi fi if test -n "$SASL"; then AC_CHECK_LIB( sasl2, sasl_server_init, [: Dont let autoconf add -lsasl2, Makefile handles that], - AC_ERROR([Could not find libsasl2. Try --disable-sasl.])) + AC_MSG_ERROR([could not find libsasl2. Try --disable-sasl.])) fi fi -VERSION=AC_PACKAGE_VERSION # # Auto detect modules AC_SUBST([CXXFLAGS]) +AC_SUBST([CPPFLAGS]) AC_SUBST([MODFLAGS]) AC_SUBST([LDFLAGS]) -AC_SUBST([INCLUDES]) AC_SUBST([LIBS]) -AC_SUBST([MODULES]) AC_SUBST([MODTARGET]) -AC_SUBST([VERSION]) AC_SUBST([NOSSL]) AC_SUBST([PERL]) AC_SUBST([SASL]) @@ -231,7 +218,7 @@ AC_OUTPUT echo -echo znc $VERSION configured +echo znc AC_PACKAGE_VERSION configured echo echo "debug: $DEBUG" echo "ipv6: $IPV6" Modified: trunk/modules/Makefile.in =================================================================== --- trunk/modules/Makefile.in 2008-10-14 17:28:10 UTC (rev 1250) +++ trunk/modules/Makefile.in 2008-10-15 18:36:08 UTC (rev 1251) @@ -9,9 +9,8 @@ localstatedir := @localstatedir@ CXX := @CXX@ # CXXFLAGS are for the main binary, so don't use them here, use MODFLAGS instead -MODFLAGS := @MODFLAGS@ +MODFLAGS := @CPPFLAGS@ @MODFLAGS@ -I.. LDFLAGS := @LDFLAGS@ -INCLUDES := @INCLUDES@ -I.. # LIBS are not and should not be used in here. # The znc binary links already against those. # LIBS := @LIBS@ @@ -41,7 +40,6 @@ endif saslauthFLAGS := -lsasl2 -SRCS := $(wildcard ../*.cpp) $(addsuffix .cpp, $(FILES)) TARGETS := $(addsuffix .so, $(FILES)) CLEAN := *.so @@ -70,7 +68,7 @@ %.so: %.cpp Makefile @mkdir -p .depend - $(CXX) $(MODFLAGS) $(INCLUDES) $(LDFLAGS) -shared -o $@ $< $($(basename $<)FLAGS) -MMD -MF .depend/$<.dep + $(CXX) $(MODFLAGS) $(LDFLAGS) -shared -o $@ $< $($(basename $<)FLAGS) -MMD -MF .depend/$<.dep modperl_install: create_install_dir for i in *.pm; do \ Modified: trunk/znc-config.in =================================================================== --- trunk/znc-config.in 2008-10-14 17:28:10 UTC (rev 1250) +++ trunk/znc-config.in 2008-10-15 18:36:08 UTC (rev 1251) @@ -6,8 +6,7 @@ bindir="@bindir@" datadir="@datadir@" -CXXFLAGS="@MODFLAGS@" -INCLUDES="-I@prefix@/include/znc @INCLUDES@" +CXXFLAGS="@CPPFLAGS@ @MODFLAGS@ -I@prefix@/include/znc" # LIBS="@LIBS@" # No libs needed, ZNC links against $LIBS and thus modules don't need to. LIBS="" @@ -18,7 +17,6 @@ if test -z "$1"; then echo "USAGE: $0 <--cflags|--include|--libs|--moddir|--datadir|--version|--prefix>" echo " --cflags [$CXXFLAGS]" - echo " --include [$INCLUDES]" echo " --libs [$LIBS]" echo " --moddir [$MODDIR]" echo " --datadir [$DATADIR]" @@ -31,7 +29,8 @@ --cflags) echo $CXXFLAGS;; --include) - echo $INCLUDES;; + # Left here for backwards compatibility + ;; --libs) echo $LIBS;; --moddir) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ps...@us...> - 2008-10-19 16:31:34
|
Revision: 1255 http://znc.svn.sourceforge.net/znc/?rev=1255&view=rev Author: psychon Date: 2008-10-19 16:31:26 +0000 (Sun, 19 Oct 2008) Log Message: ----------- Add znc-config --cxx and use it in znc-buildmod Plus this makes sure that znc-buildmod tries to use the znc-config we installed first, then others from $PATH. Modified Paths: -------------- trunk/znc-buildmod.in trunk/znc-config.in Modified: trunk/znc-buildmod.in =================================================================== --- trunk/znc-buildmod.in 2008-10-18 12:51:25 UTC (rev 1254) +++ trunk/znc-buildmod.in 2008-10-19 16:31:26 UTC (rev 1255) @@ -9,17 +9,13 @@ prefix="@prefix@" exec_prefix="@exec_prefix@" bindir="@bindir@" -PATH="$PATH:$bindir" +PATH="$bindir:$PATH" # Check if we got everything we need SED=sed ZNC_CONFIG=znc-config -if test "x$CXX" = "x" ; then - CXX=g++ -fi - check_binary() { which $1 > /dev/null 2>&1 @@ -31,6 +27,14 @@ check_binary ${SED} check_binary ${ZNC_CONFIG} "Please (re)install ZNC." + +if test "x$CXX" = "x" ; then + CXX=`${ZNC_CONFIG} --cxx` +fi +if test "x$CXX" = "x" ; then + CXX=g++ +fi + check_binary ${CXX} "What happened to your compiler?" if test -z "$1"; then Modified: trunk/znc-config.in =================================================================== --- trunk/znc-config.in 2008-10-18 12:51:25 UTC (rev 1254) +++ trunk/znc-config.in 2008-10-19 16:31:26 UTC (rev 1255) @@ -6,6 +6,7 @@ bindir="@bindir@" datadir="@datadir@" +CXX="@CXX@" CXXFLAGS="@CPPFLAGS@ @MODFLAGS@ -I@prefix@/include/znc" # LIBS="@LIBS@" # No libs needed, ZNC links against $LIBS and thus modules don't need to. @@ -15,7 +16,8 @@ VERSION="@VERSION@" if test -z "$1"; then - echo "USAGE: $0 <--cflags|--include|--libs|--moddir|--datadir|--version|--prefix>" + echo "USAGE: $0 <flag>" + echo " --cxx [$CXX]" echo " --cflags [$CXXFLAGS]" echo " --libs [$LIBS]" echo " --moddir [$MODDIR]" @@ -26,6 +28,8 @@ fi case $1 in + --cxx) + echo $CXX;; --cflags) echo $CXXFLAGS;; --include) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |